@databiosphere/findable-ui 50.8.0 → 51.0.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 (194) hide show
  1. package/lib/auth/constants/auth.d.ts +5 -0
  2. package/lib/{providers/authentication/auth/constants.js → auth/constants/auth.js} +4 -1
  3. package/lib/auth/constants/authentication.d.ts +5 -0
  4. package/lib/{providers/authentication/authentication/constants.js → auth/constants/authentication.js} +4 -1
  5. package/lib/auth/constants/credentials.d.ts +5 -0
  6. package/lib/{providers/authentication/credentials/constants.js → auth/constants/credentials.js} +3 -0
  7. package/lib/auth/constants/token.d.ts +5 -0
  8. package/lib/{providers/authentication/token/constants.js → auth/constants/token.js} +3 -0
  9. package/lib/{providers/authentication/auth/context.d.ts → auth/contexts/auth.d.ts} +4 -1
  10. package/lib/{providers/authentication/auth/context.js → auth/contexts/auth.js} +4 -1
  11. package/lib/auth/contexts/authentication.d.ts +5 -0
  12. package/lib/{providers/authentication/authentication/context.js → auth/contexts/authentication.js} +4 -1
  13. package/lib/auth/contexts/credentials.d.ts +5 -0
  14. package/lib/{providers/authentication/credentials/context.js → auth/contexts/credentials.js} +4 -1
  15. package/lib/{providers/authentication/auth/dispatch.d.ts → auth/dispatch/auth.d.ts} +2 -2
  16. package/lib/{providers/authentication/auth/dispatch.js → auth/dispatch/auth.js} +2 -2
  17. package/lib/{providers/authentication/authentication/dispatch.d.ts → auth/dispatch/authentication.d.ts} +2 -2
  18. package/lib/{providers/authentication/authentication/dispatch.js → auth/dispatch/authentication.js} +2 -2
  19. package/lib/auth/dispatch/credentials.d.ts +12 -0
  20. package/lib/{providers/authentication/credentials/dispatch.js → auth/dispatch/credentials.js} +3 -3
  21. package/lib/{providers/authentication/token/dispatch.d.ts → auth/dispatch/token.d.ts} +3 -3
  22. package/lib/{providers/authentication/token/dispatch.js → auth/dispatch/token.js} +3 -3
  23. package/lib/{providers/authentication/auth/hook.d.ts → auth/hooks/useAuth.d.ts} +1 -1
  24. package/lib/{providers/authentication/auth/hook.js → auth/hooks/useAuth.js} +1 -1
  25. package/lib/auth/hooks/useAuthReducer.d.ts +7 -0
  26. package/lib/auth/hooks/useAuthReducer.js +13 -0
  27. package/lib/{providers/authentication/authentication/hook.d.ts → auth/hooks/useAuthentication.d.ts} +1 -1
  28. package/lib/{providers/authentication/authentication/hook.js → auth/hooks/useAuthentication.js} +1 -1
  29. package/lib/auth/hooks/useAuthenticationReducer.d.ts +7 -0
  30. package/lib/auth/hooks/useAuthenticationReducer.js +13 -0
  31. package/lib/{providers/authentication/credentials/hook.d.ts → auth/hooks/useCredentials.d.ts} +1 -1
  32. package/lib/{providers/authentication/credentials/hook.js → auth/hooks/useCredentials.js} +1 -1
  33. package/lib/auth/hooks/useCredentialsReducer.d.ts +6 -0
  34. package/lib/{hooks/authentication/credentials → auth/hooks}/useCredentialsReducer.js +6 -2
  35. package/lib/{providers/authentication/auth/reducer.d.ts → auth/reducers/auth.d.ts} +1 -1
  36. package/lib/{providers/authentication/auth/reducer.js → auth/reducers/auth.js} +13 -2
  37. package/lib/{providers/authentication/authentication/reducer.d.ts → auth/reducers/authentication.d.ts} +1 -1
  38. package/lib/{providers/authentication/authentication/reducer.js → auth/reducers/authentication.js} +13 -2
  39. package/lib/{providers/authentication/credentials/reducer.d.ts → auth/reducers/credentials.d.ts} +1 -1
  40. package/lib/{providers/authentication/credentials/reducer.js → auth/reducers/credentials.js} +14 -3
  41. package/lib/{providers/authentication/token/reducer.d.ts → auth/reducers/token.d.ts} +1 -1
  42. package/lib/{providers/authentication/token/reducer.js → auth/reducers/token.js} +2 -2
  43. package/lib/{providers/authentication/auth/types.d.ts → auth/types/auth.d.ts} +41 -5
  44. package/lib/{providers/authentication/auth/types.js → auth/types/auth.js} +6 -0
  45. package/lib/{providers/authentication/authentication/types.d.ts → auth/types/authentication.d.ts} +46 -4
  46. package/lib/{providers/authentication/authentication/types.js → auth/types/authentication.js} +6 -0
  47. package/lib/auth/types/common.d.ts +4 -0
  48. package/lib/{providers/authentication/credentials/types.d.ts → auth/types/credentials.d.ts} +31 -4
  49. package/lib/{providers/authentication/credentials/types.js → auth/types/credentials.js} +3 -0
  50. package/lib/auth/types/loginProvider.d.ts +11 -0
  51. package/lib/{providers/authentication/token/types.d.ts → auth/types/token.d.ts} +29 -5
  52. package/lib/{providers/authentication/token/types.js → auth/types/token.js} +3 -0
  53. package/lib/components/ComponentCreator/ComponentCreator.js +1 -1
  54. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.js +1 -1
  55. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.js +2 -2
  56. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.d.ts +1 -1
  57. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.js +1 -1
  58. package/lib/components/Login/components/Buttons/buttons.d.ts +1 -1
  59. package/lib/components/Login/components/Buttons/buttons.js +1 -1
  60. package/lib/components/Login/components/Buttons/types.d.ts +5 -5
  61. package/lib/components/Login/hooks/useUserLogin/types.d.ts +1 -1
  62. package/lib/components/Login/hooks/useUserLogin/useUserLogin.js +1 -1
  63. package/lib/components/Login/login.d.ts +1 -1
  64. package/lib/components/Login/login.js +1 -1
  65. package/lib/components/Login/types.d.ts +3 -4
  66. package/lib/config/entities.d.ts +3 -3
  67. package/lib/google/config.d.ts +7 -0
  68. package/lib/google/config.js +14 -0
  69. package/lib/google/constants.d.ts +16 -0
  70. package/lib/google/constants.js +24 -0
  71. package/lib/google/hooks/useGoogleSignInService.d.ts +8 -0
  72. package/lib/{providers/googleSignInAuthentication → google}/hooks/useGoogleSignInService.js +7 -2
  73. package/lib/{hooks/authentication/token → google/hooks}/useTokenReducer.d.ts +2 -1
  74. package/lib/{hooks/authentication/token → google/hooks}/useTokenReducer.js +3 -2
  75. package/lib/google/provider.d.ts +11 -0
  76. package/lib/{providers/googleSignInAuthentication → google}/provider.js +19 -11
  77. package/lib/google/service.d.ts +18 -0
  78. package/lib/{providers/googleSignInAuthentication/service → google}/service.js +20 -9
  79. package/lib/google/session-controller.d.ts +11 -0
  80. package/lib/{components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.js → google/session-controller.js} +14 -6
  81. package/lib/google/types.d.ts +58 -0
  82. package/lib/{providers/authentication/authentication/utils.d.ts → google/utils/auth.d.ts} +6 -0
  83. package/lib/{providers/authentication/authentication/utils.js → google/utils/auth.js} +10 -0
  84. package/lib/{providers/googleSignInAuthentication/profile/utils.d.ts → google/utils/profile.d.ts} +2 -2
  85. package/lib/{providers/googleSignInAuthentication/profile/utils.js → google/utils/profile.js} +1 -1
  86. package/lib/hooks/authentication/profile/types.d.ts +1 -1
  87. package/lib/hooks/authentication/profile/useProfile.js +3 -3
  88. package/lib/hooks/authentication/providers/types.d.ts +1 -1
  89. package/lib/hooks/authentication/session/useSessionActive.d.ts +2 -2
  90. package/lib/hooks/authentication/session/useSessionActive.js +2 -2
  91. package/lib/hooks/authentication/terra/useAuthenticationForm.js +1 -1
  92. package/lib/hooks/authentication/terra/useAuthenticationNIHExpiry.js +2 -2
  93. package/lib/hooks/authentication/token/types.d.ts +1 -1
  94. package/lib/hooks/authentication/token/useToken.js +1 -1
  95. package/lib/{components/Authentication/components/SessionController/components/NextSessionController → nextauth}/constants.d.ts +8 -2
  96. package/lib/{components/Authentication/components/SessionController/components/NextSessionController → nextauth}/constants.js +8 -2
  97. package/lib/nextauth/hooks/useNextAuthService.d.ts +6 -0
  98. package/lib/{providers/nextAuthAuthentication → nextauth}/hooks/useNextAuthService.js +7 -3
  99. package/lib/nextauth/provider.d.ts +12 -0
  100. package/lib/{providers/nextAuthAuthentication → nextauth}/provider.js +16 -7
  101. package/lib/nextauth/service.d.ts +20 -0
  102. package/lib/{providers/nextAuthAuthentication/service → nextauth}/service.js +14 -0
  103. package/lib/nextauth/session-controller.d.ts +10 -0
  104. package/lib/{components/Authentication/components/SessionController/components/NextSessionController/SessionController.js → nextauth/session-controller.js} +11 -4
  105. package/lib/{providers/nextAuthAuthentication → nextauth}/types.d.ts +9 -0
  106. package/lib/{components/Authentication/components/SessionController/components/NextSessionController → nextauth}/utils.d.ts +2 -2
  107. package/lib/{components/Authentication/components/SessionController/components/NextSessionController → nextauth}/utils.js +2 -2
  108. package/lib/providers/loginGuard/provider.js +1 -1
  109. package/lib/terra/constants.d.ts +28 -0
  110. package/lib/{providers/authentication/terra/hooks/common → terra}/constants.js +16 -1
  111. package/lib/terra/context.d.ts +5 -0
  112. package/lib/{providers/authentication/terra → terra}/context.js +4 -1
  113. package/lib/{providers/authentication/terra → terra}/hooks/useFetchProfiles.d.ts +12 -4
  114. package/lib/{providers/authentication/terra → terra}/hooks/useFetchProfiles.js +9 -4
  115. package/lib/{providers/authentication/terra → terra}/hooks/useFetchTerraNIHProfile.d.ts +2 -6
  116. package/lib/{providers/authentication/terra → terra}/hooks/useFetchTerraNIHProfile.js +4 -5
  117. package/lib/terra/hooks/useFetchTerraProfile.d.ts +10 -0
  118. package/lib/{providers/authentication/terra → terra}/hooks/useFetchTerraProfile.js +4 -5
  119. package/lib/{providers/authentication/terra → terra}/hooks/useFetchTerraTermsOfService.d.ts +2 -7
  120. package/lib/{providers/authentication/terra → terra}/hooks/useFetchTerraTermsOfService.js +4 -5
  121. package/lib/{providers/authentication/terra/hook.d.ts → terra/hooks/useTerraProfile.d.ts} +1 -1
  122. package/lib/{providers/authentication/terra/hook.js → terra/hooks/useTerraProfile.js} +1 -1
  123. package/lib/terra/provider.d.ts +10 -0
  124. package/lib/{providers/authentication/terra → terra}/provider.js +13 -6
  125. package/lib/terra/types/common.d.ts +50 -0
  126. package/lib/terra/types/common.js +19 -0
  127. package/lib/terra/types/context.d.ts +12 -0
  128. package/lib/terra/types/terra-nih.d.ts +8 -0
  129. package/lib/{providers/authentication/terra/hooks/useFetchTerraProfile.d.ts → terra/types/terra-profile.d.ts} +9 -8
  130. package/lib/terra/types/terra-tos.d.ts +9 -0
  131. package/lib/terra/types/terra-tos.js +1 -0
  132. package/lib/terra/utils.d.ts +47 -0
  133. package/lib/{providers/authentication/terra → terra}/utils.js +45 -2
  134. package/lib/views/LoginView/loginView.d.ts +2 -2
  135. package/package.json +15 -1
  136. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.d.ts +0 -3
  137. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/types.d.ts +0 -6
  138. package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.d.ts +0 -3
  139. package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.d.ts +0 -4
  140. package/lib/hooks/authentication/auth/useAuthReducer.d.ts +0 -2
  141. package/lib/hooks/authentication/auth/useAuthReducer.js +0 -8
  142. package/lib/hooks/authentication/authentication/useAuthenticationReducer.d.ts +0 -2
  143. package/lib/hooks/authentication/authentication/useAuthenticationReducer.js +0 -8
  144. package/lib/hooks/authentication/credentials/useCredentialsReducer.d.ts +0 -2
  145. package/lib/providers/authentication/auth/actions.d.ts +0 -8
  146. package/lib/providers/authentication/auth/actions.js +0 -12
  147. package/lib/providers/authentication/auth/constants.d.ts +0 -2
  148. package/lib/providers/authentication/authentication/actions.d.ts +0 -8
  149. package/lib/providers/authentication/authentication/actions.js +0 -12
  150. package/lib/providers/authentication/authentication/constants.d.ts +0 -2
  151. package/lib/providers/authentication/authentication/context.d.ts +0 -2
  152. package/lib/providers/authentication/common/types.d.ts +0 -1
  153. package/lib/providers/authentication/credentials/actions.d.ts +0 -8
  154. package/lib/providers/authentication/credentials/actions.js +0 -12
  155. package/lib/providers/authentication/credentials/constants.d.ts +0 -2
  156. package/lib/providers/authentication/credentials/context.d.ts +0 -2
  157. package/lib/providers/authentication/credentials/dispatch.d.ts +0 -12
  158. package/lib/providers/authentication/terra/context.d.ts +0 -2
  159. package/lib/providers/authentication/terra/hooks/common/constants.d.ts +0 -6
  160. package/lib/providers/authentication/terra/hooks/common/entities.d.ts +0 -21
  161. package/lib/providers/authentication/terra/hooks/common/entities.js +0 -7
  162. package/lib/providers/authentication/terra/hooks/common/utils.d.ts +0 -15
  163. package/lib/providers/authentication/terra/hooks/common/utils.js +0 -25
  164. package/lib/providers/authentication/terra/hooks/utils.d.ts +0 -16
  165. package/lib/providers/authentication/terra/hooks/utils.js +0 -19
  166. package/lib/providers/authentication/terra/provider.d.ts +0 -3
  167. package/lib/providers/authentication/terra/types.d.ts +0 -20
  168. package/lib/providers/authentication/terra/types.js +0 -6
  169. package/lib/providers/authentication/terra/utils.d.ts +0 -19
  170. package/lib/providers/authentication/token/constants.d.ts +0 -2
  171. package/lib/providers/googleSignInAuthentication/common/types.d.ts +0 -17
  172. package/lib/providers/googleSignInAuthentication/constants.d.ts +0 -4
  173. package/lib/providers/googleSignInAuthentication/constants.js +0 -12
  174. package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.d.ts +0 -3
  175. package/lib/providers/googleSignInAuthentication/profile/types.d.ts +0 -14
  176. package/lib/providers/googleSignInAuthentication/provider.d.ts +0 -3
  177. package/lib/providers/googleSignInAuthentication/service/constants.d.ts +0 -4
  178. package/lib/providers/googleSignInAuthentication/service/constants.js +0 -9
  179. package/lib/providers/googleSignInAuthentication/service/service.d.ts +0 -6
  180. package/lib/providers/googleSignInAuthentication/types.d.ts +0 -6
  181. package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.d.ts +0 -2
  182. package/lib/providers/nextAuthAuthentication/provider.d.ts +0 -3
  183. package/lib/providers/nextAuthAuthentication/service/service.d.ts +0 -6
  184. /package/lib/{hooks/authentication/session → auth/hooks}/useSessionIdleTimer.d.ts +0 -0
  185. /package/lib/{hooks/authentication/session → auth/hooks}/useSessionIdleTimer.js +0 -0
  186. /package/lib/{components/Authentication/components/SessionController/components/GoogleSessionController/types.js → auth/types/common.js} +0 -0
  187. /package/lib/{components/Authentication/components/SessionController/components/NextSessionController/types.js → auth/types/loginProvider.js} +0 -0
  188. /package/lib/{providers/authentication/common/utils.d.ts → auth/utils/initializer.d.ts} +0 -0
  189. /package/lib/{providers/authentication/common/utils.js → auth/utils/initializer.js} +0 -0
  190. /package/lib/{providers/authentication/common → google}/types.js +0 -0
  191. /package/lib/{providers/googleSignInAuthentication/common → nextauth}/types.js +0 -0
  192. /package/lib/{providers/googleSignInAuthentication/profile/types.js → terra/types/context.js} +0 -0
  193. /package/lib/{providers/googleSignInAuthentication/types.js → terra/types/terra-nih.js} +0 -0
  194. /package/lib/{providers/nextAuthAuthentication/types.js → terra/types/terra-profile.js} +0 -0
