@frontegg/redux-store 6.66.0 → 6.67.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/auth/ApiTokensState/index.d.ts +2 -2
- package/auth/ApiTokensState/interfaces.d.ts +13 -4
- package/auth/ApiTokensState/saga.js +104 -116
- package/auth/index.d.ts +2 -2
- package/auth/reducer.d.ts +2 -2
- package/index.js +1 -1
- package/node/auth/ApiTokensState/saga.js +103 -115
- package/node/index.js +1 -1
- package/package.json +2 -2
|
@@ -120,8 +120,8 @@ declare const actions: {
|
|
|
120
120
|
callback?: ((data: boolean | null, error?: string | undefined) => void) | undefined;
|
|
121
121
|
}> | undefined, string, never, never>;
|
|
122
122
|
initApiTokensData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[ApiTokenType], ApiTokenType, string, never, never>;
|
|
123
|
-
addTenantApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[WithCallback<Pick<import("./interfaces").ITenantApiTokensData, "description" | "roleIds">, boolean>], WithCallback<Pick<import("./interfaces").ITenantApiTokensData, "description" | "roleIds">, boolean>, string, never, never>;
|
|
124
|
-
addUserApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[WithCallback<Pick<import("./interfaces").IApiTokensData, "description">, boolean>], WithCallback<Pick<import("./interfaces").IApiTokensData, "description">, boolean>, string, never, never>;
|
|
123
|
+
addTenantApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[WithCallback<Pick<import("./interfaces").ITenantApiTokensData, "description" | "roleIds" | "expires">, boolean>], WithCallback<Pick<import("./interfaces").ITenantApiTokensData, "description" | "roleIds" | "expires">, boolean>, string, never, never>;
|
|
124
|
+
addUserApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[WithCallback<Pick<import("./interfaces").IApiTokensData, "description" | "expires">, boolean>], WithCallback<Pick<import("./interfaces").IApiTokensData, "description" | "expires">, boolean>, string, never, never>;
|
|
125
125
|
deleteUserApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[string], string, string, never, never>;
|
|
126
126
|
deleteTenantApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[string], string, string, never, never>;
|
|
127
127
|
};
|
|
@@ -9,7 +9,8 @@ export interface ApiTokensState {
|
|
|
9
9
|
createdByUserIdColumn?: createdByUserIdColumn;
|
|
10
10
|
deleteTokenDialog: {
|
|
11
11
|
open: boolean;
|
|
12
|
-
clientId
|
|
12
|
+
clientId?: string;
|
|
13
|
+
id?: string;
|
|
13
14
|
};
|
|
14
15
|
successDialog: {
|
|
15
16
|
open: boolean;
|
|
@@ -24,18 +25,26 @@ export interface ApiTokensState {
|
|
|
24
25
|
export declare type ApiTokenType = 'user' | 'tenant' | null;
|
|
25
26
|
export declare type createdByUserIdColumn = 'show' | 'hide' | undefined;
|
|
26
27
|
export interface IApiTokensData {
|
|
27
|
-
clientId
|
|
28
|
+
clientId?: string;
|
|
28
29
|
createdAt: string;
|
|
29
30
|
secret?: string;
|
|
30
31
|
description: string;
|
|
31
32
|
metadata?: {};
|
|
33
|
+
expires?: any;
|
|
34
|
+
id?: string;
|
|
32
35
|
}
|
|
33
36
|
export declare type IUserApiTokensData = IApiTokensData;
|
|
37
|
+
export interface IUserApiAccessTokensData {
|
|
38
|
+
accessTokens: IUserApiTokensData[];
|
|
39
|
+
}
|
|
34
40
|
export interface ITenantApiTokensData extends IApiTokensData {
|
|
35
41
|
roleIds: string[];
|
|
36
42
|
tenantId: string;
|
|
37
43
|
createdByUserId: string;
|
|
38
44
|
}
|
|
45
|
+
export interface ITenantApiAccessTokensData {
|
|
46
|
+
accessTokens: ITenantApiTokensData[];
|
|
47
|
+
}
|
|
39
48
|
export declare type ApiStateIndicator = {
|
|
40
49
|
key: ApiStateKeys;
|
|
41
50
|
value: string | boolean;
|
|
@@ -45,5 +54,5 @@ export declare enum ApiStateKeys {
|
|
|
45
54
|
ADD_API_TOKEN = "ADD_API_TOKEN",
|
|
46
55
|
DELETE_API_TOKEN = "DELETE_API_TOKEN"
|
|
47
56
|
}
|
|
48
|
-
export declare type AddTenantApiTokenPayload = WithCallback<Pick<ITenantApiTokensData, 'description' | 'roleIds'>>;
|
|
49
|
-
export declare type AddUserApiTokenPayload = WithCallback<Pick<IApiTokensData, 'description'>>;
|
|
57
|
+
export declare type AddTenantApiTokenPayload = WithCallback<Pick<ITenantApiTokensData, 'description' | 'roleIds' | 'expires'>>;
|
|
58
|
+
export declare type AddUserApiTokenPayload = WithCallback<Pick<IApiTokensData, 'description' | 'expires'>>;
|
|
@@ -3,63 +3,15 @@ import { call, put, takeLeading, select, takeEvery, takeLatest, delay, all } fro
|
|
|
3
3
|
import { api } from '@frontegg/rest-api';
|
|
4
4
|
import { actions } from '../reducer';
|
|
5
5
|
import { ApiStateKeys } from './interfaces';
|
|
6
|
-
import { apiTokensDataDemo, apiTokensDataTenantDemo
|
|
6
|
+
import { apiTokensDataDemo, apiTokensDataTenantDemo } from '../dummy';
|
|
7
7
|
import { v4 as uuidv4 } from 'uuid';
|
|
8
8
|
|
|
9
|
-
function* loadApiTokensData({
|
|
10
|
-
payload: apiTokenType
|
|
11
|
-
}) {
|
|
12
|
-
yield put(actions.setApiTokensState({
|
|
13
|
-
apiTokenType
|
|
14
|
-
}));
|
|
15
|
-
|
|
16
|
-
try {
|
|
17
|
-
yield put(actions.setApiTokensLoader({
|
|
18
|
-
key: ApiStateKeys.LOAD_API_TOKENS,
|
|
19
|
-
value: true
|
|
20
|
-
}));
|
|
21
|
-
|
|
22
|
-
if (apiTokenType === 'user') {
|
|
23
|
-
const apiTokensData = yield call(api.auth.getUserApiTokensData);
|
|
24
|
-
yield put(actions.setApiTokensState({
|
|
25
|
-
apiTokensDataUser: apiTokensData != null ? apiTokensData : []
|
|
26
|
-
}));
|
|
27
|
-
} else {
|
|
28
|
-
const apiTenantTokensData = yield call(api.auth.getTenantApiTokensData);
|
|
29
|
-
const {
|
|
30
|
-
items: roles
|
|
31
|
-
} = yield call(api.teams.loadAvailableRoles);
|
|
32
|
-
const {
|
|
33
|
-
items: permissions
|
|
34
|
-
} = yield call(api.teams.loadAvailablePermissions);
|
|
35
|
-
yield put(actions.setApiTokensState({
|
|
36
|
-
apiTokensDataTenant: apiTenantTokensData != null ? apiTenantTokensData : [],
|
|
37
|
-
roles: roles != null ? roles : [],
|
|
38
|
-
permissions: permissions != null ? permissions : []
|
|
39
|
-
}));
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
yield put(actions.setApiTokensLoader({
|
|
43
|
-
key: ApiStateKeys.LOAD_API_TOKENS,
|
|
44
|
-
value: false
|
|
45
|
-
}));
|
|
46
|
-
} catch (e) {
|
|
47
|
-
yield put(actions.setApiTokensError({
|
|
48
|
-
key: ApiStateKeys.LOAD_API_TOKENS,
|
|
49
|
-
value: e.message
|
|
50
|
-
}));
|
|
51
|
-
yield put(actions.setApiTokensLoader({
|
|
52
|
-
key: ApiStateKeys.LOAD_API_TOKENS,
|
|
53
|
-
value: false
|
|
54
|
-
}));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
9
|
function* addUserApiToken({
|
|
59
10
|
payload
|
|
60
11
|
}) {
|
|
61
12
|
const {
|
|
62
13
|
description,
|
|
14
|
+
expires,
|
|
63
15
|
callback
|
|
64
16
|
} = payload;
|
|
65
17
|
const {
|
|
@@ -71,9 +23,26 @@ function* addUserApiToken({
|
|
|
71
23
|
key: ApiStateKeys.ADD_API_TOKEN,
|
|
72
24
|
value: true
|
|
73
25
|
}));
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
26
|
+
let data;
|
|
27
|
+
let expiresInMinutes;
|
|
28
|
+
|
|
29
|
+
if (expires !== undefined) {
|
|
30
|
+
if (expires === null) {
|
|
31
|
+
expiresInMinutes = null;
|
|
32
|
+
} else {
|
|
33
|
+
expiresInMinutes = expires * 1440;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
data = yield call(api.auth.createUserAccessToken, {
|
|
37
|
+
description,
|
|
38
|
+
expiresInMinutes
|
|
39
|
+
});
|
|
40
|
+
} else {
|
|
41
|
+
data = yield call(api.auth.updateUserApiTokensData, {
|
|
42
|
+
description
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
77
46
|
yield put(actions.setApiTokensState({
|
|
78
47
|
showAddTokenDialog: false
|
|
79
48
|
}));
|
|
@@ -83,7 +52,7 @@ function* addUserApiToken({
|
|
|
83
52
|
successDialog: {
|
|
84
53
|
open: true,
|
|
85
54
|
secret: data.secret,
|
|
86
|
-
clientId: data.clientId
|
|
55
|
+
clientId: expires !== undefined ? data.clientId : undefined
|
|
87
56
|
}
|
|
88
57
|
}));
|
|
89
58
|
yield put(actions.setApiTokensLoader({
|
|
@@ -110,6 +79,7 @@ function* addTenantApiToken({
|
|
|
110
79
|
const {
|
|
111
80
|
description,
|
|
112
81
|
roleIds,
|
|
82
|
+
expires,
|
|
113
83
|
callback
|
|
114
84
|
} = payload;
|
|
115
85
|
const {
|
|
@@ -121,10 +91,28 @@ function* addTenantApiToken({
|
|
|
121
91
|
key: ApiStateKeys.ADD_API_TOKEN,
|
|
122
92
|
value: true
|
|
123
93
|
}));
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
94
|
+
let data;
|
|
95
|
+
let expiresInMinutes;
|
|
96
|
+
|
|
97
|
+
if (expires !== undefined) {
|
|
98
|
+
if (expires === null) {
|
|
99
|
+
expiresInMinutes = null;
|
|
100
|
+
} else {
|
|
101
|
+
expiresInMinutes = expires * 1440;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
data = yield call(api.auth.createTenantAccessToken, {
|
|
105
|
+
description,
|
|
106
|
+
expiresInMinutes,
|
|
107
|
+
roleIds
|
|
108
|
+
});
|
|
109
|
+
} else {
|
|
110
|
+
data = yield call(api.auth.updateTenantApiTokensData, {
|
|
111
|
+
description,
|
|
112
|
+
roleIds
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
128
116
|
yield put(actions.setApiTokensState({
|
|
129
117
|
showAddTokenDialog: false
|
|
130
118
|
}));
|
|
@@ -134,7 +122,7 @@ function* addTenantApiToken({
|
|
|
134
122
|
successDialog: {
|
|
135
123
|
open: true,
|
|
136
124
|
secret: data.secret,
|
|
137
|
-
clientId: data.clientId
|
|
125
|
+
clientId: expires !== undefined ? data.clientId : undefined
|
|
138
126
|
}
|
|
139
127
|
}));
|
|
140
128
|
yield put(actions.setApiTokensLoader({
|
|
@@ -161,22 +149,38 @@ function* deleteUserApiToken({
|
|
|
161
149
|
const {
|
|
162
150
|
apiTokensDataUser
|
|
163
151
|
} = yield select(state => state.auth.apiTokensState);
|
|
152
|
+
const isAccessToken = apiTokensDataUser.some(token => token.id === payload);
|
|
164
153
|
|
|
165
154
|
try {
|
|
166
155
|
yield put(actions.setApiTokensLoader({
|
|
167
156
|
key: ApiStateKeys.DELETE_API_TOKEN,
|
|
168
157
|
value: true
|
|
169
158
|
}));
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
159
|
+
|
|
160
|
+
if (isAccessToken) {
|
|
161
|
+
yield call(api.auth.deleteUserAccessToken, {
|
|
162
|
+
id: payload
|
|
163
|
+
});
|
|
164
|
+
yield put(actions.setApiTokensState({
|
|
165
|
+
apiTokensDataUser: apiTokensDataUser.filter(token => token.id !== payload),
|
|
166
|
+
deleteTokenDialog: {
|
|
167
|
+
open: false,
|
|
168
|
+
id: payload
|
|
169
|
+
}
|
|
170
|
+
}));
|
|
171
|
+
} else {
|
|
172
|
+
yield call(api.auth.deleteUserApiToken, {
|
|
173
|
+
tokenId: payload
|
|
174
|
+
});
|
|
175
|
+
yield put(actions.setApiTokensState({
|
|
176
|
+
apiTokensDataUser: apiTokensDataUser.filter(token => token.clientId !== payload),
|
|
177
|
+
deleteTokenDialog: {
|
|
178
|
+
open: false,
|
|
179
|
+
clientId: payload
|
|
180
|
+
}
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
|
|
180
184
|
yield put(actions.setApiTokensLoader({
|
|
181
185
|
key: ApiStateKeys.DELETE_API_TOKEN,
|
|
182
186
|
value: false
|
|
@@ -199,20 +203,32 @@ function* deleteTenantApiToken({
|
|
|
199
203
|
const {
|
|
200
204
|
apiTokensDataTenant
|
|
201
205
|
} = yield select(state => state.auth.apiTokensState);
|
|
206
|
+
const isAccessToken = apiTokensDataTenant.some(token => token.id === payload);
|
|
207
|
+
let filteredApiTokensDataTenant = apiTokensDataTenant;
|
|
202
208
|
|
|
203
209
|
try {
|
|
204
210
|
yield put(actions.setApiTokensLoader({
|
|
205
211
|
key: ApiStateKeys.DELETE_API_TOKEN,
|
|
206
212
|
value: true
|
|
207
213
|
}));
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
214
|
+
|
|
215
|
+
if (isAccessToken) {
|
|
216
|
+
yield call(api.auth.deleteTenantAccessToken, {
|
|
217
|
+
id: payload
|
|
218
|
+
});
|
|
219
|
+
filteredApiTokensDataTenant = apiTokensDataTenant.filter(token => token.id !== payload);
|
|
220
|
+
} else {
|
|
221
|
+
yield call(api.auth.deleteTenantApiToken, {
|
|
222
|
+
tokenId: payload
|
|
223
|
+
});
|
|
224
|
+
filteredApiTokensDataTenant = apiTokensDataTenant.filter(token => token.clientId !== payload);
|
|
225
|
+
}
|
|
226
|
+
|
|
211
227
|
yield put(actions.setApiTokensState({
|
|
212
|
-
apiTokensDataTenant:
|
|
228
|
+
apiTokensDataTenant: filteredApiTokensDataTenant,
|
|
213
229
|
deleteTokenDialog: {
|
|
214
230
|
open: false,
|
|
215
|
-
|
|
231
|
+
id: payload
|
|
216
232
|
}
|
|
217
233
|
}));
|
|
218
234
|
yield put(actions.setApiTokensLoader({
|
|
@@ -280,11 +296,15 @@ function* loadUserApiTokens({
|
|
|
280
296
|
}
|
|
281
297
|
|
|
282
298
|
try {
|
|
283
|
-
var _payload$callback3;
|
|
299
|
+
var _call, _call2, _accessTokensData$acc, _payload$callback3;
|
|
284
300
|
|
|
285
|
-
const apiTokensData = yield call(api.auth.getUserApiTokensData);
|
|
301
|
+
const apiTokensData = yield (_call = call(api.auth.getUserApiTokensData)) != null ? _call : [];
|
|
302
|
+
const accessTokensData = yield (_call2 = call(api.auth.getUserAccessTokensData)) != null ? _call2 : [];
|
|
303
|
+
const accessTokens = (_accessTokensData$acc = accessTokensData.accessTokens) != null ? _accessTokensData$acc : [];
|
|
304
|
+
const allTokens = accessTokens.concat(apiTokensData);
|
|
305
|
+
const sortedTokensByDate = allTokens.sort((date1, date2) => new Date(date2.createdAt) - new Date(date1.createdAt));
|
|
286
306
|
yield put(actions.setApiTokensState({
|
|
287
|
-
apiTokensDataUser:
|
|
307
|
+
apiTokensDataUser: sortedTokensByDate != null ? sortedTokensByDate : []
|
|
288
308
|
}));
|
|
289
309
|
yield put(actions.setApiTokensLoader({
|
|
290
310
|
key: ApiStateKeys.LOAD_API_TOKENS,
|
|
@@ -317,11 +337,15 @@ function* loadTenantApiTokens({
|
|
|
317
337
|
}
|
|
318
338
|
|
|
319
339
|
try {
|
|
320
|
-
var _payload$callback5;
|
|
340
|
+
var _call3, _call4, _accessTokensData$acc2, _payload$callback5;
|
|
321
341
|
|
|
322
|
-
const apiTokensData = yield call(api.auth.getTenantApiTokensData);
|
|
342
|
+
const apiTokensData = yield (_call3 = call(api.auth.getTenantApiTokensData)) != null ? _call3 : [];
|
|
343
|
+
const accessTokensData = yield (_call4 = call(api.auth.getTenantAccessTokensData)) != null ? _call4 : [];
|
|
344
|
+
const accessTokens = (_accessTokensData$acc2 = accessTokensData == null ? void 0 : accessTokensData.accessTokens) != null ? _accessTokensData$acc2 : [];
|
|
345
|
+
const allTokens = accessTokens.concat(apiTokensData);
|
|
346
|
+
const sortedTokensByDate = allTokens.sort((date1, date2) => new Date(date2.createdAt) - new Date(date1.createdAt));
|
|
323
347
|
yield put(actions.setApiTokensState({
|
|
324
|
-
apiTokensDataTenant:
|
|
348
|
+
apiTokensDataTenant: sortedTokensByDate != null ? sortedTokensByDate : []
|
|
325
349
|
}));
|
|
326
350
|
yield put(actions.setApiTokensLoader({
|
|
327
351
|
key: ApiStateKeys.LOAD_API_TOKENS,
|
|
@@ -347,7 +371,6 @@ export function* apiTokensSaga() {
|
|
|
347
371
|
yield takeLeading(actions.loadApiTokens, loadApiTokens);
|
|
348
372
|
yield takeLeading(actions.loadUserApiTokens, loadUserApiTokens);
|
|
349
373
|
yield takeLeading(actions.loadTenantApiTokens, loadTenantApiTokens);
|
|
350
|
-
yield takeLeading(actions.initApiTokensData, loadApiTokensData);
|
|
351
374
|
yield takeEvery(actions.addUserApiToken, addUserApiToken);
|
|
352
375
|
yield takeEvery(actions.addTenantApiToken, addTenantApiToken);
|
|
353
376
|
yield takeLatest(actions.deleteTenantApiToken, deleteTenantApiToken);
|
|
@@ -357,40 +380,6 @@ export function* apiTokensSaga() {
|
|
|
357
380
|
* Preview Sagas
|
|
358
381
|
*********************************/
|
|
359
382
|
|
|
360
|
-
function* loadApiTokensDataMock({
|
|
361
|
-
payload: apiTokenType
|
|
362
|
-
}) {
|
|
363
|
-
yield put(actions.setApiTokensState({
|
|
364
|
-
apiTokenType
|
|
365
|
-
}));
|
|
366
|
-
yield put(actions.setApiTokensLoader({
|
|
367
|
-
key: ApiStateKeys.LOAD_API_TOKENS,
|
|
368
|
-
value: true
|
|
369
|
-
}));
|
|
370
|
-
|
|
371
|
-
if (apiTokenType === 'user') {
|
|
372
|
-
yield delay(200);
|
|
373
|
-
const apiTokensData = [apiTokensDataDemo];
|
|
374
|
-
yield put(actions.setApiTokensState({
|
|
375
|
-
apiTokensDataUser: apiTokensData != null ? apiTokensData : []
|
|
376
|
-
}));
|
|
377
|
-
} else {
|
|
378
|
-
var _ref;
|
|
379
|
-
|
|
380
|
-
yield delay(200);
|
|
381
|
-
yield put(actions.setApiTokensState({
|
|
382
|
-
apiTokensDataTenant: (_ref = [apiTokensDataTenantDemo]) != null ? _ref : [],
|
|
383
|
-
roles: rolesDemo != null ? rolesDemo : [],
|
|
384
|
-
permissions: permissionsDemo != null ? permissionsDemo : []
|
|
385
|
-
}));
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
yield put(actions.setApiTokensLoader({
|
|
389
|
-
key: ApiStateKeys.LOAD_API_TOKENS,
|
|
390
|
-
value: false
|
|
391
|
-
}));
|
|
392
|
-
}
|
|
393
|
-
|
|
394
383
|
function* addTenantApiTokenMock({
|
|
395
384
|
payload
|
|
396
385
|
}) {
|
|
@@ -533,7 +522,6 @@ export function* apiTokensSagaMock() {
|
|
|
533
522
|
yield takeLeading(actions.loadApiTokens, loadApiTokensMock);
|
|
534
523
|
yield takeLeading(actions.loadUserApiTokens, loadUserApiTokensMock);
|
|
535
524
|
yield takeLeading(actions.loadTenantApiTokens, loadTenantApiTokensMock);
|
|
536
|
-
yield takeLeading(actions.initApiTokensData, loadApiTokensDataMock);
|
|
537
525
|
yield takeEvery(actions.addTenantApiToken, addTenantApiTokenMock);
|
|
538
526
|
yield takeLatest(actions.deleteTenantApiToken, deleteTenantApiTokenMock);
|
|
539
527
|
}
|
package/auth/index.d.ts
CHANGED
|
@@ -162,8 +162,8 @@ declare const _default: {
|
|
|
162
162
|
callback?: ((data: boolean | null, error?: string | undefined) => void) | undefined;
|
|
163
163
|
}> | undefined, string, never, never>;
|
|
164
164
|
initApiTokensData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("./ApiTokensState/interfaces").ApiTokenType], import("./ApiTokensState/interfaces").ApiTokenType, string, never, never>;
|
|
165
|
-
addTenantApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("..").WithCallback<Pick<import("./ApiTokensState/interfaces").ITenantApiTokensData, "description" | "roleIds">, boolean>], import("..").WithCallback<Pick<import("./ApiTokensState/interfaces").ITenantApiTokensData, "description" | "roleIds">, boolean>, string, never, never>;
|
|
166
|
-
addUserApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("..").WithCallback<Pick<import("./ApiTokensState/interfaces").IApiTokensData, "description">, boolean>], import("..").WithCallback<Pick<import("./ApiTokensState/interfaces").IApiTokensData, "description">, boolean>, string, never, never>;
|
|
165
|
+
addTenantApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("..").WithCallback<Pick<import("./ApiTokensState/interfaces").ITenantApiTokensData, "description" | "roleIds" | "expires">, boolean>], import("..").WithCallback<Pick<import("./ApiTokensState/interfaces").ITenantApiTokensData, "description" | "roleIds" | "expires">, boolean>, string, never, never>;
|
|
166
|
+
addUserApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("..").WithCallback<Pick<import("./ApiTokensState/interfaces").IApiTokensData, "description" | "expires">, boolean>], import("..").WithCallback<Pick<import("./ApiTokensState/interfaces").IApiTokensData, "description" | "expires">, boolean>, string, never, never>;
|
|
167
167
|
deleteUserApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[string], string, string, never, never>;
|
|
168
168
|
deleteTenantApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[string], string, string, never, never>;
|
|
169
169
|
loadUsers: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("..").WithCallback<import("..").WithSilentLoad<import("@frontegg/rest-api").ILoadUsers>, import("@frontegg/rest-api").ITeamUser[]>], import("..").WithCallback<import("..").WithSilentLoad<import("@frontegg/rest-api").ILoadUsers>, import("@frontegg/rest-api").ITeamUser[]>, string, never, never>;
|
package/auth/reducer.d.ts
CHANGED
|
@@ -129,8 +129,8 @@ declare const actions: {
|
|
|
129
129
|
callback?: ((data: boolean | null, error?: string | undefined) => void) | undefined;
|
|
130
130
|
}> | undefined, string, never, never>;
|
|
131
131
|
initApiTokensData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import(".").ApiTokenType], import(".").ApiTokenType, string, never, never>;
|
|
132
|
-
addTenantApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("..").WithCallback<Pick<import(".").ITenantApiTokensData, "description" | "roleIds">, boolean>], import("..").WithCallback<Pick<import(".").ITenantApiTokensData, "description" | "roleIds">, boolean>, string, never, never>;
|
|
133
|
-
addUserApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("..").WithCallback<Pick<import(".").IApiTokensData, "description">, boolean>], import("..").WithCallback<Pick<import(".").IApiTokensData, "description">, boolean>, string, never, never>;
|
|
132
|
+
addTenantApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("..").WithCallback<Pick<import(".").ITenantApiTokensData, "description" | "roleIds" | "expires">, boolean>], import("..").WithCallback<Pick<import(".").ITenantApiTokensData, "description" | "roleIds" | "expires">, boolean>, string, never, never>;
|
|
133
|
+
addUserApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("..").WithCallback<Pick<import(".").IApiTokensData, "description" | "expires">, boolean>], import("..").WithCallback<Pick<import(".").IApiTokensData, "description" | "expires">, boolean>, string, never, never>;
|
|
134
134
|
deleteUserApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[string], string, string, never, never>;
|
|
135
135
|
deleteTenantApiToken: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[string], string, string, never, never>;
|
|
136
136
|
loadUsers: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[import("..").WithCallback<import("..").WithSilentLoad<import("@frontegg/rest-api").ILoadUsers>, import("@frontegg/rest-api").ITeamUser[]>], import("..").WithCallback<import("..").WithSilentLoad<import("@frontegg/rest-api").ILoadUsers>, import("@frontegg/rest-api").ITeamUser[]>, string, never, never>;
|
package/index.js
CHANGED
|
@@ -22,60 +22,12 @@ var _dummy = require("../dummy");
|
|
|
22
22
|
|
|
23
23
|
var _uuid = require("uuid");
|
|
24
24
|
|
|
25
|
-
function* loadApiTokensData({
|
|
26
|
-
payload: apiTokenType
|
|
27
|
-
}) {
|
|
28
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
29
|
-
apiTokenType
|
|
30
|
-
}));
|
|
31
|
-
|
|
32
|
-
try {
|
|
33
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
34
|
-
key: _interfaces.ApiStateKeys.LOAD_API_TOKENS,
|
|
35
|
-
value: true
|
|
36
|
-
}));
|
|
37
|
-
|
|
38
|
-
if (apiTokenType === 'user') {
|
|
39
|
-
const apiTokensData = yield (0, _effects.call)(_restApi.api.auth.getUserApiTokensData);
|
|
40
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
41
|
-
apiTokensDataUser: apiTokensData != null ? apiTokensData : []
|
|
42
|
-
}));
|
|
43
|
-
} else {
|
|
44
|
-
const apiTenantTokensData = yield (0, _effects.call)(_restApi.api.auth.getTenantApiTokensData);
|
|
45
|
-
const {
|
|
46
|
-
items: roles
|
|
47
|
-
} = yield (0, _effects.call)(_restApi.api.teams.loadAvailableRoles);
|
|
48
|
-
const {
|
|
49
|
-
items: permissions
|
|
50
|
-
} = yield (0, _effects.call)(_restApi.api.teams.loadAvailablePermissions);
|
|
51
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
52
|
-
apiTokensDataTenant: apiTenantTokensData != null ? apiTenantTokensData : [],
|
|
53
|
-
roles: roles != null ? roles : [],
|
|
54
|
-
permissions: permissions != null ? permissions : []
|
|
55
|
-
}));
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
59
|
-
key: _interfaces.ApiStateKeys.LOAD_API_TOKENS,
|
|
60
|
-
value: false
|
|
61
|
-
}));
|
|
62
|
-
} catch (e) {
|
|
63
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensError({
|
|
64
|
-
key: _interfaces.ApiStateKeys.LOAD_API_TOKENS,
|
|
65
|
-
value: e.message
|
|
66
|
-
}));
|
|
67
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
68
|
-
key: _interfaces.ApiStateKeys.LOAD_API_TOKENS,
|
|
69
|
-
value: false
|
|
70
|
-
}));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
25
|
function* addUserApiToken({
|
|
75
26
|
payload
|
|
76
27
|
}) {
|
|
77
28
|
const {
|
|
78
29
|
description,
|
|
30
|
+
expires,
|
|
79
31
|
callback
|
|
80
32
|
} = payload;
|
|
81
33
|
const {
|
|
@@ -87,9 +39,26 @@ function* addUserApiToken({
|
|
|
87
39
|
key: _interfaces.ApiStateKeys.ADD_API_TOKEN,
|
|
88
40
|
value: true
|
|
89
41
|
}));
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
42
|
+
let data;
|
|
43
|
+
let expiresInMinutes;
|
|
44
|
+
|
|
45
|
+
if (expires !== undefined) {
|
|
46
|
+
if (expires === null) {
|
|
47
|
+
expiresInMinutes = null;
|
|
48
|
+
} else {
|
|
49
|
+
expiresInMinutes = expires * 1440;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
data = yield (0, _effects.call)(_restApi.api.auth.createUserAccessToken, {
|
|
53
|
+
description,
|
|
54
|
+
expiresInMinutes
|
|
55
|
+
});
|
|
56
|
+
} else {
|
|
57
|
+
data = yield (0, _effects.call)(_restApi.api.auth.updateUserApiTokensData, {
|
|
58
|
+
description
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
93
62
|
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
94
63
|
showAddTokenDialog: false
|
|
95
64
|
}));
|
|
@@ -99,7 +68,7 @@ function* addUserApiToken({
|
|
|
99
68
|
successDialog: {
|
|
100
69
|
open: true,
|
|
101
70
|
secret: data.secret,
|
|
102
|
-
clientId: data.clientId
|
|
71
|
+
clientId: expires !== undefined ? data.clientId : undefined
|
|
103
72
|
}
|
|
104
73
|
}));
|
|
105
74
|
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
@@ -126,6 +95,7 @@ function* addTenantApiToken({
|
|
|
126
95
|
const {
|
|
127
96
|
description,
|
|
128
97
|
roleIds,
|
|
98
|
+
expires,
|
|
129
99
|
callback
|
|
130
100
|
} = payload;
|
|
131
101
|
const {
|
|
@@ -137,10 +107,28 @@ function* addTenantApiToken({
|
|
|
137
107
|
key: _interfaces.ApiStateKeys.ADD_API_TOKEN,
|
|
138
108
|
value: true
|
|
139
109
|
}));
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
110
|
+
let data;
|
|
111
|
+
let expiresInMinutes;
|
|
112
|
+
|
|
113
|
+
if (expires !== undefined) {
|
|
114
|
+
if (expires === null) {
|
|
115
|
+
expiresInMinutes = null;
|
|
116
|
+
} else {
|
|
117
|
+
expiresInMinutes = expires * 1440;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
data = yield (0, _effects.call)(_restApi.api.auth.createTenantAccessToken, {
|
|
121
|
+
description,
|
|
122
|
+
expiresInMinutes,
|
|
123
|
+
roleIds
|
|
124
|
+
});
|
|
125
|
+
} else {
|
|
126
|
+
data = yield (0, _effects.call)(_restApi.api.auth.updateTenantApiTokensData, {
|
|
127
|
+
description,
|
|
128
|
+
roleIds
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
144
132
|
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
145
133
|
showAddTokenDialog: false
|
|
146
134
|
}));
|
|
@@ -150,7 +138,7 @@ function* addTenantApiToken({
|
|
|
150
138
|
successDialog: {
|
|
151
139
|
open: true,
|
|
152
140
|
secret: data.secret,
|
|
153
|
-
clientId: data.clientId
|
|
141
|
+
clientId: expires !== undefined ? data.clientId : undefined
|
|
154
142
|
}
|
|
155
143
|
}));
|
|
156
144
|
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
@@ -177,22 +165,38 @@ function* deleteUserApiToken({
|
|
|
177
165
|
const {
|
|
178
166
|
apiTokensDataUser
|
|
179
167
|
} = yield (0, _effects.select)(state => state.auth.apiTokensState);
|
|
168
|
+
const isAccessToken = apiTokensDataUser.some(token => token.id === payload);
|
|
180
169
|
|
|
181
170
|
try {
|
|
182
171
|
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
183
172
|
key: _interfaces.ApiStateKeys.DELETE_API_TOKEN,
|
|
184
173
|
value: true
|
|
185
174
|
}));
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
175
|
+
|
|
176
|
+
if (isAccessToken) {
|
|
177
|
+
yield (0, _effects.call)(_restApi.api.auth.deleteUserAccessToken, {
|
|
178
|
+
id: payload
|
|
179
|
+
});
|
|
180
|
+
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
181
|
+
apiTokensDataUser: apiTokensDataUser.filter(token => token.id !== payload),
|
|
182
|
+
deleteTokenDialog: {
|
|
183
|
+
open: false,
|
|
184
|
+
id: payload
|
|
185
|
+
}
|
|
186
|
+
}));
|
|
187
|
+
} else {
|
|
188
|
+
yield (0, _effects.call)(_restApi.api.auth.deleteUserApiToken, {
|
|
189
|
+
tokenId: payload
|
|
190
|
+
});
|
|
191
|
+
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
192
|
+
apiTokensDataUser: apiTokensDataUser.filter(token => token.clientId !== payload),
|
|
193
|
+
deleteTokenDialog: {
|
|
194
|
+
open: false,
|
|
195
|
+
clientId: payload
|
|
196
|
+
}
|
|
197
|
+
}));
|
|
198
|
+
}
|
|
199
|
+
|
|
196
200
|
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
197
201
|
key: _interfaces.ApiStateKeys.DELETE_API_TOKEN,
|
|
198
202
|
value: false
|
|
@@ -215,20 +219,32 @@ function* deleteTenantApiToken({
|
|
|
215
219
|
const {
|
|
216
220
|
apiTokensDataTenant
|
|
217
221
|
} = yield (0, _effects.select)(state => state.auth.apiTokensState);
|
|
222
|
+
const isAccessToken = apiTokensDataTenant.some(token => token.id === payload);
|
|
223
|
+
let filteredApiTokensDataTenant = apiTokensDataTenant;
|
|
218
224
|
|
|
219
225
|
try {
|
|
220
226
|
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
221
227
|
key: _interfaces.ApiStateKeys.DELETE_API_TOKEN,
|
|
222
228
|
value: true
|
|
223
229
|
}));
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
230
|
+
|
|
231
|
+
if (isAccessToken) {
|
|
232
|
+
yield (0, _effects.call)(_restApi.api.auth.deleteTenantAccessToken, {
|
|
233
|
+
id: payload
|
|
234
|
+
});
|
|
235
|
+
filteredApiTokensDataTenant = apiTokensDataTenant.filter(token => token.id !== payload);
|
|
236
|
+
} else {
|
|
237
|
+
yield (0, _effects.call)(_restApi.api.auth.deleteTenantApiToken, {
|
|
238
|
+
tokenId: payload
|
|
239
|
+
});
|
|
240
|
+
filteredApiTokensDataTenant = apiTokensDataTenant.filter(token => token.clientId !== payload);
|
|
241
|
+
}
|
|
242
|
+
|
|
227
243
|
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
228
|
-
apiTokensDataTenant:
|
|
244
|
+
apiTokensDataTenant: filteredApiTokensDataTenant,
|
|
229
245
|
deleteTokenDialog: {
|
|
230
246
|
open: false,
|
|
231
|
-
|
|
247
|
+
id: payload
|
|
232
248
|
}
|
|
233
249
|
}));
|
|
234
250
|
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
@@ -296,11 +312,15 @@ function* loadUserApiTokens({
|
|
|
296
312
|
}
|
|
297
313
|
|
|
298
314
|
try {
|
|
299
|
-
var _payload$callback3;
|
|
315
|
+
var _call, _call2, _accessTokensData$acc, _payload$callback3;
|
|
300
316
|
|
|
301
|
-
const apiTokensData = yield (0, _effects.call)(_restApi.api.auth.getUserApiTokensData);
|
|
317
|
+
const apiTokensData = yield (_call = (0, _effects.call)(_restApi.api.auth.getUserApiTokensData)) != null ? _call : [];
|
|
318
|
+
const accessTokensData = yield (_call2 = (0, _effects.call)(_restApi.api.auth.getUserAccessTokensData)) != null ? _call2 : [];
|
|
319
|
+
const accessTokens = (_accessTokensData$acc = accessTokensData.accessTokens) != null ? _accessTokensData$acc : [];
|
|
320
|
+
const allTokens = accessTokens.concat(apiTokensData);
|
|
321
|
+
const sortedTokensByDate = allTokens.sort((date1, date2) => new Date(date2.createdAt) - new Date(date1.createdAt));
|
|
302
322
|
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
303
|
-
apiTokensDataUser:
|
|
323
|
+
apiTokensDataUser: sortedTokensByDate != null ? sortedTokensByDate : []
|
|
304
324
|
}));
|
|
305
325
|
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
306
326
|
key: _interfaces.ApiStateKeys.LOAD_API_TOKENS,
|
|
@@ -333,11 +353,15 @@ function* loadTenantApiTokens({
|
|
|
333
353
|
}
|
|
334
354
|
|
|
335
355
|
try {
|
|
336
|
-
var _payload$callback5;
|
|
356
|
+
var _call3, _call4, _accessTokensData$acc2, _payload$callback5;
|
|
337
357
|
|
|
338
|
-
const apiTokensData = yield (0, _effects.call)(_restApi.api.auth.getTenantApiTokensData);
|
|
358
|
+
const apiTokensData = yield (_call3 = (0, _effects.call)(_restApi.api.auth.getTenantApiTokensData)) != null ? _call3 : [];
|
|
359
|
+
const accessTokensData = yield (_call4 = (0, _effects.call)(_restApi.api.auth.getTenantAccessTokensData)) != null ? _call4 : [];
|
|
360
|
+
const accessTokens = (_accessTokensData$acc2 = accessTokensData == null ? void 0 : accessTokensData.accessTokens) != null ? _accessTokensData$acc2 : [];
|
|
361
|
+
const allTokens = accessTokens.concat(apiTokensData);
|
|
362
|
+
const sortedTokensByDate = allTokens.sort((date1, date2) => new Date(date2.createdAt) - new Date(date1.createdAt));
|
|
339
363
|
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
340
|
-
apiTokensDataTenant:
|
|
364
|
+
apiTokensDataTenant: sortedTokensByDate != null ? sortedTokensByDate : []
|
|
341
365
|
}));
|
|
342
366
|
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
343
367
|
key: _interfaces.ApiStateKeys.LOAD_API_TOKENS,
|
|
@@ -363,7 +387,6 @@ function* apiTokensSaga() {
|
|
|
363
387
|
yield (0, _effects.takeLeading)(_reducer.actions.loadApiTokens, loadApiTokens);
|
|
364
388
|
yield (0, _effects.takeLeading)(_reducer.actions.loadUserApiTokens, loadUserApiTokens);
|
|
365
389
|
yield (0, _effects.takeLeading)(_reducer.actions.loadTenantApiTokens, loadTenantApiTokens);
|
|
366
|
-
yield (0, _effects.takeLeading)(_reducer.actions.initApiTokensData, loadApiTokensData);
|
|
367
390
|
yield (0, _effects.takeEvery)(_reducer.actions.addUserApiToken, addUserApiToken);
|
|
368
391
|
yield (0, _effects.takeEvery)(_reducer.actions.addTenantApiToken, addTenantApiToken);
|
|
369
392
|
yield (0, _effects.takeLatest)(_reducer.actions.deleteTenantApiToken, deleteTenantApiToken);
|
|
@@ -374,40 +397,6 @@ function* apiTokensSaga() {
|
|
|
374
397
|
*********************************/
|
|
375
398
|
|
|
376
399
|
|
|
377
|
-
function* loadApiTokensDataMock({
|
|
378
|
-
payload: apiTokenType
|
|
379
|
-
}) {
|
|
380
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
381
|
-
apiTokenType
|
|
382
|
-
}));
|
|
383
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
384
|
-
key: _interfaces.ApiStateKeys.LOAD_API_TOKENS,
|
|
385
|
-
value: true
|
|
386
|
-
}));
|
|
387
|
-
|
|
388
|
-
if (apiTokenType === 'user') {
|
|
389
|
-
yield (0, _effects.delay)(200);
|
|
390
|
-
const apiTokensData = [_dummy.apiTokensDataDemo];
|
|
391
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
392
|
-
apiTokensDataUser: apiTokensData != null ? apiTokensData : []
|
|
393
|
-
}));
|
|
394
|
-
} else {
|
|
395
|
-
var _ref;
|
|
396
|
-
|
|
397
|
-
yield (0, _effects.delay)(200);
|
|
398
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensState({
|
|
399
|
-
apiTokensDataTenant: (_ref = [_dummy.apiTokensDataTenantDemo]) != null ? _ref : [],
|
|
400
|
-
roles: _dummy.rolesDemo != null ? _dummy.rolesDemo : [],
|
|
401
|
-
permissions: _dummy.permissionsDemo != null ? _dummy.permissionsDemo : []
|
|
402
|
-
}));
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
yield (0, _effects.put)(_reducer.actions.setApiTokensLoader({
|
|
406
|
-
key: _interfaces.ApiStateKeys.LOAD_API_TOKENS,
|
|
407
|
-
value: false
|
|
408
|
-
}));
|
|
409
|
-
}
|
|
410
|
-
|
|
411
400
|
function* addTenantApiTokenMock({
|
|
412
401
|
payload
|
|
413
402
|
}) {
|
|
@@ -548,7 +537,6 @@ function* apiTokensSagaMock() {
|
|
|
548
537
|
yield (0, _effects.takeLeading)(_reducer.actions.loadApiTokens, loadApiTokensMock);
|
|
549
538
|
yield (0, _effects.takeLeading)(_reducer.actions.loadUserApiTokens, loadUserApiTokensMock);
|
|
550
539
|
yield (0, _effects.takeLeading)(_reducer.actions.loadTenantApiTokens, loadTenantApiTokensMock);
|
|
551
|
-
yield (0, _effects.takeLeading)(_reducer.actions.initApiTokensData, loadApiTokensDataMock);
|
|
552
540
|
yield (0, _effects.takeEvery)(_reducer.actions.addTenantApiToken, addTenantApiTokenMock);
|
|
553
541
|
yield (0, _effects.takeLatest)(_reducer.actions.deleteTenantApiToken, deleteTenantApiTokenMock);
|
|
554
542
|
}
|
package/node/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontegg/redux-store",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.67.0",
|
|
4
4
|
"main": "./node/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Frontegg LTD",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@babel/runtime": "^7.18.6",
|
|
9
|
-
"@frontegg/rest-api": "3.0.
|
|
9
|
+
"@frontegg/rest-api": "3.0.71",
|
|
10
10
|
"@reduxjs/toolkit": "^1.8.5",
|
|
11
11
|
"redux-saga": "^1.2.1",
|
|
12
12
|
"uuid": "^8.3.2"
|