synapse-react-client 4.0.17 → 4.0.18
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/README.md +5 -3
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +1 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.d.ts.map +1 -1
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.d.ts.map +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js +56 -54
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
- package/dist/components/Authentication/PasswordField.d.ts +1 -1
- package/dist/components/Authentication/PasswordField.d.ts.map +1 -1
- package/dist/components/Authentication/PasswordField.js.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js +1 -2
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/Authentication/UsernamePasswordForm.d.ts.map +1 -1
- package/dist/components/Authentication/UsernamePasswordForm.js +32 -29
- package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
- package/dist/components/CardContainer/CardLink.d.ts +2 -2
- package/dist/components/CardContainer/CardLink.d.ts.map +1 -1
- package/dist/components/CardDeck/CardDeckCardProps.d.ts.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js +106 -103
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/MembershipRequestForm.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.d.ts.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.js +4 -4
- package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
- package/dist/components/CreateTableViewWizard/TableNameForm.js +6 -6
- package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
- package/dist/components/CrispChat/CrispChat.js +4 -4
- package/dist/components/CrispChat/CrispChat.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
- package/dist/components/DownloadCart/RequestDownloadCard.js +14 -14
- package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditor.d.ts.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.d.ts +17 -0
- package/dist/components/EntityFinder/EntityIdTextField.d.ts.map +1 -0
- package/dist/components/EntityFinder/EntityIdTextField.js +35 -0
- package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -0
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.d.ts.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js +22 -16
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
- package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
- package/dist/components/FullWidthAlert/FullWidthAlert.d.ts.map +1 -1
- package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
- package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.d.ts.map +1 -1
- package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.d.ts.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditor.d.ts.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.d.ts +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.d.ts.map +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
- package/dist/components/PortalList/CreatePortalModal.d.ts.map +1 -1
- package/dist/components/PortalList/CreatePortalModal.js +34 -33
- package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/RowSetView.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
- package/dist/components/Resources/Resources.Desktop.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.d.ts.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.d.ts.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
- package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts.map +1 -1
- package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.d.ts.map +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
- package/dist/components/SynapseTable/SearchV2.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.d.ts.map +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
- package/dist/components/TextField/TextField.css +1 -1
- package/dist/components/TextField/TextField.d.ts +14 -3
- package/dist/components/TextField/TextField.d.ts.map +1 -1
- package/dist/components/TextField/TextField.js +41 -43
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TextField/TextField.module.js +3 -4
- package/dist/components/TextField/TextField.module.js.map +1 -1
- package/dist/components/TextField/TextField.module.scss +18 -10
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.d.ts.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js +20 -16
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
- package/dist/components/UserCardList/UserCardList.d.ts.map +1 -1
- package/dist/components/UserCardList/UserCardList.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
- package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
- package/dist/components/UserSearchBox/UserSearchBox.d.ts.map +1 -1
- package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
- package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js +13 -13
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js +23 -23
- package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
- package/dist/components/index.js +17 -17
- package/dist/components/styled/StyledFormControl.d.ts +15 -0
- package/dist/components/styled/StyledFormControl.d.ts.map +1 -1
- package/dist/components/styled/StyledFormControl.js +1 -0
- package/dist/components/styled/StyledFormControl.js.map +1 -1
- package/dist/components/styled/index.js +3 -3
- package/dist/components/utils/ConditionalWrapper.d.ts.map +1 -1
- package/dist/components/utils/ConditionalWrapper.js.map +1 -1
- package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js +69 -62
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts +1 -0
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +27 -26
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.d.ts +1 -0
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js +2 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts +1 -0
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js +44 -43
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +13 -0
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +398 -0
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -0
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +49 -19
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +46 -25
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts +0 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js +20 -22
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +25 -27
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.d.ts +26 -0
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.js +2 -2
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
- package/dist/index.js +17 -17
- package/dist/mockServiceWorker.js +6 -8
- package/dist/mocks/curation/mockCurationTask.d.ts +2 -2
- package/dist/mocks/curation/mockCurationTask.d.ts.map +1 -1
- package/dist/mocks/curation/mockCurationTask.js +9 -5
- package/dist/mocks/curation/mockCurationTask.js.map +1 -1
- package/dist/mocks/msw/handlers/featureFlagHandlers.d.ts +1 -1
- package/dist/mocks/msw/handlers/featureFlagHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/featureFlagHandlers.js +1 -1
- package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
- package/dist/style/components/_cards.scss +0 -3
- package/dist/style/components/_data-grid-extra.scss +2 -2
- package/dist/style/components/_login.scss +6 -2
- package/dist/style/main.css +1 -1
- package/dist/synapse-client/SynapseClient.d.ts +2 -1
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +16 -6
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessRequirements.d.ts.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
- package/dist/synapse-queries/featureflags/useGetFeatureFlag.d.ts +1 -1
- package/dist/synapse-queries/featureflags/useGetFeatureFlag.d.ts.map +1 -1
- package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
- package/dist/synapse-queries/file/useFiles.d.ts.map +1 -1
- package/dist/synapse-queries/file/useFiles.js.map +1 -1
- package/dist/synapse-queries/termsOfService/useTermsOfService.d.ts.map +1 -1
- package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.d.ts.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
- package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
- package/dist/theme/palette/Palettes.d.ts +2 -2
- package/dist/theme/palette/Palettes.d.ts.map +1 -1
- package/dist/theme/palette/Palettes.js +2 -2
- package/dist/theme/palette/Palettes.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/ThemeTypes.d.ts +5 -6
- package/dist/utils/AppUtils/session/SynapseSessionManager.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +12 -0
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -0
- package/dist/utils/featureflag/FeatureFlags.js +8 -0
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -0
- package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.d.ts.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
- package/dist/utils/slots/SlotUtils.d.ts.map +1 -1
- package/dist/utils/slots/SlotUtils.js.map +1 -1
- package/package.json +7 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryFilterUtils.js","names":[],"sources":["../../src/synapse-queries/QueryFilterUtils.ts"],"sourcesContent":["import { BUNDLE_MASK_ACTIONS_REQUIRED } from '@/utils/SynapseConstants'\nimport { matchQuery, QueryFilters } from '@tanstack/query-core'\nimport { QueryClient, QueryKey } from '@tanstack/react-query'\nimport { isEqual, isNumber, isObject } from 'lodash-es'\nimport { KeyFactory } from './KeyFactory'\n\n/**\n * Invalidate all queries for the given entity. Table queries will be reset, i.e. the stale data will be removed from the cache.\n * @param queryClient\n * @param keyFactory\n * @param id the ID of the entity\n * @param excludeQueryKey do not invalidate queries exactly matching this query key (useful if you intend to call setQueryData)\n */\nexport function invalidateAllQueriesForEntity(\n queryClient: QueryClient,\n keyFactory: KeyFactory,\n id: string,\n excludeQueryKey?: QueryKey,\n) {\n // Since we are resetting, no need to `await` - our UI will show loading screens\n void queryClient.resetQueries({\n // We invalidate all table query results because this entity could be shown in a view or used to compose JOINed tables\n // Reset all table query results to avoid showing stale data (SWC-6722)\n // Additionally, we do not want to wait for all tables to rebuild before we consider the invalidation 'complete'\n queryKey: keyFactory.getAllTableQueryResultsKey(),\n })\n\n return queryClient.invalidateQueries({\n queryKey: keyFactory.getEntityQueryKey(id),\n predicate: query => {\n if (excludeQueryKey && isEqual(query.queryKey, excludeQueryKey)) {\n // Don't invalidate query keys that are specifically excluded\n return false\n } else if (\n matchQuery({ queryKey: keyFactory.getAllTableQueryResultsKey() }, query)\n ) {\n // Don't invalidate any cached table query data; these queries were already reset above\n return false\n }\n return true\n },\n })\n}\n\n/**\n * Invalidate all queries that retrieve the actions required to gain download access\n * @param queryClient\n * @param keyFactory\n */\nexport function getAllActionsRequiredQueryFilters(\n keyFactory: KeyFactory,\n): QueryFilters[] {\n return [\n // individual entity\n {\n queryKey: keyFactory.getAllEntityActionsRequiredQueryKey(),\n },\n // actions required for entities on the download list\n {\n queryKey: keyFactory.getDownloadListBaseQueryKey(),\n },\n {\n queryKey: keyFactory.getAllTableQueryResultsKey(),\n predicate: query => {\n // Match only queries that include actions required in the part mask\n const queryKey = query.queryKey\n for (const queryKeyItem of queryKey) {\n // Find the query bundle request, if it exists in the query key\n // If so, return true if the partMask includes the ACTIONS_REQUIRED part\n if (\n isObject(queryKeyItem) &&\n 'tableQueryBundleRequest' in queryKeyItem &&\n isObject(queryKeyItem.tableQueryBundleRequest) &&\n 'partMask' in queryKeyItem.tableQueryBundleRequest &&\n isNumber(queryKeyItem.tableQueryBundleRequest.partMask) &&\n Boolean(\n queryKeyItem.tableQueryBundleRequest.partMask &\n
|
|
1
|
+
{"version":3,"file":"QueryFilterUtils.js","names":[],"sources":["../../src/synapse-queries/QueryFilterUtils.ts"],"sourcesContent":["import { BUNDLE_MASK_ACTIONS_REQUIRED } from '@/utils/SynapseConstants'\nimport { matchQuery, QueryFilters } from '@tanstack/query-core'\nimport { QueryClient, QueryKey } from '@tanstack/react-query'\nimport { isEqual, isNumber, isObject } from 'lodash-es'\nimport { KeyFactory } from './KeyFactory'\n\n/**\n * Invalidate all queries for the given entity. Table queries will be reset, i.e. the stale data will be removed from the cache.\n * @param queryClient\n * @param keyFactory\n * @param id the ID of the entity\n * @param excludeQueryKey do not invalidate queries exactly matching this query key (useful if you intend to call setQueryData)\n */\nexport function invalidateAllQueriesForEntity(\n queryClient: QueryClient,\n keyFactory: KeyFactory,\n id: string,\n excludeQueryKey?: QueryKey,\n) {\n // Since we are resetting, no need to `await` - our UI will show loading screens\n void queryClient.resetQueries({\n // We invalidate all table query results because this entity could be shown in a view or used to compose JOINed tables\n // Reset all table query results to avoid showing stale data (SWC-6722)\n // Additionally, we do not want to wait for all tables to rebuild before we consider the invalidation 'complete'\n queryKey: keyFactory.getAllTableQueryResultsKey(),\n })\n\n return queryClient.invalidateQueries({\n queryKey: keyFactory.getEntityQueryKey(id),\n predicate: query => {\n if (excludeQueryKey && isEqual(query.queryKey, excludeQueryKey)) {\n // Don't invalidate query keys that are specifically excluded\n return false\n } else if (\n matchQuery({ queryKey: keyFactory.getAllTableQueryResultsKey() }, query)\n ) {\n // Don't invalidate any cached table query data; these queries were already reset above\n return false\n }\n return true\n },\n })\n}\n\n/**\n * Invalidate all queries that retrieve the actions required to gain download access\n * @param queryClient\n * @param keyFactory\n */\nexport function getAllActionsRequiredQueryFilters(\n keyFactory: KeyFactory,\n): QueryFilters[] {\n return [\n // individual entity\n {\n queryKey: keyFactory.getAllEntityActionsRequiredQueryKey(),\n },\n // actions required for entities on the download list\n {\n queryKey: keyFactory.getDownloadListBaseQueryKey(),\n },\n {\n queryKey: keyFactory.getAllTableQueryResultsKey(),\n predicate: query => {\n // Match only queries that include actions required in the part mask\n const queryKey = query.queryKey\n for (const queryKeyItem of queryKey) {\n // Find the query bundle request, if it exists in the query key\n // If so, return true if the partMask includes the ACTIONS_REQUIRED part\n if (\n isObject(queryKeyItem) &&\n 'tableQueryBundleRequest' in queryKeyItem &&\n isObject(queryKeyItem.tableQueryBundleRequest) &&\n 'partMask' in queryKeyItem.tableQueryBundleRequest &&\n isNumber(queryKeyItem.tableQueryBundleRequest.partMask) &&\n Boolean(\n queryKeyItem.tableQueryBundleRequest.partMask &\n BUNDLE_MASK_ACTIONS_REQUIRED,\n )\n ) {\n return true\n }\n }\n return false\n },\n },\n ]\n}\n"],"mappings":";;;;AAaA,SAAgB,EACd,GACA,GACA,GACA,GACA;AASA,QAPK,EAAY,aAAa,EAI5B,UAAU,EAAW,4BAA4B,EAClD,CAAC,EAEK,EAAY,kBAAkB;EACnC,UAAU,EAAW,kBAAkB,EAAG;EAC1C,YAAW,MACL,KAAmB,EAAQ,EAAM,UAAU,EAAgB,GAEtD,MAEP,EAAW,EAAE,UAAU,EAAW,4BAA4B,EAAE,EAAE,EAAM;EAO7E,CAAC;;AAQJ,SAAgB,EACd,GACgB;AAChB,QAAO;EAEL,EACE,UAAU,EAAW,qCAAqC,EAC3D;EAED,EACE,UAAU,EAAW,6BAA6B,EACnD;EACD;GACE,UAAU,EAAW,4BAA4B;GACjD,YAAW,MAAS;IAElB,IAAM,IAAW,EAAM;AACvB,SAAK,IAAM,KAAgB,EAGzB,KACE,EAAS,EAAa,IACtB,6BAA6B,KAC7B,EAAS,EAAa,wBAAwB,IAC9C,cAAc,EAAa,2BAC3B,EAAS,EAAa,wBAAwB,SAAS,IAErD,EAAa,wBAAwB,WAAA,IAIvC,QAAO;AAGX,WAAO;;GAEV;EACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CurationTask, ListCurationTaskRequest, ListCurationTaskResponse, SynapseClientError, TaskStatus } from '@sage-bionetworks/synapse-client';
|
|
2
2
|
import { InfiniteData, QueryKey, UseInfiniteQueryOptions, UseMutationOptions, UseQueryOptions } from '@tanstack/react-query';
|
|
3
|
+
export declare function useCreateCurationTask(options?: Partial<UseMutationOptions<CurationTask, SynapseClientError, CurationTask>>): import("@tanstack/react-query").UseMutationResult<CurationTask, SynapseClientError, CurationTask, unknown>;
|
|
3
4
|
export declare function useGetCurationTask<TData = CurationTask>(taskId: number, options?: Partial<UseQueryOptions<CurationTask, SynapseClientError, TData>>): import("@tanstack/react-query").UseQueryResult<import("@tanstack/query-core").NoInfer<TData>, SynapseClientError>;
|
|
4
5
|
export declare function useGetCurationTaskStatus<TData = TaskStatus>(taskId: number, options?: Partial<UseQueryOptions<TaskStatus, SynapseClientError, TData>>): import("@tanstack/react-query").UseQueryResult<import("@tanstack/query-core").NoInfer<TData>, SynapseClientError>;
|
|
5
6
|
export declare function useUpdateCurationTask(options?: Partial<UseMutationOptions<CurationTask, SynapseClientError, CurationTask>>): import("@tanstack/react-query").UseMutationResult<CurationTask, SynapseClientError, CurationTask, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCurationTask.d.ts","sourceRoot":"","sources":["../../../../src/synapse-queries/curation/task/useCurationTask.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACX,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,kBAAkB,EAGlB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,kBAAkB,CAAC,KAAK,GAAG,YAAY,EACrD,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,qHAY5E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,GAAG,UAAU,EACzD,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,qHAW1E;AAED,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,OAAO,CACf,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,EAAE,YAAY,CAAC,CACnE,8GAwBF;AAED,wBAAgB,2BAA2B,CACzC,OAAO,CAAC,EAAE,OAAO,CACf,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAC/D,0GAqBF;AAED,wBAAgB,2BAA2B,CACzC,KAAK,GAAG,YAAY,CAAC,wBAAwB,CAAC,EAE9C,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,wBAAwB,CAAC,eAAe,CAAC,CAC1C,CACF,qFAuBF"}
|
|
1
|
+
{"version":3,"file":"useCurationTask.d.ts","sourceRoot":"","sources":["../../../../src/synapse-queries/curation/task/useCurationTask.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACX,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,kBAAkB,EAGlB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,OAAO,CACf,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,EAAE,YAAY,CAAC,CACnE,8GAmBF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,GAAG,YAAY,EACrD,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,qHAY5E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,GAAG,UAAU,EACzD,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,qHAW1E;AAED,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,OAAO,CACf,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,EAAE,YAAY,CAAC,CACnE,8GAwBF;AAED,wBAAgB,2BAA2B,CACzC,OAAO,CAAC,EAAE,OAAO,CACf,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAC/D,0GAqBF;AAED,wBAAgB,2BAA2B,CACzC,KAAK,GAAG,YAAY,CAAC,wBAAwB,CAAC,EAE9C,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,wBAAwB,CAAC,eAAe,CAAC,CAC1C,CACF,qFAuBF"}
|
|
@@ -2,7 +2,17 @@ import { useSynapseContext as e } from "../../../utils/context/SynapseContext.js
|
|
|
2
2
|
import "../../../utils/index.js";
|
|
3
3
|
import { useInfiniteQuery as t, useMutation as n, useQuery as r, useQueryClient as i } from "@tanstack/react-query";
|
|
4
4
|
//#region src/synapse-queries/curation/task/useCurationTask.ts
|
|
5
|
-
function a(t
|
|
5
|
+
function a(t) {
|
|
6
|
+
let { synapseClient: r, keyFactory: a } = e(), o = i();
|
|
7
|
+
return n({
|
|
8
|
+
...t,
|
|
9
|
+
mutationFn: (e) => r.curationTaskServicesClient.postRepoV1CurationTask({ curationTask: e }),
|
|
10
|
+
onSuccess: (e, n, r) => {
|
|
11
|
+
o.invalidateQueries({ queryKey: a.getAllCurationTaskListKey() }), t?.onSuccess && t.onSuccess(e, n, r);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function o(t, n) {
|
|
6
16
|
let { synapseClient: i, keyFactory: a } = e();
|
|
7
17
|
return r({
|
|
8
18
|
...n,
|
|
@@ -10,7 +20,7 @@ function a(t, n) {
|
|
|
10
20
|
queryFn: async () => i.curationTaskServicesClient.getRepoV1CurationTaskTaskId({ taskId: t })
|
|
11
21
|
});
|
|
12
22
|
}
|
|
13
|
-
function
|
|
23
|
+
function s(t, n) {
|
|
14
24
|
let { synapseClient: i, keyFactory: a } = e();
|
|
15
25
|
return r({
|
|
16
26
|
...n,
|
|
@@ -18,7 +28,7 @@ function o(t, n) {
|
|
|
18
28
|
queryFn: () => i.curationTaskServicesClient.getRepoV1CurationTaskTaskIdStatus({ taskId: t })
|
|
19
29
|
});
|
|
20
30
|
}
|
|
21
|
-
function
|
|
31
|
+
function c(t) {
|
|
22
32
|
let { synapseClient: r, keyFactory: a } = e(), o = i();
|
|
23
33
|
return n({
|
|
24
34
|
...t,
|
|
@@ -31,7 +41,7 @@ function s(t) {
|
|
|
31
41
|
}
|
|
32
42
|
});
|
|
33
43
|
}
|
|
34
|
-
function
|
|
44
|
+
function l(t) {
|
|
35
45
|
let { synapseClient: r, keyFactory: a } = e(), o = i();
|
|
36
46
|
return n({
|
|
37
47
|
...t,
|
|
@@ -44,7 +54,7 @@ function c(t) {
|
|
|
44
54
|
}
|
|
45
55
|
});
|
|
46
56
|
}
|
|
47
|
-
function
|
|
57
|
+
function u(n, r) {
|
|
48
58
|
let { synapseClient: i, keyFactory: a } = e();
|
|
49
59
|
return t({
|
|
50
60
|
...r,
|
|
@@ -58,6 +68,6 @@ function l(n, r) {
|
|
|
58
68
|
});
|
|
59
69
|
}
|
|
60
70
|
//#endregion
|
|
61
|
-
export { a as
|
|
71
|
+
export { a as useCreateCurationTask, o as useGetCurationTask, s as useGetCurationTaskStatus, u as useGetCurationTasksInfinite, c as useUpdateCurationTask, l as useUpdateCurationTaskStatus };
|
|
62
72
|
|
|
63
73
|
//# sourceMappingURL=useCurationTask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCurationTask.js","names":[],"sources":["../../../../src/synapse-queries/curation/task/useCurationTask.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils/index'\nimport {\n CurationTask,\n ListCurationTaskRequest,\n ListCurationTaskResponse,\n SynapseClientError,\n TaskStatus,\n} from '@sage-bionetworks/synapse-client'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetCurationTask<TData = CurationTask>(\n taskId: number,\n options?: Partial<UseQueryOptions<CurationTask, SynapseClientError, TData>>,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getCurationTaskIdTaskKey(taskId),\n queryFn: async () => {\n return synapseClient.curationTaskServicesClient.getRepoV1CurationTaskTaskId(\n { taskId },\n )\n },\n })\n}\n\nexport function useGetCurationTaskStatus<TData = TaskStatus>(\n taskId: number,\n options?: Partial<UseQueryOptions<TaskStatus, SynapseClientError, TData>>,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getCurationTaskIdStatusKey(taskId),\n queryFn: () =>\n synapseClient.curationTaskServicesClient.getRepoV1CurationTaskTaskIdStatus(\n { taskId },\n ),\n })\n}\n\nexport function useUpdateCurationTask(\n options?: Partial<\n UseMutationOptions<CurationTask, SynapseClientError, CurationTask>\n >,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n return useMutation({\n ...options,\n mutationFn: curationTask =>\n synapseClient.curationTaskServicesClient.putRepoV1CurationTaskTaskId({\n taskId: curationTask.taskId!,\n curationTask,\n }),\n onSuccess: (data, variables, context) => {\n // Invalidate both the status query and the task query using the ID key\n queryClient.invalidateQueries({\n queryKey: keyFactory.getCurationTaskIdKey(variables.taskId!),\n })\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllCurationTaskListKey(),\n })\n if (options?.onSuccess) {\n options.onSuccess(data, variables, context)\n }\n },\n })\n}\n\nexport function useUpdateCurationTaskStatus(\n options?: Partial<\n UseMutationOptions<TaskStatus, SynapseClientError, TaskStatus>\n >,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n return useMutation({\n ...options,\n mutationFn: taskStatus =>\n synapseClient.curationTaskServicesClient.putRepoV1CurationTaskTaskIdStatus(\n { taskId: taskStatus.taskId!, taskStatus },\n ),\n onSuccess: (data, variables, context) => {\n // Invalidate both the status query and the task query using the ID key\n queryClient.invalidateQueries({\n queryKey: keyFactory.getCurationTaskIdKey(variables.taskId!),\n })\n\n if (options?.onSuccess) {\n options.onSuccess(data, variables, context)\n }\n },\n })\n}\n\nexport function useGetCurationTasksInfinite<\n TData = InfiniteData<ListCurationTaskResponse>,\n>(\n request: ListCurationTaskRequest,\n options?: Partial<\n UseInfiniteQueryOptions<\n ListCurationTaskResponse,\n SynapseClientError,\n TData,\n QueryKey,\n ListCurationTaskResponse['nextPageToken']\n >\n >,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n\n return useInfiniteQuery<\n ListCurationTaskResponse,\n SynapseClientError,\n TData,\n QueryKey,\n ListCurationTaskResponse['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.getCurationTaskListKey(request),\n queryFn: context =>\n synapseClient.curationTaskServicesClient.postRepoV1CurationTaskList({\n listCurationTaskRequest: {\n ...request,\n nextPageToken: context.pageParam,\n },\n }),\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n"],"mappings":";;;;AAoBA,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB;AACzD,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,yBAAyB,EAAO;EACrD,SAAS,YACA,EAAc,2BAA2B,4BAC9C,EAAE,WAAQ,CACX;EAEJ,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB;AACzD,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,2BAA2B,EAAO;EACvD,eACE,EAAc,2BAA2B,kCACvC,EAAE,WAAQ,CACX;EACJ,CAAC;;AAGJ,SAAgB,EACd,GAGA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB,EACnD,IAAc,GAAgB;AACpC,QAAO,EAAY;EACjB,GAAG;EACH,aAAY,MACV,EAAc,2BAA2B,4BAA4B;GACnE,QAAQ,EAAa;GACrB;GACD,CAAC;EACJ,YAAY,GAAM,GAAW,MAAY;AAQvC,GANA,EAAY,kBAAkB,EAC5B,UAAU,EAAW,qBAAqB,EAAU,OAAQ,EAC7D,CAAC,EACF,EAAY,kBAAkB,EAC5B,UAAU,EAAW,2BAA2B,EACjD,CAAC,EACE,GAAS,aACX,EAAQ,UAAU,GAAM,GAAW,EAAQ;;EAGhD,CAAC;;AAGJ,SAAgB,EACd,GAGA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB,EACnD,IAAc,GAAgB;AACpC,QAAO,EAAY;EACjB,GAAG;EACH,aAAY,MACV,EAAc,2BAA2B,kCACvC;GAAE,QAAQ,EAAW;GAAS;GAAY,CAC3C;EACH,YAAY,GAAM,GAAW,MAAY;AAMvC,GAJA,EAAY,kBAAkB,EAC5B,UAAU,EAAW,qBAAqB,EAAU,OAAQ,EAC7D,CAAC,EAEE,GAAS,aACX,EAAQ,UAAU,GAAM,GAAW,EAAQ;;EAGhD,CAAC;;AAGJ,SAAgB,EAGd,GACA,GASA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB;AAEzD,QAAO,EAML;EACA,GAAG;EACH,UAAU,EAAW,uBAAuB,EAAQ;EACpD,UAAS,MACP,EAAc,2BAA2B,2BAA2B,EAClE,yBAAyB;GACvB,GAAG;GACH,eAAe,EAAQ;GACxB,EACF,CAAC;EACJ,kBAAkB,KAAA;EAClB,mBAAkB,MAAQ,EAAK;EAChC,CAAC"}
|
|
1
|
+
{"version":3,"file":"useCurationTask.js","names":[],"sources":["../../../../src/synapse-queries/curation/task/useCurationTask.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils/index'\nimport {\n CurationTask,\n ListCurationTaskRequest,\n ListCurationTaskResponse,\n SynapseClientError,\n TaskStatus,\n} from '@sage-bionetworks/synapse-client'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useCreateCurationTask(\n options?: Partial<\n UseMutationOptions<CurationTask, SynapseClientError, CurationTask>\n >,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n return useMutation({\n ...options,\n mutationFn: curationTask =>\n synapseClient.curationTaskServicesClient.postRepoV1CurationTask({\n curationTask,\n }),\n onSuccess: (data, variables, context) => {\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllCurationTaskListKey(),\n })\n if (options?.onSuccess) {\n options.onSuccess(data, variables, context)\n }\n },\n })\n}\n\nexport function useGetCurationTask<TData = CurationTask>(\n taskId: number,\n options?: Partial<UseQueryOptions<CurationTask, SynapseClientError, TData>>,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getCurationTaskIdTaskKey(taskId),\n queryFn: async () => {\n return synapseClient.curationTaskServicesClient.getRepoV1CurationTaskTaskId(\n { taskId },\n )\n },\n })\n}\n\nexport function useGetCurationTaskStatus<TData = TaskStatus>(\n taskId: number,\n options?: Partial<UseQueryOptions<TaskStatus, SynapseClientError, TData>>,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getCurationTaskIdStatusKey(taskId),\n queryFn: () =>\n synapseClient.curationTaskServicesClient.getRepoV1CurationTaskTaskIdStatus(\n { taskId },\n ),\n })\n}\n\nexport function useUpdateCurationTask(\n options?: Partial<\n UseMutationOptions<CurationTask, SynapseClientError, CurationTask>\n >,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n return useMutation({\n ...options,\n mutationFn: curationTask =>\n synapseClient.curationTaskServicesClient.putRepoV1CurationTaskTaskId({\n taskId: curationTask.taskId!,\n curationTask,\n }),\n onSuccess: (data, variables, context) => {\n // Invalidate both the status query and the task query using the ID key\n queryClient.invalidateQueries({\n queryKey: keyFactory.getCurationTaskIdKey(variables.taskId!),\n })\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllCurationTaskListKey(),\n })\n if (options?.onSuccess) {\n options.onSuccess(data, variables, context)\n }\n },\n })\n}\n\nexport function useUpdateCurationTaskStatus(\n options?: Partial<\n UseMutationOptions<TaskStatus, SynapseClientError, TaskStatus>\n >,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n return useMutation({\n ...options,\n mutationFn: taskStatus =>\n synapseClient.curationTaskServicesClient.putRepoV1CurationTaskTaskIdStatus(\n { taskId: taskStatus.taskId!, taskStatus },\n ),\n onSuccess: (data, variables, context) => {\n // Invalidate both the status query and the task query using the ID key\n queryClient.invalidateQueries({\n queryKey: keyFactory.getCurationTaskIdKey(variables.taskId!),\n })\n\n if (options?.onSuccess) {\n options.onSuccess(data, variables, context)\n }\n },\n })\n}\n\nexport function useGetCurationTasksInfinite<\n TData = InfiniteData<ListCurationTaskResponse>,\n>(\n request: ListCurationTaskRequest,\n options?: Partial<\n UseInfiniteQueryOptions<\n ListCurationTaskResponse,\n SynapseClientError,\n TData,\n QueryKey,\n ListCurationTaskResponse['nextPageToken']\n >\n >,\n) {\n const { synapseClient, keyFactory } = useSynapseContext()\n\n return useInfiniteQuery<\n ListCurationTaskResponse,\n SynapseClientError,\n TData,\n QueryKey,\n ListCurationTaskResponse['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.getCurationTaskListKey(request),\n queryFn: context =>\n synapseClient.curationTaskServicesClient.postRepoV1CurationTaskList({\n listCurationTaskRequest: {\n ...request,\n nextPageToken: context.pageParam,\n },\n }),\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n"],"mappings":";;;;AAoBA,SAAgB,EACd,GAGA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB,EACnD,IAAc,GAAgB;AACpC,QAAO,EAAY;EACjB,GAAG;EACH,aAAY,MACV,EAAc,2BAA2B,uBAAuB,EAC9D,iBACD,CAAC;EACJ,YAAY,GAAM,GAAW,MAAY;AAIvC,GAHA,EAAY,kBAAkB,EAC5B,UAAU,EAAW,2BAA2B,EACjD,CAAC,EACE,GAAS,aACX,EAAQ,UAAU,GAAM,GAAW,EAAQ;;EAGhD,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB;AACzD,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,yBAAyB,EAAO;EACrD,SAAS,YACA,EAAc,2BAA2B,4BAC9C,EAAE,WAAQ,CACX;EAEJ,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB;AACzD,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,2BAA2B,EAAO;EACvD,eACE,EAAc,2BAA2B,kCACvC,EAAE,WAAQ,CACX;EACJ,CAAC;;AAGJ,SAAgB,EACd,GAGA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB,EACnD,IAAc,GAAgB;AACpC,QAAO,EAAY;EACjB,GAAG;EACH,aAAY,MACV,EAAc,2BAA2B,4BAA4B;GACnE,QAAQ,EAAa;GACrB;GACD,CAAC;EACJ,YAAY,GAAM,GAAW,MAAY;AAQvC,GANA,EAAY,kBAAkB,EAC5B,UAAU,EAAW,qBAAqB,EAAU,OAAQ,EAC7D,CAAC,EACF,EAAY,kBAAkB,EAC5B,UAAU,EAAW,2BAA2B,EACjD,CAAC,EACE,GAAS,aACX,EAAQ,UAAU,GAAM,GAAW,EAAQ;;EAGhD,CAAC;;AAGJ,SAAgB,EACd,GAGA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB,EACnD,IAAc,GAAgB;AACpC,QAAO,EAAY;EACjB,GAAG;EACH,aAAY,MACV,EAAc,2BAA2B,kCACvC;GAAE,QAAQ,EAAW;GAAS;GAAY,CAC3C;EACH,YAAY,GAAM,GAAW,MAAY;AAMvC,GAJA,EAAY,kBAAkB,EAC5B,UAAU,EAAW,qBAAqB,EAAU,OAAQ,EAC7D,CAAC,EAEE,GAAS,aACX,EAAQ,UAAU,GAAM,GAAW,EAAQ;;EAGhD,CAAC;;AAGJ,SAAgB,EAGd,GACA,GASA;CACA,IAAM,EAAE,kBAAe,kBAAe,GAAmB;AAEzD,QAAO,EAML;EACA,GAAG;EACH,UAAU,EAAW,uBAAuB,EAAQ;EACpD,UAAS,MACP,EAAc,2BAA2B,2BAA2B,EAClE,yBAAyB;GACvB,GAAG;GACH,eAAe,EAAQ;GACxB,EACF,CAAC;EACJ,kBAAkB,KAAA;EAClB,mBAAkB,MAAQ,EAAK;EAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAccessRequirements.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/dataaccess/useAccessRequirements.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,SAAS,CAAA;AAC/D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,8BAA8B,EAC9B,+BAA+B,EAC/B,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,iCAAiC,EACjC,OAAO,EACP,OAAO,EACP,eAAe,EACf,WAAW,EACZ,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,kBAAkB,EAIlB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAI9B,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,iBAAiB,EAClE,mBAAmB,EAAE,MAAM,GAAG,MAAM,EACpC,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,iHAc1D;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE,kBAAkB,CAAC,CAAC,2FAS5E;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE,kBAAkB,CAAC,CAAC,2FAQ5E;AAED,wBAAgB,kCAAkC,CAChD,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,mFAapE;AAED,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,iBAAiB,EACpE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,iGAoBhE;AAED,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,iBAAiB,EACpE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,wFAmBvD;AAED,wBAAgB,0BAA0B,CACxC,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,OAAO,CACf,eAAe,CAAC,iBAAiB,GAAG,IAAI,EAAE,kBAAkB,CAAC,CAC9D,gGAWF;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,CAAC,EAAE,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,gGAmB/D;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,CAAC,EAAE,kBAAkB,CAC1B,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,CAClB,wHAmBF;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,CAAC,EAAE,kBAAkB,CAC1B,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,CAClB,wHAmBF;AAED,wBAAgB,mCAAmC,CACjD,KAAK,GAAG,YAAY,CAAC,+BAA+B,CAAC,EAErD,MAAM,EAAE,IAAI,CAAC,8BAA8B,EAAE,eAAe,CAAC,EAC7D,OAAO,CAAC,EAAE,uBAAuB,CAC/B,+BAA+B,EAC/B,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,+BAA+B,CAAC,eAAe,CAAC,CACjD,qFAqBF;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,CAAC,EAAE,OAAO,CACf,kBAAkB,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAClE,6GAgCF;
|
|
1
|
+
{"version":3,"file":"useAccessRequirements.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/dataaccess/useAccessRequirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAccessRequirements.js","names":[],"sources":["../../../src/synapse-queries/dataaccess/useAccessRequirements.ts"],"sourcesContent":["import { sortAccessRequirementsByCompletion } from '@/components/AccessRequirementList/AccessRequirementListUtils'\nimport SynapseClient, {\n createAccessRequirement,\n createAccessRequirementAcl,\n deleteAccessRequirementAcl,\n updateAccessRequirement,\n updateAccessRequirementAcl,\n} from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n AccessApproval,\n AccessControlList,\n AccessRequirement,\n AccessRequirementSearchRequest,\n AccessRequirementSearchResponse,\n AccessRequirementStatus,\n ACTSubmissionStatus,\n CreateAccessApprovalRequest,\n ManagedACTAccessRequirementStatus,\n Renewal,\n Request,\n ResearchProject,\n WikiPageKey,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQueries,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { KeyFactory } from '../KeyFactory'\nimport { getAllActionsRequiredQueryFilters } from '../QueryFilterUtils'\n\nexport function useGetAccessRequirements<T extends AccessRequirement>(\n accessRequirementId: string | number,\n options?: Partial<UseQueryOptions<T, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementQueryKey(\n String(accessRequirementId),\n ),\n queryFn: () =>\n SynapseClient.getAccessRequirementById<T>(\n accessToken,\n accessRequirementId,\n ),\n })\n}\n\nexport function useGetAccessRequirementsForEntity(\n entityId: string,\n options?: Partial<UseQueryOptions<AccessRequirement[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityAccessRequirementsQueryKey(entityId),\n queryFn: () =>\n SynapseClient.getAllAccessRequirements(accessToken, entityId),\n })\n}\n\nexport function useGetAccessRequirementsForTeam(\n teamId: string,\n options?: Partial<UseQueryOptions<AccessRequirement[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getTeamAccessRequirementsQueryKey(teamId),\n queryFn: () => SynapseClient.getTeamAccessRequirements(accessToken, teamId),\n })\n}\n\nexport function useGetAccessRequirementWikiPageKey(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<WikiPageKey, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementWikiPageKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getWikiPageKeyForAccessRequirement(\n accessToken,\n accessRequirementId,\n ),\n })\n}\n\nexport function useCreateAccessRequirement<T extends AccessRequirement>(\n options?: UseMutationOptions<T, SynapseClientError, Partial<T>>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<T, SynapseClientError, Partial<T>>({\n ...options,\n mutationFn: ar => createAccessRequirement<T>(accessToken, ar),\n onSuccess: async (newAr, ar, ctx) => {\n const accessRequirementQueryKey = keyFactory.getAccessRequirementQueryKey(\n newAr.id.toString(),\n )\n queryClient.setQueryData(accessRequirementQueryKey, newAr)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAr, ar, ctx)\n }\n return\n },\n })\n}\n\nexport function useUpdateAccessRequirement<T extends AccessRequirement>(\n options?: UseMutationOptions<T, SynapseClientError, T>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n return useMutation<T, SynapseClientError, T>({\n ...options,\n mutationFn: ar => updateAccessRequirement<T>(accessToken, ar),\n onSuccess: async (newAr, ar, ctx) => {\n const accessRequirementQueryKey = keyFactory.getAccessRequirementQueryKey(\n newAr.id.toString(),\n )\n queryClient.setQueryData(accessRequirementQueryKey, newAr)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAr, ar, ctx)\n }\n return\n },\n })\n}\n\nexport function useGetAccessRequirementACL(\n accessRequirementId: string,\n options?: Partial<\n UseQueryOptions<AccessControlList | null, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementAclQueryKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getAccessRequirementAcl(accessToken, accessRequirementId),\n })\n}\n\nexport function useDeleteAccessRequirementACL(\n options?: UseMutationOptions<void, SynapseClientError, string>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, string>({\n ...options,\n mutationFn: accessRequirementId =>\n deleteAccessRequirementAcl(accessToken, accessRequirementId),\n onSuccess: async (data, accessRequirementId, ctx) => {\n await queryClient.invalidateQueries({\n queryKey:\n keyFactory.getAccessRequirementAclQueryKey(accessRequirementId),\n })\n if (options?.onSuccess) {\n await options.onSuccess(data, accessRequirementId, ctx)\n }\n },\n })\n}\n\nexport function useCreateAccessRequirementACL(\n options?: UseMutationOptions<\n AccessControlList,\n SynapseClientError,\n AccessControlList\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: acl => createAccessRequirementAcl(accessToken, acl),\n onSuccess: async (newAcl, acl, ctx) => {\n const accessRequirementAclQueryKey =\n keyFactory.getAccessRequirementAclQueryKey(newAcl.id)\n queryClient.setQueryData(accessRequirementAclQueryKey, newAcl)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAcl, acl, ctx)\n }\n return\n },\n })\n}\n\nexport function useUpdateAccessRequirementACL(\n options?: UseMutationOptions<\n AccessControlList,\n SynapseClientError,\n AccessControlList\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: acl => updateAccessRequirementAcl(accessToken, acl),\n onSuccess: async (newAcl, acl, ctx) => {\n const accessRequirementAclQueryKey =\n keyFactory.getAccessRequirementAclQueryKey(newAcl.id)\n queryClient.setQueryData(accessRequirementAclQueryKey, newAcl)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAcl, acl, ctx)\n }\n return\n },\n })\n}\n\nexport function useSearchAccessRequirementsInfinite<\n TData = InfiniteData<AccessRequirementSearchResponse>,\n>(\n params: Omit<AccessRequirementSearchRequest, 'nextPageToken'>,\n options?: UseInfiniteQueryOptions<\n AccessRequirementSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n AccessRequirementSearchResponse['nextPageToken']\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n AccessRequirementSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n AccessRequirementSearchResponse['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.searchAccessRequirementsQueryKey(params),\n queryFn: async context => {\n return await SynapseClient.searchAccessRequirements(accessToken, {\n ...params,\n nextPageToken: context.pageParam,\n })\n },\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n\nexport function useCreateLockAccessRequirement(\n options?: Partial<\n UseMutationOptions<AccessRequirement, SynapseClientError, string>\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<AccessRequirement, SynapseClientError, string>({\n ...options,\n mutationFn: (entityId: string) =>\n SynapseClient.createLockAccessRequirement(entityId, accessToken),\n mutationKey: ['createLockAccessRequirement'],\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate all access requirement queries\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementQueryKey(),\n }),\n // Invalidate all entity queries (not just the current entity because the new AR may apply to this entity's children)\n // this also invalidates entity actions required\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllEntityDataQueryKey(),\n }),\n ...getAllActionsRequiredQueryFilters(keyFactory).map(filter =>\n queryClient.invalidateQueries(filter),\n ),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nfunction getAccessRequirementStatusQueryOptions<\n T extends\n | AccessRequirementStatus\n | ManagedACTAccessRequirementStatus = AccessRequirementStatus,\n>(\n keyFactory: KeyFactory,\n accessToken: string,\n accessRequirementId: string,\n): UseQueryOptions<T, SynapseClientError> {\n return {\n queryKey:\n keyFactory.getAccessRequirementStatusQueryKey(accessRequirementId),\n queryFn: () =>\n SynapseClient.getAccessRequirementStatus<T>(\n accessToken,\n accessRequirementId,\n ),\n }\n}\n\nexport function useGetAccessRequirementStatus<\n T extends\n | AccessRequirementStatus\n | ManagedACTAccessRequirementStatus = AccessRequirementStatus,\n>(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<T, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n ...getAccessRequirementStatusQueryOptions<T>(\n keyFactory,\n accessToken!,\n accessRequirementId,\n ),\n })\n}\n\nexport function useGetAccessRequirementStatuses<\n T extends\n | AccessRequirementStatus\n | ManagedACTAccessRequirementStatus = AccessRequirementStatus,\n>(accessRequirementIds: string[]) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQueries({\n queries: accessRequirementIds.map(id =>\n getAccessRequirementStatusQueryOptions<T>(keyFactory, accessToken!, id),\n ),\n })\n}\n\nexport function useSortAccessRequirementIdsByCompletion(\n accessRequirementIds: string[],\n options?: Partial<UseQueryOptions<string[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getSortedAccessRequirementsAndStatusQueryKey(\n accessRequirementIds,\n ),\n\n queryFn: () =>\n sortAccessRequirementsByCompletion(accessToken, accessRequirementIds),\n })\n}\n\nexport function useGetResearchProject(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<ResearchProject, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getAccessRequirementResearchProjectQueryKey(\n accessRequirementId,\n ),\n queryFn: () =>\n SynapseClient.getResearchProject(accessRequirementId, accessToken!),\n })\n}\n\nexport function useUpdateResearchProject(\n options?: Partial<\n UseMutationOptions<ResearchProject, SynapseClientError, ResearchProject>\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<ResearchProject, SynapseClientError, ResearchProject>({\n ...options,\n mutationFn: (researchProject: ResearchProject) =>\n SynapseClient.updateResearchProject(researchProject, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n // Invalidate the research project query\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementResearchProjectQueryKey(\n data.accessRequirementId,\n ),\n })\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useGetDataAccessRequestForUpdate(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<Request | Renewal, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getDataAccessRequestForUpdateQueryKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getDataAccessRequestForUpdate(\n accessRequirementId,\n accessToken!,\n ),\n })\n}\n\nexport function useUpdateDataAccessRequest(\n options?: UseMutationOptions<\n Request | Renewal,\n SynapseClientError,\n Request | Renewal\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<Request | Renewal, SynapseClientError, Request | Renewal>({\n ...options,\n mutationFn: (requestInterface: Request | Renewal) =>\n SynapseClient.updateDataAccessRequest(requestInterface, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n // Invalidate the data access request query\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestForUpdateQueryKey(\n data.accessRequirementId,\n ),\n })\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useCreateAccessApproval(\n options?: UseMutationOptions<\n AccessApproval,\n SynapseClientError,\n CreateAccessApprovalRequest\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<\n AccessApproval,\n SynapseClientError,\n CreateAccessApprovalRequest\n >({\n ...options,\n mutationFn: request =>\n SynapseClient.createAccessApproval(accessToken, request),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate query for AR status\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementStatusQueryKey(\n String(variables.requirementId),\n ),\n }),\n // changes to access requirement eligibility may impact entity actions required\n ...getAllActionsRequiredQueryFilters(keyFactory).map(filter =>\n queryClient.invalidateQueries(filter),\n ),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useCancelDataAccessRequest(\n options?: UseMutationOptions<\n ACTSubmissionStatus,\n SynapseClientError,\n { submissionId: string; accessRequirementId: string }\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<\n ACTSubmissionStatus,\n SynapseClientError,\n { submissionId: string; accessRequirementId: string }\n >({\n ...options,\n mutationFn: request =>\n SynapseClient.cancelDataAccessRequest(request.submissionId, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate data access submission queries\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessSubmissionQueryKey(),\n }),\n // Invalidate query for AR status\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementStatusQueryKey(\n String(variables.accessRequirementId),\n ),\n }),\n ])\n\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAccessRequirements.js","names":[],"sources":["../../../src/synapse-queries/dataaccess/useAccessRequirements.ts"],"sourcesContent":["import { sortAccessRequirementsByCompletion } from '@/components/AccessRequirementList/AccessRequirementListUtils'\nimport SynapseClient, {\n createAccessRequirement,\n createAccessRequirementAcl,\n deleteAccessRequirementAcl,\n updateAccessRequirement,\n updateAccessRequirementAcl,\n} from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n AccessApproval,\n AccessControlList,\n AccessRequirement,\n AccessRequirementSearchRequest,\n AccessRequirementSearchResponse,\n AccessRequirementStatus,\n ACTSubmissionStatus,\n CreateAccessApprovalRequest,\n ManagedACTAccessRequirementStatus,\n Renewal,\n Request,\n ResearchProject,\n WikiPageKey,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQueries,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { KeyFactory } from '../KeyFactory'\nimport { getAllActionsRequiredQueryFilters } from '../QueryFilterUtils'\n\nexport function useGetAccessRequirements<T extends AccessRequirement>(\n accessRequirementId: string | number,\n options?: Partial<UseQueryOptions<T, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementQueryKey(\n String(accessRequirementId),\n ),\n queryFn: () =>\n SynapseClient.getAccessRequirementById<T>(\n accessToken,\n accessRequirementId,\n ),\n })\n}\n\nexport function useGetAccessRequirementsForEntity(\n entityId: string,\n options?: Partial<UseQueryOptions<AccessRequirement[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityAccessRequirementsQueryKey(entityId),\n queryFn: () =>\n SynapseClient.getAllAccessRequirements(accessToken, entityId),\n })\n}\n\nexport function useGetAccessRequirementsForTeam(\n teamId: string,\n options?: Partial<UseQueryOptions<AccessRequirement[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getTeamAccessRequirementsQueryKey(teamId),\n queryFn: () => SynapseClient.getTeamAccessRequirements(accessToken, teamId),\n })\n}\n\nexport function useGetAccessRequirementWikiPageKey(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<WikiPageKey, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementWikiPageKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getWikiPageKeyForAccessRequirement(\n accessToken,\n accessRequirementId,\n ),\n })\n}\n\nexport function useCreateAccessRequirement<T extends AccessRequirement>(\n options?: UseMutationOptions<T, SynapseClientError, Partial<T>>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<T, SynapseClientError, Partial<T>>({\n ...options,\n mutationFn: ar => createAccessRequirement<T>(accessToken, ar),\n onSuccess: async (newAr, ar, ctx) => {\n const accessRequirementQueryKey = keyFactory.getAccessRequirementQueryKey(\n newAr.id.toString(),\n )\n queryClient.setQueryData(accessRequirementQueryKey, newAr)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAr, ar, ctx)\n }\n return\n },\n })\n}\n\nexport function useUpdateAccessRequirement<T extends AccessRequirement>(\n options?: UseMutationOptions<T, SynapseClientError, T>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n return useMutation<T, SynapseClientError, T>({\n ...options,\n mutationFn: ar => updateAccessRequirement<T>(accessToken, ar),\n onSuccess: async (newAr, ar, ctx) => {\n const accessRequirementQueryKey = keyFactory.getAccessRequirementQueryKey(\n newAr.id.toString(),\n )\n queryClient.setQueryData(accessRequirementQueryKey, newAr)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAr, ar, ctx)\n }\n return\n },\n })\n}\n\nexport function useGetAccessRequirementACL(\n accessRequirementId: string,\n options?: Partial<\n UseQueryOptions<AccessControlList | null, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementAclQueryKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getAccessRequirementAcl(accessToken, accessRequirementId),\n })\n}\n\nexport function useDeleteAccessRequirementACL(\n options?: UseMutationOptions<void, SynapseClientError, string>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, string>({\n ...options,\n mutationFn: accessRequirementId =>\n deleteAccessRequirementAcl(accessToken, accessRequirementId),\n onSuccess: async (data, accessRequirementId, ctx) => {\n await queryClient.invalidateQueries({\n queryKey:\n keyFactory.getAccessRequirementAclQueryKey(accessRequirementId),\n })\n if (options?.onSuccess) {\n await options.onSuccess(data, accessRequirementId, ctx)\n }\n },\n })\n}\n\nexport function useCreateAccessRequirementACL(\n options?: UseMutationOptions<\n AccessControlList,\n SynapseClientError,\n AccessControlList\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: acl => createAccessRequirementAcl(accessToken, acl),\n onSuccess: async (newAcl, acl, ctx) => {\n const accessRequirementAclQueryKey =\n keyFactory.getAccessRequirementAclQueryKey(newAcl.id)\n queryClient.setQueryData(accessRequirementAclQueryKey, newAcl)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAcl, acl, ctx)\n }\n return\n },\n })\n}\n\nexport function useUpdateAccessRequirementACL(\n options?: UseMutationOptions<\n AccessControlList,\n SynapseClientError,\n AccessControlList\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: acl => updateAccessRequirementAcl(accessToken, acl),\n onSuccess: async (newAcl, acl, ctx) => {\n const accessRequirementAclQueryKey =\n keyFactory.getAccessRequirementAclQueryKey(newAcl.id)\n queryClient.setQueryData(accessRequirementAclQueryKey, newAcl)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAcl, acl, ctx)\n }\n return\n },\n })\n}\n\nexport function useSearchAccessRequirementsInfinite<\n TData = InfiniteData<AccessRequirementSearchResponse>,\n>(\n params: Omit<AccessRequirementSearchRequest, 'nextPageToken'>,\n options?: UseInfiniteQueryOptions<\n AccessRequirementSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n AccessRequirementSearchResponse['nextPageToken']\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n AccessRequirementSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n AccessRequirementSearchResponse['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.searchAccessRequirementsQueryKey(params),\n queryFn: async context => {\n return await SynapseClient.searchAccessRequirements(accessToken, {\n ...params,\n nextPageToken: context.pageParam,\n })\n },\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n\nexport function useCreateLockAccessRequirement(\n options?: Partial<\n UseMutationOptions<AccessRequirement, SynapseClientError, string>\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<AccessRequirement, SynapseClientError, string>({\n ...options,\n mutationFn: (entityId: string) =>\n SynapseClient.createLockAccessRequirement(entityId, accessToken),\n mutationKey: ['createLockAccessRequirement'],\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate all access requirement queries\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementQueryKey(),\n }),\n // Invalidate all entity queries (not just the current entity because the new AR may apply to this entity's children)\n // this also invalidates entity actions required\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllEntityDataQueryKey(),\n }),\n ...getAllActionsRequiredQueryFilters(keyFactory).map(filter =>\n queryClient.invalidateQueries(filter),\n ),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nfunction getAccessRequirementStatusQueryOptions<\n T extends AccessRequirementStatus | ManagedACTAccessRequirementStatus =\n AccessRequirementStatus,\n>(\n keyFactory: KeyFactory,\n accessToken: string,\n accessRequirementId: string,\n): UseQueryOptions<T, SynapseClientError> {\n return {\n queryKey:\n keyFactory.getAccessRequirementStatusQueryKey(accessRequirementId),\n queryFn: () =>\n SynapseClient.getAccessRequirementStatus<T>(\n accessToken,\n accessRequirementId,\n ),\n }\n}\n\nexport function useGetAccessRequirementStatus<\n T extends AccessRequirementStatus | ManagedACTAccessRequirementStatus =\n AccessRequirementStatus,\n>(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<T, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n ...getAccessRequirementStatusQueryOptions<T>(\n keyFactory,\n accessToken!,\n accessRequirementId,\n ),\n })\n}\n\nexport function useGetAccessRequirementStatuses<\n T extends AccessRequirementStatus | ManagedACTAccessRequirementStatus =\n AccessRequirementStatus,\n>(accessRequirementIds: string[]) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQueries({\n queries: accessRequirementIds.map(id =>\n getAccessRequirementStatusQueryOptions<T>(keyFactory, accessToken!, id),\n ),\n })\n}\n\nexport function useSortAccessRequirementIdsByCompletion(\n accessRequirementIds: string[],\n options?: Partial<UseQueryOptions<string[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getSortedAccessRequirementsAndStatusQueryKey(\n accessRequirementIds,\n ),\n\n queryFn: () =>\n sortAccessRequirementsByCompletion(accessToken, accessRequirementIds),\n })\n}\n\nexport function useGetResearchProject(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<ResearchProject, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getAccessRequirementResearchProjectQueryKey(\n accessRequirementId,\n ),\n queryFn: () =>\n SynapseClient.getResearchProject(accessRequirementId, accessToken!),\n })\n}\n\nexport function useUpdateResearchProject(\n options?: Partial<\n UseMutationOptions<ResearchProject, SynapseClientError, ResearchProject>\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<ResearchProject, SynapseClientError, ResearchProject>({\n ...options,\n mutationFn: (researchProject: ResearchProject) =>\n SynapseClient.updateResearchProject(researchProject, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n // Invalidate the research project query\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementResearchProjectQueryKey(\n data.accessRequirementId,\n ),\n })\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useGetDataAccessRequestForUpdate(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<Request | Renewal, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getDataAccessRequestForUpdateQueryKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getDataAccessRequestForUpdate(\n accessRequirementId,\n accessToken!,\n ),\n })\n}\n\nexport function useUpdateDataAccessRequest(\n options?: UseMutationOptions<\n Request | Renewal,\n SynapseClientError,\n Request | Renewal\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<Request | Renewal, SynapseClientError, Request | Renewal>({\n ...options,\n mutationFn: (requestInterface: Request | Renewal) =>\n SynapseClient.updateDataAccessRequest(requestInterface, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n // Invalidate the data access request query\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestForUpdateQueryKey(\n data.accessRequirementId,\n ),\n })\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useCreateAccessApproval(\n options?: UseMutationOptions<\n AccessApproval,\n SynapseClientError,\n CreateAccessApprovalRequest\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<\n AccessApproval,\n SynapseClientError,\n CreateAccessApprovalRequest\n >({\n ...options,\n mutationFn: request =>\n SynapseClient.createAccessApproval(accessToken, request),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate query for AR status\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementStatusQueryKey(\n String(variables.requirementId),\n ),\n }),\n // changes to access requirement eligibility may impact entity actions required\n ...getAllActionsRequiredQueryFilters(keyFactory).map(filter =>\n queryClient.invalidateQueries(filter),\n ),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useCancelDataAccessRequest(\n options?: UseMutationOptions<\n ACTSubmissionStatus,\n SynapseClientError,\n { submissionId: string; accessRequirementId: string }\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<\n ACTSubmissionStatus,\n SynapseClientError,\n { submissionId: string; accessRequirementId: string }\n >({\n ...options,\n mutationFn: request =>\n SynapseClient.cancelDataAccessRequest(request.submissionId, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate data access submission queries\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessSubmissionQueryKey(),\n }),\n // Invalidate query for AR status\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementStatusQueryKey(\n String(variables.accessRequirementId),\n ),\n }),\n ])\n\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetQueryResultBundle.js","names":[],"sources":["../../../src/synapse-queries/entity/useGetQueryResultBundle.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils'\nimport { partitionQueryBundleRequestIntoRowsAndMetadata } from '@/utils/functions/queryUtils'\nimport {\n BUNDLE_MASK_QUERY_COUNT,\n BUNDLE_MASK_QUERY_RESULTS,\n DEFAULT_PAGE_SIZE,\n} from '@/utils/SynapseConstants'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n AsynchronousJobStatus,\n QueryBundleRequest,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n UseQueryResult,\n} from '@tanstack/react-query'\nimport { merge } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { KeyFactory } from '../KeyFactory'\n\nexport const tableQueryUseQueryDefaults = {\n staleTime: 1000 * 60 * 30, // 30 minutes\n}\n\n/**\n *\n * @param queryBundleRequest\n * @param options\n * @returns\n *\n * @deprecated - use useGetQueryResultBundleWithAsyncStatus. That hook can be renamed and this can be removed\n * when all cases are using useGetQueryResultBundleWithAsyncStatus\n */\nexport default function useGetQueryResultBundle<TData = QueryResultBundle>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<QueryResultBundle, SynapseClientError, TData>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery<QueryResultBundle, SynapseClientError, TData>({\n ...tableQueryUseQueryDefaults,\n ...options,\n queryKey: keyFactory.getEntityTableQueryResultQueryKey(\n queryBundleRequest,\n false,\n ),\n queryFn: () =>\n SynapseClient.getQueryTableResults(queryBundleRequest, accessToken),\n })\n}\n\nfunction useGetQueryResultBundleWithAsyncStatusInternal<\n TData = AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<\n AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n SynapseClientError,\n TData\n >\n >,\n setCurrentAsyncStatus?: (\n status: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n ) => void,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...tableQueryUseQueryDefaults,\n ...options,\n queryKey: keyFactory.getEntityTableQueryResultWithAsyncStatusQueryKey(\n queryBundleRequest,\n false,\n ),\n\n queryFn: () =>\n SynapseClient.getQueryTableAsyncJobResults(\n queryBundleRequest,\n accessToken,\n setCurrentAsyncStatus,\n ),\n })\n}\n\nexport function useGetQueryRows<\n TData = AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<\n AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n SynapseClientError,\n TData\n >\n >,\n setCurrentAsyncStatus?: (\n status: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n ) => void,\n) {\n const { rowDataRequest } =\n partitionQueryBundleRequestIntoRowsAndMetadata(queryBundleRequest)\n\n const enableQuery = rowDataRequest.partMask > 0 ? options?.enabled : false\n\n return useGetQueryResultBundleWithAsyncStatusInternal<TData>(\n rowDataRequest,\n {\n ...options,\n enabled: enableQuery,\n },\n setCurrentAsyncStatus,\n )\n}\n\nexport function useGetQueryStats<\n TData = AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<\n AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n SynapseClientError,\n TData\n >\n >,\n setCurrentAsyncStatus?: (\n status: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n ) => void,\n) {\n const { queryMetadataRequest } =\n partitionQueryBundleRequestIntoRowsAndMetadata(queryBundleRequest)\n\n const enableQuery =\n queryMetadataRequest.partMask > 0 ? options?.enabled : false\n\n return useGetQueryResultBundleWithAsyncStatusInternal<TData>(\n queryMetadataRequest,\n {\n ...options,\n enabled: enableQuery,\n },\n setCurrentAsyncStatus,\n )\n}\n\n/**\n * The set of properties returned by UseQuery where the results can be safely merged and memoized\n */\ntype UseQueryResultMergeableProperties<TData, TError> = Pick<\n UseQueryResult<TData, TError>,\n | 'data'\n | 'status'\n | 'isError'\n | 'isLoading'\n | 'error'\n | 'isSuccess'\n | 'isPlaceholderData'\n | 'isPending'\n // Note -- this list is not comprehensive. If there is a merge-able property you need, then add it!\n>\n\n/**\n * Returns a memoized object that contains the merge-able properties in the provided UseQueryResult\n * @param useQueryResult\n */\nfunction useGetMemoizedMergeableProperties<TData, TError>(\n useQueryResult: UseQueryResult<TData, TError>,\n): UseQueryResultMergeableProperties<TData, TError> {\n return useMemo(\n () => ({\n data: useQueryResult.data,\n status: useQueryResult.status,\n isError: useQueryResult.isError,\n isLoading: useQueryResult.isLoading,\n error: useQueryResult.error,\n isSuccess: useQueryResult.isSuccess,\n isPlaceholderData: useQueryResult.isPlaceholderData,\n isPending: useQueryResult.isPending,\n }),\n [\n useQueryResult.data,\n useQueryResult.error,\n useQueryResult.isError,\n useQueryResult.isLoading,\n useQueryResult.isPending,\n useQueryResult.isPlaceholderData,\n useQueryResult.isSuccess,\n useQueryResult.status,\n ],\n )\n}\n\nexport function useGetQueryResultBundleWithAsyncStatus<\n TData = AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<\n AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n SynapseClientError,\n TData\n >\n >,\n setCurrentAsyncStatus?: (\n status: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n ) => void,\n): UseQueryResultMergeableProperties<TData, SynapseClientError> {\n /**\n * Separate the query into two parts\n * - Query result rows, which will change each page\n * - Everything else, which does not change each page\n */\n const rowResult = useGetQueryRows<TData>(\n queryBundleRequest,\n options,\n setCurrentAsyncStatus,\n )\n const statsResult = useGetQueryStats<TData>(\n queryBundleRequest,\n options,\n setCurrentAsyncStatus,\n )\n\n // The rowResult and statsResult objects change every render.\n // Memoize the two query results so that we can safely memoize the result that we return\n const rowResultMergeableProperties =\n useGetMemoizedMergeableProperties(rowResult)\n const statsResultMergeableProperties =\n useGetMemoizedMergeableProperties(statsResult)\n\n const mergedBundle = useMemo(() => {\n // If either query is in error, return the error\n if (rowResultMergeableProperties.status === 'error') {\n return rowResultMergeableProperties\n } else if (statsResultMergeableProperties.status === 'error') {\n return statsResultMergeableProperties\n } else if (rowResultMergeableProperties.isLoading) {\n // if either query is loading, return the loading status\n return rowResultMergeableProperties\n } else if (statsResultMergeableProperties.isLoading) {\n return statsResultMergeableProperties\n } else {\n // Otherwise, both queries are successful or idle, Merge the results into a single object\n if (rowResultMergeableProperties.isPending) {\n // If the row result is pending, apply the stats result last to override the pending status\n return merge(\n {},\n rowResultMergeableProperties,\n statsResultMergeableProperties,\n )\n } else {\n // Otherwise, always apply the rowResult last, since it is likely have been fetched more recently than the stats.\n return merge(\n {},\n statsResultMergeableProperties,\n rowResultMergeableProperties,\n )\n }\n }\n }, [rowResultMergeableProperties, statsResultMergeableProperties])\n\n return mergedBundle\n}\n\nexport function getInfiniteQueryResultBundleOptions(\n queryBundleRequest: QueryBundleRequest,\n keyFactory: KeyFactory,\n accessToken: string | undefined,\n setCurrentAsyncStatus?: (\n status: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n ) => void,\n): UseInfiniteQueryOptions<\n AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n SynapseClientError,\n InfiniteData<AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>>,\n QueryKey,\n string | number | undefined\n> {\n return {\n ...tableQueryUseQueryDefaults,\n queryKey: keyFactory.getEntityTableQueryResultQueryKey(\n queryBundleRequest,\n true,\n ),\n queryFn: context => {\n const offset =\n typeof context.pageParam === 'string'\n ? parseInt(context.pageParam)\n : context.pageParam ?? 0\n return SynapseClient.getQueryTableAsyncJobResults(\n {\n ...queryBundleRequest,\n query: {\n ...queryBundleRequest.query,\n offset: offset,\n },\n /**\n * If we're on the first page, send the original partMask.\n * Otherwise, just ask for the queryResults (if they're in the original partMask), as it's the only part that changes between pages.\n *\n * We'll merge the \"aggregation\" parts and the pages of queryResults in the `select` function.\n *\n * We need the queryCount to know when to stop fetching data, so retrieve that in the first bundle.\n */\n partMask:\n offset !== 0\n ? queryBundleRequest.partMask & BUNDLE_MASK_QUERY_RESULTS\n : queryBundleRequest.partMask | BUNDLE_MASK_QUERY_COUNT,\n },\n accessToken,\n setCurrentAsyncStatus,\n )\n },\n select: data => {\n /**\n * Since we only fetch queryResults on 2nd and subsequent pages, we add to all pages the aggregate parts\n * that we only fetched on the first page.\n */\n const firstPage = data?.pages[0]\n if (firstPage.responseBody) {\n for (let i = 0; i < data.pages.length; i++) {\n const page = data.pages[i]\n if (page.responseBody != null) {\n data.pages[i].responseBody = {\n ...firstPage.responseBody,\n // queryResult changes on each page.\n queryResult: page.responseBody.queryResult,\n }\n }\n }\n }\n return data\n },\n getPreviousPageParam: firstPage => {\n if (firstPage.jobState !== 'COMPLETE') {\n return undefined\n }\n const request = firstPage.requestBody\n if (request.query.offset == null || request.query.offset === 0) {\n return undefined\n }\n const pageSize = request.query.limit ?? DEFAULT_PAGE_SIZE\n\n return Math.max(request.query.offset - pageSize, 0)\n },\n initialPageParam: undefined,\n getNextPageParam: (page, allPages) => {\n if (page.jobState !== 'COMPLETE') {\n return undefined\n }\n const request = page.requestBody\n const pageSize = request.query.limit ?? DEFAULT_PAGE_SIZE\n const totalQueryResultCount = allPages[0].responseBody?.queryCount\n if (totalQueryResultCount != null) {\n // We know the total number of results. See if our offset + pageSize is >= the total\n if ((request.query.offset ?? 0) + pageSize >= totalQueryResultCount) {\n return undefined\n }\n }\n return page.responseBody!.queryResult?.queryResults.rows.length ===\n pageSize\n ? (request.query.offset ?? 0) + pageSize\n : undefined\n },\n }\n}\n\n/**\n * Fetches all rows for a table query. Only use this request if you require all rows in a table at once.\n */\nexport function useGetFullTableQueryResults<TData = QueryResultBundle>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<QueryResultBundle, SynapseClientError, TData>\n >,\n forceAnonymous: boolean = false,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery<QueryResultBundle, SynapseClientError, TData>({\n ...tableQueryUseQueryDefaults,\n ...options,\n queryKey: keyFactory.getFullTableQueryResultQueryKey(\n queryBundleRequest,\n forceAnonymous,\n ),\n\n queryFn: () =>\n SynapseClient.getFullQueryTableResults(\n queryBundleRequest,\n forceAnonymous ? undefined : accessToken,\n ),\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useGetQueryResultBundle.js","names":[],"sources":["../../../src/synapse-queries/entity/useGetQueryResultBundle.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils'\nimport { partitionQueryBundleRequestIntoRowsAndMetadata } from '@/utils/functions/queryUtils'\nimport {\n BUNDLE_MASK_QUERY_COUNT,\n BUNDLE_MASK_QUERY_RESULTS,\n DEFAULT_PAGE_SIZE,\n} from '@/utils/SynapseConstants'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n AsynchronousJobStatus,\n QueryBundleRequest,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n UseQueryResult,\n} from '@tanstack/react-query'\nimport { merge } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { KeyFactory } from '../KeyFactory'\n\nexport const tableQueryUseQueryDefaults = {\n staleTime: 1000 * 60 * 30, // 30 minutes\n}\n\n/**\n *\n * @param queryBundleRequest\n * @param options\n * @returns\n *\n * @deprecated - use useGetQueryResultBundleWithAsyncStatus. That hook can be renamed and this can be removed\n * when all cases are using useGetQueryResultBundleWithAsyncStatus\n */\nexport default function useGetQueryResultBundle<TData = QueryResultBundle>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<QueryResultBundle, SynapseClientError, TData>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery<QueryResultBundle, SynapseClientError, TData>({\n ...tableQueryUseQueryDefaults,\n ...options,\n queryKey: keyFactory.getEntityTableQueryResultQueryKey(\n queryBundleRequest,\n false,\n ),\n queryFn: () =>\n SynapseClient.getQueryTableResults(queryBundleRequest, accessToken),\n })\n}\n\nfunction useGetQueryResultBundleWithAsyncStatusInternal<\n TData = AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<\n AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n SynapseClientError,\n TData\n >\n >,\n setCurrentAsyncStatus?: (\n status: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n ) => void,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...tableQueryUseQueryDefaults,\n ...options,\n queryKey: keyFactory.getEntityTableQueryResultWithAsyncStatusQueryKey(\n queryBundleRequest,\n false,\n ),\n\n queryFn: () =>\n SynapseClient.getQueryTableAsyncJobResults(\n queryBundleRequest,\n accessToken,\n setCurrentAsyncStatus,\n ),\n })\n}\n\nexport function useGetQueryRows<\n TData = AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<\n AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n SynapseClientError,\n TData\n >\n >,\n setCurrentAsyncStatus?: (\n status: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n ) => void,\n) {\n const { rowDataRequest } =\n partitionQueryBundleRequestIntoRowsAndMetadata(queryBundleRequest)\n\n const enableQuery = rowDataRequest.partMask > 0 ? options?.enabled : false\n\n return useGetQueryResultBundleWithAsyncStatusInternal<TData>(\n rowDataRequest,\n {\n ...options,\n enabled: enableQuery,\n },\n setCurrentAsyncStatus,\n )\n}\n\nexport function useGetQueryStats<\n TData = AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<\n AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n SynapseClientError,\n TData\n >\n >,\n setCurrentAsyncStatus?: (\n status: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n ) => void,\n) {\n const { queryMetadataRequest } =\n partitionQueryBundleRequestIntoRowsAndMetadata(queryBundleRequest)\n\n const enableQuery =\n queryMetadataRequest.partMask > 0 ? options?.enabled : false\n\n return useGetQueryResultBundleWithAsyncStatusInternal<TData>(\n queryMetadataRequest,\n {\n ...options,\n enabled: enableQuery,\n },\n setCurrentAsyncStatus,\n )\n}\n\n/**\n * The set of properties returned by UseQuery where the results can be safely merged and memoized\n */\ntype UseQueryResultMergeableProperties<TData, TError> = Pick<\n UseQueryResult<TData, TError>,\n | 'data'\n | 'status'\n | 'isError'\n | 'isLoading'\n | 'error'\n | 'isSuccess'\n | 'isPlaceholderData'\n | 'isPending'\n // Note -- this list is not comprehensive. If there is a merge-able property you need, then add it!\n>\n\n/**\n * Returns a memoized object that contains the merge-able properties in the provided UseQueryResult\n * @param useQueryResult\n */\nfunction useGetMemoizedMergeableProperties<TData, TError>(\n useQueryResult: UseQueryResult<TData, TError>,\n): UseQueryResultMergeableProperties<TData, TError> {\n return useMemo(\n () => ({\n data: useQueryResult.data,\n status: useQueryResult.status,\n isError: useQueryResult.isError,\n isLoading: useQueryResult.isLoading,\n error: useQueryResult.error,\n isSuccess: useQueryResult.isSuccess,\n isPlaceholderData: useQueryResult.isPlaceholderData,\n isPending: useQueryResult.isPending,\n }),\n [\n useQueryResult.data,\n useQueryResult.error,\n useQueryResult.isError,\n useQueryResult.isLoading,\n useQueryResult.isPending,\n useQueryResult.isPlaceholderData,\n useQueryResult.isSuccess,\n useQueryResult.status,\n ],\n )\n}\n\nexport function useGetQueryResultBundleWithAsyncStatus<\n TData = AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<\n AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n SynapseClientError,\n TData\n >\n >,\n setCurrentAsyncStatus?: (\n status: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n ) => void,\n): UseQueryResultMergeableProperties<TData, SynapseClientError> {\n /**\n * Separate the query into two parts\n * - Query result rows, which will change each page\n * - Everything else, which does not change each page\n */\n const rowResult = useGetQueryRows<TData>(\n queryBundleRequest,\n options,\n setCurrentAsyncStatus,\n )\n const statsResult = useGetQueryStats<TData>(\n queryBundleRequest,\n options,\n setCurrentAsyncStatus,\n )\n\n // The rowResult and statsResult objects change every render.\n // Memoize the two query results so that we can safely memoize the result that we return\n const rowResultMergeableProperties =\n useGetMemoizedMergeableProperties(rowResult)\n const statsResultMergeableProperties =\n useGetMemoizedMergeableProperties(statsResult)\n\n const mergedBundle = useMemo(() => {\n // If either query is in error, return the error\n if (rowResultMergeableProperties.status === 'error') {\n return rowResultMergeableProperties\n } else if (statsResultMergeableProperties.status === 'error') {\n return statsResultMergeableProperties\n } else if (rowResultMergeableProperties.isLoading) {\n // if either query is loading, return the loading status\n return rowResultMergeableProperties\n } else if (statsResultMergeableProperties.isLoading) {\n return statsResultMergeableProperties\n } else {\n // Otherwise, both queries are successful or idle, Merge the results into a single object\n if (rowResultMergeableProperties.isPending) {\n // If the row result is pending, apply the stats result last to override the pending status\n return merge(\n {},\n rowResultMergeableProperties,\n statsResultMergeableProperties,\n )\n } else {\n // Otherwise, always apply the rowResult last, since it is likely have been fetched more recently than the stats.\n return merge(\n {},\n statsResultMergeableProperties,\n rowResultMergeableProperties,\n )\n }\n }\n }, [rowResultMergeableProperties, statsResultMergeableProperties])\n\n return mergedBundle\n}\n\nexport function getInfiniteQueryResultBundleOptions(\n queryBundleRequest: QueryBundleRequest,\n keyFactory: KeyFactory,\n accessToken: string | undefined,\n setCurrentAsyncStatus?: (\n status: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n ) => void,\n): UseInfiniteQueryOptions<\n AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>,\n SynapseClientError,\n InfiniteData<AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>>,\n QueryKey,\n string | number | undefined\n> {\n return {\n ...tableQueryUseQueryDefaults,\n queryKey: keyFactory.getEntityTableQueryResultQueryKey(\n queryBundleRequest,\n true,\n ),\n queryFn: context => {\n const offset =\n typeof context.pageParam === 'string'\n ? parseInt(context.pageParam)\n : (context.pageParam ?? 0)\n return SynapseClient.getQueryTableAsyncJobResults(\n {\n ...queryBundleRequest,\n query: {\n ...queryBundleRequest.query,\n offset: offset,\n },\n /**\n * If we're on the first page, send the original partMask.\n * Otherwise, just ask for the queryResults (if they're in the original partMask), as it's the only part that changes between pages.\n *\n * We'll merge the \"aggregation\" parts and the pages of queryResults in the `select` function.\n *\n * We need the queryCount to know when to stop fetching data, so retrieve that in the first bundle.\n */\n partMask:\n offset !== 0\n ? queryBundleRequest.partMask & BUNDLE_MASK_QUERY_RESULTS\n : queryBundleRequest.partMask | BUNDLE_MASK_QUERY_COUNT,\n },\n accessToken,\n setCurrentAsyncStatus,\n )\n },\n select: data => {\n /**\n * Since we only fetch queryResults on 2nd and subsequent pages, we add to all pages the aggregate parts\n * that we only fetched on the first page.\n */\n const firstPage = data?.pages[0]\n if (firstPage.responseBody) {\n for (let i = 0; i < data.pages.length; i++) {\n const page = data.pages[i]\n if (page.responseBody != null) {\n data.pages[i].responseBody = {\n ...firstPage.responseBody,\n // queryResult changes on each page.\n queryResult: page.responseBody.queryResult,\n }\n }\n }\n }\n return data\n },\n getPreviousPageParam: firstPage => {\n if (firstPage.jobState !== 'COMPLETE') {\n return undefined\n }\n const request = firstPage.requestBody\n if (request.query.offset == null || request.query.offset === 0) {\n return undefined\n }\n const pageSize = request.query.limit ?? DEFAULT_PAGE_SIZE\n\n return Math.max(request.query.offset - pageSize, 0)\n },\n initialPageParam: undefined,\n getNextPageParam: (page, allPages) => {\n if (page.jobState !== 'COMPLETE') {\n return undefined\n }\n const request = page.requestBody\n const pageSize = request.query.limit ?? DEFAULT_PAGE_SIZE\n const totalQueryResultCount = allPages[0].responseBody?.queryCount\n if (totalQueryResultCount != null) {\n // We know the total number of results. See if our offset + pageSize is >= the total\n if ((request.query.offset ?? 0) + pageSize >= totalQueryResultCount) {\n return undefined\n }\n }\n return page.responseBody!.queryResult?.queryResults.rows.length ===\n pageSize\n ? (request.query.offset ?? 0) + pageSize\n : undefined\n },\n }\n}\n\n/**\n * Fetches all rows for a table query. Only use this request if you require all rows in a table at once.\n */\nexport function useGetFullTableQueryResults<TData = QueryResultBundle>(\n queryBundleRequest: QueryBundleRequest,\n options?: Partial<\n UseQueryOptions<QueryResultBundle, SynapseClientError, TData>\n >,\n forceAnonymous: boolean = false,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery<QueryResultBundle, SynapseClientError, TData>({\n ...tableQueryUseQueryDefaults,\n ...options,\n queryKey: keyFactory.getFullTableQueryResultQueryKey(\n queryBundleRequest,\n forceAnonymous,\n ),\n\n queryFn: () =>\n SynapseClient.getFullQueryTableResults(\n queryBundleRequest,\n forceAnonymous ? undefined : accessToken,\n ),\n })\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SynapseClientError } from '@/utils';
|
|
2
|
-
import { FeatureFlagEnum, FeatureFlags } from '
|
|
2
|
+
import { FeatureFlagEnum, FeatureFlags } from '@/utils/featureflag/FeatureFlags';
|
|
3
3
|
import { UseQueryOptions } from '@tanstack/react-query';
|
|
4
4
|
export declare function useGetFeatureFlag(featureFlag: FeatureFlagEnum, options?: Partial<UseQueryOptions<FeatureFlags, SynapseClientError>>): boolean;
|
|
5
5
|
//# sourceMappingURL=useGetFeatureFlag.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetFeatureFlag.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/featureflags/useGetFeatureFlag.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useGetFeatureFlag.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/featureflags/useGetFeatureFlag.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAChF,OAAO,EAAY,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEjE,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,eAAe,EAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,GACnE,OAAO,CAWT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetFeatureFlag.js","names":[],"sources":["../../../src/synapse-queries/featureflags/useGetFeatureFlag.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport { FeatureFlagEnum, FeatureFlags } from '
|
|
1
|
+
{"version":3,"file":"useGetFeatureFlag.js","names":[],"sources":["../../../src/synapse-queries/featureflags/useGetFeatureFlag.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport { FeatureFlagEnum, FeatureFlags } from '@/utils/featureflag/FeatureFlags'\nimport { useQuery, UseQueryOptions } from '@tanstack/react-query'\n\nexport function useGetFeatureFlag(\n featureFlag: FeatureFlagEnum,\n options?: Partial<UseQueryOptions<FeatureFlags, SynapseClientError>>,\n): boolean {\n const { keyFactory, isInExperimentalMode } = useSynapseContext()\n\n const { data: featureFlags } = useQuery<FeatureFlags, SynapseClientError>({\n staleTime: Infinity,\n ...options,\n queryKey: keyFactory.getFeatureFlagQueryKey(),\n queryFn: () => SynapseClient.getFeatureFlags(),\n })\n\n return isInExperimentalMode || !!featureFlags?.[featureFlag]\n}\n"],"mappings":";;;;;AAKA,SAAgB,EACd,GACA,GACS;CACT,IAAM,EAAE,eAAY,4BAAyB,GAAmB,EAE1D,EAAE,MAAM,MAAiB,EAA2C;EACxE,WAAW;EACX,GAAG;EACH,UAAU,EAAW,wBAAwB;EAC7C,eAAe,EAAc,iBAAiB;EAC/C,CAAC;AAEF,QAAO,KAAwB,CAAC,CAAC,IAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFiles.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/file/useFiles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,qBAAqB,EACtB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAGL,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAA;AAI9B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;CACtD,CAAA;AAED,wBAAgB,wBAAwB,CACtC,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,GAAE,OAAe,EAC/B,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,CAC7D,GACA,kBAAkB,GAAG,SAAS,CAmChC;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,CAAC,EAAE,MAAM,EACzB,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,CAC/D,8CAyBF;AAED,wBAAgB,gCAAgC,CAC9C,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,GAAE,OAAe,EAC/B,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,CAC/D,8CA6BF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,CACpE,
|
|
1
|
+
{"version":3,"file":"useFiles.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/file/useFiles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,qBAAqB,EACtB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAGL,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAA;AAI9B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;CACtD,CAAA;AAED,wBAAgB,wBAAwB,CACtC,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,GAAE,OAAe,EAC/B,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,CAC7D,GACA,kBAAkB,GAAG,SAAS,CAmChC;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,CAAC,EAAE,MAAM,EACzB,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,CAC/D,8CAyBF;AAED,wBAAgB,gCAAgC,CAC9C,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,GAAE,OAAe,EAC/B,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,CAC/D,8CA6BF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,CACpE,mDAuBF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,uDAsCxE;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,iCAyB3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFiles.js","names":[],"sources":["../../../src/synapse-queries/file/useFiles.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { fetchBlob, useCreateUrlForData } from '@/utils/hooks'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n BatchFileRequest,\n BatchFileResult,\n FileHandle,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\nimport {\n useQuery,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n} from '@tanstack/react-query'\nimport { cloneDeep } from 'lodash-es'\nimport { useEffect } from 'react'\n\nexport type StablePresignedUrl = {\n dataUrl?: string\n queryResult: UseQueryResult<Blob, SynapseClientError>\n}\n\nexport function useGetStablePresignedUrl(\n fileHandleAssociation: FileHandleAssociation,\n forceAnonymous: boolean = false,\n options?: Partial<\n Omit<UseQueryOptions<Blob, SynapseClientError>, 'staleTime'>\n >,\n): StablePresignedUrl | undefined {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const batchFileResult = await SynapseClient.getFiles(\n {\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: false,\n includePreSignedURLs: true,\n includePreviewPreSignedURLs: false,\n },\n forceAnonymous ? undefined : accessToken,\n )\n return await fetchBlob(batchFileResult.requestedFiles[0].preSignedURL!)\n }\n const queryResult = useQuery({\n ...options,\n queryKey: keyFactory.getStablePresignedUrlFromFHAQueryKey(\n fileHandleAssociation,\n forceAnonymous,\n ),\n queryFn,\n staleTime: Infinity,\n })\n const { data: blob, error } = queryResult\n\n useEffect(() => {\n if (error) {\n console.error(\n `Failed to fetch file object. See network log for details: FileHandleAssociation=${JSON.stringify(\n fileHandleAssociation,\n )}`,\n )\n }\n }, [error, fileHandleAssociation])\n return { dataUrl: useCreateUrlForData(blob), queryResult }\n}\n\nexport function useGetPresignedUrlContent(\n fileHandle: FileHandle,\n request: BatchFileRequest,\n maxFileSizeBytes?: number,\n options?: Partial<\n Omit<UseQueryOptions<string, SynapseClientError>, 'staleTime'>\n >,\n) {\n if (request.requestedFiles.length !== 1) {\n console.warn('useGetPresignedUrlContent only supports one file at a time')\n }\n const { accessToken, keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const batchFileResult = await SynapseClient.getFiles(request, accessToken)\n const data = await SynapseClient.getFileHandleContent(\n fileHandle,\n batchFileResult.requestedFiles[0].preSignedURL!,\n maxFileSizeBytes,\n )\n return data\n }\n return useQuery<string, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getPresignedUrlContentQueryKey(\n fileHandle,\n request,\n maxFileSizeBytes,\n ),\n queryFn,\n staleTime: Infinity,\n })\n}\n\nexport function useGetPresignedUrlContentFromFHA(\n fileHandleAssociation: FileHandleAssociation,\n forceAnonymous: boolean = false,\n options?: Partial<\n Omit<UseQueryOptions<string, SynapseClientError>, 'staleTime'>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const batchFileResult = await SynapseClient.getFiles(\n {\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: true,\n includePreSignedURLs: true,\n includePreviewPreSignedURLs: false,\n },\n forceAnonymous ? undefined : accessToken,\n )\n\n const data = await SynapseClient.getFileHandleContent(\n batchFileResult.requestedFiles[0].fileHandle!,\n batchFileResult.requestedFiles[0].preSignedURL!,\n )\n return data\n }\n return useQuery<string, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getPresignedUrlFromFHAContentQueryKey(\n fileHandleAssociation,\n forceAnonymous,\n ),\n queryFn,\n staleTime: Infinity,\n })\n}\n\n/**\n * Get a blob containing the image data for the avatar of a Synapse user. Returns null if the user does not have a profile image.\n */\nexport function useGetProfileImage(\n userId: string,\n options?: Partial<\n Omit<UseQueryOptions<Blob | null, SynapseClientError>, 'staleTime'>\n >,\n) {\n const { keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const presignedUrl = await SynapseClient.getProfilePicPreviewPresignedUrl(\n userId,\n )\n if (presignedUrl) {\n // Fetch the presigned URL right away because it will expire\n const data = await fetch(presignedUrl, {\n method: 'GET',\n mode: 'cors',\n cache: 'no-cache',\n })\n return await data.blob()\n }\n return null\n }\n return useQuery<Blob | null, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getProfileImageQueryKey(userId),\n queryFn,\n staleTime: Infinity,\n })\n}\n\n/**\n * Get a batch of file handle data from the backend.\n *\n * This hook does not support fetching pre-signed URLs. In most web UI cases, you will want to either request the presigned\n * URL upon an invoked action (e.g. a \"download\" button is clicked) or use {@link SynapseClient#getPortalFileHandleServletUrl}\n * @param request\n * @param options\n */\nexport function useGetFileBatch(\n request: BatchFileRequest,\n options?: Partial<UseQueryOptions<BatchFileResult, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n const queryFn = async () => {\n const response = await SynapseClient.getFiles(request, accessToken)\n\n // Update the cache with the individual file handle results, in case this was a batch\n response.requestedFiles.forEach(fileResult => {\n const requestedItem = request.requestedFiles.find(\n fha => fha.fileHandleId === fileResult.fileHandleId,\n )!\n const atomicRequest: BatchFileRequest = {\n ...cloneDeep(request),\n requestedFiles: [requestedItem],\n }\n const atomicResult: BatchFileResult = {\n requestedFiles: [fileResult],\n }\n queryClient.setQueryData(\n keyFactory.getBatchOfFiles(atomicRequest),\n atomicResult,\n )\n })\n return response\n }\n\n if (request.includePreSignedURLs || request.includePreviewPreSignedURLs) {\n // Don't use this hook if you need pre-signed URLs. They expire every 30 seconds, so you will either end up giving the\n // user an expired URL, or making requests to the backend more frequently than necessary.\n throw new Error('useGetFileBatch does not support pre-signed URLs.')\n }\n\n return useQuery<BatchFileResult, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getBatchOfFiles(request),\n queryFn,\n })\n}\n\nexport function useFileContent(\n fileURL: string,\n options?: Partial<UseQueryOptions<string>>,\n) {\n const { keyFactory } = useSynapseContext()\n const queryFn = async () => {\n try {\n if (!fileURL) {\n throw new Error(`File URL must be set`)\n }\n // Fetch the raw file contents from the latest tag\n const fileResponse = await fetch(fileURL)\n if (!fileResponse.ok) {\n throw new Error(`Error fetching file: ${fileResponse.statusText}`)\n }\n\n return await fileResponse.text()\n } catch (error) {\n console.error(error)\n }\n return ''\n }\n return useQuery<string>({\n ...options,\n queryKey: keyFactory.getFileContentKey(fileURL),\n queryFn,\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useFiles.js","names":[],"sources":["../../../src/synapse-queries/file/useFiles.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { fetchBlob, useCreateUrlForData } from '@/utils/hooks'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n BatchFileRequest,\n BatchFileResult,\n FileHandle,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\nimport {\n useQuery,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n} from '@tanstack/react-query'\nimport { cloneDeep } from 'lodash-es'\nimport { useEffect } from 'react'\n\nexport type StablePresignedUrl = {\n dataUrl?: string\n queryResult: UseQueryResult<Blob, SynapseClientError>\n}\n\nexport function useGetStablePresignedUrl(\n fileHandleAssociation: FileHandleAssociation,\n forceAnonymous: boolean = false,\n options?: Partial<\n Omit<UseQueryOptions<Blob, SynapseClientError>, 'staleTime'>\n >,\n): StablePresignedUrl | undefined {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const batchFileResult = await SynapseClient.getFiles(\n {\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: false,\n includePreSignedURLs: true,\n includePreviewPreSignedURLs: false,\n },\n forceAnonymous ? undefined : accessToken,\n )\n return await fetchBlob(batchFileResult.requestedFiles[0].preSignedURL!)\n }\n const queryResult = useQuery({\n ...options,\n queryKey: keyFactory.getStablePresignedUrlFromFHAQueryKey(\n fileHandleAssociation,\n forceAnonymous,\n ),\n queryFn,\n staleTime: Infinity,\n })\n const { data: blob, error } = queryResult\n\n useEffect(() => {\n if (error) {\n console.error(\n `Failed to fetch file object. See network log for details: FileHandleAssociation=${JSON.stringify(\n fileHandleAssociation,\n )}`,\n )\n }\n }, [error, fileHandleAssociation])\n return { dataUrl: useCreateUrlForData(blob), queryResult }\n}\n\nexport function useGetPresignedUrlContent(\n fileHandle: FileHandle,\n request: BatchFileRequest,\n maxFileSizeBytes?: number,\n options?: Partial<\n Omit<UseQueryOptions<string, SynapseClientError>, 'staleTime'>\n >,\n) {\n if (request.requestedFiles.length !== 1) {\n console.warn('useGetPresignedUrlContent only supports one file at a time')\n }\n const { accessToken, keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const batchFileResult = await SynapseClient.getFiles(request, accessToken)\n const data = await SynapseClient.getFileHandleContent(\n fileHandle,\n batchFileResult.requestedFiles[0].preSignedURL!,\n maxFileSizeBytes,\n )\n return data\n }\n return useQuery<string, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getPresignedUrlContentQueryKey(\n fileHandle,\n request,\n maxFileSizeBytes,\n ),\n queryFn,\n staleTime: Infinity,\n })\n}\n\nexport function useGetPresignedUrlContentFromFHA(\n fileHandleAssociation: FileHandleAssociation,\n forceAnonymous: boolean = false,\n options?: Partial<\n Omit<UseQueryOptions<string, SynapseClientError>, 'staleTime'>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const batchFileResult = await SynapseClient.getFiles(\n {\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: true,\n includePreSignedURLs: true,\n includePreviewPreSignedURLs: false,\n },\n forceAnonymous ? undefined : accessToken,\n )\n\n const data = await SynapseClient.getFileHandleContent(\n batchFileResult.requestedFiles[0].fileHandle!,\n batchFileResult.requestedFiles[0].preSignedURL!,\n )\n return data\n }\n return useQuery<string, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getPresignedUrlFromFHAContentQueryKey(\n fileHandleAssociation,\n forceAnonymous,\n ),\n queryFn,\n staleTime: Infinity,\n })\n}\n\n/**\n * Get a blob containing the image data for the avatar of a Synapse user. Returns null if the user does not have a profile image.\n */\nexport function useGetProfileImage(\n userId: string,\n options?: Partial<\n Omit<UseQueryOptions<Blob | null, SynapseClientError>, 'staleTime'>\n >,\n) {\n const { keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const presignedUrl =\n await SynapseClient.getProfilePicPreviewPresignedUrl(userId)\n if (presignedUrl) {\n // Fetch the presigned URL right away because it will expire\n const data = await fetch(presignedUrl, {\n method: 'GET',\n mode: 'cors',\n cache: 'no-cache',\n })\n return await data.blob()\n }\n return null\n }\n return useQuery<Blob | null, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getProfileImageQueryKey(userId),\n queryFn,\n staleTime: Infinity,\n })\n}\n\n/**\n * Get a batch of file handle data from the backend.\n *\n * This hook does not support fetching pre-signed URLs. In most web UI cases, you will want to either request the presigned\n * URL upon an invoked action (e.g. a \"download\" button is clicked) or use {@link SynapseClient#getPortalFileHandleServletUrl}\n * @param request\n * @param options\n */\nexport function useGetFileBatch(\n request: BatchFileRequest,\n options?: Partial<UseQueryOptions<BatchFileResult, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n const queryFn = async () => {\n const response = await SynapseClient.getFiles(request, accessToken)\n\n // Update the cache with the individual file handle results, in case this was a batch\n response.requestedFiles.forEach(fileResult => {\n const requestedItem = request.requestedFiles.find(\n fha => fha.fileHandleId === fileResult.fileHandleId,\n )!\n const atomicRequest: BatchFileRequest = {\n ...cloneDeep(request),\n requestedFiles: [requestedItem],\n }\n const atomicResult: BatchFileResult = {\n requestedFiles: [fileResult],\n }\n queryClient.setQueryData(\n keyFactory.getBatchOfFiles(atomicRequest),\n atomicResult,\n )\n })\n return response\n }\n\n if (request.includePreSignedURLs || request.includePreviewPreSignedURLs) {\n // Don't use this hook if you need pre-signed URLs. They expire every 30 seconds, so you will either end up giving the\n // user an expired URL, or making requests to the backend more frequently than necessary.\n throw new Error('useGetFileBatch does not support pre-signed URLs.')\n }\n\n return useQuery<BatchFileResult, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getBatchOfFiles(request),\n queryFn,\n })\n}\n\nexport function useFileContent(\n fileURL: string,\n options?: Partial<UseQueryOptions<string>>,\n) {\n const { keyFactory } = useSynapseContext()\n const queryFn = async () => {\n try {\n if (!fileURL) {\n throw new Error(`File URL must be set`)\n }\n // Fetch the raw file contents from the latest tag\n const fileResponse = await fetch(fileURL)\n if (!fileResponse.ok) {\n throw new Error(`Error fetching file: ${fileResponse.statusText}`)\n }\n\n return await fileResponse.text()\n } catch (error) {\n console.error(error)\n }\n return ''\n }\n return useQuery<string>({\n ...options,\n queryKey: keyFactory.getFileContentKey(fileURL),\n queryFn,\n })\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTermsOfService.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/termsOfService/useTermsOfService.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,SAAS,CAAA;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"useTermsOfService.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/termsOfService/useTermsOfService.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,SAAS,CAAA;AAC/D,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAEL,kBAAkB,EAGlB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,0FAS3E;AAED,wBAAgB,uBAAuB,CACrC,WAAW,CAAC,EAAE,MAAM,EAAE,4LAA4L;AAClN,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC,4FAS7E;AAED,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,OAAO,CACf,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAC7D,wGAiBF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTermsOfService.js","names":[],"sources":["../../../src/synapse-queries/termsOfService/useTermsOfService.ts"],"sourcesContent":["/*\n * Hooks to access Chat Services in Synapse\n */\nimport SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {
|
|
1
|
+
{"version":3,"file":"useTermsOfService.js","names":[],"sources":["../../../src/synapse-queries/termsOfService/useTermsOfService.ts"],"sourcesContent":["/*\n * Hooks to access Chat Services in Synapse\n */\nimport SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n AccessToken,\n TermsOfServiceInfo,\n TermsOfServiceStatus,\n} from '@sage-bionetworks/synapse-types'\nimport {\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useTermsOfServiceInfo(\n options?: Partial<UseQueryOptions<TermsOfServiceInfo, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getTermsOfServiceInfoKey(),\n\n queryFn: () => SynapseClient.getTermsOfServiceInfo(accessToken),\n })\n}\n\nexport function useTermsOfServiceStatus(\n accessToken?: string, //usually we can fetch the access token from the context, but this hook is used by ApplicationSessionManager which sets the access token in the context (ApplicationSessionContextProvider)!\n options?: Partial<UseQueryOptions<TermsOfServiceStatus, SynapseClientError>>,\n) {\n const { keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getTermsOfServiceStatus(),\n\n queryFn: () => SynapseClient.getTermsOfServiceStatus(accessToken),\n })\n}\n\nexport function useSignTermsOfService(\n options?: Partial<\n UseMutationOptions<unknown, SynapseClientError, AccessToken>\n >,\n) {\n const { keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n return useMutation<unknown, SynapseClientError, AccessToken>({\n ...options,\n mutationFn: (accessToken: AccessToken) =>\n SynapseClient.signSynapseTermsOfUse(accessToken),\n onSuccess: async (resp, variables, ctx) => {\n queryClient.invalidateQueries({\n queryKey: keyFactory.getTermsOfServiceStatus(),\n })\n if (options?.onSuccess) {\n await options.onSuccess(resp, variables, ctx)\n }\n },\n })\n}\n"],"mappings":";;;;;AAkBA,SAAgB,EACd,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,0BAA0B;EAE/C,eAAe,EAAc,sBAAsB,EAAY;EAChE,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,kBAAe,GAAmB;AAC1C,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,yBAAyB;EAE9C,eAAe,EAAc,wBAAwB,EAAY;EAClE,CAAC;;AAGJ,SAAgB,EACd,GAGA;CACA,IAAM,EAAE,kBAAe,GAAmB,EACpC,IAAc,GAAgB;AACpC,QAAO,EAAsD;EAC3D,GAAG;EACH,aAAa,MACX,EAAc,sBAAsB,EAAY;EAClD,WAAW,OAAO,GAAM,GAAW,MAAQ;AAIzC,GAHA,EAAY,kBAAkB,EAC5B,UAAU,EAAW,yBAAyB,EAC/C,CAAC,EACE,GAAS,aACX,MAAM,EAAQ,UAAU,GAAM,GAAW,EAAI;;EAGlD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetUserChallenges.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,SAAS,EACT,sCAAsC,EACtC,gBAAgB,EACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CACjE,mGAUF;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,GAAG,YAAY,CAAC,sCAAsC,CAAC,EAE5D,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,sCAAsC,EACtC,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,SAAS,CACnB,CACF,
|
|
1
|
+
{"version":3,"file":"useGetUserChallenges.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,SAAS,EACT,sCAAsC,EACtC,gBAAgB,EACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CACjE,mGAUF;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,GAAG,YAAY,CAAC,sCAAsC,CAAC,EAE5D,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,sCAAsC,EACtC,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,SAAS,CACnB,CACF,qFAmDF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetUserChallenges.js","names":[],"sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Challenge,\n ChallengeWithProjectHeaderPagedResults,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetUserChallenges(\n userId: string,\n limit?: number,\n options?: Partial<\n UseQueryOptions<PaginatedResults<Challenge>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: () =>\n SynapseClient.getUserChallenges(accessToken, userId, 0, limit ?? 10),\n })\n}\n\nexport function useGetUserChallengesInfinite<\n TData = InfiniteData<ChallengeWithProjectHeaderPagedResults>,\n>(\n userId: string,\n options?: Partial<\n UseInfiniteQueryOptions<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n initialPageParam: undefined,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: async context => {\n const challenges = await SynapseClient.getUserChallenges(\n accessToken,\n userId,\n context.pageParam, // pass the context.pageParam for the new offset\n 10, // limit\n )\n // also look up the challenge project names (if there are challenges)\n if (challenges.results.length > 0) {\n const challengeProjectIds = Array.from(\n challenges.results,\n challenge => challenge.projectId,\n )\n const challengeProjects
|
|
1
|
+
{"version":3,"file":"useGetUserChallenges.js","names":[],"sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Challenge,\n ChallengeWithProjectHeaderPagedResults,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetUserChallenges(\n userId: string,\n limit?: number,\n options?: Partial<\n UseQueryOptions<PaginatedResults<Challenge>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: () =>\n SynapseClient.getUserChallenges(accessToken, userId, 0, limit ?? 10),\n })\n}\n\nexport function useGetUserChallengesInfinite<\n TData = InfiniteData<ChallengeWithProjectHeaderPagedResults>,\n>(\n userId: string,\n options?: Partial<\n UseInfiniteQueryOptions<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n initialPageParam: undefined,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: async context => {\n const challenges = await SynapseClient.getUserChallenges(\n accessToken,\n userId,\n context.pageParam, // pass the context.pageParam for the new offset\n 10, // limit\n )\n // also look up the challenge project names (if there are challenges)\n if (challenges.results.length > 0) {\n const challengeProjectIds = Array.from(\n challenges.results,\n challenge => challenge.projectId,\n )\n const challengeProjects =\n await SynapseClient.getEntityHeadersByIds(challengeProjectIds)\n const challengeWithProjectHeaderPagedResults: ChallengeWithProjectHeaderPagedResults =\n {\n results: Array.from(challenges.results, (challenge, index) => {\n return {\n challenge,\n projectHeader: challengeProjects.results[index],\n }\n }),\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n return challengeWithProjectHeaderPagedResults\n }\n return {\n results: [],\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n },\n getNextPageParam: (lastPage, pages) => {\n if (lastPage.results.length > 0)\n return pages.length * 10 //set the new offset to (page * limit)\n else return undefined\n },\n })\n}\n"],"mappings":";;;;AAiBA,SAAgB,EACd,GACA,GACA,GAGA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AAEvD,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,0BAA0B,EAAO;EACtD,eACE,EAAc,kBAAkB,GAAa,GAAQ,GAAG,KAAS,GAAG;EACvE,CAAC;;AAGJ,SAAgB,EAGd,GACA,GASA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO,EAML;EACA,GAAG;EACH,kBAAkB,KAAA;EAClB,UAAU,EAAW,0BAA0B,EAAO;EACtD,SAAS,OAAM,MAAW;GACxB,IAAM,IAAa,MAAM,EAAc,kBACrC,GACA,GACA,EAAQ,WACR,GACD;AAED,OAAI,EAAW,QAAQ,SAAS,GAAG;IACjC,IAAM,IAAsB,MAAM,KAChC,EAAW,UACX,MAAa,EAAU,UACxB,EACK,IACJ,MAAM,EAAc,sBAAsB,EAAoB;AAWhE,WAAO;KARH,SAAS,MAAM,KAAK,EAAW,UAAU,GAAW,OAC3C;MACL;MACA,eAAe,EAAkB,QAAQ;MAC1C,EACD;KACF,sBAAsB,EAAW;KAE9B;;AAET,UAAO;IACL,SAAS,EAAE;IACX,sBAAsB,EAAW;IAClC;;EAEH,mBAAmB,GAAU,MAAU;AACrC,OAAI,EAAS,QAAQ,SAAS,EAC5B,QAAO,EAAM,SAAS;;EAG3B,CAAC"}
|