@gen3/core 0.10.66 → 0.10.68
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.
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/constants.ts","../../src/features/fence/utils.ts","../../src/features/user/userSliceRTK.ts","../../src/features/gen3/gen3Api.ts","../../src/features/fence/fenceApi.ts","../../src/features/fence/credentialsApi.ts","../../src/features/fence/jwtApi.ts","../../src/hooks.ts","../../src/dataAccess.ts","../../src/features/user/userSlice.ts","../../src/features/user/externalLoginsSlice.ts","../../src/types/index.ts","../../src/features/gen3Apps/gen3AppRegistry.ts","../../src/features/gen3Apps/gen3AppsSlice.ts","../../src/features/drsResolver/drsHostnameSlice.ts","../../src/features/modals/modalsSlice.ts","../../src/features/cohort/cohortSlice.ts","../../src/features/dataLibrary/types.ts","../../src/features/dataLibrary/utils.ts","../../src/features/dataLibrary/dataLibraryApi.ts","../../src/features/dataLibrary/dataLibraryIndexDB.ts","../../src/features/dataLibrary/useDataLibrary.ts","../../src/features/dataLibrary/dataLibrarySelectionSlice.ts","../../src/features/workspace/types.ts","../../src/features/workspace/workspaceSlice.ts","../../src/features/guppy/guppyApi.ts","../../src/features/filters/filters.ts","../../src/features/filters/types.ts","../../src/features/filters/utils.ts","../../src/features/guppy/guppySlice.ts","../../src/features/guppy/conversion.ts","../../src/features/guppy/utils.ts","../../src/features/guppy/guppyDownloadSlice.ts","../../src/reducers.ts","../../src/store.ts","../../src/utils/ts-utils.ts","../../src/utils/url.ts","../../src/utils/fetch.ts","../../src/provider.tsx","../../src/features/authz/authzMappingSlice.ts","../../src/features/metadata/metadataSlice.ts","../../src/features/gen3Apps/constants.ts","../../src/features/gen3Apps/Gen3App.tsx","../../src/features/gen3Apps/Gen3AppRTKQ.ts","../../src/features/graphQL/graphQLSlice.ts","../../src/features/aiSearch/aiSearchSlice.ts","../../src/features/workspace/workspaceApi.ts","../../src/features/workspace/utils.ts","../../src/features/submission/authMappingUtils.ts","../../src/utils/extractvalues.ts","../../src/features/submission/submissionApi.ts","../../src/features/sower/sowerApi.ts"],"sourcesContent":["export const GEN3_COMMONS_NAME = process.env.GEN3_COMMONS_NAME || 'gen3';\nexport const GEN3_API = process.env.NEXT_PUBLIC_GEN3_API || '';\nexport const GEN3_DOMAIN = process.env.NEXT_PUBLIC_GEN3_DOMAIN || '';\nexport const GUID_PREFIX_PATTERN = /^dg.[a-zA-Z0-9]+\\//;\n\n/**\n * Service Specific Constants\n */\nexport const GEN3_GUPPY_API =\n process.env.NEXT_PUBLIC_GEN3_GUPPY_API || `${GEN3_API}/guppy`;\nexport const GEN3_MDS_API =\n process.env.NEXT_PUBLIC_GEN3_MDS_API || `${GEN3_API}/mds`;\nexport const GEN3_DOWNLOADS_ENDPOINT =\n process.env.NEXT_PUBLIC_GEN3_DOWNLOADS_ENDPOINT || 'downloads';\nexport const GEN3_FENCE_API =\n process.env.NEXT_PUBLIC_GEN3_FENCE_API || GEN3_API;\nexport const GEN3_AI_SEARCH_API =\n process.env.NEXT_PUBLIC_GEN3_AI_SEARCH_API || `${GEN3_API}/ai-search`;\nexport const GEN3_AUTHZ_API =\n process.env.NEXT_PUBLIC_GEN3_AUTHZ_API || `${GEN3_API}/authz`;\nexport const GEN3_REDIRECT_URL =\n process.env.NEXT_PUBLIC_GEN3_REDIRECT_URL || GEN3_API;\nexport const GEN3_WORKSPACE_API =\n process.env.NEXT_PUBLIC_GEN3_WORKSPACE_STATUS_API ||\n `${GEN3_API}/lw-workspace`;\nexport const GEN3_SUBMISSION_API =\n process.env.NEXT_PUBLIC_GEN3_SUBMISSION_API ||\n `${GEN3_API}/api/v0/submission`;\nexport const GEN3_WTS_API =\n process.env.NEXT_PUBLIC_GEN3_WTS_API || `${GEN3_API}/wts`;\nexport const GEN3_DATA_LIBRARY_API =\n process.env.NEXT_PUBLIC_GEN3_DATA_LIBRARY_API || `${GEN3_API}/library/lists`;\nexport const GEN3_CROSSWALK_API =\n process.env.NEXT_PUBLIC_GEN3_CROSSWALK_API || `${GEN3_API}/mds`;\nexport const GEN3_SOWER_API =\n process.env.NEXT_PUBLIC_GEN3_SOWER_API || `${GEN3_API}/jobs`;\n\nexport enum Accessibility {\n ACCESSIBLE = 'accessible',\n UNACCESSIBLE = 'unaccessible',\n ALL = 'all',\n}\n\nexport const FILE_FORMATS = {\n JSON: 'json',\n TSV: 'tsv',\n CSV: 'csv',\n};\n\nexport const FILE_DELIMITERS = {\n tsv: '\\t',\n csv: ',',\n};\n","import { FetchError, Gen3FenceResponse } from './types';\nimport { GEN3_FENCE_API } from '../../constants';\nimport { FetchRequest } from './fenceApi';\n\n/**\n * Template for fence error response dict\n * @returns: An error dict response from a RESTFUL API request\n */\nexport const buildFetchError = async <T>(\n res: Response,\n request?: T,\n): Promise<FetchError<T>> => {\n return {\n url: res.url,\n status: res.status,\n statusText: res.statusText,\n text: await res.text(),\n request: request,\n };\n};\n/**\n * Template for a standard fence request\n * @returns: response data\n */\nexport const fetchFence = async <T>({\n endpoint,\n headers,\n body = {},\n method = 'GET',\n isJSON = true,\n}: FetchRequest): Promise<Gen3FenceResponse<T>> => {\n const res = await fetch(`${GEN3_FENCE_API}${endpoint}`, {\n method: method,\n headers: headers,\n body: 'POST' === method ? JSON.stringify(body) : null,\n });\n\n if (res.ok)\n return {\n data: isJSON ? await res.json() : await res.text(),\n status: res.status,\n };\n\n throw await buildFetchError(res, {\n endpoint,\n method,\n headers,\n body,\n });\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { fetchFence } from '../fence/utils';\nimport { type Gen3FenceResponse } from '../fence/types';\nimport { Gen3User, LoginStatus } from './types';\nimport { CoreState } from '../../reducers';\nimport { getCookie } from 'cookies-next';\nimport { QueryStatus } from '@reduxjs/toolkit/query';\nimport { createApi } from '@reduxjs/toolkit/query/react';\n\ninterface StatusWithCSRFTokenResponse {\n csrf: string;\n message?: string;\n}\n\nexport interface CSRFToken {\n readonly csrfToken: string;\n}\n\nexport interface UserAuthResponse {\n readonly data: Gen3User;\n readonly loginStatus: LoginStatus;\n}\n\nexport const userAuthApi = createApi({\n reducerPath: 'userAuthApi',\n refetchOnMountOrArgChange: 1800,\n refetchOnReconnect: true,\n baseQuery: async ({ endpoint }, { getState }) => {\n let results;\n const csrfToken = selectCSRFToken(getState() as CoreState);\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n accessToken = getCookie('credentials_token');\n }\n const headers: Record<string, string> = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...(csrfToken ? { 'X-CSRF-Token': csrfToken } : {}),\n ...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}),\n credentials: 'include',\n };\n\n try {\n results = await fetchFence({ endpoint, headers });\n } catch (e) {\n /*\n Because an \"error\" response is valid for the auth requests we don't want to\n put the request in an error state, or it will attempt the request over and over again\n */\n return { data: {} };\n }\n\n return { data: results };\n },\n endpoints: (builder) => ({\n fetchUserDetails: builder.query<UserAuthResponse, void>({\n query: () => ({ endpoint: '/user/user' }),\n transformResponse(response: Gen3FenceResponse<Gen3User>) {\n return {\n data: response.data,\n // TODO: check if this is the correct status code\n\n loginStatus:\n response.status === 200 && response.data?.username\n ? 'authenticated'\n : 'unauthenticated',\n };\n },\n }),\n getCSRF: builder.query<CSRFToken, void>({\n query: () => ({ endpoint: '/_status' }),\n transformResponse: (\n response: Gen3FenceResponse<StatusWithCSRFTokenResponse>,\n ): CSRFToken => {\n return { csrfToken: response?.data?.csrf ?? '' };\n },\n }),\n }),\n});\n\nconst EMPTY_USER: Gen3User = {\n username: undefined,\n};\n\nexport const {\n useFetchUserDetailsQuery,\n useLazyFetchUserDetailsQuery,\n useGetCSRFQuery,\n} = userAuthApi;\nexport const userAuthApiMiddleware = userAuthApi.middleware;\nexport const userAuthApiReducerPath = userAuthApi.reducerPath;\nexport const userAuthApiReducer = userAuthApi.reducer;\n\nexport const selectUserDetailsFromState =\n userAuthApi.endpoints.fetchUserDetails.select();\n\nexport const selectUserDetails = createSelector(\n selectUserDetailsFromState,\n (userDetails) => userDetails?.data?.data ?? EMPTY_USER,\n);\n\nexport const selectUserAuthStatus = createSelector(\n selectUserDetailsFromState,\n (userLoginState) =>\n userLoginState.status === QueryStatus.pending\n ? ('pending' as LoginStatus)\n : userLoginState.status === QueryStatus.uninitialized\n ? ('not present' as LoginStatus)\n : (userLoginState?.data?.loginStatus ??\n ('unauthenticated' as LoginStatus)),\n);\n\nexport const selectCSRFTokenData = userAuthApi.endpoints.getCSRF.select();\n\nconst passThroughTheState = (state: CoreState) => state.gen3Services;\n\nexport const selectCSRFToken = createSelector(\n [selectCSRFTokenData, passThroughTheState],\n (state) => state?.data?.csrfToken,\n);\n\nexport const selectHeadersWithCSRFToken = createSelector(\n [selectCSRFToken, passThroughTheState],\n (csrfToken) => ({\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...(csrfToken && { 'X-CSRF-Token': csrfToken }),\n }),\n);\n","import { Middleware, Reducer } from '@reduxjs/toolkit';\nimport { fetchBaseQuery, createApi } from '@reduxjs/toolkit/query/react';\nimport { GEN3_API } from '../../constants';\nimport { CoreState } from '../../reducers';\nimport { selectCSRFToken } from '../user/userSliceRTK';\nimport { getCookie } from 'cookies-next';\n\n/**\n * Creates a base class core API for building other API endpoints on top of.\n * @param reducerPath - The root key name that the other slices will be derived from\n * @param baseQuery: - The template query which the slices will addon to\n * @param endpoints - Base API endpoints that should exist in every slice\n * @returns: The generated base API\n */\nexport const gen3Api = createApi({\n reducerPath: 'gen3Services',\n baseQuery: fetchBaseQuery({\n baseUrl: `${GEN3_API}`,\n prepareHeaders: (headers, { getState }) => {\n const csrfToken = selectCSRFToken(getState() as CoreState);\n headers.set('Content-Type', 'application/json');\n\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n // NOTE: This cookie can only be accessed from the client side\n // in development mode. Otherwise, the cookie is set as httpOnly\n accessToken = getCookie('credentials_token');\n }\n if (csrfToken) headers.set('X-CSRF-Token', csrfToken);\n if (accessToken) headers.set('Authorization', `Bearer ${accessToken}`);\n return headers;\n },\n }),\n endpoints: () => ({}),\n});\n\nexport const gen3ServicesReducer: Reducer = gen3Api.reducer as Reducer;\nexport const gen3ServicesReducerMiddleware = gen3Api.middleware as Middleware;\n","import { gen3Api } from '../gen3/gen3Api';\nimport { GEN3_FENCE_API, GEN3_REDIRECT_URL } from '../../constants';\nimport { fetchFence } from './utils';\n\nexport interface NameUrl {\n readonly name: string;\n readonly url: string;\n}\n\nexport interface Gen3LoginProvider {\n readonly desc?: string;\n readonly id: string;\n readonly idp: string;\n readonly name: string;\n readonly secondary: boolean;\n readonly url: string;\n readonly urls: Array<NameUrl>;\n}\n\nexport interface Gen3FenceLoginProviders {\n readonly default_provider: Gen3LoginProvider;\n readonly providers: Array<Gen3LoginProvider>;\n}\n\n/**\n * Creates a fence API endpoint for handling login processes\n * @param endpoints - defined endpoint query for logging in\n * @returns: The generated fence login API slice\n */\nexport const loginProvidersApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getLoginProviders: builder.query<Gen3FenceLoginProviders, void>({\n query: () => `${GEN3_FENCE_API}/user/login`,\n }),\n getDownload: builder.query<Gen3FenceLoginProviders, string>({\n query: (guid) => `${GEN3_FENCE_API}/user/data/download/${guid}`,\n }),\n }),\n});\n\nexport const {\n useGetLoginProvidersQuery,\n useGetDownloadQuery,\n useLazyGetDownloadQuery,\n} = loginProvidersApi;\n\nexport interface FetchRequest {\n readonly endpoint: string;\n readonly method?: 'GET' | 'POST';\n readonly body?: object;\n readonly headers?: Record<string, string>;\n readonly isJSON?: boolean;\n}\n\n/**\n * Logout from fence\n */\n\nexport const logoutFence = async (redirect = '/') =>\n await fetchFence({\n endpoint: `${GEN3_FENCE_API}/user/logout?next=${GEN3_REDIRECT_URL}${redirect}`,\n method: 'GET',\n });\n","import { gen3Api } from '../gen3';\nimport { GEN3_FENCE_API } from '../../constants';\n\nexport interface APIKey {\n readonly jti: string;\n readonly exp: number;\n}\nexport interface Gen3FenceCredentials {\n readonly jtis: ReadonlyArray<APIKey>;\n}\n\n// extending the gen3API to add a tag to the endpoints\nconst credentialsWithTags = gen3Api.enhanceEndpoints({\n addTagTypes: ['Credentials'],\n});\n\ninterface DeleteCredentialParams {\n readonly csrfToken?: string;\n readonly id: string;\n}\n\ninterface AuthorizeFromCredentialsParams {\n api_key: string;\n key_id: string;\n}\nexport interface AuthTokenResponse {\n access_token: string;\n}\n\n/**\n * Adds a credentialsApi into the base gen3Api\n * @endpoints Includes get, add, and remove credential operations\n * @see https://github.com/uc-cdis/fence/blob/master/openapis/swagger.yaml#L972-L1033\n * @param getCredentials - List all the API keys for the current user\n * @param addNewCredential - Get a new API key for the current user\n * @param removeCredential - Delete API access key with given ID for current user\n * @returns: A fence credential API for manipulating user credentials\n */\nexport const credentialsApi = credentialsWithTags.injectEndpoints({\n endpoints: (builder) => ({\n getCredentials: builder.query<ReadonlyArray<APIKey>, void>({\n query: () => `${GEN3_FENCE_API}/user/credentials/api`,\n transformResponse: (\n response: Gen3FenceCredentials,\n ): ReadonlyArray<APIKey> => response['jtis'], // the response is a JSON object with a single key,\n // \"jtis\", which is an array of API keys\n // no need to transform the response, since the API returns the correct format\n providesTags: ['Credentials'],\n }),\n addNewCredential: builder.mutation({\n query: (csrfToken: string) => ({\n url: `${GEN3_FENCE_API}/user/credentials/api`,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-csrf-token': csrfToken,\n },\n body: {\n scope: ['user', 'data'],\n },\n }),\n invalidatesTags: ['Credentials'],\n }),\n removeCredential: builder.mutation<void, DeleteCredentialParams>({\n query: ({ csrfToken, id }) => ({\n url: `${GEN3_FENCE_API}/user/credentials/api/${id}`,\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n ...(csrfToken && { 'x-csrf-token': csrfToken }),\n },\n }),\n invalidatesTags: ['Credentials'],\n }),\n authorizeFromCredentials: builder.mutation<AuthTokenResponse, AuthorizeFromCredentialsParams>({\n query: (params) => ({\n url: `${GEN3_FENCE_API}/user/credentials/api/access_token`,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: {\n api_key: params.api_key,\n key_id: params.key_id,\n },\n }),\n }),\n })\n});\n\nexport const {\n useGetCredentialsQuery,\n useAddNewCredentialMutation,\n useRemoveCredentialMutation,\n useAuthorizeFromCredentialsMutation\n} = credentialsApi;\n","import { gen3Api } from '../gen3';\n\nexport interface JWTKeys {\n keys: ReadonlyArray<string[2]>\n}\n\n// extending the gen3API to add a tag to the endpoints\nconst credentialsWithTags = gen3Api.enhanceEndpoints({\n addTagTypes: ['fenceJWT'],\n});\n\n/**\n * A fence API for getting the public keys which can be used to validate\n * JWTs issued and signed by fence\n * @returns: Fence public keys\n */\nexport const jwtApi = credentialsWithTags.injectEndpoints({\n endpoints: (builder) => ({\n getJWKKeys: builder.query<ReadonlyArray<JWTKeys>, void>({\n query: () => 'user/jwt/keys',\n providesTags: ['fenceJWT'],\n }),\n }),\n});\n\nexport const {\n useGetJWKKeysQuery,\n} = jwtApi;\n","import { useDispatch, useSelector } from 'react-redux';\nimport { CoreDispatch } from './store';\nimport { CoreState } from './reducers';\n\n// From here down is react-related code. If we wanted to create a UI-agnotic core,\n// we could need to move the following code and the provider into a new workspace,\n// such as core-react.\n\n/**\n * The initial context is never used in practice. A little casting voodoo to satisfy TS.\n *\n * Note: Should the action type be AnyAction (from redux) or PayloadAction (from redux-toolkit)?\n * If we are creating all of our actions through RTK, then PayloadAction might be the\n * correct opinionated type.\n */\n\nexport const useCoreSelector = useSelector.withTypes<CoreState>();\nexport const useCoreDispatch = useDispatch.withTypes<CoreDispatch>();\n","import { useEffect, useRef } from 'react';\nimport { useCoreDispatch, useCoreSelector } from './hooks';\nimport { CoreState } from './reducers';\nimport { isEqual } from 'lodash';\n\nexport type UnknownJson = Record<string, unknown>;\n\nexport type DataStatus = 'uninitialized' | 'pending' | 'fulfilled' | 'rejected';\n\nexport interface Gen3Response<H = UnknownJson> {\n readonly data: H;\n readonly warnings?: Record<string, string>;\n readonly errors?: Record<string, string>;\n}\n\nexport interface UseCoreDataResponse<T> {\n readonly data?: T;\n readonly error?: string;\n readonly isUninitialized: boolean;\n readonly isFetching: boolean;\n readonly isSuccess: boolean;\n readonly isError: boolean;\n}\n\nexport interface CoreDataSelectorResponse<T, S = DataStatus> {\n readonly data?: T;\n readonly status: S;\n readonly error?: string;\n}\n\nexport interface CoreDataSelector<T> {\n (state: CoreState): CoreDataSelectorResponse<T>;\n}\n\nexport interface FetchDataActionCreator<P, A> {\n (...params: P[]): A;\n}\n\nexport interface UseCoreDataHook<P, T> {\n (...params: P[]): UseCoreDataResponse<T>;\n}\n\nexport const usePrevious = <T>(value: T): T | undefined => {\n const ref = useRef<T>();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nexport const createUseCoreDataHook = <P, A, T>(\n fetchDataActionCreator: FetchDataActionCreator<P, A>,\n dataSelector: CoreDataSelector<T>,\n): UseCoreDataHook<P, T> => {\n return (...params: P[]) => {\n const coreDispatch = useCoreDispatch();\n const { data, status, error } = useCoreSelector(dataSelector);\n const action = fetchDataActionCreator(...params);\n const prevParams = usePrevious<P[]>(params);\n\n useEffect(() => {\n if (status === 'uninitialized' || !isEqual(prevParams, params)) {\n // createDispatchHook types forces the input to AnyAction, which is\n // not compatible with thunk actions. hence, the `as any` cast. ;(\n coreDispatch(action as any); // eslint-disable-line\n }\n }, [status, coreDispatch, action, params, prevParams]);\n\n return {\n data,\n error,\n isUninitialized: status === 'uninitialized',\n isFetching: status === 'pending',\n isSuccess: status === 'fulfilled',\n isError: status === 'rejected',\n };\n };\n};\n\nexport interface CoreDataValueSelector<T> {\n (state: CoreState): T;\n}\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport { fetchFence, Gen3FenceResponse } from '../fence';\nimport { CoreDispatch } from '../../store';\nimport { CoreState } from '../../reducers';\nimport {\n CoreDataSelectorResponse,\n createUseCoreDataHook,\n DataStatus,\n} from '../../dataAccess';\nimport { useCoreDispatch, useCoreSelector } from '../../hooks';\nimport { useEffect } from 'react';\nimport { Gen3User, LoginStatus } from './types';\nimport { getCookie } from 'cookies-next';\nimport { selectCSRFToken } from './userSliceRTK';\n\nexport interface Gen3UserLoginResponse<T> {\n readonly data?: T;\n readonly error?: string;\n readonly loginStatus: LoginStatus;\n readonly isUninitialized: boolean;\n readonly isFetching: boolean;\n readonly isSuccess: boolean;\n readonly isError: boolean;\n}\n\n/**\n * Creates an async thunk for fetching user permissions details from fence\n * @see https://redux-toolkit.js.org/api/createAsyncThunk\n * @returns: A fence response dict containing user details\n */\nexport const fetchUserState = createAsyncThunk<\n Gen3FenceResponse<Gen3User>,\n void,\n { dispatch: CoreDispatch; state: CoreState }\n>('fence/user/user', async (_, meta) => {\n // Get an access token from a cookie if in development mode\n const csrfToken = selectCSRFToken(meta.getState());\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n accessToken = getCookie('credentials_token');\n }\n\n return await fetchFence({\n endpoint: '/user/user',\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...(csrfToken ? { 'X-CSRF-Token': csrfToken } : {}),\n credentials: 'include',\n ...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}),\n },\n });\n});\n\nexport const isAuthenticated = (loginStatus: LoginStatus): boolean =>\n loginStatus === 'authenticated';\n\nexport const isPending = (loginStatus: LoginStatus): boolean =>\n loginStatus === 'pending';\n\nexport interface Gen3UserState {\n readonly data?: Gen3User;\n readonly status: DataStatus;\n readonly loginStatus: LoginStatus;\n readonly error?: string;\n}\n\nconst initialState: Gen3UserState = {\n status: 'uninitialized',\n loginStatus: 'unauthenticated',\n error: undefined,\n};\n\n/**\n * Wraps a slice on top of fetchUserState async thunk to keep track of\n * query state. authenticated/not-authenticated vs. ejected/fulfilled/pending\n * @returns: status messages wrapped around fetchUserState response dict\n */\nconst slice = createSlice({\n name: 'fence/user',\n initialState,\n reducers: {\n resetUserState: () => initialState,\n },\n extraReducers: (builder) => {\n builder\n .addCase(fetchUserState.fulfilled, (_, action) => {\n const response = action.payload;\n if (response.status !== 200) {\n return {\n status: 'rejected',\n loginStatus: 'unauthenticated',\n };\n }\n\n return {\n data: { ...response.data },\n status: 'fulfilled',\n loginStatus: 'authenticated',\n };\n })\n .addCase(fetchUserState.pending, () => {\n return { status: 'pending', loginStatus: 'unauthenticated' };\n })\n .addCase(fetchUserState.rejected, () => {\n return { status: 'rejected', loginStatus: 'unauthenticated' };\n });\n },\n});\n\nexport const userReducer = slice.reducer;\n\nexport const { resetUserState } = slice.actions;\n\nexport interface Gen3UserSelectorResponse<T>\n extends CoreDataSelectorResponse<T> {\n readonly loginStatus: LoginStatus;\n}\n\nexport const selectUserData = (\n state: CoreState,\n): Gen3UserSelectorResponse<Gen3User> => {\n return state.user;\n};\n\nexport const selectUser = (state: CoreState): Gen3UserState => state.user;\n\nexport const selectUserLoginStatus = (state: CoreState): LoginStatus =>\n state.user.loginStatus;\n\nexport const useUser = createUseCoreDataHook(fetchUserState, selectUserData);\n\nexport const useIsUserLoggedIn = (): boolean => {\n return useCoreSelector((state) =>\n isAuthenticated(selectUserLoginStatus(state)),\n );\n};\n\n/**\n * Hook to return get the authenticated state of the user and if logged in,\n * the user's profile and access api.\n * Note that if fetchUserState gets called, the user's session is renewed.\n */\nexport const useUserAuth = (renew = false): Gen3UserLoginResponse<Gen3User> => {\n const coreDispatch = useCoreDispatch();\n const { data, status, loginStatus, error } = useCoreSelector(selectUserData);\n\n useEffect(() => {\n if (status === 'uninitialized' || renew) {\n // TODO: need to determine what other states require dispatch\n coreDispatch(fetchUserState());\n }\n }, [status, coreDispatch, renew]);\n\n return {\n data: data,\n error,\n loginStatus,\n isUninitialized: status === 'uninitialized',\n isFetching: status === 'pending',\n isSuccess: status === 'fulfilled',\n isError: status === 'rejected',\n };\n};\n","import { gen3Api } from '../gen3';\nimport { ExternalProvider } from './types';\nimport { GEN3_WTS_API } from '../../constants';\n\nexport interface ExternalProviderResponse {\n providers: ExternalProvider[];\n}\n\n/**\n * @description Creates a externalLoginApi for listing the configured identity providers\n * in workspace token service. Includes user token expiration time.\n * @see https://github.com/uc-cdis/workspace-token-service/tree/master\n */\nexport const externalLoginApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getExternalLogins: builder.query<ExternalProviderResponse, void>({\n query: () => ({\n url: `${GEN3_WTS_API}/external_oidc/`,\n }),\n }),\n isExternalConnected: builder.query<boolean, string>({\n query: (idp: string) => ({\n url: `${GEN3_WTS_API}/oauth2/connected?idp=${idp}`,\n }),\n transformResponse: () => {\n return true; // if success then connected is true\n },\n }),\n }),\n});\n\nexport const {\n useGetExternalLoginsQuery,\n useLazyGetExternalLoginsQuery,\n useLazyIsExternalConnectedQuery,\n useIsExternalConnectedQuery,\n} = externalLoginApi;\n","import { FetchBaseQueryError } from '@reduxjs/toolkit/query';\n\nexport type JSONValue = string | number | boolean | JSONValue[] | JSONObject;\n\nexport type JSONObject = {\n [k: string]: JSONValue;\n};\nexport type JSONArray = Array<JSONValue>;\n\n// type guard functions\nexport const isHistogramRangeData = (key: any): key is [number, number] => {\n return (\n Array.isArray(key) &&\n key.length === 2 &&\n key.every((item) => typeof item === 'number')\n );\n};\n\nexport const isJSONObject = (data: any): data is JSONObject => {\n return typeof data === 'object' && data !== null && !Array.isArray(data);\n};\n\nexport const isJSONValue = (data: any): data is JSONValue => {\n return (\n typeof data === 'string' ||\n typeof data === 'number' ||\n typeof data === 'boolean' ||\n (Array.isArray(data) && data.every(isJSONValue)) ||\n isJSONObject(data)\n );\n};\n\nexport const isJSONValueArray = (data: JSONValue): data is JSONArray => {\n return Array.isArray(data) && data.every(isJSONValue);\n};\n\nexport interface HistogramData {\n key: string | [number, number];\n count: number;\n}\n\nexport type HistogramDataArray = Array<HistogramData>;\n\nconst isValidObject = (input: any): boolean =>\n typeof input === 'object' && input !== null;\n\nexport const isHistogramData = (data: any): data is HistogramData => {\n return isValidObject(data) && 'key' in data && 'count' in data;\n};\n\nexport const isHistogramDataArray = (input: any): input is HistogramData[] => {\n if (!isValidObject(input) || !Array.isArray(input.histogram)) {\n return false;\n }\n return input.histogram.every(isHistogramData);\n};\n\nexport interface HistogramDataCollection {\n histogram: HistogramDataArray;\n}\n\nexport const isHistogramDataCollection = (\n obj: any,\n): obj is HistogramDataCollection => {\n return (\n isValidObject(obj) && 'histogram' in obj && isHistogramData(obj.histogram)\n );\n};\n\nexport interface GuppyAggregationData {\n [key: string]: HistogramDataCollection;\n}\n\n// Type guard function for GuppyAggregationData interface\nexport const isGuppyAggregationData = (\n obj: any,\n): obj is GuppyAggregationData => {\n if (!isValidObject(obj)) return false;\n\n for (const key in obj) {\n if (!isHistogramDataCollection(obj[key])) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const isHistogramDataAnEnum = (data: unknown): data is HistogramData => {\n return (\n typeof data === 'object' &&\n data !== null &&\n 'key' in data &&\n 'count' in data &&\n typeof data.key === 'string' &&\n typeof data.count === 'number'\n );\n};\n\nexport const isHistogramDataAArray = (\n data: any,\n): data is HistogramDataArray => {\n return Array.isArray(data) && data.every(isHistogramData);\n};\n\nexport const isHistogramDataArrayAnEnum = (data: any): boolean => {\n return Array.isArray(data) && data.every(isHistogramDataAnEnum);\n};\n\nexport const isHistogramDataArrayARange = (data: any): boolean => {\n return (\n Array.isArray(data) && data.every((item) => isHistogramRangeData(item.key))\n );\n};\n\n/**\n * Type predicate to narrow an unknown error to `FetchBaseQueryError`\n */\nexport function isFetchBaseQueryError(\n error: unknown,\n): error is FetchBaseQueryError {\n return typeof error === 'object' && error != null && 'status' in error;\n}\n\n/**\n * Type predicate to narrow an unknown error to an object with a string 'message' property\n */\nexport function isErrorWithMessage(\n error: unknown,\n): error is { message: string } {\n return (\n typeof error === 'object' &&\n error != null &&\n 'message' in error &&\n typeof (error as any).message === 'string'\n );\n}\n\ninterface ParsingError {\n status: 'PARSING_ERROR';\n originalStatus: number;\n data: string;\n error: string;\n}\n\ninterface HttpError {\n status: number;\n data: unknown;\n}\n\nexport function isHttpStatusError(error: unknown): error is HttpError {\n return (\n typeof error === 'object' &&\n error != null &&\n 'status' in error &&\n typeof error.status === 'number'\n );\n}\n\n/**\n * Type predicate to narrow an unknown error to an object with a string 'message' property\n */\nexport function isFetchParseError(error: unknown): error is ParsingError {\n return (\n typeof error === 'object' &&\n error != null &&\n 'originalStatus' in error &&\n 'status' in error &&\n error['status'] === 'PARSING_ERROR'\n );\n}\n\nexport type AggregationsData = Record<string, HistogramDataArray>;\n","/**\n * A registry for the Gen3 Apps.\n */\nexport const REGISTRY: Record<string, React.ReactNode> = {};\n\nexport const registerGen3App = (id: string, gen3App: React.ReactNode): void => {\n REGISTRY[id] = gen3App;\n};\n\nexport const lookupGen3App = (id: string): React.ReactNode => {\n return REGISTRY[id];\n};\n\nexport const computeGen3AppId = (name: string, version: string): string => {\n return `${name}@${version}`;\n};\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport React from 'react';\nimport { CoreState } from '../../reducers';\nimport { lookupGen3App } from './gen3AppRegistry';\n\nexport interface Gen3AppsState {\n readonly gen3Apps: Readonly<Record<string, Gen3AppMetadata>>;\n readonly currentAppId?: string;\n}\n\nexport interface Gen3AppMetadata {\n readonly id: string;\n readonly name: string;\n readonly version: string;\n readonly requiredEntityTypes: ReadonlyArray<EntityType>;\n}\n\nexport type EntityType = 'case' | 'gene' | 'ssm' | 'cnv' | 'file';\n\nconst initialState: Gen3AppsState = {\n gen3Apps: {},\n};\n\nconst slice = createSlice({\n name: 'gen3Apps',\n initialState,\n reducers: {\n addGen3AppMetadata: (state, action: PayloadAction<Gen3AppMetadata>) => {\n const { name, requiredEntityTypes } = action.payload;\n\n state.gen3Apps[name] = {\n ...action.payload,\n // need to turn a ReadonlyArray into a mutable array for immer's WritableDraft\n requiredEntityTypes: [...requiredEntityTypes],\n };\n },\n },\n});\n\nexport const gen3AppReducer = slice.reducer;\n\nexport const { addGen3AppMetadata } = slice.actions;\n\nexport const selectGen3AppIds = (state: CoreState): ReadonlyArray<string> =>\n Object.keys(state.gen3Apps.gen3Apps);\n\nexport const selectAllGen3AppMetadata = (\n state: CoreState,\n): ReadonlyArray<Gen3AppMetadata> => Object.values(state.gen3Apps.gen3Apps);\n\nexport const selectGen3AppMetadataByName = (\n state: CoreState,\n appName: string,\n): Gen3AppMetadata => state.gen3Apps.gen3Apps[appName];\n\nexport const selectGen3AppByName = (appName: string): React.ReactNode =>\n lookupGen3App(appName); // TODO: memoize this selector\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { CoreState } from '../../reducers';\n\nexport type DRSHostnameMap = Record<string, string>;\n\nconst initialState : Record<string, string> = {};\n\n// TODO: document what this does\nconst slice = createSlice({\n name: 'drsResolver',\n initialState,\n reducers: {\n setDRSHostnames: (_state, action: PayloadAction<DRSHostnameMap>) => {\n return action.payload;\n },\n },\n});\n\nexport const drsHostnamesReducer = slice.reducer;\n\nexport const { setDRSHostnames } = slice.actions;\n\nexport const drsHostnamesSelector = (id:string, state: CoreState) =>\n state.drsHostnames?.[id];\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { CoreState } from '../../reducers';\n\n/**\n * Defines the modals slice of the Redux store.\n * This slice is used to control the display of standard Gen3 modals.\n * and can be extended to add custom modals by representing them as strings.\n */\nexport enum Modals {\n 'FirstTimeModal' = 'FirstTimeModal',\n 'SessionExpireModal' = 'SessionExpireModal',\n 'NoAccessModal' = 'NoAccessModal',\n 'CreateCredentialsAPIKeyModal' = 'CreateCredentialsAPIKeyModal',\n 'GeneralErrorModal' = 'GeneralErrorModal',\n}\n\n// Type for the current modal in the store\n// This can be a standard Gen3 modal, a custom modal (via string), or null\ntype CurrentModal = Modals | string | null;\n\nexport interface ModalState {\n currentModal: CurrentModal;\n message?: string;\n}\n\nconst initialState: ModalState = {\n currentModal: null,\n};\n\n//Creates a modal slice for tracking showModal and hideModal state.\nconst slice = createSlice({\n name: 'modals',\n initialState,\n reducers: {\n showModal: (\n state: ModalState,\n action: PayloadAction<{ modal: Modals; message?: string }>,\n ) => {\n state.currentModal = action.payload.modal;\n state.message = action.payload.message;\n return state;\n },\n hideModal: (state: ModalState) => {\n state.currentModal = null;\n return state;\n },\n },\n});\n\nexport const modalReducer = slice.reducer;\nexport const { showModal, hideModal } = slice.actions;\n\nexport const selectCurrentModal = (state: CoreState): CurrentModal =>\n state.modals.currentModal;\n\nexport const selectCurrentMessage = (state: CoreState): string | undefined =>\n state.modals.message;\n","import { createSlice, Draft, type PayloadAction } from '@reduxjs/toolkit';\nimport type { CoreState } from '../../reducers';\nimport { Operation, FilterSet, IndexedFilterSet } from '../filters';\n\nexport interface Cohort {\n readonly id: string;\n readonly name: string;\n readonly filters: IndexedFilterSet; // maps of index to filter set\n readonly modified?: boolean; // flag which is set to true if modified and unsaved\n readonly modified_datetime: string; // last time cohort was modified\n}\n\nexport interface CohortState {\n cohort: Cohort;\n}\n\nconst initialCohortState: CohortState = {\n cohort: {\n id: 'default',\n name: 'Filters',\n filters: {},\n modified_datetime: new Date().toISOString(),\n },\n};\n\ninterface UpdateFilterParams {\n index: string;\n field: string;\n filter: Operation;\n}\n\ninterface SetFilterParams {\n index: string;\n filters: FilterSet;\n}\n\ninterface RemoveFilterParams {\n index: string;\n field: string;\n}\n\ninterface ClearAllFilterParams {\n index: string;\n}\n\n// TODO: start using this adapter\n/*\nconst cohortsAdapter = createEntityAdapter<Cohort>({\n sortComparer: (a, b) => {\n if (a.modified_datetime <= b.modified_datetime) return 1;\n else return -1;\n },\n});\n*/\n\n/**\n * Redux slice for cohort filters\n */\n\nexport const cohortSlice = createSlice({\n name: 'cohort',\n initialState: initialCohortState,\n reducers: {\n // adds a filter to the cohort filter set at the given index\n updateCohortFilter: (\n state: Draft<CohortState>,\n action: PayloadAction<UpdateFilterParams>,\n ) => {\n const { index, field, filter } = action.payload;\n return {\n cohort: {\n ...state.cohort,\n filters: {\n ...state.cohort.filters,\n [index]: {\n mode: state.cohort.filters?.[index]?.mode ?? 'and',\n root: {\n ...(state.cohort.filters?.[index]?.root ?? {}),\n [field]: filter,\n },\n },\n },\n },\n };\n },\n setCohortFilter: (\n state: Draft<CohortState>,\n action: PayloadAction<SetFilterParams>,\n ) => {\n const { index, filters } = action.payload;\n return {\n cohort: {\n ...state.cohort,\n filters: {\n ...state.cohort.filters,\n [index]: filters,\n },\n },\n };\n },\n // removes a filter to the cohort filter set at the given index\n removeCohortFilter: (\n state: Draft<CohortState>,\n action: PayloadAction<RemoveFilterParams>,\n ) => {\n const { index, field } = action.payload;\n const filters = state.cohort?.filters?.[index]?.root;\n if (!filters) {\n return;\n }\n const { [field]: _a, ...updated } = filters;\n return {\n cohort: {\n ...state.cohort,\n filters: {\n ...state.cohort.filters,\n [index]: {\n mode: state.cohort.filters[index].mode,\n root: updated,\n },\n },\n },\n };\n },\n // removes all filters from the cohort filter set at the given index\n clearCohortFilters: (\n state: Draft<CohortState>,\n action: PayloadAction<ClearAllFilterParams>,\n ) => {\n const { index } = action.payload;\n return {\n cohort: {\n ...state.cohort,\n filters: {\n ...state.cohort.filters,\n [index]: {\n // empty filter set\n mode: 'and',\n root: {},\n } as FilterSet,\n },\n },\n };\n },\n },\n});\n\n// Filter actions: addFilter, removeFilter, updateFilter\nexport const {\n updateCohortFilter,\n setCohortFilter,\n removeCohortFilter,\n clearCohortFilters,\n} = cohortSlice.actions;\n\nexport const selectCohortFilters = (state: CoreState): IndexedFilterSet =>\n state.cohorts.cohort.filters;\n\nexport const selectCurrentCohortId = (state: CoreState): string =>\n state.cohorts.cohort.id;\n\nexport const selectCurrentCohort = (state: CoreState): Cohort =>\n state.cohorts.cohort;\n\nexport const selectCurrentCohortName = (state: CoreState): string =>\n state.cohorts.cohort.name;\n\n/**\n * Select a filter by its name from the current cohort. If the filter is not found\n * returns undefined.\n * @param state - Core\n * @param index which cohort index to select from\n * @param name name of the filter to select\n */\nexport const selectIndexedFilterByName = (\n state: CoreState,\n index: string,\n name: string,\n): Operation | undefined => {\n return state.cohorts.cohort.filters[index]?.root[name];\n};\n\nconst EmptyFilterSet: FilterSet = { mode: 'and', root: {} };\n/**\n * Select a filter from the index.\n * returns undefined.\n * @param state - Core\n * @param index which cohort index to select from\n */\nexport const selectIndexFilters = (\n state: CoreState,\n index: string,\n): FilterSet => {\n return state.cohorts.cohort.filters?.[index] ?? EmptyFilterSet; // TODO: check if this is undefined\n};\n\nexport const cohortReducer = cohortSlice.reducer;\n","import { JSONObject } from '../../types';\n\nexport interface AuthZAccess {\n version: number;\n authz: string[];\n}\n\nexport type ItemValue =\n | string\n | number\n | undefined\n | Record<string, any>\n | boolean;\n\nexport interface Items {\n [k: string]: ItemValue;\n}\n\nexport interface ListItem {\n itemType: 'Data' | 'AdditionalData' | 'Gen3GraphQL';\n [k: string]: ItemValue;\n}\n\n/**\n * A Data item: at the minimum it will have a guid and an item type\n */\n\nexport interface FileItem extends ListItem {\n id: string; // TODO: remove id or guid\n guid: string;\n name?: string;\n description?: string;\n type?: string;\n size?: string;\n itemType: 'Data';\n datasetGuid: string;\n}\n\nexport interface CohortItem extends ListItem {\n itemType: 'Gen3GraphQL';\n data: JSONObject;\n name: string;\n schemaVersion: string;\n id: string;\n index: string;\n}\n\nexport interface AdditionalDataItem extends ListItem {\n description?: string;\n documentationUrl?: string;\n url?: string;\n itemType: 'AdditionalData';\n name: string;\n datasetGuid: string;\n}\n\nexport const isFileItem = (item: ListItem): item is FileItem => {\n return item && 'guid' in item;\n};\n\nexport const isAdditionalDataItem = (item: any): item is AdditionalDataItem => {\n return (item as AdditionalDataItem).itemType === 'AdditionalData'; // TODO resolve this with type from the api\n};\n\n// Type guard for CohortItem\nexport const isCohortItem = (item: any): item is CohortItem => {\n return (\n item &&\n 'data' in item &&\n 'schemaVersion' in item &&\n item.itemType === 'Gen3GraphQL'\n );\n};\n\nexport type DataSetItems = Record<string, FileItem | AdditionalDataItem>;\n\n/**\n * Represents a DataSet which is created by grouping File\n * objects with the same dataset_guids\n */\nexport interface DataListEntry {\n name?: string; // TODO: figure out how to set name\n items: DataSetItems;\n}\n\nexport interface RegisteredDataListEntry extends DataListEntry {\n id: string;\n}\n\nexport type FilesOrCohort = Record<\n string,\n RegisteredDataListEntry | CohortItem\n>;\n\nexport type LibraryAPIItems = Record<\n string,\n FileItem | AdditionalDataItem | CohortItem\n>;\n\nexport interface DatalistUpdate {\n name: string;\n items: LibraryAPIItems;\n}\n\nexport interface Datalist {\n id: string;\n createdTime: string;\n updatedTime: string;\n authz: AuthZAccess;\n version: number;\n name: string;\n items: FilesOrCohort;\n}\n\nexport type DataLibrary = Record<string, Datalist>;\n\nexport type DataLibraryItems = {\n lists: DataLibrary;\n};\n\nexport type DataLibraryAPIResponse = {\n lists: Record<string, JSONObject>;\n};\n\nexport interface LoadAllListData {\n lists: Array<DataListEntry>;\n}\n\nexport interface AddUpdateListParams {\n id: string;\n list: DatalistUpdate;\n}\n","import {\n AdditionalDataItem,\n CohortItem,\n DataLibrary,\n DataLibraryAPIResponse,\n Datalist,\n DatalistUpdate,\n // DataListEntry,\n DataSetItems,\n isCohortItem,\n isFileItem,\n LibraryAPIItems,\n // RegisteredDataListEntry,\n} from './types';\nimport { JSONObject } from '../../types/';\n\nconst processItem = (id: string, data: any) => {\n if (data?.type === 'AdditionalData') {\n return {\n name: data.name,\n itemType: 'AdditionalData',\n description: data?.description,\n documentationUrl: data?.documentationUrl as string,\n url: data?.url as string,\n } as AdditionalDataItem;\n }\n\n return {\n ...data,\n itemType: 'Data',\n guid: data.id,\n id: id, // TODO fix this hack\n };\n};\n\nexport const BuildList = (\n listId: string,\n listData: JSONObject,\n): Datalist | undefined => {\n if (!Object.keys(listData).includes('items')) return undefined;\n\n const items = Object.entries(listData?.items).reduce(\n (acc, [id, data]) => {\n if (data?.type === 'Gen3GraphQL') {\n acc.items[id] = {\n itemType: 'Gen3GraphQL',\n id: data.guid,\n schemaVersion: data.schema_version,\n data: data.data,\n name: data.name,\n index: data.index,\n } as CohortItem;\n } else {\n if (!(data.dataset_guid in acc.items)) {\n acc.items[data.dataset_guid as string] = {\n id: data.dataset_guid,\n name: '',\n items: { [id]: processItem(id, data) },\n };\n } else {\n (acc.items[data.dataset_guid as string].items as DataSetItems)[id] =\n processItem(id, data);\n }\n }\n return acc;\n },\n\n {\n items: {},\n version: listData?.version ?? 0,\n createdTime: listData?.created_time,\n updatedTime: listData?.updated_time,\n name: listData?.name ?? listId,\n id: listId,\n authz: {\n version: (listData.authz as JSONObject).version,\n authz: (listData as JSONObject).authz,\n },\n } as Datalist,\n );\n return items;\n};\n\nexport const BuildLists = (data: DataLibraryAPIResponse): DataLibrary => {\n return Object.entries(data?.lists).reduce((acc, [listId, listData]) => {\n const list = BuildList(listId, listData as JSONObject);\n if (list) acc[listId] = list;\n return acc;\n }, {} as DataLibrary);\n};\n\n/**\n * Calculates the total number of items within a DataList object.\n *\n * @param {DataList} dataList - The DataList object to count items from.\n * @return {number} The total number of items in the DataList.\n */\nexport const getNumberOfItemsInDatalist = (dataList: Datalist): number => {\n if (!dataList?.items) return 0;\n\n return Object.values(dataList.items).reduce((count, item) => {\n if (isCohortItem(item)) {\n return count + 1;\n } else {\n return (\n count +\n Object.values(item?.items ?? {}).reduce((fileCount, x) => {\n if (isFileItem(x)) {\n return fileCount + 1;\n }\n return fileCount;\n }, 0)\n );\n }\n }, 0);\n};\n\nexport const getTimestamp = () => {\n return new Date(Date.now()).toLocaleString();\n};\n\nexport const flattenDataList = (dataList: Datalist) => {\n // convert datalist into user-data-library for for updating.\n\n const items = Object.entries(dataList.items).reduce(\n (acc: LibraryAPIItems, [id, value]) => {\n if (isCohortItem(value)) {\n acc[id] = value;\n } else {\n return { ...acc, ...value.items };\n }\n return acc;\n },\n {},\n );\n\n return {\n name: dataList.name,\n items: items,\n } as DatalistUpdate;\n};\n","import { nanoid } from '@reduxjs/toolkit';\nimport { gen3Api } from '../gen3';\nimport { GEN3_DATA_LIBRARY_API } from '../../constants';\nimport {\n AddUpdateListParams,\n DataLibraryItems,\n Datalist,\n LoadAllListData,\n DataLibraryAPIResponse,\n} from './types';\nimport { BuildLists } from './utils';\n\nconst TAGS = 'dataLibrary';\n\nexport const dataLibraryTags = gen3Api.enhanceEndpoints({\n addTagTypes: [TAGS],\n});\n\n/**\n * RTKQuery hooks for data-library list CRUD operations.\n * @param getLists returns all the list in the user's data library\n * @param getList args: id returns the list for the given id\n * @param addLists args: Record<string, ListItemDefinition> populates the whole datalibrary\n * @param addList args: id ListItemDefinition creates a new list\n * @param updateList args: id ListItemDefinition updates a list\n * @param deleteList args: id deletes the list by id\n */\nexport const dataLibraryApi = dataLibraryTags.injectEndpoints({\n endpoints: (builder) => ({\n getDataLibraryLists: builder.query<DataLibraryItems, void>({\n query: () => `${GEN3_DATA_LIBRARY_API}`,\n transformResponse: (res: DataLibraryAPIResponse) => {\n return { lists: BuildLists(res) };\n },\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n }),\n getDataLibraryList: builder.query<Datalist, string>({\n query: (id: string) => `${GEN3_DATA_LIBRARY_API}/${id}`,\n transformResponse: (res: DataLibraryAPIResponse) =>\n BuildLists(res)?.lists,\n }),\n addAllDataLibraryLists: builder.mutation<void, LoadAllListData>({\n query: (lists) => ({\n url: `${GEN3_DATA_LIBRARY_API}`,\n method: 'POST',\n body: lists,\n }),\n invalidatesTags: [TAGS],\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n }),\n addDataLibraryList: builder.mutation<void, Partial<Datalist> | undefined>({\n query: (list) => ({\n url: `${GEN3_DATA_LIBRARY_API}/${nanoid()}`,\n method: 'POST',\n body: list ?? {},\n }),\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n invalidatesTags: [TAGS],\n }),\n updateDataLibraryList: builder.mutation<void, AddUpdateListParams>({\n query: ({ id, list }) => ({\n url: `${GEN3_DATA_LIBRARY_API}/${id}`,\n method: 'PUT',\n body: list,\n }),\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n invalidatesTags: [TAGS],\n }),\n deleteDataLibraryList: builder.mutation<void, string>({\n query: (id) => ({\n url: `${GEN3_DATA_LIBRARY_API}/${id}`,\n method: 'DELETE',\n }),\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n invalidatesTags: [TAGS],\n }),\n deleteAllDataLibrary: builder.mutation<void, void>({\n query: () => ({\n url: `${GEN3_DATA_LIBRARY_API}`,\n method: 'DELETE',\n }),\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n invalidatesTags: [TAGS],\n }),\n }),\n});\n\nexport const {\n useGetDataLibraryListQuery,\n useGetDataLibraryListsQuery,\n useAddDataLibraryListMutation,\n useAddAllDataLibraryListsMutation,\n useDeleteDataLibraryListMutation,\n useDeleteAllDataLibraryMutation,\n useUpdateDataLibraryListMutation,\n} = dataLibraryApi;\n","import { isArray } from 'lodash';\nimport { isJSONObject, JSONObject } from '../../types';\nimport { type Datalist, LibraryAPIItems, LoadAllListData } from './types';\nimport { nanoid } from '@reduxjs/toolkit';\nimport { IDBPDatabase, openDB } from 'idb';\nimport { BuildLists, getTimestamp } from './utils';\n\nconst DATABASE_NAME = 'Gen3DataLibrary';\nconst STORE_NAME = 'DataLibraryLists';\n\ninterface ReturnStatus {\n isError?: true;\n status?: string;\n lists?: Record<string, Datalist>;\n}\n\nconst getDb = async (): Promise<IDBPDatabase> => {\n return openDB(DATABASE_NAME, 1, {\n upgrade(db) {\n if (!db.objectStoreNames.contains(STORE_NAME)) {\n db.createObjectStore(STORE_NAME, { keyPath: 'id' });\n }\n },\n });\n};\n\n/**\n * Deletes all lists in the database.\n *\n * @async\n * @returns {Promise<ReturnStatus>} A promise that resolves to the status of the operation.\n */\nexport const deleteAllIndexDB = async (): Promise<ReturnStatus> => {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n tx.objectStore(STORE_NAME).clear();\n await tx.done;\n return { status: 'all lists deleted' };\n};\n\n/**\n * Deletes a list from the database.\n *\n * @async\n * @param {string} id - The unique identifier of the list to delete.\n * @returns {Promise<ReturnStatus>} The status of the deletion operation.\n * @throws {Error} If the list with the provided id does not exist.\n */\nexport const deleteListIndexDB = async (id: string): Promise<ReturnStatus> => {\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const store = tx.objectStore(STORE_NAME);\n const item = await store.get(id);\n\n if (!item) {\n throw new Error(`List ${id} does not exist`);\n }\n\n store.delete(id);\n await tx.done;\n return { status: `${id} deleted` };\n } catch (error: unknown) {\n return { isError: true };\n }\n};\n\nexport const deleteAll = async () => {\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n tx.objectStore(STORE_NAME).clear();\n await tx.done;\n return { status: 'list added' };\n } catch (error: unknown) {\n return { isError: true, status: `unable to clear library` };\n }\n};\n\nexport const addListToDataLibraryIndexDB = async (\n body?: Partial<Datalist>,\n): Promise<ReturnStatus> => {\n const timestamp = getTimestamp();\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const id = nanoid(); // Create an id for the list\n tx.objectStore(STORE_NAME).put({\n id,\n version: 0,\n items: body?.items ?? {},\n creator: '{{subject_id}}',\n authz: {\n version: 0,\n authz: [`/users/{{subject_id}}/user-library/lists/${id}`],\n },\n name: body?.name ?? 'New List',\n created_time: timestamp,\n updated_time: timestamp,\n });\n await tx.done;\n return { status: 'list added' };\n } catch (error: unknown) {\n return { isError: true, status: `unable to add list` };\n }\n};\n\nexport const updateListIndexDB = async (\n id: string,\n list: Datalist,\n // override = true,\n): Promise<ReturnStatus> => {\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const store = tx.objectStore(STORE_NAME);\n const listData = await store.get(id);\n\n if (!listData) {\n throw new Error(`List ${id} does not exist`);\n }\n\n const timestamp = getTimestamp();\n const version = listData.version ? listData.version + 1 : 0;\n const updated = {\n ...listData,\n ...list,\n version: version,\n updated_time: timestamp,\n created_time: listData.created_time,\n };\n\n store.put(updated);\n await tx.done;\n return { status: 'success' };\n } catch (error: unknown) {\n let errorMessage = 'An unknown error occurred';\n if (error instanceof Error) {\n errorMessage = error.message;\n }\n return {\n isError: true,\n status: `Unable to update list: ${id}. Error: ${errorMessage}`,\n };\n }\n};\n\nexport const addAllListIndexDB = async (\n data: LoadAllListData,\n): Promise<ReturnStatus> => {\n if (!Object.keys(data).includes('lists') || !isArray(data['lists'])) {\n return { isError: true, status: 'lists not found in request' };\n }\n const timestamp = getTimestamp();\n const allLists = data['lists'].reduce((acc: JSONObject, x: unknown) => {\n if (!isJSONObject(x)) return acc;\n\n const id = nanoid(10);\n acc[id] = {\n ...(x as JSONObject),\n version: 0,\n created_time: timestamp,\n updated_time: timestamp,\n creator: '{{subject_id}}',\n authz: {\n version: 0,\n authz: [`/users/{{subject_id}}/user-library/lists/${id}`],\n },\n };\n return acc;\n }, {} as JSONObject);\n\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n for (const [id, list] of Object.entries(allLists)) {\n tx.objectStore(STORE_NAME).put({ id, ...(list as object) });\n }\n await tx.done;\n return { status: 'success' };\n } catch (error: unknown) {\n return { isError: true, status: 'unable to add lists' };\n }\n};\n\ninterface DataLibraryFromStore\n extends Omit<Datalist, 'createdTime' | 'updatedTime' | 'items'> {\n created_time: string;\n updated_time: string;\n items: LibraryAPIItems;\n}\n\nexport const getDataLibraryListIndexDB = async (\n id?: string,\n): Promise<ReturnStatus> => {\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readonly');\n const store = tx.objectStore(STORE_NAME);\n if (id !== undefined) {\n const lists = (await store.get(id)) as Array<DataLibraryFromStore>;\n\n if (lists) {\n return {\n status: 'success',\n lists: lists.reduce(\n (acc: Record<string, Datalist>, x: DataLibraryFromStore) => {\n acc[x.id] = {\n id: x.id,\n version: x.version,\n name: x.name,\n authz: x.authz,\n createdTime: x.created_time,\n updatedTime: x.updated_time,\n items: x.items as any,\n };\n return acc;\n },\n {},\n ),\n };\n } else {\n return { isError: true, status: `${id} does not exist` };\n }\n } else {\n const lists = (await store.getAll()) as Array<DataLibraryFromStore>;\n const listMap = lists.reduce(\n (acc: Record<string, JSONObject>, x: DataLibraryFromStore) => {\n acc[x.id] = {\n ...x,\n items: x.items as any, // TODO Process items\n } as unknown as JSONObject;\n return acc;\n },\n {},\n );\n const datalists = BuildLists({ lists: listMap });\n return {\n status: 'success',\n lists: datalists,\n };\n }\n } catch (error: unknown) {\n return { isError: true };\n }\n};\n","import { useEffect, useState } from 'react';\nimport {\n useGetDataLibraryListsQuery,\n useAddDataLibraryListMutation,\n useDeleteDataLibraryListMutation,\n useAddAllDataLibraryListsMutation,\n useUpdateDataLibraryListMutation,\n useDeleteAllDataLibraryMutation,\n} from './dataLibraryApi';\n\nimport {\n getDataLibraryListIndexDB,\n addListToDataLibraryIndexDB,\n deleteListIndexDB,\n addAllListIndexDB,\n updateListIndexDB,\n deleteAll,\n} from './dataLibraryIndexDB';\nimport { DataLibrary, Datalist, LoadAllListData } from './types';\nimport { flattenDataList } from './utils';\n\nexport const useDataLibrary = (useApi: boolean) => {\n const [localLibrary, setLocalLibrary] = useState<DataLibrary>({});\n\n const {\n data: apiLibrary,\n refetch: refetchLibraryFromApi,\n error: apiError,\n isError: isAPIListError,\n isLoading: isAPIListLoading,\n } = useGetDataLibraryListsQuery(undefined, { skip: !useApi });\n const [addItemToLibraryApi] = useAddDataLibraryListMutation();\n const [addAllItemsToLibraryApi] = useAddAllDataLibraryListsMutation();\n const [deleteItemInLibraryApi] = useDeleteDataLibraryListMutation();\n const [updateItemInLibraryApi, { isLoading: isUpdatingLoading }] =\n useUpdateDataLibraryListMutation();\n const [deleteAllApi] = useDeleteAllDataLibraryMutation();\n\n let hasError = false;\n let errorData = null;\n let isLoading = false;\n\n // TODO: Add error message from indexedDB\n if (useApi && isAPIListError) {\n hasError = true;\n errorData = apiError;\n }\n\n if (useApi && (isUpdatingLoading || isAPIListLoading)) {\n isLoading = true;\n }\n\n const generateUniqueName = (baseName: string = 'List') => {\n let uniqueName = baseName;\n let counter = 1;\n\n const existingNames = dataLibrary\n ? Object.values(dataLibrary).map((x) => x.name)\n : [];\n\n while (existingNames.includes(uniqueName)) {\n uniqueName = `${baseName} ${counter}`;\n counter++;\n }\n\n return uniqueName;\n };\n\n const refetchLocalLists = async () => {\n const { isError, lists } = await getDataLibraryListIndexDB();\n setLocalLibrary(lists ?? {});\n hasError = isError === true;\n };\n\n useEffect(() => {\n const fetchLibrary = async () => {\n if (!useApi) {\n const { isError, lists } = await getDataLibraryListIndexDB();\n if (!isError) {\n setLocalLibrary(lists ?? {});\n }\n }\n };\n\n fetchLibrary();\n }, [useApi]);\n\n const addListToDataLibrary = async (item?: Partial<Datalist>) => {\n const adjustedData = {\n ...(item ?? {}),\n name: generateUniqueName(item?.name ?? 'List'),\n };\n\n if (useApi) {\n await addItemToLibraryApi(adjustedData);\n refetchLibraryFromApi();\n } else {\n const { isError } = await addListToDataLibraryIndexDB(adjustedData);\n await refetchLocalLists();\n hasError = isError === true;\n }\n };\n\n const deleteListFromDataLibrary = async (id: string) => {\n if (useApi) {\n await deleteItemInLibraryApi(id);\n refetchLibraryFromApi();\n } else {\n const { isError } = await deleteListIndexDB(id);\n refetchLocalLists();\n hasError = isError === true;\n }\n };\n\n const setAllListsInDataLibrary = async (data: LoadAllListData) => {\n if (useApi) {\n await addAllItemsToLibraryApi(data);\n refetchLibraryFromApi();\n } else {\n const { isError } = await addAllListIndexDB(data);\n refetchLocalLists();\n hasError = isError === true;\n }\n };\n\n const updateListInDataLibrary = async (id: string, data: Datalist) => {\n const flattend = flattenDataList(data);\n if (useApi) {\n await updateItemInLibraryApi({ id, list: flattend });\n refetchLibraryFromApi();\n } else {\n const { isError } = await updateListIndexDB(id, data);\n refetchLocalLists();\n hasError = isError === true;\n }\n };\n\n const clearLibrary = async () => {\n if (useApi) {\n await deleteAllApi();\n refetchLibraryFromApi();\n } else {\n const { isError } = await deleteAll();\n refetchLocalLists();\n hasError = isError === true;\n }\n };\n\n const dataLibrary = useApi\n ? apiLibrary\n ? apiLibrary.lists\n : {}\n : localLibrary;\n\n return {\n dataLibrary,\n isError: hasError,\n isLoading,\n error: errorData,\n addListToDataLibrary,\n deleteListFromDataLibrary,\n clearLibrary,\n setAllListsInDataLibrary,\n updateListInDataLibrary,\n };\n};\n\nexport default useDataLibrary;\n","import {\n createSlice,\n createSelector,\n type PayloadAction,\n} from '@reduxjs/toolkit';\n\nconst initialState = {};\n\ntype DataLibrarySelectionState = Record<string, Array<string>>;\n\ninterface UpdateSelectionParams {\n listId: string;\n itemIds: string[];\n}\n\nconst dataLibrarySlice = createSlice({\n name: 'dataLibrary',\n initialState,\n reducers: {\n setDataLibraryListSelection: (\n state: DataLibrarySelectionState,\n action: PayloadAction<UpdateSelectionParams>,\n ) => {\n const { listId, itemIds } = action.payload;\n state[listId] = itemIds;\n },\n clearDataLibrarySelection: () => {\n return initialState;\n },\n },\n});\n\nexport const { setDataLibraryListSelection, clearDataLibrarySelection } =\n dataLibrarySlice.actions;\n\nexport const dataLibrarySelectionReducer = dataLibrarySlice.reducer;\n\n// Selector\nexport const selectDataLibrary = (state: DataLibrarySelectionState) =>\n state.dataLibrarySelection;\n\n// Memoized selector for getting data library items for a specific root object\nexport const selectRootObjectDataLibrary = createSelector(\n [selectDataLibrary, (_, rootObjectId) => rootObjectId],\n (dataLibrary, rootObjectId) => dataLibrary[rootObjectId] || [],\n);\n","export interface PayModel {\n bmh_workspace_id: string;\n workspace_type: string;\n user_id: string;\n account_id: string;\n request_status: string;\n local: boolean;\n region: string;\n ecs: boolean;\n subnet: number;\n 'hard-limit': number;\n 'soft-limit': number;\n 'total-usage': number;\n current_pay_model: boolean;\n}\n\nexport interface WorkspaceId {\n id: string;\n}\n\nexport interface WorkspaceInfo extends WorkspaceId {\n name: string;\n idleTimeLimit: number;\n memoryLimit: string;\n cpuLimit: string;\n}\n\nexport interface WorkspaceInfoResponse {\n id: string;\n name: string;\n 'idle-time-limit': number;\n 'memory-limit': string;\n 'cpu-limit': string;\n}\n\nexport type WorkspaceOptionsResponse = Array<WorkspaceInfoResponse>;\nexport type WorkspaceOptions = Array<WorkspaceInfo>;\n\nexport interface WorkspacePayModelResponse {\n currentPayModel: PayModel;\n allPayModels: PayModel[];\n noPayModel: boolean;\n}\n\nexport enum WorkspaceStatus {\n Launching = 'Launching',\n Running = 'Running',\n Terminating = 'Terminating',\n Stopped = 'Stopped',\n NotFound = 'Not Found',\n Errored = 'Errored',\n StatusError = 'Status Error',\n}\n\nexport enum PodConditionType {\n PodScheduled = 'PodScheduled',\n Initialized = 'Initialized',\n ContainersReady = 'ContainersReady',\n PodReadyToStartContainers = 'PodReadyToStartContainers',\n ProxyConnected = 'ProxyConnected',\n Ready = 'Ready',\n}\n\nexport enum PodStatus {\n True = 'True',\n False = 'False',\n Unknown = 'Unknown',\n}\n\nexport interface WorkspaceContainerState {\n name: string;\n ready: boolean;\n state:\n | { running: { startedAt: string } }\n | { waiting: { reason: string } }\n | { terminated: { reason: string } };\n}\n\nexport interface WorkspacePodCondition {\n type: PodConditionType;\n status: PodStatus;\n}\n\nexport interface WorkspaceStatusResponse {\n status: WorkspaceStatus;\n conditions?: Array<WorkspacePodCondition>;\n containerStates?: Array<WorkspaceContainerState>;\n idleTimeLimit?: number;\n lastActivityTime: number;\n workspaceType?: string;\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { CoreState } from '../../reducers';\nimport { type WorkspaceId, WorkspaceStatus } from './types';\n\nexport const NO_WORKSPACE_ID = 'none';\n\nexport type RequestedWorkspaceStatus = 'Launching' | 'Terminating' | 'NotSet';\nexport interface WorkspaceState {\n id: string;\n status: WorkspaceStatus;\n requestedStatus: RequestedWorkspaceStatus;\n}\n\nconst initialState: WorkspaceState = {\n id: NO_WORKSPACE_ID,\n status: WorkspaceStatus.NotFound,\n requestedStatus: 'NotSet',\n};\n\nconst slice = createSlice({\n name: 'ActiveWorkspace',\n initialState,\n reducers: {\n setActiveWorkspaceId: (state, action: PayloadAction<WorkspaceId>) => {\n state = { ...state, id: action.payload.id };\n return state;\n },\n clearActiveWorkspaceId: (state) => {\n return { ...state, id: NO_WORKSPACE_ID };\n },\n setActiveWorkspaceStatus: (\n state,\n action: PayloadAction<WorkspaceStatus>,\n ) => {\n return { ...state, status: action.payload };\n },\n setRequestedWorkspaceStatus: (\n state,\n action: PayloadAction<RequestedWorkspaceStatus>,\n ) => {\n return { ...state, requestedStatus: action.payload };\n },\n setActiveWorkspace: (_state, action: PayloadAction<WorkspaceState>) => {\n return { ...action.payload };\n },\n },\n});\n\nexport const activeWorkspaceReducer = slice.reducer;\nexport const {\n setActiveWorkspaceId,\n clearActiveWorkspaceId,\n setActiveWorkspaceStatus,\n setRequestedWorkspaceStatus,\n setActiveWorkspace,\n} = slice.actions;\n\nexport const selectActiveWorkspaceId = (state: CoreState): string =>\n state.activeWorkspace.id;\n\nexport const selectActiveWorkspaceStatus = (\n state: CoreState,\n): WorkspaceStatus => state.activeWorkspace.status;\n\nexport const selectRequestedWorkspaceStatus = (\n state: CoreState,\n): RequestedWorkspaceStatus => state.activeWorkspace.requestedStatus;\n","import type { Middleware, Reducer } from '@reduxjs/toolkit';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport { JSONObject } from '../../types';\nimport { GEN3_GUPPY_API } from '../../constants';\nimport { CoreState } from '../../reducers';\nimport { getCookie } from 'cookies-next';\nimport { selectCSRFToken } from '../user';\n\nexport interface guppyFetchError {\n readonly url: string;\n readonly status: number;\n readonly statusText: string;\n readonly text: string;\n readonly variables?: Record<string, any>;\n}\n\nexport interface guppyApiSliceRequest {\n readonly query: string;\n readonly variables?: Record<string, unknown>;\n}\n\nexport interface guppyApiResponse<H = JSONObject> {\n readonly data: H;\n readonly errors: Record<string, string>;\n}\n\nexport interface SortOption {\n field: string;\n order: string;\n}\n\nexport interface TablePageOffsetProps {\n readonly pageSize?: number;\n readonly offset?: number;\n readonly sorts?: Array<SortOption>;\n readonly searchTerm?: string;\n}\n\n/**\n * Creates a base class core API for guppy API calls.\n * @returns: guppy core API with guppyAPIFetch base query\n */\nexport const guppyApi = createApi({\n reducerPath: 'guppy',\n\n // TODO: refactor to use fetchBaseQuery\n baseQuery: async (query: guppyApiSliceRequest, api) => {\n const csrfToken = selectCSRFToken(api.getState() as CoreState);\n\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n // NOTE: This cookie can only be accessed from the client side\n // in development mode. Otherwise, the cookie is set as httpOnly\n accessToken = getCookie('credentials_token');\n }\n\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'Access-Control-Allow-Origin': '*',\n ...(csrfToken && { 'X-CSRF-Token': csrfToken }),\n ...(accessToken && { Authorization: `Bearer ${accessToken}` }),\n };\n try {\n const response = await fetch(`${GEN3_GUPPY_API}/graphql`, {\n headers: headers,\n method: 'POST',\n body: JSON.stringify(query),\n });\n return { data: await response.json() };\n } catch (e: unknown) {\n if (e instanceof Error) return { error: e.message };\n return { error: e };\n }\n },\n endpoints: () => ({}),\n});\n\nexport const guppyAPISliceMiddleware = guppyApi.middleware as Middleware;\nexport const guppyApiSliceReducerPath: string = guppyApi.reducerPath;\nexport const guppyApiReducer: Reducer = guppyApi.reducer as Reducer;\n","import { isEqual } from 'lodash';\nimport {\n EnumFilterValue,\n Equals,\n ExcludeIfAny,\n Excludes,\n FilterSet,\n FilterValue,\n GreaterThan,\n GreaterThanOrEquals,\n Includes,\n Intersection,\n LessThan,\n LessThanOrEquals,\n NestedFilter,\n NotEquals,\n Operation,\n OperationHandler,\n OperationWithField,\n Union,\n} from './types';\n\nexport const isOperationWithField = (\n operation: OperationWithField | Operation,\n): operation is OperationWithField => {\n return (operation as OperationWithField)?.field !== undefined;\n};\nexport const extractFilterValue = (op: Operation): FilterValue => {\n const valueExtractorHandler = new ValueExtractorHandler();\n return handleOperation<FilterValue>(valueExtractorHandler, op);\n};\nexport const extractEnumFilterValue = (op: Operation): EnumFilterValue => {\n const enumValueExtractorHandler = new EnumValueExtractorHandler();\n const results = handleOperation<EnumFilterValue | undefined>(\n enumValueExtractorHandler,\n op,\n );\n return results ?? [];\n};\n\nconst assertNever = (x: never): never => {\n throw Error(`Exhaustive comparison did not handle: ${x}`);\n};\n\nexport const handleOperation = <T>(\n handler: OperationHandler<T>,\n op: Operation,\n): T => {\n switch (op.operator) {\n case '=':\n return handler.handleEquals(op);\n case '!=':\n return handler.handleNotEquals(op);\n case '<':\n return handler.handleLessThan(op);\n case '<=':\n return handler.handleLessThanOrEquals(op);\n case '>':\n return handler.handleGreaterThan(op);\n case '>=':\n return handler.handleGreaterThanOrEquals(op);\n case 'and':\n return handler.handleIntersection(op);\n case 'or':\n return handler.handleUnion(op);\n case 'nested':\n return handler.handleNestedFilter(op);\n case 'in':\n return handler.handleIncludes(op);\n case 'excludeifany':\n return handler.handleExcludeIfAny(op);\n case 'excludes':\n return handler.handleExcludes(op);\n default:\n return assertNever(op);\n }\n};\n\n/**\n * Return true if a FilterSet's root value is an empty object\n * @param fs - FilterSet to test\n */\nexport const isFilterEmpty = (fs: FilterSet): boolean => isEqual({}, fs);\n\nexport interface FilterGroup {\n readonly filterIndex: number;\n readonly filter: FilterSet;\n}\n\nexport interface GQLEqual {\n '=': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLNotEqual {\n '!=': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLLessThan {\n '<': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLLessThanOrEquals {\n '<=': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLGreaterThan {\n '>': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLGreaterThanOrEquals {\n '>=': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLIncludes {\n in: {\n [key: string]: ReadonlyArray<string | number>;\n };\n}\n\nexport interface GQLExcludes {\n exclude: {\n [key: string]: ReadonlyArray<string | number>;\n };\n}\n\nexport interface GQLExcludeIfAny {\n excludeifany: {\n [key: string]: ReadonlyArray<string | number>;\n };\n}\n\nexport interface GQLIntersection {\n and: ReadonlyArray<GQLFilter>;\n}\n\nexport interface GQLUnion {\n or: ReadonlyArray<GQLFilter>;\n}\n\ntype NestedContents = GQLFilter & {\n path: string;\n};\n\nexport interface GQLNestedFilter {\n nested: NestedContents;\n}\n\nexport type GQLFilter =\n | GQLEqual\n | GQLNotEqual\n | GQLLessThan\n | GQLLessThanOrEquals\n | GQLGreaterThan\n | GQLGreaterThanOrEquals\n | GQLIncludes\n | GQLExcludes\n | GQLExcludeIfAny\n | GQLIntersection\n | GQLUnion\n | GQLNestedFilter;\n\nexport class ToGqlHandler implements OperationHandler<GQLFilter> {\n handleEquals = (op: Equals): GQLEqual => ({\n '=': {\n [op.field]: op.operand,\n },\n });\n handleNotEquals = (op: NotEquals): GQLNotEqual => ({\n '!=': {\n [op.field]: op.operand,\n },\n });\n handleLessThan = (op: LessThan): GQLLessThan => ({\n '<': {\n [op.field]: op.operand,\n },\n });\n handleLessThanOrEquals = (op: LessThanOrEquals): GQLLessThanOrEquals => ({\n '<=': {\n [op.field]: op.operand,\n },\n });\n handleGreaterThan = (op: GreaterThan): GQLGreaterThan => ({\n '>': {\n [op.field]: op.operand,\n },\n });\n handleGreaterThanOrEquals = (\n op: GreaterThanOrEquals,\n ): GQLGreaterThanOrEquals => ({\n '>=': {\n [op.field]: op.operand,\n },\n });\n\n handleIncludes = (op: Includes): GQLIncludes => ({\n in: {\n [op.field]: op.operands,\n },\n });\n\n handleExcludes = (op: Excludes): GQLExcludes => ({\n exclude: {\n [op.field]: op.operands,\n },\n });\n\n handleExcludeIfAny = (op: ExcludeIfAny): GQLExcludeIfAny => ({\n excludeifany: {\n [op.field]: op.operands,\n },\n });\n\n handleIntersection = (op: Intersection): GQLIntersection => ({\n and: op.operands.map((x) =>\n convertFilterToGqlFilter(x),\n ) as ReadonlyArray<GQLFilter>,\n });\n\n handleUnion = (op: Union): GQLUnion => ({\n or: op.operands.map((x) => convertFilterToGqlFilter(x)),\n });\n\n handleNestedFilter = (op: NestedFilter): GQLNestedFilter => {\n const child: GQLFilter = convertFilterToGqlFilter(op.operand);\n return {\n nested: {\n path: op.path,\n ...child,\n },\n } as GQLNestedFilter;\n };\n}\n\nconst convertFilterToGqlFilter = (filter: Operation): GQLFilter => {\n const handler: OperationHandler<GQLFilter> = new ToGqlHandler();\n return handleOperation(handler, filter);\n};\n\nexport const convertFilterSetToGqlFilter = (\n fs: FilterSet,\n toplevelOp: 'and' | 'or' = 'and',\n): GQLFilter => {\n const fsKeys = Object.keys(fs.root);\n // if no keys return undefined\n if (fsKeys.length === 0) return { and: [] };\n\n return toplevelOp === 'and'\n ? { and: fsKeys.map((key) => convertFilterToGqlFilter(fs.root[key])) }\n : { or: fsKeys.map((key) => convertFilterToGqlFilter(fs.root[key])) };\n};\n\n/**\n * Extract the operand values, if operands themselves have values, otherwise undefined.\n */\nexport class ValueExtractorHandler implements OperationHandler<FilterValue> {\n handleEquals: (op: Equals) => string | number = (op: Equals) => op.operand;\n handleNotEquals: (op: NotEquals) => string | number = (op: NotEquals) =>\n op.operand;\n handleIncludes: (op: Includes) => ReadonlyArray<string | number> = (\n op: Includes,\n ) => op.operands;\n handleExcludes: (op: Excludes) => ReadonlyArray<string | number> = (\n op: Excludes,\n ) => op.operands;\n handleExcludeIfAny: (op: ExcludeIfAny) => ReadonlyArray<string | number> = (\n op: ExcludeIfAny,\n ) => op.operands;\n handleGreaterThanOrEquals: (op: GreaterThanOrEquals) => string | number = (\n op: GreaterThanOrEquals,\n ) => op.operand;\n handleGreaterThan: (op: GreaterThan) => string | number = (op: GreaterThan) =>\n op.operand;\n handleLessThan: (op: LessThan) => string | number = (op: LessThan) =>\n op.operand;\n handleLessThanOrEquals: (op: LessThanOrEquals) => string | number = (\n op: LessThanOrEquals,\n ) => op.operand;\n handleIntersection: (op: Intersection) => undefined = (_arg: Intersection) =>\n undefined;\n handleUnion: (op: Union) => undefined = (_: Union) => undefined;\n handleNestedFilter: (op: NestedFilter) => undefined = (_: NestedFilter) =>\n undefined;\n}\n\n/**\n * Extract the operand values, if operands themselves have values, otherwise undefined.\n */\nexport class EnumValueExtractorHandler\n implements OperationHandler<EnumFilterValue | undefined>\n{\n handleEquals: (_: Equals) => undefined = (_: Equals) => undefined;\n handleNotEquals: (_: NotEquals) => undefined = (_: NotEquals) => undefined;\n handleIncludes: (op: Includes) => ReadonlyArray<string | number> = (\n op: Includes,\n ) => op.operands;\n handleExcludes: (op: Excludes) => ReadonlyArray<string | number> = (\n op: Excludes,\n ) => op.operands;\n handleExcludeIfAny: (op: ExcludeIfAny) => ReadonlyArray<string | number> = (\n op: ExcludeIfAny,\n ) => op.operands;\n handleGreaterThanOrEquals: (_: GreaterThanOrEquals) => undefined = (\n _: GreaterThanOrEquals,\n ) => undefined;\n handleGreaterThan: (_: GreaterThan) => undefined = (_: GreaterThan) =>\n undefined;\n handleLessThan: (op: LessThan) => undefined = (_: LessThan) => undefined;\n handleLessThanOrEquals: (op: LessThanOrEquals) => undefined = (\n _: LessThanOrEquals,\n ) => undefined;\n handleIntersection: (op: Intersection) => undefined = (_: Intersection) =>\n undefined;\n handleUnion: (op: Union) => undefined = (_: Union) => undefined;\n handleNestedFilter: (op: NestedFilter) => EnumFilterValue | undefined = (\n op: NestedFilter,\n ) => {\n return extractEnumFilterValue(op.operand);\n };\n}\n","export interface Intersection {\n operator: 'and';\n operands: ReadonlyArray<Operation>;\n}\n\nexport interface Union {\n operator: 'or';\n operands: ReadonlyArray<Operation>;\n}\n\nexport interface Equals {\n operator: '=';\n field: string;\n operand: number | string;\n}\n\nexport interface NotEquals {\n operator: '!=';\n field: string;\n operand: number | string;\n}\n\nexport interface Includes {\n operator: 'in';\n field: string;\n operands: ReadonlyArray<string | number>;\n}\n\nexport interface Comparison {\n field: string;\n operand: string | number;\n}\n\nexport interface LessThan extends Comparison {\n operator: '<';\n}\n\nexport interface LessThanOrEquals extends Comparison {\n operator: '<=';\n}\n\nexport interface GreaterThan extends Comparison {\n operator: '>';\n}\n\nexport interface GreaterThanOrEquals extends Comparison {\n operator: '>=';\n}\n\nexport interface Exists {\n readonly operator: 'exists';\n readonly field: string;\n}\n\nexport interface Missing {\n readonly operator: 'missing';\n readonly field: string;\n}\n\nexport interface ExcludeIfAny {\n readonly operator: 'excludeifany';\n readonly field: string;\n readonly operands: ReadonlyArray<string | number>;\n}\n\nexport interface Excludes {\n readonly operator: 'excludes';\n readonly field: string;\n readonly operands: ReadonlyArray<string | number>;\n}\n\nexport interface NestedFilter {\n operator: 'nested';\n path: string;\n operand: Operation;\n}\n\nexport type Operation =\n | Intersection\n | Union\n | Includes\n | Equals\n | NotEquals\n | LessThan\n | LessThanOrEquals\n | GreaterThan\n | GreaterThanOrEquals\n | NestedFilter\n | ExcludeIfAny\n | Excludes;\n\nexport type OperationWithField =\n | Includes\n | Equals\n | NotEquals\n | LessThan\n | LessThanOrEquals\n | GreaterThan\n | GreaterThanOrEquals\n | ExcludeIfAny\n | Excludes;\n\nexport interface FilterSet {\n readonly root: Record<string, Operation>;\n readonly mode: 'and' | 'or';\n}\n\nexport const isFilterSet = (input: any): input is FilterSet => {\n if (typeof input !== 'object' || input === null) {\n return false;\n }\n const { root, mode } = input;\n\n if (typeof root !== 'object' || root === null) {\n return false;\n }\n\n if (!['and', 'or'].includes(mode)) {\n return false;\n }\n\n return true;\n};\n\nexport interface OperationHandler<T> {\n handleEquals: (op: Equals) => T;\n handleNotEquals: (op: NotEquals) => T;\n handleLessThan: (op: LessThan) => T;\n handleLessThanOrEquals: (op: LessThanOrEquals) => T;\n handleGreaterThan: (op: GreaterThan) => T;\n handleGreaterThanOrEquals: (op: GreaterThanOrEquals) => T;\n handleIncludes: (op: Includes) => T;\n handleExcludes: (op: Excludes) => T;\n handleExcludeIfAny: (op: ExcludeIfAny) => T;\n handleIntersection: (op: Intersection) => T;\n handleUnion: (op: Union) => T;\n handleNestedFilter: (op: NestedFilter) => T;\n}\n\n/**\n * Operand types for filter operations\n */\nexport type EnumFilterValue = ReadonlyArray<string | number>;\nexport type RangeFilterValue = string | number;\nexport type SetFilterValue = ReadonlyArray<Operation>;\nexport type FilterValue =\n | EnumFilterValue\n | RangeFilterValue\n | SetFilterValue\n | undefined;\n\nexport type FacetBucket = {\n key: string;\n doc_count: number;\n};\n\nexport type HistogramBucket = {\n key: string | [number, number];\n count: number;\n};\n\nexport type FacetType =\n | 'enum'\n | 'exact'\n | 'range'\n | 'age'\n | 'year'\n | 'years'\n | 'days'\n | 'percent'\n | 'datetime'\n | 'toggle' // Note these support alternative UIs\n | 'multiselect';\n\nexport interface AllowableRange {\n readonly minimum?: number;\n readonly maximum?: number;\n}\n\nexport interface FacetDefinition {\n readonly description?: string; //description from _mapping\n readonly field: string; // full name of field\n readonly dataField: string; //\n readonly index: string; // what dataType is this facet for\n readonly type: FacetType; // classified type based on type + name: e.g. age, year, enumeration, etc\n readonly range?: AllowableRange; // range of value types\n readonly hasData?: boolean; // does this facet have data\n readonly label?: string; // label for facet\n}\n\nexport type IndexedFilterSet = Record<string, FilterSet>;\n","const FieldNameOverrides: Record<string, string> = {};\n\nconst COMMON_PREPOSITIONS = [\n 'a',\n 'an',\n 'and',\n 'at',\n 'but',\n 'by',\n 'for',\n 'in',\n 'is',\n 'nor',\n 'of',\n 'on',\n 'or',\n 'out',\n 'so',\n 'the',\n 'to',\n 'up',\n 'yet',\n];\n\nconst capitalize = (s: string): string =>\n s.length > 0 ? s[0].toUpperCase() + s.slice(1) : '';\n\nexport const trimFirstFieldNameToTitle = (\n fieldName: string,\n trim = false,\n): string => {\n if (trim) {\n const source = fieldName.slice(fieldName.indexOf('.') + 1);\n return fieldNameToTitle(source ? source : fieldName, 0);\n }\n return fieldNameToTitle(fieldName);\n};\n\n/**\n * Converts a filter name to a title,\n * For example files.input.experimental_strategy will get converted to Experimental Strategy\n * if sections == 2 then the output would be Input Experimental Strategy\n * @param fieldName input filter expected to be: string.firstpart_secondpart\n * @param sections number of \"sections\" string.string.string to got back from the end of the field\n */\n\nexport const fieldNameToTitle = (fieldName: string, sections = 1): string => {\n if (fieldName in FieldNameOverrides) {\n return FieldNameOverrides[fieldName];\n }\n if (fieldName === undefined) return 'No Title';\n\n return fieldName\n .split('.')\n .slice(-sections)\n .map((s) => s.split('_'))\n .flat()\n .map((word) =>\n COMMON_PREPOSITIONS.includes(word) ? word : capitalize(word),\n )\n .join(' ');\n};\n\n/**\n * Extracts the index name from the field name\n * @param fieldName\n */\nexport const extractIndexFromFullFieldName = (fieldName: string): string =>\n fieldName.split('.')[0];\n\n/**\n * prepend the index name to the field name\n */\nexport const prependIndexToFieldName = (\n fieldName: string,\n index: string,\n): string => `${index}.${fieldName}`;\n\n/**\n * extract the field name from the index.field name\n */\nexport const extractFieldNameFromFullFieldName = (fieldName: string): string =>\n fieldName.split('.').slice(1).join('.');\n\n/**\n * extract the field name and the index from the index.field name returning as a tuple\n */\nexport const extractIndexAndFieldNameFromFullFieldName = (\n fieldName: string,\n): [string, string] => {\n const [index, ...rest] = fieldName.split('.');\n return [index, rest.join('.')];\n};\n","import useSWR, { Fetcher, SWRResponse } from 'swr';\nimport { AggregationsData, JSONObject } from '../../types';\nimport { Accessibility, GEN3_GUPPY_API } from '../../constants';\nimport { JSONPath } from 'jsonpath-plus';\nimport {\n convertFilterSetToGqlFilter,\n FilterSet,\n isFilterEmpty,\n} from '../filters';\nimport { guppyApi, guppyApiSliceRequest } from './guppyApi';\n\nconst statusEndpoint = '/_status';\n\nexport const processHistogramResponse = (\n data: Record<string, any>,\n): AggregationsData => {\n const valueData = JSONPath({\n json: data,\n path: '$..histogram',\n resultType: 'value',\n });\n\n const pointerData = JSONPath({\n json: data,\n path: '$..histogram',\n resultType: 'pointer',\n });\n\n const results = pointerData.reduce(\n (acc: AggregationsData, element: Record<string, any>, idx: number) => {\n const key = element\n .slice(1)\n .replace(/\\/histogram/g, '')\n .replace(/\\//g, '.');\n return {\n ...acc,\n [key]: valueData[idx],\n };\n },\n {} as AggregationsData,\n );\n return results as AggregationsData;\n};\n\nexport interface GraphQLQuery {\n query: string;\n variables?: Record<string, unknown>;\n}\n\nexport const fetchJson: Fetcher<JSONObject, string> = async (url: string) => {\n const res = await fetch(url, {\n method: 'GET',\n headers: { 'Content-type': 'application/json' },\n });\n if (!res.ok) throw new Error('An error occurred while fetching the data.');\n return (await res.json()) as JSONObject;\n};\n\nexport const useGetStatus = (): SWRResponse<JSONObject, Error> => {\n const fetcher = () => fetchJson(`${GEN3_GUPPY_API}${statusEndpoint}`);\n return useSWR('explorerStatus', fetcher);\n};\n\nexport type AggregationResponse = Record<string, JSONObject>;\n\nexport interface RawDataAndTotalCountsParams {\n type: string;\n fields: string[];\n filters: FilterSet;\n sort?: ReadonlyArray<Record<string, 'asc' | 'desc'>>;\n offset?: number;\n size?: number;\n accessibility?: Accessibility;\n format?: string;\n}\n\n/*\n returns all the fields for a given type\n @param type: the type to get fields for\n @returns: a list of fields for the given type\n */\n\ninterface AccessibleDataSliceParams {\n type: string;\n fields: ReadonlyArray<string>;\n accessType: Accessibility;\n}\n\ninterface QueryAggsParams {\n type: string;\n fields: ReadonlyArray<string>;\n filters: FilterSet;\n accessibility?: Accessibility;\n}\n\ninterface QueryForSubAggsParams {\n type: string;\n mainField: string;\n numericAggAsText: boolean;\n termsFields?: ReadonlyArray<string>;\n missingFields?: ReadonlyArray<string>;\n gqlFilter?: FilterSet;\n accessibility?: Accessibility;\n}\n\ninterface QueryCountsParams {\n type: string;\n filters: FilterSet;\n accessibility?: Accessibility;\n}\n\ninterface QueryForFileCountSummaryParams {\n type: string;\n field: string;\n filters: FilterSet;\n accessibility?: Accessibility;\n}\n\n/**\n * The main endpoint used in templating Exploration page queries.\n * Includes table, filter and aggregation query types and leverages guppyApi defined in ./gupplApi.ts\n * Query templates support filters where applicable\n *\n * @param endpoints - Defines endpoints used in Exploration page:\n * @param getAllFieldsForType - A mapping query that returns all property key names vertex types specified.\n * @see https://github.com/uc-cdis/guppy/blob/master/doc/queries.md#mapping-query\n * @param getAccessibleData - An aggregation histogram counts query that filters based on access type\n * @see https://github.com/uc-cdis/guppy/blob/master/doc/queries.md#accessibility-argument-for-regular-tier-access-level\n * @param getRawDataAndTotalCounts - Queries both _totalCount for selected vertex types and\n * tabular results containing the raw data in the rows of selected vertex types\n * @see https://github.com/uc-cdis/guppy/blob/master/doc/queries.md#1-total-count-aggregation\n * @param getAggs - An aggregated histogram counts query which outputs vertex property frequencies\n * @param getSubAggs - TODO: not sure what this one does. Looks like nested aggregation\n * @param getCounts - Returns total counts of a vertex type\n * @returns: A guppy API endpoint for templating queriable data displayed on the exploration page\n */\nconst explorerApi = guppyApi.injectEndpoints({\n endpoints: (builder) => ({\n getAllFieldsForType: builder.query({\n query: (type: { type: string }) => ({\n query: `{ _mapping ${type} } }`,\n }),\n transformResponse: (response: Record<string, any>, _meta, params) => {\n return response[params.type];\n },\n }),\n getAccessibleData: builder.query({\n query: ({ type, fields, accessType }: AccessibleDataSliceParams) => {\n const fieldParts = fields.map(\n (field) => `${field} { histogram { key count } }`,\n );\n return {\n query: `_aggregation {\n ${type} (accessibility: ${accessType}) {\n ${fieldParts.join(',')}\n }\n }`,\n };\n },\n }),\n getRawDataAndTotalCounts: builder.query({\n query: ({\n type,\n fields,\n filters,\n sort,\n offset = 0,\n size = 20,\n accessibility = Accessibility.ALL,\n format = undefined,\n }: RawDataAndTotalCountsParams) => {\n const gqlFilter = convertFilterSetToGqlFilter(filters);\n const params = [\n ...(sort ? ['$sort: JSON'] : []),\n ...(gqlFilter ? ['$filter: JSON'] : []),\n ...(format ? ['$format: Format'] : []),\n ].join(',');\n const queryLine = `query getRawDataAndTotalCounts (${params}) {`;\n\n const dataParams = [\n ...(format ? ['format: $format'] : []),\n ...(sort ? ['sort: $sort'] : []),\n ...(gqlFilter ? ['filter: $filter'] : []),\n ].join(',');\n const dataTypeLine = `${type} (accessibility: ${accessibility}, offset: ${offset}, first: ${size},\n ${dataParams}) {`;\n\n const typeAggsLine = `${type} (${\n gqlFilter && 'filter: $filter,'\n } accessibility: ${accessibility}) {`;\n\n const processedFields = fields.map((field) =>\n rawDataQueryStrForEachField(field),\n );\n\n const query = `${queryLine}\n ${dataTypeLine}\n ${processedFields.join(' ')}\n }\n _aggregation {\n ${typeAggsLine}\n _totalCount\n }\n }\n }`;\n const variables = {\n ...(sort && { sort }),\n ...(gqlFilter && { filter: gqlFilter }),\n ...(format && { format }),\n };\n return { query, variables };\n },\n }),\n getAggs: builder.query<AggregationsData, QueryAggsParams>({\n query: ({\n type,\n fields,\n filters,\n accessibility = Accessibility.ALL,\n }: QueryAggsParams) => {\n const queryStart = isFilterEmpty(filters)\n ? `\n query getAggs {\n _aggregation {\n ${type} (accessibility: ${accessibility}) {`\n : `query getAggs ($filter: JSON) {\n _aggregation {\n ${type} (filter: $filter, filterSelf: false, accessibility: ${accessibility}) {`;\n const query = `${queryStart}\n ${fields.map((field: string) =>\n histogramQueryStrForEachField(field),\n )}\n }\n }\n }`;\n const queryBody: GraphQLQuery = {\n query: query,\n variables: { filter: convertFilterSetToGqlFilter(filters) },\n };\n return queryBody;\n },\n transformResponse: (response: Record<string, any>, _meta, args) => {\n return processHistogramResponse(response.data._aggregation[args.type]);\n },\n }),\n getSubAggs: builder.query<AggregationsData, QueryForSubAggsParams>({\n query: ({\n type,\n mainField,\n termsFields = undefined,\n missingFields = undefined,\n numericAggAsText = false,\n gqlFilter = undefined,\n accessibility = Accessibility.ALL,\n }: QueryForSubAggsParams) => {\n const nestedAggFields = {\n termsFields: termsFields,\n missingFields: missingFields,\n };\n\n const query = `query getSubAggs ( ${\n gqlFilter ?? '$filter: JSON,'\n } $nestedAggFields: JSON) {\n _aggregation {\n ${type} ( ${\n gqlFilter ?? 'filter: $filter, filterSelf: false,'\n } nestedAggFields: $nestedAggFields, accessibility: ${accessibility}) {\n ${nestedHistogramQueryStrForEachField(mainField, numericAggAsText)}\n }`;\n\n return {\n query: query,\n variables: {\n ...(gqlFilter && {\n filter: convertFilterSetToGqlFilter(gqlFilter),\n }),\n nestedAggFields: nestedAggFields,\n },\n };\n },\n transformResponse: (response: Record<string, any>, _meta, args) => {\n return processHistogramResponse(response.data._aggregation[args.type]);\n },\n }),\n getCounts: builder.query<number, QueryCountsParams>({\n query: ({\n type,\n filters,\n accessibility = Accessibility.ALL,\n }: QueryCountsParams) => {\n const gqlFilters = convertFilterSetToGqlFilter(filters);\n const queryLine = `query totalCounts ${\n gqlFilters ? '($filter: JSON)' : ''\n }{`;\n const typeAggsLine = `${type} ${\n gqlFilters ? '(filter: $filter, ' : '('\n } accessibility: ${accessibility}) {`;\n\n const query = `${queryLine} _aggregation {\n ${typeAggsLine}\n _totalCount\n }\n }\n }`;\n return {\n query: query,\n variables: {\n ...(gqlFilters && {\n filter: gqlFilters,\n }),\n },\n };\n },\n transformResponse: (\n response: Record<string, any>,\n _meta,\n args,\n ): number => {\n return response.data._aggregation[args.type]._totalCount;\n },\n }),\n getFieldCountSummary: builder.query<\n Record<string, any>,\n QueryForFileCountSummaryParams\n >({\n query: ({\n type,\n field,\n filters,\n accessibility = Accessibility.ALL,\n }: QueryForFileCountSummaryParams) => {\n const gqlFilters = convertFilterSetToGqlFilter(filters);\n const query = `query summary ($filter: JSON) {\n _aggregation {\n ${type} (filter: $filter, accessibility: ${accessibility}) {\n ${field} {\n histogram {\n sum,\n }\n }\n }\n }\n }`;\n return {\n query: query,\n variables: {\n ...(gqlFilters && {\n filter: gqlFilters,\n }),\n },\n };\n },\n }),\n getFieldsForIndex: builder.query({\n query: (index: string) => {\n return {\n query: `{\n _mapping ${index}\n }`,\n };\n },\n transformResponse: (response: Record<string, any>) => {\n return response['_mapping'];\n },\n }),\n generalGQL: builder.query<Record<string, unknown>, guppyApiSliceRequest>({\n query: ({ query, variables }) => {\n return {\n query: query,\n variables: variables,\n };\n },\n }),\n }),\n});\n\n// query for aggregate data\n// convert the function below to typescript\n\nconst histogramQueryStrForEachField = (field: string): string => {\n const splittedFieldArray = field.split('.');\n const splittedField = splittedFieldArray.shift();\n if (splittedFieldArray.length === 0) {\n return `\n ${splittedField} {\n histogram {\n key\n count\n }\n }`;\n }\n return `\n ${splittedField} {\n ${histogramQueryStrForEachField(splittedFieldArray.join('.'))}\n }`;\n};\n\nconst nestedHistogramQueryStrForEachField = (\n mainField: string,\n numericAggAsText: boolean,\n) => `\n ${mainField} {\n ${numericAggAsText ? 'asTextHistogram' : 'histogram'} {\n key\n count\n missingFields {\n field\n count\n }\n termsFields {\n field\n count\n terms {\n key\n count\n }\n }\n }\n }`;\n\nexport const rawDataQueryStrForEachField = (field: string): string => {\n const splitFieldArray = field.split('.');\n const splitField = splitFieldArray.shift();\n if (splitFieldArray.length === 0) {\n return `\n ${splitField}\n `;\n }\n return `\n ${splitField} {\n ${rawDataQueryStrForEachField(splitFieldArray.join('.'))}\n }`;\n};\n\nexport const useGetArrayTypes = () => {\n {\n const { data, error } = useGetStatus();\n if (error) {\n return {};\n }\n return data ? data['indices'] : {};\n }\n};\n\nexport const {\n useGetRawDataAndTotalCountsQuery,\n useGetAccessibleDataQuery,\n useGetAllFieldsForTypeQuery,\n useGetAggsQuery,\n useLazyGetAggsQuery,\n useGetSubAggsQuery,\n useGetCountsQuery,\n useGetFieldCountSummaryQuery,\n useGetFieldsForIndexQuery,\n useGeneralGQLQuery,\n useLazyGeneralGQLQuery,\n} = explorerApi;\n","import { JSONArray, JSONObject } from '../../types';\nimport { FILE_DELIMITERS } from '../../constants';\nimport { flatten } from 'flat';\nimport Papa, { UnparseConfig } from 'papaparse';\n\n/**\n * Flattens a deep nested JSON object skipping\n * the first level to avoid potentially flattening\n * non-nested data.\n * @param {JSON} json\n */\nexport function flattenJson(json: JSONObject) {\n const flattenedJson: JSONArray = [];\n Object.keys(json).forEach((key) => {\n flattenedJson.push(flatten(json[key], { delimiter: '_' }));\n });\n return flattenedJson;\n}\n\n/**\n * Converts JSON based on a config.\n * @param {JSON} json\n * @param {Object} config\n */\nexport async function conversion(json: JSONArray, config: UnparseConfig) {\n return Papa.unparse(json, config);\n}\n\n/**\n * Converts JSON to a specified file format.\n * Defaults to JSON if file format is not supported.\n * @param {JSON} json\n * @param {string} format\n */\nexport async function jsonToFormat(\n json: JSONObject,\n format: keyof typeof FILE_DELIMITERS,\n) {\n if (Object.keys(FILE_DELIMITERS).includes(format)) {\n const flatJson = await flattenJson(json);\n const data = await conversion(flatJson, {\n delimiter: FILE_DELIMITERS[format] as string,\n });\n return data;\n }\n return json;\n}\n","import { DownloadFromGuppyParams, GuppyDownloadDataParams } from './types';\nimport { GEN3_GUPPY_API } from '../../constants';\nimport { selectCSRFToken } from '../user';\nimport { coreStore } from '../../store';\nimport { convertFilterSetToGqlFilter } from '../filters';\nimport { jsonToFormat } from './conversion';\nimport { isJSONObject } from '../../types';\nimport { JSONPath } from 'jsonpath-plus';\nimport { useGetFieldsForIndexQuery } from './guppySlice';\n\n/**\n * Represents a configuration for making a fetch request.\n *\n * @typedef {Object} FetchConfig\n * @property {string} method - The HTTP method to use for the request.\n * @property {Object<string, string>} headers - The headers to include in the request.\n * @property {string} body - The request body.\n */\nexport type FetchConfig = {\n method: string;\n headers: Record<string, string>;\n body: string;\n};\n\n/**\n * Prepares a URL for downloading by appending '/download' to the provided apiUrl.\n *\n * @param {string} apiUrl - The base URL to be used for preparing the download URL.\n * @returns {URL} - The prepared download URL as a URL object.\n */\nconst prepareUrl = (apiUrl: string) => `${apiUrl}/download`;\n\n/**\n * Prepares a fetch configuration object for downloading files from Guppy.\n *\n * @param {GuppyFileDownloadRequestParams} parameters - The parameters to include in the request body.\n * @param {string} csrfToken - The CSRF token to include in the request headers.\n * @returns {FetchConfig} - The prepared fetch configuration object.\n */\nconst prepareFetchConfig = (\n parameters: GuppyDownloadDataParams,\n csrfToken?: string,\n): FetchConfig => {\n return {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(csrfToken !== undefined && { 'X-CSRF-Token': csrfToken }),\n // TODO: Add credentials\n },\n body: JSON.stringify({\n type: parameters.type,\n filter: convertFilterSetToGqlFilter(parameters.filter),\n accessibility: parameters.accessibility,\n fields: parameters?.fields,\n sort: parameters?.sort,\n }),\n };\n};\n\n/**\n * Downloads a file from Guppy using the provided parameters.\n * It will optionally convert the data to the specified format.\n *\n * @param {DownloadFromGuppyParams} parameters - The parameters to use for the download request.\n * @param onStart - The function to call when the download starts.\n * @param onDone - The function to call when the download is done.\n * @param onError - The function to call when the download fails.\n * @param onAbort - The function to call when the download is aborted.\n * @param signal - AbortSignal to use for the request.\n */\nexport const downloadFromGuppyToBlob = async ({\n parameters,\n onStart = () => null,\n onDone = (_: Blob) => null,\n onError = (_: Error) => null,\n onAbort = () => null,\n signal = undefined,\n}: DownloadFromGuppyParams) => {\n const csrfToken = selectCSRFToken(coreStore.getState());\n onStart?.();\n\n const url = prepareUrl(GEN3_GUPPY_API);\n const fetchConfig = prepareFetchConfig(parameters, csrfToken);\n\n fetch(url.toString(), {\n ...fetchConfig,\n ...(signal ? { signal: signal } : {}),\n } as RequestInit)\n .then(async (response: Response) => {\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n\n let jsonData = await response.json();\n if (parameters?.rootPath && parameters.rootPath) {\n // if rootPath is provided, extract the data from the rootPath\n jsonData = JSONPath({\n json: jsonData,\n path: `$.[${parameters.rootPath}]`,\n resultType: 'value',\n });\n }\n // convert the data to the specified format and return a Blob\n let str = '';\n if (parameters.format === 'json') {\n str = JSON.stringify(jsonData);\n } else {\n const convertedData = await jsonToFormat(jsonData, parameters.format);\n if (isJSONObject(convertedData)) {\n str = JSON.stringify(convertedData, null, 2);\n } else {\n str = convertedData;\n }\n }\n return new Blob([str], {\n type: 'application/json',\n });\n })\n .then((blob) => onDone?.(blob))\n .catch((error) => {\n // Abort is handle as an exception\n if (error.name == 'AbortError') {\n // handle abort()\n onAbort?.();\n }\n onError?.(error);\n });\n};\n\nexport const downloadJSONDataFromGuppy = async ({\n parameters,\n onAbort = () => null,\n signal = undefined,\n}: DownloadFromGuppyParams) => {\n const csrfToken = selectCSRFToken(coreStore.getState());\n\n const url = prepareUrl(GEN3_GUPPY_API);\n const fetchConfig = prepareFetchConfig(parameters, csrfToken);\n try {\n const response = await fetch(url.toString(), {\n ...fetchConfig,\n ...(signal ? { signal: signal } : {}),\n } as RequestInit);\n\n let jsonData = await response.json();\n if (parameters?.rootPath && parameters.rootPath) {\n // if rootPath is provided, extract the data from the rootPath\n jsonData = JSONPath({\n json: jsonData,\n path: `$.[${parameters.rootPath}]`,\n resultType: 'value',\n });\n }\n // convert the data to the specified format and return a Blob\n return jsonData;\n } catch (error: any) {\n // Abort is handle as an exception\n if (error.name == 'AbortError') {\n // handle abort()\n onAbort?.();\n }\n throw new Error(error);\n }\n};\n\nexport const useGetIndexFields = (index: string) => {\n const { data } = useGetFieldsForIndexQuery(index);\n return data ?? [];\n};\n","import { gen3Api } from '../gen3';\nimport { GEN3_GUPPY_API } from '../../constants';\nimport { convertFilterSetToGqlFilter, GQLFilter } from '../filters';\nimport { BaseGuppyDataRequest, GuppyDownloadDataParams } from './types';\n\nexport interface GuppyDownloadDataQueryParams extends BaseGuppyDataRequest {\n filter: GQLFilter;\n}\n\ninterface DownloadRequestStatus {\n readonly status: string;\n readonly message: string;\n}\n\n/**\n * Creates a Guppy API for fetching bulk (> 10K rows) elasticsearch data\n * @see https://github.com/uc-cdis/guppy/blob/master/doc/download.md\n * @param endpoints - Resolver function which configures the query with\n * type, filter, accessibility, fields, and sort arguments\n * @returns: A guppy download API for fetching bulk metadata\n */\nexport const downloadRequestApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n downloadFromGuppy: builder.mutation({\n query: ({\n type,\n filter,\n accessibility,\n fields,\n sort,\n }: GuppyDownloadDataParams) => {\n const queryBody: GuppyDownloadDataQueryParams = {\n filter: convertFilterSetToGqlFilter(filter),\n ...{ type, accessibility, fields, sort },\n };\n return {\n url: `${GEN3_GUPPY_API}/download`,\n method: 'POST',\n body: JSON.stringify(queryBody),\n cache: 'no-cache',\n };\n },\n transformResponse: (response: DownloadRequestStatus) => {\n return response;\n },\n }),\n }),\n});\n\nexport const { useDownloadFromGuppyMutation } = downloadRequestApi;\n","import { gen3ServicesReducer } from './features/gen3/gen3Api';\nimport { combineReducers } from '@reduxjs/toolkit';\nimport { userReducer } from './features/user/userSlice';\nimport { gen3AppReducer } from './features/gen3Apps/gen3AppsSlice';\nimport { drsHostnamesReducer } from './features/drsResolver';\nimport { modalReducer } from './features/modals/modalsSlice';\nimport { cohortReducer } from './features/cohort';\nimport { dataLibrarySelectionReducer } from './features/dataLibrary';\nimport { activeWorkspaceReducer } from './features/workspace/workspaceSlice';\n\nimport {\n userAuthApiReducerPath,\n userAuthApiReducer,\n} from './features/user/userSliceRTK';\n\nimport { guppyApiReducer, guppyApiSliceReducerPath } from './features/guppy';\n\nexport const rootReducer = combineReducers({\n gen3Services: gen3ServicesReducer,\n user: userReducer,\n gen3Apps: gen3AppReducer,\n drsHostnames: drsHostnamesReducer,\n modals: modalReducer,\n cohorts: cohortReducer,\n activeWorkspace: activeWorkspaceReducer,\n dataLibrarySelection: dataLibrarySelectionReducer,\n [guppyApiSliceReducerPath]: guppyApiReducer,\n [userAuthApiReducerPath]: userAuthApiReducer,\n});\n\nexport type CoreState = ReturnType<typeof rootReducer>;\n","import { configureStore } from '@reduxjs/toolkit';\nimport { setupListeners } from '@reduxjs/toolkit/query';\nimport { rootReducer } from './reducers';\nimport { gen3ServicesReducerMiddleware } from './features/gen3/gen3Api';\nimport { guppyAPISliceMiddleware } from './features/guppy/guppyApi';\nimport { userAuthApiMiddleware } from './features/user/userSliceRTK';\n\nexport const coreStore = configureStore({\n reducer: rootReducer,\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware().concat(\n gen3ServicesReducerMiddleware,\n guppyAPISliceMiddleware,\n userAuthApiMiddleware,\n ),\n});\n\nsetupListeners(coreStore.dispatch);\n\nexport type CoreDispatch = typeof coreStore.dispatch;\n","export const isNotDefined = (x: unknown): x is undefined => {\n return x === undefined || x === null || x === void 0;\n};\n\nexport const isObject = (x: unknown): x is Record<string, unknown> => {\n return typeof x === 'object';\n};\n\nexport const isArray = (x: unknown): x is ReadonlyArray<unknown> => {\n return Array.isArray(x);\n};\n\nexport const isString = (x: unknown): x is string => {\n return typeof x === 'string';\n};\n","/**\n * Prepares a URL for downloading by appending '/download' to the provided apiUrl.\n *\n * @param {string} apiUrl - The base URL to be used for preparing the download URL.\n * @returns {URL} - The prepared download URL as a URL object.\n */\nexport const prepareUrl = (apiUrl: string) => new URL(apiUrl + '/download');\n","import { selectCSRFToken } from '../features/user';\nimport { coreStore } from '../store';\nimport { GEN3_FENCE_API } from '../constants';\nimport { getCookie } from 'cookies-next';\n\nexport const HTTPErrorMessages: Record<number, string> = {\n // 4xx Client Errors\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Timeout',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Failed',\n 413: 'Payload Too Large',\n 414: 'URI Too Long',\n 415: 'Unsupported Media Type',\n 416: 'Range Not Satisfiable',\n 417: 'Expectation Failed',\n 418: \"I'm a teapot\",\n 421: 'Misdirected Request',\n 422: 'Unprocessable Entity',\n 423: 'Locked',\n 424: 'Failed Dependency',\n 425: 'Too Early',\n 426: 'Upgrade Required',\n 428: 'Precondition Required',\n 429: 'Too Many Requests',\n 431: 'Request Header Fields Too Large',\n 451: 'Unavailable For Legal Reasons',\n\n // 5xx Server Errors\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Timeout',\n 505: 'HTTP Version Not Supported',\n 506: 'Variant Also Negotiates',\n 507: 'Insufficient Storage',\n 508: 'Loop Detected',\n 510: 'Not Extended',\n 511: 'Network Authentication Required',\n};\n\nexport class HTTPError extends Error {\n constructor(\n public status: number,\n message: string,\n public responseData?: any,\n ) {\n super(message);\n this.name = 'HTTPError';\n }\n}\n\ninterface DownloadFromFenceParameters {\n guid: string;\n method?: 'GET' | 'POST';\n onStart?: () => void; // function to call when the download starts\n onDone?: (blob: Blob) => void; // function to call when the download is done\n onError?: (error: Error | HTTPError) => void; // function to call when the download fails\n onAbort?: () => void; // function to call when the download is aborted\n signal?: AbortSignal; // AbortSignal to use for the request\n}\n\nexport const fetchFencePresignedURL = async ({\n guid,\n method = 'GET',\n onAbort = () => null,\n signal = undefined,\n}: DownloadFromFenceParameters) => {\n const csrfToken = selectCSRFToken(coreStore.getState());\n\n const headers = new Headers();\n headers.set('Content-Type', 'application/json');\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n // NOTE: This cookie can only be accessed from the client side\n // in development mode. Otherwise, the cookie is set as httpOnly\n accessToken = getCookie('credentials_token');\n }\n if (csrfToken) headers.set('X-CSRF-Token', csrfToken);\n if (accessToken) headers.set('Authorization', `Bearer ${accessToken}`);\n\n const url = `${GEN3_FENCE_API}/user/data/download/${guid}`;\n try {\n const response = await fetch(url, {\n method: method,\n headers: headers,\n ...(signal ? { signal: signal } : {}),\n } as RequestInit);\n\n // Check if the response is ok before proceeding\n if (!response.ok) {\n let errorMessage: string;\n let errorData: any;\n\n try {\n // Attempt to parse error response as JSON\n errorData = await response.json();\n errorMessage = errorData.message || response.statusText;\n } catch {\n // If JSON parsing fails, use status text\n errorMessage = response.statusText;\n }\n\n throw new HTTPError(response.status, errorMessage, errorData);\n }\n\n return await response.json();\n } catch (error: unknown) {\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n onAbort?.();\n }\n }\n throw error;\n }\n};\n","import React, { PropsWithChildren } from 'react';\nimport { Provider } from 'react-redux';\nimport { coreStore } from './store';\n\nexport const CoreProvider: React.FC<Record<string, unknown>> = ({\n children,\n}: PropsWithChildren) => {\n return <Provider store={coreStore}>{children}</Provider>;\n};\n","import { gen3Api } from '../gen3';\nimport { createSelector } from '@reduxjs/toolkit';\nimport { type AuthzMapping } from './types';\nimport { GEN3_AUTHZ_API } from '../../constants';\n\n/**\n * Creates the authzApi for checking arborist permissions for a selected user\n * @see https://petstore.swagger.io/?url=https://raw.githubusercontent.com/uc-cdis/arborist/master/docs/openapi.yaml#/auth/get_auth_mapping\n * @see https://github.com/uc-cdis/arborist/blob/master/docs/relationships.simplified.png\n * @returns: An arborist response dict of user permissions {method, service} for each resource path.\n */\nexport const authzApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getAuthzMappings: builder.query<AuthzMapping, void>({\n query: () => `${GEN3_AUTHZ_API}/mapping`,\n }),\n }),\n});\n\nexport const { useGetAuthzMappingsQuery } = authzApi;\n\nexport const selectAuthzMapping= authzApi.endpoints.getAuthzMappings.select();\n\nexport const selectAuthzMappingData = createSelector(\n selectAuthzMapping,\n authzMapping => authzMapping?.data ?? { mappings: [] }\n);\n","import { JSONObject } from '../../types';\nimport { gen3Api } from '../gen3';\nimport Queue from 'queue';\nimport { GEN3_CROSSWALK_API, GEN3_MDS_API } from '../../constants';\nimport { JSONPath } from 'jsonpath-plus';\nimport { CrosswalkInfo, IndexedMetadataFilters } from './types';\n\nexport interface Metadata {\n readonly entries: Array<Record<string, unknown>>;\n}\n\nexport type CrosswalkArray = Array<CrosswalkInfo>;\n\ninterface ToMapping {\n id: string;\n dataPath: string[];\n}\n\ninterface CrossWalkParams {\n readonly ids: string[];\n readonly toPaths: Array<ToMapping>;\n}\n\nexport interface MetadataResponse {\n data: Array<JSONObject>;\n hits: number;\n}\n\nexport interface MetadataPaginationParams {\n pageSize: number;\n offset: number;\n}\n\nexport interface MetadataRequestParams extends MetadataPaginationParams {\n guidType: string;\n studyField: string;\n}\n\ninterface IndexedMetadataRequestParams extends MetadataRequestParams {\n indexKeys: Array<string>;\n filterEmpty?: IndexedMetadataFilters;\n}\n\nconst HasEnoughData = (\n data: Record<string, any>,\n keys: string[],\n limit: number,\n) => {\n const numEmptyKeys = keys.filter(\n (k) =>\n Object.hasOwn(data, k) &&\n typeof data[k] === 'string' &&\n data[k].trim() === '',\n ).length;\n return numEmptyKeys < limit;\n};\n\n/**\n * Defines metadataApi service using a base URL and expected endpoints. Derived from gen3Api core API.\n *\n * @param endpoints - Defines endpoints used in discovery page\n * @param getAggMDS - Queries aggregate metadata service\n * @see https://github.com/uc-cdis/metadata-service/blob/master/docs/agg_mds.md\n * @see https://petstore.swagger.io/?url=https://raw.githubusercontent.com/uc-cdis/metadata-service/master/docs/openapi.yaml#/Aggregate/get_aggregate_metadata_aggregate_metadata_get\n * @param getMDS - Queries normal metadata service\n * @see https://petstore.swagger.io/?url=https://raw.githubusercontent.com/uc-cdis/metadata-service/master/docs/openapi.yaml#/Query/search_metadata_metadata_get\n * @param getIndexAggMDS - queries the Aggregate Metadata service and returns all common passed in indexKeys\n * @param getTags - Probably refering to Aggregate metadata service summary statistics query\n * @see https://petstore.swagger.io/?url=https://raw.githubusercontent.com/uc-cdis/metadata-service/master/docs/openapi.yaml#/Aggregate/get_aggregate_tags_aggregate_tags_get\n * @param getData - Looks like a duplicate of getMDS handler. unused in ./frontend package\n * @param getCrosswalkData - Maps ids from one source to another\n * @returns: A guppy download API for fetching bulk metadata\n */\nexport const metadataApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getAggMDS: builder.query<MetadataResponse, MetadataRequestParams>({\n query: ({ offset, pageSize }: MetadataRequestParams) => {\n return `${GEN3_MDS_API}/aggregate/metadata?flatten=true&pagination=true&offset=${offset}&limit=${pageSize}`;\n },\n transformResponse: (response: Record<string, any>, _meta, params) => {\n return {\n data: response.results.map((x: JSONObject) => {\n const objValues = Object.values(x);\n const firstValue = objValues\n ? (objValues.at(0) as JSONObject)\n : undefined;\n return firstValue ? firstValue[params.studyField] : undefined;\n }),\n hits: response.pagination.hits,\n };\n },\n }),\n getIndexAggMDS: builder.query<\n MetadataResponse,\n IndexedMetadataRequestParams\n >({\n query: ({ pageSize }: IndexedMetadataRequestParams) => {\n return `${GEN3_MDS_API}/aggregate/metadata?limit=${pageSize}`;\n },\n transformResponse: (response: Record<string, any>, _meta, params) => {\n const dataFromIndexes = params.indexKeys.reduce(\n (acc, key) => {\n if (response[key]) {\n acc.push(...response[key]);\n }\n return acc;\n },\n [] as Array<Record<string, any>>,\n );\n\n return {\n data: (\n dataFromIndexes.map((x: JSONObject) => {\n const objValues = Object.values(x);\n const objIds = Object.keys(x);\n let firstValue = objValues\n ? (objValues.at(0) as JSONObject)\n : undefined;\n\n if (params?.filterEmpty) {\n // remove any data that has < limit if defined\n if (\n firstValue &&\n !HasEnoughData(\n firstValue[params.studyField] as Record<string, any>,\n params.filterEmpty.keys,\n params.filterEmpty.limit,\n )\n )\n firstValue = undefined;\n }\n return firstValue\n ? {\n gen3MDSGUID: objIds.at(0),\n ...(firstValue[params.studyField] as Record<string, any>),\n }\n : undefined;\n }) as JSONObject[]\n ).filter((x: JSONObject | undefined) => x !== undefined),\n hits: dataFromIndexes.length,\n };\n },\n }),\n getMDS: builder.query<MetadataResponse, MetadataRequestParams>({\n query: ({ guidType, offset, pageSize }) => {\n return `${GEN3_MDS_API}/metadata?data=True&_guid_type=${guidType}&limit=${pageSize}&offset=${offset}`;\n },\n transformResponse: (response: Record<string, any>, _meta) => {\n return {\n data: Object.keys(response).map((guid) => response[guid]),\n hits: Object.keys(response).length,\n };\n },\n }),\n getTags: builder.query<Metadata, string>({\n query: () => 'tags',\n }),\n getData: builder.query<Metadata, string>({\n query: (params) => ({ url: `metadata?${params}` }),\n }),\n // TODO: Move this to own slice\n getCrosswalkData: builder.query<CrosswalkArray, CrossWalkParams>({\n queryFn: async (arg, _queryApi, _extraOptions, fetchWithBQ) => {\n const queryMultiple = async (): Promise<CrosswalkInfo[]> => {\n let result = [] as CrosswalkInfo[];\n const queue = Queue({ concurrency: 15 });\n for (const id of arg.ids) {\n queue.push(async (callback?: () => void) => {\n const response = await fetchWithBQ({\n url: `${GEN3_CROSSWALK_API}/metadata/${id}`,\n });\n\n if (response.error) {\n return { error: response.error };\n }\n\n const toData = arg.toPaths.reduce(\n (acc, path) => {\n acc[path.id] =\n JSONPath<string>({\n json: response.data as Record<string, any>,\n path: `$.[${path.dataPath}]`,\n resultType: 'value',\n })?.[0] ?? 'n/a';\n return acc;\n },\n {} as Record<string, string>,\n );\n\n result = [\n ...result,\n {\n from: id,\n to: toData,\n },\n ];\n if (callback) callback();\n\n return result;\n });\n }\n\n return new Promise((resolve, reject) => {\n queue.start((err: unknown) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n });\n });\n };\n\n const result = await queryMultiple();\n return { data: result };\n },\n }),\n }),\n});\n\nexport const {\n useGetAggMDSQuery,\n useGetMDSQuery,\n useGetTagsQuery,\n useGetDataQuery,\n useGetCrosswalkDataQuery,\n useLazyGetCrosswalkDataQuery,\n useGetIndexAggMDSQuery,\n} = metadataApi;\n","// using a random uuid v4 as the namespace\nexport const GEN3_APP_NAMESPACE = '7bfaa818-c69c-457e-8d87-413cf60c25f0';\n","import React, { ComponentType, useEffect } from 'react';\nimport { coreStore } from '../../store';\nimport { v5 as uuidv5 } from 'uuid';\nimport { addGen3AppMetadata, EntityType } from './gen3AppsSlice';\nimport {\n configureStore,\n Dispatch,\n Middleware,\n UnknownAction,\n} from '@reduxjs/toolkit';\nimport { Action, Store } from 'redux';\nimport {\n createDispatchHook,\n createSelectorHook,\n createStoreHook,\n Provider,\n ReactReduxContextValue,\n TypedUseSelectorHook,\n} from 'react-redux';\nimport {\n FLUSH,\n PAUSE,\n PERSIST,\n PURGE,\n REGISTER,\n REHYDRATE,\n} from 'redux-persist';\nimport { registerGen3App } from './gen3AppRegistry';\nimport { DataStatus } from '../../dataAccess';\nimport { CookiesProvider } from 'react-cookie';\nimport { GEN3_APP_NAMESPACE } from './constants';\n\nexport interface CreateGen3AppOptions<T> {\n readonly App: ComponentType<T>;\n readonly name: string;\n readonly version: string;\n readonly requiredEntityTypes: ReadonlyArray<EntityType>;\n}\n\nexport const getGen3AppId = (name: string, version: string): string => {\n const nameVersion = `${name}::${version}`;\n return uuidv5(nameVersion, GEN3_APP_NAMESPACE);\n};\n\n/**\n * Creates a Gen3App that is dynamically loaded\n */\nexport const createGen3App = <\n T extends Record<any, any> = Record<string, any>,\n>({\n App,\n name,\n version,\n requiredEntityTypes,\n}: CreateGen3AppOptions<T>): React.FC<T> => {\n // create a stable id for this app\n const nameVersion = `${name}::${version}`;\n const id = uuidv5(nameVersion, GEN3_APP_NAMESPACE);\n\n // need to create store and provider.\n // return a component representing this app\n // if component gets added to a list, then the list can be iterated in index.js and each provider component can be added\n // a route can be setup for the app\n\n // need to register its name, category, path, data requirements\n // this will be used to build page3\n // click app link\n // const store = configureStore({\n // // TODO allow user to pass in a reducer in CreateGen3AppOptions?\n // reducer: (state) => state,\n // devTools: {\n // name: `${nameVersion}::${id}`,\n // },\n // });\n\n const Gen3AppWrapper: React.FC<T> = (props: T) => {\n useEffect(() => {\n document.title = `GEN3 - ${name}`;\n });\n\n return <App {...props} />;\n };\n\n // add the app to the store\n coreStore.dispatch(\n addGen3AppMetadata({\n id,\n name,\n version,\n requiredEntityTypes,\n }),\n );\n registerGen3App(name, Gen3AppWrapper as unknown as React.ReactNode);\n\n return Gen3AppWrapper;\n};\n\nexport interface AppDataSelectorResponse<T> {\n readonly data?: T;\n readonly status: DataStatus;\n readonly error?: string;\n}\n\nexport interface UseAppDataResponse<T> {\n readonly data?: T;\n readonly error?: string;\n readonly isUninitialized: boolean;\n readonly isFetching: boolean;\n readonly isSuccess: boolean;\n readonly isError: boolean;\n}\n\nexport interface UseAppDataHook<P, T> {\n (...params: P[]): UseAppDataResponse<T>;\n}\n\nexport interface CreateGEN3AppStore {\n readonly name: string;\n readonly version: string;\n readonly reducers: (...args: any) => any;\n middleware?: Middleware<unknown, any, Dispatch<UnknownAction>>;\n}\n\n// ----------------------------------------------------------------------------------------\n// Apps with Local Storage\n//\n\nexport const createAppStore = (\n options: CreateGEN3AppStore,\n): Record<any, any> => {\n const { name, version, reducers, middleware } = options;\n const nameVersion = `${name}::${version}`;\n const id = uuidv5(nameVersion, GEN3_APP_NAMESPACE);\n\n const store = configureStore({\n reducer: reducers,\n devTools: {\n name: `${nameVersion}::${id}`,\n },\n middleware: (getDefaultMiddleware) =>\n middleware\n ? getDefaultMiddleware({\n serializableCheck: {\n ignoredActions: [\n FLUSH,\n REHYDRATE,\n PAUSE,\n PERSIST,\n PURGE,\n REGISTER,\n ],\n },\n }).concat(middleware)\n : getDefaultMiddleware({\n serializableCheck: {\n ignoredActions: [\n FLUSH,\n REHYDRATE,\n PAUSE,\n PERSIST,\n PURGE,\n REGISTER,\n ],\n },\n }),\n });\n type AppState = ReturnType<typeof reducers>;\n const context = React.createContext<ReactReduxContextValue | null>(null);\n\n type AppDispatch = typeof store.dispatch;\n const useAppSelector: TypedUseSelectorHook<AppState> =\n createSelectorHook(context);\n const useAppDispatch: () => AppDispatch = createDispatchHook(context);\n const useAppStore = createStoreHook(context);\n\n return {\n id: id,\n AppStore: store,\n AppContext: context,\n useAppSelector: useAppSelector,\n useAppDispatch: useAppDispatch,\n useAppStore: useAppStore,\n };\n};\n\nexport interface CreateGen3AppWithOwnStoreOptions<\n T extends Record<any, any> = Record<string, any>,\n A extends Action = UnknownAction,\n S = any,\n> {\n readonly App: ComponentType<T>;\n readonly id: string; // unique id for this app\n readonly name: string; // name of the app\n readonly version: string; // version of the app, should be unique\n readonly requiredEntityTypes: ReadonlyArray<EntityType>;\n readonly store: Store<S, A>; // the redux-store for this app\n readonly context: any;\n}\n\nexport const createGen3AppWithOwnStore = <\n T extends Record<any, any> = Record<string, any>,\n A extends Action = UnknownAction,\n S = any,\n>(\n options: CreateGen3AppWithOwnStoreOptions<T, A, S>,\n): React.ReactNode => {\n const { App, id, name, version, requiredEntityTypes, store, context } =\n options;\n\n // need to create store and provider.\n // return a component representing this app\n // if component gets added to a list, then the list can be iterated in index.js and each provider component can be added\n // a route can be setup for the app\n\n // need to register its name, category, path, data requirements\n // this will be used to build page3\n // click app link\n\n const Gen3AppWrapper: React.FC<T> = (props: T) => {\n useEffect(() => {\n document.title = `GEN3 - ${name}`;\n });\n\n return (\n <Provider store={store} context={context}>\n <CookiesProvider>\n <App {...props} />\n </CookiesProvider>\n </Provider>\n );\n };\n\n // add the app to the store\n coreStore.dispatch(\n addGen3AppMetadata({\n id,\n name,\n version,\n requiredEntityTypes,\n }),\n );\n registerGen3App(name, Gen3AppWrapper as unknown as React.ReactNode);\n return Gen3AppWrapper as unknown as React.ReactNode;\n};\n","import * as React from 'react';\nimport {\n createDispatchHook,\n createStoreHook,\n ReactReduxContextValue,\n useSelector,\n} from 'react-redux';\nimport {\n ApiModules,\n buildCreateApi,\n coreModule,\n CreateApi,\n reactHooksModule,\n BaseQueryFn,\n fetchBaseQuery,\n} from '@reduxjs/toolkit/query/react';\nimport { configureStore } from '@reduxjs/toolkit';\nimport {\n FLUSH,\n PAUSE,\n PERSIST,\n PURGE,\n REGISTER,\n REHYDRATE,\n} from 'redux-persist';\nimport { GEN3_API } from '../../constants';\nimport { getCookie } from 'cookies-next';\n\nexport const createAppApiForRTKQ = (\n reducerPath: string,\n baseQuery?: BaseQueryFn,\n) => {\n const appContext = React.createContext<ReactReduxContextValue | null>(null);\n\n type AppState = any;\n const useAppSelector = useSelector.withTypes<AppState>();\n const useAppDispatch = createDispatchHook(appContext);\n const useAppStore = createStoreHook(appContext);\n\n const appCreateApi: CreateApi<keyof ApiModules<any, any, any, any>> =\n buildCreateApi(\n coreModule(),\n reactHooksModule({\n hooks: {\n useDispatch: useAppDispatch,\n useSelector: useAppSelector,\n useStore: useAppStore,\n },\n }),\n );\n\n const appRTKQApi = appCreateApi({\n reducerPath: reducerPath,\n baseQuery:\n baseQuery ??\n fetchBaseQuery({\n baseUrl: `${GEN3_API}`,\n prepareHeaders: (headers) => {\n headers.set('Content-Type', 'application/json');\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n // NOTE: This cookie can only be accessed from the client side\n // in development mode. Otherwise, the cookie is set as httpOnly\n accessToken = getCookie('credentials_token');\n }\n if (accessToken)\n headers.set('Authorization', `Bearer ${accessToken}`);\n return headers;\n },\n }),\n endpoints: () => ({}),\n });\n\n const appMiddleware = appRTKQApi.middleware;\n const appStore = configureStore({\n reducer: {\n [appRTKQApi.reducerPath]: appRTKQApi.reducer,\n },\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware({\n serializableCheck: {\n ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],\n },\n }).concat(appMiddleware),\n });\n\n return {\n useAppSelector: useAppSelector,\n useAppDispatch: useAppDispatch,\n useAppStore: useAppStore,\n AppContext: appContext,\n appApi: appRTKQApi,\n appContext: appContext,\n appStore: appStore,\n };\n};\n","import { gen3Api } from '../gen3';\nimport { JSONObject } from '../../types';\nimport { GEN3_GUPPY_API } from '../../constants';\n\nexport const graphQLWithTags = gen3Api.enhanceEndpoints({\n addTagTypes: ['graphQL'],\n});\n\n/**\n * Creates a graphQLAPI for graphql queries to elasticsearch indices via guppy\n * @see https://github.com/uc-cdis/guppy/blob/master/doc/queries.md\n * @param query - Resolver function which configures the graphql query with graphQLParams argument\n * @returns: A guppy search API for fetching metadata\n */\nexport const graphQLAPI = graphQLWithTags.injectEndpoints({\n endpoints: (builder) => ({\n graphQL: builder.query<JSONObject, JSONObject>({\n query: (graphQLParams) => ({\n url: `${GEN3_GUPPY_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify(graphQLParams),\n }),\n }),\n }),\n});\n\nexport const { useGraphQLQuery } = graphQLAPI;\n","import { GEN3_AI_SEARCH_API } from '../../constants';\nimport { gen3Api } from '../gen3';\n\ninterface AiSearchParams {\n readonly query: string;\n}\n\ninterface AiSearchRequestParams extends AiSearchParams {\n readonly topic?: string;\n readonly conversationId?: string;\n}\n\nexport interface AiSearchResponse extends AiSearchParams {\n readonly topic: string;\n readonly conversationId: string;\n readonly response: string;\n readonly documents: {\n readonly page_content: string;\n readonly metadata: {\n readonly row: number;\n readonly source: string;\n };\n }[];\n}\n\n/**\n * returns a response from the AI search service\n * @param searchParams - the parameters for the AI search service\n * @returns the response from the AI search service\n */\nexport const aiSearchApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n askQuestion: builder.mutation<AiSearchResponse, AiSearchRequestParams>({\n query: (searchParams: AiSearchRequestParams) => ({\n url: `${GEN3_AI_SEARCH_API}/ask`,\n method: 'POST',\n credentials: 'include',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query: searchParams.query,\n ...(searchParams.topic ? { topic: searchParams.topic } : {}),\n ...(searchParams.conversationId ? { conversation_id: searchParams.conversationId } : {}),\n }),\n }),\n transformResponse: (data: Record<string, any>, _, arg) => {\n return {\n query: arg.query,\n response: data.response,\n topic: data.topic,\n conversationId: data.conversation_id,\n documents: data.documents,\n };\n },\n }),\n /**\n * returns the status of the AI search service\n * @returns {\n * status: string\n * timestamp: string\n * }\n */\n getAISearchStatus: builder.query<AiSearchResponse, void>({\n query: () => `${GEN3_AI_SEARCH_API}/_status`,\n }),\n getAISearchVersion: builder.query<AiSearchResponse, void>({\n query: () => `${GEN3_AI_SEARCH_API}/_version`,\n }),\n })\n});\n\n// Add more endpoints here\n\nexport const {\n useAskQuestionMutation,\n useGetAISearchStatusQuery,\n useGetAISearchVersionQuery\n} = aiSearchApi;\n","import { gen3Api } from '../gen3';\nimport { GEN3_WORKSPACE_API } from '../../constants';\nimport {\n PayModel,\n PodStatus,\n WorkspaceInfo,\n WorkspaceInfoResponse,\n WorkspaceOptions,\n WorkspaceOptionsResponse,\n WorkspacePayModelResponse,\n WorkspaceStatus,\n WorkspaceStatusResponse,\n} from './types';\nimport { selectActiveWorkspaceStatus } from './workspaceSlice';\nimport { CoreState } from '../../reducers';\nimport { isFetchParseError, isHttpStatusError } from '../../types';\nimport { createSelector } from '@reduxjs/toolkit';\n\ninterface WorkspacePayModelRawResponse {\n current_pay_model: PayModel;\n all_pay_models: Array<PayModel>;\n}\n\nconst WorkspaceWithTags = gen3Api.enhanceEndpoints({\n addTagTypes: ['Workspace', 'PayModel'],\n});\n\nexport const EmptyWorkspaceStatusResponse: WorkspaceStatusResponse = {\n status: WorkspaceStatus.NotFound,\n conditions: [],\n containerStates: [],\n idleTimeLimit: 0,\n lastActivityTime: 0,\n workspaceType: '',\n};\n\nexport const workspacesApi = WorkspaceWithTags.injectEndpoints({\n endpoints: (builder) =>\n ({\n getWorkspaceOptions: builder.query<WorkspaceOptions, void>({\n query: () => `${GEN3_WORKSPACE_API}/options`,\n transformResponse: (response: WorkspaceOptionsResponse) => {\n return response.map((workspace: WorkspaceInfoResponse) => {\n return {\n id: workspace.id,\n name: workspace.name,\n idleTimeLimit: workspace['idle-time-limit'],\n memoryLimit: workspace['memory-limit'],\n cpuLimit: workspace['cpu-limit'],\n } as WorkspaceInfo;\n });\n },\n }),\n getWorkspacePayModels: builder.query<WorkspacePayModelResponse, void>({\n query: () => `${GEN3_WORKSPACE_API}/allpaymodels`,\n providesTags: ['PayModel'],\n transformResponse: (response: WorkspacePayModelRawResponse) => {\n return {\n currentPayModel: response.current_pay_model,\n allPayModels: response.all_pay_models,\n noPayModel: false,\n };\n },\n }),\n getActivePayModel: builder.query<PayModel, void>({\n query: () => `${GEN3_WORKSPACE_API}/paymodels`,\n providesTags: ['PayModel'],\n }),\n setCurrentPayModel: builder.mutation<void, string>({\n query: (id: string) => ({\n url: `${GEN3_WORKSPACE_API}/setpaymodel`,\n method: 'POST',\n body: id,\n invalidatesTags: ['PayModel'],\n }),\n }),\n getWorkspaceStatus: builder.query<WorkspaceStatusResponse, void>({\n queryFn: async (_arg0, queryApi, _extraOptions, fetchWithBQ) => {\n const currentWorkspaceStatus = selectActiveWorkspaceStatus(\n queryApi.getState() as CoreState,\n );\n\n const workspaceStatus = await fetchWithBQ(\n `${GEN3_WORKSPACE_API}/status`,\n );\n if (workspaceStatus.error) {\n return workspaceStatus;\n }\n\n // TODO: try to find out IF this is code is required\n const workspaceStatusData =\n workspaceStatus.data as unknown as WorkspaceStatusResponse;\n\n if (\n workspaceStatusData.status === WorkspaceStatus.Running &&\n (currentWorkspaceStatus === 'Not Found' ||\n currentWorkspaceStatus === 'Launching')\n ) {\n const proxyStatus = await fetchWithBQ(\n `${GEN3_WORKSPACE_API}/proxy/`,\n );\n let statusError = undefined;\n if (isFetchParseError(proxyStatus.error)) {\n statusError = proxyStatus.error.originalStatus;\n }\n\n if (isHttpStatusError(proxyStatus.error)) {\n statusError = proxyStatus.error.status;\n }\n\n if (statusError && statusError !== 200) {\n return {\n data: {\n ...workspaceStatusData,\n status: WorkspaceStatus.Launching,\n conditions: [\n {\n type: 'ProxyConnected',\n status: PodStatus.False,\n },\n ],\n } as WorkspaceStatusResponse,\n };\n }\n }\n return { data: workspaceStatus.data as WorkspaceStatusResponse };\n },\n providesTags: ['Workspace'],\n }),\n launchWorkspace: builder.mutation<boolean, string>({\n query: (id) => {\n return {\n url: `${GEN3_WORKSPACE_API}/launch?id=${id}`,\n method: 'POST',\n invalidatesTags: ['Workspace'],\n responseHandler: (response) => response.text(),\n };\n },\n transformResponse: async (response: string) => {\n return !!(response && response === 'Success');\n },\n }),\n terminateWorkspace: builder.mutation<void, void>({\n query: () => ({\n url: `${GEN3_WORKSPACE_API}/terminate`,\n method: 'POST',\n invalidatesTags: ['Workspace'],\n responseHandler: (response) => response.text(),\n }),\n }),\n }) as const,\n});\n\nexport const {\n useGetWorkspaceOptionsQuery,\n useGetWorkspacePayModelsQuery,\n useGetWorkspaceStatusQuery,\n useGetActivePayModelQuery,\n useSetCurrentPayModelMutation,\n useLaunchWorkspaceMutation,\n useTerminateWorkspaceMutation,\n} = workspacesApi;\n\nexport const workspaceStatusSelector =\n workspacesApi.endpoints.getWorkspaceStatus.select();\n\nexport const selectWorkspaceStatusFromService = createSelector(\n workspaceStatusSelector,\n (status) =>\n status.data ?? {\n ...EmptyWorkspaceStatusResponse,\n },\n);\n\nexport const selectWorkspaceStatus = createSelector(\n workspaceStatusSelector,\n (status) => status?.data?.status ?? WorkspaceStatus.NotFound,\n);\n","import { WorkspaceStatus } from './types';\n\nexport const isWorkspaceActive = (status: WorkspaceStatus) =>\n status === WorkspaceStatus.Running ||\n status === WorkspaceStatus.Launching ||\n status === WorkspaceStatus.Terminating;\n\nexport const isWorkspaceRunningOrStopping = (status: WorkspaceStatus) =>\n status === WorkspaceStatus.Running || status === WorkspaceStatus.Terminating;\n","export const resourcePathFromProjectID = (projectID: string): string => {\n const split = projectID.split('-');\n const program = split[0];\n const project = split.slice(1).join('-');\n const resourcePath = ['/programs', program, 'projects', project].join('/');\n return resourcePath;\n};\n\nexport const isRootUrl = (urlFragment: string): boolean => urlFragment === '_root';\n\nexport const isProgramUrl = (urlFragment: string): boolean => urlFragment !== '_root' && !urlFragment.includes('-');\n\nexport const userHasSheepdogProgramAdmin = (userAuthMapping: Record<string, any> = {}): boolean => userAuthMapping['/services/sheepdog/submission/program'] !== undefined;\n\nexport const userHasSheepdogProjectAdmin = (userAuthMapping: Record<string, any> = {}): boolean => userAuthMapping['/services/sheepdog/submission/project'] !== undefined;\n\nexport const projectCodeFromResourcePath = (resourcePath: string): string => {\n const split = resourcePath.split('/');\n return (split.length < 5 || split[1] !== 'programs' || split[3] !== 'projects') ? '' : split[4];\n};\n\nexport const listifyMethodsFromMapping = (actions: { service: string, method: string }[]): string[] => {\n const reducer = (accumulator: string[], currval: { service: string, method: string }): string[] => accumulator.concat([currval.method]);\n return actions.reduce(reducer, []);\n};\n\nexport const userHasDataUpload = (userAuthMapping: Record<string, any> = {}): boolean => {\n const actionIsFileUpload = (x: { method: string }): boolean => x.method === 'file_upload';\n const resource = userAuthMapping['/data_file'];\n return resource !== undefined && resource.some(actionIsFileUpload);\n};\n\nexport const userHasMethodForServiceOnResource = (method: string, service: string, resourcePath: string, userAuthMapping: Record<string, any> = {}): boolean => {\n const actions = userAuthMapping[resourcePath];\n return actions !== undefined && actions.some((x: { service: string, method: string }) => ((x.service === service || x.service === '*') && (x.method === method || x.method === '*')));\n};\n\nexport const userHasMethodForServiceOnProject = (method: string, service: string, projectID: string, userAuthMapping: Record<string, any> = {}): boolean => {\n const resourcePath = resourcePathFromProjectID(projectID);\n return userHasMethodForServiceOnResource(method, service, resourcePath, userAuthMapping);\n};\n\nexport const userHasMethodOnAnyProject = (method: string, userAuthMapping: Record<string, any> = {}): boolean => {\n const actionHasMethod = (x: { method: string }): boolean => (x.method === method);\n const actionArrays = Object.values(userAuthMapping);\n const hasMethod = actionArrays.some((x: { method: string }[]) => x.some(actionHasMethod));\n return hasMethod;\n};\n\nexport const userHasCreateOrUpdateOnAnyProject = (userAuthMapping: Record<string, any> = {}): boolean => (userHasMethodOnAnyProject('create', userAuthMapping)\n || userHasMethodOnAnyProject('update', userAuthMapping));\n","type JsonPathMapping = { [key: string]: string };\n\nexport interface JSONObject {\n [k: string]: JSONValue;\n}\n\nexport type JSONValue = string | number | boolean | JSONValue[] | JSONObject;\n\nimport { JSONPath } from 'jsonpath-plus';\n\nexport const extractValuesFromObject = (jsonPathMappings: JsonPathMapping, obj: JSONObject): JSONObject =>{\n const result: { [key: string]: any } = {};\n\n const extractObjectValue = (jsonPath: string, obj: JSONObject): JSONValue | undefined => {\n const extractedValues = JSONPath({ path: jsonPath, json: obj });\n return extractedValues.length > 0 ? extractedValues[0] : undefined;\n };\n\n for (const key in jsonPathMappings) {\n if (key in Object.keys(jsonPathMappings)) {\n // Extract value from object and store it in the result.\n result[key] = extractObjectValue(jsonPathMappings[key], obj);\n }\n }\n\n return result;\n};\n","import { gen3Api } from '../gen3';\nimport { GEN3_SUBMISSION_API } from '../../constants';\nimport {\n Project,\n ProjectResponse,\n ProjectsListRequestParams,\n SubmissionInfo,\n SubmissionGraphqlParams,\n SubmissionGraphqlResponse,\n} from './types';\nimport { JSONObject } from '../../types';\nimport { extractValuesFromObject } from '../../utils/extractvalues';\nimport type { FetchBaseQueryError } from '@reduxjs/toolkit/query';\n\ninterface ProjectFetchQueryResponse {\n data: {\n data: {\n project: Array<Project>;\n };\n };\n}\n\n/**\n * Project details from the project query\n */\ninterface ProjectInfoFromProjectDetails {\n name: string;\n id: string;\n code: string;\n}\n\ninterface ProjectDetailsResponse\n extends Record<\n string,\n string | number | Array<ProjectInfoFromProjectDetails>\n > {\n project: Array<ProjectInfoFromProjectDetails>;\n}\n\ninterface ProjectDetailsFetchQueryResponse {\n data: {\n data: ProjectDetailsResponse;\n };\n}\n\n/**\n * Project details results a list of project details\n * and the project information\n */\ninterface ProjectDetailsResults {\n [key: string]: string | number | ProjectInfoFromProjectDetails;\n project: ProjectInfoFromProjectDetails;\n}\n\nexport interface ProjectDetailsQueryResponse {\n details: ProjectDetailsResults[];\n hits: number;\n}\n\ninterface SubmissionQueryResponse {\n transactionList: SubmissionInfo[];\n}\n\nconst SubmissionGraphqlQuery = `query transactionList {\n transactionList: transaction_log(last: 20) {\n id\n submitter\n project_id\n created_datetime\n documents {\n doc_size\n doc\n id\n }\n state\n }\n}`;\n\n/**\n * Defines submissionApi service using a base URL and expected endpoints. Derived from gen3Api core API.\n * @param endpoints - Defines endpoints used in submission page\n * @param getProjects - Queries the list of projects\n * @param getProjectsDetails - Queries the list of projects and their details\n * @param getSubmissionGraphQL - Queries the submission graphql with a query and variables\n * @returns: A submission API for fetching project details\n */\nexport const submissionApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getProjects: builder.query<ProjectResponse, JSONObject>({\n query: (graphQLParams) => ({\n url: `${GEN3_SUBMISSION_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify(graphQLParams),\n }),\n transformResponse: (response: Record<string, any>, _meta) => {\n return {\n projects: response.data.project,\n };\n },\n }),\n getSubmissions: builder.query<SubmissionQueryResponse, void>({\n query: () => ({\n url: `${GEN3_SUBMISSION_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify({\n query: SubmissionGraphqlQuery,\n }),\n }),\n transformResponse: (response: Record<string, any>, _meta) => {\n return {\n transactionList: response.data.transactionList,\n };\n },\n }),\n getProjectsDetails: builder.query<\n ProjectDetailsQueryResponse,\n ProjectsListRequestParams\n >({\n async queryFn(args, _queryApi, _extraOptions, fetchWithBQ) {\n // get the list of projects\n const projectsResponse = await fetchWithBQ({\n url: `${GEN3_SUBMISSION_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify(args.projectQuery),\n });\n if (projectsResponse.error)\n return { error: projectsResponse.error as FetchBaseQueryError };\n\n const projects = (projectsResponse as ProjectFetchQueryResponse)?.data\n .data.project;\n const projectIds = projects.map((p) => p.project_id);\n\n // given the list of projects, get all of them by executing the projectDetailsQuery for each project\n const projectDetails = await Promise.all(\n projectIds.map(async (projectId) => {\n const result = await fetchWithBQ({\n url: `${GEN3_SUBMISSION_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify({\n ...args.projectDetailsQuery,\n variables: {\n name: projectId,\n },\n }),\n });\n const { project, ...values } = (\n result as ProjectDetailsFetchQueryResponse\n ).data.data;\n\n return result.data\n ? {\n data: args.mapping\n ? ({\n ...extractValuesFromObject(\n args.mapping,\n values as JSONObject,\n ),\n project: project[0],\n } as ProjectDetailsResults)\n : ({\n ...values,\n project: project[0],\n } as ProjectDetailsResults),\n }\n : { error: result.error };\n }),\n );\n\n // if any of the projectDetails has an error, return the error\n if (projectDetails.some((detail) => 'error' in detail)) {\n return {\n error: projectDetails.find(\n (detail) => 'error' in detail,\n ) as FetchBaseQueryError,\n };\n } else\n return {\n data: {\n details: projectDetails.reduce((acc, detail) => {\n acc.push(\n detail.data ?? {\n project: {\n name: '',\n id: '',\n code: '',\n },\n },\n );\n return acc;\n }, [] as ProjectDetailsResults[]),\n hits: projectIds.length, // TODO this needs to be changed to show the total number of projects\n },\n };\n },\n }),\n getSubmissionGraphQL: builder.query<\n SubmissionGraphqlResponse,\n SubmissionGraphqlParams\n >({\n query: (graphQLParams) => ({\n url: `${GEN3_SUBMISSION_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify({\n query: graphQLParams.query,\n ...(graphQLParams.variables\n ? { variables: graphQLParams.variables }\n : {}),\n }),\n }),\n transformResponse: (response: Record<string, any>, _meta, params) => {\n if (params.mapping) {\n return {\n data: extractValuesFromObject(params.mapping, response.data),\n };\n }\n return response.data;\n },\n }),\n getDictionary: builder.query<SubmissionGraphqlResponse, void>({\n query: () => ({\n url: `${GEN3_SUBMISSION_API}/_dictionary/_all/`,\n }),\n }),\n }),\n});\n\nexport const {\n useGetProjectsQuery,\n useGetSubmissionGraphQLQuery,\n useGetProjectsDetailsQuery,\n useLazyGetProjectsQuery,\n useLazyGetSubmissionGraphQLQuery,\n useGetSubmissionsQuery,\n useGetDictionaryQuery,\n} = submissionApi;\n","import { gen3Api } from '../gen3';\nimport { GEN3_SOWER_API } from '../../constants';\nimport { JSONObject } from '../../types';\nimport { JobStatus } from './types';\n\nexport interface DispatchJobParams {\n action: string;\n input: JSONObject;\n}\n\nexport interface DispatchJobResponse {\n uid: string;\n name: string;\n status: string;\n}\n\ntype JobListResponse = Array<JobStatus>;\n\n/**\n * Creates a loadingStatusApi for checking the status of a sower data download job\n * @param getJobList Shows the list of jobs currently running\n * @see https://petstore.swagger.io/?url=https://raw.githubusercontent.com/uc-cdis/sower/master/openapis/openapi.yaml#/sower/list\n * @param getDownloadStatus Shows the status of a selected job\n * @returns: A sower job response dict which returns job information of file downloads\n */\nexport const loadingStatusApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getSowerJobList: builder.query<JobListResponse, void>({\n query: () => `${GEN3_SOWER_API}/list`,\n }),\n submitSowerJob: builder.mutation<DispatchJobResponse, DispatchJobParams>({\n query: (params) => ({\n url: `${GEN3_SOWER_API}/dispatch`,\n method: 'POST',\n body: params,\n }),\n }),\n getSowerJobStatus: builder.query<DispatchJobResponse, string>({\n query: (uid) => `${GEN3_SOWER_API}/status?UID=${uid}`,\n }),\n getSowerOutput: builder.query<DispatchJobResponse, string>({\n query: (uid) => `${GEN3_SOWER_API}/output?UID=${uid}`,\n }),\n getSowerServiceStatus: builder.query<JSON, void>({\n query: () => `${GEN3_SOWER_API}/_status`,\n }),\n }),\n});\n\nexport const {\n useGetSowerJobListQuery,\n useLazyGetSowerJobListQuery,\n useSubmitSowerJobMutation,\n useGetSowerJobStatusQuery,\n useGetSowerOutputQuery,\n useGetSowerServiceStatusQuery,\n} = loadingStatusApi;\n"],"names":["GEN3_COMMONS_NAME","process","env","GEN3_API","NEXT_PUBLIC_GEN3_API","GEN3_DOMAIN","NEXT_PUBLIC_GEN3_DOMAIN","GEN3_GUPPY_API","NEXT_PUBLIC_GEN3_GUPPY_API","GEN3_MDS_API","NEXT_PUBLIC_GEN3_MDS_API","GEN3_DOWNLOADS_ENDPOINT","NEXT_PUBLIC_GEN3_DOWNLOADS_ENDPOINT","GEN3_FENCE_API","NEXT_PUBLIC_GEN3_FENCE_API","GEN3_AI_SEARCH_API","NEXT_PUBLIC_GEN3_AI_SEARCH_API","GEN3_AUTHZ_API","NEXT_PUBLIC_GEN3_AUTHZ_API","GEN3_REDIRECT_URL","NEXT_PUBLIC_GEN3_REDIRECT_URL","GEN3_WORKSPACE_API","NEXT_PUBLIC_GEN3_WORKSPACE_STATUS_API","GEN3_SUBMISSION_API","NEXT_PUBLIC_GEN3_SUBMISSION_API","GEN3_WTS_API","NEXT_PUBLIC_GEN3_WTS_API","GEN3_DATA_LIBRARY_API","NEXT_PUBLIC_GEN3_DATA_LIBRARY_API","GEN3_CROSSWALK_API","NEXT_PUBLIC_GEN3_CROSSWALK_API","GEN3_SOWER_API","NEXT_PUBLIC_GEN3_SOWER_API","Accessibility","FILE_DELIMITERS","tsv","csv","buildFetchError","res","request","url","status","statusText","text","fetchFence","endpoint","headers","body","method","isJSON","fetch","JSON","stringify","ok","data","json","userAuthApi","createApi","reducerPath","refetchOnMountOrArgChange","refetchOnReconnect","baseQuery","getState","results","csrfToken","selectCSRFToken","accessToken","undefined","NODE_ENV","getCookie","Accept","Authorization","credentials","e","endpoints","builder","fetchUserDetails","query","transformResponse","response","loginStatus","username","getCSRF","csrf","EMPTY_USER","useFetchUserDetailsQuery","useLazyFetchUserDetailsQuery","useGetCSRFQuery","userAuthApiMiddleware","middleware","userAuthApiReducerPath","userAuthApiReducer","reducer","selectUserDetailsFromState","select","selectUserDetails","createSelector","userDetails","selectUserAuthStatus","userLoginState","QueryStatus","pending","uninitialized","selectCSRFTokenData","passThroughTheState","state","gen3Services","selectHeadersWithCSRFToken","gen3Api","fetchBaseQuery","baseUrl","prepareHeaders","set","gen3ServicesReducer","gen3ServicesReducerMiddleware","loginProvidersApi","injectEndpoints","getLoginProviders","getDownload","guid","useGetLoginProvidersQuery","useGetDownloadQuery","useLazyGetDownloadQuery","logoutFence","redirect","credentialsWithTags","enhanceEndpoints","addTagTypes","credentialsApi","getCredentials","providesTags","addNewCredential","mutation","scope","invalidatesTags","removeCredential","id","authorizeFromCredentials","params","api_key","key_id","useGetCredentialsQuery","useAddNewCredentialMutation","useRemoveCredentialMutation","useAuthorizeFromCredentialsMutation","jwtApi","getJWKKeys","useGetJWKKeysQuery","useCoreSelector","useSelector","withTypes","useCoreDispatch","useDispatch","usePrevious","value","ref","useRef","useEffect","current","createUseCoreDataHook","fetchDataActionCreator","dataSelector","coreDispatch","error","action","prevParams","isEqual","isUninitialized","isFetching","isSuccess","isError","fetchUserState","createAsyncThunk","_","meta","isAuthenticated","isPending","initialState","slice","createSlice","name","reducers","resetUserState","extraReducers","addCase","fulfilled","payload","rejected","userReducer","actions","selectUserData","user","selectUser","selectUserLoginStatus","useUser","useIsUserLoggedIn","useUserAuth","renew","externalLoginApi","getExternalLogins","isExternalConnected","idp","useGetExternalLoginsQuery","useLazyGetExternalLoginsQuery","useLazyIsExternalConnectedQuery","useIsExternalConnectedQuery","isHistogramRangeData","key","Array","isArray","length","every","item","isJSONObject","isJSONValue","isJSONValueArray","isValidObject","input","isHistogramData","isHistogramDataArray","histogram","isHistogramDataCollection","obj","isGuppyAggregationData","isHistogramDataAnEnum","count","isHistogramDataAArray","isHistogramDataArrayAnEnum","isHistogramDataArrayARange","isFetchBaseQueryError","isErrorWithMessage","message","isHttpStatusError","isFetchParseError","REGISTRY","registerGen3App","gen3App","lookupGen3App","gen3Apps","addGen3AppMetadata","requiredEntityTypes","gen3AppReducer","selectGen3AppMetadataByName","appName","selectGen3AppByName","setDRSHostnames","_state","drsHostnamesReducer","Modals","currentModal","showModal","modal","hideModal","modalReducer","selectCurrentModal","modals","selectCurrentMessage","initialCohortState","cohort","filters","modified_datetime","Date","toISOString","cohortSlice","updateCohortFilter","index","field","filter","mode","root","setCohortFilter","removeCohortFilter","_a","updated","clearCohortFilters","selectCohortFilters","cohorts","selectCurrentCohortId","selectCurrentCohort","selectCurrentCohortName","selectIndexedFilterByName","EmptyFilterSet","selectIndexFilters","cohortReducer","isFileItem","isAdditionalDataItem","itemType","isCohortItem","processItem","type","description","documentationUrl","BuildList","listId","listData","Object","keys","includes","items","entries","reduce","acc","schemaVersion","schema_version","dataset_guid","version","createdTime","created_time","updatedTime","updated_time","authz","BuildLists","lists","list","getNumberOfItemsInDatalist","dataList","values","fileCount","x","getTimestamp","now","toLocaleString","flattenDataList","TAGS","dataLibraryTags","dataLibraryApi","getDataLibraryLists","transformErrorResponse","originalStatus","getDataLibraryList","addAllDataLibraryLists","addDataLibraryList","nanoid","updateDataLibraryList","deleteDataLibraryList","deleteAllDataLibrary","useGetDataLibraryListQuery","useGetDataLibraryListsQuery","useAddDataLibraryListMutation","useAddAllDataLibraryListsMutation","useDeleteDataLibraryListMutation","useDeleteAllDataLibraryMutation","useUpdateDataLibraryListMutation","DATABASE_NAME","STORE_NAME","getDb","openDB","upgrade","db","objectStoreNames","contains","createObjectStore","keyPath","deleteListIndexDB","tx","transaction","store","objectStore","get","Error","delete","done","deleteAll","clear","addListToDataLibraryIndexDB","timestamp","put","creator","updateListIndexDB","errorMessage","addAllListIndexDB","allLists","getDataLibraryListIndexDB","getAll","listMap","datalists","useDataLibrary","useApi","localLibrary","setLocalLibrary","useState","apiLibrary","refetch","refetchLibraryFromApi","apiError","isAPIListError","isLoading","isAPIListLoading","skip","addItemToLibraryApi","addAllItemsToLibraryApi","deleteItemInLibraryApi","updateItemInLibraryApi","isUpdatingLoading","deleteAllApi","hasError","errorData","generateUniqueName","baseName","uniqueName","counter","existingNames","dataLibrary","map","refetchLocalLists","fetchLibrary","addListToDataLibrary","adjustedData","deleteListFromDataLibrary","setAllListsInDataLibrary","updateListInDataLibrary","flattend","clearLibrary","dataLibrarySlice","setDataLibraryListSelection","itemIds","clearDataLibrarySelection","dataLibrarySelectionReducer","selectDataLibrary","dataLibrarySelection","rootObjectId","WorkspaceStatus","PodConditionType","PodStatus","NO_WORKSPACE_ID","NotFound","requestedStatus","setActiveWorkspaceId","clearActiveWorkspaceId","setActiveWorkspaceStatus","setRequestedWorkspaceStatus","setActiveWorkspace","activeWorkspaceReducer","selectActiveWorkspaceId","activeWorkspace","selectActiveWorkspaceStatus","selectRequestedWorkspaceStatus","guppyApi","api","guppyAPISliceMiddleware","guppyApiSliceReducerPath","guppyApiReducer","isOperationWithField","operation","extractFilterValue","op","valueExtractorHandler","ValueExtractorHandler","handleOperation","extractEnumFilterValue","enumValueExtractorHandler","EnumValueExtractorHandler","assertNever","handler","operator","handleEquals","handleNotEquals","handleLessThan","handleLessThanOrEquals","handleGreaterThan","handleGreaterThanOrEquals","handleIntersection","handleUnion","handleNestedFilter","handleIncludes","handleExcludeIfAny","handleExcludes","isFilterEmpty","fs","ToGqlHandler","operand","in","operands","exclude","excludeifany","and","convertFilterToGqlFilter","or","child","nested","path","convertFilterSetToGqlFilter","toplevelOp","fsKeys","_arg","isFilterSet","FieldNameOverrides","COMMON_PREPOSITIONS","capitalize","s","toUpperCase","trimFirstFieldNameToTitle","fieldName","trim","source","indexOf","fieldNameToTitle","sections","split","flat","word","join","extractIndexFromFullFieldName","prependIndexToFieldName","extractFieldNameFromFullFieldName","extractIndexAndFieldNameFromFullFieldName","rest","statusEndpoint","processHistogramResponse","valueData","JSONPath","resultType","pointerData","element","idx","replace","fetchJson","useGetStatus","fetcher","useSWR","explorerApi","getAllFieldsForType","_meta","getAccessibleData","fields","accessType","fieldParts","getRawDataAndTotalCounts","sort","offset","size","accessibility","ALL","format","gqlFilter","queryLine","dataParams","dataTypeLine","typeAggsLine","processedFields","rawDataQueryStrForEachField","variables","getAggs","queryStart","histogramQueryStrForEachField","queryBody","args","_aggregation","getSubAggs","mainField","termsFields","missingFields","numericAggAsText","nestedAggFields","nestedHistogramQueryStrForEachField","getCounts","gqlFilters","_totalCount","getFieldCountSummary","getFieldsForIndex","generalGQL","splittedFieldArray","splittedField","shift","splitFieldArray","splitField","useGetArrayTypes","useGetRawDataAndTotalCountsQuery","useGetAccessibleDataQuery","useGetAllFieldsForTypeQuery","useGetAggsQuery","useLazyGetAggsQuery","useGetSubAggsQuery","useGetCountsQuery","useGetFieldCountSummaryQuery","useGetFieldsForIndexQuery","useGeneralGQLQuery","useLazyGeneralGQLQuery","flattenJson","flattenedJson","forEach","push","flatten","delimiter","conversion","config","Papa","unparse","jsonToFormat","flatJson","prepareUrl","apiUrl","prepareFetchConfig","parameters","downloadFromGuppyToBlob","onStart","onDone","onError","onAbort","signal","coreStore","fetchConfig","toString","then","jsonData","rootPath","str","convertedData","Blob","blob","catch","downloadJSONDataFromGuppy","useGetIndexFields","downloadRequestApi","downloadFromGuppy","cache","useDownloadFromGuppyMutation","rootReducer","combineReducers","drsHostnames","configureStore","getDefaultMiddleware","concat","setupListeners","dispatch","isNotDefined","isObject","isString","URL","HTTPErrorMessages","HTTPError","constructor","responseData","fetchFencePresignedURL","Headers","CoreProvider","children","Provider","authzApi","getAuthzMappings","useGetAuthzMappingsQuery","selectAuthzMapping","selectAuthzMappingData","authzMapping","mappings","HasEnoughData","limit","numEmptyKeys","k","hasOwn","metadataApi","getAggMDS","pageSize","objValues","firstValue","at","studyField","hits","pagination","getIndexAggMDS","dataFromIndexes","indexKeys","objIds","filterEmpty","gen3MDSGUID","getMDS","guidType","getTags","getData","getCrosswalkData","queryFn","arg","_queryApi","_extraOptions","fetchWithBQ","queryMultiple","result","queue","Queue","concurrency","ids","callback","toData","toPaths","dataPath","from","to","Promise","resolve","reject","start","err","useGetAggMDSQuery","useGetMDSQuery","useGetTagsQuery","useGetDataQuery","useGetCrosswalkDataQuery","useLazyGetCrosswalkDataQuery","useGetIndexAggMDSQuery","GEN3_APP_NAMESPACE","getGen3AppId","nameVersion","uuidv5","createGen3App","App","Gen3AppWrapper","props","document","title","createAppStore","options","devTools","serializableCheck","ignoredActions","FLUSH","REHYDRATE","PAUSE","PERSIST","PURGE","REGISTER","context","React","createContext","useAppSelector","createSelectorHook","useAppDispatch","createDispatchHook","useAppStore","createStoreHook","AppStore","AppContext","createGen3AppWithOwnStore","CookiesProvider","createAppApiForRTKQ","appContext","appCreateApi","buildCreateApi","coreModule","reactHooksModule","hooks","useStore","appRTKQApi","appMiddleware","appStore","appApi","graphQLWithTags","graphQLAPI","graphQL","graphQLParams","useGraphQLQuery","aiSearchApi","askQuestion","searchParams","topic","conversationId","conversation_id","documents","getAISearchStatus","getAISearchVersion","useAskQuestionMutation","useGetAISearchStatusQuery","useGetAISearchVersionQuery","WorkspaceWithTags","EmptyWorkspaceStatusResponse","conditions","containerStates","idleTimeLimit","lastActivityTime","workspaceType","workspacesApi","getWorkspaceOptions","workspace","memoryLimit","cpuLimit","getWorkspacePayModels","currentPayModel","current_pay_model","allPayModels","all_pay_models","noPayModel","getActivePayModel","setCurrentPayModel","getWorkspaceStatus","_arg0","queryApi","currentWorkspaceStatus","workspaceStatus","workspaceStatusData","Running","proxyStatus","statusError","Launching","False","launchWorkspace","responseHandler","terminateWorkspace","useGetWorkspaceOptionsQuery","useGetWorkspacePayModelsQuery","useGetWorkspaceStatusQuery","useGetActivePayModelQuery","useSetCurrentPayModelMutation","useLaunchWorkspaceMutation","useTerminateWorkspaceMutation","workspaceStatusSelector","selectWorkspaceStatusFromService","selectWorkspaceStatus","isWorkspaceActive","Terminating","isWorkspaceRunningOrStopping","resourcePathFromProjectID","projectID","program","project","resourcePath","isRootUrl","urlFragment","isProgramUrl","userHasSheepdogProgramAdmin","userAuthMapping","userHasSheepdogProjectAdmin","projectCodeFromResourcePath","listifyMethodsFromMapping","accumulator","currval","userHasDataUpload","actionIsFileUpload","resource","some","userHasMethodForServiceOnResource","service","userHasMethodForServiceOnProject","userHasMethodOnAnyProject","actionHasMethod","actionArrays","hasMethod","userHasCreateOrUpdateOnAnyProject","extractValuesFromObject","jsonPathMappings","extractObjectValue","jsonPath","extractedValues","SubmissionGraphqlQuery","submissionApi","getProjects","projects","getSubmissions","transactionList","getProjectsDetails","projectsResponse","projectQuery","projectIds","p","project_id","projectDetails","all","projectId","projectDetailsQuery","mapping","detail","find","details","code","getSubmissionGraphQL","getDictionary","useGetProjectsQuery","useGetSubmissionGraphQLQuery","useGetProjectsDetailsQuery","useLazyGetProjectsQuery","useLazyGetSubmissionGraphQLQuery","useGetSubmissionsQuery","useGetDictionaryQuery","loadingStatusApi","getSowerJobList","submitSowerJob","getSowerJobStatus","uid","getSowerOutput","getSowerServiceStatus","useGetSowerJobListQuery","useLazyGetSowerJobListQuery","useSubmitSowerJobMutation","useGetSowerJobStatusQuery","useGetSowerOutputQuery","useGetSowerServiceStatusQuery"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/constants.ts","../../src/features/fence/utils.ts","../../src/features/user/userSliceRTK.ts","../../src/features/gen3/gen3Api.ts","../../src/features/fence/fenceApi.ts","../../src/features/fence/credentialsApi.ts","../../src/features/fence/jwtApi.ts","../../src/hooks.ts","../../src/dataAccess.ts","../../src/features/user/userSlice.ts","../../src/features/user/externalLoginsSlice.ts","../../src/types/index.ts","../../src/features/gen3Apps/gen3AppRegistry.ts","../../src/features/gen3Apps/gen3AppsSlice.ts","../../src/features/drsResolver/drsHostnameSlice.ts","../../src/features/modals/modalsSlice.ts","../../src/features/cohort/cohortSlice.ts","../../src/features/dataLibrary/types.ts","../../src/features/dataLibrary/utils.ts","../../src/features/dataLibrary/dataLibraryApi.ts","../../src/features/dataLibrary/dataLibraryIndexDB.ts","../../src/features/dataLibrary/useDataLibrary.ts","../../src/features/dataLibrary/dataLibrarySelectionSlice.ts","../../src/features/workspace/types.ts","../../src/features/workspace/workspaceSlice.ts","../../src/features/guppy/guppyApi.ts","../../src/features/filters/filters.ts","../../src/features/filters/types.ts","../../src/features/filters/utils.ts","../../src/features/guppy/guppySlice.ts","../../src/features/guppy/conversion.ts","../../src/features/guppy/utils.ts","../../src/features/guppy/guppyDownloadSlice.ts","../../src/reducers.ts","../../src/store.ts","../../src/utils/ts-utils.ts","../../src/utils/url.ts","../../src/utils/fetch.ts","../../src/provider.tsx","../../src/features/authz/authzMappingSlice.ts","../../src/features/metadata/metadataSlice.ts","../../src/features/gen3Apps/constants.ts","../../src/features/gen3Apps/Gen3App.tsx","../../src/features/gen3Apps/Gen3AppRTKQ.ts","../../src/features/graphQL/graphQLSlice.ts","../../src/features/aiSearch/aiSearchSlice.ts","../../src/features/workspace/workspaceApi.ts","../../src/features/workspace/utils.ts","../../src/features/submission/authMappingUtils.ts","../../src/utils/extractvalues.ts","../../src/features/submission/submissionApi.ts","../../src/features/sower/sowerApi.ts"],"sourcesContent":["export const GEN3_COMMONS_NAME = process.env.GEN3_COMMONS_NAME || 'gen3';\nexport const GEN3_API = process.env.NEXT_PUBLIC_GEN3_API || '';\nexport const GEN3_DOMAIN = process.env.NEXT_PUBLIC_GEN3_DOMAIN || '';\nexport const GUID_PREFIX_PATTERN = /^dg.[a-zA-Z0-9]+\\//;\n\n/**\n * Service Specific Constants\n */\nexport const GEN3_GUPPY_API =\n process.env.NEXT_PUBLIC_GEN3_GUPPY_API || `${GEN3_API}/guppy`;\nexport const GEN3_MDS_API =\n process.env.NEXT_PUBLIC_GEN3_MDS_API || `${GEN3_API}/mds`;\nexport const GEN3_DOWNLOADS_ENDPOINT =\n process.env.NEXT_PUBLIC_GEN3_DOWNLOADS_ENDPOINT || 'downloads';\nexport const GEN3_FENCE_API =\n process.env.NEXT_PUBLIC_GEN3_FENCE_API || GEN3_API;\nexport const GEN3_AI_SEARCH_API =\n process.env.NEXT_PUBLIC_GEN3_AI_SEARCH_API || `${GEN3_API}/ai-search`;\nexport const GEN3_AUTHZ_API =\n process.env.NEXT_PUBLIC_GEN3_AUTHZ_API || `${GEN3_API}/authz`;\nexport const GEN3_REDIRECT_URL =\n process.env.NEXT_PUBLIC_GEN3_REDIRECT_URL || GEN3_API;\nexport const GEN3_WORKSPACE_API =\n process.env.NEXT_PUBLIC_GEN3_WORKSPACE_STATUS_API ||\n `${GEN3_API}/lw-workspace`;\nexport const GEN3_SUBMISSION_API =\n process.env.NEXT_PUBLIC_GEN3_SUBMISSION_API ||\n `${GEN3_API}/api/v0/submission`;\nexport const GEN3_WTS_API =\n process.env.NEXT_PUBLIC_GEN3_WTS_API || `${GEN3_API}/wts`;\nexport const GEN3_DATA_LIBRARY_API =\n process.env.NEXT_PUBLIC_GEN3_DATA_LIBRARY_API || `${GEN3_API}/library/lists`;\nexport const GEN3_CROSSWALK_API =\n process.env.NEXT_PUBLIC_GEN3_CROSSWALK_API || `${GEN3_API}/mds`;\nexport const GEN3_SOWER_API =\n process.env.NEXT_PUBLIC_GEN3_SOWER_API || `${GEN3_API}/jobs`;\n\nexport enum Accessibility {\n ACCESSIBLE = 'accessible',\n UNACCESSIBLE = 'unaccessible',\n ALL = 'all',\n}\n\nexport const FILE_FORMATS = {\n JSON: 'json',\n TSV: 'tsv',\n CSV: 'csv',\n};\n\nexport const FILE_DELIMITERS = {\n tsv: '\\t',\n csv: ',',\n};\n","import { FetchError, Gen3FenceResponse } from './types';\nimport { GEN3_FENCE_API } from '../../constants';\nimport { FetchRequest } from './fenceApi';\n\n/**\n * Template for fence error response dict\n * @returns: An error dict response from a RESTFUL API request\n */\nexport const buildFetchError = async <T>(\n res: Response,\n request?: T,\n): Promise<FetchError<T>> => {\n return {\n url: res.url,\n status: res.status,\n statusText: res.statusText,\n text: await res.text(),\n request: request,\n };\n};\n/**\n * Template for a standard fence request\n * @returns: response data\n */\nexport const fetchFence = async <T>({\n endpoint,\n headers,\n body = {},\n method = 'GET',\n isJSON = true,\n}: FetchRequest): Promise<Gen3FenceResponse<T>> => {\n const res = await fetch(`${GEN3_FENCE_API}${endpoint}`, {\n method: method,\n headers: headers,\n body: 'POST' === method ? JSON.stringify(body) : null,\n });\n\n if (res.ok)\n return {\n data: isJSON ? await res.json() : await res.text(),\n status: res.status,\n };\n\n throw await buildFetchError(res, {\n endpoint,\n method,\n headers,\n body,\n });\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { fetchFence } from '../fence/utils';\nimport { type Gen3FenceResponse } from '../fence/types';\nimport { Gen3User, LoginStatus } from './types';\nimport { CoreState } from '../../reducers';\nimport { getCookie } from 'cookies-next';\nimport { QueryStatus } from '@reduxjs/toolkit/query';\nimport { createApi } from '@reduxjs/toolkit/query/react';\n\ninterface StatusWithCSRFTokenResponse {\n csrf: string;\n message?: string;\n}\n\nexport interface CSRFToken {\n readonly csrfToken: string;\n}\n\nexport interface UserAuthResponse {\n readonly data: Gen3User;\n readonly loginStatus: LoginStatus;\n}\n\nexport const userAuthApi = createApi({\n reducerPath: 'userAuthApi',\n refetchOnMountOrArgChange: 1800,\n refetchOnReconnect: true,\n baseQuery: async ({ endpoint }, { getState }) => {\n let results;\n const csrfToken = selectCSRFToken(getState() as CoreState);\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n accessToken = getCookie('credentials_token');\n }\n const headers: Record<string, string> = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...(csrfToken ? { 'X-CSRF-Token': csrfToken } : {}),\n ...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}),\n credentials: 'include',\n };\n\n try {\n results = await fetchFence({ endpoint, headers });\n } catch (e) {\n /*\n Because an \"error\" response is valid for the auth requests we don't want to\n put the request in an error state, or it will attempt the request over and over again\n */\n return { data: {} };\n }\n\n return { data: results };\n },\n endpoints: (builder) => ({\n fetchUserDetails: builder.query<UserAuthResponse, void>({\n query: () => ({ endpoint: '/user/user' }),\n transformResponse(response: Gen3FenceResponse<Gen3User>) {\n return {\n data: response.data,\n // TODO: check if this is the correct status code\n\n loginStatus:\n response.status === 200 && response.data?.username\n ? 'authenticated'\n : 'unauthenticated',\n };\n },\n }),\n getCSRF: builder.query<CSRFToken, void>({\n query: () => ({ endpoint: '/_status' }),\n transformResponse: (\n response: Gen3FenceResponse<StatusWithCSRFTokenResponse>,\n ): CSRFToken => {\n return { csrfToken: response?.data?.csrf ?? '' };\n },\n }),\n }),\n});\n\nconst EMPTY_USER: Gen3User = {\n username: undefined,\n};\n\nexport const {\n useFetchUserDetailsQuery,\n useLazyFetchUserDetailsQuery,\n useGetCSRFQuery,\n} = userAuthApi;\nexport const userAuthApiMiddleware = userAuthApi.middleware;\nexport const userAuthApiReducerPath = userAuthApi.reducerPath;\nexport const userAuthApiReducer = userAuthApi.reducer;\n\nexport const selectUserDetailsFromState =\n userAuthApi.endpoints.fetchUserDetails.select();\n\nexport const selectUserDetails = createSelector(\n selectUserDetailsFromState,\n (userDetails) => userDetails?.data?.data ?? EMPTY_USER,\n);\n\nexport const selectUserAuthStatus = createSelector(\n selectUserDetailsFromState,\n (userLoginState) =>\n userLoginState.status === QueryStatus.pending\n ? ('pending' as LoginStatus)\n : userLoginState.status === QueryStatus.uninitialized\n ? ('not present' as LoginStatus)\n : (userLoginState?.data?.loginStatus ??\n ('unauthenticated' as LoginStatus)),\n);\n\nexport const selectCSRFTokenData = userAuthApi.endpoints.getCSRF.select();\n\nconst passThroughTheState = (state: CoreState) => state.gen3Services;\n\nexport const selectCSRFToken = createSelector(\n [selectCSRFTokenData, passThroughTheState],\n (state) => state?.data?.csrfToken,\n);\n\nexport const selectHeadersWithCSRFToken = createSelector(\n [selectCSRFToken, passThroughTheState],\n (csrfToken) => ({\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...(csrfToken && { 'X-CSRF-Token': csrfToken }),\n }),\n);\n","import { Middleware, Reducer } from '@reduxjs/toolkit';\nimport { fetchBaseQuery, createApi } from '@reduxjs/toolkit/query/react';\nimport { GEN3_API } from '../../constants';\nimport { CoreState } from '../../reducers';\nimport { selectCSRFToken } from '../user/userSliceRTK';\nimport { getCookie } from 'cookies-next';\n\n/**\n * Creates a base class core API for building other API endpoints on top of.\n * @param reducerPath - The root key name that the other slices will be derived from\n * @param baseQuery: - The template query which the slices will addon to\n * @param endpoints - Base API endpoints that should exist in every slice\n * @returns: The generated base API\n */\nexport const gen3Api = createApi({\n reducerPath: 'gen3Services',\n baseQuery: fetchBaseQuery({\n baseUrl: `${GEN3_API}`,\n prepareHeaders: (headers, { getState }) => {\n const csrfToken = selectCSRFToken(getState() as CoreState);\n headers.set('Content-Type', 'application/json');\n\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n // NOTE: This cookie can only be accessed from the client side\n // in development mode. Otherwise, the cookie is set as httpOnly\n accessToken = getCookie('credentials_token');\n }\n if (csrfToken) headers.set('X-CSRF-Token', csrfToken);\n if (accessToken) headers.set('Authorization', `Bearer ${accessToken}`);\n return headers;\n },\n }),\n endpoints: () => ({}),\n});\n\nexport const gen3ServicesReducer: Reducer = gen3Api.reducer as Reducer;\nexport const gen3ServicesReducerMiddleware = gen3Api.middleware as Middleware;\n","import { gen3Api } from '../gen3/gen3Api';\nimport { GEN3_FENCE_API, GEN3_REDIRECT_URL } from '../../constants';\nimport { fetchFence } from './utils';\n\nexport interface NameUrl {\n readonly name: string;\n readonly url: string;\n}\n\nexport interface Gen3LoginProvider {\n readonly desc?: string;\n readonly id: string;\n readonly idp: string;\n readonly name: string;\n readonly secondary: boolean;\n readonly url: string;\n readonly urls: Array<NameUrl>;\n}\n\nexport interface Gen3FenceLoginProviders {\n readonly default_provider: Gen3LoginProvider;\n readonly providers: Array<Gen3LoginProvider>;\n}\n\n/**\n * Creates a fence API endpoint for handling login processes\n * @param endpoints - defined endpoint query for logging in\n * @returns: The generated fence login API slice\n */\nexport const loginProvidersApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getLoginProviders: builder.query<Gen3FenceLoginProviders, void>({\n query: () => `${GEN3_FENCE_API}/user/login`,\n }),\n getDownload: builder.query<Gen3FenceLoginProviders, string>({\n query: (guid) => `${GEN3_FENCE_API}/user/data/download/${guid}`,\n }),\n }),\n});\n\nexport const {\n useGetLoginProvidersQuery,\n useGetDownloadQuery,\n useLazyGetDownloadQuery,\n} = loginProvidersApi;\n\nexport interface FetchRequest {\n readonly endpoint: string;\n readonly method?: 'GET' | 'POST';\n readonly body?: object;\n readonly headers?: Record<string, string>;\n readonly isJSON?: boolean;\n}\n\n/**\n * Logout from fence\n */\n\nexport const logoutFence = async (redirect = '/') =>\n await fetchFence({\n endpoint: `${GEN3_FENCE_API}/user/logout?next=${GEN3_REDIRECT_URL}${redirect}`,\n method: 'GET',\n });\n","import { gen3Api } from '../gen3';\nimport { GEN3_FENCE_API } from '../../constants';\n\nexport interface APIKey {\n readonly jti: string;\n readonly exp: number;\n}\nexport interface Gen3FenceCredentials {\n readonly jtis: ReadonlyArray<APIKey>;\n}\n\n// extending the gen3API to add a tag to the endpoints\nconst credentialsWithTags = gen3Api.enhanceEndpoints({\n addTagTypes: ['Credentials'],\n});\n\ninterface DeleteCredentialParams {\n readonly csrfToken?: string;\n readonly id: string;\n}\n\ninterface AuthorizeFromCredentialsParams {\n api_key: string;\n key_id: string;\n}\nexport interface AuthTokenResponse {\n access_token: string;\n}\n\n/**\n * Adds a credentialsApi into the base gen3Api\n * @endpoints Includes get, add, and remove credential operations\n * @see https://github.com/uc-cdis/fence/blob/master/openapis/swagger.yaml#L972-L1033\n * @param getCredentials - List all the API keys for the current user\n * @param addNewCredential - Get a new API key for the current user\n * @param removeCredential - Delete API access key with given ID for current user\n * @returns: A fence credential API for manipulating user credentials\n */\nexport const credentialsApi = credentialsWithTags.injectEndpoints({\n endpoints: (builder) => ({\n getCredentials: builder.query<ReadonlyArray<APIKey>, void>({\n query: () => `${GEN3_FENCE_API}/user/credentials/api`,\n transformResponse: (\n response: Gen3FenceCredentials,\n ): ReadonlyArray<APIKey> => response['jtis'], // the response is a JSON object with a single key,\n // \"jtis\", which is an array of API keys\n // no need to transform the response, since the API returns the correct format\n providesTags: ['Credentials'],\n }),\n addNewCredential: builder.mutation({\n query: (csrfToken: string) => ({\n url: `${GEN3_FENCE_API}/user/credentials/api`,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-csrf-token': csrfToken,\n },\n body: {\n scope: ['user', 'data'],\n },\n }),\n invalidatesTags: ['Credentials'],\n }),\n removeCredential: builder.mutation<void, DeleteCredentialParams>({\n query: ({ csrfToken, id }) => ({\n url: `${GEN3_FENCE_API}/user/credentials/api/${id}`,\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n ...(csrfToken && { 'x-csrf-token': csrfToken }),\n },\n }),\n invalidatesTags: ['Credentials'],\n }),\n authorizeFromCredentials: builder.mutation<AuthTokenResponse, AuthorizeFromCredentialsParams>({\n query: (params) => ({\n url: `${GEN3_FENCE_API}/user/credentials/api/access_token`,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: {\n api_key: params.api_key,\n key_id: params.key_id,\n },\n }),\n }),\n })\n});\n\nexport const {\n useGetCredentialsQuery,\n useAddNewCredentialMutation,\n useRemoveCredentialMutation,\n useAuthorizeFromCredentialsMutation\n} = credentialsApi;\n","import { gen3Api } from '../gen3';\n\nexport interface JWTKeys {\n keys: ReadonlyArray<string[2]>\n}\n\n// extending the gen3API to add a tag to the endpoints\nconst credentialsWithTags = gen3Api.enhanceEndpoints({\n addTagTypes: ['fenceJWT'],\n});\n\n/**\n * A fence API for getting the public keys which can be used to validate\n * JWTs issued and signed by fence\n * @returns: Fence public keys\n */\nexport const jwtApi = credentialsWithTags.injectEndpoints({\n endpoints: (builder) => ({\n getJWKKeys: builder.query<ReadonlyArray<JWTKeys>, void>({\n query: () => 'user/jwt/keys',\n providesTags: ['fenceJWT'],\n }),\n }),\n});\n\nexport const {\n useGetJWKKeysQuery,\n} = jwtApi;\n","import { useDispatch, useSelector } from 'react-redux';\nimport { CoreDispatch } from './store';\nimport { CoreState } from './reducers';\n\n// From here down is react-related code. If we wanted to create a UI-agnotic core,\n// we could need to move the following code and the provider into a new workspace,\n// such as core-react.\n\n/**\n * The initial context is never used in practice. A little casting voodoo to satisfy TS.\n *\n * Note: Should the action type be AnyAction (from redux) or PayloadAction (from redux-toolkit)?\n * If we are creating all of our actions through RTK, then PayloadAction might be the\n * correct opinionated type.\n */\n\nexport const useCoreSelector = useSelector.withTypes<CoreState>();\nexport const useCoreDispatch = useDispatch.withTypes<CoreDispatch>();\n","import { useEffect, useRef } from 'react';\nimport { useCoreDispatch, useCoreSelector } from './hooks';\nimport { CoreState } from './reducers';\nimport { isEqual } from 'lodash';\n\nexport type UnknownJson = Record<string, unknown>;\n\nexport type DataStatus = 'uninitialized' | 'pending' | 'fulfilled' | 'rejected';\n\nexport interface Gen3Response<H = UnknownJson> {\n readonly data: H;\n readonly warnings?: Record<string, string>;\n readonly errors?: Record<string, string>;\n}\n\nexport interface UseCoreDataResponse<T> {\n readonly data?: T;\n readonly error?: string;\n readonly isUninitialized: boolean;\n readonly isFetching: boolean;\n readonly isSuccess: boolean;\n readonly isError: boolean;\n}\n\nexport interface CoreDataSelectorResponse<T, S = DataStatus> {\n readonly data?: T;\n readonly status: S;\n readonly error?: string;\n}\n\nexport interface CoreDataSelector<T> {\n (state: CoreState): CoreDataSelectorResponse<T>;\n}\n\nexport interface FetchDataActionCreator<P, A> {\n (...params: P[]): A;\n}\n\nexport interface UseCoreDataHook<P, T> {\n (...params: P[]): UseCoreDataResponse<T>;\n}\n\nexport const usePrevious = <T>(value: T): T | undefined => {\n const ref = useRef<T>();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nexport const createUseCoreDataHook = <P, A, T>(\n fetchDataActionCreator: FetchDataActionCreator<P, A>,\n dataSelector: CoreDataSelector<T>,\n): UseCoreDataHook<P, T> => {\n return (...params: P[]) => {\n const coreDispatch = useCoreDispatch();\n const { data, status, error } = useCoreSelector(dataSelector);\n const action = fetchDataActionCreator(...params);\n const prevParams = usePrevious<P[]>(params);\n\n useEffect(() => {\n if (status === 'uninitialized' || !isEqual(prevParams, params)) {\n // createDispatchHook types forces the input to AnyAction, which is\n // not compatible with thunk actions. hence, the `as any` cast. ;(\n coreDispatch(action as any); // eslint-disable-line\n }\n }, [status, coreDispatch, action, params, prevParams]);\n\n return {\n data,\n error,\n isUninitialized: status === 'uninitialized',\n isFetching: status === 'pending',\n isSuccess: status === 'fulfilled',\n isError: status === 'rejected',\n };\n };\n};\n\nexport interface CoreDataValueSelector<T> {\n (state: CoreState): T;\n}\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport { fetchFence, Gen3FenceResponse } from '../fence';\nimport { CoreDispatch } from '../../store';\nimport { CoreState } from '../../reducers';\nimport {\n CoreDataSelectorResponse,\n createUseCoreDataHook,\n DataStatus,\n} from '../../dataAccess';\nimport { useCoreDispatch, useCoreSelector } from '../../hooks';\nimport { useEffect } from 'react';\nimport { Gen3User, LoginStatus } from './types';\nimport { getCookie } from 'cookies-next';\nimport { selectCSRFToken } from './userSliceRTK';\n\nexport interface Gen3UserLoginResponse<T> {\n readonly data?: T;\n readonly error?: string;\n readonly loginStatus: LoginStatus;\n readonly isUninitialized: boolean;\n readonly isFetching: boolean;\n readonly isSuccess: boolean;\n readonly isError: boolean;\n}\n\n/**\n * Creates an async thunk for fetching user permissions details from fence\n * @see https://redux-toolkit.js.org/api/createAsyncThunk\n * @returns: A fence response dict containing user details\n */\nexport const fetchUserState = createAsyncThunk<\n Gen3FenceResponse<Gen3User>,\n void,\n { dispatch: CoreDispatch; state: CoreState }\n>('fence/user/user', async (_, meta) => {\n // Get an access token from a cookie if in development mode\n const csrfToken = selectCSRFToken(meta.getState());\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n accessToken = getCookie('credentials_token');\n }\n\n return await fetchFence({\n endpoint: '/user/user',\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...(csrfToken ? { 'X-CSRF-Token': csrfToken } : {}),\n credentials: 'include',\n ...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}),\n },\n });\n});\n\nexport const isAuthenticated = (loginStatus: LoginStatus): boolean =>\n loginStatus === 'authenticated';\n\nexport const isPending = (loginStatus: LoginStatus): boolean =>\n loginStatus === 'pending';\n\nexport interface Gen3UserState {\n readonly data?: Gen3User;\n readonly status: DataStatus;\n readonly loginStatus: LoginStatus;\n readonly error?: string;\n}\n\nconst initialState: Gen3UserState = {\n status: 'uninitialized',\n loginStatus: 'unauthenticated',\n error: undefined,\n};\n\n/**\n * Wraps a slice on top of fetchUserState async thunk to keep track of\n * query state. authenticated/not-authenticated vs. ejected/fulfilled/pending\n * @returns: status messages wrapped around fetchUserState response dict\n */\nconst slice = createSlice({\n name: 'fence/user',\n initialState,\n reducers: {\n resetUserState: () => initialState,\n },\n extraReducers: (builder) => {\n builder\n .addCase(fetchUserState.fulfilled, (_, action) => {\n const response = action.payload;\n if (response.status !== 200) {\n return {\n status: 'rejected',\n loginStatus: 'unauthenticated',\n };\n }\n\n return {\n data: { ...response.data },\n status: 'fulfilled',\n loginStatus: 'authenticated',\n };\n })\n .addCase(fetchUserState.pending, () => {\n return { status: 'pending', loginStatus: 'unauthenticated' };\n })\n .addCase(fetchUserState.rejected, () => {\n return { status: 'rejected', loginStatus: 'unauthenticated' };\n });\n },\n});\n\nexport const userReducer = slice.reducer;\n\nexport const { resetUserState } = slice.actions;\n\nexport interface Gen3UserSelectorResponse<T>\n extends CoreDataSelectorResponse<T> {\n readonly loginStatus: LoginStatus;\n}\n\nexport const selectUserData = (\n state: CoreState,\n): Gen3UserSelectorResponse<Gen3User> => {\n return state.user;\n};\n\nexport const selectUser = (state: CoreState): Gen3UserState => state.user;\n\nexport const selectUserLoginStatus = (state: CoreState): LoginStatus =>\n state.user.loginStatus;\n\nexport const useUser = createUseCoreDataHook(fetchUserState, selectUserData);\n\nexport const useIsUserLoggedIn = (): boolean => {\n return useCoreSelector((state) =>\n isAuthenticated(selectUserLoginStatus(state)),\n );\n};\n\n/**\n * Hook to return get the authenticated state of the user and if logged in,\n * the user's profile and access api.\n * Note that if fetchUserState gets called, the user's session is renewed.\n */\nexport const useUserAuth = (renew = false): Gen3UserLoginResponse<Gen3User> => {\n const coreDispatch = useCoreDispatch();\n const { data, status, loginStatus, error } = useCoreSelector(selectUserData);\n\n useEffect(() => {\n if (status === 'uninitialized' || renew) {\n // TODO: need to determine what other states require dispatch\n coreDispatch(fetchUserState());\n }\n }, [status, coreDispatch, renew]);\n\n return {\n data: data,\n error,\n loginStatus,\n isUninitialized: status === 'uninitialized',\n isFetching: status === 'pending',\n isSuccess: status === 'fulfilled',\n isError: status === 'rejected',\n };\n};\n","import { gen3Api } from '../gen3';\nimport { ExternalProvider } from './types';\nimport { GEN3_WTS_API } from '../../constants';\n\nexport interface ExternalProviderResponse {\n providers: ExternalProvider[];\n}\n\n/**\n * @description Creates a externalLoginApi for listing the configured identity providers\n * in workspace token service. Includes user token expiration time.\n * @see https://github.com/uc-cdis/workspace-token-service/tree/master\n */\nexport const externalLoginApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getExternalLogins: builder.query<ExternalProviderResponse, void>({\n query: () => ({\n url: `${GEN3_WTS_API}/external_oidc/`,\n }),\n }),\n isExternalConnected: builder.query<boolean, string>({\n query: (idp: string) => ({\n url: `${GEN3_WTS_API}/oauth2/connected?idp=${idp}`,\n }),\n transformResponse: () => {\n return true; // if success then connected is true\n },\n }),\n }),\n});\n\nexport const {\n useGetExternalLoginsQuery,\n useLazyGetExternalLoginsQuery,\n useLazyIsExternalConnectedQuery,\n useIsExternalConnectedQuery,\n} = externalLoginApi;\n","import { FetchBaseQueryError } from '@reduxjs/toolkit/query';\n\nexport type JSONValue = string | number | boolean | JSONValue[] | JSONObject;\n\nexport type JSONObject = {\n [k: string]: JSONValue;\n};\nexport type JSONArray = Array<JSONValue>;\n\n// type guard functions\nexport const isHistogramRangeData = (key: any): key is [number, number] => {\n return (\n Array.isArray(key) &&\n key.length === 2 &&\n key.every((item) => typeof item === 'number')\n );\n};\n\nexport const isJSONObject = (data: any): data is JSONObject => {\n return typeof data === 'object' && data !== null && !Array.isArray(data);\n};\n\nexport const isJSONValue = (data: any): data is JSONValue => {\n return (\n typeof data === 'string' ||\n typeof data === 'number' ||\n typeof data === 'boolean' ||\n (Array.isArray(data) && data.every(isJSONValue)) ||\n isJSONObject(data)\n );\n};\n\nexport const isJSONValueArray = (data: JSONValue): data is JSONArray => {\n return Array.isArray(data) && data.every(isJSONValue);\n};\n\nexport interface HistogramData {\n key: string | [number, number];\n count: number;\n}\n\nexport type HistogramDataArray = Array<HistogramData>;\n\nconst isValidObject = (input: any): boolean =>\n typeof input === 'object' && input !== null;\n\nexport const isHistogramData = (data: any): data is HistogramData => {\n return isValidObject(data) && 'key' in data && 'count' in data;\n};\n\nexport const isHistogramDataArray = (input: any): input is HistogramData[] => {\n if (!isValidObject(input) || !Array.isArray(input.histogram)) {\n return false;\n }\n return input.histogram.every(isHistogramData);\n};\n\nexport interface HistogramDataCollection {\n histogram: HistogramDataArray;\n}\n\nexport const isHistogramDataCollection = (\n obj: any,\n): obj is HistogramDataCollection => {\n return (\n isValidObject(obj) && 'histogram' in obj && isHistogramData(obj.histogram)\n );\n};\n\nexport interface GuppyAggregationData {\n [key: string]: HistogramDataCollection;\n}\n\n// Type guard function for GuppyAggregationData interface\nexport const isGuppyAggregationData = (\n obj: any,\n): obj is GuppyAggregationData => {\n if (!isValidObject(obj)) return false;\n\n for (const key in obj) {\n if (!isHistogramDataCollection(obj[key])) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const isHistogramDataAnEnum = (data: unknown): data is HistogramData => {\n return (\n typeof data === 'object' &&\n data !== null &&\n 'key' in data &&\n 'count' in data &&\n typeof data.key === 'string' &&\n typeof data.count === 'number'\n );\n};\n\nexport const isHistogramDataAArray = (\n data: any,\n): data is HistogramDataArray => {\n return Array.isArray(data) && data.every(isHistogramData);\n};\n\nexport const isHistogramDataArrayAnEnum = (data: any): boolean => {\n return Array.isArray(data) && data.every(isHistogramDataAnEnum);\n};\n\nexport const isHistogramDataArrayARange = (data: any): boolean => {\n return (\n Array.isArray(data) && data.every((item) => isHistogramRangeData(item.key))\n );\n};\n\n/**\n * Type predicate to narrow an unknown error to `FetchBaseQueryError`\n */\nexport function isFetchBaseQueryError(\n error: unknown,\n): error is FetchBaseQueryError {\n return typeof error === 'object' && error != null && 'status' in error;\n}\n\n/**\n * Type predicate to narrow an unknown error to an object with a string 'message' property\n */\nexport function isErrorWithMessage(\n error: unknown,\n): error is { message: string } {\n return (\n typeof error === 'object' &&\n error != null &&\n 'message' in error &&\n typeof (error as any).message === 'string'\n );\n}\n\ninterface ParsingError {\n status: 'PARSING_ERROR';\n originalStatus: number;\n data: string;\n error: string;\n}\n\ninterface HttpError {\n status: number;\n data: unknown;\n}\n\nexport function isHttpStatusError(error: unknown): error is HttpError {\n return (\n typeof error === 'object' &&\n error != null &&\n 'status' in error &&\n typeof error.status === 'number'\n );\n}\n\n/**\n * Type predicate to narrow an unknown error to an object with a string 'message' property\n */\nexport function isFetchParseError(error: unknown): error is ParsingError {\n return (\n typeof error === 'object' &&\n error != null &&\n 'originalStatus' in error &&\n 'status' in error &&\n error['status'] === 'PARSING_ERROR'\n );\n}\n\nexport type AggregationsData = Record<string, HistogramDataArray>;\n","/**\n * A registry for the Gen3 Apps.\n */\nexport const REGISTRY: Record<string, React.ReactNode> = {};\n\nexport const registerGen3App = (id: string, gen3App: React.ReactNode): void => {\n REGISTRY[id] = gen3App;\n};\n\nexport const lookupGen3App = (id: string): React.ReactNode => {\n return REGISTRY[id];\n};\n\nexport const computeGen3AppId = (name: string, version: string): string => {\n return `${name}@${version}`;\n};\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport React from 'react';\nimport { CoreState } from '../../reducers';\nimport { lookupGen3App } from './gen3AppRegistry';\n\nexport interface Gen3AppsState {\n readonly gen3Apps: Readonly<Record<string, Gen3AppMetadata>>;\n readonly currentAppId?: string;\n}\n\nexport interface Gen3AppMetadata {\n readonly id: string;\n readonly name: string;\n readonly version: string;\n readonly requiredEntityTypes: ReadonlyArray<EntityType>;\n}\n\nexport type EntityType = 'case' | 'gene' | 'ssm' | 'cnv' | 'file';\n\nconst initialState: Gen3AppsState = {\n gen3Apps: {},\n};\n\nconst slice = createSlice({\n name: 'gen3Apps',\n initialState,\n reducers: {\n addGen3AppMetadata: (state, action: PayloadAction<Gen3AppMetadata>) => {\n const { name, requiredEntityTypes } = action.payload;\n\n state.gen3Apps[name] = {\n ...action.payload,\n // need to turn a ReadonlyArray into a mutable array for immer's WritableDraft\n requiredEntityTypes: [...requiredEntityTypes],\n };\n },\n },\n});\n\nexport const gen3AppReducer = slice.reducer;\n\nexport const { addGen3AppMetadata } = slice.actions;\n\nexport const selectGen3AppIds = (state: CoreState): ReadonlyArray<string> =>\n Object.keys(state.gen3Apps.gen3Apps);\n\nexport const selectAllGen3AppMetadata = (\n state: CoreState,\n): ReadonlyArray<Gen3AppMetadata> => Object.values(state.gen3Apps.gen3Apps);\n\nexport const selectGen3AppMetadataByName = (\n state: CoreState,\n appName: string,\n): Gen3AppMetadata => state.gen3Apps.gen3Apps[appName];\n\nexport const selectGen3AppByName = (appName: string): React.ReactNode =>\n lookupGen3App(appName); // TODO: memoize this selector\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { CoreState } from '../../reducers';\n\nexport type DRSHostnameMap = Record<string, string>;\n\nconst initialState : Record<string, string> = {};\n\n// TODO: document what this does\nconst slice = createSlice({\n name: 'drsResolver',\n initialState,\n reducers: {\n setDRSHostnames: (_state, action: PayloadAction<DRSHostnameMap>) => {\n return action.payload;\n },\n },\n});\n\nexport const drsHostnamesReducer = slice.reducer;\n\nexport const { setDRSHostnames } = slice.actions;\n\nexport const drsHostnamesSelector = (id:string, state: CoreState) =>\n state.drsHostnames?.[id];\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { CoreState } from '../../reducers';\n\n/**\n * Defines the modals slice of the Redux store.\n * This slice is used to control the display of standard Gen3 modals.\n * and can be extended to add custom modals by representing them as strings.\n */\nexport enum Modals {\n 'FirstTimeModal' = 'FirstTimeModal',\n 'SessionExpireModal' = 'SessionExpireModal',\n 'NoAccessModal' = 'NoAccessModal',\n 'CreateCredentialsAPIKeyModal' = 'CreateCredentialsAPIKeyModal',\n 'GeneralErrorModal' = 'GeneralErrorModal',\n}\n\n// Type for the current modal in the store\n// This can be a standard Gen3 modal, a custom modal (via string), or null\ntype CurrentModal = Modals | string | null;\n\nexport interface ModalState {\n currentModal: CurrentModal;\n message?: string;\n}\n\nconst initialState: ModalState = {\n currentModal: null,\n};\n\n//Creates a modal slice for tracking showModal and hideModal state.\nconst slice = createSlice({\n name: 'modals',\n initialState,\n reducers: {\n showModal: (\n state: ModalState,\n action: PayloadAction<{ modal: Modals; message?: string }>,\n ) => {\n state.currentModal = action.payload.modal;\n state.message = action.payload.message;\n return state;\n },\n hideModal: (state: ModalState) => {\n state.currentModal = null;\n return state;\n },\n },\n});\n\nexport const modalReducer = slice.reducer;\nexport const { showModal, hideModal } = slice.actions;\n\nexport const selectCurrentModal = (state: CoreState): CurrentModal =>\n state.modals.currentModal;\n\nexport const selectCurrentMessage = (state: CoreState): string | undefined =>\n state.modals.message;\n","import { createSlice, Draft, type PayloadAction } from '@reduxjs/toolkit';\nimport type { CoreState } from '../../reducers';\nimport { Operation, FilterSet, IndexedFilterSet } from '../filters';\n\nexport interface Cohort {\n readonly id: string;\n readonly name: string;\n readonly filters: IndexedFilterSet; // maps of index to filter set\n readonly modified?: boolean; // flag which is set to true if modified and unsaved\n readonly modified_datetime: string; // last time cohort was modified\n}\n\nexport interface CohortState {\n cohort: Cohort;\n}\n\nconst initialCohortState: CohortState = {\n cohort: {\n id: 'default',\n name: 'Filters',\n filters: {},\n modified_datetime: new Date().toISOString(),\n },\n};\n\ninterface UpdateFilterParams {\n index: string;\n field: string;\n filter: Operation;\n}\n\ninterface SetFilterParams {\n index: string;\n filters: FilterSet;\n}\n\ninterface RemoveFilterParams {\n index: string;\n field: string;\n}\n\ninterface ClearAllFilterParams {\n index: string;\n}\n\n// TODO: start using this adapter\n/*\nconst cohortsAdapter = createEntityAdapter<Cohort>({\n sortComparer: (a, b) => {\n if (a.modified_datetime <= b.modified_datetime) return 1;\n else return -1;\n },\n});\n*/\n\n/**\n * Redux slice for cohort filters\n */\n\nexport const cohortSlice = createSlice({\n name: 'cohort',\n initialState: initialCohortState,\n reducers: {\n // adds a filter to the cohort filter set at the given index\n updateCohortFilter: (\n state: Draft<CohortState>,\n action: PayloadAction<UpdateFilterParams>,\n ) => {\n const { index, field, filter } = action.payload;\n return {\n cohort: {\n ...state.cohort,\n filters: {\n ...state.cohort.filters,\n [index]: {\n mode: state.cohort.filters?.[index]?.mode ?? 'and',\n root: {\n ...(state.cohort.filters?.[index]?.root ?? {}),\n [field]: filter,\n },\n },\n },\n },\n };\n },\n setCohortFilter: (\n state: Draft<CohortState>,\n action: PayloadAction<SetFilterParams>,\n ) => {\n const { index, filters } = action.payload;\n return {\n cohort: {\n ...state.cohort,\n filters: {\n ...state.cohort.filters,\n [index]: filters,\n },\n },\n };\n },\n // removes a filter to the cohort filter set at the given index\n removeCohortFilter: (\n state: Draft<CohortState>,\n action: PayloadAction<RemoveFilterParams>,\n ) => {\n const { index, field } = action.payload;\n const filters = state.cohort?.filters?.[index]?.root;\n if (!filters) {\n return;\n }\n const { [field]: _a, ...updated } = filters;\n return {\n cohort: {\n ...state.cohort,\n filters: {\n ...state.cohort.filters,\n [index]: {\n mode: state.cohort.filters[index].mode,\n root: updated,\n },\n },\n },\n };\n },\n // removes all filters from the cohort filter set at the given index\n clearCohortFilters: (\n state: Draft<CohortState>,\n action: PayloadAction<ClearAllFilterParams>,\n ) => {\n const { index } = action.payload;\n return {\n cohort: {\n ...state.cohort,\n filters: {\n ...state.cohort.filters,\n [index]: {\n // empty filter set\n mode: 'and',\n root: {},\n } as FilterSet,\n },\n },\n };\n },\n },\n});\n\n// Filter actions: addFilter, removeFilter, updateFilter\nexport const {\n updateCohortFilter,\n setCohortFilter,\n removeCohortFilter,\n clearCohortFilters,\n} = cohortSlice.actions;\n\nexport const selectCohortFilters = (state: CoreState): IndexedFilterSet =>\n state.cohorts.cohort.filters;\n\nexport const selectCurrentCohortId = (state: CoreState): string =>\n state.cohorts.cohort.id;\n\nexport const selectCurrentCohort = (state: CoreState): Cohort =>\n state.cohorts.cohort;\n\nexport const selectCurrentCohortName = (state: CoreState): string =>\n state.cohorts.cohort.name;\n\n/**\n * Select a filter by its name from the current cohort. If the filter is not found\n * returns undefined.\n * @param state - Core\n * @param index which cohort index to select from\n * @param name name of the filter to select\n */\nexport const selectIndexedFilterByName = (\n state: CoreState,\n index: string,\n name: string,\n): Operation | undefined => {\n return state.cohorts.cohort.filters[index]?.root[name];\n};\n\nconst EmptyFilterSet: FilterSet = { mode: 'and', root: {} };\n/**\n * Select a filter from the index.\n * returns undefined.\n * @param state - Core\n * @param index which cohort index to select from\n */\nexport const selectIndexFilters = (\n state: CoreState,\n index: string,\n): FilterSet => {\n return state.cohorts.cohort.filters?.[index] ?? EmptyFilterSet; // TODO: check if this is undefined\n};\n\nexport const cohortReducer = cohortSlice.reducer;\n","import { JSONObject } from '../../types';\n\nexport interface AuthZAccess {\n version: number;\n authz: string[];\n}\n\nexport type ItemValue =\n | string\n | number\n | undefined\n | Record<string, any>\n | boolean;\n\nexport interface Items {\n [k: string]: ItemValue;\n}\n\nexport interface ListItem {\n itemType: 'Data' | 'AdditionalData' | 'Gen3GraphQL';\n [k: string]: ItemValue;\n}\n\n/**\n * A Data item: at the minimum it will have a guid and an item type\n */\n\nexport interface FileItem extends ListItem {\n id: string; // TODO: remove id or guid\n guid: string;\n name?: string;\n description?: string;\n type?: string;\n size?: string;\n itemType: 'Data';\n datasetGuid: string;\n}\n\nexport interface CohortItem extends ListItem {\n itemType: 'Gen3GraphQL';\n data: JSONObject;\n name: string;\n schemaVersion: string;\n id: string;\n index: string;\n}\n\nexport interface AdditionalDataItem extends ListItem {\n description?: string;\n documentationUrl?: string;\n url?: string;\n itemType: 'AdditionalData';\n name: string;\n datasetGuid: string;\n}\n\nexport const isFileItem = (item: ListItem): item is FileItem => {\n return item && 'guid' in item;\n};\n\nexport const isAdditionalDataItem = (item: any): item is AdditionalDataItem => {\n return (item as AdditionalDataItem).itemType === 'AdditionalData'; // TODO resolve this with type from the api\n};\n\n// Type guard for CohortItem\nexport const isCohortItem = (item: any): item is CohortItem => {\n return (\n item &&\n 'data' in item &&\n 'schemaVersion' in item &&\n item.itemType === 'Gen3GraphQL'\n );\n};\n\nexport type DataSetItems = Record<string, FileItem | AdditionalDataItem>;\n\n/**\n * Represents a DataSet which is created by grouping File\n * objects with the same dataset_guids\n */\nexport interface DataListEntry {\n name?: string; // TODO: figure out how to set name\n items: DataSetItems;\n}\n\nexport interface RegisteredDataListEntry extends DataListEntry {\n id: string;\n}\n\nexport type FilesOrCohort = Record<\n string,\n RegisteredDataListEntry | CohortItem\n>;\n\nexport type LibraryAPIItems = Record<\n string,\n FileItem | AdditionalDataItem | CohortItem\n>;\n\nexport interface DatalistUpdate {\n name: string;\n items: LibraryAPIItems;\n}\n\nexport interface Datalist {\n id: string;\n createdTime: string;\n updatedTime: string;\n authz: AuthZAccess;\n version: number;\n name: string;\n items: FilesOrCohort;\n}\n\nexport type DataLibrary = Record<string, Datalist>;\n\nexport type DataLibraryItems = {\n lists: DataLibrary;\n};\n\nexport type DataLibraryAPIResponse = {\n lists: Record<string, JSONObject>;\n};\n\nexport interface LoadAllListData {\n lists: Array<DataListEntry>;\n}\n\nexport interface AddUpdateListParams {\n id: string;\n list: DatalistUpdate;\n}\n","import {\n AdditionalDataItem,\n CohortItem,\n DataLibrary,\n DataLibraryAPIResponse,\n Datalist,\n DatalistUpdate,\n // DataListEntry,\n DataSetItems,\n isCohortItem,\n isFileItem,\n LibraryAPIItems,\n // RegisteredDataListEntry,\n} from './types';\nimport { JSONObject } from '../../types/';\n\nconst processItem = (id: string, data: any) => {\n if (data?.type === 'AdditionalData') {\n return {\n name: data.name,\n itemType: 'AdditionalData',\n description: data?.description,\n documentationUrl: data?.documentationUrl as string,\n url: data?.url as string,\n } as AdditionalDataItem;\n }\n\n return {\n ...data,\n itemType: 'Data',\n guid: data.id,\n id: id, // TODO fix this hack\n };\n};\n\nexport const BuildList = (\n listId: string,\n listData: JSONObject,\n): Datalist | undefined => {\n if (!Object.keys(listData).includes('items')) return undefined;\n\n const items = Object.entries(listData?.items).reduce(\n (acc, [id, data]) => {\n if (data?.type === 'Gen3GraphQL') {\n acc.items[id] = {\n itemType: 'Gen3GraphQL',\n id: data.guid,\n schemaVersion: data.schema_version,\n data: data.data,\n name: data.name,\n index: data.index,\n } as CohortItem;\n } else {\n if (!(data.dataset_guid in acc.items)) {\n acc.items[data.dataset_guid as string] = {\n id: data.dataset_guid,\n name: '',\n items: { [id]: processItem(id, data) },\n };\n } else {\n (acc.items[data.dataset_guid as string].items as DataSetItems)[id] =\n processItem(id, data);\n }\n }\n return acc;\n },\n\n {\n items: {},\n version: listData?.version ?? 0,\n createdTime: listData?.created_time,\n updatedTime: listData?.updated_time,\n name: listData?.name ?? listId,\n id: listId,\n authz: {\n version: (listData.authz as JSONObject).version,\n authz: (listData as JSONObject).authz,\n },\n } as Datalist,\n );\n return items;\n};\n\nexport const BuildLists = (data: DataLibraryAPIResponse): DataLibrary => {\n return Object.entries(data?.lists).reduce((acc, [listId, listData]) => {\n const list = BuildList(listId, listData as JSONObject);\n if (list) acc[listId] = list;\n return acc;\n }, {} as DataLibrary);\n};\n\n/**\n * Calculates the total number of items within a DataList object.\n *\n * @param {DataList} dataList - The DataList object to count items from.\n * @return {number} The total number of items in the DataList.\n */\nexport const getNumberOfItemsInDatalist = (dataList: Datalist): number => {\n if (!dataList?.items) return 0;\n\n return Object.values(dataList.items).reduce((count, item) => {\n if (isCohortItem(item)) {\n return count + 1;\n } else {\n return (\n count +\n Object.values(item?.items ?? {}).reduce((fileCount, x) => {\n if (isFileItem(x)) {\n return fileCount + 1;\n }\n return fileCount;\n }, 0)\n );\n }\n }, 0);\n};\n\nexport const getTimestamp = () => {\n return new Date(Date.now()).toLocaleString();\n};\n\nexport const flattenDataList = (dataList: Datalist) => {\n // convert datalist into user-data-library for for updating.\n\n const items = Object.entries(dataList.items).reduce(\n (acc: LibraryAPIItems, [id, value]) => {\n if (isCohortItem(value)) {\n acc[id] = value;\n } else {\n return { ...acc, ...value.items };\n }\n return acc;\n },\n {},\n );\n\n return {\n name: dataList.name,\n items: items,\n } as DatalistUpdate;\n};\n","import { nanoid } from '@reduxjs/toolkit';\nimport { gen3Api } from '../gen3';\nimport { GEN3_DATA_LIBRARY_API } from '../../constants';\nimport {\n AddUpdateListParams,\n DataLibraryItems,\n Datalist,\n LoadAllListData,\n DataLibraryAPIResponse,\n} from './types';\nimport { BuildLists } from './utils';\n\nconst TAGS = 'dataLibrary';\n\nexport const dataLibraryTags = gen3Api.enhanceEndpoints({\n addTagTypes: [TAGS],\n});\n\n/**\n * RTKQuery hooks for data-library list CRUD operations.\n * @param getLists returns all the list in the user's data library\n * @param getList args: id returns the list for the given id\n * @param addLists args: Record<string, ListItemDefinition> populates the whole datalibrary\n * @param addList args: id ListItemDefinition creates a new list\n * @param updateList args: id ListItemDefinition updates a list\n * @param deleteList args: id deletes the list by id\n */\nexport const dataLibraryApi = dataLibraryTags.injectEndpoints({\n endpoints: (builder) => ({\n getDataLibraryLists: builder.query<DataLibraryItems, void>({\n query: () => `${GEN3_DATA_LIBRARY_API}`,\n transformResponse: (res: DataLibraryAPIResponse) => {\n return { lists: BuildLists(res) };\n },\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n }),\n getDataLibraryList: builder.query<Datalist, string>({\n query: (id: string) => `${GEN3_DATA_LIBRARY_API}/${id}`,\n transformResponse: (res: DataLibraryAPIResponse) =>\n BuildLists(res)?.lists,\n }),\n addAllDataLibraryLists: builder.mutation<void, LoadAllListData>({\n query: (lists) => ({\n url: `${GEN3_DATA_LIBRARY_API}`,\n method: 'POST',\n body: lists,\n }),\n invalidatesTags: [TAGS],\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n }),\n addDataLibraryList: builder.mutation<void, Partial<Datalist> | undefined>({\n query: (list) => ({\n url: `${GEN3_DATA_LIBRARY_API}/${nanoid()}`,\n method: 'POST',\n body: list ?? {},\n }),\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n invalidatesTags: [TAGS],\n }),\n updateDataLibraryList: builder.mutation<void, AddUpdateListParams>({\n query: ({ id, list }) => ({\n url: `${GEN3_DATA_LIBRARY_API}/${id}`,\n method: 'PUT',\n body: list,\n }),\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n invalidatesTags: [TAGS],\n }),\n deleteDataLibraryList: builder.mutation<void, string>({\n query: (id) => ({\n url: `${GEN3_DATA_LIBRARY_API}/${id}`,\n method: 'DELETE',\n }),\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n invalidatesTags: [TAGS],\n }),\n deleteAllDataLibrary: builder.mutation<void, void>({\n query: () => ({\n url: `${GEN3_DATA_LIBRARY_API}`,\n method: 'DELETE',\n }),\n transformErrorResponse(response) {\n if ('originalStatus' in response)\n return { status: response.originalStatus, data: response.data };\n return response;\n },\n invalidatesTags: [TAGS],\n }),\n }),\n});\n\nexport const {\n useGetDataLibraryListQuery,\n useGetDataLibraryListsQuery,\n useAddDataLibraryListMutation,\n useAddAllDataLibraryListsMutation,\n useDeleteDataLibraryListMutation,\n useDeleteAllDataLibraryMutation,\n useUpdateDataLibraryListMutation,\n} = dataLibraryApi;\n","import { isArray } from 'lodash';\nimport { isJSONObject, JSONObject } from '../../types';\nimport { type Datalist, LibraryAPIItems, LoadAllListData } from './types';\nimport { nanoid } from '@reduxjs/toolkit';\nimport { IDBPDatabase, openDB } from 'idb';\nimport { BuildLists, getTimestamp } from './utils';\n\nconst DATABASE_NAME = 'Gen3DataLibrary';\nconst STORE_NAME = 'DataLibraryLists';\n\ninterface ReturnStatus {\n isError?: true;\n status?: string;\n lists?: Record<string, Datalist>;\n}\n\nconst getDb = async (): Promise<IDBPDatabase> => {\n return openDB(DATABASE_NAME, 1, {\n upgrade(db) {\n if (!db.objectStoreNames.contains(STORE_NAME)) {\n db.createObjectStore(STORE_NAME, { keyPath: 'id' });\n }\n },\n });\n};\n\n/**\n * Deletes all lists in the database.\n *\n * @async\n * @returns {Promise<ReturnStatus>} A promise that resolves to the status of the operation.\n */\nexport const deleteAllIndexDB = async (): Promise<ReturnStatus> => {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n tx.objectStore(STORE_NAME).clear();\n await tx.done;\n return { status: 'all lists deleted' };\n};\n\n/**\n * Deletes a list from the database.\n *\n * @async\n * @param {string} id - The unique identifier of the list to delete.\n * @returns {Promise<ReturnStatus>} The status of the deletion operation.\n * @throws {Error} If the list with the provided id does not exist.\n */\nexport const deleteListIndexDB = async (id: string): Promise<ReturnStatus> => {\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const store = tx.objectStore(STORE_NAME);\n const item = await store.get(id);\n\n if (!item) {\n throw new Error(`List ${id} does not exist`);\n }\n\n store.delete(id);\n await tx.done;\n return { status: `${id} deleted` };\n } catch (error: unknown) {\n return { isError: true };\n }\n};\n\nexport const deleteAll = async () => {\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n tx.objectStore(STORE_NAME).clear();\n await tx.done;\n return { status: 'list added' };\n } catch (error: unknown) {\n return { isError: true, status: `unable to clear library` };\n }\n};\n\nexport const addListToDataLibraryIndexDB = async (\n body?: Partial<Datalist>,\n): Promise<ReturnStatus> => {\n const timestamp = getTimestamp();\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const id = nanoid(); // Create an id for the list\n tx.objectStore(STORE_NAME).put({\n id,\n version: 0,\n items: body?.items ?? {},\n creator: '{{subject_id}}',\n authz: {\n version: 0,\n authz: [`/users/{{subject_id}}/user-library/lists/${id}`],\n },\n name: body?.name ?? 'New List',\n created_time: timestamp,\n updated_time: timestamp,\n });\n await tx.done;\n return { status: 'list added' };\n } catch (error: unknown) {\n return { isError: true, status: `unable to add list` };\n }\n};\n\nexport const updateListIndexDB = async (\n id: string,\n list: Datalist,\n // override = true,\n): Promise<ReturnStatus> => {\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const store = tx.objectStore(STORE_NAME);\n const listData = await store.get(id);\n\n if (!listData) {\n throw new Error(`List ${id} does not exist`);\n }\n\n const timestamp = getTimestamp();\n const version = listData.version ? listData.version + 1 : 0;\n const updated = {\n ...listData,\n ...list,\n version: version,\n updated_time: timestamp,\n created_time: listData.created_time,\n };\n\n store.put(updated);\n await tx.done;\n return { status: 'success' };\n } catch (error: unknown) {\n let errorMessage = 'An unknown error occurred';\n if (error instanceof Error) {\n errorMessage = error.message;\n }\n return {\n isError: true,\n status: `Unable to update list: ${id}. Error: ${errorMessage}`,\n };\n }\n};\n\nexport const addAllListIndexDB = async (\n data: LoadAllListData,\n): Promise<ReturnStatus> => {\n if (!Object.keys(data).includes('lists') || !isArray(data['lists'])) {\n return { isError: true, status: 'lists not found in request' };\n }\n const timestamp = getTimestamp();\n const allLists = data['lists'].reduce((acc: JSONObject, x: unknown) => {\n if (!isJSONObject(x)) return acc;\n\n const id = nanoid(10);\n acc[id] = {\n ...(x as JSONObject),\n version: 0,\n created_time: timestamp,\n updated_time: timestamp,\n creator: '{{subject_id}}',\n authz: {\n version: 0,\n authz: [`/users/{{subject_id}}/user-library/lists/${id}`],\n },\n };\n return acc;\n }, {} as JSONObject);\n\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n for (const [id, list] of Object.entries(allLists)) {\n tx.objectStore(STORE_NAME).put({ id, ...(list as object) });\n }\n await tx.done;\n return { status: 'success' };\n } catch (error: unknown) {\n return { isError: true, status: 'unable to add lists' };\n }\n};\n\ninterface DataLibraryFromStore\n extends Omit<Datalist, 'createdTime' | 'updatedTime' | 'items'> {\n created_time: string;\n updated_time: string;\n items: LibraryAPIItems;\n}\n\nexport const getDataLibraryListIndexDB = async (\n id?: string,\n): Promise<ReturnStatus> => {\n try {\n const db = await getDb();\n const tx = db.transaction(STORE_NAME, 'readonly');\n const store = tx.objectStore(STORE_NAME);\n if (id !== undefined) {\n const lists = (await store.get(id)) as Array<DataLibraryFromStore>;\n\n if (lists) {\n return {\n status: 'success',\n lists: lists.reduce(\n (acc: Record<string, Datalist>, x: DataLibraryFromStore) => {\n acc[x.id] = {\n id: x.id,\n version: x.version,\n name: x.name,\n authz: x.authz,\n createdTime: x.created_time,\n updatedTime: x.updated_time,\n items: x.items as any,\n };\n return acc;\n },\n {},\n ),\n };\n } else {\n return { isError: true, status: `${id} does not exist` };\n }\n } else {\n const lists = (await store.getAll()) as Array<DataLibraryFromStore>;\n const listMap = lists.reduce(\n (acc: Record<string, JSONObject>, x: DataLibraryFromStore) => {\n acc[x.id] = {\n ...x,\n items: x.items as any, // TODO Process items\n } as unknown as JSONObject;\n return acc;\n },\n {},\n );\n const datalists = BuildLists({ lists: listMap });\n return {\n status: 'success',\n lists: datalists,\n };\n }\n } catch (error: unknown) {\n return { isError: true };\n }\n};\n","import { useEffect, useState } from 'react';\nimport {\n useGetDataLibraryListsQuery,\n useAddDataLibraryListMutation,\n useDeleteDataLibraryListMutation,\n useAddAllDataLibraryListsMutation,\n useUpdateDataLibraryListMutation,\n useDeleteAllDataLibraryMutation,\n} from './dataLibraryApi';\n\nimport {\n getDataLibraryListIndexDB,\n addListToDataLibraryIndexDB,\n deleteListIndexDB,\n addAllListIndexDB,\n updateListIndexDB,\n deleteAll,\n} from './dataLibraryIndexDB';\nimport { DataLibrary, Datalist, LoadAllListData } from './types';\nimport { flattenDataList } from './utils';\n\nexport const useDataLibrary = (useApi: boolean) => {\n const [localLibrary, setLocalLibrary] = useState<DataLibrary>({});\n\n const {\n data: apiLibrary,\n refetch: refetchLibraryFromApi,\n error: apiError,\n isError: isAPIListError,\n isLoading: isAPIListLoading,\n } = useGetDataLibraryListsQuery(undefined, { skip: !useApi });\n const [addItemToLibraryApi] = useAddDataLibraryListMutation();\n const [addAllItemsToLibraryApi] = useAddAllDataLibraryListsMutation();\n const [deleteItemInLibraryApi] = useDeleteDataLibraryListMutation();\n const [updateItemInLibraryApi, { isLoading: isUpdatingLoading }] =\n useUpdateDataLibraryListMutation();\n const [deleteAllApi] = useDeleteAllDataLibraryMutation();\n\n let hasError = false;\n let errorData = null;\n let isLoading = false;\n\n // TODO: Add error message from indexedDB\n if (useApi && isAPIListError) {\n hasError = true;\n errorData = apiError;\n }\n\n if (useApi && (isUpdatingLoading || isAPIListLoading)) {\n isLoading = true;\n }\n\n const generateUniqueName = (baseName: string = 'List') => {\n let uniqueName = baseName;\n let counter = 1;\n\n const existingNames = dataLibrary\n ? Object.values(dataLibrary).map((x) => x.name)\n : [];\n\n while (existingNames.includes(uniqueName)) {\n uniqueName = `${baseName} ${counter}`;\n counter++;\n }\n\n return uniqueName;\n };\n\n const refetchLocalLists = async () => {\n const { isError, lists } = await getDataLibraryListIndexDB();\n setLocalLibrary(lists ?? {});\n hasError = isError === true;\n };\n\n useEffect(() => {\n const fetchLibrary = async () => {\n if (!useApi) {\n const { isError, lists } = await getDataLibraryListIndexDB();\n if (!isError) {\n setLocalLibrary(lists ?? {});\n }\n }\n };\n\n fetchLibrary();\n }, [useApi]);\n\n const addListToDataLibrary = async (item?: Partial<Datalist>) => {\n const adjustedData = {\n ...(item ?? {}),\n name: generateUniqueName(item?.name ?? 'List'),\n };\n\n if (useApi) {\n await addItemToLibraryApi(adjustedData);\n refetchLibraryFromApi();\n } else {\n const { isError } = await addListToDataLibraryIndexDB(adjustedData);\n await refetchLocalLists();\n hasError = isError === true;\n }\n };\n\n const deleteListFromDataLibrary = async (id: string) => {\n if (useApi) {\n await deleteItemInLibraryApi(id);\n refetchLibraryFromApi();\n } else {\n const { isError } = await deleteListIndexDB(id);\n refetchLocalLists();\n hasError = isError === true;\n }\n };\n\n const setAllListsInDataLibrary = async (data: LoadAllListData) => {\n if (useApi) {\n await addAllItemsToLibraryApi(data);\n refetchLibraryFromApi();\n } else {\n const { isError } = await addAllListIndexDB(data);\n refetchLocalLists();\n hasError = isError === true;\n }\n };\n\n const updateListInDataLibrary = async (id: string, data: Datalist) => {\n const flattend = flattenDataList(data);\n if (useApi) {\n await updateItemInLibraryApi({ id, list: flattend });\n refetchLibraryFromApi();\n } else {\n const { isError } = await updateListIndexDB(id, data);\n refetchLocalLists();\n hasError = isError === true;\n }\n };\n\n const clearLibrary = async () => {\n if (useApi) {\n await deleteAllApi();\n refetchLibraryFromApi();\n } else {\n const { isError } = await deleteAll();\n refetchLocalLists();\n hasError = isError === true;\n }\n };\n\n const dataLibrary = useApi\n ? apiLibrary\n ? apiLibrary.lists\n : {}\n : localLibrary;\n\n return {\n dataLibrary,\n isError: hasError,\n isLoading,\n error: errorData,\n addListToDataLibrary,\n deleteListFromDataLibrary,\n clearLibrary,\n setAllListsInDataLibrary,\n updateListInDataLibrary,\n };\n};\n\nexport default useDataLibrary;\n","import {\n createSlice,\n createSelector,\n type PayloadAction,\n} from '@reduxjs/toolkit';\n\nconst initialState = {};\n\ntype DataLibrarySelectionState = Record<string, Array<string>>;\n\ninterface UpdateSelectionParams {\n listId: string;\n itemIds: string[];\n}\n\nconst dataLibrarySlice = createSlice({\n name: 'dataLibrary',\n initialState,\n reducers: {\n setDataLibraryListSelection: (\n state: DataLibrarySelectionState,\n action: PayloadAction<UpdateSelectionParams>,\n ) => {\n const { listId, itemIds } = action.payload;\n state[listId] = itemIds;\n },\n clearDataLibrarySelection: () => {\n return initialState;\n },\n },\n});\n\nexport const { setDataLibraryListSelection, clearDataLibrarySelection } =\n dataLibrarySlice.actions;\n\nexport const dataLibrarySelectionReducer = dataLibrarySlice.reducer;\n\n// Selector\nexport const selectDataLibrary = (state: DataLibrarySelectionState) =>\n state.dataLibrarySelection;\n\n// Memoized selector for getting data library items for a specific root object\nexport const selectRootObjectDataLibrary = createSelector(\n [selectDataLibrary, (_, rootObjectId) => rootObjectId],\n (dataLibrary, rootObjectId) => dataLibrary[rootObjectId] || [],\n);\n","export interface PayModel {\n bmh_workspace_id: string;\n workspace_type: string;\n user_id: string;\n account_id: string;\n request_status: string;\n local: boolean;\n region: string;\n ecs: boolean;\n subnet: number;\n 'hard-limit': number;\n 'soft-limit': number;\n 'total-usage': number;\n current_pay_model: boolean;\n}\n\nexport interface WorkspaceId {\n id: string;\n}\n\nexport interface WorkspaceInfo extends WorkspaceId {\n name: string;\n idleTimeLimit: number;\n memoryLimit: string;\n cpuLimit: string;\n}\n\nexport interface WorkspaceInfoResponse {\n id: string;\n name: string;\n 'idle-time-limit': number;\n 'memory-limit': string;\n 'cpu-limit': string;\n}\n\nexport type WorkspaceOptionsResponse = Array<WorkspaceInfoResponse>;\nexport type WorkspaceOptions = Array<WorkspaceInfo>;\n\nexport interface WorkspacePayModelResponse {\n currentPayModel: PayModel;\n allPayModels: PayModel[];\n noPayModel: boolean;\n}\n\nexport enum WorkspaceStatus {\n Launching = 'Launching',\n Running = 'Running',\n Terminating = 'Terminating',\n Stopped = 'Stopped',\n NotFound = 'Not Found',\n Errored = 'Errored',\n StatusError = 'Status Error',\n}\n\nexport enum PodConditionType {\n PodScheduled = 'PodScheduled',\n Initialized = 'Initialized',\n ContainersReady = 'ContainersReady',\n PodReadyToStartContainers = 'PodReadyToStartContainers',\n ProxyConnected = 'ProxyConnected',\n Ready = 'Ready',\n}\n\nexport enum PodStatus {\n True = 'True',\n False = 'False',\n Unknown = 'Unknown',\n}\n\nexport interface WorkspaceContainerState {\n name: string;\n ready: boolean;\n state:\n | { running: { startedAt: string } }\n | { waiting: { reason: string } }\n | { terminated: { reason: string } };\n}\n\nexport interface WorkspacePodCondition {\n type: PodConditionType;\n status: PodStatus;\n}\n\nexport interface WorkspaceStatusResponse {\n status: WorkspaceStatus;\n conditions?: Array<WorkspacePodCondition>;\n containerStates?: Array<WorkspaceContainerState>;\n idleTimeLimit?: number;\n lastActivityTime: number;\n workspaceType?: string;\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { CoreState } from '../../reducers';\nimport { type WorkspaceId, WorkspaceStatus } from './types';\n\nexport const NO_WORKSPACE_ID = 'none';\n\nexport type RequestedWorkspaceStatus = 'Launching' | 'Terminating' | 'NotSet';\nexport interface WorkspaceState {\n id: string;\n status: WorkspaceStatus;\n requestedStatus: RequestedWorkspaceStatus;\n}\n\nconst initialState: WorkspaceState = {\n id: NO_WORKSPACE_ID,\n status: WorkspaceStatus.NotFound,\n requestedStatus: 'NotSet',\n};\n\nconst slice = createSlice({\n name: 'ActiveWorkspace',\n initialState,\n reducers: {\n setActiveWorkspaceId: (state, action: PayloadAction<WorkspaceId>) => {\n state = { ...state, id: action.payload.id };\n return state;\n },\n clearActiveWorkspaceId: (state) => {\n return { ...state, id: NO_WORKSPACE_ID };\n },\n setActiveWorkspaceStatus: (\n state,\n action: PayloadAction<WorkspaceStatus>,\n ) => {\n return { ...state, status: action.payload };\n },\n setRequestedWorkspaceStatus: (\n state,\n action: PayloadAction<RequestedWorkspaceStatus>,\n ) => {\n return { ...state, requestedStatus: action.payload };\n },\n setActiveWorkspace: (_state, action: PayloadAction<WorkspaceState>) => {\n return { ...action.payload };\n },\n },\n});\n\nexport const activeWorkspaceReducer = slice.reducer;\nexport const {\n setActiveWorkspaceId,\n clearActiveWorkspaceId,\n setActiveWorkspaceStatus,\n setRequestedWorkspaceStatus,\n setActiveWorkspace,\n} = slice.actions;\n\nexport const selectActiveWorkspaceId = (state: CoreState): string =>\n state.activeWorkspace.id;\n\nexport const selectActiveWorkspaceStatus = (\n state: CoreState,\n): WorkspaceStatus => state.activeWorkspace.status;\n\nexport const selectRequestedWorkspaceStatus = (\n state: CoreState,\n): RequestedWorkspaceStatus => state.activeWorkspace.requestedStatus;\n","import type { Middleware, Reducer } from '@reduxjs/toolkit';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport { JSONObject } from '../../types';\nimport { GEN3_GUPPY_API } from '../../constants';\nimport { CoreState } from '../../reducers';\nimport { getCookie } from 'cookies-next';\nimport { selectCSRFToken } from '../user';\n\nexport interface guppyFetchError {\n readonly url: string;\n readonly status: number;\n readonly statusText: string;\n readonly text: string;\n readonly variables?: Record<string, any>;\n}\n\nexport interface guppyApiSliceRequest {\n readonly query: string;\n readonly variables?: Record<string, unknown>;\n}\n\nexport interface guppyApiResponse<H = JSONObject> {\n readonly data: H;\n readonly errors: Record<string, string>;\n}\n\nexport interface SortOption {\n field: string;\n order: string;\n}\n\nexport interface TablePageOffsetProps {\n readonly pageSize?: number;\n readonly offset?: number;\n readonly sorts?: Array<SortOption>;\n readonly searchTerm?: string;\n}\n\n/**\n * Creates a base class core API for guppy API calls.\n * @returns: guppy core API with guppyAPIFetch base query\n */\nexport const guppyApi = createApi({\n reducerPath: 'guppy',\n\n // TODO: refactor to use fetchBaseQuery\n baseQuery: async (query: guppyApiSliceRequest, api) => {\n const csrfToken = selectCSRFToken(api.getState() as CoreState);\n\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n // NOTE: This cookie can only be accessed from the client side\n // in development mode. Otherwise, the cookie is set as httpOnly\n accessToken = getCookie('credentials_token');\n }\n\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'Access-Control-Allow-Origin': '*',\n ...(csrfToken && { 'X-CSRF-Token': csrfToken }),\n ...(accessToken && { Authorization: `Bearer ${accessToken}` }),\n };\n try {\n const response = await fetch(`${GEN3_GUPPY_API}/graphql`, {\n headers: headers,\n method: 'POST',\n body: JSON.stringify(query),\n });\n return { data: await response.json() };\n } catch (e: unknown) {\n if (e instanceof Error) return { error: e.message };\n return { error: e };\n }\n },\n endpoints: () => ({}),\n});\n\nexport const guppyAPISliceMiddleware = guppyApi.middleware as Middleware;\nexport const guppyApiSliceReducerPath: string = guppyApi.reducerPath;\nexport const guppyApiReducer: Reducer = guppyApi.reducer as Reducer;\n","import { isEqual } from 'lodash';\nimport {\n EnumFilterValue,\n Equals,\n ExcludeIfAny,\n Excludes,\n FilterSet,\n FilterValue,\n GreaterThan,\n GreaterThanOrEquals,\n Includes,\n Intersection,\n LessThan,\n LessThanOrEquals,\n NestedFilter,\n NotEquals,\n Operation,\n OperationHandler,\n OperationWithField,\n Union,\n} from './types';\n\nexport const isOperationWithField = (\n operation: OperationWithField | Operation,\n): operation is OperationWithField => {\n return (operation as OperationWithField)?.field !== undefined;\n};\nexport const extractFilterValue = (op: Operation): FilterValue => {\n const valueExtractorHandler = new ValueExtractorHandler();\n return handleOperation<FilterValue>(valueExtractorHandler, op);\n};\nexport const extractEnumFilterValue = (op: Operation): EnumFilterValue => {\n const enumValueExtractorHandler = new EnumValueExtractorHandler();\n const results = handleOperation<EnumFilterValue | undefined>(\n enumValueExtractorHandler,\n op,\n );\n return results ?? [];\n};\n\nconst assertNever = (x: never): never => {\n throw Error(`Exhaustive comparison did not handle: ${x}`);\n};\n\nexport const handleOperation = <T>(\n handler: OperationHandler<T>,\n op: Operation,\n): T => {\n switch (op.operator) {\n case '=':\n return handler.handleEquals(op);\n case '!=':\n return handler.handleNotEquals(op);\n case '<':\n return handler.handleLessThan(op);\n case '<=':\n return handler.handleLessThanOrEquals(op);\n case '>':\n return handler.handleGreaterThan(op);\n case '>=':\n return handler.handleGreaterThanOrEquals(op);\n case 'and':\n return handler.handleIntersection(op);\n case 'or':\n return handler.handleUnion(op);\n case 'nested':\n return handler.handleNestedFilter(op);\n case 'in':\n return handler.handleIncludes(op);\n case 'excludeifany':\n return handler.handleExcludeIfAny(op);\n case 'excludes':\n return handler.handleExcludes(op);\n default:\n return assertNever(op);\n }\n};\n\n/**\n * Return true if a FilterSet's root value is an empty object\n * @param fs - FilterSet to test\n */\nexport const isFilterEmpty = (fs: FilterSet): boolean => isEqual({}, fs);\n\nexport interface FilterGroup {\n readonly filterIndex: number;\n readonly filter: FilterSet;\n}\n\nexport interface GQLEqual {\n '=': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLNotEqual {\n '!=': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLLessThan {\n '<': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLLessThanOrEquals {\n '<=': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLGreaterThan {\n '>': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLGreaterThanOrEquals {\n '>=': {\n [key: string]: string | number;\n };\n}\n\nexport interface GQLIncludes {\n in: {\n [key: string]: ReadonlyArray<string | number>;\n };\n}\n\nexport interface GQLExcludes {\n exclude: {\n [key: string]: ReadonlyArray<string | number>;\n };\n}\n\nexport interface GQLExcludeIfAny {\n excludeifany: {\n [key: string]: ReadonlyArray<string | number>;\n };\n}\n\nexport interface GQLIntersection {\n and: ReadonlyArray<GQLFilter>;\n}\n\nexport interface GQLUnion {\n or: ReadonlyArray<GQLFilter>;\n}\n\ntype NestedContents = GQLFilter & {\n path: string;\n};\n\nexport interface GQLNestedFilter {\n nested: NestedContents;\n}\n\nexport type GQLFilter =\n | GQLEqual\n | GQLNotEqual\n | GQLLessThan\n | GQLLessThanOrEquals\n | GQLGreaterThan\n | GQLGreaterThanOrEquals\n | GQLIncludes\n | GQLExcludes\n | GQLExcludeIfAny\n | GQLIntersection\n | GQLUnion\n | GQLNestedFilter;\n\nexport class ToGqlHandler implements OperationHandler<GQLFilter> {\n handleEquals = (op: Equals): GQLEqual => ({\n '=': {\n [op.field]: op.operand,\n },\n });\n handleNotEquals = (op: NotEquals): GQLNotEqual => ({\n '!=': {\n [op.field]: op.operand,\n },\n });\n handleLessThan = (op: LessThan): GQLLessThan => ({\n '<': {\n [op.field]: op.operand,\n },\n });\n handleLessThanOrEquals = (op: LessThanOrEquals): GQLLessThanOrEquals => ({\n '<=': {\n [op.field]: op.operand,\n },\n });\n handleGreaterThan = (op: GreaterThan): GQLGreaterThan => ({\n '>': {\n [op.field]: op.operand,\n },\n });\n handleGreaterThanOrEquals = (\n op: GreaterThanOrEquals,\n ): GQLGreaterThanOrEquals => ({\n '>=': {\n [op.field]: op.operand,\n },\n });\n\n handleIncludes = (op: Includes): GQLIncludes => ({\n in: {\n [op.field]: op.operands,\n },\n });\n\n handleExcludes = (op: Excludes): GQLExcludes => ({\n exclude: {\n [op.field]: op.operands,\n },\n });\n\n handleExcludeIfAny = (op: ExcludeIfAny): GQLExcludeIfAny => ({\n excludeifany: {\n [op.field]: op.operands,\n },\n });\n\n handleIntersection = (op: Intersection): GQLIntersection => ({\n and: op.operands.map((x) =>\n convertFilterToGqlFilter(x),\n ) as ReadonlyArray<GQLFilter>,\n });\n\n handleUnion = (op: Union): GQLUnion => ({\n or: op.operands.map((x) => convertFilterToGqlFilter(x)),\n });\n\n handleNestedFilter = (op: NestedFilter): GQLNestedFilter => {\n const child: GQLFilter = convertFilterToGqlFilter(op.operand);\n return {\n nested: {\n path: op.path,\n ...child,\n },\n } as GQLNestedFilter;\n };\n}\n\nconst convertFilterToGqlFilter = (filter: Operation): GQLFilter => {\n const handler: OperationHandler<GQLFilter> = new ToGqlHandler();\n return handleOperation(handler, filter);\n};\n\nexport const convertFilterSetToGqlFilter = (\n fs: FilterSet,\n toplevelOp: 'and' | 'or' = 'and',\n): GQLFilter => {\n const fsKeys = Object.keys(fs.root);\n // if no keys return undefined\n if (fsKeys.length === 0) return { and: [] };\n\n return toplevelOp === 'and'\n ? { and: fsKeys.map((key) => convertFilterToGqlFilter(fs.root[key])) }\n : { or: fsKeys.map((key) => convertFilterToGqlFilter(fs.root[key])) };\n};\n\n/**\n * Extract the operand values, if operands themselves have values, otherwise undefined.\n */\nexport class ValueExtractorHandler implements OperationHandler<FilterValue> {\n handleEquals: (op: Equals) => string | number = (op: Equals) => op.operand;\n handleNotEquals: (op: NotEquals) => string | number = (op: NotEquals) =>\n op.operand;\n handleIncludes: (op: Includes) => ReadonlyArray<string | number> = (\n op: Includes,\n ) => op.operands;\n handleExcludes: (op: Excludes) => ReadonlyArray<string | number> = (\n op: Excludes,\n ) => op.operands;\n handleExcludeIfAny: (op: ExcludeIfAny) => ReadonlyArray<string | number> = (\n op: ExcludeIfAny,\n ) => op.operands;\n handleGreaterThanOrEquals: (op: GreaterThanOrEquals) => string | number = (\n op: GreaterThanOrEquals,\n ) => op.operand;\n handleGreaterThan: (op: GreaterThan) => string | number = (op: GreaterThan) =>\n op.operand;\n handleLessThan: (op: LessThan) => string | number = (op: LessThan) =>\n op.operand;\n handleLessThanOrEquals: (op: LessThanOrEquals) => string | number = (\n op: LessThanOrEquals,\n ) => op.operand;\n handleIntersection: (op: Intersection) => undefined = (_arg: Intersection) =>\n undefined;\n handleUnion: (op: Union) => undefined = (_: Union) => undefined;\n handleNestedFilter: (op: NestedFilter) => undefined = (_: NestedFilter) =>\n undefined;\n}\n\n/**\n * Extract the operand values, if operands themselves have values, otherwise undefined.\n */\nexport class EnumValueExtractorHandler\n implements OperationHandler<EnumFilterValue | undefined>\n{\n handleEquals: (_: Equals) => undefined = (_: Equals) => undefined;\n handleNotEquals: (_: NotEquals) => undefined = (_: NotEquals) => undefined;\n handleIncludes: (op: Includes) => ReadonlyArray<string | number> = (\n op: Includes,\n ) => op.operands;\n handleExcludes: (op: Excludes) => ReadonlyArray<string | number> = (\n op: Excludes,\n ) => op.operands;\n handleExcludeIfAny: (op: ExcludeIfAny) => ReadonlyArray<string | number> = (\n op: ExcludeIfAny,\n ) => op.operands;\n handleGreaterThanOrEquals: (_: GreaterThanOrEquals) => undefined = (\n _: GreaterThanOrEquals,\n ) => undefined;\n handleGreaterThan: (_: GreaterThan) => undefined = (_: GreaterThan) =>\n undefined;\n handleLessThan: (op: LessThan) => undefined = (_: LessThan) => undefined;\n handleLessThanOrEquals: (op: LessThanOrEquals) => undefined = (\n _: LessThanOrEquals,\n ) => undefined;\n handleIntersection: (op: Intersection) => undefined = (_: Intersection) =>\n undefined;\n handleUnion: (op: Union) => undefined = (_: Union) => undefined;\n handleNestedFilter: (op: NestedFilter) => EnumFilterValue | undefined = (\n op: NestedFilter,\n ) => {\n return extractEnumFilterValue(op.operand);\n };\n}\n","export interface Intersection {\n operator: 'and';\n operands: ReadonlyArray<Operation>;\n}\n\nexport interface Union {\n operator: 'or';\n operands: ReadonlyArray<Operation>;\n}\n\nexport interface Equals {\n operator: '=';\n field: string;\n operand: number | string;\n}\n\nexport interface NotEquals {\n operator: '!=';\n field: string;\n operand: number | string;\n}\n\nexport interface Includes {\n operator: 'in';\n field: string;\n operands: ReadonlyArray<string | number>;\n}\n\nexport interface Comparison {\n field: string;\n operand: string | number;\n}\n\nexport interface LessThan extends Comparison {\n operator: '<';\n}\n\nexport interface LessThanOrEquals extends Comparison {\n operator: '<=';\n}\n\nexport interface GreaterThan extends Comparison {\n operator: '>';\n}\n\nexport interface GreaterThanOrEquals extends Comparison {\n operator: '>=';\n}\n\nexport interface Exists {\n readonly operator: 'exists';\n readonly field: string;\n}\n\nexport interface Missing {\n readonly operator: 'missing';\n readonly field: string;\n}\n\nexport interface ExcludeIfAny {\n readonly operator: 'excludeifany';\n readonly field: string;\n readonly operands: ReadonlyArray<string | number>;\n}\n\nexport interface Excludes {\n readonly operator: 'excludes';\n readonly field: string;\n readonly operands: ReadonlyArray<string | number>;\n}\n\nexport interface NestedFilter {\n operator: 'nested';\n path: string;\n operand: Operation;\n}\n\nexport type Operation =\n | Intersection\n | Union\n | Includes\n | Equals\n | NotEquals\n | LessThan\n | LessThanOrEquals\n | GreaterThan\n | GreaterThanOrEquals\n | NestedFilter\n | ExcludeIfAny\n | Excludes;\n\nexport type OperationWithField =\n | Includes\n | Equals\n | NotEquals\n | LessThan\n | LessThanOrEquals\n | GreaterThan\n | GreaterThanOrEquals\n | ExcludeIfAny\n | Excludes;\n\nexport interface FilterSet {\n readonly root: Record<string, Operation>;\n readonly mode: 'and' | 'or';\n}\n\nexport const isFilterSet = (input: any): input is FilterSet => {\n if (typeof input !== 'object' || input === null) {\n return false;\n }\n const { root, mode } = input;\n\n if (typeof root !== 'object' || root === null) {\n return false;\n }\n\n if (!['and', 'or'].includes(mode)) {\n return false;\n }\n\n return true;\n};\n\nexport interface OperationHandler<T> {\n handleEquals: (op: Equals) => T;\n handleNotEquals: (op: NotEquals) => T;\n handleLessThan: (op: LessThan) => T;\n handleLessThanOrEquals: (op: LessThanOrEquals) => T;\n handleGreaterThan: (op: GreaterThan) => T;\n handleGreaterThanOrEquals: (op: GreaterThanOrEquals) => T;\n handleIncludes: (op: Includes) => T;\n handleExcludes: (op: Excludes) => T;\n handleExcludeIfAny: (op: ExcludeIfAny) => T;\n handleIntersection: (op: Intersection) => T;\n handleUnion: (op: Union) => T;\n handleNestedFilter: (op: NestedFilter) => T;\n}\n\n/**\n * Operand types for filter operations\n */\nexport type EnumFilterValue = ReadonlyArray<string | number>;\nexport type RangeFilterValue = string | number;\nexport type SetFilterValue = ReadonlyArray<Operation>;\nexport type FilterValue =\n | EnumFilterValue\n | RangeFilterValue\n | SetFilterValue\n | undefined;\n\nexport type FacetBucket = {\n key: string;\n doc_count: number;\n};\n\nexport type HistogramBucket = {\n key: string | [number, number];\n count: number;\n};\n\nexport type FacetType =\n | 'enum'\n | 'exact'\n | 'range'\n | 'age'\n | 'year'\n | 'years'\n | 'days'\n | 'percent'\n | 'datetime'\n | 'toggle' // Note these support alternative UIs\n | 'multiselect';\n\nexport interface AllowableRange {\n readonly minimum?: number;\n readonly maximum?: number;\n}\n\nexport interface FacetDefinition {\n readonly description?: string; //description from _mapping\n readonly field: string; // full name of field\n readonly dataField: string; //\n readonly index: string; // what dataType is this facet for\n readonly type: FacetType; // classified type based on type + name: e.g. age, year, enumeration, etc\n readonly range?: AllowableRange; // range of value types\n readonly hasData?: boolean; // does this facet have data\n readonly label?: string; // label for facet\n}\n\nexport type IndexedFilterSet = Record<string, FilterSet>;\n","const FieldNameOverrides: Record<string, string> = {};\n\nconst COMMON_PREPOSITIONS = [\n 'a',\n 'an',\n 'and',\n 'at',\n 'but',\n 'by',\n 'for',\n 'in',\n 'is',\n 'nor',\n 'of',\n 'on',\n 'or',\n 'out',\n 'so',\n 'the',\n 'to',\n 'up',\n 'yet',\n];\n\nconst capitalize = (s: string): string =>\n s.length > 0 ? s[0].toUpperCase() + s.slice(1) : '';\n\nexport const trimFirstFieldNameToTitle = (\n fieldName: string,\n trim = false,\n): string => {\n if (trim) {\n const source = fieldName.slice(fieldName.indexOf('.') + 1);\n return fieldNameToTitle(source ? source : fieldName, 0);\n }\n return fieldNameToTitle(fieldName);\n};\n\n/**\n * Converts a filter name to a title,\n * For example files.input.experimental_strategy will get converted to Experimental Strategy\n * if sections == 2 then the output would be Input Experimental Strategy\n * @param fieldName input filter expected to be: string.firstpart_secondpart\n * @param sections number of \"sections\" string.string.string to got back from the end of the field\n */\n\nexport const fieldNameToTitle = (fieldName: string, sections = 1): string => {\n if (fieldName in FieldNameOverrides) {\n return FieldNameOverrides[fieldName];\n }\n if (fieldName === undefined) return 'No Title';\n\n return fieldName\n .split('.')\n .slice(-sections)\n .map((s) => s.split('_'))\n .flat()\n .map((word) =>\n COMMON_PREPOSITIONS.includes(word) ? word : capitalize(word),\n )\n .join(' ');\n};\n\n/**\n * Extracts the index name from the field name\n * @param fieldName\n */\nexport const extractIndexFromFullFieldName = (fieldName: string): string =>\n fieldName.split('.')[0];\n\n/**\n * prepend the index name to the field name\n */\nexport const prependIndexToFieldName = (\n fieldName: string,\n index: string,\n): string => `${index}.${fieldName}`;\n\n/**\n * extract the field name from the index.field name\n */\nexport const extractFieldNameFromFullFieldName = (fieldName: string): string =>\n fieldName.split('.').slice(1).join('.');\n\n/**\n * extract the field name and the index from the index.field name returning as a tuple\n */\nexport const extractIndexAndFieldNameFromFullFieldName = (\n fieldName: string,\n): [string, string] => {\n const [index, ...rest] = fieldName.split('.');\n return [index, rest.join('.')];\n};\n","import useSWR, { Fetcher, SWRResponse } from 'swr';\nimport { AggregationsData, JSONObject } from '../../types';\nimport { Accessibility, GEN3_GUPPY_API } from '../../constants';\nimport { JSONPath } from 'jsonpath-plus';\nimport {\n convertFilterSetToGqlFilter,\n FilterSet,\n isFilterEmpty,\n} from '../filters';\nimport { guppyApi, guppyApiSliceRequest } from './guppyApi';\n\nconst statusEndpoint = '/_status';\n\nexport const processHistogramResponse = (\n data: Record<string, any>,\n): AggregationsData => {\n const valueData = JSONPath({\n json: data,\n path: '$..histogram',\n resultType: 'value',\n });\n\n const pointerData = JSONPath({\n json: data,\n path: '$..histogram',\n resultType: 'pointer',\n });\n\n const results = pointerData.reduce(\n (acc: AggregationsData, element: Record<string, any>, idx: number) => {\n const key = element\n .slice(1)\n .replace(/\\/histogram/g, '')\n .replace(/\\//g, '.');\n return {\n ...acc,\n [key]: valueData[idx],\n };\n },\n {} as AggregationsData,\n );\n return results as AggregationsData;\n};\n\nexport interface GraphQLQuery {\n query: string;\n variables?: Record<string, unknown>;\n}\n\nexport const fetchJson: Fetcher<JSONObject, string> = async (url: string) => {\n const res = await fetch(url, {\n method: 'GET',\n headers: { 'Content-type': 'application/json' },\n });\n if (!res.ok) throw new Error('An error occurred while fetching the data.');\n return (await res.json()) as JSONObject;\n};\n\nexport const useGetStatus = (): SWRResponse<JSONObject, Error> => {\n const fetcher = () => fetchJson(`${GEN3_GUPPY_API}${statusEndpoint}`);\n return useSWR('explorerStatus', fetcher);\n};\n\nexport type AggregationResponse = Record<string, JSONObject>;\n\nexport interface RawDataAndTotalCountsParams {\n type: string;\n fields: string[];\n filters: FilterSet;\n sort?: ReadonlyArray<Record<string, 'asc' | 'desc'>>;\n offset?: number;\n size?: number;\n accessibility?: Accessibility;\n format?: string;\n}\n\n/*\n returns all the fields for a given type\n @param type: the type to get fields for\n @returns: a list of fields for the given type\n */\n\ninterface AccessibleDataSliceParams {\n type: string;\n fields: ReadonlyArray<string>;\n accessType: Accessibility;\n}\n\ninterface QueryAggsParams {\n type: string;\n fields: ReadonlyArray<string>;\n filters: FilterSet;\n accessibility?: Accessibility;\n}\n\ninterface QueryForSubAggsParams {\n type: string;\n mainField: string;\n numericAggAsText: boolean;\n termsFields?: ReadonlyArray<string>;\n missingFields?: ReadonlyArray<string>;\n gqlFilter?: FilterSet;\n accessibility?: Accessibility;\n}\n\ninterface QueryCountsParams {\n type: string;\n filters: FilterSet;\n accessibility?: Accessibility;\n}\n\ninterface QueryForFileCountSummaryParams {\n type: string;\n field: string;\n filters: FilterSet;\n accessibility?: Accessibility;\n}\n\n/**\n * The main endpoint used in templating Exploration page queries.\n * Includes table, filter and aggregation query types and leverages guppyApi defined in ./gupplApi.ts\n * Query templates support filters where applicable\n *\n * @param endpoints - Defines endpoints used in Exploration page:\n * @param getAllFieldsForType - A mapping query that returns all property key names vertex types specified.\n * @see https://github.com/uc-cdis/guppy/blob/master/doc/queries.md#mapping-query\n * @param getAccessibleData - An aggregation histogram counts query that filters based on access type\n * @see https://github.com/uc-cdis/guppy/blob/master/doc/queries.md#accessibility-argument-for-regular-tier-access-level\n * @param getRawDataAndTotalCounts - Queries both _totalCount for selected vertex types and\n * tabular results containing the raw data in the rows of selected vertex types\n * @see https://github.com/uc-cdis/guppy/blob/master/doc/queries.md#1-total-count-aggregation\n * @param getAggs - An aggregated histogram counts query which outputs vertex property frequencies\n * @param getSubAggs - TODO: not sure what this one does. Looks like nested aggregation\n * @param getCounts - Returns total counts of a vertex type\n * @returns: A guppy API endpoint for templating queriable data displayed on the exploration page\n */\nconst explorerApi = guppyApi.injectEndpoints({\n endpoints: (builder) => ({\n getAllFieldsForType: builder.query({\n query: (type: { type: string }) => ({\n query: `{ _mapping ${type} } }`,\n }),\n transformResponse: (response: Record<string, any>, _meta, params) => {\n return response[params.type];\n },\n }),\n getAccessibleData: builder.query({\n query: ({ type, fields, accessType }: AccessibleDataSliceParams) => {\n const fieldParts = fields.map(\n (field) => `${field} { histogram { key count } }`,\n );\n return {\n query: `_aggregation {\n ${type} (accessibility: ${accessType}) {\n ${fieldParts.join(',')}\n }\n }`,\n };\n },\n }),\n getRawDataAndTotalCounts: builder.query({\n query: ({\n type,\n fields,\n filters,\n sort,\n offset = 0,\n size = 20,\n accessibility = Accessibility.ALL,\n format = undefined,\n }: RawDataAndTotalCountsParams) => {\n const gqlFilter = convertFilterSetToGqlFilter(filters);\n const params = [\n ...(sort ? ['$sort: JSON'] : []),\n ...(gqlFilter ? ['$filter: JSON'] : []),\n ...(format ? ['$format: Format'] : []),\n ].join(',');\n const queryLine = `query getRawDataAndTotalCounts (${params}) {`;\n\n const dataParams = [\n ...(format ? ['format: $format'] : []),\n ...(sort ? ['sort: $sort'] : []),\n ...(gqlFilter ? ['filter: $filter'] : []),\n ].join(',');\n const dataTypeLine = `${type} (accessibility: ${accessibility}, offset: ${offset}, first: ${size},\n ${dataParams}) {`;\n\n const typeAggsLine = `${type} (${\n gqlFilter && 'filter: $filter,'\n } accessibility: ${accessibility}) {`;\n\n const processedFields = fields.map((field) =>\n rawDataQueryStrForEachField(field),\n );\n\n const query = `${queryLine}\n ${dataTypeLine}\n ${processedFields.join(' ')}\n }\n _aggregation {\n ${typeAggsLine}\n _totalCount\n }\n }\n }`;\n const variables = {\n ...(sort && { sort }),\n ...(gqlFilter && { filter: gqlFilter }),\n ...(format && { format }),\n };\n return { query, variables };\n },\n }),\n getAggs: builder.query<AggregationsData, QueryAggsParams>({\n query: ({\n type,\n fields,\n filters,\n accessibility = Accessibility.ALL,\n }: QueryAggsParams) => {\n const queryStart = isFilterEmpty(filters)\n ? `\n query getAggs {\n _aggregation {\n ${type} (accessibility: ${accessibility}) {`\n : `query getAggs ($filter: JSON) {\n _aggregation {\n ${type} (filter: $filter, filterSelf: false, accessibility: ${accessibility}) {`;\n const query = `${queryStart}\n ${fields.map((field: string) =>\n histogramQueryStrForEachField(field),\n )}\n }\n }\n }`;\n const queryBody: GraphQLQuery = {\n query: query,\n variables: { filter: convertFilterSetToGqlFilter(filters) },\n };\n return queryBody;\n },\n transformResponse: (response: Record<string, any>, _meta, args) => {\n return processHistogramResponse(response.data._aggregation[args.type]);\n },\n }),\n getSubAggs: builder.query<AggregationsData, QueryForSubAggsParams>({\n query: ({\n type,\n mainField,\n termsFields = undefined,\n missingFields = undefined,\n numericAggAsText = false,\n gqlFilter = undefined,\n accessibility = Accessibility.ALL,\n }: QueryForSubAggsParams) => {\n const nestedAggFields = {\n termsFields: termsFields,\n missingFields: missingFields,\n };\n\n const query = `query getSubAggs ( ${\n gqlFilter ?? '$filter: JSON,'\n } $nestedAggFields: JSON) {\n _aggregation {\n ${type} ( ${\n gqlFilter ?? 'filter: $filter, filterSelf: false,'\n } nestedAggFields: $nestedAggFields, accessibility: ${accessibility}) {\n ${nestedHistogramQueryStrForEachField(mainField, numericAggAsText)}\n }`;\n\n return {\n query: query,\n variables: {\n ...(gqlFilter && {\n filter: convertFilterSetToGqlFilter(gqlFilter),\n }),\n nestedAggFields: nestedAggFields,\n },\n };\n },\n transformResponse: (response: Record<string, any>, _meta, args) => {\n return processHistogramResponse(response.data._aggregation[args.type]);\n },\n }),\n getCounts: builder.query<number, QueryCountsParams>({\n query: ({\n type,\n filters,\n accessibility = Accessibility.ALL,\n }: QueryCountsParams) => {\n const gqlFilters = convertFilterSetToGqlFilter(filters);\n const queryLine = `query totalCounts ${\n gqlFilters ? '($filter: JSON)' : ''\n }{`;\n const typeAggsLine = `${type} ${\n gqlFilters ? '(filter: $filter, ' : '('\n } accessibility: ${accessibility}) {`;\n\n const query = `${queryLine} _aggregation {\n ${typeAggsLine}\n _totalCount\n }\n }\n }`;\n return {\n query: query,\n variables: {\n ...(gqlFilters && {\n filter: gqlFilters,\n }),\n },\n };\n },\n transformResponse: (\n response: Record<string, any>,\n _meta,\n args,\n ): number => {\n return response.data._aggregation[args.type]._totalCount;\n },\n }),\n getFieldCountSummary: builder.query<\n Record<string, any>,\n QueryForFileCountSummaryParams\n >({\n query: ({\n type,\n field,\n filters,\n accessibility = Accessibility.ALL,\n }: QueryForFileCountSummaryParams) => {\n const gqlFilters = convertFilterSetToGqlFilter(filters);\n const query = `query summary ($filter: JSON) {\n _aggregation {\n ${type} (filter: $filter, accessibility: ${accessibility}) {\n ${field} {\n histogram {\n sum,\n }\n }\n }\n }\n }`;\n return {\n query: query,\n variables: {\n ...(gqlFilters && {\n filter: gqlFilters,\n }),\n },\n };\n },\n }),\n getFieldsForIndex: builder.query({\n query: (index: string) => {\n return {\n query: `{\n _mapping ${index}\n }`,\n };\n },\n transformResponse: (response: Record<string, any>) => {\n return response['_mapping'];\n },\n }),\n generalGQL: builder.query<Record<string, unknown>, guppyApiSliceRequest>({\n query: ({ query, variables }) => {\n return {\n query: query,\n variables: variables,\n };\n },\n }),\n }),\n});\n\n// query for aggregate data\n// convert the function below to typescript\n\nconst histogramQueryStrForEachField = (field: string): string => {\n const splittedFieldArray = field.split('.');\n const splittedField = splittedFieldArray.shift();\n if (splittedFieldArray.length === 0) {\n return `\n ${splittedField} {\n histogram {\n key\n count\n }\n }`;\n }\n return `\n ${splittedField} {\n ${histogramQueryStrForEachField(splittedFieldArray.join('.'))}\n }`;\n};\n\nconst nestedHistogramQueryStrForEachField = (\n mainField: string,\n numericAggAsText: boolean,\n) => `\n ${mainField} {\n ${numericAggAsText ? 'asTextHistogram' : 'histogram'} {\n key\n count\n missingFields {\n field\n count\n }\n termsFields {\n field\n count\n terms {\n key\n count\n }\n }\n }\n }`;\n\nexport const rawDataQueryStrForEachField = (field: string): string => {\n const splitFieldArray = field.split('.');\n const splitField = splitFieldArray.shift();\n if (splitFieldArray.length === 0) {\n return `\n ${splitField}\n `;\n }\n return `\n ${splitField} {\n ${rawDataQueryStrForEachField(splitFieldArray.join('.'))}\n }`;\n};\n\nexport const useGetArrayTypes = () => {\n {\n const { data, error } = useGetStatus();\n if (error) {\n return {};\n }\n return data ? data['indices'] : {};\n }\n};\n\nexport const {\n useGetRawDataAndTotalCountsQuery,\n useGetAccessibleDataQuery,\n useGetAllFieldsForTypeQuery,\n useGetAggsQuery,\n useLazyGetAggsQuery,\n useGetSubAggsQuery,\n useGetCountsQuery,\n useGetFieldCountSummaryQuery,\n useGetFieldsForIndexQuery,\n useGeneralGQLQuery,\n useLazyGeneralGQLQuery,\n} = explorerApi;\n","import { JSONArray, JSONObject } from '../../types';\nimport { FILE_DELIMITERS } from '../../constants';\nimport { flatten } from 'flat';\nimport Papa, { UnparseConfig } from 'papaparse';\n\n/**\n * Flattens a deep nested JSON object skipping\n * the first level to avoid potentially flattening\n * non-nested data.\n * @param {JSON} json\n */\nexport function flattenJson(json: JSONObject) {\n const flattenedJson: JSONArray = [];\n Object.keys(json).forEach((key) => {\n flattenedJson.push(flatten(json[key], { delimiter: '_' }));\n });\n return flattenedJson;\n}\n\n/**\n * Converts JSON based on a config.\n * @param {JSON} json\n * @param {Object} config\n */\nexport async function conversion(json: JSONArray, config: UnparseConfig) {\n return Papa.unparse(json, config);\n}\n\n/**\n * Converts JSON to a specified file format.\n * Defaults to JSON if file format is not supported.\n * @param {JSON} json\n * @param {string} format\n */\nexport async function jsonToFormat(\n json: JSONObject,\n format: keyof typeof FILE_DELIMITERS,\n) {\n if (Object.keys(FILE_DELIMITERS).includes(format)) {\n const flatJson = await flattenJson(json);\n const data = await conversion(flatJson, {\n delimiter: FILE_DELIMITERS[format] as string,\n });\n return data;\n }\n return json;\n}\n","import { DownloadFromGuppyParams, GuppyDownloadDataParams } from './types';\nimport { GEN3_GUPPY_API } from '../../constants';\nimport { selectCSRFToken } from '../user';\nimport { coreStore } from '../../store';\nimport { convertFilterSetToGqlFilter } from '../filters';\nimport { jsonToFormat } from './conversion';\nimport { isJSONObject } from '../../types';\nimport { JSONPath } from 'jsonpath-plus';\nimport { useGetFieldsForIndexQuery } from './guppySlice';\n\n/**\n * Represents a configuration for making a fetch request.\n *\n * @typedef {Object} FetchConfig\n * @property {string} method - The HTTP method to use for the request.\n * @property {Object<string, string>} headers - The headers to include in the request.\n * @property {string} body - The request body.\n */\nexport type FetchConfig = {\n method: string;\n headers: Record<string, string>;\n body: string;\n};\n\n/**\n * Prepares a URL for downloading by appending '/download' to the provided apiUrl.\n *\n * @param {string} apiUrl - The base URL to be used for preparing the download URL.\n * @returns {URL} - The prepared download URL as a URL object.\n */\nconst prepareUrl = (apiUrl: string) => `${apiUrl}/download`;\n\n/**\n * Prepares a fetch configuration object for downloading files from Guppy.\n *\n * @param {GuppyFileDownloadRequestParams} parameters - The parameters to include in the request body.\n * @param {string} csrfToken - The CSRF token to include in the request headers.\n * @returns {FetchConfig} - The prepared fetch configuration object.\n */\nconst prepareFetchConfig = (\n parameters: GuppyDownloadDataParams,\n csrfToken?: string,\n): FetchConfig => {\n return {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(csrfToken !== undefined && { 'X-CSRF-Token': csrfToken }),\n // TODO: Add credentials\n },\n body: JSON.stringify({\n type: parameters.type,\n filter: convertFilterSetToGqlFilter(parameters.filter),\n accessibility: parameters.accessibility,\n fields: parameters?.fields,\n sort: parameters?.sort,\n }),\n };\n};\n\n/**\n * Downloads a file from Guppy using the provided parameters.\n * It will optionally convert the data to the specified format.\n *\n * @param {DownloadFromGuppyParams} parameters - The parameters to use for the download request.\n * @param onStart - The function to call when the download starts.\n * @param onDone - The function to call when the download is done.\n * @param onError - The function to call when the download fails.\n * @param onAbort - The function to call when the download is aborted.\n * @param signal - AbortSignal to use for the request.\n */\nexport const downloadFromGuppyToBlob = async ({\n parameters,\n onStart = () => null,\n onDone = (_: Blob) => null,\n onError = (_: Error) => null,\n onAbort = () => null,\n signal = undefined,\n}: DownloadFromGuppyParams) => {\n const csrfToken = selectCSRFToken(coreStore.getState());\n onStart?.();\n\n const url = prepareUrl(GEN3_GUPPY_API);\n const fetchConfig = prepareFetchConfig(parameters, csrfToken);\n\n fetch(url.toString(), {\n ...fetchConfig,\n ...(signal ? { signal: signal } : {}),\n } as RequestInit)\n .then(async (response: Response) => {\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n\n let jsonData = await response.json();\n if (parameters?.rootPath && parameters.rootPath) {\n // if rootPath is provided, extract the data from the rootPath\n jsonData = JSONPath({\n json: jsonData,\n path: `$.[${parameters.rootPath}]`,\n resultType: 'value',\n });\n }\n // convert the data to the specified format and return a Blob\n let str = '';\n if (parameters.format === 'json') {\n str = JSON.stringify(jsonData);\n } else {\n const convertedData = await jsonToFormat(jsonData, parameters.format);\n if (isJSONObject(convertedData)) {\n str = JSON.stringify(convertedData, null, 2);\n } else {\n str = convertedData;\n }\n }\n return new Blob([str], {\n type: 'application/json',\n });\n })\n .then((blob) => onDone?.(blob))\n .catch((error) => {\n // Abort is handle as an exception\n if (error.name == 'AbortError') {\n // handle abort()\n onAbort?.();\n }\n onError?.(error);\n });\n};\n\nexport const downloadJSONDataFromGuppy = async ({\n parameters,\n onAbort = () => null,\n signal = undefined,\n}: DownloadFromGuppyParams) => {\n const csrfToken = selectCSRFToken(coreStore.getState());\n\n const url = prepareUrl(GEN3_GUPPY_API);\n const fetchConfig = prepareFetchConfig(parameters, csrfToken);\n try {\n const response = await fetch(url.toString(), {\n ...fetchConfig,\n ...(signal ? { signal: signal } : {}),\n } as RequestInit);\n\n let jsonData = await response.json();\n if (parameters?.rootPath && parameters.rootPath) {\n // if rootPath is provided, extract the data from the rootPath\n jsonData = JSONPath({\n json: jsonData,\n path: `$.[${parameters.rootPath}]`,\n resultType: 'value',\n });\n }\n // convert the data to the specified format and return a Blob\n return jsonData;\n } catch (error: any) {\n // Abort is handle as an exception\n if (error.name == 'AbortError') {\n // handle abort()\n onAbort?.();\n }\n throw new Error(error);\n }\n};\n\nexport const useGetIndexFields = (index: string) => {\n const { data } = useGetFieldsForIndexQuery(index);\n return data ?? [];\n};\n","import { gen3Api } from '../gen3';\nimport { GEN3_GUPPY_API } from '../../constants';\nimport { convertFilterSetToGqlFilter, GQLFilter } from '../filters';\nimport { BaseGuppyDataRequest, GuppyDownloadDataParams } from './types';\n\nexport interface GuppyDownloadDataQueryParams extends BaseGuppyDataRequest {\n filter: GQLFilter;\n}\n\ninterface DownloadRequestStatus {\n readonly status: string;\n readonly message: string;\n}\n\n/**\n * Creates a Guppy API for fetching bulk (> 10K rows) elasticsearch data\n * @see https://github.com/uc-cdis/guppy/blob/master/doc/download.md\n * @param endpoints - Resolver function which configures the query with\n * type, filter, accessibility, fields, and sort arguments\n * @returns: A guppy download API for fetching bulk metadata\n */\nexport const downloadRequestApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n downloadFromGuppy: builder.mutation({\n query: ({\n type,\n filter,\n accessibility,\n fields,\n sort,\n }: GuppyDownloadDataParams) => {\n const queryBody: GuppyDownloadDataQueryParams = {\n filter: convertFilterSetToGqlFilter(filter),\n ...{ type, accessibility, fields, sort },\n };\n return {\n url: `${GEN3_GUPPY_API}/download`,\n method: 'POST',\n body: JSON.stringify(queryBody),\n cache: 'no-cache',\n };\n },\n transformResponse: (response: DownloadRequestStatus) => {\n return response;\n },\n }),\n }),\n});\n\nexport const { useDownloadFromGuppyMutation } = downloadRequestApi;\n","import { gen3ServicesReducer } from './features/gen3/gen3Api';\nimport { combineReducers } from '@reduxjs/toolkit';\nimport { userReducer } from './features/user/userSlice';\nimport { gen3AppReducer } from './features/gen3Apps/gen3AppsSlice';\nimport { drsHostnamesReducer } from './features/drsResolver';\nimport { modalReducer } from './features/modals/modalsSlice';\nimport { cohortReducer } from './features/cohort';\nimport { dataLibrarySelectionReducer } from './features/dataLibrary';\nimport { activeWorkspaceReducer } from './features/workspace/workspaceSlice';\n\nimport {\n userAuthApiReducerPath,\n userAuthApiReducer,\n} from './features/user/userSliceRTK';\n\nimport { guppyApiReducer, guppyApiSliceReducerPath } from './features/guppy';\n\nexport const rootReducer = combineReducers({\n gen3Services: gen3ServicesReducer,\n user: userReducer,\n gen3Apps: gen3AppReducer,\n drsHostnames: drsHostnamesReducer,\n modals: modalReducer,\n cohorts: cohortReducer,\n activeWorkspace: activeWorkspaceReducer,\n dataLibrarySelection: dataLibrarySelectionReducer,\n [guppyApiSliceReducerPath]: guppyApiReducer,\n [userAuthApiReducerPath]: userAuthApiReducer,\n});\n\nexport type CoreState = ReturnType<typeof rootReducer>;\n","import { configureStore } from '@reduxjs/toolkit';\nimport { setupListeners } from '@reduxjs/toolkit/query';\nimport { rootReducer } from './reducers';\nimport { gen3ServicesReducerMiddleware } from './features/gen3/gen3Api';\nimport { guppyAPISliceMiddleware } from './features/guppy/guppyApi';\nimport { userAuthApiMiddleware } from './features/user/userSliceRTK';\n\nexport const coreStore = configureStore({\n reducer: rootReducer,\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware().concat(\n gen3ServicesReducerMiddleware,\n guppyAPISliceMiddleware,\n userAuthApiMiddleware,\n ),\n});\n\nsetupListeners(coreStore.dispatch);\n\nexport type CoreDispatch = typeof coreStore.dispatch;\n","export const isNotDefined = (x: unknown): x is undefined => {\n return x === undefined || x === null || x === void 0;\n};\n\nexport const isObject = (x: unknown): x is Record<string, unknown> => {\n return typeof x === 'object';\n};\n\nexport const isArray = (x: unknown): x is ReadonlyArray<unknown> => {\n return Array.isArray(x);\n};\n\nexport const isString = (x: unknown): x is string => {\n return typeof x === 'string';\n};\n","/**\n * Prepares a URL for downloading by appending '/download' to the provided apiUrl.\n *\n * @param {string} apiUrl - The base URL to be used for preparing the download URL.\n * @returns {URL} - The prepared download URL as a URL object.\n */\nexport const prepareUrl = (apiUrl: string) => new URL(apiUrl + '/download');\n","import { selectCSRFToken } from '../features/user';\nimport { coreStore } from '../store';\nimport { GEN3_FENCE_API } from '../constants';\nimport { getCookie } from 'cookies-next';\n\nexport const HTTPErrorMessages: Record<number, string> = {\n // 4xx Client Errors\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Timeout',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Failed',\n 413: 'Payload Too Large',\n 414: 'URI Too Long',\n 415: 'Unsupported Media Type',\n 416: 'Range Not Satisfiable',\n 417: 'Expectation Failed',\n 418: \"I'm a teapot\",\n 421: 'Misdirected Request',\n 422: 'Unprocessable Entity',\n 423: 'Locked',\n 424: 'Failed Dependency',\n 425: 'Too Early',\n 426: 'Upgrade Required',\n 428: 'Precondition Required',\n 429: 'Too Many Requests',\n 431: 'Request Header Fields Too Large',\n 451: 'Unavailable For Legal Reasons',\n\n // 5xx Server Errors\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Timeout',\n 505: 'HTTP Version Not Supported',\n 506: 'Variant Also Negotiates',\n 507: 'Insufficient Storage',\n 508: 'Loop Detected',\n 510: 'Not Extended',\n 511: 'Network Authentication Required',\n};\n\nexport class HTTPError extends Error {\n constructor(\n public status: number,\n message: string,\n public responseData?: any,\n ) {\n super(message);\n this.name = 'HTTPError';\n }\n}\n\ninterface DownloadFromFenceParameters {\n guid: string;\n method?: 'GET' | 'POST';\n onStart?: () => void; // function to call when the download starts\n onDone?: (blob: Blob) => void; // function to call when the download is done\n onError?: (error: Error | HTTPError) => void; // function to call when the download fails\n onAbort?: () => void; // function to call when the download is aborted\n signal?: AbortSignal; // AbortSignal to use for the request\n}\n\nexport const fetchFencePresignedURL = async ({\n guid,\n method = 'GET',\n onAbort = () => null,\n signal = undefined,\n}: DownloadFromFenceParameters) => {\n const csrfToken = selectCSRFToken(coreStore.getState());\n\n const headers = new Headers();\n headers.set('Content-Type', 'application/json');\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n // NOTE: This cookie can only be accessed from the client side\n // in development mode. Otherwise, the cookie is set as httpOnly\n accessToken = getCookie('credentials_token');\n }\n if (csrfToken) headers.set('X-CSRF-Token', csrfToken);\n if (accessToken) headers.set('Authorization', `Bearer ${accessToken}`);\n\n const url = `${GEN3_FENCE_API}/user/data/download/${guid}`;\n try {\n const response = await fetch(url, {\n method: method,\n headers: headers,\n ...(signal ? { signal: signal } : {}),\n } as RequestInit);\n\n // Check if the response is ok before proceeding\n if (!response.ok) {\n let errorMessage: string;\n let errorData: any;\n\n try {\n // Attempt to parse error response as JSON\n errorData = await response.json();\n errorMessage = errorData.message || response.statusText;\n } catch {\n // If JSON parsing fails, use status text\n errorMessage = response.statusText;\n }\n\n throw new HTTPError(response.status, errorMessage, errorData);\n }\n\n return (await response.json())['url'];\n } catch (error: unknown) {\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n onAbort?.();\n }\n }\n throw error;\n }\n};\n","import React, { PropsWithChildren } from 'react';\nimport { Provider } from 'react-redux';\nimport { coreStore } from './store';\n\nexport const CoreProvider: React.FC<Record<string, unknown>> = ({\n children,\n}: PropsWithChildren) => {\n return <Provider store={coreStore}>{children}</Provider>;\n};\n","import { gen3Api } from '../gen3';\nimport { createSelector } from '@reduxjs/toolkit';\nimport { type AuthzMapping } from './types';\nimport { GEN3_AUTHZ_API } from '../../constants';\n\n/**\n * Creates the authzApi for checking arborist permissions for a selected user\n * @see https://petstore.swagger.io/?url=https://raw.githubusercontent.com/uc-cdis/arborist/master/docs/openapi.yaml#/auth/get_auth_mapping\n * @see https://github.com/uc-cdis/arborist/blob/master/docs/relationships.simplified.png\n * @returns: An arborist response dict of user permissions {method, service} for each resource path.\n */\nexport const authzApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getAuthzMappings: builder.query<AuthzMapping, void>({\n query: () => `${GEN3_AUTHZ_API}/mapping`,\n }),\n }),\n});\n\nexport const { useGetAuthzMappingsQuery } = authzApi;\n\nexport const selectAuthzMapping= authzApi.endpoints.getAuthzMappings.select();\n\nexport const selectAuthzMappingData = createSelector(\n selectAuthzMapping,\n authzMapping => authzMapping?.data ?? { mappings: [] }\n);\n","import { JSONObject } from '../../types';\nimport { gen3Api } from '../gen3';\nimport Queue from 'queue';\nimport { GEN3_CROSSWALK_API, GEN3_MDS_API } from '../../constants';\nimport { JSONPath } from 'jsonpath-plus';\nimport { CrosswalkInfo, IndexedMetadataFilters } from './types';\n\nexport interface Metadata {\n readonly entries: Array<Record<string, unknown>>;\n}\n\nexport type CrosswalkArray = Array<CrosswalkInfo>;\n\ninterface ToMapping {\n id: string;\n dataPath: string[];\n}\n\ninterface CrossWalkParams {\n readonly ids: string[];\n readonly toPaths: Array<ToMapping>;\n}\n\nexport interface MetadataResponse {\n data: Array<JSONObject>;\n hits: number;\n}\n\nexport interface MetadataPaginationParams {\n pageSize: number;\n offset: number;\n}\n\nexport interface MetadataRequestParams extends MetadataPaginationParams {\n guidType: string;\n studyField: string;\n}\n\ninterface IndexedMetadataRequestParams extends MetadataRequestParams {\n indexKeys: Array<string>;\n filterEmpty?: IndexedMetadataFilters;\n}\n\nconst HasEnoughData = (\n data: Record<string, any>,\n keys: string[],\n limit: number,\n) => {\n const numEmptyKeys = keys.filter(\n (k) =>\n Object.hasOwn(data, k) &&\n typeof data[k] === 'string' &&\n data[k].trim() === '',\n ).length;\n return numEmptyKeys < limit;\n};\n\n/**\n * Defines metadataApi service using a base URL and expected endpoints. Derived from gen3Api core API.\n *\n * @param endpoints - Defines endpoints used in discovery page\n * @param getAggMDS - Queries aggregate metadata service\n * @see https://github.com/uc-cdis/metadata-service/blob/master/docs/agg_mds.md\n * @see https://petstore.swagger.io/?url=https://raw.githubusercontent.com/uc-cdis/metadata-service/master/docs/openapi.yaml#/Aggregate/get_aggregate_metadata_aggregate_metadata_get\n * @param getMDS - Queries normal metadata service\n * @see https://petstore.swagger.io/?url=https://raw.githubusercontent.com/uc-cdis/metadata-service/master/docs/openapi.yaml#/Query/search_metadata_metadata_get\n * @param getIndexAggMDS - queries the Aggregate Metadata service and returns all common passed in indexKeys\n * @param getTags - Probably refering to Aggregate metadata service summary statistics query\n * @see https://petstore.swagger.io/?url=https://raw.githubusercontent.com/uc-cdis/metadata-service/master/docs/openapi.yaml#/Aggregate/get_aggregate_tags_aggregate_tags_get\n * @param getData - Looks like a duplicate of getMDS handler. unused in ./frontend package\n * @param getCrosswalkData - Maps ids from one source to another\n * @returns: A guppy download API for fetching bulk metadata\n */\nexport const metadataApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getAggMDS: builder.query<MetadataResponse, MetadataRequestParams>({\n query: ({ offset, pageSize }: MetadataRequestParams) => {\n return `${GEN3_MDS_API}/aggregate/metadata?flatten=true&pagination=true&offset=${offset}&limit=${pageSize}`;\n },\n transformResponse: (response: Record<string, any>, _meta, params) => {\n return {\n data: response.results.map((x: JSONObject) => {\n const objValues = Object.values(x);\n const firstValue = objValues\n ? (objValues.at(0) as JSONObject)\n : undefined;\n return firstValue ? firstValue[params.studyField] : undefined;\n }),\n hits: response.pagination.hits,\n };\n },\n }),\n getIndexAggMDS: builder.query<\n MetadataResponse,\n IndexedMetadataRequestParams\n >({\n query: ({ pageSize }: IndexedMetadataRequestParams) => {\n return `${GEN3_MDS_API}/aggregate/metadata?limit=${pageSize}`;\n },\n transformResponse: (response: Record<string, any>, _meta, params) => {\n const dataFromIndexes = params.indexKeys.reduce(\n (acc, key) => {\n if (response[key]) {\n acc.push(...response[key]);\n }\n return acc;\n },\n [] as Array<Record<string, any>>,\n );\n\n return {\n data: (\n dataFromIndexes.map((x: JSONObject) => {\n const objValues = Object.values(x);\n const objIds = Object.keys(x);\n let firstValue = objValues\n ? (objValues.at(0) as JSONObject)\n : undefined;\n\n if (params?.filterEmpty) {\n // remove any data that has < limit if defined\n if (\n firstValue &&\n !HasEnoughData(\n firstValue[params.studyField] as Record<string, any>,\n params.filterEmpty.keys,\n params.filterEmpty.limit,\n )\n )\n firstValue = undefined;\n }\n return firstValue\n ? {\n gen3MDSGUID: objIds.at(0),\n ...(firstValue[params.studyField] as Record<string, any>),\n }\n : undefined;\n }) as JSONObject[]\n ).filter((x: JSONObject | undefined) => x !== undefined),\n hits: dataFromIndexes.length,\n };\n },\n }),\n getMDS: builder.query<MetadataResponse, MetadataRequestParams>({\n query: ({ guidType, offset, pageSize }) => {\n return `${GEN3_MDS_API}/metadata?data=True&_guid_type=${guidType}&limit=${pageSize}&offset=${offset}`;\n },\n transformResponse: (response: Record<string, any>, _meta) => {\n return {\n data: Object.keys(response).map((guid) => response[guid]),\n hits: Object.keys(response).length,\n };\n },\n }),\n getTags: builder.query<Metadata, string>({\n query: () => 'tags',\n }),\n getData: builder.query<Metadata, string>({\n query: (params) => ({ url: `metadata?${params}` }),\n }),\n // TODO: Move this to own slice\n getCrosswalkData: builder.query<CrosswalkArray, CrossWalkParams>({\n queryFn: async (arg, _queryApi, _extraOptions, fetchWithBQ) => {\n const queryMultiple = async (): Promise<CrosswalkInfo[]> => {\n let result = [] as CrosswalkInfo[];\n const queue = Queue({ concurrency: 15 });\n for (const id of arg.ids) {\n queue.push(async (callback?: () => void) => {\n const response = await fetchWithBQ({\n url: `${GEN3_CROSSWALK_API}/metadata/${id}`,\n });\n\n if (response.error) {\n return { error: response.error };\n }\n\n const toData = arg.toPaths.reduce(\n (acc, path) => {\n acc[path.id] =\n JSONPath<string>({\n json: response.data as Record<string, any>,\n path: `$.[${path.dataPath}]`,\n resultType: 'value',\n })?.[0] ?? 'n/a';\n return acc;\n },\n {} as Record<string, string>,\n );\n\n result = [\n ...result,\n {\n from: id,\n to: toData,\n },\n ];\n if (callback) callback();\n\n return result;\n });\n }\n\n return new Promise((resolve, reject) => {\n queue.start((err: unknown) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n });\n });\n };\n\n const result = await queryMultiple();\n return { data: result };\n },\n }),\n }),\n});\n\nexport const {\n useGetAggMDSQuery,\n useGetMDSQuery,\n useGetTagsQuery,\n useGetDataQuery,\n useGetCrosswalkDataQuery,\n useLazyGetCrosswalkDataQuery,\n useGetIndexAggMDSQuery,\n} = metadataApi;\n","// using a random uuid v4 as the namespace\nexport const GEN3_APP_NAMESPACE = '7bfaa818-c69c-457e-8d87-413cf60c25f0';\n","import React, { ComponentType, useEffect } from 'react';\nimport { coreStore } from '../../store';\nimport { v5 as uuidv5 } from 'uuid';\nimport { addGen3AppMetadata, EntityType } from './gen3AppsSlice';\nimport {\n configureStore,\n Dispatch,\n Middleware,\n UnknownAction,\n} from '@reduxjs/toolkit';\nimport { Action, Store } from 'redux';\nimport {\n createDispatchHook,\n createSelectorHook,\n createStoreHook,\n Provider,\n ReactReduxContextValue,\n TypedUseSelectorHook,\n} from 'react-redux';\nimport {\n FLUSH,\n PAUSE,\n PERSIST,\n PURGE,\n REGISTER,\n REHYDRATE,\n} from 'redux-persist';\nimport { registerGen3App } from './gen3AppRegistry';\nimport { DataStatus } from '../../dataAccess';\nimport { CookiesProvider } from 'react-cookie';\nimport { GEN3_APP_NAMESPACE } from './constants';\n\nexport interface CreateGen3AppOptions<T> {\n readonly App: ComponentType<T>;\n readonly name: string;\n readonly version: string;\n readonly requiredEntityTypes: ReadonlyArray<EntityType>;\n}\n\nexport const getGen3AppId = (name: string, version: string): string => {\n const nameVersion = `${name}::${version}`;\n return uuidv5(nameVersion, GEN3_APP_NAMESPACE);\n};\n\n/**\n * Creates a Gen3App that is dynamically loaded\n */\nexport const createGen3App = <\n T extends Record<any, any> = Record<string, any>,\n>({\n App,\n name,\n version,\n requiredEntityTypes,\n}: CreateGen3AppOptions<T>): React.FC<T> => {\n // create a stable id for this app\n const nameVersion = `${name}::${version}`;\n const id = uuidv5(nameVersion, GEN3_APP_NAMESPACE);\n\n // need to create store and provider.\n // return a component representing this app\n // if component gets added to a list, then the list can be iterated in index.js and each provider component can be added\n // a route can be setup for the app\n\n // need to register its name, category, path, data requirements\n // this will be used to build page3\n // click app link\n // const store = configureStore({\n // // TODO allow user to pass in a reducer in CreateGen3AppOptions?\n // reducer: (state) => state,\n // devTools: {\n // name: `${nameVersion}::${id}`,\n // },\n // });\n\n const Gen3AppWrapper: React.FC<T> = (props: T) => {\n useEffect(() => {\n document.title = `GEN3 - ${name}`;\n });\n\n return <App {...props} />;\n };\n\n // add the app to the store\n coreStore.dispatch(\n addGen3AppMetadata({\n id,\n name,\n version,\n requiredEntityTypes,\n }),\n );\n registerGen3App(name, Gen3AppWrapper as unknown as React.ReactNode);\n\n return Gen3AppWrapper;\n};\n\nexport interface AppDataSelectorResponse<T> {\n readonly data?: T;\n readonly status: DataStatus;\n readonly error?: string;\n}\n\nexport interface UseAppDataResponse<T> {\n readonly data?: T;\n readonly error?: string;\n readonly isUninitialized: boolean;\n readonly isFetching: boolean;\n readonly isSuccess: boolean;\n readonly isError: boolean;\n}\n\nexport interface UseAppDataHook<P, T> {\n (...params: P[]): UseAppDataResponse<T>;\n}\n\nexport interface CreateGEN3AppStore {\n readonly name: string;\n readonly version: string;\n readonly reducers: (...args: any) => any;\n middleware?: Middleware<unknown, any, Dispatch<UnknownAction>>;\n}\n\n// ----------------------------------------------------------------------------------------\n// Apps with Local Storage\n//\n\nexport const createAppStore = (\n options: CreateGEN3AppStore,\n): Record<any, any> => {\n const { name, version, reducers, middleware } = options;\n const nameVersion = `${name}::${version}`;\n const id = uuidv5(nameVersion, GEN3_APP_NAMESPACE);\n\n const store = configureStore({\n reducer: reducers,\n devTools: {\n name: `${nameVersion}::${id}`,\n },\n middleware: (getDefaultMiddleware) =>\n middleware\n ? getDefaultMiddleware({\n serializableCheck: {\n ignoredActions: [\n FLUSH,\n REHYDRATE,\n PAUSE,\n PERSIST,\n PURGE,\n REGISTER,\n ],\n },\n }).concat(middleware)\n : getDefaultMiddleware({\n serializableCheck: {\n ignoredActions: [\n FLUSH,\n REHYDRATE,\n PAUSE,\n PERSIST,\n PURGE,\n REGISTER,\n ],\n },\n }),\n });\n type AppState = ReturnType<typeof reducers>;\n const context = React.createContext<ReactReduxContextValue | null>(null);\n\n type AppDispatch = typeof store.dispatch;\n const useAppSelector: TypedUseSelectorHook<AppState> =\n createSelectorHook(context);\n const useAppDispatch: () => AppDispatch = createDispatchHook(context);\n const useAppStore = createStoreHook(context);\n\n return {\n id: id,\n AppStore: store,\n AppContext: context,\n useAppSelector: useAppSelector,\n useAppDispatch: useAppDispatch,\n useAppStore: useAppStore,\n };\n};\n\nexport interface CreateGen3AppWithOwnStoreOptions<\n T extends Record<any, any> = Record<string, any>,\n A extends Action = UnknownAction,\n S = any,\n> {\n readonly App: ComponentType<T>;\n readonly id: string; // unique id for this app\n readonly name: string; // name of the app\n readonly version: string; // version of the app, should be unique\n readonly requiredEntityTypes: ReadonlyArray<EntityType>;\n readonly store: Store<S, A>; // the redux-store for this app\n readonly context: any;\n}\n\nexport const createGen3AppWithOwnStore = <\n T extends Record<any, any> = Record<string, any>,\n A extends Action = UnknownAction,\n S = any,\n>(\n options: CreateGen3AppWithOwnStoreOptions<T, A, S>,\n): React.ReactNode => {\n const { App, id, name, version, requiredEntityTypes, store, context } =\n options;\n\n // need to create store and provider.\n // return a component representing this app\n // if component gets added to a list, then the list can be iterated in index.js and each provider component can be added\n // a route can be setup for the app\n\n // need to register its name, category, path, data requirements\n // this will be used to build page3\n // click app link\n\n const Gen3AppWrapper: React.FC<T> = (props: T) => {\n useEffect(() => {\n document.title = `GEN3 - ${name}`;\n });\n\n return (\n <Provider store={store} context={context}>\n <CookiesProvider>\n <App {...props} />\n </CookiesProvider>\n </Provider>\n );\n };\n\n // add the app to the store\n coreStore.dispatch(\n addGen3AppMetadata({\n id,\n name,\n version,\n requiredEntityTypes,\n }),\n );\n registerGen3App(name, Gen3AppWrapper as unknown as React.ReactNode);\n return Gen3AppWrapper as unknown as React.ReactNode;\n};\n","import * as React from 'react';\nimport {\n createDispatchHook,\n createStoreHook,\n ReactReduxContextValue,\n useSelector,\n} from 'react-redux';\nimport {\n ApiModules,\n buildCreateApi,\n coreModule,\n CreateApi,\n reactHooksModule,\n BaseQueryFn,\n fetchBaseQuery,\n} from '@reduxjs/toolkit/query/react';\nimport { configureStore } from '@reduxjs/toolkit';\nimport {\n FLUSH,\n PAUSE,\n PERSIST,\n PURGE,\n REGISTER,\n REHYDRATE,\n} from 'redux-persist';\nimport { GEN3_API } from '../../constants';\nimport { getCookie } from 'cookies-next';\n\nexport const createAppApiForRTKQ = (\n reducerPath: string,\n baseQuery?: BaseQueryFn,\n) => {\n const appContext = React.createContext<ReactReduxContextValue | null>(null);\n\n type AppState = any;\n const useAppSelector = useSelector.withTypes<AppState>();\n const useAppDispatch = createDispatchHook(appContext);\n const useAppStore = createStoreHook(appContext);\n\n const appCreateApi: CreateApi<keyof ApiModules<any, any, any, any>> =\n buildCreateApi(\n coreModule(),\n reactHooksModule({\n hooks: {\n useDispatch: useAppDispatch,\n useSelector: useAppSelector,\n useStore: useAppStore,\n },\n }),\n );\n\n const appRTKQApi = appCreateApi({\n reducerPath: reducerPath,\n baseQuery:\n baseQuery ??\n fetchBaseQuery({\n baseUrl: `${GEN3_API}`,\n prepareHeaders: (headers) => {\n headers.set('Content-Type', 'application/json');\n let accessToken = undefined;\n if (process.env.NODE_ENV === 'development') {\n // NOTE: This cookie can only be accessed from the client side\n // in development mode. Otherwise, the cookie is set as httpOnly\n accessToken = getCookie('credentials_token');\n }\n if (accessToken)\n headers.set('Authorization', `Bearer ${accessToken}`);\n return headers;\n },\n }),\n endpoints: () => ({}),\n });\n\n const appMiddleware = appRTKQApi.middleware;\n const appStore = configureStore({\n reducer: {\n [appRTKQApi.reducerPath]: appRTKQApi.reducer,\n },\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware({\n serializableCheck: {\n ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],\n },\n }).concat(appMiddleware),\n });\n\n return {\n useAppSelector: useAppSelector,\n useAppDispatch: useAppDispatch,\n useAppStore: useAppStore,\n AppContext: appContext,\n appApi: appRTKQApi,\n appContext: appContext,\n appStore: appStore,\n };\n};\n","import { gen3Api } from '../gen3';\nimport { JSONObject } from '../../types';\nimport { GEN3_GUPPY_API } from '../../constants';\n\nexport const graphQLWithTags = gen3Api.enhanceEndpoints({\n addTagTypes: ['graphQL'],\n});\n\n/**\n * Creates a graphQLAPI for graphql queries to elasticsearch indices via guppy\n * @see https://github.com/uc-cdis/guppy/blob/master/doc/queries.md\n * @param query - Resolver function which configures the graphql query with graphQLParams argument\n * @returns: A guppy search API for fetching metadata\n */\nexport const graphQLAPI = graphQLWithTags.injectEndpoints({\n endpoints: (builder) => ({\n graphQL: builder.query<JSONObject, JSONObject>({\n query: (graphQLParams) => ({\n url: `${GEN3_GUPPY_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify(graphQLParams),\n }),\n }),\n }),\n});\n\nexport const { useGraphQLQuery } = graphQLAPI;\n","import { GEN3_AI_SEARCH_API } from '../../constants';\nimport { gen3Api } from '../gen3';\n\ninterface AiSearchParams {\n readonly query: string;\n}\n\ninterface AiSearchRequestParams extends AiSearchParams {\n readonly topic?: string;\n readonly conversationId?: string;\n}\n\nexport interface AiSearchResponse extends AiSearchParams {\n readonly topic: string;\n readonly conversationId: string;\n readonly response: string;\n readonly documents: {\n readonly page_content: string;\n readonly metadata: {\n readonly row: number;\n readonly source: string;\n };\n }[];\n}\n\n/**\n * returns a response from the AI search service\n * @param searchParams - the parameters for the AI search service\n * @returns the response from the AI search service\n */\nexport const aiSearchApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n askQuestion: builder.mutation<AiSearchResponse, AiSearchRequestParams>({\n query: (searchParams: AiSearchRequestParams) => ({\n url: `${GEN3_AI_SEARCH_API}/ask`,\n method: 'POST',\n credentials: 'include',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query: searchParams.query,\n ...(searchParams.topic ? { topic: searchParams.topic } : {}),\n ...(searchParams.conversationId ? { conversation_id: searchParams.conversationId } : {}),\n }),\n }),\n transformResponse: (data: Record<string, any>, _, arg) => {\n return {\n query: arg.query,\n response: data.response,\n topic: data.topic,\n conversationId: data.conversation_id,\n documents: data.documents,\n };\n },\n }),\n /**\n * returns the status of the AI search service\n * @returns {\n * status: string\n * timestamp: string\n * }\n */\n getAISearchStatus: builder.query<AiSearchResponse, void>({\n query: () => `${GEN3_AI_SEARCH_API}/_status`,\n }),\n getAISearchVersion: builder.query<AiSearchResponse, void>({\n query: () => `${GEN3_AI_SEARCH_API}/_version`,\n }),\n })\n});\n\n// Add more endpoints here\n\nexport const {\n useAskQuestionMutation,\n useGetAISearchStatusQuery,\n useGetAISearchVersionQuery\n} = aiSearchApi;\n","import { gen3Api } from '../gen3';\nimport { GEN3_WORKSPACE_API } from '../../constants';\nimport {\n PayModel,\n PodStatus,\n WorkspaceInfo,\n WorkspaceInfoResponse,\n WorkspaceOptions,\n WorkspaceOptionsResponse,\n WorkspacePayModelResponse,\n WorkspaceStatus,\n WorkspaceStatusResponse,\n} from './types';\nimport { selectActiveWorkspaceStatus } from './workspaceSlice';\nimport { CoreState } from '../../reducers';\nimport { isFetchParseError, isHttpStatusError } from '../../types';\nimport { createSelector } from '@reduxjs/toolkit';\n\ninterface WorkspacePayModelRawResponse {\n current_pay_model: PayModel;\n all_pay_models: Array<PayModel>;\n}\n\nconst WorkspaceWithTags = gen3Api.enhanceEndpoints({\n addTagTypes: ['Workspace', 'PayModel'],\n});\n\nexport const EmptyWorkspaceStatusResponse: WorkspaceStatusResponse = {\n status: WorkspaceStatus.NotFound,\n conditions: [],\n containerStates: [],\n idleTimeLimit: 0,\n lastActivityTime: 0,\n workspaceType: '',\n};\n\nexport const workspacesApi = WorkspaceWithTags.injectEndpoints({\n endpoints: (builder) =>\n ({\n getWorkspaceOptions: builder.query<WorkspaceOptions, void>({\n query: () => `${GEN3_WORKSPACE_API}/options`,\n transformResponse: (response: WorkspaceOptionsResponse) => {\n return response.map((workspace: WorkspaceInfoResponse) => {\n return {\n id: workspace.id,\n name: workspace.name,\n idleTimeLimit: workspace['idle-time-limit'],\n memoryLimit: workspace['memory-limit'],\n cpuLimit: workspace['cpu-limit'],\n } as WorkspaceInfo;\n });\n },\n }),\n getWorkspacePayModels: builder.query<WorkspacePayModelResponse, void>({\n query: () => `${GEN3_WORKSPACE_API}/allpaymodels`,\n providesTags: ['PayModel'],\n transformResponse: (response: WorkspacePayModelRawResponse) => {\n return {\n currentPayModel: response.current_pay_model,\n allPayModels: response.all_pay_models,\n noPayModel: false,\n };\n },\n }),\n getActivePayModel: builder.query<PayModel, void>({\n query: () => `${GEN3_WORKSPACE_API}/paymodels`,\n providesTags: ['PayModel'],\n }),\n setCurrentPayModel: builder.mutation<void, string>({\n query: (id: string) => ({\n url: `${GEN3_WORKSPACE_API}/setpaymodel`,\n method: 'POST',\n body: id,\n invalidatesTags: ['PayModel'],\n }),\n }),\n getWorkspaceStatus: builder.query<WorkspaceStatusResponse, void>({\n queryFn: async (_arg0, queryApi, _extraOptions, fetchWithBQ) => {\n const currentWorkspaceStatus = selectActiveWorkspaceStatus(\n queryApi.getState() as CoreState,\n );\n\n const workspaceStatus = await fetchWithBQ(\n `${GEN3_WORKSPACE_API}/status`,\n );\n if (workspaceStatus.error) {\n return workspaceStatus;\n }\n\n // TODO: try to find out IF this is code is required\n const workspaceStatusData =\n workspaceStatus.data as unknown as WorkspaceStatusResponse;\n\n if (\n workspaceStatusData.status === WorkspaceStatus.Running &&\n (currentWorkspaceStatus === 'Not Found' ||\n currentWorkspaceStatus === 'Launching')\n ) {\n const proxyStatus = await fetchWithBQ(\n `${GEN3_WORKSPACE_API}/proxy/`,\n );\n let statusError = undefined;\n if (isFetchParseError(proxyStatus.error)) {\n statusError = proxyStatus.error.originalStatus;\n }\n\n if (isHttpStatusError(proxyStatus.error)) {\n statusError = proxyStatus.error.status;\n }\n\n if (statusError && statusError !== 200) {\n return {\n data: {\n ...workspaceStatusData,\n status: WorkspaceStatus.Launching,\n conditions: [\n {\n type: 'ProxyConnected',\n status: PodStatus.False,\n },\n ],\n } as WorkspaceStatusResponse,\n };\n }\n }\n return { data: workspaceStatus.data as WorkspaceStatusResponse };\n },\n providesTags: ['Workspace'],\n }),\n launchWorkspace: builder.mutation<boolean, string>({\n query: (id) => {\n return {\n url: `${GEN3_WORKSPACE_API}/launch?id=${id}`,\n method: 'POST',\n invalidatesTags: ['Workspace'],\n responseHandler: (response) => response.text(),\n };\n },\n transformResponse: async (response: string) => {\n return !!(response && response === 'Success');\n },\n }),\n terminateWorkspace: builder.mutation<void, void>({\n query: () => ({\n url: `${GEN3_WORKSPACE_API}/terminate`,\n method: 'POST',\n invalidatesTags: ['Workspace'],\n responseHandler: (response) => response.text(),\n }),\n }),\n }) as const,\n});\n\nexport const {\n useGetWorkspaceOptionsQuery,\n useGetWorkspacePayModelsQuery,\n useGetWorkspaceStatusQuery,\n useGetActivePayModelQuery,\n useSetCurrentPayModelMutation,\n useLaunchWorkspaceMutation,\n useTerminateWorkspaceMutation,\n} = workspacesApi;\n\nexport const workspaceStatusSelector =\n workspacesApi.endpoints.getWorkspaceStatus.select();\n\nexport const selectWorkspaceStatusFromService = createSelector(\n workspaceStatusSelector,\n (status) =>\n status.data ?? {\n ...EmptyWorkspaceStatusResponse,\n },\n);\n\nexport const selectWorkspaceStatus = createSelector(\n workspaceStatusSelector,\n (status) => status?.data?.status ?? WorkspaceStatus.NotFound,\n);\n","import { WorkspaceStatus } from './types';\n\nexport const isWorkspaceActive = (status: WorkspaceStatus) =>\n status === WorkspaceStatus.Running ||\n status === WorkspaceStatus.Launching ||\n status === WorkspaceStatus.Terminating;\n\nexport const isWorkspaceRunningOrStopping = (status: WorkspaceStatus) =>\n status === WorkspaceStatus.Running || status === WorkspaceStatus.Terminating;\n","export const resourcePathFromProjectID = (projectID: string): string => {\n const split = projectID.split('-');\n const program = split[0];\n const project = split.slice(1).join('-');\n const resourcePath = ['/programs', program, 'projects', project].join('/');\n return resourcePath;\n};\n\nexport const isRootUrl = (urlFragment: string): boolean => urlFragment === '_root';\n\nexport const isProgramUrl = (urlFragment: string): boolean => urlFragment !== '_root' && !urlFragment.includes('-');\n\nexport const userHasSheepdogProgramAdmin = (userAuthMapping: Record<string, any> = {}): boolean => userAuthMapping['/services/sheepdog/submission/program'] !== undefined;\n\nexport const userHasSheepdogProjectAdmin = (userAuthMapping: Record<string, any> = {}): boolean => userAuthMapping['/services/sheepdog/submission/project'] !== undefined;\n\nexport const projectCodeFromResourcePath = (resourcePath: string): string => {\n const split = resourcePath.split('/');\n return (split.length < 5 || split[1] !== 'programs' || split[3] !== 'projects') ? '' : split[4];\n};\n\nexport const listifyMethodsFromMapping = (actions: { service: string, method: string }[]): string[] => {\n const reducer = (accumulator: string[], currval: { service: string, method: string }): string[] => accumulator.concat([currval.method]);\n return actions.reduce(reducer, []);\n};\n\nexport const userHasDataUpload = (userAuthMapping: Record<string, any> = {}): boolean => {\n const actionIsFileUpload = (x: { method: string }): boolean => x.method === 'file_upload';\n const resource = userAuthMapping['/data_file'];\n return resource !== undefined && resource.some(actionIsFileUpload);\n};\n\nexport const userHasMethodForServiceOnResource = (method: string, service: string, resourcePath: string, userAuthMapping: Record<string, any> = {}): boolean => {\n const actions = userAuthMapping[resourcePath];\n return actions !== undefined && actions.some((x: { service: string, method: string }) => ((x.service === service || x.service === '*') && (x.method === method || x.method === '*')));\n};\n\nexport const userHasMethodForServiceOnProject = (method: string, service: string, projectID: string, userAuthMapping: Record<string, any> = {}): boolean => {\n const resourcePath = resourcePathFromProjectID(projectID);\n return userHasMethodForServiceOnResource(method, service, resourcePath, userAuthMapping);\n};\n\nexport const userHasMethodOnAnyProject = (method: string, userAuthMapping: Record<string, any> = {}): boolean => {\n const actionHasMethod = (x: { method: string }): boolean => (x.method === method);\n const actionArrays = Object.values(userAuthMapping);\n const hasMethod = actionArrays.some((x: { method: string }[]) => x.some(actionHasMethod));\n return hasMethod;\n};\n\nexport const userHasCreateOrUpdateOnAnyProject = (userAuthMapping: Record<string, any> = {}): boolean => (userHasMethodOnAnyProject('create', userAuthMapping)\n || userHasMethodOnAnyProject('update', userAuthMapping));\n","type JsonPathMapping = { [key: string]: string };\n\nexport interface JSONObject {\n [k: string]: JSONValue;\n}\n\nexport type JSONValue = string | number | boolean | JSONValue[] | JSONObject;\n\nimport { JSONPath } from 'jsonpath-plus';\n\nexport const extractValuesFromObject = (jsonPathMappings: JsonPathMapping, obj: JSONObject): JSONObject =>{\n const result: { [key: string]: any } = {};\n\n const extractObjectValue = (jsonPath: string, obj: JSONObject): JSONValue | undefined => {\n const extractedValues = JSONPath({ path: jsonPath, json: obj });\n return extractedValues.length > 0 ? extractedValues[0] : undefined;\n };\n\n for (const key in jsonPathMappings) {\n if (key in Object.keys(jsonPathMappings)) {\n // Extract value from object and store it in the result.\n result[key] = extractObjectValue(jsonPathMappings[key], obj);\n }\n }\n\n return result;\n};\n","import { gen3Api } from '../gen3';\nimport { GEN3_SUBMISSION_API } from '../../constants';\nimport {\n Project,\n ProjectResponse,\n ProjectsListRequestParams,\n SubmissionInfo,\n SubmissionGraphqlParams,\n SubmissionGraphqlResponse,\n} from './types';\nimport { JSONObject } from '../../types';\nimport { extractValuesFromObject } from '../../utils/extractvalues';\nimport type { FetchBaseQueryError } from '@reduxjs/toolkit/query';\n\ninterface ProjectFetchQueryResponse {\n data: {\n data: {\n project: Array<Project>;\n };\n };\n}\n\n/**\n * Project details from the project query\n */\ninterface ProjectInfoFromProjectDetails {\n name: string;\n id: string;\n code: string;\n}\n\ninterface ProjectDetailsResponse\n extends Record<\n string,\n string | number | Array<ProjectInfoFromProjectDetails>\n > {\n project: Array<ProjectInfoFromProjectDetails>;\n}\n\ninterface ProjectDetailsFetchQueryResponse {\n data: {\n data: ProjectDetailsResponse;\n };\n}\n\n/**\n * Project details results a list of project details\n * and the project information\n */\ninterface ProjectDetailsResults {\n [key: string]: string | number | ProjectInfoFromProjectDetails;\n project: ProjectInfoFromProjectDetails;\n}\n\nexport interface ProjectDetailsQueryResponse {\n details: ProjectDetailsResults[];\n hits: number;\n}\n\ninterface SubmissionQueryResponse {\n transactionList: SubmissionInfo[];\n}\n\nconst SubmissionGraphqlQuery = `query transactionList {\n transactionList: transaction_log(last: 20) {\n id\n submitter\n project_id\n created_datetime\n documents {\n doc_size\n doc\n id\n }\n state\n }\n}`;\n\n/**\n * Defines submissionApi service using a base URL and expected endpoints. Derived from gen3Api core API.\n * @param endpoints - Defines endpoints used in submission page\n * @param getProjects - Queries the list of projects\n * @param getProjectsDetails - Queries the list of projects and their details\n * @param getSubmissionGraphQL - Queries the submission graphql with a query and variables\n * @returns: A submission API for fetching project details\n */\nexport const submissionApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getProjects: builder.query<ProjectResponse, JSONObject>({\n query: (graphQLParams) => ({\n url: `${GEN3_SUBMISSION_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify(graphQLParams),\n }),\n transformResponse: (response: Record<string, any>, _meta) => {\n return {\n projects: response.data.project,\n };\n },\n }),\n getSubmissions: builder.query<SubmissionQueryResponse, void>({\n query: () => ({\n url: `${GEN3_SUBMISSION_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify({\n query: SubmissionGraphqlQuery,\n }),\n }),\n transformResponse: (response: Record<string, any>, _meta) => {\n return {\n transactionList: response.data.transactionList,\n };\n },\n }),\n getProjectsDetails: builder.query<\n ProjectDetailsQueryResponse,\n ProjectsListRequestParams\n >({\n async queryFn(args, _queryApi, _extraOptions, fetchWithBQ) {\n // get the list of projects\n const projectsResponse = await fetchWithBQ({\n url: `${GEN3_SUBMISSION_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify(args.projectQuery),\n });\n if (projectsResponse.error)\n return { error: projectsResponse.error as FetchBaseQueryError };\n\n const projects = (projectsResponse as ProjectFetchQueryResponse)?.data\n .data.project;\n const projectIds = projects.map((p) => p.project_id);\n\n // given the list of projects, get all of them by executing the projectDetailsQuery for each project\n const projectDetails = await Promise.all(\n projectIds.map(async (projectId) => {\n const result = await fetchWithBQ({\n url: `${GEN3_SUBMISSION_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify({\n ...args.projectDetailsQuery,\n variables: {\n name: projectId,\n },\n }),\n });\n const { project, ...values } = (\n result as ProjectDetailsFetchQueryResponse\n ).data.data;\n\n return result.data\n ? {\n data: args.mapping\n ? ({\n ...extractValuesFromObject(\n args.mapping,\n values as JSONObject,\n ),\n project: project[0],\n } as ProjectDetailsResults)\n : ({\n ...values,\n project: project[0],\n } as ProjectDetailsResults),\n }\n : { error: result.error };\n }),\n );\n\n // if any of the projectDetails has an error, return the error\n if (projectDetails.some((detail) => 'error' in detail)) {\n return {\n error: projectDetails.find(\n (detail) => 'error' in detail,\n ) as FetchBaseQueryError,\n };\n } else\n return {\n data: {\n details: projectDetails.reduce((acc, detail) => {\n acc.push(\n detail.data ?? {\n project: {\n name: '',\n id: '',\n code: '',\n },\n },\n );\n return acc;\n }, [] as ProjectDetailsResults[]),\n hits: projectIds.length, // TODO this needs to be changed to show the total number of projects\n },\n };\n },\n }),\n getSubmissionGraphQL: builder.query<\n SubmissionGraphqlResponse,\n SubmissionGraphqlParams\n >({\n query: (graphQLParams) => ({\n url: `${GEN3_SUBMISSION_API}/graphql`,\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify({\n query: graphQLParams.query,\n ...(graphQLParams.variables\n ? { variables: graphQLParams.variables }\n : {}),\n }),\n }),\n transformResponse: (response: Record<string, any>, _meta, params) => {\n if (params.mapping) {\n return {\n data: extractValuesFromObject(params.mapping, response.data),\n };\n }\n return response.data;\n },\n }),\n getDictionary: builder.query<SubmissionGraphqlResponse, void>({\n query: () => ({\n url: `${GEN3_SUBMISSION_API}/_dictionary/_all/`,\n }),\n }),\n }),\n});\n\nexport const {\n useGetProjectsQuery,\n useGetSubmissionGraphQLQuery,\n useGetProjectsDetailsQuery,\n useLazyGetProjectsQuery,\n useLazyGetSubmissionGraphQLQuery,\n useGetSubmissionsQuery,\n useGetDictionaryQuery,\n} = submissionApi;\n","import { gen3Api } from '../gen3';\nimport { GEN3_SOWER_API } from '../../constants';\nimport { JSONObject } from '../../types';\nimport { JobStatus } from './types';\n\nexport interface DispatchJobParams {\n action: string;\n input: JSONObject;\n}\n\nexport interface DispatchJobResponse {\n uid: string;\n name: string;\n status: string;\n}\n\ntype JobListResponse = Array<JobStatus>;\n\n/**\n * Creates a loadingStatusApi for checking the status of a sower data download job\n * @param getJobList Shows the list of jobs currently running\n * @see https://petstore.swagger.io/?url=https://raw.githubusercontent.com/uc-cdis/sower/master/openapis/openapi.yaml#/sower/list\n * @param getDownloadStatus Shows the status of a selected job\n * @returns: A sower job response dict which returns job information of file downloads\n */\nexport const loadingStatusApi = gen3Api.injectEndpoints({\n endpoints: (builder) => ({\n getSowerJobList: builder.query<JobListResponse, void>({\n query: () => `${GEN3_SOWER_API}/list`,\n }),\n submitSowerJob: builder.mutation<DispatchJobResponse, DispatchJobParams>({\n query: (params) => ({\n url: `${GEN3_SOWER_API}/dispatch`,\n method: 'POST',\n body: params,\n }),\n }),\n getSowerJobStatus: builder.query<DispatchJobResponse, string>({\n query: (uid) => `${GEN3_SOWER_API}/status?UID=${uid}`,\n }),\n getSowerOutput: builder.query<DispatchJobResponse, string>({\n query: (uid) => `${GEN3_SOWER_API}/output?UID=${uid}`,\n }),\n getSowerServiceStatus: builder.query<JSON, void>({\n query: () => `${GEN3_SOWER_API}/_status`,\n }),\n }),\n});\n\nexport const {\n useGetSowerJobListQuery,\n useLazyGetSowerJobListQuery,\n useSubmitSowerJobMutation,\n useGetSowerJobStatusQuery,\n useGetSowerOutputQuery,\n useGetSowerServiceStatusQuery,\n} = loadingStatusApi;\n"],"names":["GEN3_COMMONS_NAME","process","env","GEN3_API","NEXT_PUBLIC_GEN3_API","GEN3_DOMAIN","NEXT_PUBLIC_GEN3_DOMAIN","GEN3_GUPPY_API","NEXT_PUBLIC_GEN3_GUPPY_API","GEN3_MDS_API","NEXT_PUBLIC_GEN3_MDS_API","GEN3_DOWNLOADS_ENDPOINT","NEXT_PUBLIC_GEN3_DOWNLOADS_ENDPOINT","GEN3_FENCE_API","NEXT_PUBLIC_GEN3_FENCE_API","GEN3_AI_SEARCH_API","NEXT_PUBLIC_GEN3_AI_SEARCH_API","GEN3_AUTHZ_API","NEXT_PUBLIC_GEN3_AUTHZ_API","GEN3_REDIRECT_URL","NEXT_PUBLIC_GEN3_REDIRECT_URL","GEN3_WORKSPACE_API","NEXT_PUBLIC_GEN3_WORKSPACE_STATUS_API","GEN3_SUBMISSION_API","NEXT_PUBLIC_GEN3_SUBMISSION_API","GEN3_WTS_API","NEXT_PUBLIC_GEN3_WTS_API","GEN3_DATA_LIBRARY_API","NEXT_PUBLIC_GEN3_DATA_LIBRARY_API","GEN3_CROSSWALK_API","NEXT_PUBLIC_GEN3_CROSSWALK_API","GEN3_SOWER_API","NEXT_PUBLIC_GEN3_SOWER_API","Accessibility","FILE_DELIMITERS","tsv","csv","buildFetchError","res","request","url","status","statusText","text","fetchFence","endpoint","headers","body","method","isJSON","fetch","JSON","stringify","ok","data","json","userAuthApi","createApi","reducerPath","refetchOnMountOrArgChange","refetchOnReconnect","baseQuery","getState","results","csrfToken","selectCSRFToken","accessToken","undefined","NODE_ENV","getCookie","Accept","Authorization","credentials","e","endpoints","builder","fetchUserDetails","query","transformResponse","response","loginStatus","username","getCSRF","csrf","EMPTY_USER","useFetchUserDetailsQuery","useLazyFetchUserDetailsQuery","useGetCSRFQuery","userAuthApiMiddleware","middleware","userAuthApiReducerPath","userAuthApiReducer","reducer","selectUserDetailsFromState","select","selectUserDetails","createSelector","userDetails","selectUserAuthStatus","userLoginState","QueryStatus","pending","uninitialized","selectCSRFTokenData","passThroughTheState","state","gen3Services","selectHeadersWithCSRFToken","gen3Api","fetchBaseQuery","baseUrl","prepareHeaders","set","gen3ServicesReducer","gen3ServicesReducerMiddleware","loginProvidersApi","injectEndpoints","getLoginProviders","getDownload","guid","useGetLoginProvidersQuery","useGetDownloadQuery","useLazyGetDownloadQuery","logoutFence","redirect","credentialsWithTags","enhanceEndpoints","addTagTypes","credentialsApi","getCredentials","providesTags","addNewCredential","mutation","scope","invalidatesTags","removeCredential","id","authorizeFromCredentials","params","api_key","key_id","useGetCredentialsQuery","useAddNewCredentialMutation","useRemoveCredentialMutation","useAuthorizeFromCredentialsMutation","jwtApi","getJWKKeys","useGetJWKKeysQuery","useCoreSelector","useSelector","withTypes","useCoreDispatch","useDispatch","usePrevious","value","ref","useRef","useEffect","current","createUseCoreDataHook","fetchDataActionCreator","dataSelector","coreDispatch","error","action","prevParams","isEqual","isUninitialized","isFetching","isSuccess","isError","fetchUserState","createAsyncThunk","_","meta","isAuthenticated","isPending","initialState","slice","createSlice","name","reducers","resetUserState","extraReducers","addCase","fulfilled","payload","rejected","userReducer","actions","selectUserData","user","selectUser","selectUserLoginStatus","useUser","useIsUserLoggedIn","useUserAuth","renew","externalLoginApi","getExternalLogins","isExternalConnected","idp","useGetExternalLoginsQuery","useLazyGetExternalLoginsQuery","useLazyIsExternalConnectedQuery","useIsExternalConnectedQuery","isHistogramRangeData","key","Array","isArray","length","every","item","isJSONObject","isJSONValue","isJSONValueArray","isValidObject","input","isHistogramData","isHistogramDataArray","histogram","isHistogramDataCollection","obj","isGuppyAggregationData","isHistogramDataAnEnum","count","isHistogramDataAArray","isHistogramDataArrayAnEnum","isHistogramDataArrayARange","isFetchBaseQueryError","isErrorWithMessage","message","isHttpStatusError","isFetchParseError","REGISTRY","registerGen3App","gen3App","lookupGen3App","gen3Apps","addGen3AppMetadata","requiredEntityTypes","gen3AppReducer","selectGen3AppMetadataByName","appName","selectGen3AppByName","setDRSHostnames","_state","drsHostnamesReducer","Modals","currentModal","showModal","modal","hideModal","modalReducer","selectCurrentModal","modals","selectCurrentMessage","initialCohortState","cohort","filters","modified_datetime","Date","toISOString","cohortSlice","updateCohortFilter","index","field","filter","mode","root","setCohortFilter","removeCohortFilter","_a","updated","clearCohortFilters","selectCohortFilters","cohorts","selectCurrentCohortId","selectCurrentCohort","selectCurrentCohortName","selectIndexedFilterByName","EmptyFilterSet","selectIndexFilters","cohortReducer","isFileItem","isAdditionalDataItem","itemType","isCohortItem","processItem","type","description","documentationUrl","BuildList","listId","listData","Object","keys","includes","items","entries","reduce","acc","schemaVersion","schema_version","dataset_guid","version","createdTime","created_time","updatedTime","updated_time","authz","BuildLists","lists","list","getNumberOfItemsInDatalist","dataList","values","fileCount","x","getTimestamp","now","toLocaleString","flattenDataList","TAGS","dataLibraryTags","dataLibraryApi","getDataLibraryLists","transformErrorResponse","originalStatus","getDataLibraryList","addAllDataLibraryLists","addDataLibraryList","nanoid","updateDataLibraryList","deleteDataLibraryList","deleteAllDataLibrary","useGetDataLibraryListQuery","useGetDataLibraryListsQuery","useAddDataLibraryListMutation","useAddAllDataLibraryListsMutation","useDeleteDataLibraryListMutation","useDeleteAllDataLibraryMutation","useUpdateDataLibraryListMutation","DATABASE_NAME","STORE_NAME","getDb","openDB","upgrade","db","objectStoreNames","contains","createObjectStore","keyPath","deleteListIndexDB","tx","transaction","store","objectStore","get","Error","delete","done","deleteAll","clear","addListToDataLibraryIndexDB","timestamp","put","creator","updateListIndexDB","errorMessage","addAllListIndexDB","allLists","getDataLibraryListIndexDB","getAll","listMap","datalists","useDataLibrary","useApi","localLibrary","setLocalLibrary","useState","apiLibrary","refetch","refetchLibraryFromApi","apiError","isAPIListError","isLoading","isAPIListLoading","skip","addItemToLibraryApi","addAllItemsToLibraryApi","deleteItemInLibraryApi","updateItemInLibraryApi","isUpdatingLoading","deleteAllApi","hasError","errorData","generateUniqueName","baseName","uniqueName","counter","existingNames","dataLibrary","map","refetchLocalLists","fetchLibrary","addListToDataLibrary","adjustedData","deleteListFromDataLibrary","setAllListsInDataLibrary","updateListInDataLibrary","flattend","clearLibrary","dataLibrarySlice","setDataLibraryListSelection","itemIds","clearDataLibrarySelection","dataLibrarySelectionReducer","selectDataLibrary","dataLibrarySelection","rootObjectId","WorkspaceStatus","PodConditionType","PodStatus","NO_WORKSPACE_ID","NotFound","requestedStatus","setActiveWorkspaceId","clearActiveWorkspaceId","setActiveWorkspaceStatus","setRequestedWorkspaceStatus","setActiveWorkspace","activeWorkspaceReducer","selectActiveWorkspaceId","activeWorkspace","selectActiveWorkspaceStatus","selectRequestedWorkspaceStatus","guppyApi","api","guppyAPISliceMiddleware","guppyApiSliceReducerPath","guppyApiReducer","isOperationWithField","operation","extractFilterValue","op","valueExtractorHandler","ValueExtractorHandler","handleOperation","extractEnumFilterValue","enumValueExtractorHandler","EnumValueExtractorHandler","assertNever","handler","operator","handleEquals","handleNotEquals","handleLessThan","handleLessThanOrEquals","handleGreaterThan","handleGreaterThanOrEquals","handleIntersection","handleUnion","handleNestedFilter","handleIncludes","handleExcludeIfAny","handleExcludes","isFilterEmpty","fs","ToGqlHandler","operand","in","operands","exclude","excludeifany","and","convertFilterToGqlFilter","or","child","nested","path","convertFilterSetToGqlFilter","toplevelOp","fsKeys","_arg","isFilterSet","FieldNameOverrides","COMMON_PREPOSITIONS","capitalize","s","toUpperCase","trimFirstFieldNameToTitle","fieldName","trim","source","indexOf","fieldNameToTitle","sections","split","flat","word","join","extractIndexFromFullFieldName","prependIndexToFieldName","extractFieldNameFromFullFieldName","extractIndexAndFieldNameFromFullFieldName","rest","statusEndpoint","processHistogramResponse","valueData","JSONPath","resultType","pointerData","element","idx","replace","fetchJson","useGetStatus","fetcher","useSWR","explorerApi","getAllFieldsForType","_meta","getAccessibleData","fields","accessType","fieldParts","getRawDataAndTotalCounts","sort","offset","size","accessibility","ALL","format","gqlFilter","queryLine","dataParams","dataTypeLine","typeAggsLine","processedFields","rawDataQueryStrForEachField","variables","getAggs","queryStart","histogramQueryStrForEachField","queryBody","args","_aggregation","getSubAggs","mainField","termsFields","missingFields","numericAggAsText","nestedAggFields","nestedHistogramQueryStrForEachField","getCounts","gqlFilters","_totalCount","getFieldCountSummary","getFieldsForIndex","generalGQL","splittedFieldArray","splittedField","shift","splitFieldArray","splitField","useGetArrayTypes","useGetRawDataAndTotalCountsQuery","useGetAccessibleDataQuery","useGetAllFieldsForTypeQuery","useGetAggsQuery","useLazyGetAggsQuery","useGetSubAggsQuery","useGetCountsQuery","useGetFieldCountSummaryQuery","useGetFieldsForIndexQuery","useGeneralGQLQuery","useLazyGeneralGQLQuery","flattenJson","flattenedJson","forEach","push","flatten","delimiter","conversion","config","Papa","unparse","jsonToFormat","flatJson","prepareUrl","apiUrl","prepareFetchConfig","parameters","downloadFromGuppyToBlob","onStart","onDone","onError","onAbort","signal","coreStore","fetchConfig","toString","then","jsonData","rootPath","str","convertedData","Blob","blob","catch","downloadJSONDataFromGuppy","useGetIndexFields","downloadRequestApi","downloadFromGuppy","cache","useDownloadFromGuppyMutation","rootReducer","combineReducers","drsHostnames","configureStore","getDefaultMiddleware","concat","setupListeners","dispatch","isNotDefined","isObject","isString","URL","HTTPErrorMessages","HTTPError","constructor","responseData","fetchFencePresignedURL","Headers","CoreProvider","children","Provider","authzApi","getAuthzMappings","useGetAuthzMappingsQuery","selectAuthzMapping","selectAuthzMappingData","authzMapping","mappings","HasEnoughData","limit","numEmptyKeys","k","hasOwn","metadataApi","getAggMDS","pageSize","objValues","firstValue","at","studyField","hits","pagination","getIndexAggMDS","dataFromIndexes","indexKeys","objIds","filterEmpty","gen3MDSGUID","getMDS","guidType","getTags","getData","getCrosswalkData","queryFn","arg","_queryApi","_extraOptions","fetchWithBQ","queryMultiple","result","queue","Queue","concurrency","ids","callback","toData","toPaths","dataPath","from","to","Promise","resolve","reject","start","err","useGetAggMDSQuery","useGetMDSQuery","useGetTagsQuery","useGetDataQuery","useGetCrosswalkDataQuery","useLazyGetCrosswalkDataQuery","useGetIndexAggMDSQuery","GEN3_APP_NAMESPACE","getGen3AppId","nameVersion","uuidv5","createGen3App","App","Gen3AppWrapper","props","document","title","createAppStore","options","devTools","serializableCheck","ignoredActions","FLUSH","REHYDRATE","PAUSE","PERSIST","PURGE","REGISTER","context","React","createContext","useAppSelector","createSelectorHook","useAppDispatch","createDispatchHook","useAppStore","createStoreHook","AppStore","AppContext","createGen3AppWithOwnStore","CookiesProvider","createAppApiForRTKQ","appContext","appCreateApi","buildCreateApi","coreModule","reactHooksModule","hooks","useStore","appRTKQApi","appMiddleware","appStore","appApi","graphQLWithTags","graphQLAPI","graphQL","graphQLParams","useGraphQLQuery","aiSearchApi","askQuestion","searchParams","topic","conversationId","conversation_id","documents","getAISearchStatus","getAISearchVersion","useAskQuestionMutation","useGetAISearchStatusQuery","useGetAISearchVersionQuery","WorkspaceWithTags","EmptyWorkspaceStatusResponse","conditions","containerStates","idleTimeLimit","lastActivityTime","workspaceType","workspacesApi","getWorkspaceOptions","workspace","memoryLimit","cpuLimit","getWorkspacePayModels","currentPayModel","current_pay_model","allPayModels","all_pay_models","noPayModel","getActivePayModel","setCurrentPayModel","getWorkspaceStatus","_arg0","queryApi","currentWorkspaceStatus","workspaceStatus","workspaceStatusData","Running","proxyStatus","statusError","Launching","False","launchWorkspace","responseHandler","terminateWorkspace","useGetWorkspaceOptionsQuery","useGetWorkspacePayModelsQuery","useGetWorkspaceStatusQuery","useGetActivePayModelQuery","useSetCurrentPayModelMutation","useLaunchWorkspaceMutation","useTerminateWorkspaceMutation","workspaceStatusSelector","selectWorkspaceStatusFromService","selectWorkspaceStatus","isWorkspaceActive","Terminating","isWorkspaceRunningOrStopping","resourcePathFromProjectID","projectID","program","project","resourcePath","isRootUrl","urlFragment","isProgramUrl","userHasSheepdogProgramAdmin","userAuthMapping","userHasSheepdogProjectAdmin","projectCodeFromResourcePath","listifyMethodsFromMapping","accumulator","currval","userHasDataUpload","actionIsFileUpload","resource","some","userHasMethodForServiceOnResource","service","userHasMethodForServiceOnProject","userHasMethodOnAnyProject","actionHasMethod","actionArrays","hasMethod","userHasCreateOrUpdateOnAnyProject","extractValuesFromObject","jsonPathMappings","extractObjectValue","jsonPath","extractedValues","SubmissionGraphqlQuery","submissionApi","getProjects","projects","getSubmissions","transactionList","getProjectsDetails","projectsResponse","projectQuery","projectIds","p","project_id","projectDetails","all","projectId","projectDetailsQuery","mapping","detail","find","details","code","getSubmissionGraphQL","getDictionary","useGetProjectsQuery","useGetSubmissionGraphQLQuery","useGetProjectsDetailsQuery","useLazyGetProjectsQuery","useLazyGetSubmissionGraphQLQuery","useGetSubmissionsQuery","useGetDictionaryQuery","loadingStatusApi","getSowerJobList","submitSowerJob","getSowerJobStatus","uid","getSowerOutput","getSowerServiceStatus","useGetSowerJobListQuery","useLazyGetSowerJobListQuery","useSubmitSowerJobMutation","useGetSowerJobStatusQuery","useGetSowerOutputQuery","useGetSowerServiceStatusQuery"],"mappings":"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"}
|