@frontegg/react-hooks 7.0.0-alpha.1 → 7.0.0-alpha.3

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 (141) hide show
  1. package/FronteggProvider/FronteggProvider.d.ts +12 -0
  2. package/FronteggProvider/FronteggProvider.js +140 -0
  3. package/FronteggProvider/index.d.ts +1 -12
  4. package/FronteggProvider/index.js +1 -133
  5. package/FronteggStoreContext/FronteggStoreContext.d.ts +9 -0
  6. package/FronteggStoreContext/FronteggStoreContext.js +16 -0
  7. package/FronteggStoreContext/index.d.ts +1 -13
  8. package/FronteggStoreContext/index.js +1 -14
  9. package/audits/auditLogs.d.ts +2 -4
  10. package/audits/auditLogs.js +8 -6
  11. package/audits/auditsMetadata.d.ts +2 -4
  12. package/audits/auditsMetadata.js +8 -6
  13. package/audits/hooks.d.ts +0 -8
  14. package/audits/hooks.js +6 -30
  15. package/auth/acceptInvitation.js +10 -5
  16. package/auth/activateAccount.js +10 -4
  17. package/auth/{MSP/allAccounts.d.ts → allAccounts.d.ts} +2 -4
  18. package/auth/allAccounts.js +20 -0
  19. package/auth/apiTokens.d.ts +0 -2
  20. package/auth/apiTokens.js +8 -6
  21. package/auth/applications.d.ts +3 -0
  22. package/auth/applications.js +9 -0
  23. package/auth/customLogin.d.ts +2 -5
  24. package/auth/customLogin.js +10 -11
  25. package/auth/entitlements.d.ts +32 -13
  26. package/auth/entitlements.js +103 -21
  27. package/auth/forgotPassword.d.ts +0 -2
  28. package/auth/forgotPassword.js +8 -6
  29. package/auth/groups.d.ts +0 -4
  30. package/auth/groups.js +12 -13
  31. package/auth/hooks.d.ts +44 -12
  32. package/auth/hooks.js +73 -62
  33. package/auth/impersonate.d.ts +0 -2
  34. package/auth/impersonate.js +7 -6
  35. package/auth/index.d.ts +16 -16
  36. package/auth/index.js +16 -16
  37. package/auth/login.d.ts +1 -3
  38. package/auth/login.js +7 -6
  39. package/auth/mfa.d.ts +1 -1
  40. package/auth/mfa.js +13 -4
  41. package/auth/passkeys.d.ts +1 -4
  42. package/auth/passkeys.js +7 -6
  43. package/auth/profile.d.ts +2 -4
  44. package/auth/profile.js +9 -8
  45. package/auth/provisioning.d.ts +1 -3
  46. package/auth/provisioning.js +7 -6
  47. package/auth/resetPhoneNumber.d.ts +1 -3
  48. package/auth/resetPhoneNumber.js +7 -6
  49. package/auth/roles.d.ts +1 -3
  50. package/auth/roles.js +7 -6
  51. package/auth/security/index.d.ts +4 -0
  52. package/auth/security/index.js +4 -0
  53. package/auth/security/restrictions.d.ts +0 -2
  54. package/auth/security/restrictions.js +10 -10
  55. package/auth/security/securityCenter.d.ts +1 -4
  56. package/auth/security/securityCenter.js +8 -6
  57. package/auth/security/securityPolicy.d.ts +5 -11
  58. package/auth/security/securityPolicy.js +19 -30
  59. package/auth/security/sessionsPolicy.d.ts +1 -3
  60. package/auth/security/sessionsPolicy.js +8 -6
  61. package/auth/sessions.d.ts +1 -3
  62. package/auth/sessions.js +7 -6
  63. package/auth/signup.d.ts +1 -1
  64. package/auth/signup.js +13 -4
  65. package/auth/sms.d.ts +3 -0
  66. package/auth/sms.js +8 -0
  67. package/auth/socialLogin.d.ts +1 -1
  68. package/auth/socialLogin.js +10 -4
  69. package/auth/sso.d.ts +1 -1
  70. package/auth/sso.js +10 -4
  71. package/auth/stepUp.d.ts +16 -0
  72. package/auth/stepUp.js +51 -0
  73. package/auth/team.d.ts +9 -1
  74. package/auth/team.js +22 -4
  75. package/auth/tenants.d.ts +1 -3
  76. package/auth/tenants.js +8 -6
  77. package/common/CustomComponentHolder.js +3 -1
  78. package/common/index.d.ts +1 -0
  79. package/common/index.js +3 -3
  80. package/connectivity/hooks.d.ts +2 -5
  81. package/connectivity/hooks.js +6 -9
  82. package/index.d.ts +2 -2
  83. package/index.js +3 -3
  84. package/node/FronteggProvider/FronteggProvider.js +148 -0
  85. package/node/FronteggProvider/index.js +9 -134
  86. package/node/FronteggStoreContext/FronteggStoreContext.js +28 -0
  87. package/node/FronteggStoreContext/index.js +11 -35
  88. package/node/audits/auditLogs.js +8 -6
  89. package/node/audits/auditsMetadata.js +8 -6
  90. package/node/audits/hooks.js +7 -34
  91. package/node/auth/acceptInvitation.js +7 -5
  92. package/node/auth/activateAccount.js +7 -4
  93. package/node/auth/allAccounts.js +27 -0
  94. package/node/auth/apiTokens.js +8 -6
  95. package/node/auth/applications.js +17 -0
  96. package/node/auth/customLogin.js +11 -12
  97. package/node/auth/entitlements.js +106 -22
  98. package/node/auth/forgotPassword.js +8 -6
  99. package/node/auth/groups.js +12 -12
  100. package/node/auth/hooks.js +77 -67
  101. package/node/auth/impersonate.js +7 -6
  102. package/node/auth/index.js +107 -93
  103. package/node/auth/login.js +7 -6
  104. package/node/auth/mfa.js +10 -4
  105. package/node/auth/passkeys.js +7 -6
  106. package/node/auth/profile.js +10 -9
  107. package/node/auth/provisioning.js +7 -6
  108. package/node/auth/resetPhoneNumber.js +7 -6
  109. package/node/auth/roles.js +7 -6
  110. package/node/auth/security/index.js +49 -0
  111. package/node/auth/security/restrictions.js +10 -10
  112. package/node/auth/security/securityCenter.js +8 -6
  113. package/node/auth/security/securityPolicy.js +16 -30
  114. package/node/auth/security/sessionsPolicy.js +8 -6
  115. package/node/auth/sessions.js +7 -6
  116. package/node/auth/signup.js +10 -4
  117. package/node/auth/sms.js +16 -0
  118. package/node/auth/socialLogin.js +7 -4
  119. package/node/auth/sso.js +7 -4
  120. package/node/auth/stepUp.js +62 -0
  121. package/node/auth/team.js +25 -4
  122. package/node/auth/tenants.js +8 -6
  123. package/node/common/CustomComponentHolder.js +3 -1
  124. package/node/common/index.js +2 -2
  125. package/node/connectivity/hooks.js +5 -8
  126. package/node/index.js +16 -16
  127. package/node/subscriptions/hooks.js +84 -51
  128. package/node/tests/hooks.tsc-test.js +339 -0
  129. package/node/useSnapshot/index.js +137 -0
  130. package/node/vendor/hooks.js +5 -6
  131. package/package.json +3 -3
  132. package/subscriptions/hooks.d.ts +32 -10
  133. package/subscriptions/hooks.js +81 -49
  134. package/tests/hooks.tsc-test.js +338 -0
  135. package/useSnapshot/index.d.ts +78 -0
  136. package/useSnapshot/index.js +128 -0
  137. package/useSnapshot/package.json +6 -0
  138. package/vendor/hooks.d.ts +0 -1
  139. package/vendor/hooks.js +9 -7
  140. package/auth/MSP/allAccounts.js +0 -15
  141. package/node/auth/MSP/allAccounts.js +0 -24
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useAcceptInvitationActions = void 0;
7
7
  exports.useAcceptInvitationState = useAcceptInvitationState;
