@gen3/core 0.10.44

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 (86) hide show
  1. package/dist/cjs/index.js +2243 -0
  2. package/dist/cjs/index.js.map +1 -0
  3. package/dist/dts/api.d.ts +8 -0
  4. package/dist/dts/constants.d.ts +32 -0
  5. package/dist/dts/dataAccess.d.ts +35 -0
  6. package/dist/dts/features/aiSearch/aiSearchSlice.d.ts +38 -0
  7. package/dist/dts/features/aiSearch/index.d.ts +2 -0
  8. package/dist/dts/features/app/store.d.ts +6 -0
  9. package/dist/dts/features/authz/authzMappingSlice.d.ts +141 -0
  10. package/dist/dts/features/authz/index.d.ts +3 -0
  11. package/dist/dts/features/authz/types.d.ts +5 -0
  12. package/dist/dts/features/cohort/cohortBuilderConfigSlice.d.ts +0 -0
  13. package/dist/dts/features/cohort/cohortSlice.d.ts +95 -0
  14. package/dist/dts/features/cohort/index.d.ts +2 -0
  15. package/dist/dts/features/cohort/types.d.ts +0 -0
  16. package/dist/dts/features/download/constants.d.ts +14 -0
  17. package/dist/dts/features/download/downloadStatusApi.d.ts +19 -0
  18. package/dist/dts/features/download/index.d.ts +2 -0
  19. package/dist/dts/features/download/types.d.ts +20 -0
  20. package/dist/dts/features/drsResolver/drsHostnameSlice.d.ts +5 -0
  21. package/dist/dts/features/drsResolver/index.d.ts +2 -0
  22. package/dist/dts/features/drsResolver/resolvers/cachedDRSResolver.d.ts +1 -0
  23. package/dist/dts/features/drsResolver/resolvers/dataGUIDSDotOrg.d.ts +6 -0
  24. package/dist/dts/features/drsResolver/resolvers/tests/dataGUIDSDotOrg.unit.test.d.ts +1 -0
  25. package/dist/dts/features/drsResolver/types.d.ts +0 -0
  26. package/dist/dts/features/drsResolver/utils.d.ts +6 -0
  27. package/dist/dts/features/fence/credentialsApi.d.ts +35 -0
  28. package/dist/dts/features/fence/fenceApi.d.ts +37 -0
  29. package/dist/dts/features/fence/index.d.ts +6 -0
  30. package/dist/dts/features/fence/jwtApi.d.ts +12 -0
  31. package/dist/dts/features/fence/types.d.ts +12 -0
  32. package/dist/dts/features/fence/utils.d.ts +12 -0
  33. package/dist/dts/features/filters/filters.d.ts +122 -0
  34. package/dist/dts/features/filters/index.d.ts +4 -0
  35. package/dist/dts/features/filters/tests/utils.unit.test.d.ts +1 -0
  36. package/dist/dts/features/filters/types.d.ts +113 -0
  37. package/dist/dts/features/filters/utils.d.ts +26 -0
  38. package/dist/dts/features/gen3/gen3Api.d.ts +11 -0
  39. package/dist/dts/features/gen3/index.d.ts +2 -0
  40. package/dist/dts/features/gen3Apps/Gen3App.d.ts +48 -0
  41. package/dist/dts/features/gen3Apps/gen3AppRegistry.d.ts +7 -0
  42. package/dist/dts/features/gen3Apps/gen3AppsSlice.d.ts +19 -0
  43. package/dist/dts/features/gen3Apps/index.d.ts +3 -0
  44. package/dist/dts/features/graphQL/graphQLSlice.d.ts +12 -0
  45. package/dist/dts/features/graphQL/index.d.ts +1 -0
  46. package/dist/dts/features/guppy/conversion.d.ts +23 -0
  47. package/dist/dts/features/guppy/guppyApi.d.ts +41 -0
  48. package/dist/dts/features/guppy/guppyDownloadSlice.d.ts +21 -0
  49. package/dist/dts/features/guppy/guppySlice.d.ts +120 -0
  50. package/dist/dts/features/guppy/index.d.ts +6 -0
  51. package/dist/dts/features/guppy/tests/downloadFromGuppy.unit.test.d.ts +1 -0
  52. package/dist/dts/features/guppy/types.d.ts +33 -0
  53. package/dist/dts/features/guppy/utils.d.ts +28 -0
  54. package/dist/dts/features/metadata/index.d.ts +3 -0
  55. package/dist/dts/features/metadata/metadataSlice.d.ts +56 -0
  56. package/dist/dts/features/metadata/types.d.ts +12 -0
  57. package/dist/dts/features/modals/index.d.ts +2 -0
  58. package/dist/dts/features/modals/modalsSlice.d.ts +26 -0
  59. package/dist/dts/features/submission/authMappingUtils.d.ts +15 -0
  60. package/dist/dts/features/submission/index.d.ts +3 -0
  61. package/dist/dts/features/submission/submissionApi.d.ts +43 -0
  62. package/dist/dts/features/submission/types.d.ts +46 -0
  63. package/dist/dts/features/user/externalLoginsSlice.d.ts +14 -0
  64. package/dist/dts/features/user/hooks.d.ts +18 -0
  65. package/dist/dts/features/user/index.d.ts +5 -0
  66. package/dist/dts/features/user/test/useGetExternalLoginsQuery.unit.test.d.ts +1 -0
  67. package/dist/dts/features/user/types.d.ts +50 -0
  68. package/dist/dts/features/user/userSlice.d.ts +53 -0
  69. package/dist/dts/features/user/userSliceRTK.d.ts +484 -0
  70. package/dist/dts/features/workspace/index.d.ts +2 -0
  71. package/dist/dts/features/workspace/types.d.ts +0 -0
  72. package/dist/dts/features/workspace/workspacesSlice.d.ts +6 -0
  73. package/dist/dts/hooks.d.ts +36 -0
  74. package/dist/dts/index.d.ts +23 -0
  75. package/dist/dts/provider.d.ts +2 -0
  76. package/dist/dts/reducers.d.ts +22 -0
  77. package/dist/dts/store.d.ts +53 -0
  78. package/dist/dts/store.unit.test.d.ts +2 -0
  79. package/dist/dts/types/index.d.ts +51 -0
  80. package/dist/dts/utils/extractvalues.d.ts +9 -0
  81. package/dist/dts/utils/index.d.ts +2 -0
  82. package/dist/dts/utils/ts-utils.d.ts +4 -0
  83. package/dist/esm/index.js +2083 -0
  84. package/dist/esm/index.js.map +1 -0
  85. package/dist/index.d.ts +1604 -0
  86. package/package.json +70 -0
