@databiosphere/findable-ui 19.0.0 → 20.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 (363) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +11 -0
  3. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.d.ts +2 -0
  4. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.js +29 -0
  5. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/types.d.ts +6 -0
  6. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/types.js +1 -0
  7. package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.d.ts +2 -0
  8. package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.js +17 -0
  9. package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.d.ts +5 -0
  10. package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.js +12 -0
  11. package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.d.ts +4 -0
  12. package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.js +1 -0
  13. package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.d.ts +15 -0
  14. package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.js +53 -0
  15. package/lib/components/ComponentCreator/ComponentCreator.js +2 -3
  16. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.js +2 -2
  17. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.js +1 -1
  18. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.js +8 -3
  19. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.d.ts +2 -1
  20. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.js +17 -14
  21. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.d.ts +3 -4
  22. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.js +15 -24
  23. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.d.ts +1 -1
  24. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.js +2 -2
  25. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.d.ts +2 -0
  26. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.js +14 -0
  27. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.js +3 -2
  28. package/lib/components/Layout/components/Header/header.js +1 -1
  29. package/lib/components/Login/components/Button/button.d.ts +2 -0
  30. package/lib/components/Login/components/Button/button.js +6 -0
  31. package/lib/components/Login/components/Button/button.styles.d.ts +5 -0
  32. package/lib/components/Login/components/Button/button.styles.js +11 -0
  33. package/lib/components/Login/components/Button/constants.d.ts +2 -0
  34. package/lib/components/Login/components/Button/constants.js +6 -0
  35. package/lib/components/Login/components/Button/types.d.ts +3 -0
  36. package/lib/components/Login/components/Button/types.js +1 -0
  37. package/lib/components/Login/login.d.ts +2 -9
  38. package/lib/components/Login/login.js +9 -10
  39. package/lib/components/Login/types.d.ts +10 -0
  40. package/lib/components/Login/types.js +1 -0
  41. package/lib/components/common/Banner/components/SessionTimeout/sessionTimeout.js +1 -1
  42. package/lib/components/common/CustomIcon/common/entities.d.ts +1 -4
  43. package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.d.ts +2 -2
  44. package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.js +1 -1
  45. package/lib/config/entities.d.ts +22 -23
  46. package/lib/hooks/authentication/auth/useAuthReducer.d.ts +2 -0
  47. package/lib/hooks/authentication/auth/useAuthReducer.js +8 -0
  48. package/lib/hooks/authentication/authentication/useAuthenticationReducer.d.ts +2 -0
  49. package/lib/hooks/authentication/authentication/useAuthenticationReducer.js +8 -0
  50. package/lib/hooks/authentication/config/useAuthenticationConfig.d.ts +6 -0
  51. package/lib/hooks/authentication/config/useAuthenticationConfig.js +9 -0
  52. package/lib/hooks/authentication/credentials/useCredentialsReducer.d.ts +2 -0
  53. package/lib/hooks/authentication/credentials/useCredentialsReducer.js +7 -0
  54. package/lib/hooks/authentication/profile/types.d.ts +5 -0
  55. package/lib/hooks/authentication/profile/types.js +1 -0
  56. package/lib/hooks/authentication/profile/useProfile.d.ts +6 -0
  57. package/lib/hooks/authentication/profile/useProfile.js +15 -0
  58. package/lib/hooks/authentication/providers/types.d.ts +6 -0
  59. package/lib/hooks/authentication/providers/types.js +1 -0
  60. package/lib/hooks/authentication/providers/useProviders.d.ts +6 -0
  61. package/lib/hooks/authentication/providers/useProviders.js +14 -0
  62. package/lib/hooks/authentication/session/useSessionActive.d.ts +12 -0
  63. package/lib/hooks/authentication/session/useSessionActive.js +36 -0
  64. package/lib/hooks/authentication/session/useSessionCallbackUrl.d.ts +4 -0
  65. package/lib/hooks/authentication/session/useSessionCallbackUrl.js +20 -0
  66. package/lib/hooks/authentication/session/useSessionIdleTimer.d.ts +6 -0
  67. package/lib/hooks/authentication/session/useSessionIdleTimer.js +8 -0
  68. package/lib/hooks/{useSessionTimeout.js → authentication/session/useSessionTimeout.js} +2 -2
  69. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.d.ts +0 -1
  70. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.js +6 -9
  71. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.js +3 -4
  72. package/lib/hooks/authentication/token/types.d.ts +4 -0
  73. package/lib/hooks/authentication/token/types.js +1 -0
  74. package/lib/hooks/authentication/token/useToken.d.ts +2 -0
  75. package/lib/hooks/authentication/token/useToken.js +5 -0
  76. package/lib/hooks/authentication/token/useTokenReducer.d.ts +7 -0
  77. package/lib/hooks/authentication/token/useTokenReducer.js +12 -0
  78. package/lib/hooks/useEntityList.js +2 -2
  79. package/lib/hooks/useFetchEntity.js +4 -3
  80. package/lib/hooks/useFileManifest/useFetchFilesFacets.js +2 -3
  81. package/lib/hooks/useFileManifest/useFetchSummary.js +2 -3
  82. package/lib/hooks/useRequestFileLocation.js +2 -3
  83. package/lib/hooks/useRouteHistory.d.ts +14 -0
  84. package/lib/hooks/useRouteHistory.js +40 -0
  85. package/lib/hooks/useRouteRoot.d.ts +1 -0
  86. package/lib/hooks/useRouteRoot.js +8 -0
  87. package/lib/hooks/useSummary.js +3 -3
  88. package/lib/providers/authentication/auth/actions.d.ts +8 -0
  89. package/lib/providers/authentication/auth/actions.js +12 -0
  90. package/lib/providers/authentication/auth/constants.d.ts +2 -0
  91. package/lib/providers/authentication/auth/constants.js +5 -0
  92. package/lib/providers/authentication/auth/context.d.ts +2 -0
  93. package/lib/providers/authentication/auth/context.js +7 -0
  94. package/lib/providers/authentication/auth/dispatch.d.ts +23 -0
  95. package/lib/providers/authentication/auth/dispatch.js +43 -0
  96. package/lib/providers/authentication/auth/hook.d.ts +6 -0
  97. package/lib/providers/authentication/auth/hook.js +9 -0
  98. package/lib/providers/authentication/auth/reducer.d.ts +8 -0
  99. package/lib/providers/authentication/auth/reducer.js +24 -0
  100. package/lib/providers/authentication/auth/types.d.ts +48 -0
  101. package/lib/providers/authentication/auth/types.js +11 -0
  102. package/lib/providers/authentication/authentication/actions.d.ts +8 -0
  103. package/lib/providers/authentication/authentication/actions.js +12 -0
  104. package/lib/providers/authentication/authentication/constants.d.ts +2 -0
  105. package/lib/providers/authentication/authentication/constants.js +5 -0
  106. package/lib/providers/authentication/authentication/context.d.ts +2 -0
  107. package/lib/providers/authentication/authentication/context.js +6 -0
  108. package/lib/providers/authentication/authentication/dispatch.d.ts +22 -0
  109. package/lib/providers/authentication/authentication/dispatch.js +42 -0
  110. package/lib/providers/authentication/authentication/hook.d.ts +6 -0
  111. package/lib/providers/authentication/authentication/hook.js +9 -0
  112. package/lib/providers/authentication/authentication/reducer.d.ts +9 -0
  113. package/lib/providers/authentication/authentication/reducer.js +25 -0
  114. package/lib/providers/authentication/authentication/types.d.ts +47 -0
  115. package/lib/providers/authentication/authentication/types.js +11 -0
  116. package/lib/providers/authentication/authentication/utils.d.ts +12 -0
  117. package/lib/providers/authentication/authentication/utils.js +18 -0
  118. package/lib/providers/authentication/common/types.d.ts +1 -0
  119. package/lib/providers/authentication/common/types.js +1 -0
  120. package/lib/providers/authentication/common/utils.d.ts +6 -0
  121. package/lib/providers/authentication/common/utils.js +11 -0
  122. package/lib/providers/authentication/credentials/actions.d.ts +8 -0
  123. package/lib/providers/authentication/credentials/actions.js +12 -0
  124. package/lib/providers/authentication/credentials/constants.d.ts +2 -0
  125. package/lib/providers/authentication/credentials/constants.js +3 -0
  126. package/lib/providers/authentication/credentials/context.d.ts +2 -0
  127. package/lib/providers/authentication/credentials/context.js +6 -0
  128. package/lib/providers/authentication/credentials/dispatch.d.ts +12 -0
  129. package/lib/providers/authentication/credentials/dispatch.js +22 -0
  130. package/lib/providers/authentication/credentials/hook.d.ts +6 -0
  131. package/lib/providers/authentication/credentials/hook.js +9 -0
  132. package/lib/providers/authentication/credentials/reducer.d.ts +8 -0
  133. package/lib/providers/authentication/credentials/reducer.js +22 -0
  134. package/lib/providers/authentication/credentials/types.d.ts +24 -0
  135. package/lib/providers/authentication/credentials/types.js +5 -0
  136. package/lib/providers/authentication/terra/context.d.ts +2 -0
  137. package/lib/providers/authentication/terra/context.js +7 -0
  138. package/lib/providers/authentication/terra/hook.d.ts +6 -0
  139. package/lib/providers/authentication/terra/hook.js +9 -0
  140. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.d.ts +2 -0
  141. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.js +7 -0
  142. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.d.ts +3 -7
  143. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.js +1 -5
  144. package/lib/providers/authentication/terra/hooks/useFetchProfiles.d.ts +13 -0
  145. package/lib/providers/authentication/terra/hooks/useFetchProfiles.js +31 -0
  146. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.js +11 -6
  147. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.js +11 -6
  148. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.js +11 -6
  149. package/lib/providers/authentication/terra/hooks/utils.d.ts +16 -0
  150. package/lib/providers/authentication/terra/hooks/utils.js +19 -0
  151. package/lib/providers/authentication/terra/provider.d.ts +2 -0
  152. package/lib/providers/authentication/terra/provider.js +42 -0
  153. package/lib/providers/authentication/terra/types.d.ts +20 -0
  154. package/lib/providers/authentication/terra/types.js +6 -0
  155. package/lib/providers/authentication/terra/utils.d.ts +19 -0
  156. package/lib/providers/authentication/terra/utils.js +36 -0
  157. package/lib/providers/authentication/token/constants.d.ts +2 -0
  158. package/lib/providers/authentication/token/constants.js +4 -0
  159. package/lib/providers/authentication/token/dispatch.d.ts +12 -0
  160. package/lib/providers/authentication/token/dispatch.js +22 -0
  161. package/lib/providers/authentication/token/reducer.d.ts +8 -0
  162. package/lib/providers/authentication/token/reducer.js +22 -0
  163. package/lib/providers/authentication/token/types.d.ts +28 -0
  164. package/lib/providers/authentication/token/types.js +5 -0
  165. package/lib/providers/exploreState.js +3 -5
  166. package/lib/providers/googleSignInAuthentication/common/types.d.ts +17 -0
  167. package/lib/providers/googleSignInAuthentication/common/types.js +1 -0
  168. package/lib/providers/googleSignInAuthentication/constants.d.ts +4 -0
  169. package/lib/providers/googleSignInAuthentication/constants.js +12 -0
  170. package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.d.ts +3 -0
  171. package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.js +36 -0
  172. package/lib/providers/googleSignInAuthentication/profile/types.d.ts +14 -0
  173. package/lib/providers/googleSignInAuthentication/profile/types.js +1 -0
  174. package/lib/providers/googleSignInAuthentication/profile/utils.d.ts +8 -0
  175. package/lib/providers/googleSignInAuthentication/profile/utils.js +25 -0
  176. package/lib/providers/googleSignInAuthentication/provider.d.ts +2 -0
  177. package/lib/providers/googleSignInAuthentication/provider.js +40 -0
  178. package/lib/providers/googleSignInAuthentication/service/constants.d.ts +4 -0
  179. package/lib/providers/googleSignInAuthentication/service/constants.js +9 -0
  180. package/lib/providers/googleSignInAuthentication/service/service.d.ts +6 -0
  181. package/lib/providers/googleSignInAuthentication/service/service.js +43 -0
  182. package/lib/providers/googleSignInAuthentication/types.d.ts +6 -0
  183. package/lib/providers/googleSignInAuthentication/types.js +1 -0
  184. package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.d.ts +2 -0
  185. package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.js +14 -0
  186. package/lib/providers/nextAuthAuthentication/provider.d.ts +2 -0
  187. package/lib/providers/nextAuthAuthentication/provider.js +30 -0
  188. package/lib/providers/nextAuthAuthentication/service/service.d.ts +6 -0
  189. package/lib/providers/nextAuthAuthentication/service/service.js +12 -0
  190. package/lib/providers/nextAuthAuthentication/types.d.ts +8 -0
  191. package/lib/providers/nextAuthAuthentication/types.js +1 -0
  192. package/lib/routes/constants.d.ts +3 -0
  193. package/lib/routes/constants.js +3 -0
  194. package/lib/styles/common/mui/button.d.ts +3 -0
  195. package/lib/styles/common/mui/button.js +17 -0
  196. package/lib/styles/common/mui/paper.d.ts +2 -0
  197. package/lib/styles/common/mui/paper.js +9 -0
  198. package/lib/styles/common/mui/popover.d.ts +3 -0
  199. package/lib/styles/common/mui/popover.js +10 -0
  200. package/lib/theme/common/entities.d.ts +6 -0
  201. package/lib/theme/common/entities.js +1 -0
  202. package/lib/views/LoginView/loginView.d.ts +5 -1
  203. package/lib/views/LoginView/loginView.js +6 -4
  204. package/package.json +3 -2
  205. package/src/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.tsx +38 -0
  206. package/src/components/Authentication/components/SessionController/components/GoogleSessionController/types.ts +7 -0
  207. package/src/components/Authentication/components/SessionController/components/NextSessionController/SessionController.tsx +23 -0
  208. package/src/components/Authentication/components/SessionController/components/NextSessionController/constants.ts +21 -0
  209. package/src/components/Authentication/components/SessionController/components/NextSessionController/types.ts +5 -0
  210. package/src/components/Authentication/components/SessionController/components/NextSessionController/utils.ts +74 -0
  211. package/src/components/ComponentCreator/ComponentCreator.tsx +4 -3
  212. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.tsx +4 -4
  213. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.tsx +1 -1
  214. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.tsx +9 -6
  215. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.tsx +27 -25
  216. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.ts +2 -2
  217. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.tsx +18 -42
  218. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.ts +19 -0
  219. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.ts +3 -2
  220. package/src/components/Layout/components/Header/header.tsx +1 -1
  221. package/src/components/Login/components/Button/button.styles.ts +12 -0
  222. package/src/components/Login/components/Button/button.tsx +8 -0
  223. package/src/components/Login/components/Button/constants.ts +8 -0
  224. package/src/components/Login/components/Button/types.ts +4 -0
  225. package/src/components/Login/login.tsx +28 -28
  226. package/src/components/Login/types.ts +11 -0
  227. package/src/components/common/Banner/components/SessionTimeout/sessionTimeout.tsx +1 -1
  228. package/src/components/common/CustomIcon/common/entities.ts +1 -4
  229. package/src/components/common/CustomIcon/components/GoogleIcon/googleIcon.tsx +3 -4
  230. package/src/config/entities.ts +20 -25
  231. package/src/hooks/authentication/auth/useAuthReducer.ts +16 -0
  232. package/src/hooks/authentication/authentication/useAuthenticationReducer.ts +16 -0
  233. package/src/hooks/authentication/config/useAuthenticationConfig.ts +13 -0
  234. package/src/hooks/authentication/credentials/useCredentialsReducer.ts +13 -0
  235. package/src/hooks/authentication/profile/types.ts +9 -0
  236. package/src/hooks/authentication/profile/useProfile.ts +21 -0
  237. package/src/hooks/authentication/providers/types.ts +7 -0
  238. package/src/hooks/authentication/providers/useProviders.ts +23 -0
  239. package/src/hooks/authentication/session/useSessionActive.ts +51 -0
  240. package/src/hooks/authentication/session/useSessionCallbackUrl.ts +25 -0
  241. package/src/hooks/authentication/session/useSessionIdleTimer.ts +10 -0
  242. package/src/hooks/{useSessionTimeout.ts → authentication/session/useSessionTimeout.ts} +2 -2
  243. package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.ts +8 -13
  244. package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.ts +3 -4
  245. package/src/hooks/authentication/token/types.ts +5 -0
  246. package/src/hooks/authentication/token/useToken.ts +9 -0
  247. package/src/hooks/authentication/token/useTokenReducer.ts +19 -0
  248. package/src/hooks/useEntityList.ts +2 -2
  249. package/src/hooks/useFetchEntity.tsx +3 -3
  250. package/src/hooks/useFileManifest/useFetchFilesFacets.ts +2 -3
  251. package/src/hooks/useFileManifest/useFetchSummary.ts +2 -3
  252. package/src/hooks/useRequestFileLocation.ts +2 -3
  253. package/src/hooks/useRouteHistory.ts +65 -0
  254. package/src/hooks/useRouteRoot.ts +11 -0
  255. package/src/hooks/useSummary.ts +3 -3
  256. package/src/providers/authentication/auth/actions.ts +17 -0
  257. package/src/providers/authentication/auth/constants.ts +6 -0
  258. package/src/providers/authentication/auth/context.ts +9 -0
  259. package/src/providers/authentication/auth/dispatch.ts +58 -0
  260. package/src/providers/authentication/auth/hook.ts +11 -0
  261. package/src/providers/authentication/auth/reducer.ts +25 -0
  262. package/src/providers/authentication/auth/types.ts +63 -0
  263. package/src/providers/authentication/authentication/actions.ts +17 -0
  264. package/src/providers/authentication/authentication/constants.ts +6 -0
  265. package/src/providers/authentication/authentication/context.ts +8 -0
  266. package/src/providers/authentication/authentication/dispatch.ts +55 -0
  267. package/src/providers/authentication/authentication/hook.ts +11 -0
  268. package/src/providers/authentication/authentication/reducer.ts +34 -0
  269. package/src/providers/authentication/authentication/types.ts +64 -0
  270. package/src/providers/authentication/authentication/utils.ts +25 -0
  271. package/src/providers/authentication/common/types.ts +1 -0
  272. package/src/providers/authentication/common/utils.ts +11 -0
  273. package/src/providers/authentication/credentials/actions.ts +17 -0
  274. package/src/providers/authentication/credentials/constants.ts +5 -0
  275. package/src/providers/authentication/credentials/context.ts +8 -0
  276. package/src/providers/authentication/credentials/dispatch.ts +31 -0
  277. package/src/providers/authentication/credentials/hook.ts +11 -0
  278. package/src/providers/authentication/credentials/reducer.ts +30 -0
  279. package/src/providers/authentication/credentials/types.ts +33 -0
  280. package/src/providers/authentication/terra/context.ts +16 -0
  281. package/src/providers/authentication/terra/hook.ts +11 -0
  282. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.ts +9 -0
  283. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.ts +1 -7
  284. package/src/providers/authentication/terra/hooks/useFetchProfiles.ts +61 -0
  285. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.ts +18 -7
  286. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.ts +18 -7
  287. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.ts +18 -7
  288. package/src/providers/authentication/terra/hooks/utils.ts +29 -0
  289. package/src/providers/authentication/terra/provider.tsx +60 -0
  290. package/src/providers/authentication/terra/types.ts +23 -0
  291. package/src/providers/authentication/terra/utils.ts +49 -0
  292. package/src/providers/authentication/token/constants.ts +6 -0
  293. package/src/providers/authentication/token/dispatch.ts +29 -0
  294. package/src/providers/authentication/token/reducer.ts +26 -0
  295. package/src/providers/authentication/token/types.ts +36 -0
  296. package/src/providers/exploreState.tsx +3 -4
  297. package/src/providers/googleSignInAuthentication/common/types.ts +28 -0
  298. package/src/providers/googleSignInAuthentication/constants.ts +17 -0
  299. package/src/providers/googleSignInAuthentication/hooks/useGoogleSignInService.ts +53 -0
  300. package/src/providers/googleSignInAuthentication/profile/types.ts +15 -0
  301. package/src/providers/googleSignInAuthentication/profile/utils.ts +29 -0
  302. package/src/providers/googleSignInAuthentication/provider.tsx +53 -0
  303. package/src/providers/googleSignInAuthentication/service/constants.ts +16 -0
  304. package/src/providers/googleSignInAuthentication/service/service.ts +68 -0
  305. package/src/providers/googleSignInAuthentication/types.ts +7 -0
  306. package/src/providers/nextAuthAuthentication/hooks/useNextAuthService.ts +26 -0
  307. package/src/providers/nextAuthAuthentication/provider.tsx +42 -0
  308. package/src/providers/nextAuthAuthentication/service/service.ts +14 -0
  309. package/src/providers/nextAuthAuthentication/types.ts +9 -0
  310. package/src/routes/constants.ts +3 -0
  311. package/src/styles/common/mui/button.ts +20 -0
  312. package/src/styles/common/mui/paper.ts +11 -0
  313. package/src/styles/common/mui/popover.ts +19 -0
  314. package/src/theme/common/entities.ts +7 -0
  315. package/src/views/LoginView/loginView.tsx +15 -9
  316. package/tests/getProfileStatus.test.ts +290 -0
  317. package/tests/terraProfileProvider.test.tsx +121 -0
  318. package/tests/transformRoute.test.ts +21 -0
  319. package/tests/useRouteHistory.test.ts +97 -0
  320. package/tests/useSessionActive.test.ts +107 -0
  321. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.d.ts +0 -5
  322. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.js +0 -29
  323. package/lib/components/Login/login.stories.d.ts +0 -6
  324. package/lib/components/Login/login.stories.js +0 -31
  325. package/lib/components/common/Button/components/LoginButton/loginButton.d.ts +0 -3
  326. package/lib/components/common/Button/components/LoginButton/loginButton.js +0 -6
  327. package/lib/components/common/Button/components/LoginButton/loginButton.styles.d.ts +0 -7
  328. package/lib/components/common/Button/components/LoginButton/loginButton.styles.js +0 -11
  329. package/lib/hooks/useAuthentication/useAuthentication.d.ts +0 -6
  330. package/lib/hooks/useAuthentication/useAuthentication.js +0 -9
  331. package/lib/hooks/useAuthentication/useAuthenticationComplete.d.ts +0 -6
  332. package/lib/hooks/useAuthentication/useAuthenticationComplete.js +0 -55
  333. package/lib/hooks/useAuthentication/useAuthenticationStatus.d.ts +0 -20
  334. package/lib/hooks/useAuthentication/useAuthenticationStatus.js +0 -32
  335. package/lib/hooks/useAuthentication/useFetchGoogleProfile.d.ts +0 -21
  336. package/lib/hooks/useAuthentication/useFetchGoogleProfile.js +0 -41
  337. package/lib/hooks/useAuthentication/useTokenClient.d.ts +0 -11
  338. package/lib/hooks/useAuthentication/useTokenClient.js +0 -29
  339. package/lib/hooks/useAuthenticationConfig.d.ts +0 -6
  340. package/lib/hooks/useAuthenticationConfig.js +0 -14
  341. package/lib/providers/authentication.d.ts +0 -51
  342. package/lib/providers/authentication.js +0 -110
  343. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.tsx +0 -35
  344. package/src/components/Login/login.stories.tsx +0 -43
  345. package/src/components/common/Button/components/LoginButton/loginButton.styles.ts +0 -13
  346. package/src/components/common/Button/components/LoginButton/loginButton.tsx +0 -16
  347. package/src/hooks/useAuthentication/useAuthentication.tsx +0 -10
  348. package/src/hooks/useAuthentication/useAuthenticationComplete.ts +0 -66
  349. package/src/hooks/useAuthentication/useAuthenticationStatus.ts +0 -49
  350. package/src/hooks/useAuthentication/useFetchGoogleProfile.ts +0 -68
  351. package/src/hooks/useAuthentication/useTokenClient.ts +0 -54
  352. package/src/hooks/useAuthenticationConfig.ts +0 -18
  353. package/src/providers/authentication.tsx +0 -181
  354. package/tests/authentication.test.ts +0 -142
  355. package/tests/useAuthenticationStatus.test.ts +0 -155
  356. /package/lib/hooks/{useSessionTimeout.d.ts → authentication/session/useSessionTimeout.d.ts} +0 -0
  357. /package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.d.ts +0 -0
  358. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.d.ts +0 -0
  359. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.js +0 -0
  360. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.d.ts +0 -0
  361. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.d.ts +0 -0
  362. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.d.ts +0 -0
  363. /package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.ts +0 -0
