@frontegg/redux-store 6.63.0 → 6.64.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/RolesState/saga.d.ts +1 -0
- package/auth/RolesState/saga.js +31 -0
- package/auth/dummy.d.ts +1 -0
- package/auth/dummy.js +33 -10
- package/auth/saga.js +2 -3
- package/index.js +1 -1
- package/node/auth/RolesState/saga.js +34 -0
- package/node/auth/dummy.js +35 -11
- package/node/auth/saga.js +1 -2
- package/node/index.js +1 -1
- package/package.json +2 -2
package/auth/RolesState/saga.js
CHANGED
|
@@ -7,6 +7,7 @@ const _excluded = ["callback"],
|
|
|
7
7
|
import { all, call, put, takeEvery, takeLeading } from 'redux-saga/effects';
|
|
8
8
|
import { api } from '@frontegg/rest-api';
|
|
9
9
|
import { actions } from '../reducer';
|
|
10
|
+
import { rolesAdminViewerDemo } from '../dummy';
|
|
10
11
|
|
|
11
12
|
function* loadRolesAndPermissions({
|
|
12
13
|
payload
|
|
@@ -194,4 +195,34 @@ export function* rolesSagas() {
|
|
|
194
195
|
yield takeEvery(actions.updateRole, updateRole);
|
|
195
196
|
yield takeEvery(actions.attachPermissionsToRole, attachPermissionsToRole);
|
|
196
197
|
yield takeEvery(actions.attachPermissionToRoles, attachPermissionToRoles);
|
|
198
|
+
}
|
|
199
|
+
/*********************************
|
|
200
|
+
* Preview Sagas
|
|
201
|
+
*********************************/
|
|
202
|
+
|
|
203
|
+
function* loadRolesAndPermissionsMock({
|
|
204
|
+
payload
|
|
205
|
+
}) {
|
|
206
|
+
var _payload$silentLoadin2;
|
|
207
|
+
|
|
208
|
+
yield put(actions.setRolesState({
|
|
209
|
+
loading: !((_payload$silentLoadin2 = payload == null ? void 0 : payload.silentLoading) != null ? _payload$silentLoadin2 : false),
|
|
210
|
+
error: null
|
|
211
|
+
}));
|
|
212
|
+
|
|
213
|
+
try {
|
|
214
|
+
yield put(actions.setRolesState({
|
|
215
|
+
roles: rolesAdminViewerDemo,
|
|
216
|
+
loading: false
|
|
217
|
+
}));
|
|
218
|
+
} catch (e) {
|
|
219
|
+
yield put(actions.setRolesState({
|
|
220
|
+
error: e.message,
|
|
221
|
+
loading: false
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export function* rolesSagasMock() {
|
|
227
|
+
yield takeLeading(actions.loadRolesAndPermissions, loadRolesAndPermissionsMock);
|
|
197
228
|
}
|
package/auth/dummy.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { ProfileState } from './ProfileState/interfaces';
|
|
|
5
5
|
import { SSOState } from './SSOState/interfaces';
|
|
6
6
|
export declare const apiTokensDataDemo: IApiTokensData;
|
|
7
7
|
export declare const apiTokensDataTenantDemo: ITenantApiTokensData;
|
|
8
|
+
export declare const rolesAdminViewerDemo: IRole[];
|
|
8
9
|
export declare const roleDemo: IRole[];
|
|
9
10
|
export declare const rolePermissionDemo: IRolePermission[];
|
|
10
11
|
export declare const userProfileDemo: IUserProfile;
|
package/auth/dummy.js
CHANGED
|
@@ -11,6 +11,29 @@ export const apiTokensDataTenantDemo = _extends({}, apiTokensDataDemo, {
|
|
|
11
11
|
tenantId: 'my-tenant-id',
|
|
12
12
|
createdByUserId: 'createdByUserId'
|
|
13
13
|
});
|
|
14
|
+
export const rolesAdminViewerDemo = [{
|
|
15
|
+
id: 'a040dcf6-b907-4e83-9970-6bd23c88fd40',
|
|
16
|
+
key: 'ReadOnly',
|
|
17
|
+
name: 'Read Only',
|
|
18
|
+
description: null,
|
|
19
|
+
isDefault: false,
|
|
20
|
+
createdAt: new Date(),
|
|
21
|
+
updatedAt: new Date(),
|
|
22
|
+
permissions: ['5b7dafe6-12a1-402b-9082-8eb2777cfcd8', 'da1d1990-c99c-4086-b845-2d465de3227b'],
|
|
23
|
+
tenantId: 'tenantId',
|
|
24
|
+
vendorId: 'vendorId'
|
|
25
|
+
}, {
|
|
26
|
+
id: 'b43b2c4b-e056-4eec-8c55-d200a475bbc0',
|
|
27
|
+
key: 'Admin',
|
|
28
|
+
name: 'Admin',
|
|
29
|
+
description: null,
|
|
30
|
+
isDefault: true,
|
|
31
|
+
createdAt: new Date(),
|
|
32
|
+
updatedAt: new Date(),
|
|
33
|
+
permissions: ['502b112e-50fd-4e8d-875e-3abda628d94a', 'da015508-7cb1-4dcd-9436-d0518a2ecd21'],
|
|
34
|
+
tenantId: 'tenantId',
|
|
35
|
+
vendorId: 'vendorId'
|
|
36
|
+
}];
|
|
14
37
|
export const roleDemo = [{
|
|
15
38
|
id: 'roleId',
|
|
16
39
|
key: 'admin',
|
|
@@ -191,7 +214,7 @@ export const userTeamDemo2 = {
|
|
|
191
214
|
customData: undefined,
|
|
192
215
|
lastLogin: undefined,
|
|
193
216
|
mfaEnabled: undefined,
|
|
194
|
-
roles: []
|
|
217
|
+
roles: [rolesAdminViewerDemo[0]]
|
|
195
218
|
}; // TODO add verified to ITeamUser
|
|
196
219
|
|
|
197
220
|
export const userTeamDemo = {
|
|
@@ -210,7 +233,7 @@ export const userTeamDemo = {
|
|
|
210
233
|
customData: undefined,
|
|
211
234
|
lastLogin: new Date(2022, 5, 25).toISOString(),
|
|
212
235
|
mfaEnabled: undefined,
|
|
213
|
-
roles: []
|
|
236
|
+
roles: [rolesAdminViewerDemo[1]]
|
|
214
237
|
};
|
|
215
238
|
export const userSubTenantDemo = {
|
|
216
239
|
metadata: '',
|
|
@@ -247,25 +270,25 @@ export const tenantsDemo = [{
|
|
|
247
270
|
}];
|
|
248
271
|
export const sessionsMock = [{
|
|
249
272
|
id: `laptop`,
|
|
250
|
-
userAgent:
|
|
273
|
+
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15',
|
|
251
274
|
createdAt: new Date(),
|
|
252
|
-
ipAddress:
|
|
275
|
+
ipAddress: '190.194.88.251',
|
|
253
276
|
current: true
|
|
254
277
|
}, {
|
|
255
278
|
id: `iphone`,
|
|
256
|
-
userAgent:
|
|
279
|
+
userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Mobile/15E148 Safari/604.1',
|
|
257
280
|
createdAt: new Date(Date.now() - 10000),
|
|
258
|
-
ipAddress:
|
|
281
|
+
ipAddress: '191.49.203.21'
|
|
259
282
|
}, {
|
|
260
283
|
id: `tablet`,
|
|
261
|
-
userAgent:
|
|
284
|
+
userAgent: 'Mozilla/5.0 (Linux; Android 6.0.1; SGP771 Build/32.2.A.0.253; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36',
|
|
262
285
|
createdAt: new Date(Date.now() - 30000),
|
|
263
|
-
ipAddress:
|
|
286
|
+
ipAddress: '130.19.196.136'
|
|
264
287
|
}, {
|
|
265
288
|
id: `anotherlaptop`,
|
|
266
|
-
userAgent:
|
|
289
|
+
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15',
|
|
267
290
|
createdAt: new Date(Date.now() - 1002232300),
|
|
268
|
-
ipAddress:
|
|
291
|
+
ipAddress: '2.228.163.92'
|
|
269
292
|
}];
|
|
270
293
|
export const sessionsConfigDummies = {
|
|
271
294
|
sessionConcurrentConfiguration: {
|
package/auth/saga.js
CHANGED
|
@@ -14,7 +14,7 @@ import { apiTokensSaga, apiTokensSagaMock } from './ApiTokensState/saga';
|
|
|
14
14
|
import { securityPolicySagas, securityPolicySagasMock } from './SecurityPolicyState/saga';
|
|
15
15
|
import { accountSettingsSaga, accountSettingsSagaMock } from './AccountSettingsState/saga';
|
|
16
16
|
import { tenantsSagas, tenantsSagasMock } from './TenantsState/saga';
|
|
17
|
-
import { rolesSagas } from './RolesState/saga';
|
|
17
|
+
import { rolesSagas, rolesSagasMock } from './RolesState/saga';
|
|
18
18
|
import { resetPhoneNumberSagas } from './ResetPhoneNumberState/saga';
|
|
19
19
|
import { sessionsSaga, sessionsSagaMock } from './SessionsState/saga';
|
|
20
20
|
import { sessionsPolicySaga, sessionsPolicySagaMock } from './SessionsPolicyState/saga';
|
|
@@ -29,6 +29,5 @@ export function* mockSagas() {
|
|
|
29
29
|
// call(forgotPasswordSagas),
|
|
30
30
|
// call(socialLoginsSaga),
|
|
31
31
|
// call(signUpSaga),
|
|
32
|
-
call(ssoSagasMock), call(profileSagasMock), call(mfaSagasMock), call(teamSagasMock), call(apiTokensSagaMock), call(securityPolicySagasMock), call(sessionsSagaMock), call(accountSettingsSagaMock), call(tenantsSagasMock), call(sessionsPolicySagaMock), call(restrictionsSagaMock)
|
|
33
|
-
]);
|
|
32
|
+
call(ssoSagasMock), call(profileSagasMock), call(mfaSagasMock), call(teamSagasMock), call(apiTokensSagaMock), call(securityPolicySagasMock), call(sessionsSagaMock), call(accountSettingsSagaMock), call(tenantsSagasMock), call(sessionsPolicySagaMock), call(restrictionsSagaMock), call(rolesSagasMock)]);
|
|
34
33
|
}
|
package/index.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.rolesSagas = rolesSagas;
|
|
9
|
+
exports.rolesSagasMock = rolesSagasMock;
|
|
9
10
|
|
|
10
11
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
12
|
|
|
@@ -15,6 +16,8 @@ var _restApi = require("@frontegg/rest-api");
|
|
|
15
16
|
|
|
16
17
|
var _reducer = require("../reducer");
|
|
17
18
|
|
|
19
|
+
var _dummy = require("../dummy");
|
|
20
|
+
|
|
18
21
|
const _excluded = ["callback"],
|
|
19
22
|
_excluded2 = ["callback"],
|
|
20
23
|
_excluded3 = ["callback"],
|
|
@@ -202,4 +205,35 @@ function* rolesSagas() {
|
|
|
202
205
|
yield (0, _effects.takeEvery)(_reducer.actions.updateRole, updateRole);
|
|
203
206
|
yield (0, _effects.takeEvery)(_reducer.actions.attachPermissionsToRole, attachPermissionsToRole);
|
|
204
207
|
yield (0, _effects.takeEvery)(_reducer.actions.attachPermissionToRoles, attachPermissionToRoles);
|
|
208
|
+
}
|
|
209
|
+
/*********************************
|
|
210
|
+
* Preview Sagas
|
|
211
|
+
*********************************/
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
function* loadRolesAndPermissionsMock({
|
|
215
|
+
payload
|
|
216
|
+
}) {
|
|
217
|
+
var _payload$silentLoadin2;
|
|
218
|
+
|
|
219
|
+
yield (0, _effects.put)(_reducer.actions.setRolesState({
|
|
220
|
+
loading: !((_payload$silentLoadin2 = payload == null ? void 0 : payload.silentLoading) != null ? _payload$silentLoadin2 : false),
|
|
221
|
+
error: null
|
|
222
|
+
}));
|
|
223
|
+
|
|
224
|
+
try {
|
|
225
|
+
yield (0, _effects.put)(_reducer.actions.setRolesState({
|
|
226
|
+
roles: _dummy.rolesAdminViewerDemo,
|
|
227
|
+
loading: false
|
|
228
|
+
}));
|
|
229
|
+
} catch (e) {
|
|
230
|
+
yield (0, _effects.put)(_reducer.actions.setRolesState({
|
|
231
|
+
error: e.message,
|
|
232
|
+
loading: false
|
|
233
|
+
}));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function* rolesSagasMock() {
|
|
238
|
+
yield (0, _effects.takeLeading)(_reducer.actions.loadRolesAndPermissions, loadRolesAndPermissionsMock);
|
|
205
239
|
}
|
package/node/auth/dummy.js
CHANGED
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.usersDemo = exports.userTeamDemo2 = exports.userTeamDemo = exports.userSubTenantDemo = exports.userProfileDemo = exports.userDemo = exports.tenantsDemo = exports.ssoStateDemo = exports.sessionsMock = exports.sessionsConfigDummies = exports.samlMetadataDemo = exports.samlConfigurationDemo = exports.rolesDemo = exports.rolePermissionDemo = exports.roleDemo = exports.publicSecurityPolicy = exports.profileStateDemo = exports.policyPasswordHistoryDemo = exports.policyMfaDemo = exports.policyLockoutDemo = exports.policyDemo = exports.permissionsDemo = exports.dummyIps = exports.dummyIpConfig = exports.apiTokensDataTenantDemo = exports.apiTokensDataDemo = exports.allUsersDemo = void 0;
|
|
8
|
+
exports.usersDemo = exports.userTeamDemo2 = exports.userTeamDemo = exports.userSubTenantDemo = exports.userProfileDemo = exports.userDemo = exports.tenantsDemo = exports.ssoStateDemo = exports.sessionsMock = exports.sessionsConfigDummies = exports.samlMetadataDemo = exports.samlConfigurationDemo = exports.rolesDemo = exports.rolesAdminViewerDemo = exports.rolePermissionDemo = exports.roleDemo = exports.publicSecurityPolicy = exports.profileStateDemo = exports.policyPasswordHistoryDemo = exports.policyMfaDemo = exports.policyLockoutDemo = exports.policyDemo = exports.permissionsDemo = exports.dummyIps = exports.dummyIpConfig = exports.apiTokensDataTenantDemo = exports.apiTokensDataDemo = exports.allUsersDemo = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
@@ -24,6 +24,30 @@ const apiTokensDataTenantDemo = (0, _extends2.default)({}, apiTokensDataDemo, {
|
|
|
24
24
|
createdByUserId: 'createdByUserId'
|
|
25
25
|
});
|
|
26
26
|
exports.apiTokensDataTenantDemo = apiTokensDataTenantDemo;
|
|
27
|
+
const rolesAdminViewerDemo = [{
|
|
28
|
+
id: 'a040dcf6-b907-4e83-9970-6bd23c88fd40',
|
|
29
|
+
key: 'ReadOnly',
|
|
30
|
+
name: 'Read Only',
|
|
31
|
+
description: null,
|
|
32
|
+
isDefault: false,
|
|
33
|
+
createdAt: new Date(),
|
|
34
|
+
updatedAt: new Date(),
|
|
35
|
+
permissions: ['5b7dafe6-12a1-402b-9082-8eb2777cfcd8', 'da1d1990-c99c-4086-b845-2d465de3227b'],
|
|
36
|
+
tenantId: 'tenantId',
|
|
37
|
+
vendorId: 'vendorId'
|
|
38
|
+
}, {
|
|
39
|
+
id: 'b43b2c4b-e056-4eec-8c55-d200a475bbc0',
|
|
40
|
+
key: 'Admin',
|
|
41
|
+
name: 'Admin',
|
|
42
|
+
description: null,
|
|
43
|
+
isDefault: true,
|
|
44
|
+
createdAt: new Date(),
|
|
45
|
+
updatedAt: new Date(),
|
|
46
|
+
permissions: ['502b112e-50fd-4e8d-875e-3abda628d94a', 'da015508-7cb1-4dcd-9436-d0518a2ecd21'],
|
|
47
|
+
tenantId: 'tenantId',
|
|
48
|
+
vendorId: 'vendorId'
|
|
49
|
+
}];
|
|
50
|
+
exports.rolesAdminViewerDemo = rolesAdminViewerDemo;
|
|
27
51
|
const roleDemo = [{
|
|
28
52
|
id: 'roleId',
|
|
29
53
|
key: 'admin',
|
|
@@ -219,7 +243,7 @@ const userTeamDemo2 = {
|
|
|
219
243
|
customData: undefined,
|
|
220
244
|
lastLogin: undefined,
|
|
221
245
|
mfaEnabled: undefined,
|
|
222
|
-
roles: []
|
|
246
|
+
roles: [rolesAdminViewerDemo[0]]
|
|
223
247
|
}; // TODO add verified to ITeamUser
|
|
224
248
|
|
|
225
249
|
exports.userTeamDemo2 = userTeamDemo2;
|
|
@@ -239,7 +263,7 @@ const userTeamDemo = {
|
|
|
239
263
|
customData: undefined,
|
|
240
264
|
lastLogin: new Date(2022, 5, 25).toISOString(),
|
|
241
265
|
mfaEnabled: undefined,
|
|
242
|
-
roles: []
|
|
266
|
+
roles: [rolesAdminViewerDemo[1]]
|
|
243
267
|
};
|
|
244
268
|
exports.userTeamDemo = userTeamDemo;
|
|
245
269
|
const userSubTenantDemo = {
|
|
@@ -281,25 +305,25 @@ const tenantsDemo = [{
|
|
|
281
305
|
exports.tenantsDemo = tenantsDemo;
|
|
282
306
|
const sessionsMock = [{
|
|
283
307
|
id: `laptop`,
|
|
284
|
-
userAgent:
|
|
308
|
+
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15',
|
|
285
309
|
createdAt: new Date(),
|
|
286
|
-
ipAddress:
|
|
310
|
+
ipAddress: '190.194.88.251',
|
|
287
311
|
current: true
|
|
288
312
|
}, {
|
|
289
313
|
id: `iphone`,
|
|
290
|
-
userAgent:
|
|
314
|
+
userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Mobile/15E148 Safari/604.1',
|
|
291
315
|
createdAt: new Date(Date.now() - 10000),
|
|
292
|
-
ipAddress:
|
|
316
|
+
ipAddress: '191.49.203.21'
|
|
293
317
|
}, {
|
|
294
318
|
id: `tablet`,
|
|
295
|
-
userAgent:
|
|
319
|
+
userAgent: 'Mozilla/5.0 (Linux; Android 6.0.1; SGP771 Build/32.2.A.0.253; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36',
|
|
296
320
|
createdAt: new Date(Date.now() - 30000),
|
|
297
|
-
ipAddress:
|
|
321
|
+
ipAddress: '130.19.196.136'
|
|
298
322
|
}, {
|
|
299
323
|
id: `anotherlaptop`,
|
|
300
|
-
userAgent:
|
|
324
|
+
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15',
|
|
301
325
|
createdAt: new Date(Date.now() - 1002232300),
|
|
302
|
-
ipAddress:
|
|
326
|
+
ipAddress: '2.228.163.92'
|
|
303
327
|
}];
|
|
304
328
|
exports.sessionsMock = sessionsMock;
|
|
305
329
|
const sessionsConfigDummies = {
|
package/node/auth/saga.js
CHANGED
|
@@ -60,6 +60,5 @@ function* mockSagas() {
|
|
|
60
60
|
// call(forgotPasswordSagas),
|
|
61
61
|
// call(socialLoginsSaga),
|
|
62
62
|
// call(signUpSaga),
|
|
63
|
-
(0, _effects.call)(_saga.ssoSagasMock), (0, _effects.call)(_saga3.profileSagasMock), (0, _effects.call)(_saga4.mfaSagasMock), (0, _effects.call)(_saga9.teamSagasMock), (0, _effects.call)(_saga12.apiTokensSagaMock), (0, _effects.call)(_saga13.securityPolicySagasMock), (0, _effects.call)(_saga18.sessionsSagaMock), (0, _effects.call)(_saga14.accountSettingsSagaMock), (0, _effects.call)(_saga15.tenantsSagasMock), (0, _effects.call)(_saga19.sessionsPolicySagaMock), (0, _effects.call)(_saga20.restrictionsSagaMock)
|
|
64
|
-
]);
|
|
63
|
+
(0, _effects.call)(_saga.ssoSagasMock), (0, _effects.call)(_saga3.profileSagasMock), (0, _effects.call)(_saga4.mfaSagasMock), (0, _effects.call)(_saga9.teamSagasMock), (0, _effects.call)(_saga12.apiTokensSagaMock), (0, _effects.call)(_saga13.securityPolicySagasMock), (0, _effects.call)(_saga18.sessionsSagaMock), (0, _effects.call)(_saga14.accountSettingsSagaMock), (0, _effects.call)(_saga15.tenantsSagasMock), (0, _effects.call)(_saga19.sessionsPolicySagaMock), (0, _effects.call)(_saga20.restrictionsSagaMock), (0, _effects.call)(_saga16.rolesSagasMock)]);
|
|
65
64
|
}
|
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.64.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.63",
|
|
10
10
|
"@reduxjs/toolkit": "^1.8.5",
|
|
11
11
|
"redux-saga": "^1.2.1",
|
|
12
12
|
"uuid": "^8.3.2"
|