@@ -0,0 +1,26 @@
1
+ import { CoreState } from '../../reducers';
2
+ /**
3
+ * Defines the modals slice of the Redux store.
4
+ * This slice is used to control the display of standard Gen3 modals.
5
+ * and can be extended to add custom modals by representing them as strings.
6
+ */
7
+ export declare enum Modals {
8
+ 'FirstTimeModal' = "FirstTimeModal",
9
+ 'SessionExpireModal' = "SessionExpireModal",
10
+ 'NoAccessModal' = "NoAccessModal",
11
+ 'CreateCredentialsAPIKeyModal' = "CreateCredentialsAPIKeyModal",
12
+ 'GeneralErrorModal' = "GeneralErrorModal"
13
+ }
14
+ type CurrentModal = Modals | string | null;
15
+ export interface ModalState {
16
+ currentModal: CurrentModal;
17
+ message?: string;
18
+ }
19
+ export declare const modalReducer: import("redux").Reducer<ModalState>;
20
+ export declare const showModal: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
21
+ modal: Modals;
22
+ message?: string;
23
+ }, "modals/showModal">, hideModal: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"modals/hideModal">;
24
+ export declare const selectCurrentModal: (state: CoreState) => CurrentModal;
25
+ export declare const selectCurrentMessage: (state: CoreState) => string | undefined;
26
+ export {};
@@ -0,0 +1,15 @@
1
+ export declare const resourcePathFromProjectID: (projectID: string) => string;
2
+ export declare const isRootUrl: (urlFragment: string) => boolean;
3
+ export declare const isProgramUrl: (urlFragment: string) => boolean;
4
+ export declare const userHasSheepdogProgramAdmin: (userAuthMapping?: Record<string, any>) => boolean;
5
+ export declare const userHasSheepdogProjectAdmin: (userAuthMapping?: Record<string, any>) => boolean;
6
+ export declare const projectCodeFromResourcePath: (resourcePath: string) => string;
7
+ export declare const listifyMethodsFromMapping: (actions: {
8
+ service: string;
9
+ method: string;
10
+ }[]) => string[];
11
+ export declare const userHasDataUpload: (userAuthMapping?: Record<string, any>) => boolean;
12
+ export declare const userHasMethodForServiceOnResource: (method: string, service: string, resourcePath: string, userAuthMapping?: Record<string, any>) => boolean;
13
+ export declare const userHasMethodForServiceOnProject: (method: string, service: string, projectID: string, userAuthMapping?: Record<string, any>) => boolean;
14
+ export declare const userHasMethodOnAnyProject: (method: string, userAuthMapping?: Record<string, any>) => boolean;
15
+ export declare const userHasCreateOrUpdateOnAnyProject: (userAuthMapping?: Record<string, any>) => boolean;
@@ -0,0 +1,3 @@
1
+ export * from './authMappingUtils';
2
+ export * from './submissionApi';
3
+ export * from './types';
@@ -0,0 +1,43 @@
1
+ import { ProjectResponse, ProjectsListRequestParams, SubmissionInfo, SubmissionGraphqlParams, SubmissionGraphqlResponse } from './types';
2
+ import { JSONObject } from '../../types';
3
+ import type { FetchBaseQueryError } from '@reduxjs/toolkit/query';
4
+ /**
5
+ * Project details from the project query
6
+ */
7
+ interface ProjectInfoFromProjectDetails {
8
+ name: string;
9
+ id: string;
10
+ code: string;
11
+ }
12
+ /**
13
+ * Project details results a list of project details
14
+ * and the project information
15
+ */
16
+ interface ProjectDetailsResults {
17
+ [key: string]: string | number | ProjectInfoFromProjectDetails;
18
+ project: ProjectInfoFromProjectDetails;
19
+ }
20
+ export interface ProjectDetailsQueryResponse {
21
+ details: ProjectDetailsResults[];
22
+ hits: number;
23
+ }
24
+ interface SubmissionQueryResponse {
25
+ transactionList: SubmissionInfo[];
26
+ }
27
+ /**
28
+ * Defines submissionApi service using a base URL and expected endpoints. Derived from gen3Api core API.
29
+ * @param endpoints - Defines endpoints used in submission page
30
+ * @param getProjects - Queries the list of projects
31
+ * @param getProjectsDetails - Queries the list of projects and their details
32
+ * @param getSubmissionGraphQL - Queries the submission graphql with a query and variables
33
+ * @returns: A submission API for fetching project details
34
+ */
35
+ export declare const submissionApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, {
36
+ getProjects: import("@reduxjs/toolkit/query").QueryDefinition<JSONObject, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, ProjectResponse, "gen3Services">;
37
+ getSubmissions: import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, SubmissionQueryResponse, "gen3Services">;
38
+ getProjectsDetails: import("@reduxjs/toolkit/query").QueryDefinition<ProjectsListRequestParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, ProjectDetailsQueryResponse, "gen3Services">;
39
+ getSubmissionGraphQL: import("@reduxjs/toolkit/query").QueryDefinition<SubmissionGraphqlParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, SubmissionGraphqlResponse, "gen3Services">;
40
+ getDictionary: import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, SubmissionGraphqlResponse, "gen3Services">;
41
+ }, "gen3Services", never, keyof import("@reduxjs/toolkit/query").ApiModules<any, any, any, any>>;
42
+ export declare const useGetProjectsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<JSONObject, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, ProjectResponse, "gen3Services">>, useGetSubmissionGraphQLQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<SubmissionGraphqlParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, SubmissionGraphqlResponse, "gen3Services">>, useGetProjectsDetailsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<ProjectsListRequestParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, ProjectDetailsQueryResponse, "gen3Services">>, useLazyGetProjectsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseLazyQuery<import("@reduxjs/toolkit/query").QueryDefinition<JSONObject, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, ProjectResponse, "gen3Services">>, useLazyGetSubmissionGraphQLQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseLazyQuery<import("@reduxjs/toolkit/query").QueryDefinition<SubmissionGraphqlParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, SubmissionGraphqlResponse, "gen3Services">>, useGetSubmissionsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, SubmissionQueryResponse, "gen3Services">>, useGetDictionaryQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, SubmissionGraphqlResponse, "gen3Services">>;
43
+ export {};
@@ -0,0 +1,46 @@
1
+ import { JSONObject, JSONValue } from '../../types';
2
+ export interface Project {
3
+ availability_type: string;
4
+ code: string;
5
+ project_id: string;
6
+ }
7
+ export interface SubmissionGraphqlParams {
8
+ query: string;
9
+ variables: Record<string, JSONValue>;
10
+ mapping?: {
11
+ [key: string]: string;
12
+ };
13
+ }
14
+ export interface SubmissionGraphqlResponse {
15
+ data: JSONObject;
16
+ }
17
+ export interface ProjectDetailsParams {
18
+ ids: Array<string>;
19
+ }
20
+ export interface ProjectDetailsResponse {
21
+ data: JSONObject[];
22
+ }
23
+ export interface ProjectsListRequestParams {
24
+ size: number;
25
+ projectQuery: JSONObject;
26
+ projectDetailsQuery: JSONObject;
27
+ mapping?: {
28
+ [key: string]: string;
29
+ };
30
+ }
31
+ export interface ProjectResponse {
32
+ projects: Array<Project>;
33
+ }
34
+ export interface SubmissionDocument {
35
+ doc_size: number;
36
+ doc?: string;
37
+ id: string;
38
+ }
39
+ export interface SubmissionInfo {
40
+ id: string;
41
+ submitter: string;
42
+ project_id: string;
43
+ created_datetime: string;
44
+ documents: Array<SubmissionDocument>;
45
+ state: string;
46
+ }
@@ -0,0 +1,14 @@
1
+ import { ExternalProvider } from './types';
2
+ export interface ExternalProviderResponse {
3
+ providers: ExternalProvider[];
4
+ }
5
+ /**
6
+ * @description Creates a externalLoginApi for listing the configured identity providers
7
+ * in workspace token service. Includes user token expiration time.
8
+ * @see https://github.com/uc-cdis/workspace-token-service/tree/master
9
+ */
10
+ export declare const externalLoginApi: import("@reduxjs/toolkit/dist/query").Api<import("@reduxjs/toolkit/dist/query").BaseQueryFn<string | import("@reduxjs/toolkit/dist/query").FetchArgs, unknown, import("@reduxjs/toolkit/dist/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/dist/query").FetchBaseQueryMeta>, {
11
+ getExternalLogins: import("@reduxjs/toolkit/dist/query").QueryDefinition<void, import("@reduxjs/toolkit/dist/query").BaseQueryFn<string | import("@reduxjs/toolkit/dist/query").FetchArgs, unknown, import("@reduxjs/toolkit/dist/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/dist/query").FetchBaseQueryMeta>, never, ExternalProviderResponse, "gen3Services">;
12
+ isExternalConnected: import("@reduxjs/toolkit/dist/query").QueryDefinition<string, import("@reduxjs/toolkit/dist/query").BaseQueryFn<string | import("@reduxjs/toolkit/dist/query").FetchArgs, unknown, import("@reduxjs/toolkit/dist/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/dist/query").FetchBaseQueryMeta>, never, boolean, "gen3Services">;
13
+ }, "gen3Services", never, keyof import("@reduxjs/toolkit/dist/query").ApiModules<any, any, any, any>>;
14
+ export declare const useGetExternalLoginsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/dist/query").QueryDefinition<void, import("@reduxjs/toolkit/dist/query").BaseQueryFn<string | import("@reduxjs/toolkit/dist/query").FetchArgs, unknown, import("@reduxjs/toolkit/dist/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/dist/query").FetchBaseQueryMeta>, never, ExternalProviderResponse, "gen3Services">>, useLazyGetExternalLoginsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseLazyQuery<import("@reduxjs/toolkit/dist/query").QueryDefinition<void, import("@reduxjs/toolkit/dist/query").BaseQueryFn<string | import("@reduxjs/toolkit/dist/query").FetchArgs, unknown, import("@reduxjs/toolkit/dist/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/dist/query").FetchBaseQueryMeta>, never, ExternalProviderResponse, "gen3Services">>, useLazyIsExternalConnectedQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseLazyQuery<import("@reduxjs/toolkit/dist/query").QueryDefinition<string, import("@reduxjs/toolkit/dist/query").BaseQueryFn<string | import("@reduxjs/toolkit/dist/query").FetchArgs, unknown, import("@reduxjs/toolkit/dist/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/dist/query").FetchBaseQueryMeta>, never, boolean, "gen3Services">>, useIsExternalConnectedQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/dist/query").QueryDefinition<string, import("@reduxjs/toolkit/dist/query").BaseQueryFn<string | import("@reduxjs/toolkit/dist/query").FetchArgs, unknown, import("@reduxjs/toolkit/dist/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/dist/query").FetchBaseQueryMeta>, never, boolean, "gen3Services">>;
@@ -0,0 +1,18 @@
1
+ import { FileMetadata } from './types';
2
+ interface FederatedLoginStatusParams {
3
+ selectedFiles: ReadonlyArray<FileMetadata>;
4
+ }
5
+ declare const useGetFederatedLoginStatus: ({ selectedFiles, }: FederatedLoginStatusParams) => Promise<{
6
+ error: import("@reduxjs/toolkit").SerializedError | import("@reduxjs/toolkit/dist/query").FetchBaseQueryError | undefined;
7
+ data?: undefined;
8
+ isLoading?: undefined;
9
+ providersToAuthenticate?: undefined;
10
+ missingProviders?: undefined;
11
+ } | {
12
+ data: import("./externalLoginsSlice").ExternalProviderResponse;
13
+ isLoading: false;
14
+ error: undefined;
15
+ providersToAuthenticate: import("./types").ExternalProvider[];
16
+ missingProviders: import("./types").ExternalProvider[];
17
+ }>;
18
+ export default useGetFederatedLoginStatus;
@@ -0,0 +1,5 @@
1
+ import { useUser, useUserAuth, resetUserState, fetchUserState, isAuthenticated, isPending, selectUser, selectUserData, selectUserLoginStatus, useIsUserLoggedIn } from './userSlice';
2
+ import { useFetchUserDetailsQuery, useLazyFetchUserDetailsQuery, selectUserDetails, selectUserAuthStatus, useGetCSRFQuery, selectCSRFToken, selectCSRFTokenData, selectHeadersWithCSRFToken, type CSRFToken } from './userSliceRTK';
3
+ import { useGetExternalLoginsQuery, useLazyGetExternalLoginsQuery, useLazyIsExternalConnectedQuery, useIsExternalConnectedQuery } from './externalLoginsSlice';
4
+ import { type UserProfile, type LoginStatus, type Gen3User, type ExternalProvider, type NamedURL, type JWTSessionStatus } from './types';
5
+ export { type Gen3User, type LoginStatus, type UserProfile, type JWTSessionStatus, type CSRFToken, type ExternalProvider, type NamedURL, useUser, useUserAuth, selectUser, selectUserData, selectUserLoginStatus, fetchUserState, isAuthenticated, isPending, useIsUserLoggedIn, resetUserState, useGetExternalLoginsQuery, useLazyGetExternalLoginsQuery, useLazyIsExternalConnectedQuery, useIsExternalConnectedQuery, useFetchUserDetailsQuery, useLazyFetchUserDetailsQuery, selectUserDetails, selectUserAuthStatus, useGetCSRFQuery, selectCSRFToken, selectCSRFTokenData, selectHeadersWithCSRFToken, };
@@ -0,0 +1,50 @@
1
+ import { AuthzMapping } from '../authz';
2
+ export interface NamedURL {
3
+ name: string;
4
+ url: string;
5
+ }
6
+ export interface ExternalProvider {
7
+ base_url: string;
8
+ idp: string;
9
+ name: string;
10
+ refresh_token_expiration: string;
11
+ urls: NamedURL[];
12
+ }
13
+ export interface FileMetadata {
14
+ object_id: string;
15
+ }
16
+ /**
17
+ * Data model for a Gen3 User obtained from the /user/user endpoint
18
+ */
19
+ export interface UserProfile {
20
+ authz: AuthzMapping;
21
+ id: number;
22
+ user_id: number;
23
+ username: string;
24
+ email: string;
25
+ role: string;
26
+ is_admin: boolean;
27
+ project_access: {
28
+ [key: string]: string[];
29
+ };
30
+ phone_number: string;
31
+ display_name: string;
32
+ preferred_username: string;
33
+ ga4gh_passport_v1: Record<string, string>[];
34
+ certificates_uploaded: Record<string, string>[];
35
+ primary_google_service_account: null;
36
+ resources_granted: Record<string, string>[];
37
+ groups: string[];
38
+ message: string;
39
+ sub: string;
40
+ idp: string;
41
+ azp: string[] | null;
42
+ }
43
+ export type Gen3User = Partial<UserProfile>;
44
+ export type LoginStatus = 'authenticated' | 'unauthenticated' | 'pending' | 'not present';
45
+ export type JWTSessionStatus = 'not present' | 'issued' | 'expired' | 'invalid' | 'error';
46
+ export interface ExistingSession {
47
+ expires: number;
48
+ issued: number;
49
+ status: JWTSessionStatus;
50
+ }
@@ -0,0 +1,53 @@
1
+ import { Gen3FenceResponse } from '../fence';
2
+ import { CoreDispatch } from '../../store';
3
+ import { CoreState } from '../../reducers';
4
+ import { CoreDataSelectorResponse, DataStatus } from '../../dataAccess';
5
+ import { Gen3User, LoginStatus } from './types';
6
+ export interface Gen3UserLoginResponse<T> {
7
+ readonly data?: T;
8
+ readonly error?: string;
9
+ readonly loginStatus: LoginStatus;
10
+ readonly isUninitialized: boolean;
11
+ readonly isFetching: boolean;
12
+ readonly isSuccess: boolean;
13
+ readonly isError: boolean;
14
+ }
15
+ /**
16
+ * Creates an async thunk for fetching user permissions details from fence
17
+ * @see https://redux-toolkit.js.org/api/createAsyncThunk
18
+ * @returns: A fence response dict containing user details
19
+ */
20
+ export declare const fetchUserState: import("@reduxjs/toolkit").AsyncThunk<Gen3FenceResponse<Partial<import("./types").UserProfile>>, void, {
21
+ dispatch: CoreDispatch;
22
+ state: CoreState;
23
+ extra?: unknown;
24
+ rejectValue?: unknown;
25
+ serializedErrorType?: unknown;
26
+ pendingMeta?: unknown;
27
+ fulfilledMeta?: unknown;
28
+ rejectedMeta?: unknown;
29
+ }>;
30
+ export declare const isAuthenticated: (loginStatus: LoginStatus) => boolean;
31
+ export declare const isPending: (loginStatus: LoginStatus) => boolean;
32
+ export interface Gen3UserState {
33
+ readonly data?: Gen3User;
34
+ readonly status: DataStatus;
35
+ readonly loginStatus: LoginStatus;
36
+ readonly error?: string;
37
+ }
38
+ export declare const userReducer: import("redux").Reducer<Gen3UserState>;
39
+ export declare const resetUserState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"fence/user/resetUserState">;
40
+ export interface Gen3UserSelectorResponse<T> extends CoreDataSelectorResponse<T> {
41
+ readonly loginStatus: LoginStatus;
42
+ }
43
+ export declare const selectUserData: (state: CoreState) => Gen3UserSelectorResponse<Gen3User>;
44
+ export declare const selectUser: (state: CoreState) => Gen3UserState;
45
+ export declare const selectUserLoginStatus: (state: CoreState) => LoginStatus;
46
+ export declare const useUser: import("../../dataAccess").UseCoreDataHook<never, Partial<import("./types").UserProfile>>;
47
+ export declare const useIsUserLoggedIn: () => boolean;
48
+ /**
49
+ * Hook to return get the authenticated state of the user and if logged in,
50
+ * the user's profile and access api.
51
+ * Note that if fetchUserState gets called, the user's session is renewed.
52
+ */
53
+ export declare const useUserAuth: (renew?: boolean) => Gen3UserLoginResponse<Gen3User>;