@@ -1,10 +1,15 @@
1
1
  import { useEffect, useState } from "react";
2
- import { useAuthentication } from "../../authentication/hook";
3
- import { TERRA_PROFILE_STATUS } from "../types";
2
+ import { useAuthentication } from "../../auth/hooks/useAuthentication";
3
+ import { TERRA_PROFILE_STATUS } from "../types/common";
4
4
  import { getProfileStatus } from "../utils";
5
- import { useFetchTerraNIHProfile, } from "./useFetchTerraNIHProfile";
5
+ import { useFetchTerraNIHProfile } from "./useFetchTerraNIHProfile";
6
6
  import { useFetchTerraProfile } from "./useFetchTerraProfile";
7
- import { useFetchTerraTermsOfService, } from "./useFetchTerraTermsOfService";
7
+ import { useFetchTerraTermsOfService } from "./useFetchTerraTermsOfService";
8
+ /**
9
+ * Fetches all Terra profiles.
10
+ * @param token - Token.
11
+ * @returns fetch profiles state.
12
+ */
8
13
  export const useFetchProfiles = (token) => {
9
14
  const [status, setStatus] = useState(TERRA_PROFILE_STATUS.PENDING);
10
15
  const { authenticationState: { profile }, } = useAuthentication();
@@ -1,10 +1,6 @@
1
- import { LoginStatus } from "./common/entities";
1
+ import { LoginStatus } from "../types/common";
2
+ import { TerraNIHResponse } from "../types/terra-nih";
2
3
  type Status = LoginStatus<TerraNIHResponse>;
3
- export interface TerraNIHResponse {
4
- authenticated?: boolean;
5
- expirationTimestamp: string;
6
- externalUserId: string;
7
- }
8
4
  /**
9
5
  * Returns Terra NIH login status from configured endpoint.
10
6
  * @param token - Token.
@@ -1,9 +1,8 @@
1
1
  import { useCallback, useEffect, useState } from "react";
2
- import { useAuthenticationConfig } from "../../../../hooks/authentication/config/useAuthenticationConfig";
3
- import { LOGIN_STATUS_FAILED, LOGIN_STATUS_NOT_STARTED, LOGIN_STATUS_PENDING, TERRA_SERVICE_ID, } from "./common/constants";
4
- import { REQUEST_STATUS } from "./common/entities";
5
- import { getAuthenticationRequestOptions, initLoginStatus, } from "./common/utils";
6
- import { getServiceEndpoint } from "./utils";
2
+ import { useAuthenticationConfig } from "../../hooks/authentication/config/useAuthenticationConfig";
3
+ import { LOGIN_STATUS_FAILED, LOGIN_STATUS_NOT_STARTED, LOGIN_STATUS_PENDING, TERRA_SERVICE_ID, } from "../constants";
4
+ import { REQUEST_STATUS } from "../types/common";
5
+ import { getAuthenticationRequestOptions, getServiceEndpoint, initLoginStatus, } from "../utils";
7
6
  const ENDPOINT_ID = "nihStatus";
8
7
  /**
9
8
  * Returns Terra NIH login status from configured endpoint.
@@ -0,0 +1,10 @@
1
+ import { LoginStatus } from "../types/common";
2
+ import { TerraResponse } from "../types/terra-profile";
3
+ type Status = LoginStatus<TerraResponse>;
4
+ /**
5
+ * Returns Terra profile login status from configured endpoint.
6
+ * @param token - Token.
7
+ * @returns Terra profile login status.
8
+ */
9
+ export declare const useFetchTerraProfile: (token?: string) => Status;
10
+ export {};
@@ -1,9 +1,8 @@
1
1
  import { useCallback, useEffect, useState } from "react";
2
- import { useAuthenticationConfig } from "../../../../hooks/authentication/config/useAuthenticationConfig";
3
- import { LOGIN_STATUS_FAILED, LOGIN_STATUS_NOT_STARTED, LOGIN_STATUS_PENDING, TERRA_SERVICE_ID, } from "./common/constants";
4
- import { REQUEST_STATUS, } from "./common/entities";
5
- import { getAuthenticationRequestOptions, initLoginStatus, } from "./common/utils";
6
- import { getServiceEndpoint } from "./utils";
2
+ import { useAuthenticationConfig } from "../../hooks/authentication/config/useAuthenticationConfig";
3
+ import { LOGIN_STATUS_FAILED, LOGIN_STATUS_NOT_STARTED, LOGIN_STATUS_PENDING, TERRA_SERVICE_ID, } from "../constants";
4
+ import { REQUEST_STATUS, } from "../types/common";
5
+ import { getAuthenticationRequestOptions, getServiceEndpoint, initLoginStatus, } from "../utils";
7
6
  const ENDPOINT_ID = "profile";
8
7
  /**
9
8
  * Returns Terra profile login status from configured endpoint.
@@ -1,11 +1,6 @@
1
- import { LoginStatus } from "./common/entities";
1
+ import { LoginStatus } from "../types/common";
2
+ import { TerraTermsOfServiceResponse } from "../types/terra-tos";
2
3
  type Status = LoginStatus<TerraTermsOfServiceResponse>;
3
- export interface TerraTermsOfServiceResponse {
4
- currentVersion: string;
5
- isEnabled: boolean;
6
- isGracePeriodEnabled: boolean;
7
- userAcceptedVersion?: string;
8
- }
9
4
  /**
10
5
  * Returns Terra terms of service login status from configured endpoint.
11
6
  * @param token - Token.
@@ -1,9 +1,8 @@
1
1
  import { useCallback, useEffect, useState } from "react";
2
- import { useAuthenticationConfig } from "../../../../hooks/authentication/config/useAuthenticationConfig";
3
- import { LOGIN_STATUS_FAILED, LOGIN_STATUS_NOT_STARTED, LOGIN_STATUS_PENDING, TERRA_SERVICE_ID, } from "./common/constants";
4
- import { REQUEST_STATUS, } from "./common/entities";
5
- import { getAuthenticationRequestOptions, initLoginStatus, } from "./common/utils";
6
- import { getServiceEndpoint } from "./utils";
2
+ import { useAuthenticationConfig } from "../../hooks/authentication/config/useAuthenticationConfig";
3
+ import { LOGIN_STATUS_FAILED, LOGIN_STATUS_NOT_STARTED, LOGIN_STATUS_PENDING, TERRA_SERVICE_ID, } from "../constants";
4
+ import { REQUEST_STATUS, } from "../types/common";
5
+ import { getAuthenticationRequestOptions, getServiceEndpoint, initLoginStatus, } from "../utils";
7
6
  const ENDPOINT_ID = "tos";
8
7
  /**
9
8
  * Returns Terra terms of service login status from configured endpoint.
@@ -1,4 +1,4 @@
1
- import { TerraProfileContextProps } from "./types";
1
+ import { TerraProfileContextProps } from "../types/context";
2
2
  /**
3
3
  * Terra profile hook.
4
4
  * @returns terra profile context.
@@ -1,5 +1,5 @@
1
1
  import { useContext } from "react";
2
- import { TerraProfileContext } from "./context";
2
+ import { TerraProfileContext } from "../context";
3
3
  /**
4
4
  * Terra profile hook.
5
5
  * @returns terra profile context.
@@ -0,0 +1,10 @@
1
+ import { JSX } from "react";
2
+ import { TerraProfileProviderProps } from "./types/common";
3
+ /**
4
+ * Terra profile provider.
5
+ * @param props - Provider props.
6
+ * @param props.children - Children components.
7
+ * @param props.token - OAuth access token.
8
+ * @returns terra profile provider component.
9
+ */
10
+ export declare function TerraProfileProvider({ children, token, }: TerraProfileProviderProps): JSX.Element;
@@ -1,13 +1,20 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect } from "react";
3
- import { authComplete } from "../auth/dispatch";
4
- import { useAuth } from "../auth/hook";
5
- import { authenticationComplete } from "../authentication/dispatch";
6
- import { useAuthentication } from "../authentication/hook";
7
- import { updateCredentials } from "../credentials/dispatch";
8
- import { useCredentials } from "../credentials/hook";
3
+ import { authComplete } from "../auth/dispatch/auth";
4
+ import { authenticationComplete } from "../auth/dispatch/authentication";
5
+ import { updateCredentials } from "../auth/dispatch/credentials";
6
+ import { useAuth } from "../auth/hooks/useAuth";
7
+ import { useAuthentication } from "../auth/hooks/useAuthentication";
8
+ import { useCredentials } from "../auth/hooks/useCredentials";
9
9
  import { TerraProfileContext } from "./context";
