@orbis-systems/orbis-api-clients 0.4.4 → 0.5.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/dist/aesmidas/index.d.ts +110 -90
- package/dist/aesmidas/index.d.ts.map +1 -1
- package/dist/aesmidas/index.esm.js +2726 -1
- package/dist/aesmidas/index.esm.js.map +1 -1
- package/dist/aesmidas/index.js +2731 -1
- package/dist/aesmidas/index.js.map +1 -1
- package/dist/index.d.ts +9 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +253 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +276 -1
- package/dist/index.js.map +1 -1
- package/dist/insight/index.d.ts +32 -7
- package/dist/insight/index.d.ts.map +1 -1
- package/dist/insight/index.esm.js +3421 -1
- package/dist/insight/index.esm.js.map +1 -1
- package/dist/insight/index.js +3426 -1
- package/dist/insight/index.js.map +1 -1
- package/dist/middleware/index.d.ts +9 -7
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.esm.js +1062 -1
- package/dist/middleware/index.esm.js.map +1 -1
- package/dist/middleware/index.js +1067 -1
- package/dist/middleware/index.js.map +1 -1
- package/dist/orbis/index.d.ts +500 -41
- package/dist/orbis/index.d.ts.map +1 -1
- package/dist/orbis/index.esm.js +6958 -1
- package/dist/orbis/index.esm.js.map +1 -1
- package/dist/orbis/index.js +6963 -1
- package/dist/orbis/index.js.map +1 -1
- package/dist/uma/index.d.ts +133 -14
- package/dist/uma/index.d.ts.map +1 -1
- package/dist/uma/index.esm.js +3861 -1
- package/dist/uma/index.esm.js.map +1 -1
- package/dist/uma/index.js +3866 -1
- package/dist/uma/index.js.map +1 -1
- package/package.json +137 -141
package/dist/index.js
CHANGED
|
@@ -1,2 +1,277 @@
|
|
|
1
|
-
var
|
|
1
|
+
var $7TMtJ$autobind = require("auto-bind");
|
|
2
|
+
var $7TMtJ$axios = require("axios");
|
|
3
|
+
var $7TMtJ$axiosbetterstacktrace = require("axios-better-stacktrace");
|
|
4
|
+
var $7TMtJ$lodash = require("lodash");
|
|
5
|
+
var $7TMtJ$asyncmutex = require("async-mutex");
|
|
6
|
+
var $7TMtJ$consola = require("consola");
|
|
7
|
+
var $7TMtJ$datefns = require("date-fns");
|
|
8
|
+
var $7TMtJ$jwtdecode = require("jwt-decode");
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
function $parcel$exportWildcard(dest, source) {
|
|
12
|
+
Object.keys(source).forEach(function(key) {
|
|
13
|
+
if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
Object.defineProperty(dest, key, {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function get() {
|
|
20
|
+
return source[key];
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
return dest;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function $parcel$interopDefault(a) {
|
|
29
|
+
return a && a.__esModule ? a.default : a;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function $parcel$export(e, n, v, s) {
|
|
33
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
34
|
+
}
|
|
35
|
+
var $780091c10287ceed$exports = {};
|
|
36
|
+
|
|
37
|
+
$parcel$export($780091c10287ceed$exports, "BaseApi", () => $780091c10287ceed$export$3ad201792064a82b);
|
|
38
|
+
|
|
39
|
+
class $780091c10287ceed$export$3ad201792064a82b {
|
|
40
|
+
// request: ApiClient['request'];
|
|
41
|
+
// get: ApiClient['get'];
|
|
42
|
+
// delete: ApiClient['delete'];
|
|
43
|
+
// head: ApiClient['head'];
|
|
44
|
+
// options: ApiClient['options'];
|
|
45
|
+
// post: ApiClient['post'];
|
|
46
|
+
// put: ApiClient['put'];
|
|
47
|
+
// patch: ApiClient['patch'];
|
|
48
|
+
constructor(apiClient){
|
|
49
|
+
this.apiClient = apiClient;
|
|
50
|
+
(0, ($parcel$interopDefault($7TMtJ$autobind)))(this);
|
|
51
|
+
// this.request = this.client.request;
|
|
52
|
+
// this.get = this.client.get;
|
|
53
|
+
// this.delete = this.client.delete;
|
|
54
|
+
// this.head = this.client.head;
|
|
55
|
+
// this.options = this.client.options;
|
|
56
|
+
// this.post = this.client.post;
|
|
57
|
+
// this.put = this.client.put;
|
|
58
|
+
// this.patch = this.client.patch;
|
|
59
|
+
// this.get = this.client.get;
|
|
60
|
+
}
|
|
61
|
+
getApiClient() {
|
|
62
|
+
return this.apiClient;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
var $3621850f1f570615$exports = {};
|
|
68
|
+
|
|
69
|
+
$parcel$export($3621850f1f570615$exports, "ContentType", () => $3621850f1f570615$export$e2e108cbe2e4f865);
|
|
70
|
+
$parcel$export($3621850f1f570615$exports, "BaseClient", () => $3621850f1f570615$export$4f22f74eddb7716a);
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
var $3621850f1f570615$export$e2e108cbe2e4f865 = /*#__PURE__*/ function(ContentType) {
|
|
76
|
+
ContentType["Json"] = "application/json";
|
|
77
|
+
ContentType["FormData"] = "multipart/form-data";
|
|
78
|
+
ContentType["UrlEncoded"] = "application/x-www-form-urlencoded";
|
|
79
|
+
ContentType["Text"] = "text/plain";
|
|
80
|
+
return ContentType;
|
|
81
|
+
}({});
|
|
82
|
+
class $3621850f1f570615$export$4f22f74eddb7716a {
|
|
83
|
+
constructor(config){
|
|
84
|
+
this.config = config;
|
|
85
|
+
(0, ($parcel$interopDefault($7TMtJ$autobind)))(this);
|
|
86
|
+
this.storage = config.storage ?? sessionStorage;
|
|
87
|
+
this.axiosInstance = (0, ($parcel$interopDefault($7TMtJ$axios))).create({
|
|
88
|
+
baseURL: config.baseUrl,
|
|
89
|
+
headers: {
|
|
90
|
+
'Content-Type': 'application/json',
|
|
91
|
+
...config.defaultHeaders
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
(0, ($parcel$interopDefault($7TMtJ$axiosbetterstacktrace)))(this.axiosInstance);
|
|
95
|
+
}
|
|
96
|
+
stringifyFormItem(formItem) {
|
|
97
|
+
if (typeof formItem === 'object' && formItem !== null) return JSON.stringify(formItem);
|
|
98
|
+
else return `${formItem}`;
|
|
99
|
+
}
|
|
100
|
+
createFormData(input) {
|
|
101
|
+
if (input instanceof FormData) return input;
|
|
102
|
+
return Object.keys(input).reduce((formData, key)=>{
|
|
103
|
+
const property = input[key];
|
|
104
|
+
const propertyContent = property instanceof Array ? property : [
|
|
105
|
+
property
|
|
106
|
+
];
|
|
107
|
+
for (const formItem of propertyContent){
|
|
108
|
+
const isFileType = formItem instanceof Blob || formItem instanceof File;
|
|
109
|
+
formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));
|
|
110
|
+
}
|
|
111
|
+
return formData;
|
|
112
|
+
}, new FormData());
|
|
113
|
+
}
|
|
114
|
+
async request(requestConfig) {
|
|
115
|
+
const { contentType: contentType, data: data } = requestConfig;
|
|
116
|
+
if (!(0, $7TMtJ$lodash.isNil)(data)) {
|
|
117
|
+
if (contentType === "multipart/form-data" && typeof data === 'object') requestConfig.data = this.createFormData(data);
|
|
118
|
+
if (contentType === "text/plain" && typeof data !== 'string') requestConfig.data = JSON.stringify(data);
|
|
119
|
+
}
|
|
120
|
+
const mergedConfig = (0, $7TMtJ$lodash.merge)(requestConfig.secure ?? this.config.defaultSecure ?? true ? await this.prepareAuthRequestConfig() : {}, contentType ? {
|
|
121
|
+
headers: {
|
|
122
|
+
'Content-Type': contentType
|
|
123
|
+
}
|
|
124
|
+
} : {}, requestConfig);
|
|
125
|
+
try {
|
|
126
|
+
const { data: data, status: status, statusText: statusText } = await this.axiosInstance.request(mergedConfig);
|
|
127
|
+
return {
|
|
128
|
+
success: true,
|
|
129
|
+
data: data,
|
|
130
|
+
status: status,
|
|
131
|
+
statusText: statusText
|
|
132
|
+
};
|
|
133
|
+
} catch (error) {
|
|
134
|
+
if (!this.config.handleError && !requestConfig.handleError) throw error;
|
|
135
|
+
const result = {
|
|
136
|
+
success: false,
|
|
137
|
+
status: -1,
|
|
138
|
+
statusText: String(error),
|
|
139
|
+
error: error
|
|
140
|
+
};
|
|
141
|
+
if ((0, $7TMtJ$axios.isAxiosError)(error)) {
|
|
142
|
+
this.config.onAxiosError?.(error);
|
|
143
|
+
result.data = error.response?.data;
|
|
144
|
+
result.status = error.response?.status ?? result.status;
|
|
145
|
+
result.statusText = error.response?.statusText ?? result.statusText;
|
|
146
|
+
}
|
|
147
|
+
this.config.onError?.(error);
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
get(url, config) {
|
|
152
|
+
return this.request({
|
|
153
|
+
...config,
|
|
154
|
+
method: 'GET',
|
|
155
|
+
url: url
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
delete(url, config) {
|
|
159
|
+
return this.request({
|
|
160
|
+
...config,
|
|
161
|
+
method: 'DELETE',
|
|
162
|
+
url: url
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
head(url, config) {
|
|
166
|
+
return this.request({
|
|
167
|
+
...config,
|
|
168
|
+
method: 'HEAD',
|
|
169
|
+
url: url
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
options(url, config) {
|
|
173
|
+
return this.request({
|
|
174
|
+
...config,
|
|
175
|
+
method: 'OPTIONS',
|
|
176
|
+
url: url
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
post(url, data, config) {
|
|
180
|
+
return this.request({
|
|
181
|
+
...config,
|
|
182
|
+
method: 'POST',
|
|
183
|
+
url: url,
|
|
184
|
+
data: data
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
put(url, data, config) {
|
|
188
|
+
return this.request({
|
|
189
|
+
...config,
|
|
190
|
+
method: 'PUT',
|
|
191
|
+
url: url,
|
|
192
|
+
data: data
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
patch(url, data, config) {
|
|
196
|
+
return this.request({
|
|
197
|
+
...config,
|
|
198
|
+
method: 'PATCH',
|
|
199
|
+
url: url,
|
|
200
|
+
data: data
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
getAxios() {
|
|
204
|
+
return this.axiosInstance;
|
|
205
|
+
}
|
|
206
|
+
setAuthData(data) {
|
|
207
|
+
this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));
|
|
208
|
+
}
|
|
209
|
+
getAuthData() {
|
|
210
|
+
const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');
|
|
211
|
+
return data ? JSON.parse(data) : null;
|
|
212
|
+
}
|
|
213
|
+
getConfig() {
|
|
214
|
+
return this.config;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
var $538ed1203bac2e79$exports = {};
|
|
220
|
+
|
|
221
|
+
$parcel$export($538ed1203bac2e79$exports, "JwtClient", () => $538ed1203bac2e79$export$f280b732bbc5934b);
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
class $538ed1203bac2e79$export$f280b732bbc5934b extends (0, $3621850f1f570615$export$4f22f74eddb7716a) {
|
|
228
|
+
constructor(config){
|
|
229
|
+
super(config), this.config = config, this.lock = new (0, $7TMtJ$asyncmutex.Mutex)();
|
|
230
|
+
}
|
|
231
|
+
getConfig() {
|
|
232
|
+
return super.getConfig();
|
|
233
|
+
}
|
|
234
|
+
setRenewTokenCallback(renewTokenCallback) {
|
|
235
|
+
this.renewTokenCallback = renewTokenCallback;
|
|
236
|
+
}
|
|
237
|
+
async prepareAuthRequestConfig() {
|
|
238
|
+
let { accessToken: accessToken } = this.getAuthData() || {};
|
|
239
|
+
if (!accessToken) {
|
|
240
|
+
(0, $7TMtJ$consola.consola).warn('No access token found. Please set auth data after authorization.');
|
|
241
|
+
return {};
|
|
242
|
+
}
|
|
243
|
+
if (this.config.autoRenewToken !== false && this.isTokenExpired(accessToken)) try {
|
|
244
|
+
await this.lock.runExclusive(async ()=>{
|
|
245
|
+
(0, $7TMtJ$consola.consola).info("Token expired. Renewing\u2026");
|
|
246
|
+
await this.renewToken();
|
|
247
|
+
this.lock.cancel();
|
|
248
|
+
});
|
|
249
|
+
} catch (error) {
|
|
250
|
+
if (error === (0, $7TMtJ$asyncmutex.E_CANCELED)) accessToken = this.getAuthData()?.accessToken;
|
|
251
|
+
else throw error;
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
headers: {
|
|
255
|
+
Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
isTokenExpired(token) {
|
|
260
|
+
const payload = (0, $7TMtJ$jwtdecode.jwtDecode)(token);
|
|
261
|
+
if (!payload.exp) return true;
|
|
262
|
+
return (0, $7TMtJ$datefns.isBefore)((0, $7TMtJ$datefns.subMinutes)(payload.exp * 1000, 5), Date.now());
|
|
263
|
+
}
|
|
264
|
+
async renewToken() {
|
|
265
|
+
if (!this.renewTokenCallback) throw new Error('No renew token callback provided');
|
|
266
|
+
const authData = await this.renewTokenCallback();
|
|
267
|
+
this.setAuthData(authData);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
$parcel$exportWildcard(module.exports, $780091c10287ceed$exports);
|
|
273
|
+
$parcel$exportWildcard(module.exports, $3621850f1f570615$exports);
|
|
274
|
+
$parcel$exportWildcard(module.exports, $538ed1203bac2e79$exports);
|
|
275
|
+
|
|
276
|
+
|
|
2
277
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["<anon>","src/index.ts","src/BaseApi.ts","src/BaseClient.ts","src/JwtClient.ts"],"sourcesContent":["var $5Sh66$autobind = require(\"auto-bind\");\nvar $5Sh66$axios = require(\"axios\");\nvar $5Sh66$axiosbetterstacktrace = require(\"axios-better-stacktrace\");\nvar $5Sh66$lodash = require(\"lodash\");\nvar $5Sh66$consola = require(\"consola\");\nvar $5Sh66$jwtdecode = require(\"jwt-decode\");\n\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $d6fbd40018854b1b$exports = {};\n\n$parcel$export($d6fbd40018854b1b$exports, \"BaseApi\", () => $d6fbd40018854b1b$export$3ad201792064a82b);\n\nclass $d6fbd40018854b1b$export$3ad201792064a82b {\n // request: ApiClient['request'];\n // get: ApiClient['get'];\n // delete: ApiClient['delete'];\n // head: ApiClient['head'];\n // options: ApiClient['options'];\n // post: ApiClient['post'];\n // put: ApiClient['put'];\n // patch: ApiClient['patch'];\n constructor(apiClient){\n this.apiClient = apiClient;\n (0, ($parcel$interopDefault($5Sh66$autobind)))(this);\n // this.request = this.client.request;\n // this.get = this.client.get;\n // this.delete = this.client.delete;\n // this.head = this.client.head;\n // this.options = this.client.options;\n // this.post = this.client.post;\n // this.put = this.client.put;\n // this.patch = this.client.patch;\n // this.get = this.client.get;\n }\n getApiClient() {\n return this.apiClient;\n }\n}\n\n\nvar $e147b9ba9f5381c6$exports = {};\n\n$parcel$export($e147b9ba9f5381c6$exports, \"ContentType\", () => $e147b9ba9f5381c6$export$e2e108cbe2e4f865);\n$parcel$export($e147b9ba9f5381c6$exports, \"BaseClient\", () => $e147b9ba9f5381c6$export$4f22f74eddb7716a);\n\n\n\n\nvar $e147b9ba9f5381c6$export$e2e108cbe2e4f865 = /*#__PURE__*/ function(ContentType) {\n ContentType[\"Json\"] = \"application/json\";\n ContentType[\"FormData\"] = \"multipart/form-data\";\n ContentType[\"UrlEncoded\"] = \"application/x-www-form-urlencoded\";\n ContentType[\"Text\"] = \"text/plain\";\n return ContentType;\n}({});\nclass $e147b9ba9f5381c6$export$4f22f74eddb7716a {\n constructor(config){\n this.config = config;\n (0, ($parcel$interopDefault($5Sh66$autobind)))(this);\n this.storage = config.storage ?? sessionStorage;\n this.axiosInstance = (0, ($parcel$interopDefault($5Sh66$axios))).create({\n baseURL: config.baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...config.defaultHeaders\n }\n });\n (0, ($parcel$interopDefault($5Sh66$axiosbetterstacktrace)))(this.axiosInstance);\n }\n stringifyFormItem(formItem) {\n if (typeof formItem === 'object' && formItem !== null) return JSON.stringify(formItem);\n else return `${formItem}`;\n }\n createFormData(input) {\n if (input instanceof FormData) return input;\n return Object.keys(input).reduce((formData, key)=>{\n const property = input[key];\n const propertyContent = property instanceof Array ? property : [\n property\n ];\n for (const formItem of propertyContent){\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n return formData;\n }, new FormData());\n }\n async request(requestConfig) {\n const { contentType: contentType, data: data } = requestConfig;\n if (!(0, $5Sh66$lodash.isNil)(data)) {\n if (contentType === \"multipart/form-data\" && typeof data === 'object') requestConfig.data = this.createFormData(data);\n if (contentType === \"text/plain\" && typeof data !== 'string') requestConfig.data = JSON.stringify(data);\n }\n const mergedConfig = (0, $5Sh66$lodash.merge)(requestConfig.secure ?? this.config.defaultSecure ? this.prepareAuthRequestConfig() : {}, contentType ? {\n headers: {\n 'Content-Type': contentType\n }\n } : {}, requestConfig);\n try {\n const { data: data, status: status, statusText: statusText } = await this.axiosInstance.request(mergedConfig);\n return {\n success: true,\n data: data,\n status: status,\n statusText: statusText\n };\n } catch (error) {\n if (!this.config.errorHandling) throw error;\n const result = {\n success: false,\n status: -1,\n statusText: String(error),\n error: error\n };\n if ((0, $5Sh66$axios.isAxiosError)(error)) {\n this.config.onAxiosError?.(error);\n result.data = error.response?.data;\n result.status = error.response?.status ?? result.status;\n result.statusText = error.response?.statusText ?? result.statusText;\n }\n this.config.onError?.(error);\n return result;\n }\n }\n get(url, config) {\n return this.request({\n ...config,\n method: 'GET',\n url: url\n });\n }\n delete(url, config) {\n return this.request({\n ...config,\n method: 'DELETE',\n url: url\n });\n }\n head(url, config) {\n return this.request({\n ...config,\n method: 'HEAD',\n url: url\n });\n }\n options(url, config) {\n return this.request({\n ...config,\n method: 'OPTIONS',\n url: url\n });\n }\n post(url, data, config) {\n return this.request({\n ...config,\n method: 'POST',\n url: url,\n data: data\n });\n }\n put(url, data, config) {\n return this.request({\n ...config,\n method: 'PUT',\n url: url,\n data: data\n });\n }\n patch(url, data, config) {\n return this.request({\n ...config,\n method: 'PATCH',\n url: url,\n data: data\n });\n }\n getAxios() {\n return this.axiosInstance;\n }\n setAuthData(data) {\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\n }\n getAuthData() {\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\n return data ? JSON.parse(data) : null;\n }\n getConfig() {\n return this.config;\n }\n}\n\n\nvar $f04719e3bb600f8d$exports = {};\n\n$parcel$export($f04719e3bb600f8d$exports, \"JwtClient\", () => $f04719e3bb600f8d$export$f280b732bbc5934b);\n\n\n\nclass $f04719e3bb600f8d$export$f280b732bbc5934b extends (0, $e147b9ba9f5381c6$export$4f22f74eddb7716a) {\n constructor(config){\n super(config), this.config = config;\n }\n getConfig() {\n return super.getConfig();\n }\n prepareAuthRequestConfig() {\n const { accessToken: accessToken } = this.getAuthData() || {};\n if (!accessToken) {\n (0, $5Sh66$consola.consola).warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`\n }\n };\n }\n scheduleTokenRenewal(renewTokenCallback) {\n this.cancelTokenRenewal();\n const authData = this.getAuthData();\n let payload;\n try {\n payload = (0, $5Sh66$jwtdecode.jwtDecode)(authData?.accessToken || '');\n } catch (error) {\n (0, $5Sh66$consola.consola).error(error);\n }\n if (!payload || !payload.exp) {\n (0, $5Sh66$consola.consola).warn('Could not schedule token renewal: invalid expiration time');\n return;\n }\n const expiresIn = payload.exp * 1000 - Date.now();\n const renewToken = async ()=>{\n const authData = await renewTokenCallback();\n this.setAuthData(authData);\n this.scheduleTokenRenewal(renewTokenCallback);\n };\n this.tokenRenewalTimeout = setTimeout(async ()=>{\n try {\n await renewToken();\n } catch (error) {\n (0, $5Sh66$consola.consola).error('Failed to renew token. Retry in 10s', error);\n setTimeout(renewToken, 10000);\n }\n }, expiresIn - 60000);\n }\n cancelTokenRenewal() {\n clearTimeout(this.tokenRenewalTimeout);\n }\n}\n\n\n$parcel$exportWildcard(module.exports, $d6fbd40018854b1b$exports);\n$parcel$exportWildcard(module.exports, $e147b9ba9f5381c6$exports);\n$parcel$exportWildcard(module.exports, $f04719e3bb600f8d$exports);\n\n\n//# sourceMappingURL=index.js.map\n","export * from './BaseApi';\r\nexport * from './BaseClient';\r\nexport * from './JwtClient';\r\n","import autoBind from 'auto-bind';\r\nimport { BaseClient } from './BaseClient';\r\n\r\nexport class BaseApi<\r\n HandleError extends boolean = boolean,\r\n ApiClient extends BaseClient<HandleError> = BaseClient<HandleError>,\r\n> {\r\n // request: ApiClient['request'];\r\n // get: ApiClient['get'];\r\n // delete: ApiClient['delete'];\r\n // head: ApiClient['head'];\r\n // options: ApiClient['options'];\r\n // post: ApiClient['post'];\r\n // put: ApiClient['put'];\r\n // patch: ApiClient['patch'];\r\n\r\n constructor(protected readonly apiClient: ApiClient) {\r\n autoBind(this);\r\n // this.request = this.client.request;\r\n // this.get = this.client.get;\r\n // this.delete = this.client.delete;\r\n // this.head = this.client.head;\r\n // this.options = this.client.options;\r\n // this.post = this.client.post;\r\n // this.put = this.client.put;\r\n // this.patch = this.client.patch;\r\n // this.get = this.client.get;\r\n }\r\n\r\n getApiClient(): ApiClient {\r\n return this.apiClient;\r\n }\r\n}\r\n","import autoBind from 'auto-bind';\r\nimport axios, {\r\n AxiosError,\r\n AxiosInstance,\r\n AxiosRequestConfig,\r\n AxiosResponse,\r\n HttpStatusCode,\r\n isAxiosError,\r\n} from 'axios';\r\nimport axiosBetterStacktrace from 'axios-better-stacktrace';\r\nimport { isNil, merge } from 'lodash';\r\n\r\nexport interface BaseClientConfig<HandleError extends boolean = boolean> {\r\n baseUrl: string;\r\n errorHandling?: HandleError;\r\n storage?: Storage;\r\n defaultHeaders?: Record<string, string>;\r\n defaultSecure?: boolean;\r\n authDataStorageKey?: string;\r\n onAxiosError?: (error: AxiosError) => void;\r\n onError?: (error: unknown) => void;\r\n}\r\n\r\nexport enum ContentType {\r\n Json = 'application/json',\r\n FormData = 'multipart/form-data',\r\n UrlEncoded = 'application/x-www-form-urlencoded',\r\n Text = 'text/plain',\r\n}\r\n\r\nexport type RequestConfig<Body = unknown> = AxiosRequestConfig<Body> & {\r\n secure?: boolean;\r\n contentType?: ContentType;\r\n};\r\n\r\nexport type ResponseStatus = {\r\n status: HttpStatusCode | -1;\r\n statusText: string;\r\n};\r\n\r\nexport type SuccessClientResponse<Data = unknown> = ResponseStatus & {\r\n success: true;\r\n data: Data;\r\n};\r\n\r\nexport type ErrorClientResponse = ResponseStatus & {\r\n success: false;\r\n data?: any;\r\n error: unknown;\r\n};\r\n\r\nexport type ClientResponse<Data = unknown, HandleError extends boolean = boolean> = HandleError extends true\r\n ? SuccessClientResponse<Data> | ErrorClientResponse\r\n : SuccessClientResponse<Data>;\r\n\r\nexport abstract class BaseClient<HandleError extends boolean = boolean, AuthData = unknown> {\r\n protected readonly axiosInstance: AxiosInstance;\r\n protected readonly storage: Storage;\r\n\r\n constructor(protected readonly config: BaseClientConfig<HandleError>) {\r\n autoBind(this);\r\n this.storage = config.storage ?? sessionStorage;\r\n this.axiosInstance = axios.create({\r\n baseURL: config.baseUrl,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...config.defaultHeaders,\r\n },\r\n });\r\n axiosBetterStacktrace(this.axiosInstance);\r\n }\r\n\r\n protected stringifyFormItem(formItem: unknown) {\r\n if (typeof formItem === 'object' && formItem !== null) {\r\n return JSON.stringify(formItem);\r\n } else {\r\n return `${formItem}`;\r\n }\r\n }\r\n\r\n protected createFormData(input: Record<string, unknown>): FormData {\r\n if (input instanceof FormData) {\r\n return input;\r\n }\r\n\r\n return Object.keys(input).reduce((formData, key) => {\r\n const property = input[key];\r\n const propertyContent: any[] = property instanceof Array ? property : [property];\r\n\r\n for (const formItem of propertyContent) {\r\n const isFileType = formItem instanceof Blob || formItem instanceof File;\r\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\r\n }\r\n\r\n return formData;\r\n }, new FormData());\r\n }\r\n\r\n async request<Data = unknown, Error = unknown, Body = unknown>(\r\n requestConfig: RequestConfig<Body>,\r\n ): Promise<ClientResponse<Data, HandleError>> {\r\n const { contentType, data } = requestConfig;\r\n\r\n if (!isNil(data)) {\r\n if (contentType === ContentType.FormData && typeof data === 'object') {\r\n requestConfig.data = this.createFormData(data as Record<string, unknown>) as any;\r\n }\r\n\r\n if (contentType === ContentType.Text && typeof data !== 'string') {\r\n requestConfig.data = JSON.stringify(data) as any;\r\n }\r\n }\r\n\r\n const mergedConfig = merge(\r\n (requestConfig.secure ?? this.config.defaultSecure) ? this.prepareAuthRequestConfig() : {},\r\n contentType ? { headers: { 'Content-Type': contentType } } : {},\r\n requestConfig,\r\n );\r\n\r\n try {\r\n const { data, status, statusText } = await this.axiosInstance.request<Data, AxiosResponse<Data>, Body>(\r\n mergedConfig,\r\n );\r\n\r\n return {\r\n success: true,\r\n data,\r\n status,\r\n statusText,\r\n };\r\n } catch (error) {\r\n if (!this.config.errorHandling) {\r\n throw error;\r\n }\r\n\r\n const result: ErrorClientResponse = {\r\n success: false,\r\n status: -1,\r\n statusText: String(error),\r\n error,\r\n };\r\n\r\n if (isAxiosError<Error, Data>(error)) {\r\n this.config.onAxiosError?.(error);\r\n result.data = error.response?.data;\r\n result.status = error.response?.status ?? result.status;\r\n result.statusText = error.response?.statusText ?? result.statusText;\r\n }\r\n\r\n this.config.onError?.(error);\r\n\r\n return result as ClientResponse<Data, HandleError>;\r\n }\r\n }\r\n\r\n get<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'GET',\r\n url,\r\n });\r\n }\r\n\r\n delete<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'DELETE',\r\n url,\r\n });\r\n }\r\n\r\n head<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'HEAD',\r\n url,\r\n });\r\n }\r\n\r\n options<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'OPTIONS',\r\n url,\r\n });\r\n }\r\n\r\n post<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'POST',\r\n url,\r\n data,\r\n });\r\n }\r\n\r\n put<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'PUT',\r\n url,\r\n data,\r\n });\r\n }\r\n\r\n patch<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'PATCH',\r\n url,\r\n data,\r\n });\r\n }\r\n\r\n getAxios(): AxiosInstance {\r\n return this.axiosInstance;\r\n }\r\n\r\n setAuthData(data: AuthData | null) {\r\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\r\n }\r\n\r\n getAuthData(): AuthData | null {\r\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\r\n return data ? (JSON.parse(data) as AuthData) : null;\r\n }\r\n\r\n getConfig(): BaseClientConfig<HandleError> {\r\n return this.config;\r\n }\r\n\r\n abstract prepareAuthRequestConfig(): Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>;\r\n}\r\n","import { consola } from 'consola';\nimport { jwtDecode } from 'jwt-decode';\nimport { BaseClient, BaseClientConfig, RequestConfig } from './BaseClient';\n\nexport interface JwtClientConfig<HandleError extends boolean = boolean> extends BaseClientConfig<HandleError> {\n authSchema?: string;\n}\n\nexport interface JwtAuthData {\n accessToken: string;\n refreshToken: string;\n}\n\nexport class JwtClient<HandleError extends boolean = boolean> extends BaseClient<HandleError, JwtAuthData> {\n private tokenRenewalTimeout: number | undefined;\n\n constructor(protected override readonly config: JwtClientConfig<HandleError>) {\n super(config);\n }\n\n override getConfig(): JwtClientConfig<HandleError> {\n return super.getConfig() as JwtClientConfig<HandleError>;\n }\n\n override prepareAuthRequestConfig(): Pick<RequestConfig<any>, 'headers' | 'data' | 'params'> {\n const { accessToken } = this.getAuthData() || {};\n\n if (!accessToken) {\n consola.warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`,\n },\n };\n }\n\n scheduleTokenRenewal(renewTokenCallback: () => Promise<JwtAuthData>) {\n this.cancelTokenRenewal();\n const authData = this.getAuthData();\n let payload;\n\n try {\n payload = jwtDecode(authData?.accessToken || '');\n } catch (error) {\n consola.error(error);\n }\n\n if (!payload || !payload.exp) {\n consola.warn('Could not schedule token renewal: invalid expiration time');\n return;\n }\n\n const expiresIn = payload.exp * 1000 - Date.now();\n\n const renewToken = async () => {\n const authData = await renewTokenCallback();\n this.setAuthData(authData);\n this.scheduleTokenRenewal(renewTokenCallback);\n };\n\n this.tokenRenewalTimeout = setTimeout(\n async () => {\n try {\n await renewToken();\n } catch (error) {\n consola.error('Failed to renew token. Retry in 10s', error);\n setTimeout(renewToken, 10000);\n }\n },\n expiresIn - 60 * 1000,\n ) as unknown as number;\n }\n\n cancelTokenRenewal() {\n clearTimeout(this.tokenRenewalTimeout);\n }\n}\n"],"names":["ContentType","$5Sh66$autobind","require","$5Sh66$axios","$5Sh66$axiosbetterstacktrace","$5Sh66$lodash","$5Sh66$consola","$5Sh66$jwtdecode","$parcel$exportWildcard","dest","source","Object","keys","forEach","key","prototype","hasOwnProperty","call","defineProperty","enumerable","get","$parcel$interopDefault","a","__esModule","default","$parcel$export","e","n","v","s","set","configurable","$d6fbd40018854b1b$exports","$d6fbd40018854b1b$export$3ad201792064a82b","constructor","apiClient","getApiClient","$e147b9ba9f5381c6$exports","$e147b9ba9f5381c6$export$e2e108cbe2e4f865","$e147b9ba9f5381c6$export$4f22f74eddb7716a","config","storage","sessionStorage","axiosInstance","create","baseURL","baseUrl","headers","defaultHeaders","stringifyFormItem","formItem","JSON","stringify","createFormData","input","FormData","reduce","formData","property","Array","isFileType","Blob","File","append","request","requestConfig","contentType","data","isNil","mergedConfig","merge","secure","defaultSecure","prepareAuthRequestConfig","status","statusText","success","error","errorHandling","result","String","isAxiosError","onAxiosError","response","onError","url","method","delete","head","options","post","put","patch","getAxios","setAuthData","setItem","authDataStorageKey","getAuthData","getItem","parse","getConfig","$f04719e3bb600f8d$exports","$f04719e3bb600f8d$export$f280b732bbc5934b","accessToken","Authorization","authSchema","consola","warn","scheduleTokenRenewal","renewTokenCallback","payload","cancelTokenRenewal","authData","jwtDecode","exp","expiresIn","Date","now","renewToken","tokenRenewalTimeout","setTimeout","clearTimeout","module","exports"],"version":3,"file":"index.js.map","sourceRoot":"../"}
|
|
1
|
+
{"mappings":"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","sources":["src/index.ts","src/BaseApi.ts","src/BaseClient.ts","src/JwtClient.ts"],"sourcesContent":["export * from './BaseApi';\r\nexport * from './BaseClient';\r\nexport * from './JwtClient';\r\n","import autoBind from 'auto-bind';\r\nimport { BaseClient } from './BaseClient';\r\n\r\nexport class BaseApi<\r\n HandleError extends boolean = boolean,\r\n ApiClient extends BaseClient<HandleError> = BaseClient<HandleError>,\r\n> {\r\n // request: ApiClient['request'];\r\n // get: ApiClient['get'];\r\n // delete: ApiClient['delete'];\r\n // head: ApiClient['head'];\r\n // options: ApiClient['options'];\r\n // post: ApiClient['post'];\r\n // put: ApiClient['put'];\r\n // patch: ApiClient['patch'];\r\n\r\n constructor(protected readonly apiClient: ApiClient) {\r\n autoBind(this);\r\n // this.request = this.client.request;\r\n // this.get = this.client.get;\r\n // this.delete = this.client.delete;\r\n // this.head = this.client.head;\r\n // this.options = this.client.options;\r\n // this.post = this.client.post;\r\n // this.put = this.client.put;\r\n // this.patch = this.client.patch;\r\n // this.get = this.client.get;\r\n }\r\n\r\n getApiClient(): ApiClient {\r\n return this.apiClient;\r\n }\r\n}\r\n","import autoBind from 'auto-bind';\nimport axios, {\n AxiosError,\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n HttpStatusCode,\n isAxiosError,\n} from 'axios';\nimport axiosBetterStacktrace from 'axios-better-stacktrace';\nimport { isNil, merge } from 'lodash';\n\nexport interface BaseClientConfig<HandleError extends boolean = boolean> {\n baseUrl: string;\n handleError?: HandleError;\n storage?: Storage;\n defaultHeaders?: Record<string, string>;\n defaultSecure?: boolean;\n authDataStorageKey?: string;\n onAxiosError?: (error: AxiosError) => void;\n onError?: (error: unknown) => void;\n}\n\nexport enum ContentType {\n Json = 'application/json',\n FormData = 'multipart/form-data',\n UrlEncoded = 'application/x-www-form-urlencoded',\n Text = 'text/plain',\n}\n\nexport type RequestConfig<Body = unknown> = AxiosRequestConfig<Body> & {\n secure?: boolean;\n contentType?: ContentType;\n handleError?: boolean;\n};\n\nexport type ResponseStatus = {\n status: HttpStatusCode | -1;\n statusText: string;\n};\n\nexport type SuccessClientResponse<Data = unknown> = ResponseStatus & {\n success: true;\n data: Data;\n};\n\nexport type ErrorClientResponse = ResponseStatus & {\n success: false;\n data?: any;\n error: unknown;\n};\n\nexport type ClientResponse<Data = unknown, HandleError extends boolean = boolean> = HandleError extends true\n ? SuccessClientResponse<Data> | ErrorClientResponse\n : SuccessClientResponse<Data>;\n\nexport abstract class BaseClient<HandleError extends boolean = boolean, AuthData = unknown> {\n protected readonly axiosInstance: AxiosInstance;\n protected readonly storage: Storage;\n\n constructor(protected readonly config: BaseClientConfig<HandleError>) {\n autoBind(this);\n this.storage = config.storage ?? sessionStorage;\n this.axiosInstance = axios.create({\n baseURL: config.baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...config.defaultHeaders,\n },\n });\n axiosBetterStacktrace(this.axiosInstance);\n }\n\n protected stringifyFormItem(formItem: unknown) {\n if (typeof formItem === 'object' && formItem !== null) {\n return JSON.stringify(formItem);\n } else {\n return `${formItem}`;\n }\n }\n\n protected createFormData(input: Record<string, unknown>): FormData {\n if (input instanceof FormData) {\n return input;\n }\n\n return Object.keys(input).reduce((formData, key) => {\n const property = input[key];\n const propertyContent: any[] = property instanceof Array ? property : [property];\n\n for (const formItem of propertyContent) {\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n\n return formData;\n }, new FormData());\n }\n\n async request<Data = unknown, Error = unknown, Body = unknown>(\n requestConfig: RequestConfig<Body>,\n ): Promise<ClientResponse<Data, HandleError>> {\n const { contentType, data } = requestConfig;\n\n if (!isNil(data)) {\n if (contentType === ContentType.FormData && typeof data === 'object') {\n requestConfig.data = this.createFormData(data as Record<string, unknown>) as any;\n }\n\n if (contentType === ContentType.Text && typeof data !== 'string') {\n requestConfig.data = JSON.stringify(data) as any;\n }\n }\n\n const mergedConfig = merge(\n (requestConfig.secure ?? this.config.defaultSecure ?? true) ? await this.prepareAuthRequestConfig() : {},\n contentType ? { headers: { 'Content-Type': contentType } } : {},\n requestConfig,\n );\n\n try {\n const { data, status, statusText } = await this.axiosInstance.request<Data, AxiosResponse<Data>, Body>(\n mergedConfig,\n );\n\n return {\n success: true,\n data,\n status,\n statusText,\n };\n } catch (error) {\n if (!this.config.handleError && !requestConfig.handleError) {\n throw error;\n }\n\n const result: ErrorClientResponse = {\n success: false,\n status: -1,\n statusText: String(error),\n error,\n };\n\n if (isAxiosError<Error, Data>(error)) {\n this.config.onAxiosError?.(error);\n result.data = error.response?.data;\n result.status = error.response?.status ?? result.status;\n result.statusText = error.response?.statusText ?? result.statusText;\n }\n\n this.config.onError?.(error);\n\n return result as ClientResponse<Data, HandleError>;\n }\n }\n\n get<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'GET',\n url,\n });\n }\n\n delete<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'DELETE',\n url,\n });\n }\n\n head<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'HEAD',\n url,\n });\n }\n\n options<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'OPTIONS',\n url,\n });\n }\n\n post<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'POST',\n url,\n data,\n });\n }\n\n put<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'PUT',\n url,\n data,\n });\n }\n\n patch<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'PATCH',\n url,\n data,\n });\n }\n\n getAxios(): AxiosInstance {\n return this.axiosInstance;\n }\n\n setAuthData(data: AuthData | null) {\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\n }\n\n getAuthData(): AuthData | null {\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\n return data ? (JSON.parse(data) as AuthData) : null;\n }\n\n getConfig(): BaseClientConfig<HandleError> {\n return this.config;\n }\n\n protected abstract prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;\n}\n","import { E_CANCELED, Mutex } from 'async-mutex';\nimport { consola } from 'consola';\nimport { isBefore, subMinutes } from 'date-fns';\nimport { jwtDecode } from 'jwt-decode';\nimport { BaseClient, BaseClientConfig, RequestConfig } from './BaseClient';\n\nexport interface JwtClientConfig<HandleError extends boolean = boolean> extends BaseClientConfig<HandleError> {\n authSchema?: string;\n autoRenewToken?: boolean;\n}\n\nexport interface JwtAuthData {\n accessToken: string;\n refreshToken?: string;\n}\n\nexport class JwtClient<\n HandleError extends boolean = boolean,\n AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClient<HandleError, AuthData> {\n private readonly lock = new Mutex();\n private renewTokenCallback?: () => Promise<AuthData>;\n\n constructor(protected override readonly config: JwtClientConfig<HandleError>) {\n super(config);\n }\n\n override getConfig(): JwtClientConfig<HandleError> {\n return super.getConfig() as JwtClientConfig<HandleError>;\n }\n\n setRenewTokenCallback(renewTokenCallback: () => Promise<AuthData>) {\n this.renewTokenCallback = renewTokenCallback;\n }\n\n protected override async prepareAuthRequestConfig(): Promise<\n Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>\n > {\n let { accessToken } = this.getAuthData() || {};\n\n if (!accessToken) {\n consola.warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n\n if (this.config.autoRenewToken !== false && this.isTokenExpired(accessToken)) {\n try {\n await this.lock.runExclusive(async () => {\n consola.info('Token expired. Renewing…');\n await this.renewToken();\n this.lock.cancel();\n });\n } catch (error) {\n if (error === E_CANCELED) {\n accessToken = this.getAuthData()?.accessToken;\n } else {\n throw error;\n }\n }\n }\n\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`,\n },\n };\n }\n\n private isTokenExpired(token: string): boolean {\n const payload = jwtDecode(token);\n\n if (!payload.exp) {\n return true;\n }\n\n return isBefore(subMinutes(payload.exp * 1000, 5), Date.now());\n }\n\n async renewToken() {\n if (!this.renewTokenCallback) {\n throw new Error('No renew token callback provided');\n }\n\n const authData = await this.renewTokenCallback();\n this.setAuthData(authData);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"}
|
package/dist/insight/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AxiosError, AxiosInstance, AxiosRequestConfig, HttpStatusCode } from "axios";
|
|
2
2
|
interface BaseClientConfig<HandleError extends boolean = boolean> {
|
|
3
3
|
baseUrl: string;
|
|
4
|
-
|
|
4
|
+
handleError?: HandleError;
|
|
5
5
|
storage?: Storage;
|
|
6
6
|
defaultHeaders?: Record<string, string>;
|
|
7
7
|
defaultSecure?: boolean;
|
|
@@ -18,6 +18,7 @@ enum ContentType {
|
|
|
18
18
|
type RequestConfig<Body = unknown> = AxiosRequestConfig<Body> & {
|
|
19
19
|
secure?: boolean;
|
|
20
20
|
contentType?: ContentType;
|
|
21
|
+
handleError?: boolean;
|
|
21
22
|
};
|
|
22
23
|
type ResponseStatus = {
|
|
23
24
|
status: HttpStatusCode | -1;
|
|
@@ -52,7 +53,7 @@ declare abstract class BaseClient<HandleError extends boolean = boolean, AuthDat
|
|
|
52
53
|
setAuthData(data: AuthData | null): void;
|
|
53
54
|
getAuthData(): AuthData | null;
|
|
54
55
|
getConfig(): BaseClientConfig<HandleError>;
|
|
55
|
-
abstract prepareAuthRequestConfig(): Pick<RequestConfig<any>, 'headers' | 'data' | 'params'
|
|
56
|
+
protected abstract prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;
|
|
56
57
|
}
|
|
57
58
|
declare class BaseApi<HandleError extends boolean = boolean, ApiClient extends BaseClient<HandleError> = BaseClient<HandleError>> {
|
|
58
59
|
protected readonly apiClient: ApiClient;
|
|
@@ -61,18 +62,19 @@ declare class BaseApi<HandleError extends boolean = boolean, ApiClient extends B
|
|
|
61
62
|
}
|
|
62
63
|
interface JwtClientConfig<HandleError extends boolean = boolean> extends BaseClientConfig<HandleError> {
|
|
63
64
|
authSchema?: string;
|
|
65
|
+
autoRenewToken?: boolean;
|
|
64
66
|
}
|
|
65
67
|
interface JwtAuthData {
|
|
66
68
|
accessToken: string;
|
|
67
|
-
refreshToken
|
|
69
|
+
refreshToken?: string;
|
|
68
70
|
}
|
|
69
|
-
declare class JwtClient<HandleError extends boolean = boolean> extends BaseClient<HandleError,
|
|
71
|
+
declare class JwtClient<HandleError extends boolean = boolean, AuthData extends JwtAuthData = JwtAuthData> extends BaseClient<HandleError, AuthData> {
|
|
70
72
|
protected readonly config: JwtClientConfig<HandleError>;
|
|
71
73
|
constructor(config: JwtClientConfig<HandleError>);
|
|
72
74
|
getConfig(): JwtClientConfig<HandleError>;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
setRenewTokenCallback(renewTokenCallback: () => Promise<AuthData>): void;
|
|
76
|
+
protected prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;
|
|
77
|
+
renewToken(): Promise<void>;
|
|
76
78
|
}
|
|
77
79
|
export interface InsightQuote {
|
|
78
80
|
ask_px: number;
|
|
@@ -1003,6 +1005,10 @@ export interface InsightGetScreenerPresetsResponse {
|
|
|
1003
1005
|
default_presets: InsightScreenerPreset[];
|
|
1004
1006
|
details: InsightScreenerPreset[];
|
|
1005
1007
|
}
|
|
1008
|
+
export interface InsightGetSliderArticlesResponse {
|
|
1009
|
+
slider_articles: number[];
|
|
1010
|
+
updated_at: string;
|
|
1011
|
+
}
|
|
1006
1012
|
export interface InsightGetSymbolFundamentalsRequest {
|
|
1007
1013
|
mode?: string;
|
|
1008
1014
|
symbol?: string;
|
|
@@ -2275,6 +2281,9 @@ export interface InsightUpdateCustomIndexRequest {
|
|
|
2275
2281
|
name?: string;
|
|
2276
2282
|
private_name?: string;
|
|
2277
2283
|
}
|
|
2284
|
+
export interface InsightUpsertSliderArticlesRequest {
|
|
2285
|
+
slider_articles?: number[];
|
|
2286
|
+
}
|
|
2278
2287
|
export interface InsightUsageDataEntry {
|
|
2279
2288
|
branch_code: string;
|
|
2280
2289
|
details: Record<string, number>;
|
|
@@ -3367,6 +3376,22 @@ export class Passport<HandleError extends boolean = boolean> {
|
|
|
3367
3376
|
* @secure
|
|
3368
3377
|
*/
|
|
3369
3378
|
passportSearchArticle(filter: InsightSearchArticleRequest, config?: RequestConfig<HandleError>): Promise<ClientResponse<InsightArticle[], HandleError>>;
|
|
3379
|
+
/**
|
|
3380
|
+
* @description Retrieve slider articles
|
|
3381
|
+
* @tags Passport
|
|
3382
|
+
* @name GetPassportSliderArticles
|
|
3383
|
+
* @summary Get Slider Articles
|
|
3384
|
+
* @request GET:/passport/slider-articles
|
|
3385
|
+
*/
|
|
3386
|
+
getPassportSliderArticles(config?: RequestConfig<HandleError>): Promise<ClientResponse<InsightGetSliderArticlesResponse, HandleError>>;
|
|
3387
|
+
/**
|
|
3388
|
+
* @description Upsert slider articles
|
|
3389
|
+
* @tags Passport
|
|
3390
|
+
* @name UpsertPassportSliderArticles
|
|
3391
|
+
* @summary Upsert slider articles
|
|
3392
|
+
* @request POST:/passport/slider-articles
|
|
3393
|
+
*/
|
|
3394
|
+
upsertPassportSliderArticles(request: InsightUpsertSliderArticlesRequest, config?: RequestConfig<HandleError>): Promise<ClientResponse<InsightGetSliderArticlesResponse, HandleError>>;
|
|
3370
3395
|
}
|
|
3371
3396
|
export class Public<HandleError extends boolean = boolean> {
|
|
3372
3397
|
protected readonly apiClient: JwtClient<HandleError>;
|