@frontegg/redux-store 7.32.0 → 7.33.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.
Files changed (119) hide show
  1. package/audits/AuditLogsState/actions.d.ts +2 -2
  2. package/audits/AuditLogsState/actions.js +7 -4
  3. package/audits/AuditsMetadataState/actions.d.ts +2 -2
  4. package/audits/AuditsMetadataState/actions.js +3 -3
  5. package/audits/index.d.ts +2 -2
  6. package/auth/AccountSettingsState/actions.d.ts +2 -2
  7. package/auth/AccountSettingsState/actions.js +2 -2
  8. package/auth/ApiTokensState/actions.d.ts +3 -3
  9. package/auth/ApiTokensState/actions.js +3 -3
  10. package/auth/ApplicationsState/actions.d.ts +7 -7
  11. package/auth/ApplicationsState/actions.js +24 -19
  12. package/auth/CustomLoginState/actions.d.ts +2 -2
  13. package/auth/CustomLoginState/actions.js +12 -6
  14. package/auth/GroupsState/actions.d.ts +3 -3
  15. package/auth/GroupsState/actions.js +6 -6
  16. package/auth/LoginState/actions/index.d.ts +1 -1
  17. package/auth/LoginState/actions/index.js +45 -26
  18. package/auth/LoginState/actions/mfaRequiredState.actions.d.ts +2 -2
  19. package/auth/LoginState/actions/mfaRequiredState.actions.js +13 -5
  20. package/auth/MfaState/actions.d.ts +2 -2
  21. package/auth/MfaState/actions.js +3 -3
  22. package/auth/ProvisioningState/actions.d.ts +3 -3
  23. package/auth/ProvisioningState/actions.js +7 -6
  24. package/auth/RolesState/actions.d.ts +2 -2
  25. package/auth/RolesState/actions.js +3 -2
  26. package/auth/SSOState/actions/actions.v2.d.ts +2 -2
  27. package/auth/SSOState/actions/actions.v2.js +8 -8
  28. package/auth/SSOState/actions/index.d.ts +1 -1
  29. package/auth/Security/RestrictionsState/actions.js +3 -3
  30. package/auth/Security/SecurityCenterState/actions.d.ts +3 -3
  31. package/auth/Security/SecurityCenterState/actions.js +5 -5
  32. package/auth/Security/SecurityPolicyState/actions.d.ts +14 -14
  33. package/auth/Security/SecurityPolicyState/actions.js +46 -30
  34. package/auth/SessionsState/actions.d.ts +2 -2
  35. package/auth/SessionsState/actions.js +3 -3
  36. package/auth/SignUpState/actions.d.ts +3 -2
  37. package/auth/SignUpState/actions.js +10 -5
  38. package/auth/SignUpState/interfaces.d.ts +1 -0
  39. package/auth/SmsState/actions.d.ts +2 -2
  40. package/auth/SmsState/actions.js +3 -3
  41. package/auth/SocialLoginState/actions.d.ts +2 -2
  42. package/auth/SocialLoginState/actions.js +6 -6
  43. package/auth/TeamState/actions/index.d.ts +4 -4
  44. package/auth/TeamState/actions/invitation-link.actions.d.ts +2 -2
  45. package/auth/TeamState/actions/invitation-link.actions.js +7 -6
  46. package/auth/TeamState/actions/users.actions.d.ts +4 -4
  47. package/auth/TeamState/actions/users.actions.js +18 -13
  48. package/auth/TenantsState/actions.d.ts +2 -2
  49. package/auth/TenantsState/actions.js +1 -1
  50. package/auth/index.d.ts +2 -1
  51. package/auth/index.js +15 -1
  52. package/auth/interfaces.d.ts +19 -0
  53. package/auth/interfaces.js +10 -0
  54. package/connectivity/actions.js +8 -7
  55. package/constants.d.ts +3 -0
  56. package/constants.js +3 -0
  57. package/helpers/common.d.ts +5 -2
  58. package/helpers/common.js +23 -2
  59. package/index.d.ts +1 -0
  60. package/index.js +2 -1
  61. package/interfaces.d.ts +8 -0
  62. package/mocks/audits-mocks/auditLogsActions.mocks.d.ts +1 -1
  63. package/mocks/audits-mocks/auditsMetadataActions.mocks.d.ts +1 -1
  64. package/mocks/audits-mocks/index.d.ts +2 -2
  65. package/mocks/auth-mocks/accountSettingsActions.mocks.d.ts +1 -1
  66. package/mocks/auth-mocks/apiTokensActions.mocks.d.ts +2 -2
  67. package/mocks/auth-mocks/applicationsActions.mocks.d.ts +6 -6
  68. package/mocks/auth-mocks/customLoginActions.mocks.d.ts +1 -1
  69. package/mocks/auth-mocks/groupsActions.mocks.d.ts +2 -2
  70. package/mocks/auth-mocks/index.js +14 -0
  71. package/mocks/auth-mocks/loginActions.mocks.d.ts +1 -1
  72. package/mocks/auth-mocks/mfaActions.mocks.d.ts +1 -1
  73. package/mocks/auth-mocks/provisioningActions.mocks.d.ts +2 -2
  74. package/mocks/auth-mocks/rolesActions.mocks.d.ts +1 -1
  75. package/mocks/auth-mocks/security/securityCenterActions.mocks.d.ts +2 -2
  76. package/mocks/auth-mocks/security/securityPolicyActions.mocks.d.ts +12 -12
  77. package/mocks/auth-mocks/sessionsActions.mocks.d.ts +1 -1
  78. package/mocks/auth-mocks/signUpActions.mocks.d.ts +1 -1
  79. package/mocks/auth-mocks/smsActions.mocks.d.ts +1 -1
  80. package/mocks/auth-mocks/socialLoginActions.mocks.d.ts +1 -1
  81. package/mocks/auth-mocks/ssoActions.mocks.d.ts +1 -1
  82. package/mocks/auth-mocks/teamActions.mocks.d.ts +4 -4
  83. package/mocks/auth-mocks/tenantsActions.mocks.d.ts +1 -1
  84. package/mocks/index.d.ts +4 -4
  85. package/mocks/vendor-mocks/index.d.ts +2 -2
  86. package/node/audits/AuditLogsState/actions.js +6 -3
  87. package/node/audits/AuditsMetadataState/actions.js +2 -2
  88. package/node/auth/AccountSettingsState/actions.js +1 -1
  89. package/node/auth/ApiTokensState/actions.js +2 -2
  90. package/node/auth/ApplicationsState/actions.js +23 -18
  91. package/node/auth/CustomLoginState/actions.js +11 -5
  92. package/node/auth/GroupsState/actions.js +5 -5
  93. package/node/auth/LoginState/actions/index.js +43 -24
  94. package/node/auth/LoginState/actions/mfaRequiredState.actions.js +13 -5
  95. package/node/auth/MfaState/actions.js +2 -2
  96. package/node/auth/ProvisioningState/actions.js +6 -5
  97. package/node/auth/RolesState/actions.js +2 -1
  98. package/node/auth/SSOState/actions/actions.v2.js +7 -7
  99. package/node/auth/Security/RestrictionsState/actions.js +2 -2
  100. package/node/auth/Security/SecurityCenterState/actions.js +4 -4
  101. package/node/auth/Security/SecurityPolicyState/actions.js +45 -29
  102. package/node/auth/SessionsState/actions.js +2 -2
  103. package/node/auth/SignUpState/actions.js +9 -4
  104. package/node/auth/SmsState/actions.js +2 -2
  105. package/node/auth/SocialLoginState/actions.js +5 -5
  106. package/node/auth/TeamState/actions/invitation-link.actions.js +6 -5
  107. package/node/auth/TeamState/actions/users.actions.js +17 -12
  108. package/node/auth/TenantsState/actions.js +1 -1
  109. package/node/auth/index.js +15 -1
  110. package/node/auth/interfaces.js +12 -1
  111. package/node/connectivity/actions.js +7 -6
  112. package/node/constants.js +8 -3
  113. package/node/helpers/common.js +28 -4
  114. package/node/index.js +1 -1
  115. package/node/mocks/auth-mocks/index.js +14 -4
  116. package/node/vendor/actions.js +2 -2
  117. package/package.json +2 -2
  118. package/vendor/actions.d.ts +3 -3
  119. package/vendor/actions.js +3 -3
