synapse-react-client 4.0.9 → 4.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SWC.index.d.ts +1 -0
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +2 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
- package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
- package/dist/assets/icons/CloudWarning.d.ts +5 -0
- package/dist/assets/icons/CloudWarning.d.ts.map +1 -0
- package/dist/assets/icons/CloudWarning.js +47 -0
- package/dist/assets/icons/CloudWarning.js.map +1 -0
- package/dist/assets/icons/TasksIcon.d.ts.map +1 -1
- package/dist/assets/icons/TasksIcon.js +6 -10
- package/dist/assets/icons/TasksIcon.js.map +1 -1
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.d.ts.map +1 -1
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js +69 -63
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
- package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
- package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
- package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
- package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
- package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.d.ts.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.js +38 -37
- package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
- package/dist/components/Authentication/Constants.d.ts +1 -0
- package/dist/components/Authentication/Constants.d.ts.map +1 -1
- package/dist/components/Authentication/Constants.js +2 -2
- package/dist/components/Authentication/Constants.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
- package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
- package/dist/components/Authentication/StandaloneLoginForm.js +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js +2 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
- package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
- package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.d.ts.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js +143 -140
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
- package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
- package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
- package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
- package/dist/components/ComponentCollapse.js.map +1 -1
- package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
- package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
- package/dist/components/DataGrid/DataGrid.d.ts +0 -1
- package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGrid.js +72 -72
- package/dist/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.d.ts +4 -0
- package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.js +9 -8
- package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +326 -268
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts +2 -0
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.js +124 -67
- package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts +2 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js +126 -122
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts +58 -0
- package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts.map +1 -0
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js +52 -0
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -0
- package/dist/components/DataGrid/components/ValidationAlert.d.ts +5 -2
- package/dist/components/DataGrid/components/ValidationAlert.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ValidationAlert.js +429 -24
- package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
- package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
- package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts +7 -0
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +16 -2
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
- package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.d.ts +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js +27 -24
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts +8 -0
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +47 -44
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
- package/dist/components/DataGrid/utils/getCellClassName.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/getCellClassName.js +8 -8
- package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
- package/dist/components/DataGrid/utils/getEmptyValue.d.ts +2 -0
- package/dist/components/DataGrid/utils/getEmptyValue.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/getEmptyValue.js +8 -0
- package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -0
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.js +2 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.d.ts +32 -0
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.js +22 -0
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -0
- package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
- package/dist/components/DirectDownloadButton.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.css +1 -0
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +199 -132
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js +22 -0
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js.map +1 -0
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.scss +170 -0
- package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
- package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
- package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
- package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
- package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditor.d.ts.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditor.js +103 -103
- package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
- package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.d.ts.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -0
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.d.ts.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js +36 -30
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
- package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
- package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
- package/dist/components/EntityForm/EntityForm.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
- package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
- package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
- package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
- package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.d.ts.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js +15 -14
- package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
- package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
- package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
- package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
- package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
- package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
- package/dist/components/Forum/DiscussionReply.d.ts +1 -0
- package/dist/components/Forum/DiscussionReply.d.ts.map +1 -1
- package/dist/components/Forum/DiscussionReply.js +19 -19
- package/dist/components/Forum/DiscussionReply.js.map +1 -1
- package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
- package/dist/components/Forum/DiscussionThread.d.ts +1 -0
- package/dist/components/Forum/DiscussionThread.d.ts.map +1 -1
- package/dist/components/Forum/DiscussionThread.js +73 -72
- package/dist/components/Forum/DiscussionThread.js.map +1 -1
- package/dist/components/Forum/ForumTable.js.map +1 -1
- package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
- package/dist/components/GenericCard/BioregistryRules.d.ts.map +1 -1
- package/dist/components/GenericCard/BioregistryRules.js +7 -3
- package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
- package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/GenericCard.js +12 -7
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/GenericCard/Linkify.js.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +105 -105
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/Goals/Goals.Mobile.js.map +1 -1
- package/dist/components/Goals/Goals.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
- package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
- package/dist/components/HasAccess/AccessIcon.js.map +1 -1
- package/dist/components/HasAccess/useHasAccess.js.map +1 -1
- package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
- package/dist/components/HeaderCard.d.ts +6 -1
- package/dist/components/HeaderCard.d.ts.map +1 -1
- package/dist/components/HeaderCard.js +107 -76
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/HexGrid/HexGrid.js.map +1 -1
- package/dist/components/IconList.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +2 -1
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
- package/dist/components/ImageFromSynapseTable.js.map +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
- package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
- package/dist/components/Markdown/UserMentionModal.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.d.ts.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js +45 -39
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
- package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
- package/dist/components/PageProgress/PageProgress.js.map +1 -1
- package/dist/components/Plot/DotPlot.js.map +1 -1
- package/dist/components/Plot/Plot.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.js.map +1 -1
- package/dist/components/Plot/ThemesPlot.js.map +1 -1
- package/dist/components/Plot/UpsetPlot.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditor.d.ts.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditor.js +43 -41
- package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
- package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
- package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
- package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- package/dist/components/Programs/Programs.Mobile.js.map +1 -1
- package/dist/components/Programs/Programs.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
- package/dist/components/QueryCount/QueryCount.js.map +1 -1
- package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
- package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
- package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
- package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
- package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
- package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
- package/dist/components/Resources/Resources.Mobile.js.map +1 -1
- package/dist/components/Resources/Resources.js.map +1 -1
- package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
- package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
- package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
- package/dist/components/SmartLink/SmartButton.js.map +1 -1
- package/dist/components/SmartLink/SmartLink.js.map +1 -1
- package/dist/components/SourceAppImage.js.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
- package/dist/components/StatisticsPlot.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
- package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
- package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
- package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
- package/dist/components/SynapseForm/SynapseForm.js +4 -2
- package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts +8 -7
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +173 -164
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
- package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
- package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.d.ts +1 -0
- package/dist/components/TanStackTable/ColumnHeader.d.ts.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js +8 -8
- package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
- package/dist/components/TanStackTable/TableBody.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
- package/dist/components/UserCard/Avatar.js.map +1 -1
- package/dist/components/UserCardList/UserCardList.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
- package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
- package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
- package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
- package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
- package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
- package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
- package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.d.ts.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +157 -148
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
- package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.d.ts.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js +20 -19
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
- package/dist/components/error/ErrorPage.js.map +1 -1
- package/dist/components/favorites/FavoritesPage.js.map +1 -1
- package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
- package/dist/components/layout/SWCHeader.d.ts +9 -0
- package/dist/components/layout/SWCHeader.d.ts.map +1 -0
- package/dist/components/layout/SWCHeader.js +19 -0
- package/dist/components/layout/SWCHeader.js.map +1 -0
- package/dist/components/layout/SWCPageLayout.d.ts +9 -0
- package/dist/components/layout/SWCPageLayout.d.ts.map +1 -0
- package/dist/components/layout/SWCPageLayout.js +14 -0
- package/dist/components/layout/SWCPageLayout.js.map +1 -0
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
- package/dist/components/styled/StyledPopover.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js +2 -1
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/components/trash/TrashCanList.js.map +1 -1
- package/dist/components/widgets/FileHandleLink.js.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/widgets/SynapseVideo.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.d.ts.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js +23 -30
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.d.ts +2 -0
- package/dist/features/curator/dashboard/CuratorDashboard.d.ts.map +1 -0
- package/dist/features/curator/dashboard/CuratorDashboard.js +45 -0
- package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.css +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts +9 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.js +106 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.js +12 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.js.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.scss +52 -0
- package/dist/features/curator/dashboard/components/NextStepButton.css +1 -0
- package/dist/features/curator/dashboard/components/NextStepButton.d.ts +14 -0
- package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/NextStepButton.js +35 -0
- package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -0
- package/dist/features/curator/dashboard/components/NextStepButton.module.js +11 -0
- package/dist/features/curator/dashboard/components/NextStepButton.module.js.map +1 -0
- package/dist/features/curator/dashboard/components/NextStepButton.module.scss +57 -0
- package/dist/features/curator/dashboard/components/UserOrTeamChip.css +1 -1
- package/dist/features/curator/dashboard/components/UserOrTeamChip.module.js +1 -1
- package/dist/features/curator/dashboard/components/UserOrTeamChip.module.js.map +1 -1
- package/dist/features/curator/dashboard/components/UserOrTeamChip.module.scss +5 -5
- package/dist/features/curator/dashboard/components/shared.css +1 -0
- package/dist/features/curator/dashboard/components/shared.module.js +5 -0
- package/dist/features/curator/dashboard/components/shared.module.js.map +1 -0
- package/dist/features/curator/dashboard/components/shared.module.scss +8 -0
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +0 -2
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +16 -34
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts +10 -0
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +37 -0
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -0
- package/dist/features/entity/metadata-task/utils/constants.d.ts +5 -0
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/utils/constants.js +6 -0
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -0
- package/dist/mocks/challenge/mockChallenge.js.map +1 -1
- package/dist/mocks/entity/mockDataset.js.map +1 -1
- package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
- package/dist/mocks/entity/mockFileEntity.js.map +1 -1
- package/dist/mocks/entity/mockFileView.js.map +1 -1
- package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
- package/dist/mocks/entity/mockProject.js.map +1 -1
- package/dist/mocks/entity/mockProjectView.js.map +1 -1
- package/dist/mocks/entity/mockRootEntity.js.map +1 -1
- package/dist/mocks/entity/mockTableEntity.js.map +1 -1
- package/dist/mocks/mockWiki.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
- package/dist/mocks/provenance/mockActivity.js.map +1 -1
- package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
- package/dist/ror-client/index.js.map +1 -1
- package/dist/style/components/_cards.scss +4 -0
- package/dist/style/components/_data-grid-extra.css +1 -1
- package/dist/style/components/_data-grid-extra.scss +2 -0
- package/dist/style/main.css +1 -1
- package/dist/synapse-client/HttpClient.js.map +1 -1
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +1 -0
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +3 -0
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
- package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
- package/dist/synapse-queries/doi/useDOI.js.map +1 -1
- package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
- package/dist/synapse-queries/entity/useEntity.js.map +1 -1
- package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useSchema.js.map +1 -1
- package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useFiles.js.map +1 -1
- package/dist/synapse-queries/forum/useReply.js.map +1 -1
- package/dist/synapse-queries/forum/useThread.d.ts +1 -0
- package/dist/synapse-queries/forum/useThread.d.ts.map +1 -1
- package/dist/synapse-queries/forum/useThread.js +19 -12
- package/dist/synapse-queries/forum/useThread.js.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts +2 -0
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
- package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
- package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
- package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
- package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
- package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
- package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
- package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
- package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
- package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts +1 -0
- package/dist/utils/APIConstants.d.ts.map +1 -1
- package/dist/utils/APIConstants.js +2 -2
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js +7 -4
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
- package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
- package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
- package/dist/utils/context/SynapseContext.js.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.d.ts +4 -0
- package/dist/utils/functions/AccessControlListUtils.d.ts.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.js +12 -1
- package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.js +15 -4
- package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
- package/dist/utils/functions/GridApiUtils.js.map +1 -1
- package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
- package/dist/utils/functions/RealmUtils.d.ts +4 -0
- package/dist/utils/functions/RealmUtils.d.ts.map +1 -1
- package/dist/utils/functions/RealmUtils.js +9 -3
- package/dist/utils/functions/RealmUtils.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/dist/utils/functions/StringUtils.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
- package/dist/utils/functions/getEndpoint.js.map +1 -1
- package/dist/utils/functions/getUserData.js.map +1 -1
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
- package/dist/utils/hooks/useConfirmItems.js.map +1 -1
- package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
- package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
- package/dist/utils/hooks/useGetGoalData.js.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
- package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
- package/dist/utils/hooks/useIsBot.js.map +1 -1
- package/dist/utils/hooks/useListState.js.map +1 -1
- package/dist/utils/hooks/useLogin.d.ts.map +1 -1
- package/dist/utils/hooks/useLogin.js +53 -52
- package/dist/utils/hooks/useLogin.js.map +1 -1
- package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
- package/dist/utils/hooks/useOverlay.js.map +1 -1
- package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
- package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
- package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
- package/dist/utils/hooks/useSet.js.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
- package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
- package/dist/utils/html/TargetEnum.js.map +1 -1
- package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEntity.js","names":[],"sources":["../../../src/synapse-queries/entity/useEntity.ts"],"sourcesContent":["/*\n * Hooks to access Entity Services in Synapse\n */\n\nimport SynapseClient from '@/synapse-client'\nimport { allowNotFoundError } from '@/synapse-client/SynapseClientUtils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { entityJsonKeys } from '@/utils/functions/EntityTypeUtils'\nimport { createTableUpdateTransactionRequest } from '@/utils/functions/TableColumnSchemaUtils'\nimport {\n EntityLookupRequest,\n SynapseClientError,\n} from '@sage-bionetworks/synapse-client'\nimport {\n AccessControlList,\n ColumnModel,\n Entity,\n EntityBundle,\n EntityHeader,\n EntityId,\n EntityJson,\n EntityPath,\n Evaluation,\n GetEvaluationParameters,\n PaginatedResults,\n UserEntityPermissions,\n VersionInfo,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryClient,\n QueryKey,\n queryOptions,\n skipToken,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQueries,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n useSuspenseQuery,\n UseSuspenseQueryOptions,\n} from '@tanstack/react-query'\nimport { omit, pick } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { SetOptional } from 'type-fest'\nimport { getNextPageParamForPaginatedResults } from '../InfiniteQueryUtils'\nimport { KeyFactory } from '../KeyFactory'\nimport { invalidateAllQueriesForEntity } from '../QueryFilterUtils'\nimport { useGetEntityBundleSuspenseQueryOptions } from './useEntityBundle'\n\nexport function useGetEntityQueryOptions<T extends Entity>() {\n const { keyFactory, accessToken } = useSynapseContext()\n return (\n entityId?: string,\n versionNumber?: string | number,\n ): UseQueryOptions<T, SynapseClientError> =>\n queryOptions<T, SynapseClientError>({\n queryKey: keyFactory.getEntityVersionQueryKey(entityId, versionNumber),\n queryFn: entityId\n ? () =>\n SynapseClient.getEntity<T>(\n accessToken,\n entityId,\n versionNumber?.toString(),\n )\n : skipToken,\n })\n}\n\nexport function useGetEntity<T extends Entity>(\n entityId?: string,\n versionNumber?: string | number,\n options?: Partial<UseQueryOptions<T, SynapseClientError>>,\n) {\n const getEntityQueryOptions = useGetEntityQueryOptions<T>()\n return useQuery({\n ...options,\n ...getEntityQueryOptions(entityId, versionNumber),\n })\n}\n\nexport function useGetEntities(\n entityHeaders: Pick<EntityHeader, 'id' | 'versionNumber'>[],\n options?: Partial<UseQueryOptions<Entity[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queries = useMemo(\n () => ({\n queries: entityHeaders.map(header => {\n return {\n queryKey: keyFactory.getEntityVersionQueryKey(\n header.id,\n header.versionNumber,\n ),\n queryFn: () =>\n SynapseClient.getEntity(\n accessToken,\n header.id,\n header.versionNumber,\n ),\n options,\n }\n }),\n }),\n [accessToken, entityHeaders, keyFactory, options],\n )\n return useQueries(queries)\n}\n\nexport function useCreateEntity(\n options?: UseMutationOptions<\n Entity,\n SynapseClientError,\n Pick<Entity, 'name' | 'description' | 'parentId' | 'concreteType'>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n Entity,\n SynapseClientError,\n Pick<Entity, 'name' | 'description' | 'parentId' | 'concreteType'>\n >({\n mutationFn: (entity: Entity) =>\n SynapseClient.createEntity(entity, accessToken),\n onSuccess: async (newEntity, variables, ctx) => {\n const entityDataQueryKey = keyFactory.getEntityQueryKey(newEntity.id!)\n queryClient.setQueryData(entityDataQueryKey, newEntity)\n queryClient.setQueryData<EntityLookupQueryData>(\n keyFactory.getEntityLookupQueryKey({\n parentId: newEntity.parentId,\n entityName: newEntity.name,\n }),\n newEntity.id,\n )\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n newEntity.id!,\n entityDataQueryKey,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(newEntity, variables, ctx)\n }\n },\n })\n}\n\nexport function useUpdateEntity<T extends Entity>(\n options?: Partial<UseMutationOptions<T, SynapseClientError, T>>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<T, SynapseClientError, T>({\n ...options,\n mutationFn: (entity: T) =>\n SynapseClient.updateEntity<T>(entity, accessToken),\n onSuccess: async (updatedEntity, variables, ctx) => {\n const entityDataQueryKey = keyFactory.getEntityQueryKey(updatedEntity.id!)\n queryClient.setQueryData(entityDataQueryKey, updatedEntity)\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n updatedEntity.id!,\n entityDataQueryKey,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedEntity, variables, ctx)\n }\n },\n })\n}\n\nexport function useDeleteEntity(\n options?: Partial<\n UseMutationOptions<string | undefined, SynapseClientError, string>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<string | undefined, SynapseClientError, string>({\n ...options,\n mutationFn: async (entityId: string) => {\n const entity = await SynapseClient.getEntity<Entity>(\n accessToken,\n entityId,\n )\n await SynapseClient.deleteEntity(accessToken, entityId)\n return entity.parentId\n },\n onSuccess: async (parentId, entityId, ctx) => {\n await invalidateAllQueriesForEntity(queryClient, keyFactory, entityId)\n if (parentId) {\n await invalidateAllQueriesForEntity(queryClient, keyFactory, parentId)\n }\n if (options?.onSuccess) {\n await options.onSuccess(parentId, entityId, ctx)\n }\n },\n })\n}\n\nexport function useGetVersions(\n entityId: string,\n offset: number = 0,\n limit: number = 200,\n options?: Partial<\n UseQueryOptions<PaginatedResults<VersionInfo>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getPaginatedEntityVersionsQueryKey(\n entityId,\n limit,\n offset,\n ),\n queryFn: () =>\n SynapseClient.getEntityVersions(entityId, accessToken, offset, limit),\n })\n}\n\nexport function useGetVersionsInfinite<\n TData = InfiniteData<PaginatedResults<VersionInfo>>,\n>(\n entityId: string,\n options: Partial<\n UseInfiniteQueryOptions<\n PaginatedResults<VersionInfo>,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const LIMIT = 200\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n PaginatedResults<VersionInfo>,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n queryKey: keyFactory.getEntityVersionsQueryKey(entityId),\n queryFn: async context => {\n return await SynapseClient.getEntityVersions(\n entityId,\n accessToken,\n context.pageParam,\n LIMIT,\n )\n },\n initialPageParam: undefined,\n getNextPageParam: getNextPageParamForPaginatedResults,\n })\n}\n\nexport function getStandardEntityFields(json: EntityJson): EntityJson {\n return pick(json, entityJsonKeys[json.concreteType]) as EntityJson\n}\n\nexport function removeStandardEntityFields(\n json: EntityJson,\n): Record<\n string,\n string | number | boolean | string[] | number[] | boolean[] | undefined\n> {\n return omit(json, entityJsonKeys[json.concreteType])\n}\n\n/**\n * This hook automatically transforms the data to include these objects:\n * - `entity`: the unmodified Entity data object\n * - `entityMetadata`: the standard entity fields contained in the JSON response\n * - `annotations`: the annotations contained in the JSON response\n *\n * The union of these objects would be equal in value to the `data` object.\n */\nexport function useGetJson(\n entityId: string,\n versionNumber: number | undefined,\n includeDerivedAnnotations: boolean,\n options?: Partial<UseQueryOptions<EntityJson, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityJsonQueryKey(\n entityId,\n versionNumber,\n includeDerivedAnnotations,\n ),\n queryFn: () =>\n SynapseClient.getEntityJson(\n entityId,\n versionNumber,\n includeDerivedAnnotations,\n accessToken,\n ),\n\n select: data => {\n // Separate the standard fields and annotations.\n const entityMetadata = getStandardEntityFields(data)\n\n const annotations = removeStandardEntityFields(data)\n\n return {\n entity: data,\n entityMetadata,\n annotations,\n }\n },\n })\n}\n\nexport function useUpdateViaJson(\n options?: Partial<\n UseMutationOptions<EntityJson, SynapseClientError, EntityJson>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n return useMutation<EntityJson, SynapseClientError, EntityJson>({\n ...options,\n mutationFn: (json: EntityJson) => {\n const entityId = json.id\n return SynapseClient.updateEntityJson(entityId, json, accessToken)\n },\n onSuccess: async (data, variables, ctx) => {\n const entityId = data.id\n // This annotation data will never include derived annotations, which are calculated by the backend asynchronously\n const entityJsonQueryKey = keyFactory.getEntityJsonQueryKey(\n entityId,\n undefined,\n false,\n )\n queryClient.setQueryData(entityJsonQueryKey, data)\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n entityId,\n entityJsonQueryKey,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(data, variables, ctx)\n }\n },\n })\n}\n\nexport function useGetEntityPath(\n entityId: string,\n options?: Partial<UseQueryOptions<EntityPath, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityPathQueryKey(entityId),\n queryFn: () => SynapseClient.getEntityPath(entityId, accessToken),\n })\n}\n\nexport function useGetEntityACL(\n entityId: string,\n options?: Partial<UseQueryOptions<AccessControlList, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityPathQueryKey(entityId),\n queryFn: () => SynapseClient.getEntityACL(entityId, accessToken),\n })\n}\n\nexport function useGetEntityAlias(\n alias: string,\n options?: Partial<UseQueryOptions<EntityId | null, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityAliasQueryKey(alias),\n queryFn: () => SynapseClient.getEntityAlias(alias, accessToken),\n })\n}\n\nexport function useGetEntityEvaluations(\n entityId: string,\n params?: GetEvaluationParameters,\n options?: Partial<UseQueryOptions<Evaluation[] | null, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityEvaluationsQueryKey(entityId),\n queryFn: () =>\n SynapseClient.getAllEntityEvaluations(entityId, params, accessToken),\n })\n}\n\nexport function useGetEntityPermissions(\n entityId: string,\n options?: Partial<\n UseQueryOptions<UserEntityPermissions | null, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityPermissionsQueryKey(entityId),\n queryFn: () => SynapseClient.getEntityPermissions(entityId, accessToken),\n })\n}\n\nconst onMutateEntityAclSuccess = async (\n entityId: string,\n updatedACL: AccessControlList | null,\n queryClient: QueryClient,\n keyFactory: KeyFactory,\n) => {\n const entityAclQueryKey = keyFactory.getEntityACLQueryKey(entityId)\n if (updatedACL) {\n queryClient.setQueryData(entityAclQueryKey, updatedACL)\n }\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n entityId,\n entityAclQueryKey,\n )\n}\n\nexport function useCreateEntityACL(\n options?: Partial<\n UseMutationOptions<AccessControlList, SynapseClientError, AccessControlList>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: (acl: AccessControlList) =>\n SynapseClient.createEntityACL(acl, accessToken),\n onSuccess: async (updatedACL: AccessControlList, variables, ctx) => {\n await onMutateEntityAclSuccess(\n updatedACL.id,\n updatedACL,\n queryClient,\n keyFactory,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedACL, variables, ctx)\n }\n },\n })\n}\n\nexport function useUpdateEntityACL(\n options?: Partial<\n UseMutationOptions<AccessControlList, SynapseClientError, AccessControlList>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: (acl: AccessControlList) =>\n SynapseClient.updateEntityACL(acl, accessToken),\n onSuccess: async (updatedACL: AccessControlList, variables, ctx) => {\n await onMutateEntityAclSuccess(\n updatedACL.id,\n updatedACL,\n queryClient,\n keyFactory,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedACL, variables, ctx)\n }\n },\n })\n}\n\nexport function useDeleteEntityACL(\n options?: Partial<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: (entityId: string) =>\n SynapseClient.deleteEntityACL(entityId, accessToken),\n onSuccess: async (result: void, entityId, ctx) => {\n await onMutateEntityAclSuccess(entityId, null, queryClient, keyFactory)\n\n if (options?.onSuccess) {\n await options.onSuccess(result, entityId, ctx)\n }\n },\n })\n}\n\nfunction useGetEntityBenefactorACLQueryOptions(\n entityId: string,\n): UseSuspenseQueryOptions<\n EntityBundle<{ includeBenefactorACL: true }>,\n SynapseClientError,\n AccessControlList\n> {\n const selectBenefactorACL = (\n data: EntityBundle<{ includeBenefactorACL: true }>,\n ): AccessControlList => data.benefactorAcl\n return useGetEntityBundleSuspenseQueryOptions<\n { includeBenefactorACL: true },\n AccessControlList\n >(\n entityId,\n undefined,\n {\n includeBenefactorACL: true,\n },\n selectBenefactorACL,\n )\n}\n\n/**\n * Retrieve the ACL of an entity. This call will succeed even for entities where the caller\n * does not have READ permission.\n * @param entityId\n * @param options\n */\nexport function useSuspenseGetEntityBenefactorACL(\n entityId: string,\n options?: Partial<\n UseSuspenseQueryOptions<\n EntityBundle<{ includeBenefactorACL: true }>,\n SynapseClientError,\n AccessControlList\n >\n >,\n) {\n const queryOptions = useGetEntityBenefactorACLQueryOptions(entityId)\n return useSuspenseQuery({\n ...options,\n ...queryOptions,\n })\n}\n\ntype UpdateTableMutationRequest = {\n entityId: string\n originalColumnModels: ColumnModel[]\n newColumnModels: SetOptional<ColumnModel, 'id'>[]\n}\n\nexport function useUpdateTableColumns(\n options?: Partial<\n UseMutationOptions<unknown, SynapseClientError, UpdateTableMutationRequest>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<unknown, SynapseClientError, UpdateTableMutationRequest>({\n ...options,\n mutationFn: async (request: UpdateTableMutationRequest) => {\n // This call will create new column models as appropriate\n const transactionRequest = await createTableUpdateTransactionRequest(\n accessToken!,\n request.entityId,\n request.originalColumnModels,\n request.newColumnModels,\n )\n\n return SynapseClient.updateTable(transactionRequest, accessToken)\n },\n onSuccess: async (response, variables, ctx) => {\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n variables.entityId,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(response, variables, ctx)\n }\n },\n })\n}\n\ntype EntityLookupQueryData = string | null\nexport function useGetEntityLookupQueryOptions() {\n const { keyFactory, synapseClient } = useSynapseContext()\n return (\n entityLookupRequest: EntityLookupRequest,\n ): UseQueryOptions<EntityLookupQueryData, SynapseClientError> =>\n queryOptions<EntityLookupQueryData, SynapseClientError>({\n queryKey: keyFactory.getEntityLookupQueryKey(entityLookupRequest),\n queryFn: async () =>\n (\n await allowNotFoundError(() =>\n synapseClient.entityServicesClient.postRepoV1EntityChild({\n entityLookupRequest: entityLookupRequest,\n }),\n )\n )?.id ?? null,\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useEntity.js","names":[],"sources":["../../../src/synapse-queries/entity/useEntity.ts"],"sourcesContent":["/*\n * Hooks to access Entity Services in Synapse\n */\n\nimport SynapseClient from '@/synapse-client'\nimport { allowNotFoundError } from '@/synapse-client/SynapseClientUtils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { entityJsonKeys } from '@/utils/functions/EntityTypeUtils'\nimport { createTableUpdateTransactionRequest } from '@/utils/functions/TableColumnSchemaUtils'\nimport {\n EntityLookupRequest,\n SynapseClientError,\n} from '@sage-bionetworks/synapse-client'\nimport {\n AccessControlList,\n ColumnModel,\n Entity,\n EntityBundle,\n EntityHeader,\n EntityId,\n EntityJson,\n EntityPath,\n Evaluation,\n GetEvaluationParameters,\n PaginatedResults,\n UserEntityPermissions,\n VersionInfo,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryClient,\n QueryKey,\n queryOptions,\n skipToken,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQueries,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n useSuspenseQuery,\n UseSuspenseQueryOptions,\n} from '@tanstack/react-query'\nimport { omit, pick } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { SetOptional } from 'type-fest'\nimport { getNextPageParamForPaginatedResults } from '../InfiniteQueryUtils'\nimport { KeyFactory } from '../KeyFactory'\nimport { invalidateAllQueriesForEntity } from '../QueryFilterUtils'\nimport { useGetEntityBundleSuspenseQueryOptions } from './useEntityBundle'\n\nexport function useGetEntityQueryOptions<T extends Entity>() {\n const { keyFactory, accessToken } = useSynapseContext()\n return (\n entityId?: string,\n versionNumber?: string | number,\n ): UseQueryOptions<T, SynapseClientError> =>\n queryOptions<T, SynapseClientError>({\n queryKey: keyFactory.getEntityVersionQueryKey(entityId, versionNumber),\n queryFn: entityId\n ? () =>\n SynapseClient.getEntity<T>(\n accessToken,\n entityId,\n versionNumber?.toString(),\n )\n : skipToken,\n })\n}\n\nexport function useGetEntity<T extends Entity>(\n entityId?: string,\n versionNumber?: string | number,\n options?: Partial<UseQueryOptions<T, SynapseClientError>>,\n) {\n const getEntityQueryOptions = useGetEntityQueryOptions<T>()\n return useQuery({\n ...options,\n ...getEntityQueryOptions(entityId, versionNumber),\n })\n}\n\nexport function useGetEntities(\n entityHeaders: Pick<EntityHeader, 'id' | 'versionNumber'>[],\n options?: Partial<UseQueryOptions<Entity[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queries = useMemo(\n () => ({\n queries: entityHeaders.map(header => {\n return {\n queryKey: keyFactory.getEntityVersionQueryKey(\n header.id,\n header.versionNumber,\n ),\n queryFn: () =>\n SynapseClient.getEntity(\n accessToken,\n header.id,\n header.versionNumber,\n ),\n options,\n }\n }),\n }),\n [accessToken, entityHeaders, keyFactory, options],\n )\n return useQueries(queries)\n}\n\nexport function useCreateEntity(\n options?: UseMutationOptions<\n Entity,\n SynapseClientError,\n Pick<Entity, 'name' | 'description' | 'parentId' | 'concreteType'>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n Entity,\n SynapseClientError,\n Pick<Entity, 'name' | 'description' | 'parentId' | 'concreteType'>\n >({\n mutationFn: (entity: Entity) =>\n SynapseClient.createEntity(entity, accessToken),\n onSuccess: async (newEntity, variables, ctx) => {\n const entityDataQueryKey = keyFactory.getEntityQueryKey(newEntity.id!)\n queryClient.setQueryData(entityDataQueryKey, newEntity)\n queryClient.setQueryData<EntityLookupQueryData>(\n keyFactory.getEntityLookupQueryKey({\n parentId: newEntity.parentId,\n entityName: newEntity.name,\n }),\n newEntity.id,\n )\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n newEntity.id!,\n entityDataQueryKey,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(newEntity, variables, ctx)\n }\n },\n })\n}\n\nexport function useUpdateEntity<T extends Entity>(\n options?: Partial<UseMutationOptions<T, SynapseClientError, T>>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<T, SynapseClientError, T>({\n ...options,\n mutationFn: (entity: T) =>\n SynapseClient.updateEntity<T>(entity, accessToken),\n onSuccess: async (updatedEntity, variables, ctx) => {\n const entityDataQueryKey = keyFactory.getEntityQueryKey(updatedEntity.id!)\n queryClient.setQueryData(entityDataQueryKey, updatedEntity)\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n updatedEntity.id!,\n entityDataQueryKey,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedEntity, variables, ctx)\n }\n },\n })\n}\n\nexport function useDeleteEntity(\n options?: Partial<\n UseMutationOptions<string | undefined, SynapseClientError, string>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<string | undefined, SynapseClientError, string>({\n ...options,\n mutationFn: async (entityId: string) => {\n const entity = await SynapseClient.getEntity<Entity>(\n accessToken,\n entityId,\n )\n await SynapseClient.deleteEntity(accessToken, entityId)\n return entity.parentId\n },\n onSuccess: async (parentId, entityId, ctx) => {\n await invalidateAllQueriesForEntity(queryClient, keyFactory, entityId)\n if (parentId) {\n await invalidateAllQueriesForEntity(queryClient, keyFactory, parentId)\n }\n if (options?.onSuccess) {\n await options.onSuccess(parentId, entityId, ctx)\n }\n },\n })\n}\n\nexport function useGetVersions(\n entityId: string,\n offset: number = 0,\n limit: number = 200,\n options?: Partial<\n UseQueryOptions<PaginatedResults<VersionInfo>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getPaginatedEntityVersionsQueryKey(\n entityId,\n limit,\n offset,\n ),\n queryFn: () =>\n SynapseClient.getEntityVersions(entityId, accessToken, offset, limit),\n })\n}\n\nexport function useGetVersionsInfinite<\n TData = InfiniteData<PaginatedResults<VersionInfo>>,\n>(\n entityId: string,\n options: Partial<\n UseInfiniteQueryOptions<\n PaginatedResults<VersionInfo>,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const LIMIT = 200\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n PaginatedResults<VersionInfo>,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n queryKey: keyFactory.getEntityVersionsQueryKey(entityId),\n queryFn: async context => {\n return await SynapseClient.getEntityVersions(\n entityId,\n accessToken,\n context.pageParam,\n LIMIT,\n )\n },\n initialPageParam: undefined,\n getNextPageParam: getNextPageParamForPaginatedResults,\n })\n}\n\nexport function getStandardEntityFields(json: EntityJson): EntityJson {\n return pick(json, entityJsonKeys[json.concreteType]) as EntityJson\n}\n\nexport function removeStandardEntityFields(\n json: EntityJson,\n): Record<\n string,\n string | number | boolean | string[] | number[] | boolean[] | undefined\n> {\n return omit(json, entityJsonKeys[json.concreteType])\n}\n\n/**\n * This hook automatically transforms the data to include these objects:\n * - `entity`: the unmodified Entity data object\n * - `entityMetadata`: the standard entity fields contained in the JSON response\n * - `annotations`: the annotations contained in the JSON response\n *\n * The union of these objects would be equal in value to the `data` object.\n */\nexport function useGetJson(\n entityId: string,\n versionNumber: number | undefined,\n includeDerivedAnnotations: boolean,\n options?: Partial<UseQueryOptions<EntityJson, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityJsonQueryKey(\n entityId,\n versionNumber,\n includeDerivedAnnotations,\n ),\n queryFn: () =>\n SynapseClient.getEntityJson(\n entityId,\n versionNumber,\n includeDerivedAnnotations,\n accessToken,\n ),\n\n select: data => {\n // Separate the standard fields and annotations.\n const entityMetadata = getStandardEntityFields(data)\n\n const annotations = removeStandardEntityFields(data)\n\n return {\n entity: data,\n entityMetadata,\n annotations,\n }\n },\n })\n}\n\nexport function useUpdateViaJson(\n options?: Partial<\n UseMutationOptions<EntityJson, SynapseClientError, EntityJson>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n return useMutation<EntityJson, SynapseClientError, EntityJson>({\n ...options,\n mutationFn: (json: EntityJson) => {\n const entityId = json.id\n return SynapseClient.updateEntityJson(entityId, json, accessToken)\n },\n onSuccess: async (data, variables, ctx) => {\n const entityId = data.id\n // This annotation data will never include derived annotations, which are calculated by the backend asynchronously\n const entityJsonQueryKey = keyFactory.getEntityJsonQueryKey(\n entityId,\n undefined,\n false,\n )\n queryClient.setQueryData(entityJsonQueryKey, data)\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n entityId,\n entityJsonQueryKey,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(data, variables, ctx)\n }\n },\n })\n}\n\nexport function useGetEntityPath(\n entityId: string,\n options?: Partial<UseQueryOptions<EntityPath, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityPathQueryKey(entityId),\n queryFn: () => SynapseClient.getEntityPath(entityId, accessToken),\n })\n}\n\nexport function useGetEntityACL(\n entityId: string,\n options?: Partial<UseQueryOptions<AccessControlList, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityPathQueryKey(entityId),\n queryFn: () => SynapseClient.getEntityACL(entityId, accessToken),\n })\n}\n\nexport function useGetEntityAlias(\n alias: string,\n options?: Partial<UseQueryOptions<EntityId | null, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityAliasQueryKey(alias),\n queryFn: () => SynapseClient.getEntityAlias(alias, accessToken),\n })\n}\n\nexport function useGetEntityEvaluations(\n entityId: string,\n params?: GetEvaluationParameters,\n options?: Partial<UseQueryOptions<Evaluation[] | null, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityEvaluationsQueryKey(entityId),\n queryFn: () =>\n SynapseClient.getAllEntityEvaluations(entityId, params, accessToken),\n })\n}\n\nexport function useGetEntityPermissions(\n entityId: string,\n options?: Partial<\n UseQueryOptions<UserEntityPermissions | null, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityPermissionsQueryKey(entityId),\n queryFn: () => SynapseClient.getEntityPermissions(entityId, accessToken),\n })\n}\n\nconst onMutateEntityAclSuccess = async (\n entityId: string,\n updatedACL: AccessControlList | null,\n queryClient: QueryClient,\n keyFactory: KeyFactory,\n) => {\n const entityAclQueryKey = keyFactory.getEntityACLQueryKey(entityId)\n if (updatedACL) {\n queryClient.setQueryData(entityAclQueryKey, updatedACL)\n }\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n entityId,\n entityAclQueryKey,\n )\n}\n\nexport function useCreateEntityACL(\n options?: Partial<\n UseMutationOptions<AccessControlList, SynapseClientError, AccessControlList>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: (acl: AccessControlList) =>\n SynapseClient.createEntityACL(acl, accessToken),\n onSuccess: async (updatedACL: AccessControlList, variables, ctx) => {\n await onMutateEntityAclSuccess(\n updatedACL.id,\n updatedACL,\n queryClient,\n keyFactory,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedACL, variables, ctx)\n }\n },\n })\n}\n\nexport function useUpdateEntityACL(\n options?: Partial<\n UseMutationOptions<AccessControlList, SynapseClientError, AccessControlList>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: (acl: AccessControlList) =>\n SynapseClient.updateEntityACL(acl, accessToken),\n onSuccess: async (updatedACL: AccessControlList, variables, ctx) => {\n await onMutateEntityAclSuccess(\n updatedACL.id,\n updatedACL,\n queryClient,\n keyFactory,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedACL, variables, ctx)\n }\n },\n })\n}\n\nexport function useDeleteEntityACL(\n options?: Partial<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: (entityId: string) =>\n SynapseClient.deleteEntityACL(entityId, accessToken),\n onSuccess: async (result: void, entityId, ctx) => {\n await onMutateEntityAclSuccess(entityId, null, queryClient, keyFactory)\n\n if (options?.onSuccess) {\n await options.onSuccess(result, entityId, ctx)\n }\n },\n })\n}\n\nfunction useGetEntityBenefactorACLQueryOptions(\n entityId: string,\n): UseSuspenseQueryOptions<\n EntityBundle<{ includeBenefactorACL: true }>,\n SynapseClientError,\n AccessControlList\n> {\n const selectBenefactorACL = (\n data: EntityBundle<{ includeBenefactorACL: true }>,\n ): AccessControlList => data.benefactorAcl\n return useGetEntityBundleSuspenseQueryOptions<\n { includeBenefactorACL: true },\n AccessControlList\n >(\n entityId,\n undefined,\n {\n includeBenefactorACL: true,\n },\n selectBenefactorACL,\n )\n}\n\n/**\n * Retrieve the ACL of an entity. This call will succeed even for entities where the caller\n * does not have READ permission.\n * @param entityId\n * @param options\n */\nexport function useSuspenseGetEntityBenefactorACL(\n entityId: string,\n options?: Partial<\n UseSuspenseQueryOptions<\n EntityBundle<{ includeBenefactorACL: true }>,\n SynapseClientError,\n AccessControlList\n >\n >,\n) {\n const queryOptions = useGetEntityBenefactorACLQueryOptions(entityId)\n return useSuspenseQuery({\n ...options,\n ...queryOptions,\n })\n}\n\ntype UpdateTableMutationRequest = {\n entityId: string\n originalColumnModels: ColumnModel[]\n newColumnModels: SetOptional<ColumnModel, 'id'>[]\n}\n\nexport function useUpdateTableColumns(\n options?: Partial<\n UseMutationOptions<unknown, SynapseClientError, UpdateTableMutationRequest>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<unknown, SynapseClientError, UpdateTableMutationRequest>({\n ...options,\n mutationFn: async (request: UpdateTableMutationRequest) => {\n // This call will create new column models as appropriate\n const transactionRequest = await createTableUpdateTransactionRequest(\n accessToken!,\n request.entityId,\n request.originalColumnModels,\n request.newColumnModels,\n )\n\n return SynapseClient.updateTable(transactionRequest, accessToken)\n },\n onSuccess: async (response, variables, ctx) => {\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n variables.entityId,\n )\n\n if (options?.onSuccess) {\n await options.onSuccess(response, variables, ctx)\n }\n },\n })\n}\n\ntype EntityLookupQueryData = string | null\nexport function useGetEntityLookupQueryOptions() {\n const { keyFactory, synapseClient } = useSynapseContext()\n return (\n entityLookupRequest: EntityLookupRequest,\n ): UseQueryOptions<EntityLookupQueryData, SynapseClientError> =>\n queryOptions<EntityLookupQueryData, SynapseClientError>({\n queryKey: keyFactory.getEntityLookupQueryKey(entityLookupRequest),\n queryFn: async () =>\n (\n await allowNotFoundError(() =>\n synapseClient.entityServicesClient.postRepoV1EntityChild({\n entityLookupRequest: entityLookupRequest,\n }),\n )\n )?.id ?? null,\n })\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEntityBundle.js","names":[],"sources":["../../../src/synapse-queries/entity/useEntityBundle.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n ALL_ENTITY_BUNDLE_FIELDS,\n EntityBundle,\n EntityBundleRequest,\n} from '@sage-bionetworks/synapse-types'\nimport {\n skipToken,\n useQuery,\n UseQueryOptions,\n useSuspenseQuery,\n UseSuspenseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetEntityBundleQueryOptions<\n T extends EntityBundleRequest = typeof ALL_ENTITY_BUNDLE_FIELDS,\n TSelect = EntityBundle<T>,\n>(\n entityId?: string,\n version?: number,\n bundleRequest: T = ALL_ENTITY_BUNDLE_FIELDS as T,\n select?: (data: EntityBundle<T>) => TSelect,\n): UseQueryOptions<EntityBundle<T>, SynapseClientError, TSelect> {\n const { accessToken, keyFactory } = useSynapseContext()\n return {\n select,\n queryKey: keyFactory.getEntityBundleQueryKey(\n entityId,\n version,\n bundleRequest,\n ),\n queryFn: entityId\n ? () =>\n SynapseClient.getEntityBundleV2<T>(\n entityId,\n bundleRequest,\n version,\n accessToken,\n )\n : skipToken,\n staleTime: 5 * 60 * 1000, // 5 minutes - data stays fresh longer\n gcTime: 10 * 60 * 1000, // 10 minutes - keep in cache longer\n }\n}\n\nexport function useGetEntityBundleSuspenseQueryOptions<\n T extends EntityBundleRequest = typeof ALL_ENTITY_BUNDLE_FIELDS,\n TSelect = EntityBundle<T>,\n>(\n entityId: string,\n version?: number,\n bundleRequest: T = ALL_ENTITY_BUNDLE_FIELDS as T,\n select?: (data: EntityBundle<T>) => TSelect,\n): UseSuspenseQueryOptions<EntityBundle<T>, SynapseClientError, TSelect> {\n const { accessToken } = useSynapseContext()\n const baseQueryOptions = useGetEntityBundleQueryOptions<T, TSelect>(\n entityId,\n version,\n bundleRequest,\n select,\n )\n return {\n ...baseQueryOptions,\n queryFn: () =>\n SynapseClient.getEntityBundleV2<T>(\n entityId,\n bundleRequest,\n version,\n accessToken,\n ),\n }\n}\n\nexport function useGetEntityBundle<\n T extends EntityBundleRequest = typeof ALL_ENTITY_BUNDLE_FIELDS,\n TSelect = EntityBundle<T>,\n>(\n entityId?: string,\n version?: number,\n bundleRequest: T = ALL_ENTITY_BUNDLE_FIELDS as T,\n options?: Partial<\n UseQueryOptions<EntityBundle<T>, SynapseClientError, TSelect>\n >,\n) {\n const queryOptions = useGetEntityBundleQueryOptions<T, TSelect>(\n entityId,\n version,\n bundleRequest,\n )\n return useQuery<EntityBundle<T>, SynapseClientError, TSelect>({\n ...options,\n ...queryOptions,\n })\n}\n\nexport function useSuspenseGetEntityBundle<\n T extends EntityBundleRequest = typeof ALL_ENTITY_BUNDLE_FIELDS,\n TSelect = EntityBundle<T>,\n>(\n entityId: string,\n version?: number,\n bundleRequest: T = ALL_ENTITY_BUNDLE_FIELDS as T,\n options?: Partial<\n UseSuspenseQueryOptions<EntityBundle<T>, SynapseClientError, TSelect>\n >,\n) {\n const queryOptions = useGetEntityBundleSuspenseQueryOptions<T, TSelect>(\n entityId,\n version,\n bundleRequest,\n )\n return useSuspenseQuery({\n ...options,\n ...queryOptions,\n })\n}\n\nexport default useGetEntityBundle\n"],"mappings":";;;;;;AAeA,SAAgB,EAId,GACA,GACA,IAAmB,GACnB,GAC+D;CAC/D,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO;EACL;EACA,UAAU,EAAW,wBACnB,GACA,GACA,EACD;EACD,SAAS,UAEH,EAAc,kBACZ,GACA,GACA,GACA,EACD,GACH;EACJ,WAAW,MAAS;EACpB,QAAQ,MAAU;EACnB;;AAGH,SAAgB,EAId,GACA,GACA,IAAmB,GACnB,GACuE;CACvE,IAAM,EAAE,mBAAgB,GAAmB;AAO3C,QAAO;EACL,GAPuB,EACvB,GACA,GACA,GACA,
|
|
1
|
+
{"version":3,"file":"useEntityBundle.js","names":[],"sources":["../../../src/synapse-queries/entity/useEntityBundle.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n ALL_ENTITY_BUNDLE_FIELDS,\n EntityBundle,\n EntityBundleRequest,\n} from '@sage-bionetworks/synapse-types'\nimport {\n skipToken,\n useQuery,\n UseQueryOptions,\n useSuspenseQuery,\n UseSuspenseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetEntityBundleQueryOptions<\n T extends EntityBundleRequest = typeof ALL_ENTITY_BUNDLE_FIELDS,\n TSelect = EntityBundle<T>,\n>(\n entityId?: string,\n version?: number,\n bundleRequest: T = ALL_ENTITY_BUNDLE_FIELDS as T,\n select?: (data: EntityBundle<T>) => TSelect,\n): UseQueryOptions<EntityBundle<T>, SynapseClientError, TSelect> {\n const { accessToken, keyFactory } = useSynapseContext()\n return {\n select,\n queryKey: keyFactory.getEntityBundleQueryKey(\n entityId,\n version,\n bundleRequest,\n ),\n queryFn: entityId\n ? () =>\n SynapseClient.getEntityBundleV2<T>(\n entityId,\n bundleRequest,\n version,\n accessToken,\n )\n : skipToken,\n staleTime: 5 * 60 * 1000, // 5 minutes - data stays fresh longer\n gcTime: 10 * 60 * 1000, // 10 minutes - keep in cache longer\n }\n}\n\nexport function useGetEntityBundleSuspenseQueryOptions<\n T extends EntityBundleRequest = typeof ALL_ENTITY_BUNDLE_FIELDS,\n TSelect = EntityBundle<T>,\n>(\n entityId: string,\n version?: number,\n bundleRequest: T = ALL_ENTITY_BUNDLE_FIELDS as T,\n select?: (data: EntityBundle<T>) => TSelect,\n): UseSuspenseQueryOptions<EntityBundle<T>, SynapseClientError, TSelect> {\n const { accessToken } = useSynapseContext()\n const baseQueryOptions = useGetEntityBundleQueryOptions<T, TSelect>(\n entityId,\n version,\n bundleRequest,\n select,\n )\n return {\n ...baseQueryOptions,\n queryFn: () =>\n SynapseClient.getEntityBundleV2<T>(\n entityId,\n bundleRequest,\n version,\n accessToken,\n ),\n }\n}\n\nexport function useGetEntityBundle<\n T extends EntityBundleRequest = typeof ALL_ENTITY_BUNDLE_FIELDS,\n TSelect = EntityBundle<T>,\n>(\n entityId?: string,\n version?: number,\n bundleRequest: T = ALL_ENTITY_BUNDLE_FIELDS as T,\n options?: Partial<\n UseQueryOptions<EntityBundle<T>, SynapseClientError, TSelect>\n >,\n) {\n const queryOptions = useGetEntityBundleQueryOptions<T, TSelect>(\n entityId,\n version,\n bundleRequest,\n )\n return useQuery<EntityBundle<T>, SynapseClientError, TSelect>({\n ...options,\n ...queryOptions,\n })\n}\n\nexport function useSuspenseGetEntityBundle<\n T extends EntityBundleRequest = typeof ALL_ENTITY_BUNDLE_FIELDS,\n TSelect = EntityBundle<T>,\n>(\n entityId: string,\n version?: number,\n bundleRequest: T = ALL_ENTITY_BUNDLE_FIELDS as T,\n options?: Partial<\n UseSuspenseQueryOptions<EntityBundle<T>, SynapseClientError, TSelect>\n >,\n) {\n const queryOptions = useGetEntityBundleSuspenseQueryOptions<T, TSelect>(\n entityId,\n version,\n bundleRequest,\n )\n return useSuspenseQuery({\n ...options,\n ...queryOptions,\n })\n}\n\nexport default useGetEntityBundle\n"],"mappings":";;;;;;AAeA,SAAgB,EAId,GACA,GACA,IAAmB,GACnB,GAC+D;CAC/D,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO;EACL;EACA,UAAU,EAAW,wBACnB,GACA,GACA,EACD;EACD,SAAS,UAEH,EAAc,kBACZ,GACA,GACA,GACA,EACD,GACH;EACJ,WAAW,MAAS;EACpB,QAAQ,MAAU;EACnB;;AAGH,SAAgB,EAId,GACA,GACA,IAAmB,GACnB,GACuE;CACvE,IAAM,EAAE,mBAAgB,GAAmB;AAO3C,QAAO;EACL,GAPuB,EACvB,GACA,GACA,GACA,EAGG;EACH,eACE,EAAc,kBACZ,GACA,GACA,GACA,EACD;EACJ;;AAGH,SAAgB,EAId,GACA,GACA,IAAmB,GACnB,GAGA;CACA,IAAM,IAAe,EACnB,GACA,GACA,EACD;AACD,QAAO,EAAuD;EAC5D,GAAG;EACH,GAAG;EACJ,CAAC;;AAGJ,SAAgB,EAId,GACA,GACA,IAAmB,GACnB,GAGA;CACA,IAAM,IAAe,EACnB,GACA,GACA,EACD;AACD,QAAO,EAAiB;EACtB,GAAG;EACH,GAAG;EACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExportTableQueryToAnalysisPlatform.js","names":[],"sources":["../../../src/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.ts"],"sourcesContent":["import {\n QueryBundleRequest,\n SelectColumn,\n} from '@sage-bionetworks/synapse-types'\nimport { useExportToCavatica } from './useExportToCavatica'\nimport { useExportToTerra } from './useExportToTerra'\nimport { useExportToPluto } from './useExportToPluto'\nimport { useExportToADWorkbench } from './useExportToADWorkbench'\n\n/**\n * Provides functions to export data from a Synapse table query to an external analysis platform.\n */\nexport function useExportTableQueryToAnalysisPlatform(options: {\n queryBundleRequest: QueryBundleRequest\n selectColumns?: SelectColumn[]\n fileIdColumnName?: string\n fileVersionColumnName?: string\n fileNameColumnName?: string\n}) {\n const {\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileVersionColumnName,\n fileNameColumnName,\n } = options\n\n const exportToCavatica = useExportToCavatica(\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n )\n\n const exportToTerra = useExportToTerra(\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n )\n const exportToPluto = useExportToPluto(\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n )\n const exportToPlutoDev = useExportToPluto(\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n true,\n )\n\n const exportToADWorkbench = useExportToADWorkbench(\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n )\n\n return {\n exportToCavatica,\n exportToTerra,\n exportToPluto,\n exportToPlutoDev,\n exportToADWorkbench,\n }\n}\n"],"mappings":";;;;;AAYA,SAAgB,EAAsC,GAMnD;CACD,IAAM,EACJ,uBACA,kBACA,qBACA,0BACA,0BACE;AAyCJ,QAAO;EACL,kBAxCuB,EACvB,GACA,GACA,GACA,GACA,
|
|
1
|
+
{"version":3,"file":"useExportTableQueryToAnalysisPlatform.js","names":[],"sources":["../../../src/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.ts"],"sourcesContent":["import {\n QueryBundleRequest,\n SelectColumn,\n} from '@sage-bionetworks/synapse-types'\nimport { useExportToCavatica } from './useExportToCavatica'\nimport { useExportToTerra } from './useExportToTerra'\nimport { useExportToPluto } from './useExportToPluto'\nimport { useExportToADWorkbench } from './useExportToADWorkbench'\n\n/**\n * Provides functions to export data from a Synapse table query to an external analysis platform.\n */\nexport function useExportTableQueryToAnalysisPlatform(options: {\n queryBundleRequest: QueryBundleRequest\n selectColumns?: SelectColumn[]\n fileIdColumnName?: string\n fileVersionColumnName?: string\n fileNameColumnName?: string\n}) {\n const {\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileVersionColumnName,\n fileNameColumnName,\n } = options\n\n const exportToCavatica = useExportToCavatica(\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n )\n\n const exportToTerra = useExportToTerra(\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n )\n const exportToPluto = useExportToPluto(\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n )\n const exportToPlutoDev = useExportToPluto(\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n true,\n )\n\n const exportToADWorkbench = useExportToADWorkbench(\n queryBundleRequest,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n )\n\n return {\n exportToCavatica,\n exportToTerra,\n exportToPluto,\n exportToPlutoDev,\n exportToADWorkbench,\n }\n}\n"],"mappings":";;;;;AAYA,SAAgB,EAAsC,GAMnD;CACD,IAAM,EACJ,uBACA,kBACA,qBACA,0BACA,0BACE;AAyCJ,QAAO;EACL,kBAxCuB,EACvB,GACA,GACA,GACA,GACA,EAmCA;EACA,eAjCoB,EACpB,GACA,GACA,GACA,GACA,EA4BA;EACA,eA3BoB,EACpB,GACA,GACA,GACA,GACA,EAsBA;EACA,kBArBuB,EACvB,GACA,GACA,GACA,GACA,GACA,GAeA;EACA,qBAb0B,EAC1B,GACA,GACA,GACA,GACA,EAQA;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExportToTerra.js","names":[],"sources":["../../../src/synapse-queries/entity/useExportToTerra.ts"],"sourcesContent":["import {\n DownloadPFBRequest,\n QueryBundleRequest,\n SelectColumn,\n} from '@sage-bionetworks/synapse-types'\nimport { displayToast } from '../../components/ToastMessage/ToastMessage'\nimport { parseEntityIdFromSqlStatement } from '../../utils/functions/SqlFunctions'\nimport { useDownloadTableQueryResultAsPFB } from '../table/useDownloadTable'\nimport { addDrsUriToSql } from './useExportToCavatica'\n\nexport function useExportToTerra(\n queryBundleRequest: QueryBundleRequest,\n selectColumns?: SelectColumn[],\n fileIdColumnName: string = 'id',\n fileNameColumnName: string = 'name',\n fileVersionColumnName: string = 'currentVersion',\n) {\n const { mutateAsync: createPfb } = useDownloadTableQueryResultAsPFB()\n return async () => {\n const originalSql = queryBundleRequest.query.sql\n try {\n const tableEntityId = parseEntityIdFromSqlStatement(\n queryBundleRequest.query.sql,\n )\n const sql = addDrsUriToSql(\n originalSql,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n true, // remove spaces from select columns\n )\n const downloadPfbRequest: DownloadPFBRequest = {\n sql,\n concreteType: 'org.sagebionetworks.repo.model.table.DownloadPFBRequest',\n entityId: tableEntityId,\n selectedFacets: queryBundleRequest.query.selectedFacets,\n additionalFilters: queryBundleRequest.query.additionalFilters,\n // Note - backend will respond with a 500 if illegal characters found in pfbEntityName (such as '-')\n pfbEntityName: `SynapseExport${tableEntityId}`,\n pfbEntityIdColumnNames: [fileIdColumnName, fileVersionColumnName],\n }\n const result = await createPfb(downloadPfbRequest)\n // Send the user to Terra with the DRS URI that can be used to download the PFB result\n const terraImportURL = `https://app.terra.bio/#import-data?format=pfb&url=${encodeURIComponent(\n `drs://repo-prod.prod.sagebase.org/fh${result.resultsFileHandleId}`,\n )}`\n window.open(terraImportURL, '_blank')\n } catch (_err) {\n displayToast(_err.reason, 'danger')\n }\n }\n}\n"],"mappings":";;;;;AAUA,SAAgB,EACd,GACA,GACA,IAA2B,MAC3B,IAA6B,QAC7B,IAAgC,kBAChC;CACA,IAAM,EAAE,aAAa,MAAc,GAAkC;AACrE,QAAO,YAAY;EACjB,IAAM,IAAc,EAAmB,MAAM;AAC7C,MAAI;GACF,IAAM,IAAgB,EACpB,EAAmB,MAAM,IAC1B,EAmBK,IAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"useExportToTerra.js","names":[],"sources":["../../../src/synapse-queries/entity/useExportToTerra.ts"],"sourcesContent":["import {\n DownloadPFBRequest,\n QueryBundleRequest,\n SelectColumn,\n} from '@sage-bionetworks/synapse-types'\nimport { displayToast } from '../../components/ToastMessage/ToastMessage'\nimport { parseEntityIdFromSqlStatement } from '../../utils/functions/SqlFunctions'\nimport { useDownloadTableQueryResultAsPFB } from '../table/useDownloadTable'\nimport { addDrsUriToSql } from './useExportToCavatica'\n\nexport function useExportToTerra(\n queryBundleRequest: QueryBundleRequest,\n selectColumns?: SelectColumn[],\n fileIdColumnName: string = 'id',\n fileNameColumnName: string = 'name',\n fileVersionColumnName: string = 'currentVersion',\n) {\n const { mutateAsync: createPfb } = useDownloadTableQueryResultAsPFB()\n return async () => {\n const originalSql = queryBundleRequest.query.sql\n try {\n const tableEntityId = parseEntityIdFromSqlStatement(\n queryBundleRequest.query.sql,\n )\n const sql = addDrsUriToSql(\n originalSql,\n selectColumns,\n fileIdColumnName,\n fileNameColumnName,\n fileVersionColumnName,\n true, // remove spaces from select columns\n )\n const downloadPfbRequest: DownloadPFBRequest = {\n sql,\n concreteType: 'org.sagebionetworks.repo.model.table.DownloadPFBRequest',\n entityId: tableEntityId,\n selectedFacets: queryBundleRequest.query.selectedFacets,\n additionalFilters: queryBundleRequest.query.additionalFilters,\n // Note - backend will respond with a 500 if illegal characters found in pfbEntityName (such as '-')\n pfbEntityName: `SynapseExport${tableEntityId}`,\n pfbEntityIdColumnNames: [fileIdColumnName, fileVersionColumnName],\n }\n const result = await createPfb(downloadPfbRequest)\n // Send the user to Terra with the DRS URI that can be used to download the PFB result\n const terraImportURL = `https://app.terra.bio/#import-data?format=pfb&url=${encodeURIComponent(\n `drs://repo-prod.prod.sagebase.org/fh${result.resultsFileHandleId}`,\n )}`\n window.open(terraImportURL, '_blank')\n } catch (_err) {\n displayToast(_err.reason, 'danger')\n }\n }\n}\n"],"mappings":";;;;;AAUA,SAAgB,EACd,GACA,GACA,IAA2B,MAC3B,IAA6B,QAC7B,IAAgC,kBAChC;CACA,IAAM,EAAE,aAAa,MAAc,GAAkC;AACrE,QAAO,YAAY;EACjB,IAAM,IAAc,EAAmB,MAAM;AAC7C,MAAI;GACF,IAAM,IAAgB,EACpB,EAAmB,MAAM,IAC1B,EAmBK,IAAS,MAAM,EAAU;IAT7B,KATU,EACV,GACA,GACA,GACA,GACA,GACA,GAGA;IACA,cAAc;IACd,UAAU;IACV,gBAAgB,EAAmB,MAAM;IACzC,mBAAmB,EAAmB,MAAM;IAE5C,eAAe,gBAAgB;IAC/B,wBAAwB,CAAC,GAAkB,EAAsB;IAEpC,CAAmB,EAE5C,IAAiB,qDAAqD,mBAC1E,uCAAuC,EAAO,sBAC/C;AACD,UAAO,KAAK,GAAgB,SAAS;WAC9B,GAAM;AACb,KAAa,EAAK,QAAQ,SAAS"}
|
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSchema.js","names":[],"sources":["../../../src/synapse-queries/entity/useSchema.ts"],"sourcesContent":["/*\n * Hooks for accessing services related to JSON Schemas in the Synapse REST API\n */\n\nimport SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { useQuery, UseQueryOptions } from '@tanstack/react-query'\nimport { JSONSchema7 } from 'json-schema'\n\nexport function useGetSchema(\n schema$id: string,\n options?: Partial<UseQueryOptions<JSONSchema7, SynapseClientError>>,\n) {\n const { keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getValidationSchemaQueryKey(schema$id),\n\n queryFn: async () => {\n const response = await SynapseClient.getValidationSchema(schema$id)\n return response.validationSchema\n },\n })\n}\n"],"mappings":";;;;AAUA,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,kBAAe,GAAmB;AAC1C,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,4BAA4B,EAAU;EAE3D,SAAS,
|
|
1
|
+
{"version":3,"file":"useSchema.js","names":[],"sources":["../../../src/synapse-queries/entity/useSchema.ts"],"sourcesContent":["/*\n * Hooks for accessing services related to JSON Schemas in the Synapse REST API\n */\n\nimport SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { useQuery, UseQueryOptions } from '@tanstack/react-query'\nimport { JSONSchema7 } from 'json-schema'\n\nexport function useGetSchema(\n schema$id: string,\n options?: Partial<UseQueryOptions<JSONSchema7, SynapseClientError>>,\n) {\n const { keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getValidationSchemaQueryKey(schema$id),\n\n queryFn: async () => {\n const response = await SynapseClient.getValidationSchema(schema$id)\n return response.validationSchema\n },\n })\n}\n"],"mappings":";;;;AAUA,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,kBAAe,GAAmB;AAC1C,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,4BAA4B,EAAU;EAE3D,SAAS,aAEA,MADgB,EAAc,oBAAoB,EAAU,EACnD;EAEnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadToS3.js","names":[],"sources":["../../../src/synapse-queries/file/UploadToS3.ts"],"sourcesContent":["import { ProgressCallback } from '@/synapse-client/index'\nimport { S3 } from '@aws-sdk/client-s3'\nimport { Upload } from '@aws-sdk/lib-storage'\n\n/**\n * Directly (from the client runtime, e.g. browser) uploads a file to an\n * S3-compatible storage service.\n */\nexport async function uploadToS3(\n blob: Blob,\n fileKey: string,\n endpoint: string,\n accessKey: string,\n secretKey: string,\n bucketName: string,\n contentType: string,\n abortController: AbortController | undefined,\n progressCallback: ((progress: ProgressCallback) => void) | undefined,\n) {\n const s3Client = new S3({\n endpoint,\n region: 'us-east-1',\n credentials: {\n accessKeyId: accessKey,\n secretAccessKey: secretKey,\n },\n forcePathStyle: true,\n })\n\n const upload = new Upload({\n client: s3Client,\n params: {\n Bucket: bucketName,\n Key: fileKey,\n ContentType: contentType,\n Body: blob,\n },\n abortController,\n leavePartsOnError: true,\n })\n\n upload.on('httpUploadProgress', progress => {\n if (progressCallback) {\n progressCallback({\n value: progress.loaded || 0,\n total: progress.total || 1,\n })\n }\n })\n\n await upload.done()\n}\n"],"mappings":";;;AAQA,eAAsB,EACpB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA;CAWA,IAAM,IAAS,IAAI,EAAO;EACxB,
|
|
1
|
+
{"version":3,"file":"UploadToS3.js","names":[],"sources":["../../../src/synapse-queries/file/UploadToS3.ts"],"sourcesContent":["import { ProgressCallback } from '@/synapse-client/index'\nimport { S3 } from '@aws-sdk/client-s3'\nimport { Upload } from '@aws-sdk/lib-storage'\n\n/**\n * Directly (from the client runtime, e.g. browser) uploads a file to an\n * S3-compatible storage service.\n */\nexport async function uploadToS3(\n blob: Blob,\n fileKey: string,\n endpoint: string,\n accessKey: string,\n secretKey: string,\n bucketName: string,\n contentType: string,\n abortController: AbortController | undefined,\n progressCallback: ((progress: ProgressCallback) => void) | undefined,\n) {\n const s3Client = new S3({\n endpoint,\n region: 'us-east-1',\n credentials: {\n accessKeyId: accessKey,\n secretAccessKey: secretKey,\n },\n forcePathStyle: true,\n })\n\n const upload = new Upload({\n client: s3Client,\n params: {\n Bucket: bucketName,\n Key: fileKey,\n ContentType: contentType,\n Body: blob,\n },\n abortController,\n leavePartsOnError: true,\n })\n\n upload.on('httpUploadProgress', progress => {\n if (progressCallback) {\n progressCallback({\n value: progress.loaded || 0,\n total: progress.total || 1,\n })\n }\n })\n\n await upload.done()\n}\n"],"mappings":";;;AAQA,eAAsB,EACpB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA;CAWA,IAAM,IAAS,IAAI,EAAO;EACxB,QAAQ,IAXW,EAAG;GACtB;GACA,QAAQ;GACR,aAAa;IACX,aAAa;IACb,iBAAiB;IAClB;GACD,gBAAgB;GACjB,CAGS;EACR,QAAQ;GACN,QAAQ;GACR,KAAK;GACL,aAAa;GACb,MAAM;GACP;EACD;EACA,mBAAmB;EACpB,CAAC;AAWF,CATA,EAAO,GAAG,uBAAsB,MAAY;AAC1C,EAAI,KACF,EAAiB;GACf,OAAO,EAAS,UAAU;GAC1B,OAAO,EAAS,SAAS;GAC1B,CAAC;GAEJ,EAEF,MAAM,EAAO,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDirectUploadToS3.js","names":[],"sources":["../../../src/synapse-queries/file/useDirectUploadToS3.ts"],"sourcesContent":["import { calculateMd5 } from '@/synapse-client/SynapseClient'\nimport { ExternalObjectStoreFileHandle } from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\nimport { FileUploadArgs } from './FileUploadArgs'\nimport { uploadToS3 } from './UploadToS3'\nimport { useCreateExternalFileHandle } from './useFileHandle'\n\ntype UseDirectUploadToS3Args = FileUploadArgs & {\n readonly accessKey: string\n readonly secretKey: string\n readonly bucketName: string\n readonly endpoint: string\n readonly keyPrefixUUID: string\n}\n\n/**\n * Mutation used to directly upload a file to an S3-compatible API and create a\n * Synapse ExternalObjectStoreFileHandle pointing to the uploaded file.\n */\nexport function useDirectUploadToS3(\n options?: UseMutationOptions<\n ExternalObjectStoreFileHandle,\n unknown,\n UseDirectUploadToS3Args\n >,\n) {\n const { mutateAsync: createExternalFileHandle } =\n useCreateExternalFileHandle()\n return useMutation({\n ...options,\n mutationFn: async (args: UseDirectUploadToS3Args) => {\n const {\n accessKey,\n secretKey,\n bucketName,\n endpoint,\n fileName,\n contentType,\n blob,\n progressCallback,\n keyPrefixUUID,\n storageLocationId,\n onMd5Computed,\n abortController,\n } = args\n const md5 = await calculateMd5(blob)\n if (onMd5Computed) {\n onMd5Computed()\n }\n\n const fileKey = `${keyPrefixUUID}/${fileName}`\n\n await uploadToS3(\n blob,\n fileKey,\n endpoint,\n accessKey,\n secretKey,\n bucketName,\n contentType,\n abortController,\n progressCallback,\n )\n\n const newFileHandle = (await createExternalFileHandle({\n externalFileHandleInterface: {\n concreteType:\n 'org.sagebionetworks.repo.model.file.ExternalObjectStoreFileHandle',\n contentMd5: md5,\n contentSize: blob.size,\n contentType,\n fileKey,\n fileName,\n storageLocationId,\n },\n })) as ExternalObjectStoreFileHandle\n\n return newFileHandle\n },\n })\n}\n"],"mappings":";;;;;AAmBA,SAAgB,EACd,GAKA;CACA,IAAM,EAAE,aAAa,MACnB,GAA6B;AAC/B,QAAO,EAAY;EACjB,GAAG;EACH,YAAY,OAAO,MAAkC;GACnD,IAAM,EACJ,cACA,cACA,eACA,aACA,aACA,gBACA,SACA,qBACA,kBACA,sBACA,kBACA,uBACE,GACE,IAAM,MAAM,EAAa,EAAK;AACpC,GAAI,KACF,GAAe;GAGjB,IAAM,IAAU,GAAG,EAAc,GAAG;AA2BpC,UAzBA,MAAM,EACJ,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,
|
|
1
|
+
{"version":3,"file":"useDirectUploadToS3.js","names":[],"sources":["../../../src/synapse-queries/file/useDirectUploadToS3.ts"],"sourcesContent":["import { calculateMd5 } from '@/synapse-client/SynapseClient'\nimport { ExternalObjectStoreFileHandle } from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\nimport { FileUploadArgs } from './FileUploadArgs'\nimport { uploadToS3 } from './UploadToS3'\nimport { useCreateExternalFileHandle } from './useFileHandle'\n\ntype UseDirectUploadToS3Args = FileUploadArgs & {\n readonly accessKey: string\n readonly secretKey: string\n readonly bucketName: string\n readonly endpoint: string\n readonly keyPrefixUUID: string\n}\n\n/**\n * Mutation used to directly upload a file to an S3-compatible API and create a\n * Synapse ExternalObjectStoreFileHandle pointing to the uploaded file.\n */\nexport function useDirectUploadToS3(\n options?: UseMutationOptions<\n ExternalObjectStoreFileHandle,\n unknown,\n UseDirectUploadToS3Args\n >,\n) {\n const { mutateAsync: createExternalFileHandle } =\n useCreateExternalFileHandle()\n return useMutation({\n ...options,\n mutationFn: async (args: UseDirectUploadToS3Args) => {\n const {\n accessKey,\n secretKey,\n bucketName,\n endpoint,\n fileName,\n contentType,\n blob,\n progressCallback,\n keyPrefixUUID,\n storageLocationId,\n onMd5Computed,\n abortController,\n } = args\n const md5 = await calculateMd5(blob)\n if (onMd5Computed) {\n onMd5Computed()\n }\n\n const fileKey = `${keyPrefixUUID}/${fileName}`\n\n await uploadToS3(\n blob,\n fileKey,\n endpoint,\n accessKey,\n secretKey,\n bucketName,\n contentType,\n abortController,\n progressCallback,\n )\n\n const newFileHandle = (await createExternalFileHandle({\n externalFileHandleInterface: {\n concreteType:\n 'org.sagebionetworks.repo.model.file.ExternalObjectStoreFileHandle',\n contentMd5: md5,\n contentSize: blob.size,\n contentType,\n fileKey,\n fileName,\n storageLocationId,\n },\n })) as ExternalObjectStoreFileHandle\n\n return newFileHandle\n },\n })\n}\n"],"mappings":";;;;;AAmBA,SAAgB,EACd,GAKA;CACA,IAAM,EAAE,aAAa,MACnB,GAA6B;AAC/B,QAAO,EAAY;EACjB,GAAG;EACH,YAAY,OAAO,MAAkC;GACnD,IAAM,EACJ,cACA,cACA,eACA,aACA,aACA,gBACA,SACA,qBACA,kBACA,sBACA,kBACA,uBACE,GACE,IAAM,MAAM,EAAa,EAAK;AACpC,GAAI,KACF,GAAe;GAGjB,IAAM,IAAU,GAAG,EAAc,GAAG;AA2BpC,UAzBA,MAAM,EACJ,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EAeM,MAbsB,EAAyB,EACpD,6BAA6B;IAC3B,cACE;IACF,YAAY;IACZ,aAAa,EAAK;IAClB;IACA;IACA;IACA;IACD,EACF,CAAC;;EAIL,CAAC"}
|
|
@@ -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 = 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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReply.js","names":[],"sources":["../../../src/synapse-queries/forum/useReply.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n CreateDiscussionReply,\n DiscussionFilter,\n DiscussionReplyBundle,\n DiscussionReplyOrder,\n Match,\n PaginatedResults,\n SubscriptionObjectType,\n UpdateDiscussionReply,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { getNextPageParamForPaginatedResults } from '../InfiniteQueryUtils'\n\nexport function useGetRepliesInfinite<\n TData = InfiniteData<PaginatedResults<DiscussionReplyBundle>>,\n>(\n threadId: string,\n ascending: boolean,\n limit: number,\n sort?: DiscussionReplyOrder,\n filter?: DiscussionFilter,\n options?: Partial<\n UseInfiniteQueryOptions<\n PaginatedResults<DiscussionReplyBundle>,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n PaginatedResults<DiscussionReplyBundle>,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n queryKey: keyFactory.getRepliesQueryKey(\n threadId,\n ascending,\n limit,\n sort,\n filter,\n ),\n queryFn: async context => {\n return SynapseClient.getReplies(\n accessToken,\n threadId,\n limit,\n context.pageParam,\n sort,\n ascending,\n filter,\n )\n },\n initialPageParam: undefined,\n getNextPageParam: getNextPageParamForPaginatedResults,\n })\n}\n\nexport function useGetReply(\n reply: DiscussionReplyBundle,\n options?: Partial<UseQueryOptions<string, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const messageUrl = await SynapseClient.getReplyMessageUrl(\n reply.messageKey,\n accessToken,\n )\n const data = await fetch(messageUrl.messageUrl, {\n method: 'GET',\n headers: {\n Accept: '*/*',\n 'Access-Control-Request-Headers': 'authorization',\n 'Content-Type': 'text/plain; charset=utf-8',\n },\n })\n return data.text()\n }\n return useQuery<string, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getReplyQueryKey(\n reply.threadId,\n reply.id,\n reply.messageKey,\n ),\n queryFn,\n })\n}\n\nexport function usePostReply(\n options?: UseMutationOptions<\n DiscussionReplyBundle,\n SynapseClientError,\n CreateDiscussionReply\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n return useMutation<\n DiscussionReplyBundle,\n SynapseClientError,\n CreateDiscussionReply\n >({\n ...options,\n mutationFn: (request: CreateDiscussionReply) =>\n SynapseClient.postReply(request, accessToken),\n onSuccess: async (newReply, variables, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllRepliesQueryKey(newReply.threadId),\n }),\n // Posting a reply will add the subscription, so invalidate query for list of subscribers\n queryClient.invalidateQueries({\n queryKey: keyFactory.getSubscribersQueryKey(\n newReply.threadId,\n SubscriptionObjectType.THREAD,\n ),\n }),\n ])\n if (options?.onSuccess) {\n await options.onSuccess(newReply, variables, ctx)\n }\n },\n })\n}\n\nexport function usePutReply(\n options?: UseMutationOptions<\n DiscussionReplyBundle,\n SynapseClientError,\n UpdateDiscussionReply\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n DiscussionReplyBundle,\n SynapseClientError,\n UpdateDiscussionReply\n >({\n ...options,\n mutationFn: (request: UpdateDiscussionReply) =>\n SynapseClient.putReply(request, accessToken),\n onSuccess: async (newReply, variables, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllRepliesQueryKey(newReply.threadId),\n })\n\n if (options?.onSuccess) {\n await options.onSuccess(newReply, variables, ctx)\n }\n },\n })\n}\n\nexport function useDeleteReply(\n options?: Partial<UseMutationOptions<void, SynapseClientError, Match>>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, Match>({\n ...options,\n mutationFn: (match: Match) =>\n SynapseClient.deleteReply(accessToken, match.replyId),\n onSuccess: async (updatedReply, variables, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllRepliesQueryKey(variables.threadId),\n })\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedReply, variables, ctx)\n }\n },\n })\n}\n"],"mappings":";;;;;;;AAyBA,SAAgB,EAGd,GACA,GACA,GACA,GACA,GACA,GASA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO,EAML;EACA,GAAG;EACH,UAAU,EAAW,mBACnB,GACA,GACA,GACA,GACA,EACD;EACD,SAAS,OAAM,MACN,EAAc,WACnB,GACA,GACA,GACA,EAAQ,WACR,GACA,GACA,EACD;EAEH,kBAAkB,KAAA;EAClB,kBAAkB;EACnB,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB,EACjD,IAAU,YAAY;EAC1B,IAAM,IAAa,MAAM,EAAc,mBACrC,EAAM,YACN,EACD;AASD,
|
|
1
|
+
{"version":3,"file":"useReply.js","names":[],"sources":["../../../src/synapse-queries/forum/useReply.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n CreateDiscussionReply,\n DiscussionFilter,\n DiscussionReplyBundle,\n DiscussionReplyOrder,\n Match,\n PaginatedResults,\n SubscriptionObjectType,\n UpdateDiscussionReply,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { getNextPageParamForPaginatedResults } from '../InfiniteQueryUtils'\n\nexport function useGetRepliesInfinite<\n TData = InfiniteData<PaginatedResults<DiscussionReplyBundle>>,\n>(\n threadId: string,\n ascending: boolean,\n limit: number,\n sort?: DiscussionReplyOrder,\n filter?: DiscussionFilter,\n options?: Partial<\n UseInfiniteQueryOptions<\n PaginatedResults<DiscussionReplyBundle>,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n PaginatedResults<DiscussionReplyBundle>,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n queryKey: keyFactory.getRepliesQueryKey(\n threadId,\n ascending,\n limit,\n sort,\n filter,\n ),\n queryFn: async context => {\n return SynapseClient.getReplies(\n accessToken,\n threadId,\n limit,\n context.pageParam,\n sort,\n ascending,\n filter,\n )\n },\n initialPageParam: undefined,\n getNextPageParam: getNextPageParamForPaginatedResults,\n })\n}\n\nexport function useGetReply(\n reply: DiscussionReplyBundle,\n options?: Partial<UseQueryOptions<string, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const messageUrl = await SynapseClient.getReplyMessageUrl(\n reply.messageKey,\n accessToken,\n )\n const data = await fetch(messageUrl.messageUrl, {\n method: 'GET',\n headers: {\n Accept: '*/*',\n 'Access-Control-Request-Headers': 'authorization',\n 'Content-Type': 'text/plain; charset=utf-8',\n },\n })\n return data.text()\n }\n return useQuery<string, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getReplyQueryKey(\n reply.threadId,\n reply.id,\n reply.messageKey,\n ),\n queryFn,\n })\n}\n\nexport function usePostReply(\n options?: UseMutationOptions<\n DiscussionReplyBundle,\n SynapseClientError,\n CreateDiscussionReply\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n return useMutation<\n DiscussionReplyBundle,\n SynapseClientError,\n CreateDiscussionReply\n >({\n ...options,\n mutationFn: (request: CreateDiscussionReply) =>\n SynapseClient.postReply(request, accessToken),\n onSuccess: async (newReply, variables, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllRepliesQueryKey(newReply.threadId),\n }),\n // Posting a reply will add the subscription, so invalidate query for list of subscribers\n queryClient.invalidateQueries({\n queryKey: keyFactory.getSubscribersQueryKey(\n newReply.threadId,\n SubscriptionObjectType.THREAD,\n ),\n }),\n ])\n if (options?.onSuccess) {\n await options.onSuccess(newReply, variables, ctx)\n }\n },\n })\n}\n\nexport function usePutReply(\n options?: UseMutationOptions<\n DiscussionReplyBundle,\n SynapseClientError,\n UpdateDiscussionReply\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n DiscussionReplyBundle,\n SynapseClientError,\n UpdateDiscussionReply\n >({\n ...options,\n mutationFn: (request: UpdateDiscussionReply) =>\n SynapseClient.putReply(request, accessToken),\n onSuccess: async (newReply, variables, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllRepliesQueryKey(newReply.threadId),\n })\n\n if (options?.onSuccess) {\n await options.onSuccess(newReply, variables, ctx)\n }\n },\n })\n}\n\nexport function useDeleteReply(\n options?: Partial<UseMutationOptions<void, SynapseClientError, Match>>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, Match>({\n ...options,\n mutationFn: (match: Match) =>\n SynapseClient.deleteReply(accessToken, match.replyId),\n onSuccess: async (updatedReply, variables, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllRepliesQueryKey(variables.threadId),\n })\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedReply, variables, ctx)\n }\n },\n })\n}\n"],"mappings":";;;;;;;AAyBA,SAAgB,EAGd,GACA,GACA,GACA,GACA,GACA,GASA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO,EAML;EACA,GAAG;EACH,UAAU,EAAW,mBACnB,GACA,GACA,GACA,GACA,EACD;EACD,SAAS,OAAM,MACN,EAAc,WACnB,GACA,GACA,GACA,EAAQ,WACR,GACA,GACA,EACD;EAEH,kBAAkB,KAAA;EAClB,kBAAkB;EACnB,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB,EACjD,IAAU,YAAY;EAC1B,IAAM,IAAa,MAAM,EAAc,mBACrC,EAAM,YACN,EACD;AASD,UAAO,MARY,MAAM,EAAW,YAAY;GAC9C,QAAQ;GACR,SAAS;IACP,QAAQ;IACR,kCAAkC;IAClC,gBAAgB;IACjB;GACF,CAAC,EACU,MAAM;;AAEpB,QAAO,EAAqC;EAC1C,GAAG;EACH,UAAU,EAAW,iBACnB,EAAM,UACN,EAAM,IACN,EAAM,WACP;EACD;EACD,CAAC;;AAGJ,SAAgB,EACd,GAKA;CACA,IAAM,IAAc,GAAgB,EAC9B,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO,EAIL;EACA,GAAG;EACH,aAAa,MACX,EAAc,UAAU,GAAS,EAAY;EAC/C,WAAW,OAAO,GAAU,GAAW,MAAQ;AAa7C,GAZA,MAAM,QAAQ,IAAI,CAChB,EAAY,kBAAkB,EAC5B,UAAU,EAAW,sBAAsB,EAAS,SAAS,EAC9D,CAAC,EAEF,EAAY,kBAAkB,EAC5B,UAAU,EAAW,uBACnB,EAAS,UACT,EAAuB,OACxB,EACF,CAAC,CACH,CAAC,EACE,GAAS,aACX,MAAM,EAAQ,UAAU,GAAU,GAAW,EAAI;;EAGtD,CAAC;;AAGJ,SAAgB,EACd,GAKA;CACA,IAAM,IAAc,GAAgB,EAC9B,EAAE,gBAAa,kBAAe,GAAmB;AAEvD,QAAO,EAIL;EACA,GAAG;EACH,aAAa,MACX,EAAc,SAAS,GAAS,EAAY;EAC9C,WAAW,OAAO,GAAU,GAAW,MAAQ;AAK7C,GAJA,MAAM,EAAY,kBAAkB,EAClC,UAAU,EAAW,sBAAsB,EAAS,SAAS,EAC9D,CAAC,EAEE,GAAS,aACX,MAAM,EAAQ,UAAU,GAAU,GAAW,EAAI;;EAGtD,CAAC;;AAGJ,SAAgB,EACd,GACA;CACA,IAAM,IAAc,GAAgB,EAC9B,EAAE,gBAAa,kBAAe,GAAmB;AAEvD,QAAO,EAA6C;EAClD,GAAG;EACH,aAAa,MACX,EAAc,YAAY,GAAa,EAAM,QAAQ;EACvD,WAAW,OAAO,GAAc,GAAW,MAAQ;AAKjD,GAJA,MAAM,EAAY,kBAAkB,EAClC,UAAU,EAAW,sBAAsB,EAAU,SAAS,EAC/D,CAAC,EAEE,GAAS,aACX,MAAM,EAAQ,UAAU,GAAc,GAAW,EAAI;;EAG1D,CAAC"}
|
|
@@ -8,6 +8,7 @@ export declare function useGetThread(threadId: string): {
|
|
|
8
8
|
isLoading: boolean;
|
|
9
9
|
};
|
|
10
10
|
export declare function useGetThreadBundle(threadId: string, options?: Partial<UseQueryOptions<DiscussionThreadBundle, SynapseClientError>>): import("@tanstack/react-query").UseQueryResult<DiscussionThreadBundle, SynapseClientError>;
|
|
11
|
+
export declare function useGetThreadForSubmission(submissionId: string | number): import("@tanstack/react-query").UseQueryResult<import("@sage-bionetworks/synapse-client").DiscussionThreadBundle, Error>;
|
|
11
12
|
export declare function useGetThreadBody(threadData?: DiscussionThreadBundle, options?: Partial<UseQueryOptions<string, SynapseClientError>>): import("@tanstack/react-query").UseQueryResult<string, SynapseClientError>;
|
|
12
13
|
export declare function useUpdateThreadTitle(options?: UseMutationOptions<DiscussionThreadBundle, SynapseClientError, UpdateThreadTitleRequest>): import("@tanstack/react-query").UseMutationResult<DiscussionThreadBundle, SynapseClientError, UpdateThreadTitleRequest, unknown>;
|
|
13
14
|
export declare function useUpdateThreadMessage(options?: UseMutationOptions<DiscussionThreadBundle, SynapseClientError, UpdateThreadMessageRequest>): import("@tanstack/react-query").UseMutationResult<DiscussionThreadBundle, SynapseClientError, UpdateThreadMessageRequest, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useThread.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/forum/useThread.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,SAAS,CAAA;AAC/D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAEL,kBAAkB,EAGlB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAG9B,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM;;;;;EAsB5C;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,CACf,eAAe,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAC5D,8FASF;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,CAAC,EAAE,sBAAsB,EACnC,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,8EA2B/D;AAED,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,kBAAkB,CAC1B,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,CACzB,oIAwBF;AAED,wBAAgB,sBAAsB,CACpC,OAAO,CAAC,EAAE,kBAAkB,CAC1B,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,CAC3B,sIAsBF;AAED,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,kBAAkB,CAC1B,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,CACvB,kIAsBF;AAED,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,kBAAkB,CAC1B,IAAI,EACJ,kBAAkB,EAClB,sBAAsB,CACvB,gHAqBF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,kBAAkB,CAC1B,IAAI,EACJ,kBAAkB,EAClB,sBAAsB,CACvB,gHAqBF;AAED,wBAAgB,YAAY,CAC1B,OAAO,CAAC,EAAE,kBAAkB,CAC1B,IAAI,EACJ,kBAAkB,EAClB,sBAAsB,CACvB,gHAqBF;AAED,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,kBAAkB,CAC1B,IAAI,EACJ,kBAAkB,EAClB,sBAAsB,CACvB,gHAqBF"}
|
|
1
|
+
{"version":3,"file":"useThread.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/forum/useThread.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,SAAS,CAAA;AAC/D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAEL,kBAAkB,EAGlB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAG9B,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM;;;;;EAsB5C;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,CACf,eAAe,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAC5D,8FASF;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,4HAUtE;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,CAAC,EAAE,sBAAsB,EACnC,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,8EA2B/D;AAED,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,kBAAkB,CAC1B,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,CACzB,oIAwBF;AAED,wBAAgB,sBAAsB,CACpC,OAAO,CAAC,EAAE,kBAAkB,CAC1B,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,CAC3B,sIAsBF;AAED,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,kBAAkB,CAC1B,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,CACvB,kIAsBF;AAED,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,kBAAkB,CAC1B,IAAI,EACJ,kBAAkB,EAClB,sBAAsB,CACvB,gHAqBF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,kBAAkB,CAC1B,IAAI,EACJ,kBAAkB,EAClB,sBAAsB,CACvB,gHAqBF;AAED,wBAAgB,YAAY,CAC1B,OAAO,CAAC,EAAE,kBAAkB,CAC1B,IAAI,EACJ,kBAAkB,EAClB,sBAAsB,CACvB,gHAqBF;AAED,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,kBAAkB,CAC1B,IAAI,EACJ,kBAAkB,EAClB,sBAAsB,CACvB,gHAqBF"}
|
|
@@ -5,14 +5,14 @@ import { useCallback as n } from "react";
|
|
|
5
5
|
import { useMutation as r, useQuery as i, useQueryClient as a } from "@tanstack/react-query";
|
|
6
6
|
//#region src/synapse-queries/forum/useThread.ts
|
|
7
7
|
function o(e) {
|
|
8
|
-
let { data: t, isLoading: r } = s(e), { data: i, isLoading: a } =
|
|
8
|
+
let { data: t, isLoading: r } = s(e), { data: i, isLoading: a } = l(t, { enabled: !!t }), { mutate: o } = h(), { mutate: c } = g();
|
|
9
9
|
return {
|
|
10
10
|
threadData: t,
|
|
11
11
|
threadBody: i,
|
|
12
12
|
togglePin: n(() => {
|
|
13
|
-
t && (t?.isPinned ?
|
|
13
|
+
t && (t?.isPinned ? c(t) : o(t));
|
|
14
14
|
}, [
|
|
15
|
-
|
|
15
|
+
c,
|
|
16
16
|
o,
|
|
17
17
|
t
|
|
18
18
|
]),
|
|
@@ -27,7 +27,14 @@ function s(n, r) {
|
|
|
27
27
|
queryFn: () => e.getThread(n, a)
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
-
function c(
|
|
30
|
+
function c(e) {
|
|
31
|
+
let { keyFactory: n, synapseClient: r } = t();
|
|
32
|
+
return i({
|
|
33
|
+
queryKey: n.getThreadForSubmissionQueryKey(e),
|
|
34
|
+
queryFn: () => r.discussionServicesClient.getRepoV1ThreadSubmissionSubmissionId({ submissionId: String(e) })
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function l(n, r) {
|
|
31
38
|
let { accessToken: a, keyFactory: o } = t(), s = async () => {
|
|
32
39
|
let t = await e.getThreadMessageUrl(n?.messageKey, a);
|
|
33
40
|
return (await fetch(t.messageUrl, {
|
|
@@ -45,7 +52,7 @@ function c(n, r) {
|
|
|
45
52
|
queryFn: s
|
|
46
53
|
});
|
|
47
54
|
}
|
|
48
|
-
function
|
|
55
|
+
function u(n) {
|
|
49
56
|
let i = a(), { accessToken: o, keyFactory: s } = t();
|
|
50
57
|
return r({
|
|
51
58
|
...n,
|
|
@@ -55,7 +62,7 @@ function l(n) {
|
|
|
55
62
|
}
|
|
56
63
|
});
|
|
57
64
|
}
|
|
58
|
-
function
|
|
65
|
+
function d(n) {
|
|
59
66
|
let i = a(), { accessToken: o, keyFactory: s } = t();
|
|
60
67
|
return r({
|
|
61
68
|
...n,
|
|
@@ -65,7 +72,7 @@ function u(n) {
|
|
|
65
72
|
}
|
|
66
73
|
});
|
|
67
74
|
}
|
|
68
|
-
function
|
|
75
|
+
function f(n) {
|
|
69
76
|
let i = a(), { accessToken: o, keyFactory: s } = t();
|
|
70
77
|
return r({
|
|
71
78
|
...n,
|
|
@@ -75,7 +82,7 @@ function d(n) {
|
|
|
75
82
|
}
|
|
76
83
|
});
|
|
77
84
|
}
|
|
78
|
-
function
|
|
85
|
+
function p(n) {
|
|
79
86
|
let i = a(), { accessToken: o, keyFactory: s } = t();
|
|
80
87
|
return r({
|
|
81
88
|
...n,
|
|
@@ -85,7 +92,7 @@ function f(n) {
|
|
|
85
92
|
}
|
|
86
93
|
});
|
|
87
94
|
}
|
|
88
|
-
function
|
|
95
|
+
function m(n) {
|
|
89
96
|
let i = a(), { accessToken: o, keyFactory: s } = t();
|
|
90
97
|
return r({
|
|
91
98
|
...n,
|
|
@@ -95,7 +102,7 @@ function p(n) {
|
|
|
95
102
|
}
|
|
96
103
|
});
|
|
97
104
|
}
|
|
98
|
-
function
|
|
105
|
+
function h(n) {
|
|
99
106
|
let i = a(), { accessToken: o, keyFactory: s } = t();
|
|
100
107
|
return r({
|
|
101
108
|
...n,
|
|
@@ -105,7 +112,7 @@ function m(n) {
|
|
|
105
112
|
}
|
|
106
113
|
});
|
|
107
114
|
}
|
|
108
|
-
function
|
|
115
|
+
function g(n) {
|
|
109
116
|
let i = a(), { accessToken: o, keyFactory: s } = t();
|
|
110
117
|
return r({
|
|
111
118
|
...n,
|
|
@@ -116,6 +123,6 @@ function h(n) {
|
|
|
116
123
|
});
|
|
117
124
|
}
|
|
118
125
|
//#endregion
|
|
119
|
-
export {
|
|
126
|
+
export { f as useCreateThread, p as useDeleteThread, o as useGetThread, l as useGetThreadBody, s as useGetThreadBundle, c as useGetThreadForSubmission, h as usePinThread, m as useRestoreThread, g as useUnPinThread, d as useUpdateThreadMessage, u as useUpdateThreadTitle };
|
|
120
127
|
|
|
121
128
|
//# sourceMappingURL=useThread.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useThread.js","names":[],"sources":["../../../src/synapse-queries/forum/useThread.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n CreateDiscussionThread,\n DiscussionThreadBundle,\n UpdateThreadMessageRequest,\n UpdateThreadTitleRequest,\n} from '@sage-bionetworks/synapse-types'\nimport {\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { useCallback } from 'react'\n\nexport function useGetThread(threadId: string) {\n const { data: threadData, isLoading: isLoadingBundle } =\n useGetThreadBundle(threadId)\n const { data: threadBody, isLoading: isLoadingBody } = useGetThreadBody(\n threadData,\n { enabled: !!threadData },\n )\n const { mutate: pinThread } = usePinThread()\n const { mutate: unPinThread } = useUnPinThread()\n\n const togglePin = useCallback(() => {\n if (threadData) {\n if (threadData?.isPinned) {\n unPinThread(threadData)\n } else {\n pinThread(threadData)\n }\n }\n }, [unPinThread, pinThread, threadData])\n\n const isLoading = isLoadingBody || isLoadingBundle\n return { threadData, threadBody, togglePin, isLoading }\n}\n\nexport function useGetThreadBundle(\n threadId: string,\n options?: Partial<\n UseQueryOptions<DiscussionThreadBundle, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getThreadQueryKey(threadId),\n queryFn: () => SynapseClient.getThread(threadId, accessToken),\n })\n}\n\nexport function useGetThreadBody(\n threadData?: DiscussionThreadBundle,\n options?: Partial<UseQueryOptions<string, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n const queryFn = async () => {\n const messageUrl = await SynapseClient.getThreadMessageUrl(\n threadData?.messageKey!,\n accessToken,\n )\n const data = await fetch(messageUrl.messageUrl, {\n method: 'GET',\n headers: {\n Accept: '*/*',\n 'Access-Control-Request-Headers': 'authorization',\n 'Content-Type': 'text/plain; charset=utf-8',\n },\n })\n return data.text()\n }\n return useQuery<string, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getThreadBodyQueryKey(\n threadData?.id!,\n threadData?.messageKey!,\n ),\n queryFn,\n })\n}\n\nexport function useUpdateThreadTitle(\n options?: UseMutationOptions<\n DiscussionThreadBundle,\n SynapseClientError,\n UpdateThreadTitleRequest\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n return useMutation<\n DiscussionThreadBundle,\n SynapseClientError,\n UpdateThreadTitleRequest\n >({\n ...options,\n mutationFn: (request: UpdateThreadTitleRequest) =>\n SynapseClient.putThreadTitle(accessToken, request),\n onSuccess: async (newThread, variables, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(newThread.forumId),\n })\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(variables.threadId),\n })\n if (options?.onSuccess) {\n await options.onSuccess(newThread, variables, ctx)\n }\n },\n })\n}\n\nexport function useUpdateThreadMessage(\n options?: UseMutationOptions<\n DiscussionThreadBundle,\n SynapseClientError,\n UpdateThreadMessageRequest\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n DiscussionThreadBundle,\n SynapseClientError,\n UpdateThreadMessageRequest\n >({\n ...options,\n mutationFn: (request: UpdateThreadMessageRequest) =>\n SynapseClient.putThreadMessage(accessToken, request),\n onSuccess: async (newThread, variables, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(variables.threadId),\n })\n if (options?.onSuccess) {\n await options.onSuccess(newThread, variables, ctx)\n }\n },\n })\n}\n\nexport function useCreateThread(\n options?: UseMutationOptions<\n DiscussionThreadBundle,\n SynapseClientError,\n CreateDiscussionThread\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n DiscussionThreadBundle,\n SynapseClientError,\n CreateDiscussionThread\n >({\n ...options,\n mutationFn: (newThread: CreateDiscussionThread) =>\n SynapseClient.postThread(accessToken, newThread),\n onSuccess: async (threadBundle, newThreadRequest, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(threadBundle.forumId),\n })\n if (options?.onSuccess) {\n await options.onSuccess(threadBundle, newThreadRequest, ctx)\n }\n },\n })\n}\n\nexport function useDeleteThread(\n options?: UseMutationOptions<\n void,\n SynapseClientError,\n DiscussionThreadBundle\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, DiscussionThreadBundle>({\n ...options,\n mutationFn: (threadBundle: DiscussionThreadBundle) =>\n SynapseClient.deleteThread(accessToken, threadBundle.id),\n onSuccess: async (updatedThread, threadBundle, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(threadBundle.forumId),\n })\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(threadBundle.id),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedThread, threadBundle, ctx)\n }\n },\n })\n}\n\nexport function useRestoreThread(\n options?: UseMutationOptions<\n void,\n SynapseClientError,\n DiscussionThreadBundle\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, DiscussionThreadBundle>({\n ...options,\n mutationFn: (threadBundle: DiscussionThreadBundle) =>\n SynapseClient.restoreThread(accessToken, threadBundle.id),\n onSuccess: async (updatedThread, threadBundle, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(threadBundle.forumId),\n })\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(threadBundle.id),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedThread, threadBundle, ctx)\n }\n },\n })\n}\n\nexport function usePinThread(\n options?: UseMutationOptions<\n void,\n SynapseClientError,\n DiscussionThreadBundle\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, DiscussionThreadBundle>({\n ...options,\n mutationFn: (threadBundle: DiscussionThreadBundle) =>\n SynapseClient.pinThread(accessToken, threadBundle.id),\n onSuccess: async (updatedThread, threadBundle, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(threadBundle.forumId),\n })\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(threadBundle.id),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedThread, threadBundle, ctx)\n }\n },\n })\n}\n\nexport function useUnPinThread(\n options?: UseMutationOptions<\n void,\n SynapseClientError,\n DiscussionThreadBundle\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, DiscussionThreadBundle>({\n ...options,\n mutationFn: (threadBundle: DiscussionThreadBundle) =>\n SynapseClient.unPinThread(accessToken, threadBundle.id),\n onSuccess: async (updatedThread, threadBundle, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(threadBundle.forumId),\n })\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(threadBundle.id),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedThread, threadBundle, ctx)\n }\n },\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useThread.js","names":[],"sources":["../../../src/synapse-queries/forum/useThread.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n CreateDiscussionThread,\n DiscussionThreadBundle,\n UpdateThreadMessageRequest,\n UpdateThreadTitleRequest,\n} from '@sage-bionetworks/synapse-types'\nimport {\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { useCallback } from 'react'\n\nexport function useGetThread(threadId: string) {\n const { data: threadData, isLoading: isLoadingBundle } =\n useGetThreadBundle(threadId)\n const { data: threadBody, isLoading: isLoadingBody } = useGetThreadBody(\n threadData,\n { enabled: !!threadData },\n )\n const { mutate: pinThread } = usePinThread()\n const { mutate: unPinThread } = useUnPinThread()\n\n const togglePin = useCallback(() => {\n if (threadData) {\n if (threadData?.isPinned) {\n unPinThread(threadData)\n } else {\n pinThread(threadData)\n }\n }\n }, [unPinThread, pinThread, threadData])\n\n const isLoading = isLoadingBody || isLoadingBundle\n return { threadData, threadBody, togglePin, isLoading }\n}\n\nexport function useGetThreadBundle(\n threadId: string,\n options?: Partial<\n UseQueryOptions<DiscussionThreadBundle, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getThreadQueryKey(threadId),\n queryFn: () => SynapseClient.getThread(threadId, accessToken),\n })\n}\n\nexport function useGetThreadForSubmission(submissionId: string | number) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n queryKey: keyFactory.getThreadForSubmissionQueryKey(submissionId),\n queryFn: () =>\n synapseClient.discussionServicesClient.getRepoV1ThreadSubmissionSubmissionId(\n { submissionId: String(submissionId) },\n ),\n })\n}\n\nexport function useGetThreadBody(\n threadData?: DiscussionThreadBundle,\n options?: Partial<UseQueryOptions<string, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n const queryFn = async () => {\n const messageUrl = await SynapseClient.getThreadMessageUrl(\n threadData?.messageKey!,\n accessToken,\n )\n const data = await fetch(messageUrl.messageUrl, {\n method: 'GET',\n headers: {\n Accept: '*/*',\n 'Access-Control-Request-Headers': 'authorization',\n 'Content-Type': 'text/plain; charset=utf-8',\n },\n })\n return data.text()\n }\n return useQuery<string, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getThreadBodyQueryKey(\n threadData?.id!,\n threadData?.messageKey!,\n ),\n queryFn,\n })\n}\n\nexport function useUpdateThreadTitle(\n options?: UseMutationOptions<\n DiscussionThreadBundle,\n SynapseClientError,\n UpdateThreadTitleRequest\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n return useMutation<\n DiscussionThreadBundle,\n SynapseClientError,\n UpdateThreadTitleRequest\n >({\n ...options,\n mutationFn: (request: UpdateThreadTitleRequest) =>\n SynapseClient.putThreadTitle(accessToken, request),\n onSuccess: async (newThread, variables, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(newThread.forumId),\n })\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(variables.threadId),\n })\n if (options?.onSuccess) {\n await options.onSuccess(newThread, variables, ctx)\n }\n },\n })\n}\n\nexport function useUpdateThreadMessage(\n options?: UseMutationOptions<\n DiscussionThreadBundle,\n SynapseClientError,\n UpdateThreadMessageRequest\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n DiscussionThreadBundle,\n SynapseClientError,\n UpdateThreadMessageRequest\n >({\n ...options,\n mutationFn: (request: UpdateThreadMessageRequest) =>\n SynapseClient.putThreadMessage(accessToken, request),\n onSuccess: async (newThread, variables, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(variables.threadId),\n })\n if (options?.onSuccess) {\n await options.onSuccess(newThread, variables, ctx)\n }\n },\n })\n}\n\nexport function useCreateThread(\n options?: UseMutationOptions<\n DiscussionThreadBundle,\n SynapseClientError,\n CreateDiscussionThread\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n DiscussionThreadBundle,\n SynapseClientError,\n CreateDiscussionThread\n >({\n ...options,\n mutationFn: (newThread: CreateDiscussionThread) =>\n SynapseClient.postThread(accessToken, newThread),\n onSuccess: async (threadBundle, newThreadRequest, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(threadBundle.forumId),\n })\n if (options?.onSuccess) {\n await options.onSuccess(threadBundle, newThreadRequest, ctx)\n }\n },\n })\n}\n\nexport function useDeleteThread(\n options?: UseMutationOptions<\n void,\n SynapseClientError,\n DiscussionThreadBundle\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, DiscussionThreadBundle>({\n ...options,\n mutationFn: (threadBundle: DiscussionThreadBundle) =>\n SynapseClient.deleteThread(accessToken, threadBundle.id),\n onSuccess: async (updatedThread, threadBundle, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(threadBundle.forumId),\n })\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(threadBundle.id),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedThread, threadBundle, ctx)\n }\n },\n })\n}\n\nexport function useRestoreThread(\n options?: UseMutationOptions<\n void,\n SynapseClientError,\n DiscussionThreadBundle\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, DiscussionThreadBundle>({\n ...options,\n mutationFn: (threadBundle: DiscussionThreadBundle) =>\n SynapseClient.restoreThread(accessToken, threadBundle.id),\n onSuccess: async (updatedThread, threadBundle, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(threadBundle.forumId),\n })\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(threadBundle.id),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedThread, threadBundle, ctx)\n }\n },\n })\n}\n\nexport function usePinThread(\n options?: UseMutationOptions<\n void,\n SynapseClientError,\n DiscussionThreadBundle\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, DiscussionThreadBundle>({\n ...options,\n mutationFn: (threadBundle: DiscussionThreadBundle) =>\n SynapseClient.pinThread(accessToken, threadBundle.id),\n onSuccess: async (updatedThread, threadBundle, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(threadBundle.forumId),\n })\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(threadBundle.id),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedThread, threadBundle, ctx)\n }\n },\n })\n}\n\nexport function useUnPinThread(\n options?: UseMutationOptions<\n void,\n SynapseClientError,\n DiscussionThreadBundle\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, DiscussionThreadBundle>({\n ...options,\n mutationFn: (threadBundle: DiscussionThreadBundle) =>\n SynapseClient.unPinThread(accessToken, threadBundle.id),\n onSuccess: async (updatedThread, threadBundle, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAllForumThreadsQueryKey(threadBundle.forumId),\n })\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getThreadQueryKey(threadBundle.id),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedThread, threadBundle, ctx)\n }\n },\n })\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEstablishWebsocketConnection.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/grid/useEstablishWebsocketConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAC3E,OAAO,EAAe,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAG/D,UAAU,wBAAwB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE;QACjB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;QACxB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;QACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;QAC1C,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;QAC/B,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAA;QAClC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;KACzB,CAAA;CACF;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,CAAC,EAAE,OAAO,CACf,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,EAAE,wBAAwB,CAAC,CACzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCF"}
|
|
1
|
+
{"version":3,"file":"useEstablishWebsocketConnection.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/grid/useEstablishWebsocketConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAC3E,OAAO,EAAe,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAG/D,UAAU,wBAAwB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE;QACjB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;QACxB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;QACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;QAC1C,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;QAC/B,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAA;QAClC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;QACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;QACtB,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;KACzB,CAAA;CACF;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,CAAC,EAAE,OAAO,CACf,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,EAAE,wBAAwB,CAAC,CACzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCF"}
|