10
10
  import { useFetchProfiles } from "./hooks/useFetchProfiles";
11
+ /**
12
+ * Terra profile provider.
13
+ * @param props - Provider props.
14
+ * @param props.children - Children components.
15
+ * @param props.token - OAuth access token.
16
+ * @returns terra profile provider component.
17
+ */
11
18
  export function TerraProfileProvider({ children, token, }) {
12
19
  const { authDispatch } = useAuth();
13
20
  const { authenticationDispatch } = useAuthentication();
@@ -0,0 +1,50 @@
1
+ import { ReactNode } from "react";
2
+ import { TokenState } from "../../auth/types/token";
3
+ /**
4
+ * Terra profile status enum.
5
+ */
6
+ export declare enum TERRA_PROFILE_STATUS {
7
+ AUTHENTICATED = "AUTHENTICATED",
8
+ PENDING = "PENDING",
9
+ UNAUTHENTICATED = "UNAUTHENTICATED"
10
+ }
11
+ /**
12
+ * Request status enum.
13
+ */
14
+ export declare enum REQUEST_STATUS {
15
+ COMPLETED = "COMPLETED",
16
+ FAILED = "FAILED",
17
+ NOT_STARTED = "NOT_STARTED",
18
+ PENDING = "PENDING"
19
+ }
20
+ /**
21
+ * Terra profile provider props.
22
+ */
23
+ export interface TerraProfileProviderProps {
24
+ children: ReactNode;
25
+ token: TokenState["token"];
26
+ }
27
+ /**
28
+ * Login response error.
29
+ */
30
+ export interface LoginResponseError {
31
+ message: string;
32
+ source: string;
33
+ statusCode: number;
34
+ }
35
+ /**
36
+ * Login status.
37
+ */
38
+ export interface LoginStatus<T> {
39
+ isSuccess: boolean;
40
+ isSupported: boolean;
41
+ requestStatus: REQUEST_STATUS;
42
+ response: T | undefined;
43
+ }
44
+ /**
45
+ * Auth service configuration.
46
+ */
47
+ export interface AuthService {
48
+ endpoint: Record<string, string>;
49
+ id: string;
50
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Terra profile status enum.
3
+ */
4
+ export var TERRA_PROFILE_STATUS;
5
+ (function (TERRA_PROFILE_STATUS) {
6
+ TERRA_PROFILE_STATUS["AUTHENTICATED"] = "AUTHENTICATED";
7
+ TERRA_PROFILE_STATUS["PENDING"] = "PENDING";
8
+ TERRA_PROFILE_STATUS["UNAUTHENTICATED"] = "UNAUTHENTICATED";
9
+ })(TERRA_PROFILE_STATUS || (TERRA_PROFILE_STATUS = {}));
10
+ /**
11
+ * Request status enum.
12
+ */
13
+ export var REQUEST_STATUS;
14
+ (function (REQUEST_STATUS) {
15
+ REQUEST_STATUS["COMPLETED"] = "COMPLETED";
16
+ REQUEST_STATUS["FAILED"] = "FAILED";
17
+ REQUEST_STATUS["NOT_STARTED"] = "NOT_STARTED";
18
+ REQUEST_STATUS["PENDING"] = "PENDING";
19
+ })(REQUEST_STATUS || (REQUEST_STATUS = {}));
@@ -0,0 +1,12 @@
1
+ import { LoginStatus } from "./common";
2
+ import { TerraNIHResponse } from "./terra-nih";
3
+ import { TerraResponse } from "./terra-profile";
4
+ import { TerraTermsOfServiceResponse } from "./terra-tos";
5
+ /**
6
+ * Terra profile context props.
7
+ */
8
+ export interface TerraProfileContextProps {
9
+ terraNIHProfileLoginStatus: LoginStatus<TerraNIHResponse>;
10
+ terraProfileLoginStatus: LoginStatus<TerraResponse>;
11
+ terraTOSLoginStatus: LoginStatus<TerraTermsOfServiceResponse>;
12
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Terra NIH response.
3
+ */
4
+ export interface TerraNIHResponse {
5
+ authenticated?: boolean;
6
+ expirationTimestamp: string;
7
+ externalUserId: string;
8
+ }
@@ -1,9 +1,13 @@
1
- import { LoginStatus } from "./common/entities";
2
- type Status = LoginStatus<TerraResponse>;
1
+ /**
2
+ * Terra profile response.
3
+ */
3
4
  export interface TerraResponse {
4
5
  enabled: TerraResponseEnabled;
5
6
  userInfo: TerraResponseUserInfo;
6
7
  }
8
+ /**
9
+ * Terra enabled flags.
10
+ */
7
11
  interface TerraResponseEnabled {
8
12
  adminEnabled: boolean;
9
13
  allUsersGroup: boolean;
@@ -11,14 +15,11 @@ interface TerraResponseEnabled {
11
15
  ldap: boolean;
12
16
  tosAccepted: boolean;
13
17
  }
18
+ /**
19
+ * Terra user info.
20
+ */
14
21
  interface TerraResponseUserInfo {
15
22
  userEmail: string;
16
23
  userSubjectId: string;
17
24
  }
18
- /**
19
- * Returns Terra profile login status from configured endpoint.
20
- * @param token - Token.
21
- * @returns Terra profile login status.
22
- */
23
- export declare const useFetchTerraProfile: (token?: string) => Status;
24
25
  export {};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Terra terms of service response.
3
+ */
4
+ export interface TerraTermsOfServiceResponse {
5
+ currentVersion: string;
6
+ isEnabled: boolean;
7
+ isGracePeriodEnabled: boolean;
8
+ userAcceptedVersion?: string;
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,47 @@
1
+ import { AuthService, LoginStatus, TERRA_PROFILE_STATUS } from "./types/common";
2
+ import { TerraNIHResponse } from "./types/terra-nih";
3
+ import { TerraResponse } from "./types/terra-profile";
4
+ import { TerraTermsOfServiceResponse } from "./types/terra-tos";
5
+ /**
6
+ * Returns the options for an authentication request.
7
+ * @param token - Token.
8
+ * @returns request options.
9
+ */
10
+ export declare function getAuthenticationRequestOptions(token: string): RequestInit;
11
+ /**
12
+ * Returns login status.
13
+ * An undefined endpoint will return a not supported login status,
14
+ * otherwise a not started login status is returned.
15
+ * @param endpoint - Endpoint.
16
+ * @returns initial login status.
17
+ */
18
+ export declare function initLoginStatus<T>(endpoint?: string): LoginStatus<T>;
19
+ /**
20
+ * Returns service endpoint.
21
+ * @param services - Services.
22
+ * @param serviceId - Service ID.
23
+ * @param endpointId - Endpoint ID.
24
+ * @returns Service endpoint.
25
+ */
26
+ export declare function getServiceEndpoint(services: AuthService[] | undefined, serviceId: string, endpointId: string): string | undefined;
27
+ /**
28
+ * Find a service by service ID.
29
+ * @param services - Services.
30
+ * @param serviceId - Service ID.
31
+ * @returns Service.
32
+ */
33
+ export declare function findService(services: AuthService[] | undefined, serviceId: string): AuthService | undefined;
34
+ /**
35
+ * Determines the status of a user based on authentication and Terra service statuses.
36
+ * **Logic:**
37
+ * - **Pending** if the user is not authenticated.
38
+ * - **Pending** if any supported Terra service request is not started or pending.
39
+ * - **Unauthenticated** if the Terra profile is supported but the Terms of Service have not been accepted.
40
+ * - **Authenticated** in all other cases.
41
+ * @param isUserAuthenticated - User authentication status.
42
+ * @param terraNIHProfileLoginStatus - Terra NIH profile login status.
43
+ * @param terraProfileLoginStatus - Terra profile login status.
44
+ * @param terraTOSLoginStatus - Terra terms of service login status.
45
+ * @returns Terra profile status.
46
+ */
47
+ export declare function getProfileStatus(isUserAuthenticated: boolean, terraNIHProfileLoginStatus: LoginStatus<TerraNIHResponse>, terraProfileLoginStatus: LoginStatus<TerraResponse>, terraTOSLoginStatus: LoginStatus<TerraTermsOfServiceResponse>): TERRA_PROFILE_STATUS;
@@ -1,5 +1,48 @@
1
- import { REQUEST_STATUS } from "./hooks/common/entities";
2
- import { TERRA_PROFILE_STATUS } from "./types";
1
+ import { LOGIN_STATUS_NOT_STARTED, LOGIN_STATUS_NOT_SUPPORTED, } from "./constants";
2
+ import { REQUEST_STATUS, TERRA_PROFILE_STATUS, } from "./types/common";
3
+ /**
4
+ * Returns the options for an authentication request.
5
+ * @param token - Token.
6
+ * @returns request options.
7
+ */
8
+ export function getAuthenticationRequestOptions(token) {
9
+ const headers = new Headers();
10
+ headers.append("authorization", "Bearer " + token);
11
+ return { headers };
12
+ }
13
+ /**
14
+ * Returns login status.
15
+ * An undefined endpoint will return a not supported login status,
16
+ * otherwise a not started login status is returned.
17
+ * @param endpoint - Endpoint.
18
+ * @returns initial login status.
19
+ */
20
+ export function initLoginStatus(endpoint) {
21
+ if (!endpoint) {
22
+ // Endpoint not supported.
23
+ return LOGIN_STATUS_NOT_SUPPORTED;
24
+ }
25
+ return LOGIN_STATUS_NOT_STARTED;
26
+ }
27
+ /**
28
+ * Returns service endpoint.
29
+ * @param services - Services.
30
+ * @param serviceId - Service ID.
31
+ * @param endpointId - Endpoint ID.
32
+ * @returns Service endpoint.
33
+ */
34
+ export function getServiceEndpoint(services, serviceId, endpointId) {
35
+ return findService(services, serviceId)?.endpoint[endpointId];
36
+ }
37
+ /**
38
+ * Find a service by service ID.
39
+ * @param services - Services.
40
+ * @param serviceId - Service ID.
41
+ * @returns Service.
42
+ */
43
+ export function findService(services, serviceId) {
44
+ return services?.find(({ id }) => id === serviceId);
45
+ }
3
46
  /**
4
47
  * Determines the status of a user based on authentication and Terra service statuses.
5
48
  * **Logic:**
@@ -1,6 +1,6 @@
1
- import { ClientSafeProvider } from "next-auth/react";
2
1
  import { JSX } from "react";
2
+ import { LoginProvider } from "../../auth/types/loginProvider";
3
3
  export interface LoginViewProps {
4
- providers?: ClientSafeProvider[];
4
+ providers?: LoginProvider[];
5
5
  }
6
6
  export declare const LoginView: ({ providers, }: LoginViewProps) => JSX.Element | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@databiosphere/findable-ui",
3
- "version": "50.8.0",
3
+ "version": "51.0.0",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
@@ -25,6 +25,14 @@
25
25
  "lib",
26
26
  "types"
27
27
  ],
28
+ "exports": {
29
+ ".": "./lib/index.js",
30
+ "./lib/*": "./lib/*",
31
+ "./nextauth/*": "./lib/nextauth/*",
32
+ "./google/*": "./lib/google/*",
33
+ "./terra/*": "./lib/terra/*",
34
+ "./auth/*": "./lib/auth/*"
35
+ },
28
36
  "devDependencies": {
29
37
  "@commitlint/cli": "^20.2.0",
30
38
  "@commitlint/config-conventional": "^20.2.0",
@@ -54,6 +62,7 @@
54
62
  "jest": "^29.7.0",
55
63
  "jest-environment-jsdom": "^29.7.0",
56
64
  "jest-fetch-mock": "^3.0.3",
65
+ "next-auth": "^4.24.13",
57
66
  "prettier": "^3.7.4",
58
67
  "prettier-plugin-organize-imports": "^4.3.0",
59
68
  "storybook": "^10.3.3",
@@ -93,6 +102,11 @@
93
102
  "uuid": "^13.0.0",
94
103
  "yup": "^1.7.1"
95
104
  },
105
+ "peerDependenciesMeta": {
106
+ "next-auth": {
107
+ "optional": true
108
+ }
109
+ },
96
110
  "overrides": {
97
111
  "glob": "^11.0.4"
98
112
  },
@@ -1,3 +0,0 @@
1
- import { JSX } from "react";
2
- import { SessionControllerProps } from "./types";
3
- export declare function SessionController({ children, token, }: SessionControllerProps): JSX.Element;
@@ -1,6 +0,0 @@
1
- import { ReactNode } from "react";
2
- import { TokenState } from "../../../../../../providers/authentication/token/types";
3
- export interface SessionControllerProps {
4
- children: ReactNode | ReactNode[];
5
- token: TokenState["token"];
6
- }
@@ -1,3 +0,0 @@
1
- import { JSX } from "react";
2
- import { SessionControllerProps } from "./types";
3
- export declare function SessionController({ children, }: SessionControllerProps): JSX.Element;
@@ -1,4 +0,0 @@
1
- import { ReactNode } from "react";
2
- export interface SessionControllerProps {
3
- children: ReactNode | ReactNode[];
4
- }
@@ -1,2 +0,0 @@
1
- import { AuthContextProps } from "../../../providers/authentication/auth/types";
2
- export declare const useAuthReducer: (initialState?: import("../../../providers/authentication/auth/types").AuthState) => Omit<AuthContextProps, "service">;
@@ -1,8 +0,0 @@
1
- import { useReducer } from "react";
2
- import { DEFAULT_AUTH_STATE } from "../../../providers/authentication/auth/constants";
3
- import { authReducer } from "../../../providers/authentication/auth/reducer";
4
- import { initializer } from "../../../providers/authentication/common/utils";
5
- export const useAuthReducer = (initialState = DEFAULT_AUTH_STATE) => {
6
- const [authState, authDispatch] = useReducer(authReducer, initialState, initializer);
7
- return { authDispatch, authState };
8
- };
@@ -1,2 +0,0 @@
1
- import { AuthenticationContextProps } from "../../../providers/authentication/authentication/types";
2
- export declare const useAuthenticationReducer: (initialState?: import("../../../providers/authentication/authentication/types").AuthenticationState) => AuthenticationContextProps;
@@ -1,8 +0,0 @@
1
- import { useReducer } from "react";
2
- import { DEFAULT_AUTHENTICATION_STATE } from "../../../providers/authentication/authentication/constants";
3
- import { authenticationReducer } from "../../../providers/authentication/authentication/reducer";
4
- import { initializer } from "../../../providers/authentication/common/utils";
5
- export const useAuthenticationReducer = (initialState = DEFAULT_AUTHENTICATION_STATE) => {
6
- const [authenticationState, authenticationDispatch] = useReducer(authenticationReducer, initialState, initializer);
7
- return { authenticationDispatch, authenticationState };
8
- };
@@ -1,2 +0,0 @@
1
- import { CredentialsContextProps } from "../../../providers/authentication/credentials/types";
2
- export declare const useCredentialsReducer: () => CredentialsContextProps;
@@ -1,8 +0,0 @@
1
- import { AuthState, UpdateAuthStatePayload } from "./types";
2
- /**
3
- * Update auth state.
4
- * @param state - State.
5
- * @param payload - Payload.
6
- * @returns state.
7
- */
8
- export declare function updateAuthState(state: AuthState, payload: UpdateAuthStatePayload): AuthState;
@@ -1,12 +0,0 @@
1
- /**
2
- * Update auth state.
3
- * @param state - State.
4
- * @param payload - Payload.
5
- * @returns state.
6
- */
7
- export function updateAuthState(state, payload) {
8
- return {
9
- ...state,
10
- ...payload,
11
- };
12
- }
@@ -1,2 +0,0 @@
1
- import { AuthState } from "./types";
2
- export declare const DEFAULT_AUTH_STATE: AuthState;
@@ -1,8 +0,0 @@
1
- import { AuthenticationState, UpdateAuthenticationPayload } from "./types";
2
- /**
3
- * Update authentication action.
4
- * @param state - State.
5
- * @param payload - Payload.
6
- * @returns state.
7
- */
8
- export declare function updateAuthenticationAction(state: AuthenticationState, payload: UpdateAuthenticationPayload): AuthenticationState;
@@ -1,12 +0,0 @@
1
- /**
2
- * Update authentication action.
3
- * @param state - State.
4
- * @param payload - Payload.
5
- * @returns state.
6
- */
7
- export function updateAuthenticationAction(state, payload) {
8
- return {
9
- ...state,
10
- ...payload,
11
- };
12
- }
@@ -1,2 +0,0 @@
1
- import { AuthenticationState } from "./types";
2
- export declare const DEFAULT_AUTHENTICATION_STATE: AuthenticationState;
@@ -1,2 +0,0 @@
1
- import { AuthenticationContextProps } from "./types";
2
- export declare const AuthenticationContext: import("react").Context<AuthenticationContextProps>;
@@ -1 +0,0 @@
1
- export type ProviderId = string;
@@ -1,8 +0,0 @@
1
- import { CredentialsState, UpdateCredentialsPayload } from "./types";
2
- /**
3
- * Update credentials action.
4
- * @param state - State.
5
- * @param payload - Payload.
6
- * @returns state.
7
- */
8
- export declare function updateCredentialsAction(state: CredentialsState, payload: UpdateCredentialsPayload): CredentialsState;
@@ -1,12 +0,0 @@
1
- /**
2
- * Update credentials action.
3
- * @param state - State.
4
- * @param payload - Payload.
5
- * @returns state.
6
- */
7
- export function updateCredentialsAction(state, payload) {
8
- return {
9
- ...state,
10
- credentials: payload,
11
- };
12
- }
@@ -1,2 +0,0 @@
1
- import { CredentialsState } from "./types";
2
- export declare const DEFAULT_CREDENTIALS_STATE: CredentialsState;
@@ -1,2 +0,0 @@
1
- import { CredentialsContextProps } from "./types";
2
- export declare const CredentialsContext: import("react").Context<CredentialsContextProps>;
@@ -1,12 +0,0 @@
1
- import { ResetStateAction, UpdateCredentialsAction, UpdateCredentialsPayload } from "./types";
2
- /**
3
- * Update credentials action.
4
- * @returns Action.
5
- */
6
- export declare function resetState(): ResetStateAction;
7
- /**
8
- * Update credentials action.
9
- * @param payload - Payload.
10
- * @returns Action.
11
- */
12
- export declare function updateCredentials(payload: UpdateCredentialsPayload): UpdateCredentialsAction;
@@ -1,2 +0,0 @@
1
- import { TerraProfileContextProps } from "./types";
2
- export declare const TerraProfileContext: import("react").Context<TerraProfileContextProps>;
@@ -1,6 +0,0 @@
1
- import { LoginResponse, LoginStatus } from "./entities";
2
- export declare const LOGIN_STATUS_FAILED: LoginStatus<LoginResponse>;
3
- export declare const LOGIN_STATUS_NOT_STARTED: LoginStatus<LoginResponse>;
4
- export declare const LOGIN_STATUS_NOT_SUPPORTED: LoginStatus<LoginResponse>;
5
- export declare const LOGIN_STATUS_PENDING: LoginStatus<LoginResponse>;
6
- export declare const TERRA_SERVICE_ID = "terra";