@@ -1,5 +1,2 @@
1
1
  import { SvgIconProps } from "@mui/material";
2
- export interface CustomSVGIconProps extends SvgIconProps {
3
- fontSize?: SvgIconProps["fontSize"];
4
- viewBox?: string;
5
- }
2
+ export type CustomSVGIconProps = SvgIconProps;
@@ -1,5 +1,5 @@
1
- import { CustomSVGIconProps } from "../../common/entities";
1
+ import { SvgIconProps } from "@mui/material";
2
2
  /**
3
3
  * Custom Google logo icon.
4
4
  */
5
- export declare const GoogleIcon: ({ fontSize, viewBox, ...props }: CustomSVGIconProps) => JSX.Element;
5
+ export declare const GoogleIcon: ({ fontSize, viewBox, ...props }: SvgIconProps) => JSX.Element;
@@ -3,7 +3,7 @@ import React from "react";
3
3
  /**
4
4
  * Custom Google logo icon.
5
5
  */
6
- export const GoogleIcon = ({ fontSize = "xsmall", viewBox = "0 0 20 20", ...props /* Spread props to allow for Mui SvgIconProps specific prop overrides e.g. "htmlColor". */ }) => {
6
+ export const GoogleIcon = ({ fontSize = "xsmall", viewBox = "0 0 20 20", ...props }) => {
7
7
  return (React.createElement(SvgIcon, { fontSize: fontSize, viewBox: viewBox, ...props },
8
8
  React.createElement("path", { d: "M19.7874 10.2249C19.7874 9.56659 19.7291 8.94159 19.6291 8.33325H10.2124V12.0916H15.6041C15.3624 13.3249 14.6541 14.3666 13.6041 15.0749V17.5749H16.8207C18.7041 15.8333 19.7874 13.2666 19.7874 10.2249Z", fill: "#4285F4" }),
9
9
  React.createElement("path", { d: "M10.2126 20.0001C12.9126 20.0001 15.1709 19.1001 16.8209 17.5751L13.6043 15.0751C12.7043 15.6751 11.5626 16.0418 10.2126 16.0418C7.60427 16.0418 5.39593 14.2834 4.60427 11.9084H1.2876V14.4834C2.92926 17.7501 6.30427 20.0001 10.2126 20.0001Z", fill: "#34A853" }),
@@ -6,7 +6,9 @@ import { HeroTitle } from "../components/common/Title/title";
6
6
  import { FooterProps } from "../components/Layout/components/Footer/footer";
7
7
  import { HeaderProps } from "../components/Layout/components/Header/header";
8
8
  import { ExploreMode } from "../hooks/useExploreMode";
9
- import { AuthContextProps } from "../providers/authentication";
9
+ import { AuthState } from "../providers/authentication/auth/types";
10
+ import { UserProfile } from "../providers/authentication/authentication/types";
11
+ import { ProviderId } from "../providers/authentication/common/types";
10
12
  import { ExploreState } from "../providers/exploreState";
11
13
  import { FileManifestState } from "../providers/fileManifestState";
12
14
  import { SystemStatus, SystemStatusResponse } from "../providers/systemStatus";
@@ -22,13 +24,17 @@ export interface AnalyticsConfig {
22
24
  * Interface to define the authentication configuration for a given site.
23
25
  */
24
26
  export interface AuthenticationConfig {
25
- googleGISAuthConfig?: GoogleGISAuthConfig;
27
+ providers?: OAuthProvider[];
28
+ services?: AuthService[];
26
29
  termsOfService?: ReactNode;
27
- terraAuthConfig?: TerraAuthConfig;
28
30
  text?: ReactNode;
29
31
  title: string;
30
32
  warning?: ReactNode;
31
33
  }
34
+ export interface AuthService {
35
+ endpoint: Record<string, string>;
36
+ id: string;
37
+ }
32
38
  /**
33
39
  * Interface to define the set of components that will be used for the back page.
34
40
  */
@@ -169,14 +175,6 @@ export type GetIdFunction<T> = (detail: T) => string;
169
175
  * Get title function.
170
176
  */
171
177
  export type GetTitleFunction<T> = (detail?: T) => string | undefined;
172
- /**
173
- * Google GIS authentication configuration.
174
- */
175
- export interface GoogleGISAuthConfig {
176
- clientId: string;
177
- googleProfileEndpoint: string;
178
- scope: string;
179
- }
180
178
  /**
181
179
  * Grid track configuration.
182
180
  */
@@ -219,12 +217,18 @@ export interface ListViewConfig {
219
217
  rowSelectionView?: ComponentsConfig;
220
218
  subTitleHero?: ComponentsConfig;
221
219
  }
222
- /**
223
- * Interface to define the authentication login notice component.
224
- */
225
- export interface LoginNotice {
226
- conditionsUrl: string;
227
- privacyUrl: string;
220
+ export interface OAuthProvider<P = any> {
221
+ authorization: {
222
+ params: {
223
+ scope: string;
224
+ };
225
+ };
226
+ clientId: string;
227
+ icon: ReactNode;
228
+ id: ProviderId;
229
+ name: string;
230
+ profile: (profile: P) => UserProfile;
231
+ userinfo: string;
228
232
  }
229
233
  /**
230
234
  * Option Method.
@@ -345,11 +349,6 @@ export interface TabConfig {
345
349
  tabIconPosition?: MTabProps["iconPosition"];
346
350
  tabName?: string;
347
351
  }
348
- export interface TerraAuthConfig {
349
- termsOfServiceEndpoint: string;
350
- terraNIHProfileEndpoint?: string;
351
- terraProfileEndpoint: string;
352
- }
353
352
  /**
354
353
  * Theme options function.
355
354
  * Defines theme options, and provides a reference to the specified theme.
@@ -359,7 +358,7 @@ export type ThemeOptionsFn = (theme: Theme) => ThemeOptions;
359
358
  * View context.
360
359
  */
361
360
  export interface ViewContext<T extends RowData, TData = unknown> {
362
- authState: Pick<AuthContextProps, "authenticationStatus" | "isAuthenticated">;
361
+ authState: Pick<AuthState, "isAuthenticated">;
363
362
  cellContext?: CellContext<T, TData>;
364
363
  entityConfig: EntityConfig;
365
364
  exploreState: ExploreState;
@@ -0,0 +1,2 @@
1
+ import { AuthContextProps } from "../../../providers/authentication/auth/types";
2
+ export declare const useAuthReducer: (initialState?: import("../../../providers/authentication/auth/types").AuthState) => Omit<AuthContextProps, "service">;
@@ -0,0 +1,8 @@
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
+ };
@@ -0,0 +1,2 @@
1
+ import { AuthenticationContextProps } from "../../../providers/authentication/authentication/types";
2
+ export declare const useAuthenticationReducer: (initialState?: import("../../../providers/authentication/authentication/types").AuthenticationState) => AuthenticationContextProps;
@@ -0,0 +1,8 @@
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
+ };
@@ -0,0 +1,6 @@
1
+ import { AuthenticationConfig } from "../../../config/entities";
2
+ /**
3
+ * Returns the authentication configuration.
4
+ * @returns authentication configuration.
5
+ */
6
+ export declare const useAuthenticationConfig: () => AuthenticationConfig | undefined;
@@ -0,0 +1,9 @@
1
+ import { useConfig } from "../../useConfig";
2
+ /**
3
+ * Returns the authentication configuration.
4
+ * @returns authentication configuration.
5
+ */
6
+ export const useAuthenticationConfig = () => {
7
+ const { config: { authentication }, } = useConfig();
8
+ return authentication;
9
+ };
@@ -0,0 +1,2 @@
1
+ import { CredentialsContextProps } from "../../../providers/authentication/credentials/types";
2
+ export declare const useCredentialsReducer: () => CredentialsContextProps;
@@ -0,0 +1,7 @@
1
+ import { useReducer } from "react";
2
+ import { DEFAULT_CREDENTIALS_STATE } from "../../../providers/authentication/credentials/constants";
3
+ import { credentialsReducer } from "../../../providers/authentication/credentials/reducer";
4
+ export const useCredentialsReducer = () => {
5
+ const [credentialsState, credentialsDispatch] = useReducer(credentialsReducer, undefined, () => DEFAULT_CREDENTIALS_STATE);
6
+ return { credentialsDispatch, credentialsState };
7
+ };
@@ -0,0 +1,5 @@
1
+ import { Profile, UserProfile } from "../../../providers/authentication/authentication/types";
2
+ export interface UseProfile {
3
+ isLoading: boolean;
4
+ profile: Profile<UserProfile>;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { UseProfile } from "./types";
2
+ /**
3
+ * Profile hook - returns user profile.
4
+ * @returns user profile.
5
+ */
6
+ export declare const useProfile: () => UseProfile;
@@ -0,0 +1,15 @@
1
+ import { useAuth } from "../../../providers/authentication/auth/hook";
2
+ import { AUTH_STATUS } from "../../../providers/authentication/auth/types";
3
+ import { useAuthentication } from "../../../providers/authentication/authentication/hook";
4
+ /**
5
+ * Profile hook - returns user profile.
6
+ * @returns user profile.
7
+ */
8
+ export const useProfile = () => {
9
+ const { authState: { status }, } = useAuth();
10
+ const { authenticationState: { profile }, } = useAuthentication();
11
+ return {
12
+ isLoading: status === AUTH_STATUS.PENDING,
13
+ profile: profile,
14
+ };
15
+ };
@@ -0,0 +1,6 @@
1
+ import { OAuthProvider } from "../../../config/entities";
2
+ import { ProviderId } from "../../../providers/authentication/common/types";
3
+ export interface UseProviders {
4
+ findProvider: (providerId: ProviderId) => OAuthProvider | undefined;
5
+ providers: OAuthProvider[] | undefined;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { UseProviders } from "./types";
2
+ /**
3
+ * Hook to facilitate the retrieval of authentication providers.
4
+ * @returns authentication providers and a function to find a provider by id.
5
+ */
6
+ export declare const useProviders: () => UseProviders;
@@ -0,0 +1,14 @@
1
+ import { useCallback } from "react";
2
+ import { useConfig } from "../../useConfig";
3
+ /**
4
+ * Hook to facilitate the retrieval of authentication providers.
5
+ * @returns authentication providers and a function to find a provider by id.
6
+ */
7
+ export const useProviders = () => {
8
+ const { config } = useConfig();
9
+ const providers = config.authentication?.providers;
10
+ const findProvider = useCallback((providerId) => {
11
+ return providers?.find(({ id }) => id === providerId);
12
+ }, [providers]);
13
+ return { findProvider, providers };
14
+ };
@@ -0,0 +1,12 @@
1
+ import { AuthState } from "../../../providers/authentication/auth/types";
2
+ import { AuthenticationState } from "../../../providers/authentication/authentication/types";
3
+ export declare const useSessionActive: (authState: AuthState, authenticationState: AuthenticationState) => void;
4
+ /**
5
+ * Finds the most recent route in the history that is not the login route and removes the inactivity timeout query parameter.
6
+ * The inactivity timeout query parameter is appended to a URL to indicate that a session has expired. This function iterates
7
+ * through the history of routes in reverse order, skipping any routes that lead to the login page, and returns the first route
8
+ * that isn't the login route with the inactivity timeout parameter removed.
9
+ * @param routes - An array of routes representing the navigation history, in order of navigation.
10
+ * @returns The most recent valid route without the inactivity timeout parameter, or `undefined` if no such route is found.
11
+ */
12
+ export declare function transformRoute(routes: string[]): string | undefined;
@@ -0,0 +1,36 @@
1
+ import Router from "next/router";
2
+ import { useEffect } from "react";
3
+ import { escapeRegExp } from "../../../common/utils";
4
+ import { AUTH_STATUS, } from "../../../providers/authentication/auth/types";
5
+ import { AUTHENTICATION_STATUS, } from "../../../providers/authentication/authentication/types";
6
+ import { ROUTE } from "../../../routes/constants";
7
+ import { useRouteHistory } from "../../useRouteHistory";
8
+ import { INACTIVITY_PARAM } from "./useSessionTimeout";
9
+ export const useSessionActive = (authState, authenticationState) => {
10
+ const { status: authStatus } = authState;
11
+ const { status: authenticationStatus } = authenticationState;
12
+ const { callbackUrl } = useRouteHistory(2);
13
+ const isReady = authenticationStatus === AUTHENTICATION_STATUS.SETTLED &&
14
+ authStatus === AUTH_STATUS.SETTLED;
15
+ useEffect(() => {
16
+ if (!isReady)
17
+ return;
18
+ Router.push(callbackUrl(transformRoute));
19
+ }, [callbackUrl, isReady]);
20
+ };
21
+ /**
22
+ * Finds the most recent route in the history that is not the login route and removes the inactivity timeout query parameter.
23
+ * The inactivity timeout query parameter is appended to a URL to indicate that a session has expired. This function iterates
24
+ * through the history of routes in reverse order, skipping any routes that lead to the login page, and returns the first route
25
+ * that isn't the login route with the inactivity timeout parameter removed.
26
+ * @param routes - An array of routes representing the navigation history, in order of navigation.
27
+ * @returns The most recent valid route without the inactivity timeout parameter, or `undefined` if no such route is found.
28
+ */
29
+ export function transformRoute(routes) {
30
+ for (const route of routes) {
31
+ if (route === ROUTE.LOGIN) {
32
+ continue;
33
+ }
34
+ return route?.replace(new RegExp(`\\?${escapeRegExp(INACTIVITY_PARAM)}(?:$|[=&].*)`), "");
35
+ }
36
+ }
@@ -0,0 +1,4 @@
1
+ export interface UseSessionCallbackUrl {
2
+ callbackUrl: string | undefined;
3
+ }
4
+ export declare const useSessionCallbackUrl: () => UseSessionCallbackUrl;
@@ -0,0 +1,20 @@
1
+ import { useMemo } from "react";
2
+ import { useRouteRoot } from "../../useRouteRoot";
3
+ import { INACTIVITY_PARAM } from "./useSessionTimeout";
4
+ export const useSessionCallbackUrl = () => {
5
+ const route = useRouteRoot();
6
+ const callbackUrl = useMemo(() => getUrl(route), [route]);
7
+ return { callbackUrl };
8
+ };
9
+ /**
10
+ * Returns the URL with the inactivity query parameter set to true.
11
+ * @param url - URL.
12
+ * @returns URL.
13
+ */
14
+ function getUrl(url) {
15
+ if (typeof window === "undefined")
16
+ return;
17
+ const urlObj = new URL(url, window.location.origin);
18
+ urlObj.searchParams.set(INACTIVITY_PARAM, "true");
19
+ return urlObj.href;
20
+ }
@@ -0,0 +1,6 @@
1
+ import { IIdleTimerProps } from "react-idle-timer/dist/types/IIdleTimerProps";
2
+ /**
3
+ * Sets a session timeout that triggers when the user has been idle for the specified duration.
4
+ * @param idleTimerProps - The parameters for the session timeout.
5
+ */
6
+ export declare const useSessionIdleTimer: (idleTimerProps: IIdleTimerProps) => void;
@@ -0,0 +1,8 @@
1
+ import { useIdleTimer } from "react-idle-timer";
2
+ /**
3
+ * Sets a session timeout that triggers when the user has been idle for the specified duration.
4
+ * @param idleTimerProps - The parameters for the session timeout.
5
+ */
6
+ export const useSessionIdleTimer = (idleTimerProps) => {
7
+ useIdleTimer(idleTimerProps);
8
+ };
@@ -1,7 +1,7 @@
1
1
  import Router from "next/router";
2
2
  import { useCallback, useEffect, useState } from "react";
3
- import { useConfig } from "./useConfig";
4
- import { useLocation } from "./useLocation";
3
+ import { useConfig } from "../../useConfig";
4
+ import { useLocation } from "../../useLocation";
5
5
  export const INACTIVITY_PARAM = "inactivityTimeout";
6
6
  /**
7
7
  * Session timeout hook.
@@ -9,7 +9,6 @@ export declare enum ONBOARDING_STEP {
9
9
  }
10
10
  interface UseAuthenticationForm {
11
11
  isComplete: boolean;
12
- isReady: boolean;
13
12
  onboardingStatusByStep: Map<ONBOARDING_STEP, OnboardingStatus>;
14
13
  }
15
14
  /**
@@ -1,5 +1,4 @@
1
- import { AUTHENTICATION_STATUS, } from "./common/entities";
2
- import { useAuthentication } from "./useAuthentication";
1
+ import { useTerraProfile } from "../../../providers/authentication/terra/hook";
3
2
  export var ONBOARDING_STEP;
4
3
  (function (ONBOARDING_STEP) {
5
4
  ONBOARDING_STEP[ONBOARDING_STEP["NIH_ACCOUNT"] = 3] = "NIH_ACCOUNT";
@@ -11,14 +10,12 @@ export var ONBOARDING_STEP;
11
10
  * @returns onboarding steps and corresponding status.
12
11
  */
13
12
  export const useAuthenticationForm = () => {
14
- const authentication = useAuthentication();
15
- const isReady = authentication.authenticationStatus === AUTHENTICATION_STATUS.COMPLETED;
16
- const loginStatuses = concatLoginStatuses(authentication).filter(filterLoginStatus);
13
+ const terraProfile = useTerraProfile();
14
+ const loginStatuses = concatLoginStatuses(terraProfile).filter(filterLoginStatus);
17
15
  const onboardingStatusByStep = getOnboardingStatusByStep(loginStatuses);
18
16
  const isComplete = isAuthenticationComplete(onboardingStatusByStep);
19
17
  return {
20
18
  isComplete,
21
- isReady,
22
19
  onboardingStatusByStep,
23
20
  };
24
21
  };
@@ -37,11 +34,11 @@ function isAuthenticationComplete(onboardingStatusByStep) {
37
34
  }
38
35
  /**
39
36
  * Returns all login statuses, ordered by onboarding step.
40
- * @param authentication - Authentication.
37
+ * @param terraProfile - Terra profile.
41
38
  * @returns login statuses.
42
39
  */
43
- function concatLoginStatuses(authentication) {
44
- const { terraNIHProfileLoginStatus, terraProfileLoginStatus, terraTOSLoginStatus, } = authentication;
40
+ function concatLoginStatuses(terraProfile) {
41
+ const { terraNIHProfileLoginStatus, terraProfileLoginStatus, terraTOSLoginStatus, } = terraProfile;
45
42
  return [
46
43
  terraProfileLoginStatus,
47
44
  terraTOSLoginStatus,
@@ -1,13 +1,12 @@
1
- import { REQUEST_STATUS } from "./common/entities";
2
- import { useAuthentication } from "./useAuthentication";
1
+ import { useTerraProfile } from "../../../providers/authentication/terra/hook";
2
+ import { REQUEST_STATUS } from "../../../providers/authentication/terra/hooks/common/entities";
3
3
  const WARNING_WINDOW_SECONDS = 60 * 60 * 24 * 5; // 5 days.
4
4
  /**
5
5
  * Handles authentication NIH expiry.
6
6
  * @returns NIH expiry status.
7
7
  */
8
8
  export const useAuthenticationNIHExpiry = () => {
9
- const authentication = useAuthentication();
10
- const { terraNIHProfileLoginStatus } = authentication;
9
+ const { terraNIHProfileLoginStatus } = useTerraProfile();
11
10
  const { requestStatus, response } = terraNIHProfileLoginStatus;
12
11
  const { linkExpireTime } = response || {};
13
12
  const isReady = requestStatus === REQUEST_STATUS.COMPLETED;
@@ -0,0 +1,4 @@
1
+ import { Credentials } from "../../../providers/authentication/credentials/types";
2
+ export interface UseToken {
3
+ token: Credentials;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import { UseToken } from "./types";
2
+ export declare const useToken: () => UseToken;
@@ -0,0 +1,5 @@
1
+ import { useCredentials } from "../../../providers/authentication/credentials/hook";
2
+ export const useToken = () => {
3
+ const { credentialsState: { credentials: token }, } = useCredentials();
4
+ return { token };
5
+ };
@@ -0,0 +1,7 @@
1
+ import { TokenContextProps } from "../../../providers/authentication/token/types";
2
+ /**
3
+ * Token reducer: Manages the internal state of the token within the OAuth provider.
4
+ * This reducer handles the token locally until certain conditions are met.
5
+ * For releasing the token to the rest of the app, use the credentials reducer.
6
+ */
7
+ export declare const useTokenReducer: () => TokenContextProps;
@@ -0,0 +1,12 @@
1
+ import { useReducer } from "react";
2
+ import { DEFAULT_TOKEN_STATE } from "../../../providers/authentication/token/constants";
3
+ import { tokenReducer } from "../../../providers/authentication/token/reducer";
4
+ /**
5
+ * Token reducer: Manages the internal state of the token within the OAuth provider.
6
+ * This reducer handles the token locally until certain conditions are met.
7
+ * For releasing the token to the rest of the app, use the credentials reducer.
8
+ */
9
+ export const useTokenReducer = () => {
10
+ const [tokenState, tokenDispatch] = useReducer(tokenReducer, undefined, () => DEFAULT_TOKEN_STATE);
11
+ return { tokenDispatch, tokenState };
12
+ };
@@ -3,8 +3,8 @@ import { transformAzulPagination, transformFilters, transformTermFacets, } from
3
3
  import { getEntityConfig } from "../config/utils";
4
4
  import { ExploreActionKind } from "../providers/exploreState";
5
5
  import { DEFAULT_PAGINATION_STATE } from "../providers/exploreState/initializer/constants";
6
+ import { useToken } from "./authentication/token/useToken";
6
7
  import { useAsync } from "./useAsync";
7
- import { useAuthentication } from "./useAuthentication/useAuthentication";
8
8
  import { useConfig } from "./useConfig";
9
9
  import { useEntityService } from "./useEntityService";
10
10
  import { EXPLORE_MODE, useExploreMode } from "./useExploreMode";
@@ -18,7 +18,7 @@ import { useURLFilterParams } from "./useURLFilterParams";
18
18
  */
19
19
  export const useEntityList = (staticResponse) => {
20
20
  const { data: staticData, entityListType } = staticResponse;
21
- const { token } = useAuthentication();
21
+ const { token } = useToken();
22
22
  const { config } = useConfig();
23
23
  const { apiPath } = getEntityConfig(config.entities, entityListType);
24
24
  const exploreMode = useExploreMode();
@@ -1,8 +1,8 @@
1
1
  import { useRouter } from "next/router";
2
2
  import { useEffect, useMemo } from "react";
3
3
  import { PARAMS_INDEX_UUID } from "../common/constants";
4
+ import { useToken } from "./authentication/token/useToken";
4
5
  import { useAsync } from "./useAsync";
5
- import { useAuthentication } from "./useAuthentication/useAuthentication";
6
6
  import { useEntityService } from "./useEntityService";
7
7
  import { EXPLORE_MODE, useExploreMode } from "./useExploreMode";
8
8
  import { useExploreState } from "./useExploreState";
@@ -14,7 +14,7 @@ import { useExploreState } from "./useExploreState";
14
14
  */
15
15
  export const useFetchEntity = (detailViewProps) => {
16
16
  const { data: staticData, entityListType } = detailViewProps || {};
17
- const { token } = useAuthentication();
17
+ const { token } = useToken();
18
18
  const exploreMode = useExploreMode();
19
19
  const { exploreState } = useExploreState();
20
20
  const { catalogState } = exploreState;
@@ -24,7 +24,8 @@ export const useFetchEntity = (detailViewProps) => {
24
24
  const uuid = params?.[PARAMS_INDEX_UUID];
25
25
  const { data: response, isIdle, isLoading, run } = useAsync();
26
26
  const entityResponse = response || staticData;
27
- const shouldFetchEntity = useMemo(() => isFetchRequired(exploreMode !== EXPLORE_MODE.CS_FETCH_CS_FILTERING, Boolean(token), Boolean(catalogState), Boolean(entityResponse)), [catalogState, entityResponse, exploreMode, token]);
27
+ const shouldFetchEntity = useMemo(() => isFetchRequired(exploreMode !== EXPLORE_MODE.CS_FETCH_CS_FILTERING, Boolean(token), // TODO(cc), note a fetch is required if the token is true, but is unable to re-fetch on logout when token is undefined! Page is required to reload!
28
+ Boolean(catalogState), Boolean(entityResponse)), [catalogState, entityResponse, exploreMode, token]);
28
29
  const isResponseLoading = shouldFetchEntity ? isIdle || isLoading : false;
29
30
  useEffect(() => {
30
31
  // Fetch entity if entity data originates from a request, and has not yet been requested.
@@ -2,8 +2,8 @@ import { useEffect, useMemo } from "react";
2
2
  import { APIEndpoints, } from "../../apis/azul/common/entities";
3
3
  import { fetchEntitiesFromURL } from "../../entity/common/service";
4
4
  import { fetchQueryParams } from "../../utils/fetchQueryParams";
5
+ import { useToken } from "../authentication/token/useToken";
5
6
  import { useAsync } from "../useAsync";
6
- import { useAuthentication } from "../useAuthentication/useAuthentication";
7
7
  import { useFetchRequestURL } from "../useFetchRequestURL";
8
8
  import { bindEntitySearchResultsResponse } from "./common/utils";
9
9
  /**
@@ -15,8 +15,7 @@ import { bindEntitySearchResultsResponse } from "./common/utils";
15
15
  * @returns files facets.
16
16
  */
17
17
  export const useFetchFilesFacets = (filters, catalog, searchParams, isEnabled) => {
18
- // Grab token from authentication.
19
- const { token } = useAuthentication();
18
+ const { token } = useToken();
20
19
  // Build request params.
21
20
  const requestParams = fetchQueryParams(filters, catalog, searchParams);
22
21
  // Build request URL.
@@ -2,8 +2,8 @@ import { useEffect } from "react";
2
2
  import { APIEndpoints, } from "../../apis/azul/common/entities";
3
3
  import { fetchSummaryFromURL } from "../../entity/api/service";
4
4
  import { fetchQueryParams } from "../../utils/fetchQueryParams";
5
+ import { useToken } from "../authentication/token/useToken";
5
6
  import { useAsync } from "../useAsync";
6
- import { useAuthentication } from "../useAuthentication/useAuthentication";
7
7
  import { useFetchRequestURL } from "../useFetchRequestURL";
8
8
  /**
9
9
  * Fetch file summary from summary endpoint, to populate summary in download flows.
@@ -13,8 +13,7 @@ import { useFetchRequestURL } from "../useFetchRequestURL";
13
13
  * @returns file summaries.
14
14
  */
15
15
  export const useFetchSummary = (filters, catalog, isEnabled) => {
16
- // Grab token from authentication.
17
- const { token } = useAuthentication();
16
+ const { token } = useToken();
18
17
  // Build request params.
19
18
  const requestParams = fetchQueryParams(filters, catalog, undefined);
20
19
  // Build request URL.
@@ -1,8 +1,8 @@
1
1
  import { useCallback, useEffect, useRef } from "react";
2
2
  import { FILE_LOCATION_PENDING, FILE_LOCATION_SUCCESSFULLY, } from "../apis/azul/common/constants";
3
+ import { useToken } from "./authentication/token/useToken";
3
4
  import { METHOD } from "./types";
4
5
  import { useAsync } from "./useAsync";
5
- import { useAuthentication } from "./useAuthentication/useAuthentication";
6
6
  /**
7
7
  * Returns fetch request options.
8
8
  * @param accessToken - Access token.
@@ -72,8 +72,7 @@ const scheduleFileLocation = (url, accessToken, resolve, reject, active, retryAf
72
72
  * @returns data object with the file location
73
73
  */
74
74
  export const useRequestFileLocation = (url, method) => {
75
- // Grab token from authentication.
76
- const { token } = useAuthentication();
75
+ const { token } = useToken();
77
76
  const { data, isIdle, isLoading, isSuccess, run: runAsync, } = useAsync();
78
77
  const active = useRef(true);
79
78
  useEffect(() => {
@@ -0,0 +1,14 @@
1
+ export type TransformRouteFn = (routes: string[]) => string | undefined;
2
+ export interface UseRouteHistory {
3
+ callbackUrl: (transformFn?: TransformRouteFn) => string;
4
+ }
5
+ export declare function useRouteHistory(maxHistory?: number): UseRouteHistory;
6
+ /**
7
+ * Generates a callback URL based on the provided history and root path.
8
+ * Returns the callback URL determined by the transform function or the second item in history and if neither condition is met, returns the root path.
9
+ * @param history - Navigation history.
10
+ * @param rootPath - The default root path to return if no other conditions are met.
11
+ * @param [transformFn] - An optional function that transforms the history array to a specific route.
12
+ * @returns {string} - The callback UR.
13
+ */
14
+ export declare function getCallbackUrl(history: string[], rootPath: string, transformFn?: TransformRouteFn): string;