@emilgroup/account-sdk 1.49.1-beta.17 → 1.49.1-beta.18
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 +2 -2
- package/api/accounts-api.ts +12 -24
- package/base.ts +41 -174
- package/common.ts +2 -3
- package/configuration.ts +0 -20
- package/dist/api/accounts-api.d.ts +6 -6
- package/dist/api/accounts-api.js +21 -33
- package/dist/api/health-api.d.ts +1 -1
- package/dist/base.d.ts +0 -24
- package/dist/base.js +59 -178
- package/dist/common.d.ts +1 -1
- package/dist/common.js +0 -1
- package/dist/configuration.d.ts +0 -17
- package/dist/configuration.js +0 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -17,11 +17,11 @@ Although this package can be used in both TypeScript and JavaScript, it is inten
|
|
|
17
17
|
Navigate to the folder of your consuming project and run one of the following commands:
|
|
18
18
|
|
|
19
19
|
```
|
|
20
|
-
npm install @emilgroup/account-sdk@1.49.1-beta.
|
|
20
|
+
npm install @emilgroup/account-sdk@1.49.1-beta.18 --save
|
|
21
21
|
```
|
|
22
22
|
or
|
|
23
23
|
```
|
|
24
|
-
yarn add @emilgroup/account-sdk@1.49.1-beta.
|
|
24
|
+
yarn add @emilgroup/account-sdk@1.49.1-beta.18
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
And then you can import `AccountsApi`.
|
package/api/accounts-api.ts
CHANGED
|
@@ -67,10 +67,8 @@ export const AccountsApiAxiosParamCreator = function (configuration?: Configurat
|
|
|
67
67
|
// http bearer authentication required
|
|
68
68
|
await setBearerAuthToObject(localVarHeaderParameter, configuration)
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (authorizationValue) {
|
|
73
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
70
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
71
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
74
72
|
}
|
|
75
73
|
|
|
76
74
|
|
|
@@ -117,10 +115,8 @@ export const AccountsApiAxiosParamCreator = function (configuration?: Configurat
|
|
|
117
115
|
// http bearer authentication required
|
|
118
116
|
await setBearerAuthToObject(localVarHeaderParameter, configuration)
|
|
119
117
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
if (authorizationValue) {
|
|
123
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
118
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
119
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
124
120
|
}
|
|
125
121
|
|
|
126
122
|
|
|
@@ -169,10 +165,8 @@ export const AccountsApiAxiosParamCreator = function (configuration?: Configurat
|
|
|
169
165
|
localVarQueryParameter['expand'] = expand;
|
|
170
166
|
}
|
|
171
167
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
if (authorizationValue) {
|
|
175
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
168
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
169
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
176
170
|
}
|
|
177
171
|
|
|
178
172
|
|
|
@@ -221,10 +215,8 @@ export const AccountsApiAxiosParamCreator = function (configuration?: Configurat
|
|
|
221
215
|
localVarQueryParameter['expand'] = expand;
|
|
222
216
|
}
|
|
223
217
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
if (authorizationValue) {
|
|
227
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
218
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
219
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
228
220
|
}
|
|
229
221
|
|
|
230
222
|
|
|
@@ -299,10 +291,8 @@ export const AccountsApiAxiosParamCreator = function (configuration?: Configurat
|
|
|
299
291
|
localVarQueryParameter['filters'] = filters;
|
|
300
292
|
}
|
|
301
293
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
if (authorizationValue) {
|
|
305
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
294
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
295
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
306
296
|
}
|
|
307
297
|
|
|
308
298
|
|
|
@@ -349,10 +339,8 @@ export const AccountsApiAxiosParamCreator = function (configuration?: Configurat
|
|
|
349
339
|
// http bearer authentication required
|
|
350
340
|
await setBearerAuthToObject(localVarHeaderParameter, configuration)
|
|
351
341
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
if (authorizationValue) {
|
|
355
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
342
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
343
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
356
344
|
}
|
|
357
345
|
|
|
358
346
|
|
package/base.ts
CHANGED
|
@@ -32,20 +32,9 @@ export const COLLECTION_FORMATS = {
|
|
|
32
32
|
pipes: "|",
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
export interface SessionClass {
|
|
36
|
-
sub: string;
|
|
37
|
-
username?: string;
|
|
38
|
-
email?: string;
|
|
39
|
-
tenantSlug?: string;
|
|
40
|
-
permissions?: string;
|
|
41
|
-
expiresAt?: number;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
35
|
export interface LoginClass {
|
|
45
36
|
accessToken: string;
|
|
46
37
|
permissions: string;
|
|
47
|
-
authMode?: string;
|
|
48
|
-
session?: SessionClass;
|
|
49
38
|
}
|
|
50
39
|
|
|
51
40
|
export interface SwitchWorkspaceRequest {
|
|
@@ -56,8 +45,6 @@ export interface SwitchWorkspaceRequest {
|
|
|
56
45
|
export interface SwitchWorkspaceResponseClass {
|
|
57
46
|
accessToken: string;
|
|
58
47
|
permissions: string;
|
|
59
|
-
authMode?: string;
|
|
60
|
-
session?: SessionClass;
|
|
61
48
|
}
|
|
62
49
|
|
|
63
50
|
export enum Environment {
|
|
@@ -90,19 +77,10 @@ interface TokenData {
|
|
|
90
77
|
accessToken?: string;
|
|
91
78
|
username?: string;
|
|
92
79
|
permissions?: string;
|
|
93
|
-
// 'both' or 'session' when authservice keeps the tokens in a server session.
|
|
94
|
-
authMode?: string;
|
|
95
|
-
sub?: string;
|
|
96
80
|
}
|
|
97
81
|
|
|
98
82
|
const NETWORK_ERROR_MESSAGE = "Network Error";
|
|
99
83
|
const TOKEN_DATA = 'APP_TOKEN';
|
|
100
|
-
// Sent only to authservice, to ask for a server session.
|
|
101
|
-
const AUTH_MODE_HEADER = 'X-Emil-Auth-Mode';
|
|
102
|
-
// Names the account on every call; one browser session can hold several.
|
|
103
|
-
const ACCOUNT_HEADER = 'X-Emil-Account';
|
|
104
|
-
const SESSION_MODES = ['both', 'session'];
|
|
105
|
-
const RESEND_SAFE_METHODS = ['get', 'head', 'options'];
|
|
106
84
|
|
|
107
85
|
/**
|
|
108
86
|
*
|
|
@@ -124,18 +102,10 @@ export class BaseAPI {
|
|
|
124
102
|
this.configuration = configuration;
|
|
125
103
|
this.basePath = configuration.basePath || this.basePath;
|
|
126
104
|
|
|
127
|
-
if
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
if (this.usesSession()) {
|
|
132
|
-
this.useSessionAuth();
|
|
133
|
-
} else {
|
|
134
|
-
// Use config token if provided, otherwise use tokenData token
|
|
135
|
-
const configToken = this.configuration.accessToken;
|
|
136
|
-
const storedToken = accessToken ? `Bearer ${accessToken}` : '';
|
|
137
|
-
this.configuration.accessToken = configToken || storedToken;
|
|
138
|
-
}
|
|
105
|
+
// Use config token if provided, otherwise use tokenData token
|
|
106
|
+
const configToken = this.configuration.accessToken;
|
|
107
|
+
const storedToken = accessToken ? `Bearer ${accessToken}` : '';
|
|
108
|
+
this.configuration.accessToken = configToken || storedToken;
|
|
139
109
|
} else {
|
|
140
110
|
const { accessToken, username } = this.tokenData;
|
|
141
111
|
|
|
@@ -149,107 +119,6 @@ export class BaseAPI {
|
|
|
149
119
|
this.attachInterceptor(axios);
|
|
150
120
|
}
|
|
151
121
|
|
|
152
|
-
// The app's own account wins over APP_TOKEN, which holds whichever tab wrote last.
|
|
153
|
-
private sessionAccount(): string | undefined {
|
|
154
|
-
return this.configuration.account || this.tokenData.sub;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Apps may pass the address as the second argument only; authservice is on the same host.
|
|
158
|
-
private authBasePath(): string {
|
|
159
|
-
return this.configuration.basePath || this.basePath;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
private usesSession(): boolean {
|
|
163
|
-
return !!this.configuration.cookieAuth && SESSION_MODES.indexOf(this.tokenData.authMode) !== -1 && !!this.sessionAccount();
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
private useSessionAuth() {
|
|
167
|
-
const { headers, ...baseOptions } = this.configuration.baseOptions || {};
|
|
168
|
-
this.configuration.accessToken = '';
|
|
169
|
-
this.configuration.baseOptions = {
|
|
170
|
-
...baseOptions,
|
|
171
|
-
withCredentials: true,
|
|
172
|
-
headers: { ...headers, [ACCOUNT_HEADER]: this.sessionAccount() },
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
private useHeaderAuth(accessToken: string) {
|
|
177
|
-
this.configuration.accessToken = accessToken ? `Bearer ${accessToken}` : '';
|
|
178
|
-
this.tokenData.accessToken = accessToken;
|
|
179
|
-
delete this.tokenData.authMode;
|
|
180
|
-
delete this.tokenData.sub;
|
|
181
|
-
if (this.configuration.cookieAuth) {
|
|
182
|
-
const { withCredentials, headers, ...baseOptions } = this.configuration.baseOptions || {};
|
|
183
|
-
const { [ACCOUNT_HEADER]: account, ...otherHeaders } = headers || {};
|
|
184
|
-
this.configuration.baseOptions = { ...baseOptions, headers: otherHeaders };
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
private applyTokenReply({ accessToken, authMode, session }: LoginClass) {
|
|
189
|
-
if (this.configuration.cookieAuth && SESSION_MODES.indexOf(authMode) !== -1 && session?.sub) {
|
|
190
|
-
this.tokenData.authMode = authMode;
|
|
191
|
-
this.tokenData.sub = session.sub;
|
|
192
|
-
if (this.configuration.account) {
|
|
193
|
-
// A workspace switch moves the app to another account.
|
|
194
|
-
this.configuration.account = session.sub;
|
|
195
|
-
}
|
|
196
|
-
// Both keeps the token for apps not moved yet; session mode keeps no token at all.
|
|
197
|
-
if (authMode === 'both' && accessToken) {
|
|
198
|
-
this.tokenData.accessToken = accessToken;
|
|
199
|
-
} else {
|
|
200
|
-
delete this.tokenData.accessToken;
|
|
201
|
-
}
|
|
202
|
-
this.useSessionAuth();
|
|
203
|
-
} else {
|
|
204
|
-
this.useHeaderAuth(accessToken);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
private sessionHeaders(): Record<string, string> {
|
|
209
|
-
if (!this.configuration.cookieAuth) {
|
|
210
|
-
return {};
|
|
211
|
-
}
|
|
212
|
-
return {
|
|
213
|
-
[AUTH_MODE_HEADER]: 'session',
|
|
214
|
-
...(this.usesSession() && { [ACCOUNT_HEADER]: this.sessionAccount() }),
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
private withCurrentAuth(config: AxiosRequestConfig): AxiosRequestConfig {
|
|
219
|
-
delete config.headers['Authorization'];
|
|
220
|
-
delete config.headers[ACCOUNT_HEADER];
|
|
221
|
-
if (this.usesSession()) {
|
|
222
|
-
config.headers[ACCOUNT_HEADER] = this.sessionAccount();
|
|
223
|
-
config.withCredentials = true;
|
|
224
|
-
} else if (this.configuration.accessToken) {
|
|
225
|
-
config.headers['Authorization'] = this.configuration.accessToken;
|
|
226
|
-
}
|
|
227
|
-
return config;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
// Both keeps the token, so a session call the browser could not complete can be sent again with it.
|
|
231
|
-
private canRetryWithToken(config: AxiosRequestConfig): boolean {
|
|
232
|
-
return !!config.withCredentials && !!config.headers?.[ACCOUNT_HEADER]
|
|
233
|
-
&& !!this.tokenData.accessToken && this.tokenData.authMode !== 'session';
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// A network error can come after the server ran the call, so only a call that is safe to repeat is sent again.
|
|
237
|
-
private canResend(config: AxiosRequestConfig): boolean {
|
|
238
|
-
return RESEND_SAFE_METHODS.indexOf((config.method || 'get').toLowerCase()) !== -1
|
|
239
|
-
|| Object.keys(config.headers || {}).some((name) => name.toLowerCase() === 'idempotency-key');
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
private switchToToken() {
|
|
243
|
-
this.useHeaderAuth(this.tokenData.accessToken);
|
|
244
|
-
this.storeTokenData(this.tokenData);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
private retryWithToken(axios: AxiosInstance, config: AxiosRequestConfig) {
|
|
248
|
-
this.switchToToken();
|
|
249
|
-
config.withCredentials = false;
|
|
250
|
-
return axios(this.withCurrentAuth(config));
|
|
251
|
-
}
|
|
252
|
-
|
|
253
122
|
selectEnvironment(env: Environment) {
|
|
254
123
|
this.selectBasePath(env);
|
|
255
124
|
}
|
|
@@ -269,8 +138,8 @@ export class BaseAPI {
|
|
|
269
138
|
async authorize(username: string, password: string, targetWorkspace?: string): Promise<void> {
|
|
270
139
|
const options: AxiosRequestConfig = {
|
|
271
140
|
method: 'POST',
|
|
272
|
-
url: `${this.
|
|
273
|
-
headers: { 'Content-Type': 'application/json'
|
|
141
|
+
url: `${this.configuration.basePath}/authservice/v1/login`,
|
|
142
|
+
headers: { 'Content-Type': 'application/json' },
|
|
274
143
|
data: {
|
|
275
144
|
username,
|
|
276
145
|
password,
|
|
@@ -280,10 +149,13 @@ export class BaseAPI {
|
|
|
280
149
|
|
|
281
150
|
const response = await globalAxios.request<LoginClass>(options);
|
|
282
151
|
|
|
152
|
+
const { data: { accessToken, permissions } } = response;
|
|
153
|
+
|
|
283
154
|
this.configuration.username = username;
|
|
155
|
+
this.configuration.accessToken = `Bearer ${accessToken}`;
|
|
284
156
|
this.tokenData.username = username;
|
|
285
|
-
this.tokenData.
|
|
286
|
-
this.
|
|
157
|
+
this.tokenData.accessToken = accessToken;
|
|
158
|
+
this.tokenData.permissions = permissions;
|
|
287
159
|
|
|
288
160
|
// Switch workspace if provided
|
|
289
161
|
if (targetWorkspace) {
|
|
@@ -303,11 +175,10 @@ export class BaseAPI {
|
|
|
303
175
|
async switchWorkspace(targetWorkspace: string): Promise<void> {
|
|
304
176
|
const options: AxiosRequestConfig = {
|
|
305
177
|
method: 'POST',
|
|
306
|
-
url: `${this.
|
|
178
|
+
url: `${this.configuration.basePath}/authservice/v1/workspaces/switch`,
|
|
307
179
|
headers: {
|
|
308
180
|
'Content-Type': 'application/json',
|
|
309
|
-
|
|
310
|
-
...(!this.usesSession() && !!this.configuration.accessToken && { 'Authorization': this.configuration.accessToken as string }),
|
|
181
|
+
'Authorization': `Bearer ${this.configuration.accessToken}`,
|
|
311
182
|
},
|
|
312
183
|
data: {
|
|
313
184
|
username: this.configuration.username,
|
|
@@ -318,8 +189,11 @@ export class BaseAPI {
|
|
|
318
189
|
|
|
319
190
|
const response = await globalAxios.request<SwitchWorkspaceResponseClass>(options);
|
|
320
191
|
|
|
321
|
-
|
|
322
|
-
|
|
192
|
+
const { data: { accessToken, permissions } } = response;
|
|
193
|
+
|
|
194
|
+
this.configuration.accessToken = `Bearer ${accessToken}`;
|
|
195
|
+
this.tokenData.accessToken = accessToken;
|
|
196
|
+
this.tokenData.permissions = permissions;
|
|
323
197
|
|
|
324
198
|
this.storeTokenData({
|
|
325
199
|
...this.tokenData
|
|
@@ -345,10 +219,9 @@ export class BaseAPI {
|
|
|
345
219
|
|
|
346
220
|
const options: AxiosRequestConfig = {
|
|
347
221
|
method: 'POST',
|
|
348
|
-
url: `${this.
|
|
222
|
+
url: `${this.configuration.basePath}/authservice/v1/refresh-token`,
|
|
349
223
|
headers: {
|
|
350
224
|
'Content-Type': 'application/json',
|
|
351
|
-
...this.sessionHeaders(),
|
|
352
225
|
},
|
|
353
226
|
data: { username: username },
|
|
354
227
|
withCredentials: true,
|
|
@@ -389,22 +262,20 @@ export class BaseAPI {
|
|
|
389
262
|
&& !originalConfig._retry) {
|
|
390
263
|
originalConfig._retry = true;
|
|
391
264
|
try {
|
|
392
|
-
const
|
|
393
|
-
|
|
394
|
-
this.
|
|
395
|
-
this.storeTokenData(this.tokenData);
|
|
265
|
+
const { accessToken: tokenString, permissions } = await this.refreshTokenInternal();
|
|
266
|
+
const accessToken = `Bearer ${tokenString}`;
|
|
267
|
+
this.tokenData.permissions = permissions;
|
|
396
268
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
269
|
+
delete originalConfig.headers['Authorization']
|
|
270
|
+
|
|
271
|
+
originalConfig.headers['Authorization'] = accessToken;
|
|
400
272
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
});
|
|
273
|
+
this.configuration.accessToken = accessToken;
|
|
274
|
+
this.tokenData.accessToken = tokenString;
|
|
275
|
+
|
|
276
|
+
this.storeTokenData(this.tokenData);
|
|
277
|
+
|
|
278
|
+
return axios(originalConfig);
|
|
408
279
|
} catch (_error) {
|
|
409
280
|
if (_error.response && _error.response.data) {
|
|
410
281
|
return Promise.reject(_error.response.data);
|
|
@@ -412,30 +283,26 @@ export class BaseAPI {
|
|
|
412
283
|
return Promise.reject(_error);
|
|
413
284
|
}
|
|
414
285
|
}
|
|
415
|
-
} else if (err.message === NETWORK_ERROR_MESSAGE && this.canRetryWithToken(originalConfig)) {
|
|
416
|
-
// Both mode: the browser blocked the session call or hid its reply; later calls use the token.
|
|
417
|
-
if (!this.canResend(originalConfig)) {
|
|
418
|
-
this.switchToToken();
|
|
419
|
-
return Promise.reject(err);
|
|
420
|
-
}
|
|
421
|
-
return this.retryWithToken(axios, originalConfig);
|
|
422
286
|
} else if (err.message === NETWORK_ERROR_MESSAGE
|
|
423
|
-
&&
|
|
424
|
-
|| (this.configuration.cookieAuth && originalConfig.withCredentials && this.canResend(originalConfig)))
|
|
287
|
+
&& originalConfig.headers.hasOwnProperty('Authorization')
|
|
425
288
|
&& _retry_count < 4
|
|
426
289
|
) {
|
|
427
290
|
_retry_count++;
|
|
428
291
|
try {
|
|
429
|
-
|
|
430
|
-
const
|
|
431
|
-
this.tokenData.permissions =
|
|
292
|
+
const { accessToken: tokenString, permissions } = await this.refreshTokenInternal();
|
|
293
|
+
const accessToken = `Bearer ${tokenString}`;
|
|
294
|
+
this.tokenData.permissions = permissions;
|
|
432
295
|
|
|
433
296
|
_retry = true;
|
|
434
|
-
|
|
297
|
+
originalConfig.headers['Authorization'] = accessToken;
|
|
298
|
+
|
|
299
|
+
this.configuration.accessToken = accessToken;
|
|
300
|
+
this.tokenData.accessToken = tokenString;
|
|
301
|
+
|
|
435
302
|
this.storeTokenData(this.tokenData);
|
|
436
303
|
|
|
437
304
|
return axios.request({
|
|
438
|
-
...
|
|
305
|
+
...originalConfig,
|
|
439
306
|
});
|
|
440
307
|
} catch (_error) {
|
|
441
308
|
if (_error.response && _error.response.data) {
|
package/common.ts
CHANGED
|
@@ -130,10 +130,9 @@ export const toPathString = function (url: URL) {
|
|
|
130
130
|
* @export
|
|
131
131
|
*/
|
|
132
132
|
export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) {
|
|
133
|
-
|
|
134
|
-
return <T = unknown, R = AxiosResponse<T>>(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH): Promise<R> => {
|
|
133
|
+
return <T = unknown, R = AxiosResponse<T>>(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
|
135
134
|
const axiosRequestArgs = {...axiosArgs.options, url: (configuration?.basePath || basePath) + axiosArgs.url};
|
|
136
|
-
return axios.request<T, R>(axiosRequestArgs)
|
|
135
|
+
return axios.request<T, R>(axiosRequestArgs);
|
|
137
136
|
};
|
|
138
137
|
}
|
|
139
138
|
|
package/configuration.ts
CHANGED
|
@@ -21,8 +21,6 @@ export interface ConfigurationParameters {
|
|
|
21
21
|
basePath?: string;
|
|
22
22
|
baseOptions?: any;
|
|
23
23
|
formDataCtor?: new () => any;
|
|
24
|
-
cookieAuth?: boolean;
|
|
25
|
-
account?: string;
|
|
26
24
|
}
|
|
27
25
|
|
|
28
26
|
export class Configuration {
|
|
@@ -76,22 +74,6 @@ export class Configuration {
|
|
|
76
74
|
*/
|
|
77
75
|
formDataCtor?: new () => any;
|
|
78
76
|
|
|
79
|
-
/**
|
|
80
|
-
* Use a server session when authservice makes one; otherwise the token, as without this option.
|
|
81
|
-
* Set `account` too, so each SDK object keeps its own account.
|
|
82
|
-
*
|
|
83
|
-
* @type {boolean}
|
|
84
|
-
* @memberof Configuration
|
|
85
|
-
*/
|
|
86
|
-
cookieAuth?: boolean;
|
|
87
|
-
/**
|
|
88
|
-
* The session account (Cognito sub) this app shows, so the SDK never takes another tab's account.
|
|
89
|
-
*
|
|
90
|
-
* @type {string}
|
|
91
|
-
* @memberof Configuration
|
|
92
|
-
*/
|
|
93
|
-
account?: string;
|
|
94
|
-
|
|
95
77
|
constructor(param: ConfigurationParameters = {}) {
|
|
96
78
|
this.apiKey = param.apiKey;
|
|
97
79
|
this.username = param.username;
|
|
@@ -100,8 +82,6 @@ export class Configuration {
|
|
|
100
82
|
this.basePath = param.basePath;
|
|
101
83
|
this.baseOptions = param.baseOptions;
|
|
102
84
|
this.formDataCtor = param.formDataCtor;
|
|
103
|
-
this.cookieAuth = param.cookieAuth;
|
|
104
|
-
this.account = param.account;
|
|
105
85
|
}
|
|
106
86
|
|
|
107
87
|
/**
|
|
@@ -408,7 +408,7 @@ export declare class AccountsApi extends BaseAPI {
|
|
|
408
408
|
* @throws {RequiredError}
|
|
409
409
|
* @memberof AccountsApi
|
|
410
410
|
*/
|
|
411
|
-
createAccount(requestParameters: AccountsApiCreateAccountRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<CreateAccountResponseClass, any, {}
|
|
411
|
+
createAccount(requestParameters: AccountsApiCreateAccountRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<CreateAccountResponseClass, any, {}>>;
|
|
412
412
|
/**
|
|
413
413
|
* Permanently deletes the account. Supply the unique code that was returned when you created the account and this will delete it. **Required Permissions** \"partner-management.partners.delete\"
|
|
414
414
|
* @summary Delete the account
|
|
@@ -417,7 +417,7 @@ export declare class AccountsApi extends BaseAPI {
|
|
|
417
417
|
* @throws {RequiredError}
|
|
418
418
|
* @memberof AccountsApi
|
|
419
419
|
*/
|
|
420
|
-
deleteAccount(requestParameters: AccountsApiDeleteAccountRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}
|
|
420
|
+
deleteAccount(requestParameters: AccountsApiDeleteAccountRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
|
|
421
421
|
/**
|
|
422
422
|
* Retrieves the details of the account that was previously created. Supply the unique account code that was returned when you created it and Emil Api will return the corresponding account information. **Required Permissions** \"partner-management.partners.view\"
|
|
423
423
|
* @summary Retrieve the account
|
|
@@ -426,7 +426,7 @@ export declare class AccountsApi extends BaseAPI {
|
|
|
426
426
|
* @throws {RequiredError}
|
|
427
427
|
* @memberof AccountsApi
|
|
428
428
|
*/
|
|
429
|
-
getAccount(requestParameters: AccountsApiGetAccountRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<GetAccountResponseClass, any, {}
|
|
429
|
+
getAccount(requestParameters: AccountsApiGetAccountRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<GetAccountResponseClass, any, {}>>;
|
|
430
430
|
/**
|
|
431
431
|
* Retrieves the details of the account that was previously created. Supply the email that was returned when you created it and Emil Api will return the corresponding account information. Email matching is case-insensitive. **Required Permissions** \"partner-management.partners.view\"
|
|
432
432
|
* @summary Retrieve the account
|
|
@@ -435,7 +435,7 @@ export declare class AccountsApi extends BaseAPI {
|
|
|
435
435
|
* @throws {RequiredError}
|
|
436
436
|
* @memberof AccountsApi
|
|
437
437
|
*/
|
|
438
|
-
getAccountByEmail(requestParameters: AccountsApiGetAccountByEmailRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<GetAccountResponseClass, any, {}
|
|
438
|
+
getAccountByEmail(requestParameters: AccountsApiGetAccountByEmailRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<GetAccountResponseClass, any, {}>>;
|
|
439
439
|
/**
|
|
440
440
|
* Returns a list of accounts you have previously created. The accounts are returned in sorted order, with the oldest one appearing first. For more information about pagination, read the Pagination documentation. **Required Permissions** \"partner-management.partners.view\"
|
|
441
441
|
* @summary List accounts
|
|
@@ -444,7 +444,7 @@ export declare class AccountsApi extends BaseAPI {
|
|
|
444
444
|
* @throws {RequiredError}
|
|
445
445
|
* @memberof AccountsApi
|
|
446
446
|
*/
|
|
447
|
-
listAccounts(requestParameters?: AccountsApiListAccountsRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<ListAccountsResponseClass, any, {}
|
|
447
|
+
listAccounts(requestParameters?: AccountsApiListAccountsRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<ListAccountsResponseClass, any, {}>>;
|
|
448
448
|
/**
|
|
449
449
|
* Updates the specified account by setting the values of the parameters passed. Any parameters not provided will be left unchanged. **Required Permissions** \"partner-management.partners.update\"
|
|
450
450
|
* @summary Update the account
|
|
@@ -453,5 +453,5 @@ export declare class AccountsApi extends BaseAPI {
|
|
|
453
453
|
* @throws {RequiredError}
|
|
454
454
|
* @memberof AccountsApi
|
|
455
455
|
*/
|
|
456
|
-
updateAccount(requestParameters: AccountsApiUpdateAccountRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<UpdateAccountResponseClass, any, {}
|
|
456
|
+
updateAccount(requestParameters: AccountsApiUpdateAccountRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<UpdateAccountResponseClass, any, {}>>;
|
|
457
457
|
}
|
package/dist/api/accounts-api.js
CHANGED
|
@@ -103,7 +103,7 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
103
103
|
createAccount: function (createAccountRequestDto, authorization, options) {
|
|
104
104
|
if (options === void 0) { options = {}; }
|
|
105
105
|
return __awaiter(_this, void 0, void 0, function () {
|
|
106
|
-
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter,
|
|
106
|
+
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter, headersFromBaseOptions;
|
|
107
107
|
return __generator(this, function (_a) {
|
|
108
108
|
switch (_a.label) {
|
|
109
109
|
case 0:
|
|
@@ -120,16 +120,13 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
120
120
|
localVarQueryParameter = {};
|
|
121
121
|
// authentication bearer required
|
|
122
122
|
// http bearer authentication required
|
|
123
|
-
return [4 /*yield*/, (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration)
|
|
124
|
-
// Only Authorization falls back to the configured token; an empty value is never sent.
|
|
125
|
-
];
|
|
123
|
+
return [4 /*yield*/, (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration)];
|
|
126
124
|
case 1:
|
|
127
125
|
// authentication bearer required
|
|
128
126
|
// http bearer authentication required
|
|
129
127
|
_a.sent();
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
128
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
129
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
133
130
|
}
|
|
134
131
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
135
132
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
@@ -155,7 +152,7 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
155
152
|
deleteAccount: function (code, authorization, options) {
|
|
156
153
|
if (options === void 0) { options = {}; }
|
|
157
154
|
return __awaiter(_this, void 0, void 0, function () {
|
|
158
|
-
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter,
|
|
155
|
+
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter, headersFromBaseOptions;
|
|
159
156
|
return __generator(this, function (_a) {
|
|
160
157
|
switch (_a.label) {
|
|
161
158
|
case 0:
|
|
@@ -173,16 +170,13 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
173
170
|
localVarQueryParameter = {};
|
|
174
171
|
// authentication bearer required
|
|
175
172
|
// http bearer authentication required
|
|
176
|
-
return [4 /*yield*/, (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration)
|
|
177
|
-
// Only Authorization falls back to the configured token; an empty value is never sent.
|
|
178
|
-
];
|
|
173
|
+
return [4 /*yield*/, (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration)];
|
|
179
174
|
case 1:
|
|
180
175
|
// authentication bearer required
|
|
181
176
|
// http bearer authentication required
|
|
182
177
|
_a.sent();
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
178
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
179
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
186
180
|
}
|
|
187
181
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
188
182
|
headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
@@ -207,7 +201,7 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
207
201
|
getAccount: function (code, authorization, expand, options) {
|
|
208
202
|
if (options === void 0) { options = {}; }
|
|
209
203
|
return __awaiter(_this, void 0, void 0, function () {
|
|
210
|
-
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter,
|
|
204
|
+
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter, headersFromBaseOptions;
|
|
211
205
|
return __generator(this, function (_a) {
|
|
212
206
|
switch (_a.label) {
|
|
213
207
|
case 0:
|
|
@@ -233,9 +227,8 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
233
227
|
if (expand !== undefined) {
|
|
234
228
|
localVarQueryParameter['expand'] = expand;
|
|
235
229
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
230
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
231
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
239
232
|
}
|
|
240
233
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
241
234
|
headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
@@ -260,7 +253,7 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
260
253
|
getAccountByEmail: function (email, authorization, expand, options) {
|
|
261
254
|
if (options === void 0) { options = {}; }
|
|
262
255
|
return __awaiter(_this, void 0, void 0, function () {
|
|
263
|
-
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter,
|
|
256
|
+
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter, headersFromBaseOptions;
|
|
264
257
|
return __generator(this, function (_a) {
|
|
265
258
|
switch (_a.label) {
|
|
266
259
|
case 0:
|
|
@@ -286,9 +279,8 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
286
279
|
if (expand !== undefined) {
|
|
287
280
|
localVarQueryParameter['expand'] = expand;
|
|
288
281
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
282
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
283
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
292
284
|
}
|
|
293
285
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
294
286
|
headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
@@ -318,7 +310,7 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
318
310
|
listAccounts: function (authorization, pageSize, pageToken, filter, search, order, expand, filters, options) {
|
|
319
311
|
if (options === void 0) { options = {}; }
|
|
320
312
|
return __awaiter(_this, void 0, void 0, function () {
|
|
321
|
-
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter,
|
|
313
|
+
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter, headersFromBaseOptions;
|
|
322
314
|
return __generator(this, function (_a) {
|
|
323
315
|
switch (_a.label) {
|
|
324
316
|
case 0:
|
|
@@ -359,9 +351,8 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
359
351
|
if (filters !== undefined) {
|
|
360
352
|
localVarQueryParameter['filters'] = filters;
|
|
361
353
|
}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
354
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
355
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
365
356
|
}
|
|
366
357
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
367
358
|
headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
@@ -386,7 +377,7 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
386
377
|
updateAccount: function (code, updateAccountRequestDto, authorization, options) {
|
|
387
378
|
if (options === void 0) { options = {}; }
|
|
388
379
|
return __awaiter(_this, void 0, void 0, function () {
|
|
389
|
-
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter,
|
|
380
|
+
var localVarPath, localVarUrlObj, baseOptions, baseAccessToken, localVarRequestOptions, localVarHeaderParameter, localVarQueryParameter, headersFromBaseOptions;
|
|
390
381
|
return __generator(this, function (_a) {
|
|
391
382
|
switch (_a.label) {
|
|
392
383
|
case 0:
|
|
@@ -406,16 +397,13 @@ var AccountsApiAxiosParamCreator = function (configuration) {
|
|
|
406
397
|
localVarQueryParameter = {};
|
|
407
398
|
// authentication bearer required
|
|
408
399
|
// http bearer authentication required
|
|
409
|
-
return [4 /*yield*/, (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration)
|
|
410
|
-
// Only Authorization falls back to the configured token; an empty value is never sent.
|
|
411
|
-
];
|
|
400
|
+
return [4 /*yield*/, (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration)];
|
|
412
401
|
case 1:
|
|
413
402
|
// authentication bearer required
|
|
414
403
|
// http bearer authentication required
|
|
415
404
|
_a.sent();
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
localVarHeaderParameter['Authorization'] = String(authorizationValue);
|
|
405
|
+
if (authorization !== undefined && authorization !== null || baseAccessToken !== undefined && baseAccessToken !== null) {
|
|
406
|
+
localVarHeaderParameter['Authorization'] = String(authorization ? authorization : baseAccessToken);
|
|
419
407
|
}
|
|
420
408
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
421
409
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
package/dist/api/health-api.d.ts
CHANGED
|
@@ -66,5 +66,5 @@ export declare class HealthApi extends BaseAPI {
|
|
|
66
66
|
* @throws {RequiredError}
|
|
67
67
|
* @memberof HealthApi
|
|
68
68
|
*/
|
|
69
|
-
check(options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<InlineResponse200, any, {}
|
|
69
|
+
check(options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<InlineResponse200, any, {}>>;
|
|
70
70
|
}
|
package/dist/base.d.ts
CHANGED
|
@@ -22,19 +22,9 @@ export declare const COLLECTION_FORMATS: {
|
|
|
22
22
|
tsv: string;
|
|
23
23
|
pipes: string;
|
|
24
24
|
};
|
|
25
|
-
export interface SessionClass {
|
|
26
|
-
sub: string;
|
|
27
|
-
username?: string;
|
|
28
|
-
email?: string;
|
|
29
|
-
tenantSlug?: string;
|
|
30
|
-
permissions?: string;
|
|
31
|
-
expiresAt?: number;
|
|
32
|
-
}
|
|
33
25
|
export interface LoginClass {
|
|
34
26
|
accessToken: string;
|
|
35
27
|
permissions: string;
|
|
36
|
-
authMode?: string;
|
|
37
|
-
session?: SessionClass;
|
|
38
28
|
}
|
|
39
29
|
export interface SwitchWorkspaceRequest {
|
|
40
30
|
username: string;
|
|
@@ -43,8 +33,6 @@ export interface SwitchWorkspaceRequest {
|
|
|
43
33
|
export interface SwitchWorkspaceResponseClass {
|
|
44
34
|
accessToken: string;
|
|
45
35
|
permissions: string;
|
|
46
|
-
authMode?: string;
|
|
47
|
-
session?: SessionClass;
|
|
48
36
|
}
|
|
49
37
|
export declare enum Environment {
|
|
50
38
|
Production = "https://apiv2.emil.de",
|
|
@@ -75,18 +63,6 @@ export declare class BaseAPI {
|
|
|
75
63
|
protected configuration: Configuration | undefined;
|
|
76
64
|
private tokenData?;
|
|
77
65
|
constructor(configuration?: Configuration, basePath?: string, axios?: AxiosInstance);
|
|
78
|
-
private sessionAccount;
|
|
79
|
-
private authBasePath;
|
|
80
|
-
private usesSession;
|
|
81
|
-
private useSessionAuth;
|
|
82
|
-
private useHeaderAuth;
|
|
83
|
-
private applyTokenReply;
|
|
84
|
-
private sessionHeaders;
|
|
85
|
-
private withCurrentAuth;
|
|
86
|
-
private canRetryWithToken;
|
|
87
|
-
private canResend;
|
|
88
|
-
private switchToToken;
|
|
89
|
-
private retryWithToken;
|
|
90
66
|
selectEnvironment(env: Environment): void;
|
|
91
67
|
selectBasePath(path: string): void;
|
|
92
68
|
getPermissions(): Array<string>;
|
package/dist/base.js
CHANGED
|
@@ -74,17 +74,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
74
74
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
75
75
|
}
|
|
76
76
|
};
|
|
77
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
78
|
-
var t = {};
|
|
79
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
80
|
-
t[p] = s[p];
|
|
81
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
82
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
83
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
84
|
-
t[p[i]] = s[p[i]];
|
|
85
|
-
}
|
|
86
|
-
return t;
|
|
87
|
-
};
|
|
88
77
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
89
78
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
90
79
|
};
|
|
@@ -123,12 +112,6 @@ function resetRetry() {
|
|
|
123
112
|
exports.resetRetry = resetRetry;
|
|
124
113
|
var NETWORK_ERROR_MESSAGE = "Network Error";
|
|
125
114
|
var TOKEN_DATA = 'APP_TOKEN';
|
|
126
|
-
// Sent only to authservice, to ask for a server session.
|
|
127
|
-
var AUTH_MODE_HEADER = 'X-Emil-Auth-Mode';
|
|
128
|
-
// Names the account on every call; one browser session can hold several.
|
|
129
|
-
var ACCOUNT_HEADER = 'X-Emil-Account';
|
|
130
|
-
var SESSION_MODES = ['both', 'session'];
|
|
131
|
-
var RESEND_SAFE_METHODS = ['get', 'head', 'options'];
|
|
132
115
|
/**
|
|
133
116
|
*
|
|
134
117
|
* @export
|
|
@@ -145,18 +128,10 @@ var BaseAPI = /** @class */ (function () {
|
|
|
145
128
|
var accessToken = this.tokenData.accessToken;
|
|
146
129
|
this.configuration = configuration;
|
|
147
130
|
this.basePath = configuration.basePath || this.basePath;
|
|
148
|
-
if
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
this.useSessionAuth();
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
// Use config token if provided, otherwise use tokenData token
|
|
156
|
-
var configToken = this.configuration.accessToken;
|
|
157
|
-
var storedToken = accessToken ? "Bearer ".concat(accessToken) : '';
|
|
158
|
-
this.configuration.accessToken = configToken || storedToken;
|
|
159
|
-
}
|
|
131
|
+
// Use config token if provided, otherwise use tokenData token
|
|
132
|
+
var configToken = this.configuration.accessToken;
|
|
133
|
+
var storedToken = accessToken ? "Bearer ".concat(accessToken) : '';
|
|
134
|
+
this.configuration.accessToken = configToken || storedToken;
|
|
160
135
|
}
|
|
161
136
|
else {
|
|
162
137
|
var _a = this.tokenData, accessToken = _a.accessToken, username = _a.username;
|
|
@@ -168,95 +143,6 @@ var BaseAPI = /** @class */ (function () {
|
|
|
168
143
|
}
|
|
169
144
|
this.attachInterceptor(axios);
|
|
170
145
|
}
|
|
171
|
-
// The app's own account wins over APP_TOKEN, which holds whichever tab wrote last.
|
|
172
|
-
BaseAPI.prototype.sessionAccount = function () {
|
|
173
|
-
return this.configuration.account || this.tokenData.sub;
|
|
174
|
-
};
|
|
175
|
-
// Apps may pass the address as the second argument only; authservice is on the same host.
|
|
176
|
-
BaseAPI.prototype.authBasePath = function () {
|
|
177
|
-
return this.configuration.basePath || this.basePath;
|
|
178
|
-
};
|
|
179
|
-
BaseAPI.prototype.usesSession = function () {
|
|
180
|
-
return !!this.configuration.cookieAuth && SESSION_MODES.indexOf(this.tokenData.authMode) !== -1 && !!this.sessionAccount();
|
|
181
|
-
};
|
|
182
|
-
BaseAPI.prototype.useSessionAuth = function () {
|
|
183
|
-
var _a;
|
|
184
|
-
var _b = this.configuration.baseOptions || {}, headers = _b.headers, baseOptions = __rest(_b, ["headers"]);
|
|
185
|
-
this.configuration.accessToken = '';
|
|
186
|
-
this.configuration.baseOptions = __assign(__assign({}, baseOptions), { withCredentials: true, headers: __assign(__assign({}, headers), (_a = {}, _a[ACCOUNT_HEADER] = this.sessionAccount(), _a)) });
|
|
187
|
-
};
|
|
188
|
-
BaseAPI.prototype.useHeaderAuth = function (accessToken) {
|
|
189
|
-
this.configuration.accessToken = accessToken ? "Bearer ".concat(accessToken) : '';
|
|
190
|
-
this.tokenData.accessToken = accessToken;
|
|
191
|
-
delete this.tokenData.authMode;
|
|
192
|
-
delete this.tokenData.sub;
|
|
193
|
-
if (this.configuration.cookieAuth) {
|
|
194
|
-
var _a = this.configuration.baseOptions || {}, withCredentials = _a.withCredentials, headers = _a.headers, baseOptions = __rest(_a, ["withCredentials", "headers"]);
|
|
195
|
-
var _b = headers || {}, _c = ACCOUNT_HEADER, account = _b[_c], otherHeaders = __rest(_b, [typeof _c === "symbol" ? _c : _c + ""]);
|
|
196
|
-
this.configuration.baseOptions = __assign(__assign({}, baseOptions), { headers: otherHeaders });
|
|
197
|
-
}
|
|
198
|
-
};
|
|
199
|
-
BaseAPI.prototype.applyTokenReply = function (_a) {
|
|
200
|
-
var accessToken = _a.accessToken, authMode = _a.authMode, session = _a.session;
|
|
201
|
-
if (this.configuration.cookieAuth && SESSION_MODES.indexOf(authMode) !== -1 && (session === null || session === void 0 ? void 0 : session.sub)) {
|
|
202
|
-
this.tokenData.authMode = authMode;
|
|
203
|
-
this.tokenData.sub = session.sub;
|
|
204
|
-
if (this.configuration.account) {
|
|
205
|
-
// A workspace switch moves the app to another account.
|
|
206
|
-
this.configuration.account = session.sub;
|
|
207
|
-
}
|
|
208
|
-
// Both keeps the token for apps not moved yet; session mode keeps no token at all.
|
|
209
|
-
if (authMode === 'both' && accessToken) {
|
|
210
|
-
this.tokenData.accessToken = accessToken;
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
delete this.tokenData.accessToken;
|
|
214
|
-
}
|
|
215
|
-
this.useSessionAuth();
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
this.useHeaderAuth(accessToken);
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
BaseAPI.prototype.sessionHeaders = function () {
|
|
222
|
-
var _a, _b;
|
|
223
|
-
if (!this.configuration.cookieAuth) {
|
|
224
|
-
return {};
|
|
225
|
-
}
|
|
226
|
-
return __assign((_a = {}, _a[AUTH_MODE_HEADER] = 'session', _a), (this.usesSession() && (_b = {}, _b[ACCOUNT_HEADER] = this.sessionAccount(), _b)));
|
|
227
|
-
};
|
|
228
|
-
BaseAPI.prototype.withCurrentAuth = function (config) {
|
|
229
|
-
delete config.headers['Authorization'];
|
|
230
|
-
delete config.headers[ACCOUNT_HEADER];
|
|
231
|
-
if (this.usesSession()) {
|
|
232
|
-
config.headers[ACCOUNT_HEADER] = this.sessionAccount();
|
|
233
|
-
config.withCredentials = true;
|
|
234
|
-
}
|
|
235
|
-
else if (this.configuration.accessToken) {
|
|
236
|
-
config.headers['Authorization'] = this.configuration.accessToken;
|
|
237
|
-
}
|
|
238
|
-
return config;
|
|
239
|
-
};
|
|
240
|
-
// Both keeps the token, so a session call the browser could not complete can be sent again with it.
|
|
241
|
-
BaseAPI.prototype.canRetryWithToken = function (config) {
|
|
242
|
-
var _a;
|
|
243
|
-
return !!config.withCredentials && !!((_a = config.headers) === null || _a === void 0 ? void 0 : _a[ACCOUNT_HEADER])
|
|
244
|
-
&& !!this.tokenData.accessToken && this.tokenData.authMode !== 'session';
|
|
245
|
-
};
|
|
246
|
-
// A network error can come after the server ran the call, so only a call that is safe to repeat is sent again.
|
|
247
|
-
BaseAPI.prototype.canResend = function (config) {
|
|
248
|
-
return RESEND_SAFE_METHODS.indexOf((config.method || 'get').toLowerCase()) !== -1
|
|
249
|
-
|| Object.keys(config.headers || {}).some(function (name) { return name.toLowerCase() === 'idempotency-key'; });
|
|
250
|
-
};
|
|
251
|
-
BaseAPI.prototype.switchToToken = function () {
|
|
252
|
-
this.useHeaderAuth(this.tokenData.accessToken);
|
|
253
|
-
this.storeTokenData(this.tokenData);
|
|
254
|
-
};
|
|
255
|
-
BaseAPI.prototype.retryWithToken = function (axios, config) {
|
|
256
|
-
this.switchToToken();
|
|
257
|
-
config.withCredentials = false;
|
|
258
|
-
return axios(this.withCurrentAuth(config));
|
|
259
|
-
};
|
|
260
146
|
BaseAPI.prototype.selectEnvironment = function (env) {
|
|
261
147
|
this.selectBasePath(env);
|
|
262
148
|
};
|
|
@@ -272,15 +158,14 @@ var BaseAPI = /** @class */ (function () {
|
|
|
272
158
|
};
|
|
273
159
|
BaseAPI.prototype.authorize = function (username, password, targetWorkspace) {
|
|
274
160
|
return __awaiter(this, void 0, void 0, function () {
|
|
275
|
-
var options, response;
|
|
276
|
-
var _a;
|
|
161
|
+
var options, response, _a, accessToken, permissions;
|
|
277
162
|
return __generator(this, function (_b) {
|
|
278
163
|
switch (_b.label) {
|
|
279
164
|
case 0:
|
|
280
165
|
options = {
|
|
281
166
|
method: 'POST',
|
|
282
|
-
url: "".concat(this.
|
|
283
|
-
headers:
|
|
167
|
+
url: "".concat(this.configuration.basePath, "/authservice/v1/login"),
|
|
168
|
+
headers: { 'Content-Type': 'application/json' },
|
|
284
169
|
data: {
|
|
285
170
|
username: username,
|
|
286
171
|
password: password,
|
|
@@ -290,10 +175,12 @@ var BaseAPI = /** @class */ (function () {
|
|
|
290
175
|
return [4 /*yield*/, axios_1.default.request(options)];
|
|
291
176
|
case 1:
|
|
292
177
|
response = _b.sent();
|
|
178
|
+
_a = response.data, accessToken = _a.accessToken, permissions = _a.permissions;
|
|
293
179
|
this.configuration.username = username;
|
|
180
|
+
this.configuration.accessToken = "Bearer ".concat(accessToken);
|
|
294
181
|
this.tokenData.username = username;
|
|
295
|
-
this.tokenData.
|
|
296
|
-
this.
|
|
182
|
+
this.tokenData.accessToken = accessToken;
|
|
183
|
+
this.tokenData.permissions = permissions;
|
|
297
184
|
if (!targetWorkspace) return [3 /*break*/, 3];
|
|
298
185
|
return [4 /*yield*/, this.switchWorkspace(targetWorkspace)];
|
|
299
186
|
case 2:
|
|
@@ -312,14 +199,17 @@ var BaseAPI = /** @class */ (function () {
|
|
|
312
199
|
};
|
|
313
200
|
BaseAPI.prototype.switchWorkspace = function (targetWorkspace) {
|
|
314
201
|
return __awaiter(this, void 0, void 0, function () {
|
|
315
|
-
var options, response;
|
|
316
|
-
return __generator(this, function (
|
|
317
|
-
switch (
|
|
202
|
+
var options, response, _a, accessToken, permissions;
|
|
203
|
+
return __generator(this, function (_b) {
|
|
204
|
+
switch (_b.label) {
|
|
318
205
|
case 0:
|
|
319
206
|
options = {
|
|
320
207
|
method: 'POST',
|
|
321
|
-
url: "".concat(this.
|
|
322
|
-
headers:
|
|
208
|
+
url: "".concat(this.configuration.basePath, "/authservice/v1/workspaces/switch"),
|
|
209
|
+
headers: {
|
|
210
|
+
'Content-Type': 'application/json',
|
|
211
|
+
'Authorization': "Bearer ".concat(this.configuration.accessToken),
|
|
212
|
+
},
|
|
323
213
|
data: {
|
|
324
214
|
username: this.configuration.username,
|
|
325
215
|
targetWorkspace: targetWorkspace,
|
|
@@ -328,9 +218,11 @@ var BaseAPI = /** @class */ (function () {
|
|
|
328
218
|
};
|
|
329
219
|
return [4 /*yield*/, axios_1.default.request(options)];
|
|
330
220
|
case 1:
|
|
331
|
-
response =
|
|
332
|
-
|
|
333
|
-
this.
|
|
221
|
+
response = _b.sent();
|
|
222
|
+
_a = response.data, accessToken = _a.accessToken, permissions = _a.permissions;
|
|
223
|
+
this.configuration.accessToken = "Bearer ".concat(accessToken);
|
|
224
|
+
this.tokenData.accessToken = accessToken;
|
|
225
|
+
this.tokenData.permissions = permissions;
|
|
334
226
|
this.storeTokenData(__assign({}, this.tokenData));
|
|
335
227
|
return [2 /*return*/];
|
|
336
228
|
}
|
|
@@ -357,8 +249,10 @@ var BaseAPI = /** @class */ (function () {
|
|
|
357
249
|
});
|
|
358
250
|
options = {
|
|
359
251
|
method: 'POST',
|
|
360
|
-
url: "".concat(this.
|
|
361
|
-
headers:
|
|
252
|
+
url: "".concat(this.configuration.basePath, "/authservice/v1/refresh-token"),
|
|
253
|
+
headers: {
|
|
254
|
+
'Content-Type': 'application/json',
|
|
255
|
+
},
|
|
362
256
|
data: { username: username },
|
|
363
257
|
withCredentials: true,
|
|
364
258
|
};
|
|
@@ -391,75 +285,62 @@ var BaseAPI = /** @class */ (function () {
|
|
|
391
285
|
axios.interceptors.response.use(function (res) {
|
|
392
286
|
return res;
|
|
393
287
|
}, function (err) { return __awaiter(_this, void 0, void 0, function () {
|
|
394
|
-
var originalConfig,
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
switch (_a.label) {
|
|
288
|
+
var originalConfig, _a, tokenString, permissions, accessToken, _error_1, _b, tokenString, permissions, accessToken, _error_2;
|
|
289
|
+
return __generator(this, function (_c) {
|
|
290
|
+
switch (_c.label) {
|
|
398
291
|
case 0:
|
|
399
292
|
originalConfig = err.config;
|
|
400
293
|
if (!(err.response && !(err.response instanceof XMLHttpRequest))) return [3 /*break*/, 5];
|
|
401
294
|
if (!((err.response.status === 401 || err.response.status === 403)
|
|
402
295
|
&& !originalConfig._retry)) return [3 /*break*/, 4];
|
|
403
296
|
originalConfig._retry = true;
|
|
404
|
-
|
|
297
|
+
_c.label = 1;
|
|
405
298
|
case 1:
|
|
406
|
-
|
|
299
|
+
_c.trys.push([1, 3, , 4]);
|
|
407
300
|
return [4 /*yield*/, this.refreshTokenInternal()];
|
|
408
301
|
case 2:
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
this.
|
|
302
|
+
_a = _c.sent(), tokenString = _a.accessToken, permissions = _a.permissions;
|
|
303
|
+
accessToken = "Bearer ".concat(tokenString);
|
|
304
|
+
this.tokenData.permissions = permissions;
|
|
305
|
+
delete originalConfig.headers['Authorization'];
|
|
306
|
+
originalConfig.headers['Authorization'] = accessToken;
|
|
307
|
+
this.configuration.accessToken = accessToken;
|
|
308
|
+
this.tokenData.accessToken = tokenString;
|
|
412
309
|
this.storeTokenData(this.tokenData);
|
|
413
|
-
|
|
414
|
-
return [2 /*return*/, axios(this.withCurrentAuth(originalConfig))];
|
|
415
|
-
}
|
|
416
|
-
// Both mode: if the browser does not send the session cookie (another site), use the token.
|
|
417
|
-
return [2 /*return*/, axios(this.withCurrentAuth(originalConfig)).catch(function (retryError) {
|
|
418
|
-
var _a;
|
|
419
|
-
if (((_a = retryError === null || retryError === void 0 ? void 0 : retryError.response) === null || _a === void 0 ? void 0 : _a.status) !== 401 || !_this.tokenData.accessToken) {
|
|
420
|
-
return Promise.reject(retryError);
|
|
421
|
-
}
|
|
422
|
-
return _this.retryWithToken(axios, originalConfig);
|
|
423
|
-
})];
|
|
310
|
+
return [2 /*return*/, axios(originalConfig)];
|
|
424
311
|
case 3:
|
|
425
|
-
_error_1 =
|
|
312
|
+
_error_1 = _c.sent();
|
|
426
313
|
if (_error_1.response && _error_1.response.data) {
|
|
427
314
|
return [2 /*return*/, Promise.reject(_error_1.response.data)];
|
|
428
315
|
}
|
|
429
316
|
return [2 /*return*/, Promise.reject(_error_1)];
|
|
430
|
-
case 4: return [3 /*break*/,
|
|
317
|
+
case 4: return [3 /*break*/, 9];
|
|
431
318
|
case 5:
|
|
432
|
-
if (!(err.message === NETWORK_ERROR_MESSAGE && this.canRetryWithToken(originalConfig))) return [3 /*break*/, 6];
|
|
433
|
-
// Both mode: the browser blocked the session call or hid its reply; later calls use the token.
|
|
434
|
-
if (!this.canResend(originalConfig)) {
|
|
435
|
-
this.switchToToken();
|
|
436
|
-
return [2 /*return*/, Promise.reject(err)];
|
|
437
|
-
}
|
|
438
|
-
return [2 /*return*/, this.retryWithToken(axios, originalConfig)];
|
|
439
|
-
case 6:
|
|
440
319
|
if (!(err.message === NETWORK_ERROR_MESSAGE
|
|
441
|
-
&&
|
|
442
|
-
|
|
443
|
-
&& _retry_count < 4)) return [3 /*break*/, 10];
|
|
320
|
+
&& originalConfig.headers.hasOwnProperty('Authorization')
|
|
321
|
+
&& _retry_count < 4)) return [3 /*break*/, 9];
|
|
444
322
|
_retry_count++;
|
|
445
|
-
|
|
446
|
-
case
|
|
447
|
-
|
|
323
|
+
_c.label = 6;
|
|
324
|
+
case 6:
|
|
325
|
+
_c.trys.push([6, 8, , 9]);
|
|
448
326
|
return [4 /*yield*/, this.refreshTokenInternal()];
|
|
449
|
-
case
|
|
450
|
-
|
|
451
|
-
|
|
327
|
+
case 7:
|
|
328
|
+
_b = _c.sent(), tokenString = _b.accessToken, permissions = _b.permissions;
|
|
329
|
+
accessToken = "Bearer ".concat(tokenString);
|
|
330
|
+
this.tokenData.permissions = permissions;
|
|
452
331
|
_retry = true;
|
|
453
|
-
|
|
332
|
+
originalConfig.headers['Authorization'] = accessToken;
|
|
333
|
+
this.configuration.accessToken = accessToken;
|
|
334
|
+
this.tokenData.accessToken = tokenString;
|
|
454
335
|
this.storeTokenData(this.tokenData);
|
|
455
|
-
return [2 /*return*/, axios.request(__assign({},
|
|
456
|
-
case
|
|
457
|
-
_error_2 =
|
|
336
|
+
return [2 /*return*/, axios.request(__assign({}, originalConfig))];
|
|
337
|
+
case 8:
|
|
338
|
+
_error_2 = _c.sent();
|
|
458
339
|
if (_error_2.response && _error_2.response.data) {
|
|
459
340
|
return [2 /*return*/, Promise.reject(_error_2.response.data)];
|
|
460
341
|
}
|
|
461
342
|
return [2 /*return*/, Promise.reject(_error_2)];
|
|
462
|
-
case
|
|
343
|
+
case 9: return [2 /*return*/, Promise.reject(err)];
|
|
463
344
|
}
|
|
464
345
|
});
|
|
465
346
|
}); });
|
package/dist/common.d.ts
CHANGED
|
@@ -62,7 +62,7 @@ export declare const toPathString: (url: URL) => string;
|
|
|
62
62
|
*
|
|
63
63
|
* @export
|
|
64
64
|
*/
|
|
65
|
-
export declare const createRequestFunction: (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) => <T = unknown, R = AxiosResponse<T, any, {}
|
|
65
|
+
export declare const createRequestFunction: (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) => <T = unknown, R = AxiosResponse<T, any, {}>>(axios?: AxiosInstance, basePath?: string) => Promise<R>;
|
|
66
66
|
/**
|
|
67
67
|
* EMIL AccountService
|
|
68
68
|
* The EMIL AccountService API description
|
package/dist/common.js
CHANGED
|
@@ -233,7 +233,6 @@ exports.toPathString = toPathString;
|
|
|
233
233
|
* @export
|
|
234
234
|
*/
|
|
235
235
|
var createRequestFunction = function (axiosArgs, globalAxios, BASE_PATH, configuration) {
|
|
236
|
-
// Typed by hand: since axios 1.20, request() returns an internal axios type that SDK declarations cannot name.
|
|
237
236
|
return function (axios, basePath) {
|
|
238
237
|
if (axios === void 0) { axios = globalAxios; }
|
|
239
238
|
if (basePath === void 0) { basePath = BASE_PATH; }
|
package/dist/configuration.d.ts
CHANGED
|
@@ -17,8 +17,6 @@ export interface ConfigurationParameters {
|
|
|
17
17
|
basePath?: string;
|
|
18
18
|
baseOptions?: any;
|
|
19
19
|
formDataCtor?: new () => any;
|
|
20
|
-
cookieAuth?: boolean;
|
|
21
|
-
account?: string;
|
|
22
20
|
}
|
|
23
21
|
export declare class Configuration {
|
|
24
22
|
/**
|
|
@@ -70,21 +68,6 @@ export declare class Configuration {
|
|
|
70
68
|
* @type {new () => FormData}
|
|
71
69
|
*/
|
|
72
70
|
formDataCtor?: new () => any;
|
|
73
|
-
/**
|
|
74
|
-
* Use a server session when authservice makes one; otherwise the token, as without this option.
|
|
75
|
-
* Set `account` too, so each SDK object keeps its own account.
|
|
76
|
-
*
|
|
77
|
-
* @type {boolean}
|
|
78
|
-
* @memberof Configuration
|
|
79
|
-
*/
|
|
80
|
-
cookieAuth?: boolean;
|
|
81
|
-
/**
|
|
82
|
-
* The session account (Cognito sub) this app shows, so the SDK never takes another tab's account.
|
|
83
|
-
*
|
|
84
|
-
* @type {string}
|
|
85
|
-
* @memberof Configuration
|
|
86
|
-
*/
|
|
87
|
-
account?: string;
|
|
88
71
|
constructor(param?: ConfigurationParameters);
|
|
89
72
|
/**
|
|
90
73
|
* Check if the given MIME is a JSON MIME.
|
package/dist/configuration.js
CHANGED
|
@@ -24,8 +24,6 @@ var Configuration = /** @class */ (function () {
|
|
|
24
24
|
this.basePath = param.basePath;
|
|
25
25
|
this.baseOptions = param.baseOptions;
|
|
26
26
|
this.formDataCtor = param.formDataCtor;
|
|
27
|
-
this.cookieAuth = param.cookieAuth;
|
|
28
|
-
this.account = param.account;
|
|
29
27
|
}
|
|
30
28
|
/**
|
|
31
29
|
* Check if the given MIME is a JSON MIME.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@emilgroup/account-sdk",
|
|
3
|
-
"version": "1.49.1-beta.
|
|
3
|
+
"version": "1.49.1-beta.18",
|
|
4
4
|
"description": "OpenAPI client for @emilgroup/account-sdk",
|
|
5
5
|
"author": "OpenAPI-Generator Contributors",
|
|
6
6
|
"keywords": [
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"prepare": "npm run build"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"axios": "1.
|
|
21
|
+
"axios": "1.18.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
|