@@ -1,9 +1,9 @@
1
- import { FronteggState, RestApi, SharedActions } from '../../interfaces';
1
+ import { FronteggState, RestApi, SharedActions, WithRetryConfig } from '../../interfaces';
2
2
  import { AuditLogsState, LoadAuditLogsPayload } from './interfaces';
3
3
  declare const _default: (store: FronteggState, api: RestApi, sharedActions: SharedActions) => {
4
4
  setAuditLogsState: (state: Partial<AuditLogsState>) => void;
5
5
  resetAuditLogsState: () => void;
6
6
  exportAuditsCsv: () => Promise<void>;
7
- loadAuditLogs: (payload: LoadAuditLogsPayload) => Promise<void>;
7
+ loadAuditLogs: (payload: WithRetryConfig<LoadAuditLogsPayload>) => Promise<void>;
8
8
  };
9
9
  export default _default;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { initialState } from './state';
3
- import { deepResetState, errorHandler } from '../../helpers';
3
+ import { deepResetState, errorHandler, retryIfNeeded } from '../../helpers';
4
4
  export default ((store, api, sharedActions) => {
5
5
  const actions = sharedActions;
6
6
  const setAuditLogsState = state => {
@@ -47,6 +47,7 @@ export default ((store, api, sharedActions) => {
47
47
  error: null
48
48
  });
49
49
  const state = store.auditLogs.auditLogsState;
50
+ const retryConfig = payload == null ? void 0 : payload.retryConfig;
50
51
  const {
51
52
  columns
52
53
  } = store.auditLogs.auditsMetadataState;
@@ -70,15 +71,17 @@ export default ((store, api, sharedActions) => {
70
71
  [n.id]: n.value
71
72
  }), {});
72
73
  if (!columns) {
73
- await actions.loadAuditsMetadata();
74
+ await actions.loadAuditsMetadata({
75
+ retryConfig
76
+ });
74
77
  }
75
78
  const {
76
79
  data,
77
80
  total
78
- } = await api.audits.getAudits(_extends({
81
+ } = await retryIfNeeded(() => api.audits.getAudits(_extends({
79
82
  offset: pageOffset,
80
83
  count: pageSize
81
- }, sortParams, filterParams));
84
+ }, sortParams, filterParams)), retryConfig);
82
85
  setAuditLogsState({
83
86
  loading: false,
84
87
  logs: data != null ? data : [],
@@ -1,8 +1,8 @@
1
- import { FronteggState, RestApi, SharedActions } from '../../interfaces';
1
+ import { FronteggState, RestApi, SharedActions, WithRetryConfig } from '../../interfaces';
2
2
  import { AuditsMetadataState } from './interfaces';
3
3
  declare const _default: (store: FronteggState, api: RestApi, sharedActions: SharedActions) => {
4
4
  setAuditsMetadataState: (state: Partial<AuditsMetadataState>) => void;
5
5
  resetAuditsMetadataState: () => void;
6
- loadAuditsMetadata: () => Promise<void>;
6
+ loadAuditsMetadata: (payload?: WithRetryConfig<{}>) => Promise<void>;
7
7
  };
8
8
  export default _default;
@@ -1,5 +1,5 @@
1
1
  import { initialState } from './state';
2
- import { deepResetState } from '../../helpers';
2
+ import { deepResetState, retryIfNeeded } from '../../helpers';
3
3
  export default ((store, api, sharedActions) => {
4
4
  const actions = sharedActions;
5
5
  const setAuditsMetadataState = state => {
@@ -8,7 +8,7 @@ export default ((store, api, sharedActions) => {
8
8
  const resetAuditsMetadataState = () => {
9
9
  deepResetState(store, ['auditLogs', 'auditsMetadataState'], initialState);
10
10
  };
11
- const loadAuditsMetadata = async () => {
11
+ const loadAuditsMetadata = async payload => {
12
12
  setAuditsMetadataState({
13
13
  loading: true,
14
14
  error: null
@@ -16,7 +16,7 @@ export default ((store, api, sharedActions) => {
16
16
  try {
17
17
  const {
18
18
  properties
19
- } = await api.metadata.getAuditsMetadata();
19
+ } = await retryIfNeeded(() => api.metadata.getAuditsMetadata(), payload == null ? void 0 : payload.retryConfig);
20
20
  setAuditsMetadataState({
21
21
  columns: properties,
22
22
  loading: false
package/audits/index.d.ts CHANGED
@@ -6,10 +6,10 @@ export declare const createAuditsState: (overrideState?: DeepPartial<AuditsState
6
6
  export declare const buildAuditsActions: (store: FronteggState, api: RestApi, sharedActions: SharedActions) => {
7
7
  setAuditsMetadataState: (state: Partial<import("./interfaces").AuditsMetadataState>) => void;
8
8
  resetAuditsMetadataState: () => void;
9
- loadAuditsMetadata: () => Promise<void>;
9
+ loadAuditsMetadata: (payload?: import("../interfaces").WithRetryConfig<{}>) => Promise<void>;
10
10
  setAuditLogsState: (state: Partial<import("./interfaces").AuditLogsState>) => void;
11
11
  resetAuditLogsState: () => void;
12
12
  exportAuditsCsv: () => Promise<void>;
13
- loadAuditLogs: (payload: import("./interfaces").LoadAuditLogsPayload) => Promise<void>;
13
+ loadAuditLogs: (payload: import("../interfaces").WithRetryConfig<import("./interfaces").LoadAuditLogsPayload>) => Promise<void>;
14
14
  };
15
15
  export type AuditsActions = ReturnType<typeof buildAuditLogsActions> & ReturnType<typeof buildAuditsMetadataActions>;
@@ -1,10 +1,10 @@
1
- import { FronteggState, RestApi, SharedActions, WithCallback, WithSilentLoad } from '../../interfaces';
1
+ import { FronteggState, RestApi, SharedActions, WithCallback, WithRetryConfig, WithSilentLoad } from '../../interfaces';
2
2
  import { ISettingsResponse, IUpdateSettings } from '@frontegg/rest-api';
3
3
  import { AccountSettingsState } from './interfaces';
4
4
  declare const _default: (store: FronteggState, api: RestApi, sharedActions: SharedActions) => {
5
5
  setAccountSettingsState: (state: Partial<AccountSettingsState>) => void;
6
6
  resetAccountSettingsState: () => void;
7
7
  saveAccountSettings: (payload: WithCallback<IUpdateSettings, ISettingsResponse>) => Promise<void>;
8
- loadAccountSettings: (payload?: WithCallback<WithSilentLoad>) => Promise<void>;
8
+ loadAccountSettings: (payload?: WithCallback<WithRetryConfig<WithSilentLoad>>) => Promise<void>;
9
9
  };
10
10
  export default _default;
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["activeTenant", "tenants"];
4
4
  import { initialState } from './state';
5
- import { errorHandler, deepResetState } from '../../helpers';
5
+ import { errorHandler, deepResetState, retryIfNeeded } from '../../helpers';
6
6
  export default ((store, api, sharedActions) => {
7
7
  const actions = sharedActions;
8
8
  const setAccountSettingsState = state => {
@@ -71,7 +71,7 @@ export default ((store, api, sharedActions) => {
71
71
  error: null
72
72
  });
73
73
  try {
74
- const body = await api.accountSettings.getSettings();
74
+ const body = await retryIfNeeded(() => api.accountSettings.getSettings(), payload == null ? void 0 : payload.retryConfig);
75
75
  setAccountSettingsState(_extends({}, body, {
76
76
  loading: false
77
77
  }));
@@ -1,4 +1,4 @@
1
- import { FronteggState, WithCallback, SharedActions, RestApi, WithSilentLoad } from '../../interfaces';
1
+ import { FronteggState, WithCallback, SharedActions, RestApi, WithSilentLoad, WithRetryConfig } from '../../interfaces';
2
2
  import { AddTenantApiTokenPayload, AddUserApiTokenPayload, ApiStateIndicator, ApiTokensState } from './interfaces';
3
3
  declare const _default: (store: FronteggState, api: RestApi, sharedActions: SharedActions) => {
4
4
  setApiTokensLoader: (payload: ApiStateIndicator) => void;
@@ -6,8 +6,8 @@ declare const _default: (store: FronteggState, api: RestApi, sharedActions: Shar
6
6
  setApiTokensState: (state: Partial<ApiTokensState>) => void;
7
7
  resetApiTokensState: () => void;
8
8
  loadApiTokens: (payload?: WithSilentLoad<WithCallback>) => Promise<void>;
9
- loadUserApiTokens: (payload?: WithSilentLoad<WithCallback>) => Promise<void>;
10
- loadTenantApiTokens: (payload?: WithSilentLoad<WithCallback>) => Promise<void>;
9
+ loadUserApiTokens: (payload?: WithRetryConfig<WithSilentLoad<WithCallback>>) => Promise<void>;
10
+ loadTenantApiTokens: (payload?: WithRetryConfig<WithSilentLoad<WithCallback>>) => Promise<void>;
11
11
  addTenantApiToken: (payload: AddTenantApiTokenPayload) => Promise<void>;
12
12
  addUserApiToken: (payload: AddUserApiTokenPayload) => Promise<void>;
13
13
  deleteUserApiToken: (payload: string) => Promise<void>;
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { initialState } from './state';
3
3
  import { MachineToMachineAuthStrategy } from '@frontegg/rest-api';
4
- import { errorHandler, delay, deepResetState } from '../../helpers';
4
+ import { errorHandler, delay, deepResetState, retryIfNeeded } from '../../helpers';
5
5
  import { ApiStateKeys } from './interfaces';
6
6
  export default ((store, api, sharedActions) => {
7
7
  const actions = sharedActions;
@@ -70,7 +70,7 @@ export default ((store, api, sharedActions) => {
70
70
  }
71
71
  try {
72
72
  var _accessTokensData$acc, _payload$callback3;
73
- const [apiTokensData = [], accessTokensData] = await Promise.all([api.auth.getUserApiTokensData(), api.auth.getUserAccessTokensData()]);
73
+ const [apiTokensData = [], accessTokensData] = await Promise.all([retryIfNeeded(() => api.auth.getUserApiTokensData(), payload == null ? void 0 : payload.retryConfig), retryIfNeeded(() => api.auth.getUserAccessTokensData(), payload == null ? void 0 : payload.retryConfig)]);
74
74
 
75
75
  // @ts-ignore TODO: fix createAt type to Date
76
76
  const accessTokens = (_accessTokensData$acc = accessTokensData.accessTokens) != null ? _accessTokensData$acc : [];
@@ -110,7 +110,7 @@ export default ((store, api, sharedActions) => {
110
110
  }
111
111
  try {
112
112
  var _accessTokensData$acc2, _payload$callback5;
113
- const [apiTokensData = [], accessTokensData] = await Promise.all([api.auth.getTenantApiTokensData(), api.auth.getTenantAccessTokensData()]);
113
+ const [apiTokensData = [], accessTokensData] = await Promise.all([retryIfNeeded(() => api.auth.getTenantApiTokensData(), payload == null ? void 0 : payload.retryConfig), retryIfNeeded(() => api.auth.getTenantAccessTokensData(), payload == null ? void 0 : payload.retryConfig)]);
114
114
 
115
115
  // @ts-ignore TODO: fix type in rest-api
116
116
  const accessTokens = (_accessTokensData$acc2 = accessTokensData == null ? void 0 : accessTokensData.accessTokens) != null ? _accessTokensData$acc2 : [];
@@ -1,14 +1,14 @@
1
- import { FronteggState, RestApi, SharedActions, WithCallback } from '../../interfaces';
1
+ import { FronteggState, RestApi, SharedActions, WithCallback, WithRetryConfig } from '../../interfaces';
2
2
  import { ApplicationsState, UserAppsAssignmentPayload } from './interfaces';
3
3
  import { IApplicationsResponse, ITeamUser } from '@frontegg/rest-api';
4
4
  declare const _default: (store: FronteggState, api: RestApi, sharedActions: SharedActions) => {
5
5
  setApplicationsState: (payload: Partial<ApplicationsState>) => void;
6
6
  resetApplicationsState: () => void;
7
- loadUserApplications: () => Promise<void>;
8
- loadAccountApplications: () => Promise<void>;
9
- loadMultipleUsersApplications: ({ userIds }: {
7
+ loadUserApplications: (payload?: WithRetryConfig<{}>) => Promise<void>;
8
+ loadAccountApplications: (payload?: WithRetryConfig<{}>) => Promise<void>;
9
+ loadMultipleUsersApplications: ({ userIds, retryConfig }: WithRetryConfig<{
10
10
  userIds: string[];
11
- }) => Promise<Record<string, IApplicationsResponse[]> | undefined>;
11
+ }>) => Promise<Record<string, IApplicationsResponse[]> | undefined>;
12
12
  assignUserToApps: (payload: WithCallback<UserAppsAssignmentPayload>) => Promise<void>;
13
13
  unassignUserFromApps: (payload: WithCallback<UserAppsAssignmentPayload>) => Promise<void>;
14
14
  assignNewUserToApps: ({ appIds, user }: {
@@ -17,9 +17,9 @@ declare const _default: (store: FronteggState, api: RestApi, sharedActions: Shar
17
17
  }) => Promise<((IApplicationsResponse & {
18
18
  userIds?: string[];
19
19
  }) | never[])[] | undefined>;
20
- mapUsersWithApplicationData: ({ shouldLoadApps, users, }: {
20
+ mapUsersWithApplicationData: ({ shouldLoadApps, users, retryConfig, }: WithRetryConfig<{
21
21
  shouldLoadApps?: boolean;
22
22
  users: ITeamUser[];
23
- }) => Promise<ITeamUser[]>;
23
+ }>) => Promise<ITeamUser[]>;
24
24
  };
25
25
  export default _default;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { ApplicationAccessType } from '@frontegg/rest-api';
3
- import { deepResetState, errorHandler } from '../../helpers';
3
+ import { deepResetState, errorHandler, retryIfNeeded } from '../../helpers';
4
4
  import { initialState } from './state';
5
5
  import { getFlattenAppIds } from './helpers';
6
6
  export default ((store, api, sharedActions) => {
@@ -11,7 +11,7 @@ export default ((store, api, sharedActions) => {
11
11
  const resetApplicationsState = () => {
12
12
  deepResetState(store, ['auth', 'applicationsState'], initialState);
13
13
  };
14
- const loadUserApplications = async () => {
14
+ const loadUserApplications = async payload => {
15
15
  setApplicationsState({
16
16
  loading: true,
17
17
  fetching: true
@@ -19,12 +19,13 @@ export default ((store, api, sharedActions) => {
19
19
  try {
20
20
  var _store$auth$user$id, _store$auth$user;
21
21
  const userId = (_store$auth$user$id = (_store$auth$user = store.auth.user) == null ? void 0 : _store$auth$user.id) != null ? _store$auth$user$id : '';
22
- const appIds = await api.applications.getUserApplicationsId({
22
+ const retryConfig = payload == null ? void 0 : payload.retryConfig;
23
+ const appIds = await retryIfNeeded(() => api.applications.getUserApplicationsId({
23
24
  userId
24
- });
25
- const userApplications = await api.applications.getApplicationsData({
25
+ }), retryConfig);
26
+ const userApplications = await retryIfNeeded(() => api.applications.getApplicationsData({
26
27
  appIds
27
- });
28
+ }), retryConfig);
28
29
  setApplicationsState({
29
30
  userApplications,
30
31
  fetching: false,
@@ -38,20 +39,21 @@ export default ((store, api, sharedActions) => {
38
39
  });
39
40
  }
40
41
  };
41
- const loadAccountApplications = async () => {
42
+ const loadAccountApplications = async payload => {
43
+ const retryConfig = payload == null ? void 0 : payload.retryConfig;
42
44
  setApplicationsState({
43
45
  loading: true,
44
46
  fetching: true
45
47
  });
46
48
  try {
47
- const tenantAppIds = await api.applications.getTenantsApplications();
49
+ const tenantAppIds = await retryIfNeeded(() => api.applications.getTenantsApplications(), retryConfig);
48
50
  const appIds = getFlattenAppIds(tenantAppIds);
49
- const accountApplications = await api.applications.getApplicationsData({
51
+ const accountApplications = await retryIfNeeded(() => api.applications.getApplicationsData({
50
52
  appIds
51
- });
52
- const usersOfApplications = await api.applications.getUsersOfApplications({
53
+ }), retryConfig);
54
+ const usersOfApplications = await retryIfNeeded(() => api.applications.getUsersOfApplications({
53
55
  appIds
54
- });
56
+ }), retryConfig);
55
57
  const accountApplicationsWithUsers = accountApplications.map(app => {
56
58
  var _usersOfApplications$;
57
59
  return _extends({}, app, {
@@ -72,16 +74,17 @@ export default ((store, api, sharedActions) => {
72
74
  }
73
75
  };
74
76
  const loadMultipleUsersApplications = async ({
75
- userIds
77
+ userIds,
78
+ retryConfig
76
79
  }) => {
77
80
  try {
78
- const usersAppIds = await api.applications.getUsersApplicationsId({
81
+ const usersAppIds = await retryIfNeeded(() => api.applications.getUsersApplicationsId({
79
82
  userIds
80
- });
83
+ }), retryConfig);
81
84
  const appIds = getFlattenAppIds(usersAppIds);
82
- const accountApplications = await api.applications.getApplicationsData({
85
+ const accountApplications = await retryIfNeeded(() => api.applications.getApplicationsData({
83
86
  appIds
84
- });
87
+ }), retryConfig);
85
88
  return userIds.reduce((acc, userId) => {
86
89
  var _usersAppIds$find, _userAppIds$map$filte, _userAppIds$map;
87
90
  const userAppIds = (_usersAppIds$find = usersAppIds.find(app => app.userId == userId)) == null ? void 0 : _usersAppIds$find.appIds;
@@ -190,7 +193,8 @@ export default ((store, api, sharedActions) => {
190
193
  };
191
194
  const mapUsersWithApplicationData = async ({
192
195
  shouldLoadApps,
193
- users
196
+ users,
197
+ retryConfig
194
198
  }) => {
195
199
  const [multiAppsFlag] = await sharedActions.getFeatureFlags(['multi-apps-admin-portal']);
196
200
  if (!multiAppsFlag || !shouldLoadApps) {
@@ -198,7 +202,8 @@ export default ((store, api, sharedActions) => {
198
202
  }
199
203
  const userIds = users.map(user => user.id);
200
204
  const userApps = await loadMultipleUsersApplications({
201
- userIds
205
+ userIds,
206
+ retryConfig
202
207
  });
203
208
  if (!userApps) {
204
209
  return users;
@@ -1,4 +1,4 @@
1
- import { FronteggState, RestApi, SharedActions, WithCallback } from '../../interfaces';
1
+ import { FronteggState, RestApi, SharedActions, WithCallback, WithRetryConfig } from '../../interfaces';
2
2
  import { CustomLoginState, UpdateTenantMetadataRequest } from './interfaces';
3
3
  declare const _default: (store: FronteggState, api: RestApi, sharedActions: SharedActions) => {
4
4
  setCustomLoginState: (payload: Partial<CustomLoginState>) => void;
@@ -6,6 +6,6 @@ declare const _default: (store: FronteggState, api: RestApi, sharedActions: Shar
6
6
  loadTenantMetadata: () => Promise<void>;
7
7
  updateTenantMetadata: (payload: WithCallback<Partial<UpdateTenantMetadataRequest>>) => Promise<void>;
8
8
  customLoginEnabled: () => Promise<boolean>;
9
- loadCustomLoginRoutes: () => Promise<void>;
9
+ loadCustomLoginRoutes: (payload?: WithCallback<WithRetryConfig<{}>>) => Promise<void>;
10
10
  };
11
11
  export default _default;
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["callback"];
4
4
  import { initialState } from './state';
5
- import { errorHandler, deepResetState } from '../../helpers';
5
+ import { errorHandler, deepResetState, retryIfNeeded } from '../../helpers';
6
6
  import { mapMetaDataObjectToActions } from '../helpers';
7
7
  import { ContextHolder } from '@frontegg/rest-api';
8
8
  import { getSearchParamsFromUrl } from '../LoginState/helpers';
@@ -72,11 +72,13 @@ export default ((store, api, sharedActions) => {
72
72
  const resolvedTenant = (_await$ContextHolder$ = await ((_ContextHolder$for$ge = ContextHolder.for(store.root.appName).getContext()) == null ? void 0 : (_ContextHolder$for$ge2 = _ContextHolder$for$ge.tenantResolver) == null ? void 0 : _ContextHolder$for$ge2.call(_ContextHolder$for$ge))) == null ? void 0 : _await$ContextHolder$.tenant;
73
73
  return !!resolvedTenant;
74
74
  };
75
- const loadCustomLoginRoutes = async () => {
75
+ const loadCustomLoginRoutes = async payload => {
76
76
  try {
77
- var _getSearchParamsFromU;
77
+ var _getSearchParamsFromU, _payload$callback3;
78
78
  const isCustomLoginEnabled = await customLoginEnabled();
79
79
  if (!isCustomLoginEnabled) {
80
+ var _payload$callback;
81
+ payload == null ? void 0 : (_payload$callback = payload.callback) == null ? void 0 : _payload$callback.call(payload, true);
80
82
  return;
81
83
  }
82
84
  const isAuthenticated = store.auth.isAuthenticated;
@@ -86,8 +88,10 @@ export default ((store, api, sharedActions) => {
86
88
  } = api.accountSettings;
87
89
  const {
88
90
  applicationUrl
89
- } = await (isAuthenticated ? getSettings() : getPublicSettings());
91
+ } = await retryIfNeeded(isAuthenticated ? getSettings : getPublicSettings, payload == null ? void 0 : payload.retryConfig);
90
92
  if (!applicationUrl) {
93
+ var _payload$callback2;
94
+ payload == null ? void 0 : (_payload$callback2 = payload.callback) == null ? void 0 : _payload$callback2.call(payload, true);
91
95
  return;
92
96
  }
93
97
  const routes = store.auth.routes;
@@ -101,8 +105,10 @@ export default ((store, api, sharedActions) => {
101
105
  setCustomLoginState({
102
106
  customLoginSearchParams: searchParams != null ? searchParams : undefined
103
107
  });
104
- } catch {
105
- /* empty */
108
+ payload == null ? void 0 : (_payload$callback3 = payload.callback) == null ? void 0 : _payload$callback3.call(payload, true);
109
+ } catch (e) {
110
+ var _payload$callback4;
111
+ payload == null ? void 0 : (_payload$callback4 = payload.callback) == null ? void 0 : _payload$callback4.call(payload, null, e);
106
112
  }
107
113
  };
108
114
  return {
@@ -1,11 +1,11 @@
1
- import { FronteggState, RestApi, SharedActions } from '../../interfaces';
1
+ import { FronteggState, RestApi, SharedActions, WithRetryConfig } from '../../interfaces';
2
2
  import { GroupsState, GroupsStateIndicator, IGroupsStateActionsPayloads } from './interfaces';
3
3
  declare const _default: (store: FronteggState, api: RestApi, sharedActions: SharedActions) => {
4
4
  setUsersGroupsLoader: (payload: GroupsStateIndicator) => void;
5
5
  setUsersGroupsError: (payload: GroupsStateIndicator) => void;
6
6
  setGroupsState: (payload: Partial<GroupsState>) => void;
7
7
  resetUsersGroupsState: () => void;
8
- loadGroups: () => Promise<void>;
8
+ loadGroups: (payload?: WithRetryConfig<{}>) => Promise<void>;
9
9
  getGroupById: (payload: IGroupsStateActionsPayloads["getGroupById"]) => Promise<void>;
10
10
  createGroup: (payload: IGroupsStateActionsPayloads["createGroup"]) => Promise<void>;
11
11
  updateGroup: (payload: IGroupsStateActionsPayloads["updateGroup"]) => Promise<void>;
@@ -14,7 +14,7 @@ declare const _default: (store: FronteggState, api: RestApi, sharedActions: Shar
14
14
  deleteRolesFromGroup: (payload: IGroupsStateActionsPayloads["deleteRolesFromGroup"]) => Promise<void>;
15
15
  addUsersToGroup: (payload: IGroupsStateActionsPayloads["addUsersToGroup"]) => Promise<void>;
16
16
  deleteUsersFromGroup: (payload: IGroupsStateActionsPayloads["deleteUsersFromGroup"]) => Promise<void>;
17
- getGroupConfiguration: () => Promise<void>;
17
+ getGroupConfiguration: (payload?: WithRetryConfig<{}>) => Promise<void>;
18
18
  updateGroupConfiguration: (payload: IGroupsStateActionsPayloads["updateGroupConfiguration"]) => Promise<void>;
19
19
  getTeamUsers: (payload: IGroupsStateActionsPayloads["getTeamUsers"]) => Promise<void>;
20
20
  };
@@ -2,7 +2,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  const _excluded = ["roleIds", "userIds"];
4
4
  import { GroupRelations, GroupsStateKeys } from './interfaces';
5
- import { errorHandler, deepResetState } from '../../helpers';
5
+ import { errorHandler, deepResetState, retryIfNeeded } from '../../helpers';
6
6
  import { initialState } from './state';
7
7
  export default ((store, api, sharedActions) => {
8
8
  const setUsersGroupsLoader = payload => {
@@ -28,7 +28,7 @@ export default ((store, api, sharedActions) => {
28
28
  const resetUsersGroupsState = () => {
29
29
  deepResetState(store, ['auth', 'groupsState'], initialState);
30
30
  };
31
- const loadGroups = async () => {
31
+ const loadGroups = async payload => {
32
32
  const key = GroupsStateKeys.GET_GROUPS;
33
33
  const state = store.auth.groupsState;
34
34
  setUsersGroupsLoader({
@@ -39,9 +39,9 @@ export default ((store, api, sharedActions) => {
39
39
  // @ts-ignore TODO: fix return type in rest-api
40
40
  const {
41
41
  groups
42
- } = await api.groups.getGroups({
42
+ } = await retryIfNeeded(() => api.groups.getGroups({
43
43
  _groupsRelations: GroupRelations.rolesAndUsers
44
- });
44
+ }), payload == null ? void 0 : payload.retryConfig);
45
45
  setGroupsState(_extends({
46
46
  groups
47
47
  }, state.selectedGroup && {
@@ -304,14 +304,14 @@ export default ((store, api, sharedActions) => {
304
304
  });
305
305
  }
306
306
  };
307
- const getGroupConfiguration = async () => {
307
+ const getGroupConfiguration = async payload => {
308
308
  const key = GroupsStateKeys.GET_GROUP_CONFIGURATION;
309
309
  setUsersGroupsLoader({
310
310
  key,
311
311
  value: true
312
312
  });
313
313
  try {
314
- const groupsConfiguration = await api.groups.getGroupConfiguration();
314
+ const groupsConfiguration = await retryIfNeeded(() => api.groups.getGroupConfiguration(), payload == null ? void 0 : payload.retryConfig);
315
315
  setGroupsState({
316
316
  groupsConfiguration
317
317
  });
@@ -18,7 +18,7 @@ declare const _default: (store: FronteggState, api: RestApi, sharedActions: Shar
18
18
  verifyMFAEmailCodeForLogin: (payload: WithCallback<import("@frontegg/rest-api").IVerifyMFAEmailCode>) => Promise<void>;
19
19
  mfaWithAuthenticator: ({ callback, ...loginWithMfaPayload }: WithCallback<import("@frontegg/rest-api").ILoginWithMfa>, setLoadingAction: import("../interfaces").SetLoadingAction, isStepUp: boolean) => Promise<void>;
20
20
  loginWithMfa: (payload: WithCallback<import("@frontegg/rest-api").ILoginWithMfa>) => Promise<void>;
21
- getMfaRequiredState: (user: import("../../interfaces").User | any) => Promise<Partial<AuthState> & {
21
+ getMfaRequiredState: (user: import("../../interfaces").User | any, retryConfig?: import("../../../interfaces").RetryConfig, shouldContinueWhenFailing?: boolean) => Promise<Partial<AuthState> & {
22
22
  mfaState: Partial<MFAState>;
23
23
  loginState: Partial<LoginState>;
24
24
  }>;
@@ -23,19 +23,20 @@ import mfaWithEmailCodeActions from './mfaWithEmailCode.actions';
23
23
  import mfaWithSMSActions from './mfaWithSMS.actions';
24
24
  import mfaWithWebAuthnActions from './mfaWithWebAuthn.actions';
25
25
  import { LoginFlow, LoginStep } from '../interfaces';
26
- import { base64urlDecode, deepResetState, errorHandler, publicKeyCredentialToJSON } from '../../../helpers';
26
+ import { base64urlDecode, deepResetState, errorHandler, errorTraceId, publicKeyCredentialToJSON, retryIfNeeded, withRetryConfig } from '../../../helpers';
27
27
  import { initialState } from '../state';
28
28
  import { getSearchParam, isEmailPayload, TENANT_ID_PARAM_KEY } from '../helpers';
29
29
  import { AuthStrategyEnum, ContextHolder, WebAuthnDeviceType } from '@frontegg/rest-api';
30
30
  import hostedLoginAuthorizeActions from './hostedLoginAuthorize.actions';
31
31
  import { FronteggNativeModule, isEntitlementsDeeplyEqual } from '../../../toolkit';
32
- import { UserVerifiedOriginTypes } from '../../interfaces';
32
+ import { REQUEST_NAME, UserVerifiedOriginTypes } from '../../interfaces';
33
33
  import { authStrategyLoginStepMap } from '../consts';
34
34
  import { GTMEventAction, reportGTMEvent } from '../../../helpers';
35
35
  import { isMfaRequired } from '../../helpers';
36
36
  import { MFAStep } from '../../MfaState/interfaces';
37
37
  import { SamlVendors } from '../../SSOState/interfaces';
38
38
  import { removeTabTenantFromSessionStorage } from '@frontegg/rest-api';
39
+ import { DEFAULT_RETRY_CONFIG } from '../../../constants';
39
40
  export default ((store, api, sharedActions) => {
40
41
  const actions = sharedActions;
41
42
  const contextHolder = ContextHolder.for(store.root.appName);
@@ -192,25 +193,31 @@ export default ((store, api, sharedActions) => {
192
193
  };
193
194
 
194
195
  /** @private */
195
- const __loadSSOPublicConfigurationFunction = async () => {
196
+ const __loadSSOPublicConfigurationFunction = async payload => {
196
197
  try {
198
+ var _payload$callback;
197
199
  const {
198
200
  isActive
199
- } = await api.auth.getSSOPublicConfiguration();
201
+ } = await retryIfNeeded(api.auth.getSSOPublicConfiguration, payload == null ? void 0 : payload.retryConfig);
200
202
  actions.setAuthState({
201
203
  isSSOAuth: isActive
202
204
  });
205
+ payload == null ? void 0 : (_payload$callback = payload.callback) == null ? void 0 : _payload$callback.call(payload, {
206
+ isSSOAuth: isActive
207
+ });
203
208
  } catch (e) {
209
+ var _payload$callback2;
204
210
  actions.setAuthState({
205
211
  isSSOAuth: false
206
212
  });
213
+ payload == null ? void 0 : (_payload$callback2 = payload.callback) == null ? void 0 : _payload$callback2.call(payload, null, e);
207
214
  }
208
215
  };
209
- const __refreshMetadata = async () => {
216
+ const __refreshMetadata = async payload => {
210
217
  let ssoACS;
211
218
  try {
212
219
  var _metadata$configurati;
213
- const metadata = await api.metadata.getSamlMetadata();
220
+ const metadata = await retryIfNeeded(api.metadata.getSamlMetadata, payload == null ? void 0 : payload.retryConfig);
214
221
  ssoACS = metadata == null ? void 0 : (_metadata$configurati = metadata.configuration) == null ? void 0 : _metadata$configurati.acsUrl;
215
222
  } catch (e) {
216
223
  console.error(e);
@@ -237,7 +244,7 @@ export default ((store, api, sharedActions) => {
237
244
  routes
238
245
  } = store.auth;
239
246
  if (isMfaRequired(user, store.root.appName)) {
240
- const mfaRequiredState = await actions.getMfaRequiredState(user);
247
+ const mfaRequiredState = await actions.getMfaRequiredState(user, DEFAULT_RETRY_CONFIG, true);
241
248
  actions.setAuthState(mfaRequiredState);
242
249
  onRedirectTo(routes.loginUrl, {
243
250
  preserveQueryParams: true
@@ -250,6 +257,18 @@ export default ((store, api, sharedActions) => {
250
257
  const resetLoginState = () => {
251
258
  deepResetState(store, ['auth', 'loginState'], initialState);
252
259
  };
260
+ const getRetryWithBlockingCallbackPayload = requestName => {
261
+ const callback = (_, error) => {
262
+ if (!error) return;
263
+ actions.setErrorByRequestName({
264
+ requestName,
265
+ traceId: errorTraceId(error)
266
+ });
267
+ };
268
+ return withRetryConfig({
269
+ callback
270
+ });
271
+ };
253
272
  const requestAuthorize = async firstTime => {
254
273
  const calls = [];
255
274
  const callsAfterRefresh = [];
@@ -258,18 +277,18 @@ export default ((store, api, sharedActions) => {
258
277
  actions.setAuthState({
259
278
  isLoading: true
260
279
  });
261
- calls.push(actions.loadSocialLoginsConfigurationV2());
262
- calls.push(actions.loadAllowSignUps());
263
- calls.push(actions.loadPublicAuthStrategiesPolicy());
264
- calls.push(__loadSSOPublicConfigurationFunction());
265
- calls.push(actions.loadVendorPublicInfo());
266
- calls.push(__refreshMetadata());
280
+ calls.push(actions.loadSocialLoginsConfigurationV2(withRetryConfig()));
281
+ calls.push(actions.loadAllowSignUps(getRetryWithBlockingCallbackPayload(REQUEST_NAME.LOAD_ALLOW_SIGNUPS)));
282
+ calls.push(actions.loadPublicAuthStrategiesPolicy(getRetryWithBlockingCallbackPayload(REQUEST_NAME.LOAD_PUBLIC_AUTH_STRATEGIES_POLICY)));
283
+ calls.push(__loadSSOPublicConfigurationFunction(getRetryWithBlockingCallbackPayload(REQUEST_NAME.LOAD_SSO_PUBLIC_CONFIGURATION)));
284
+ calls.push(actions.loadVendorPublicInfo(withRetryConfig()));
285
+ calls.push(__refreshMetadata(withRetryConfig()));
267
286
  /*
268
287
  We will load custom login routes only if custom login is enabled
269
288
  to check if custom login is enabled without the tenant alias (search-param/subdomain)
270
289
  we have to wait for the user state (refreshToken request)
271
290
  */
272
- callsAfterRefresh.push(actions.loadCustomLoginRoutes());
291
+ callsAfterRefresh.push(actions.loadCustomLoginRoutes(getRetryWithBlockingCallbackPayload(REQUEST_NAME.LOAD_CUSTOM_LOGIN_ROUTES)));
273
292
  }
274
293
  await Promise.all(calls);
275
294
  if (callsAfterRefresh.length > 0) {
@@ -281,13 +300,13 @@ export default ((store, api, sharedActions) => {
281
300
  };
282
301
  const requestAuthorizeSSR = async payload => {
283
302
  const calls = [];
284
- calls.push(actions.loadSocialLoginsConfigurationV2());
285
- calls.push(actions.loadAllowSignUps());
286
- calls.push(__loadSSOPublicConfigurationFunction());
287
- calls.push(actions.loadVendorPublicInfo());
303
+ calls.push(actions.loadSocialLoginsConfigurationV2(withRetryConfig()));
304
+ calls.push(actions.loadAllowSignUps(getRetryWithBlockingCallbackPayload(REQUEST_NAME.LOAD_ALLOW_SIGNUPS)));
305
+ calls.push(__loadSSOPublicConfigurationFunction(getRetryWithBlockingCallbackPayload(REQUEST_NAME.LOAD_SSO_PUBLIC_CONFIGURATION)));
306
+ calls.push(actions.loadVendorPublicInfo(withRetryConfig()));
288
307
  calls.push(__refreshMetadata());
289
308
  calls.push(__isMFARequiredSSR(payload));
290
- calls.push(actions.loadCustomLoginRoutes());
309
+ calls.push(actions.loadCustomLoginRoutes(getRetryWithBlockingCallbackPayload(REQUEST_NAME.LOAD_CUSTOM_LOGIN_ROUTES)));
291
310
  await Promise.all(calls);
292
311
  };
293
312
  const ssoPreloginFailed = async _ref3 => {
@@ -439,7 +458,7 @@ export default ((store, api, sharedActions) => {
439
458
  routes
440
459
  } = store.auth;
441
460
  if (isMfaRequired(user, store.root.appName)) {
442
- const mfaRequiredState = await actions.getMfaRequiredState(user);
461
+ const mfaRequiredState = await actions.getMfaRequiredState(user, DEFAULT_RETRY_CONFIG, true);
443
462
  actions.setAuthState(mfaRequiredState);
444
463
  onRedirectTo(routes.loginUrl, {
445
464
  preserveQueryParams: true
@@ -541,8 +560,8 @@ export default ((store, api, sharedActions) => {
541
560
  removeTabTenantFromSessionStorage();
542
561
  }
543
562
  setTimeout(() => {
544
- var _payload$callback;
545
- return payload == null ? void 0 : (_payload$callback = payload.callback) == null ? void 0 : _payload$callback.call(payload, true);
563
+ var _payload$callback3;
564
+ return payload == null ? void 0 : (_payload$callback3 = payload.callback) == null ? void 0 : _payload$callback3.call(payload, true);
546
565
  }, (_payload$callbackTime = payload == null ? void 0 : payload.callbackTimeout) != null ? _payload$callbackTime : 500);
547
566
  };
548
567
  const recoverMfa = async payload => {
@@ -550,7 +569,7 @@ export default ((store, api, sharedActions) => {
550
569
  loading: true
551
570
  });
552
571
  try {
553
- var _payload$callback2;
572
+ var _payload$callback4;
554
573
  await api.auth.recoverMfaToken(payload);
555
574
  setLoginState({
556
575
  loading: false,
@@ -561,14 +580,14 @@ export default ((store, api, sharedActions) => {
561
580
  user: undefined,
562
581
  isAuthenticated: false
563
582
  });
564
- (_payload$callback2 = payload.callback) == null ? void 0 : _payload$callback2.call(payload, true);
583
+ (_payload$callback4 = payload.callback) == null ? void 0 : _payload$callback4.call(payload, true);
565
584
  } catch (e) {
566
- var _payload$callback3;
585
+ var _payload$callback5;
567
586
  setLoginState({
568
587
  error: errorHandler(e),
569
588
  loading: false
570
589
  });
571
- (_payload$callback3 = payload.callback) == null ? void 0 : _payload$callback3.call(payload, false, e);
590
+ (_payload$callback5 = payload.callback) == null ? void 0 : _payload$callback5.call(payload, false, e);
572
591
  }
573
592
  };
574
593
  const quickSmsPasswordlessPreLogin = async _payload => {