8
- var _reduxStore = require("@frontegg/redux-store");
9
- var _hooks = require("./hooks");
10
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ var _FronteggStoreContext = require("../FronteggStoreContext");
9
+ var _useSnapshot = require("../useSnapshot");
11
10
  const defaultMapper = state => state;
12
11
  function useAcceptInvitationState(stateMapper = defaultMapper) {
13
- return (0, _hooks.stateHookGenerator)(stateMapper, 'acceptInvitationState');
12
+ const state = (0, _FronteggStoreContext.useStore)().store.auth.acceptInvitationState;
13
+ return stateMapper((0, _useSnapshot.useSnapshot)(state));
14
14
  }
15
- const useAcceptInvitationActions = () => (0, _hooks.reducerActionsGenerator)(_reduxStore.acceptInvitationActions, _reduxStore.acceptInvitationReducers);
15
+ const useAcceptInvitationActions = () => {
16
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.acceptInvitationActions;
17
+ };
16
18
  exports.useAcceptInvitationActions = useAcceptInvitationActions;
@@ -5,11 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useActivateAccountActions = void 0;
7
7
  exports.useActivateAccountState = useActivateAccountState;
8
- var _reduxStore = require("@frontegg/redux-store");
9
- var _hooks = require("./hooks");
8
+ var _FronteggStoreContext = require("../FronteggStoreContext");
9
+ var _useSnapshot = require("../useSnapshot");
10
10
  const defaultMapper = state => state;
11
11
  function useActivateAccountState(stateMapper = defaultMapper) {
12
- return (0, _hooks.stateHookGenerator)(stateMapper, 'activateState');
12
+ const state = (0, _FronteggStoreContext.useStore)().store.auth.activateAccountState;
13
+ return stateMapper((0, _useSnapshot.useSnapshot)(state));
13
14
  }
14
- const useActivateAccountActions = () => (0, _hooks.reducerActionsGenerator)(_reduxStore.activateAccountActions, _reduxStore.activateAccountReducers);
15
+ const useActivateAccountActions = () => {
16
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.activateAccountActions;
17
+ };
15
18
  exports.useActivateAccountActions = useActivateAccountActions;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useAllAccountsDialogsActions = exports.useAllAccountsActions = void 0;
7
+ exports.useAllAccountsDialogsState = useAllAccountsDialogsState;
8
+ exports.useAllAccountsState = useAllAccountsState;
9
+ var _FronteggStoreContext = require("../FronteggStoreContext");
10
+ var _useSnapshot = require("../useSnapshot");
11
+ const defaultMapper = state => state;
12
+ function useAllAccountsState(stateMapper = defaultMapper) {
13
+ const state = (0, _FronteggStoreContext.useStore)().store.auth.allAccountsState;
14
+ return stateMapper((0, _useSnapshot.useSnapshot)(state));
15
+ }
16
+ const useAllAccountsActions = () => {
17
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.allAccountsActions;
18
+ };
19
+ exports.useAllAccountsActions = useAllAccountsActions;
20
+ function useAllAccountsDialogsState() {
21
+ const state = (0, _FronteggStoreContext.useStore)().store.auth.allAccountsDialogsState;
22
+ return (0, _useSnapshot.useSnapshot)(state);
23
+ }
24
+ const useAllAccountsDialogsActions = () => {
25
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.allAccountsDialogActions;
26
+ };
27
+ exports.useAllAccountsDialogsActions = useAllAccountsDialogsActions;
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useApiTokensActions = void 0;
7
7
  exports.useApiTokensState = useApiTokensState;
8
- var _reduxStore = require("@frontegg/redux-store");
9
- var _hooks = require("./hooks");
10
- const defaultMapper = state => state;
11
- function useApiTokensState(stateMapper = defaultMapper) {
12
- return (0, _hooks.stateHookGenerator)(stateMapper, 'apiTokensState');
8
+ var _FronteggStoreContext = require("../FronteggStoreContext");
9
+ var _useSnapshot = require("../useSnapshot");
10
+ function useApiTokensState() {
11
+ const state = (0, _FronteggStoreContext.useStore)().store.auth.apiTokensState;
12
+ return (0, _useSnapshot.useSnapshot)(state);
13
13
  }
14
- const useApiTokensActions = () => (0, _hooks.reducerActionsGenerator)(_reduxStore.apiTokensActions, _reduxStore.apiTokensReducers);
14
+ const useApiTokensActions = () => {
15
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.apiTokensActions;
16
+ };
15
17
  exports.useApiTokensActions = useApiTokensActions;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useApplicationsActions = void 0;
7
+ exports.useApplicationsState = useApplicationsState;
8
+ var _FronteggStoreContext = require("../FronteggStoreContext");
9
+ var _useSnapshot = require("../useSnapshot");
10
+ function useApplicationsState() {
11
+ const state = (0, _FronteggStoreContext.useStore)().store.auth.applicationsState;
12
+ return (0, _useSnapshot.useSnapshot)(state);
13
+ }
14
+ const useApplicationsActions = () => {
15
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.applicationsActions;
16
+ };
17
+ exports.useApplicationsActions = useApplicationsActions;
@@ -7,22 +7,21 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.useCustomLoginActions = void 0;
8
8
  exports.useCustomLoginState = useCustomLoginState;
9
9
  exports.useCustomLoginTheme = void 0;
10
- var _reduxStore = require("@frontegg/redux-store");
11
- var _hooks = require("./hooks");
12
- var _getValue = _interopRequireDefault(require("get-value"));
13
10
  var _react = require("react");
14
- const defaultMapper = state => state;
15
- function useCustomLoginState(stateMapper = defaultMapper) {
16
- return (0, _hooks.stateHookGenerator)(stateMapper, 'customLoginState');
11
+ var _getValue = _interopRequireDefault(require("get-value"));
12
+ var _FronteggStoreContext = require("../FronteggStoreContext");
13
+ var _useSnapshot = require("../useSnapshot");
14
+ function useCustomLoginState() {
15
+ const state = (0, _FronteggStoreContext.useStore)().store.auth.customLoginState;
16
+ return (0, _useSnapshot.useSnapshot)(state);
17
17
  }
18
- const useCustomLoginActions = () => (0, _hooks.reducerActionsGenerator)(_reduxStore.customLoginActions, _reduxStore.customLoginReducers);
19
- exports.useCustomLoginActions = useCustomLoginActions;
20
- const themeMapper = state => {
21
- var _state$tenantMetadata, _state$tenantMetadata2, _state$tenantMetadata3;
22
- return (_state$tenantMetadata = state.tenantMetadata) == null ? void 0 : (_state$tenantMetadata2 = _state$tenantMetadata.configuration) == null ? void 0 : (_state$tenantMetadata3 = _state$tenantMetadata2.themeV2) == null ? void 0 : _state$tenantMetadata3.loginBox;
18
+ const useCustomLoginActions = () => {
19
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.customLoginActions;
23
20
  };
21
+ exports.useCustomLoginActions = useCustomLoginActions;
24
22
  const useCustomLoginTheme = () => {
25
- const customLoginTheme = useCustomLoginState(themeMapper);
23
+ var _useCustomLoginState$, _useCustomLoginState$2, _useCustomLoginState$3;
24
+ const customLoginTheme = (_useCustomLoginState$ = useCustomLoginState().tenantMetadata) == null ? void 0 : (_useCustomLoginState$2 = _useCustomLoginState$.configuration) == null ? void 0 : (_useCustomLoginState$3 = _useCustomLoginState$2.themeV2) == null ? void 0 : _useCustomLoginState$3.loginBox;
26
25
  const getCustomLoginThemeValue = (0, _react.useCallback)(path => {
27
26
  return path && customLoginTheme ? (0, _getValue.default)(customLoginTheme, path) : customLoginTheme;
28
27
  }, [customLoginTheme]);
@@ -3,42 +3,126 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.usePermissionEntitlements = exports.useFeatureEntitlements = exports.useEntitlements = void 0;
7
- var _reduxStore = require("@frontegg/redux-store");
6
+ exports.usePermissionEntitlements = exports.useFeatureEntitlements = exports.useEntitlementsOptions = exports.useEntitlementsActions = exports.useEntitlements = void 0;
8
7
  var _hooks = require("./hooks");
8
+ var _react = require("react");
9
+ var _common = require("../common");
10
+ var _flags = require("../flags");
11
+ var _FronteggStoreContext = require("../FronteggStoreContext");
12
+ var _useSnapshot = require("../useSnapshot");
13
+ var _reduxStore = require("@frontegg/redux-store");
9
14
  /**
10
15
  * @returns entitlemenets state as stored in the user
11
16
  */
12
- const useEntitlementsState = () => (0, _hooks.useAuth)(({
13
- user
14
- }) => user == null ? void 0 : user.entitlements);
17
+ const useEntitlementsState = () => {
18
+ var _useSnapshot$user$ent, _useSnapshot$user;
19
+ const state = (0, _FronteggStoreContext.useStore)().store.auth;
20
+ return (_useSnapshot$user$ent = (_useSnapshot$user = (0, _useSnapshot.useSnapshot)(state).user) == null ? void 0 : _useSnapshot$user.entitlements) != null ? _useSnapshot$user$ent : {};
21
+ };
22
+
23
+ /**
24
+ * @returns user state
25
+ */
26
+ const useUserState = () => {
27
+ return (0, _hooks.useAuthUserOrNull)() || undefined;
28
+ };
15
29
 
16
30
  /**
17
- @param key
18
- @returns if the user is entitled to the given feature. Attaching the justification if not
19
- */
20
- const useFeatureEntitlements = key => {
31
+ * @param customAttributes user attributes
32
+ * @returns is entitled query data including: entitlements state and final attributes (consumer and frontegg)
33
+ */
34
+ const useEntitlementsQueryData = customAttributes => {
35
+ const user = useUserState();
21
36
  const entitlements = useEntitlementsState();
22
- return (0, _reduxStore.getFeatureEntitlements)(entitlements, key);
37
+ const attributes = {
38
+ custom: customAttributes,
39
+ jwt: user
40
+ };
41
+ return {
42
+ entitlements,
43
+ attributes
44
+ };
45
+ };
46
+
47
+ /**
48
+ @param key feature key
49
+ @param customAttributes user attributes
50
+ @returns if the user is entitled to the given feature and attributes. Attaching the justification if not
51
+ */
52
+ const useFeatureEntitlements = (key, customAttributes) => {
53
+ const {
54
+ entitlements,
55
+ attributes
56
+ } = useEntitlementsQueryData(customAttributes);
57
+ return (0, _reduxStore.getFeatureEntitlements)(entitlements, key, attributes);
23
58
  };
24
59
 
25
60
  /**
26
- @param key
27
- @returns if the user is entitled to the given permission. Attaching the justification if not
28
- */
61
+ @param key permission key
62
+ @param customAttributes user attributes
63
+ @returns if the user is entitled to the given permission and attributes. Attaching the justification if not
64
+ */
29
65
  exports.useFeatureEntitlements = useFeatureEntitlements;
30
- const usePermissionEntitlements = key => {
31
- const entitlements = useEntitlementsState();
32
- return (0, _reduxStore.getPermissionEntitlements)(entitlements, key);
66
+ const usePermissionEntitlements = (key, customAttributes) => {
67
+ const {
68
+ entitlements,
69
+ attributes
70
+ } = useEntitlementsQueryData(customAttributes);
71
+ return (0, _reduxStore.getPermissionEntitlements)(entitlements, key, attributes);
33
72
  };
34
73
 
35
74
  /**
36
- @param entitledToOptions including permission or feature key
37
- @returns if the user is entitled to the given feature or permission (check only one). Attaching the justification if not
38
- */
75
+ @param entitledToOptions including permission or feature key
76
+ @param customAttributes user attributes
77
+ @returns if the user is entitled to the given feature or permission and attributes (check only one). Attaching the justification if not
78
+ */
39
79
  exports.usePermissionEntitlements = usePermissionEntitlements;
40
- const useEntitlements = options => {
80
+ const useEntitlements = (options, customAttributes) => {
81
+ const {
82
+ entitlements,
83
+ attributes
84
+ } = useEntitlementsQueryData(customAttributes);
85
+ return (0, _reduxStore.getEntitlements)(entitlements, options, attributes);
86
+ };
87
+
88
+ /**
89
+ @param entitledToOptions including permission or feature key
90
+ @returns an action your can use to detect if the user is entitled to the given feature or permission (check only one). Attaching the justification if not
91
+ */
92
+ exports.useEntitlements = useEntitlements;
93
+ const useEntitlementsActions = () => {
94
+ // this code is duplicated because React is yelling when using useEntitlementsQueryData inside the isEntitledTo function because it's not a hook
95
+ const user = useUserState();
41
96
  const entitlements = useEntitlementsState();
42
- return (0, _reduxStore.getEntitlements)(entitlements, options);
97
+ return (0, _react.useMemo)(() => ({
98
+ isEntitledTo: (options, customAttributes) => {
99
+ const attributes = {
100
+ custom: customAttributes,
101
+ jwt: user
102
+ };
103
+ return (0, _reduxStore.getEntitlements)(entitlements, options, attributes);
104
+ }
105
+ }), [user, entitlements]);
106
+ };
107
+
108
+ /**
109
+ @returns if the option to use entitlements is enabled
110
+ */
111
+ exports.useEntitlementsActions = useEntitlementsActions;
112
+ const useEntitlementsOptions = () => {
113
+ var _entitlementsOptions$;
114
+ const {
115
+ entitlementsOptions
116
+ } = (0, _common.useShadowDom)();
117
+ const isEntitlementsEnabled = (_entitlementsOptions$ = entitlementsOptions == null ? void 0 : entitlementsOptions.enabled) != null ? _entitlementsOptions$ : false;
118
+ const {
119
+ isEntitledTo
120
+ } = useEntitlementsActions();
121
+ const [verifyIsEntitledFF] = (0, _flags.useFeatureFlags)(['admin-portal-use-is-entitled']);
122
+ return {
123
+ isEntitlementsEnabled,
124
+ isEntitledTo,
125
+ verifyIsEntitledFF
126
+ };
43
127
  };
44
- exports.useEntitlements = useEntitlements;
128
+ exports.useEntitlementsOptions = useEntitlementsOptions;
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useForgotPasswordActions = void 0;
7
7
  exports.useForgotPasswordState = useForgotPasswordState;
8
- var _reduxStore = require("@frontegg/redux-store");
9
- var _hooks = require("./hooks");
10
- const defaultMapper = state => state;
11
- function useForgotPasswordState(stateMapper = defaultMapper) {
12
- return (0, _hooks.stateHookGenerator)(stateMapper, 'forgotPasswordState');
8
+ var _FronteggStoreContext = require("../FronteggStoreContext");
9
+ var _useSnapshot = require("../useSnapshot");
10
+ function useForgotPasswordState() {
11
+ const state = (0, _FronteggStoreContext.useStore)().store.auth.forgotPasswordState;
12
+ return (0, _useSnapshot.useSnapshot)(state);
13
13
  }
14
- const useForgotPasswordActions = () => (0, _hooks.reducerActionsGenerator)(_reduxStore.forgotPasswordActions, _reduxStore.forgotPasswordReducers);
14
+ const useForgotPasswordActions = () => {
15
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.forgotPasswordActions;
16
+ };
15
17
  exports.useForgotPasswordActions = useForgotPasswordActions;
@@ -6,19 +6,19 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.useGroupsDialogsActions = exports.useGroupsActions = void 0;
7
7
  exports.useGroupsDialogsState = useGroupsDialogsState;
8
8
  exports.useGroupsState = useGroupsState;
9
- var _reduxStore = require("@frontegg/redux-store");
10
- var _hooks = require("./hooks");
11
- const defaultMapper = state => state;
12
- function useGroupsState(stateMapper = defaultMapper) {
13
- return (0, _hooks.stateHookGenerator)(stateMapper, 'groupsState');
9
+ var _FronteggStoreContext = require("../FronteggStoreContext");
10
+ var _useSnapshot = require("../useSnapshot");
11
+ function useGroupsState() {
12
+ return (0, _useSnapshot.useSnapshot)((0, _FronteggStoreContext.useStore)().store.auth.groupsState);
14
13
  }
15
- const useGroupsActions = () => (0, _hooks.reducerActionsGenerator)(_reduxStore.groupsActions, _reduxStore.groupsReducers);
16
-
17
- //dialogs
14
+ const useGroupsActions = () => {
15
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.groupsActions;
16
+ };
18
17
  exports.useGroupsActions = useGroupsActions;
19
- const defaultDialogsMapper = state => state;
20
- function useGroupsDialogsState(stateMapper = defaultDialogsMapper) {
21
- return (0, _hooks.stateHookGenerator)(stateMapper, 'groupsDialogsState');
18
+ function useGroupsDialogsState() {
19
+ return (0, _useSnapshot.useSnapshot)((0, _FronteggStoreContext.useStore)().store.auth.groupsDialogsState);
22
20
  }
23
- const useGroupsDialogsActions = () => (0, _hooks.reducerActionsGenerator)(_reduxStore.groupsDialogsActions, _reduxStore.groupsDialogsReducers);
21
+ const useGroupsDialogsActions = () => {
22
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.groupsDialogsActions;
23
+ };
24
24
  exports.useGroupsDialogsActions = useGroupsDialogsActions;
@@ -1,25 +1,43 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports.stateHookGenerator = exports.sliceReducerActionsBy = exports.reducerActionsGenerator = void 0;
8
6
  exports.useAuth = useAuth;
9
- exports.useOnRedirectTo = exports.useLoginWithRedirect = exports.useIsAuthenticated = exports.useAuthUserOrNull = exports.useAuthUser = exports.useAuthRoutes = exports.useAuthActions = void 0;
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
+ exports.useAuthRoutes = exports.useAuthActions = void 0;
8
+ exports.useAuthState = useAuthState;
9
+ exports.useOnRedirectTo = exports.useLoginWithRedirectV2 = exports.useLoginWithRedirect = exports.useIsAuthenticated = exports.useAuthUserOrNull = exports.useAuthUser = void 0;
11
10
  var _react = require("react");
12
- var _reduxStore = require("@frontegg/redux-store");
13
- var _reactRedux = require("react-redux");
14
- var _FronteggStoreContext = require("../FronteggStoreContext");
15
11
  var _restApi = require("@frontegg/rest-api");
16
- var _common = require("../common");
12
+ var _FronteggStoreContext = require("../FronteggStoreContext");
13
+ var _useSnapshot = require("../useSnapshot");
17
14
  const defaultMapper = {
18
15
  state: state => state,
19
16
  actions: actions => actions
20
17
  };
18
+
19
+ /**
20
+ * Use this `frontegg` hook function to obtain the complete authentication state, if it exists.
21
+ *
22
+ * ```jsx
23
+ * export const MyFunctionComponent = () => {
24
+ * const { isAuthenticated, user } = useAuth();
25
+ *
26
+ * return isAuthenticated ? <div>Hello, User {user.name}</div> : null;
27
+ * }
28
+ * ```
29
+ *
30
+ * You can also utilize other `frontegg` hooks like `useAuthUser` to specifically retrieve the user and redirect to the login page if necessary, `useAuthUserOrNull` to get the user if available, and `useIsAuthenticated` for checking authentication status.
31
+ */
32
+
21
33
  function useAuth(stateMapper = defaultMapper.state) {
22
- return (0, _FronteggStoreContext.useSelector)(state => stateMapper(state[_reduxStore.authStoreName]), _reactRedux.shallowEqual);
34
+ const state = (0, _FronteggStoreContext.useStore)().store.auth;
35
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
+ return stateMapper((0, _useSnapshot.useSnapshot)(state));
37
+ }
38
+ function useAuthState() {
39
+ const state = (0, _FronteggStoreContext.useStore)().store.auth;
40
+ return (0, _useSnapshot.useSnapshot)(state);
23
41
  }
24
42
 
25
43
  /**
@@ -37,25 +55,43 @@ function useAuth(stateMapper = defaultMapper.state) {
37
55
  * }
38
56
  * ```
39
57
  *
40
- * use this frontegg hook function to get if user is "Authenticated"
58
+ /**
59
+ * Use this frontegg hook function to redirect the user to the login page when in hosted login mode.
60
+ * If the user is already authenticated, this method will direct the user to the store, and you can retrieve user information using the `useAuthUserOrNull` method.
61
+ *
62
+ * To ensure the user is available on the first page load when authenticated, configure this option in your `FronteggProvider`:
63
+ * `authOptions`:
64
+ * `hostedLoginOptions`:
65
+ * `loadUserOnFirstLoad: true`
66
+ *
67
+ * When using this option, you can have the user on the first load, and you can control when the user is redirected to the login page by using `loginWithRedirect`.
41
68
  */
42
69
  const useLoginWithRedirect = () => {
43
- const dispatch = (0, _FronteggStoreContext.useDispatch)();
44
- return (0, _react.useMemo)(() => (0, _reduxStore.bindActionCreators)(_reduxStore.authActions.requestHostedLoginAuthorize, dispatch), [_reduxStore.authActions.requestHostedLoginAuthorize]);
70
+ const {
71
+ actions
72
+ } = (0, _react.useContext)(_FronteggStoreContext.FronteggStoreContext);
73
+ return actions.requestHostedLoginAuthorize;
45
74
  };
46
75
  exports.useLoginWithRedirect = useLoginWithRedirect;
76
+ const useLoginWithRedirectV2 = () => {
77
+ const {
78
+ actions
79
+ } = (0, _react.useContext)(_FronteggStoreContext.FronteggStoreContext);
80
+ return actions.requestHostedLoginAuthorizeV2;
81
+ };
82
+ exports.useLoginWithRedirectV2 = useLoginWithRedirectV2;
47
83
  const useAuthActions = () => {
48
- const dispatch = (0, _FronteggStoreContext.useDispatch)();
49
- return (0, _react.useMemo)(() => (0, _reduxStore.bindActionCreators)(_reduxStore.authActions, dispatch), [_reduxStore.authActions]);
84
+ return (0, _FronteggStoreContext.useStore)().actions;
50
85
  };
51
86
  exports.useAuthActions = useAuthActions;
52
87
  const useOnRedirectTo = () => {
53
- var _context$onRedirectTo;
54
- const context = (0, _react.useContext)(_common.ShadowDomContext);
55
- return (_context$onRedirectTo = context == null ? void 0 : context.onRedirectTo) != null ? _context$onRedirectTo : _restApi.ContextHolder.onRedirectTo;
88
+ const {
89
+ onRedirectTo
90
+ } = useAuth();
91
+ return onRedirectTo || _restApi.ContextHolder.onRedirectTo;
56
92
  };
57
93
  exports.useOnRedirectTo = useOnRedirectTo;
58
- const useAuthRoutes = () => useAuth(state => (0, _extends2.default)({}, state.routes));
94
+ const useAuthRoutes = () => useAuthState().routes;
59
95
 
60
96
  /**
61
97
  * ```jsx
@@ -68,11 +104,12 @@ const useAuthRoutes = () => useAuth(state => (0, _extends2.default)({}, state.ro
68
104
  * use this frontegg hook function to get if user is "Authenticated"
69
105
  */
70
106
  exports.useAuthRoutes = useAuthRoutes;
71
- const useIsAuthenticated = () => (0, _FronteggStoreContext.useSelector)(({
72
- [_reduxStore.authStoreName]: {
107
+ const useIsAuthenticated = () => {
108
+ const {
73
109
  isAuthenticated
74
- }
75
- }) => isAuthenticated, _reactRedux.shallowEqual);
110
+ } = (0, _useSnapshot.useSnapshot)((0, _FronteggStoreContext.useStore)().store.auth);
111
+ return isAuthenticated;
112
+ };
76
113
 
77
114
  /**
78
115
  * ```jsx
@@ -82,8 +119,8 @@ const useIsAuthenticated = () => (0, _FronteggStoreContext.useSelector)(({
82
119
  * }
83
120
  * ```
84
121
  *
85
- * use this frontegg hook function to get the authenticated user
86
- * the return user is null if not authenticated
122
+ * Use this `frontegg` hook function to obtain the authenticated user. If the user is not authenticated, this method will immediately redirect the user to the login page. (Primarily intended for embedded mode usage)
123
+ * To prevent this immediate redirection behavior, use the `useAuthUserOrNull` method.
87
124
  */
88
125
  exports.useIsAuthenticated = useIsAuthenticated;
89
126
  const useAuthUser = () => {
@@ -92,7 +129,9 @@ const useAuthUser = () => {
92
129
  customLoginUrl
93
130
  } = useAuthRoutes();
94
131
  const onRedirectTo = useOnRedirectTo();
95
- const user = useAuthUserOrNull();
132
+ const {
133
+ user
134
+ } = useAuth();
96
135
  const isSSR = typeof window === 'undefined';
97
136
  const noUser = {};
98
137
  if (user == null && !isSSR) {
@@ -103,51 +142,22 @@ const useAuthUser = () => {
103
142
  }
104
143
  return user || noUser;
105
144
  };
145
+
146
+ /**
147
+ * ```jsx
148
+ * export const MyFunctionComponent = () => {
149
+ * const user = useAuthUserOrNull();
150
+ * return user ? <div>Hello {user.name}!</div> : <div>Hello Guest!</div>
151
+ * }
152
+ * ```
153
+ *
154
+ * Use this `frontegg` hook function to retrieve the authenticated user. If the user is not authenticated, this hook will return null. To redirect the user to the login page in case they are not authenticated, use the `useAuthUser` method.
155
+ */
106
156
  exports.useAuthUser = useAuthUser;
107
157
  const useAuthUserOrNull = () => {
108
158
  const {
109
159
  user
110
- } = (0, _FronteggStoreContext.useSelector)(({
111
- [_reduxStore.authStoreName]: {
112
- user
113
- }
114
- }) => ({
115
- user
116
- }), _reactRedux.shallowEqual);
160
+ } = useAuth();
117
161
  return user || null;
118
162
  };
119
-
120
- /**
121
- * hooks helpers
122
- */
123
- exports.useAuthUserOrNull = useAuthUserOrNull;
124
- const sliceReducerActionsBy = reducer => {
125
- const reducerKeys = Object.keys(reducer);
126
- const reducerActions = reducerKeys.map(key => ({
127
- [key]: _reduxStore.authActions[key]
128
- }));
129
- return reducerActions.reduce((p, n) => (0, _extends2.default)({}, p, n), {});
130
- };
131
-
132
- /*
133
- * enableMapperFalsyReturnValue was added to be backward compatible with all usages
134
- * the scenario that require enableMapperFalsyReturnValue of true is when the
135
- * mapper function returns a falsy value then we want to return it as is - it's a valid case like in entitlements (when it's undefined)
136
- * IMO all usages should be like that
137
- */
138
- exports.sliceReducerActionsBy = sliceReducerActionsBy;
139
- const stateHookGenerator = (stateMapper, subState, enableMapperFalsyReturnValue = false) => {
140
- return (0, _FronteggStoreContext.useSelector)(state => {
141
- const mapperValue = stateMapper == null ? void 0 : stateMapper(state[_reduxStore.authStoreName][subState]);
142
- if (enableMapperFalsyReturnValue && stateMapper) {
143
- return mapperValue;
144
- }
145
- return mapperValue != null ? mapperValue : state[_reduxStore.authStoreName][subState];
146
- }, _reactRedux.shallowEqual);
147
- };
148
- exports.stateHookGenerator = stateHookGenerator;
149
- const reducerActionsGenerator = (actions, reducers) => {
150
- const dispatch = (0, _FronteggStoreContext.useDispatch)();
151
- return (0, _react.useMemo)(() => (0, _reduxStore.bindActionCreators)((0, _extends2.default)({}, actions, sliceReducerActionsBy(reducers)), dispatch), [dispatch]);
152
- };
153
- exports.reducerActionsGenerator = reducerActionsGenerator;
163
+ exports.useAuthUserOrNull = useAuthUserOrNull;
@@ -5,11 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useImpersonateActions = void 0;
7
7
  exports.useImpersonateState = useImpersonateState;
8
- var _reduxStore = require("@frontegg/redux-store");
9
- var _hooks = require("./hooks");
10
- const defaultMapper = state => state;
11
- function useImpersonateState(stateMapper = defaultMapper) {
12
- return (0, _hooks.stateHookGenerator)(stateMapper, 'impersonateState');
8
+ var _useSnapshot = require("../useSnapshot");
9
+ var _FronteggStoreContext = require("../FronteggStoreContext");
10
+ function useImpersonateState() {
11
+ return (0, _useSnapshot.useSnapshot)((0, _FronteggStoreContext.useStore)().store.auth.impersonateState);
13
12
  }
14
- const useImpersonateActions = () => (0, _hooks.reducerActionsGenerator)(_reduxStore.impersonateActions, _reduxStore.impersonateReducers);
13
+ const useImpersonateActions = () => {
14
+ return (0, _FronteggStoreContext.useStore)().stateActions.auth.impersonateActions;
15
+ };
15
16
  exports.useImpersonateActions = useImpersonateActions;