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":"useEstablishWebsocketConnection.js","names":[],"sources":["../../../src/synapse-queries/grid/useEstablishWebsocketConnection.ts"],"sourcesContent":["import { useGridPresignedUrl } from '@/synapse-queries/grid/useGridPresignedUrl'\nimport { DataGridWebSocket } from '@/components/DataGrid/DataGridWebSocket'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\nimport { GridModel } from '@/components/DataGrid/DataGridTypes'\nimport { useCallback, useState } from 'react'\n\ninterface EstablishWebsocketParams {\n replicaId: number\n sessionId: string\n websocketOptions?: {\n onGridReady?: () => void\n onStatusChange?: (open: boolean) => void\n onModelCreate?: (model: GridModel) => void\n onReplicaConnected?: () => void\n onReplicaDisconnected?: () => void\n model?: GridModel | null\n }\n}\n\n/**\n * Hook to establish a DataGrid WebSocket using a presigned URL.\n * Assumes the WebSocket will connect successfully once a presigned URL is retrieved.\n */\nexport function useEstablishWebsocketConnection(\n options?: Partial<\n UseMutationOptions<DataGridWebSocket, unknown, EstablishWebsocketParams>\n >,\n) {\n const { mutateAsync: fetchPresignedUrl } = useGridPresignedUrl()\n const [presignedUrl, setPresignedUrl] = useState<string | null>(null)\n\n const clearPresignedUrl = useCallback(() => {\n setPresignedUrl(null)\n }, [])\n\n const mutation = useMutation({\n retry: 5,\n retryDelay: attempt =>\n Math.min(attempt > 1 ? 2 ** attempt * 1000 : 1000, 30 * 1000),\n mutationFn: async ({\n replicaId,\n sessionId,\n websocketOptions,\n }: EstablishWebsocketParams) => {\n if (!replicaId) throw new Error('replicaId is required')\n const url = await fetchPresignedUrl({ replicaId, sessionId })\n setPresignedUrl(url)\n\n return new DataGridWebSocket({\n replicaId,\n url,\n ...(websocketOptions || {}),\n })\n },\n ...options,\n })\n\n return { ...mutation, presignedUrl, clearPresignedUrl }\n}\n"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"useEstablishWebsocketConnection.js","names":[],"sources":["../../../src/synapse-queries/grid/useEstablishWebsocketConnection.ts"],"sourcesContent":["import { useGridPresignedUrl } from '@/synapse-queries/grid/useGridPresignedUrl'\nimport { DataGridWebSocket } from '@/components/DataGrid/DataGridWebSocket'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\nimport { GridModel } from '@/components/DataGrid/DataGridTypes'\nimport { useCallback, useState } from 'react'\n\ninterface EstablishWebsocketParams {\n replicaId: number\n sessionId: string\n websocketOptions?: {\n onGridReady?: () => void\n onStatusChange?: (open: boolean) => void\n onModelCreate?: (model: GridModel) => void\n onReplicaConnected?: () => void\n onReplicaDisconnected?: () => void\n onSyncStart?: () => void\n onSyncEnd?: () => void\n model?: GridModel | null\n }\n}\n\n/**\n * Hook to establish a DataGrid WebSocket using a presigned URL.\n * Assumes the WebSocket will connect successfully once a presigned URL is retrieved.\n */\nexport function useEstablishWebsocketConnection(\n options?: Partial<\n UseMutationOptions<DataGridWebSocket, unknown, EstablishWebsocketParams>\n >,\n) {\n const { mutateAsync: fetchPresignedUrl } = useGridPresignedUrl()\n const [presignedUrl, setPresignedUrl] = useState<string | null>(null)\n\n const clearPresignedUrl = useCallback(() => {\n setPresignedUrl(null)\n }, [])\n\n const mutation = useMutation({\n retry: 5,\n retryDelay: attempt =>\n Math.min(attempt > 1 ? 2 ** attempt * 1000 : 1000, 30 * 1000),\n mutationFn: async ({\n replicaId,\n sessionId,\n websocketOptions,\n }: EstablishWebsocketParams) => {\n if (!replicaId) throw new Error('replicaId is required')\n const url = await fetchPresignedUrl({ replicaId, sessionId })\n setPresignedUrl(url)\n\n return new DataGridWebSocket({\n replicaId,\n url,\n ...(websocketOptions || {}),\n })\n },\n ...options,\n })\n\n return { ...mutation, presignedUrl, clearPresignedUrl }\n}\n"],"mappings":";;;;;AAyBA,SAAgB,EACd,GAGA;CACA,IAAM,EAAE,aAAa,MAAsB,GAAqB,EAC1D,CAAC,GAAc,KAAmB,EAAwB,KAAK,EAE/D,IAAoB,QAAkB;AAC1C,IAAgB,KAAK;IACpB,EAAE,CAAC;AAwBN,QAAO;EAAE,GAtBQ,EAAY;GAC3B,OAAO;GACP,aAAY,MACV,KAAK,IAAI,IAAU,IAAI,KAAK,IAAU,MAAO,KAAM,KAAK,IAAK;GAC/D,YAAY,OAAO,EACjB,cACA,cACA,0BAC8B;AAC9B,QAAI,CAAC,EAAW,OAAU,MAAM,wBAAwB;IACxD,IAAM,IAAM,MAAM,EAAkB;KAAE;KAAW;KAAW,CAAC;AAG7D,WAFA,EAAgB,EAAI,EAEb,IAAI,EAAkB;KAC3B;KACA;KACA,GAAI,KAAoB,EAAE;KAC3B,CAAC;;GAEJ,GAAG;GACJ,CAEW;EAAU;EAAc;EAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExportGrid.js","names":[],"sources":["../../../src/synapse-queries/grid/useExportGrid.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n DownloadFromGridRequest,\n DownloadFromGridResult,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\n\nexport function useExportGridAsCsv(\n options?: Partial<\n UseMutationOptions<\n DownloadFromGridResult,\n SynapseClientError,\n DownloadFromGridRequest\n >\n >,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<\n DownloadFromGridResult,\n SynapseClientError,\n DownloadFromGridRequest\n >({\n ...options,\n mutationFn: async downloadFromGridRequest => {\n const asyncJobId =\n await synapseClient.gridServicesClient.postRepoV1GridDownloadCsvAsyncStart(\n {\n downloadFromGridRequest,\n },\n )\n\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n return asyncJobResponse.responseBody as DownloadFromGridResult\n },\n })\n}\n"],"mappings":";;;;AASA,SAAgB,EACd,GAOA;CACA,IAAM,EAAE,qBAAkB,GAAmB;AAE7C,QAAO,EAIL;EACA,GAAG;EACH,YAAY,OAAM,MAA2B;GAC3C,IAAM,IACJ,MAAM,EAAc,mBAAmB,oCACrC,EACE,4BACD,CACF;AASH,
|
|
1
|
+
{"version":3,"file":"useExportGrid.js","names":[],"sources":["../../../src/synapse-queries/grid/useExportGrid.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n DownloadFromGridRequest,\n DownloadFromGridResult,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\n\nexport function useExportGridAsCsv(\n options?: Partial<\n UseMutationOptions<\n DownloadFromGridResult,\n SynapseClientError,\n DownloadFromGridRequest\n >\n >,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<\n DownloadFromGridResult,\n SynapseClientError,\n DownloadFromGridRequest\n >({\n ...options,\n mutationFn: async downloadFromGridRequest => {\n const asyncJobId =\n await synapseClient.gridServicesClient.postRepoV1GridDownloadCsvAsyncStart(\n {\n downloadFromGridRequest,\n },\n )\n\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n return asyncJobResponse.responseBody as DownloadFromGridResult\n },\n })\n}\n"],"mappings":";;;;AASA,SAAgB,EACd,GAOA;CACA,IAAM,EAAE,qBAAkB,GAAmB;AAE7C,QAAO,EAIL;EACA,GAAG;EACH,YAAY,OAAM,MAA2B;GAC3C,IAAM,IACJ,MAAM,EAAc,mBAAmB,oCACrC,EACE,4BACD,CACF;AASH,WAAO,MAPwB,QAC7B,EAAc,8BAA8B,8BAC1C,EACE,OAAO,EAAW,OACnB,CACF,CACF,EACuB;;EAE3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGridSession.js","names":[],"sources":["../../../src/synapse-queries/grid/useGridSession.ts"],"sourcesContent":["import { KeyFactory } from '@/synapse-queries/index'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport startGridSession from '@/utils/functions/GridApiUtils'\nimport {\n CreateGridRequest,\n CreateGridResponse,\n CreateReplicaResponse,\n GridReplicaInfo,\n GridSession,\n ListGridSessionsRequest,\n ListGridSessionsResponse,\n PostRepoV1GridSessionSessionIdReplicaRequest,\n SynapseClient,\n SynchronizeGridRequest,\n SynchronizeGridResponse,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n InfiniteData,\n QueryKey,\n queryOptions,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { SynapseQueriesContext } from '../types'\n\nexport function useCreateGridReplica(\n options?: Partial<\n UseMutationOptions<CreateReplicaResponse, SynapseClientError, string>\n >,\n) {\n const queryClient = useQueryClient()\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useMutation<CreateReplicaResponse, SynapseClientError, string>({\n ...options,\n mutationFn: (sessionId: string) =>\n synapseClient.gridServicesClient.postRepoV1GridSessionSessionIdReplica({\n sessionId,\n createReplicaRequest: {\n gridSessionId: sessionId,\n },\n } as PostRepoV1GridSessionSessionIdReplicaRequest),\n onSuccess: async (replicaId, sessionId, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getGridSessionListKey(),\n })\n if (options?.onSuccess) {\n await options.onSuccess(replicaId, sessionId, ctx)\n }\n },\n })\n}\n\nexport function useDeleteGridSession(\n options?: Partial<UseMutationOptions<void, SynapseClientError, string>>,\n) {\n const queryClient = useQueryClient()\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, string>({\n ...options,\n mutationFn: (sessionId: string) =>\n synapseClient.gridServicesClient.deleteRepoV1GridSessionSessionId({\n sessionId,\n }),\n onSuccess: async (updatedClient, sessionId, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getGridSessionListKey(),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedClient, sessionId, ctx)\n }\n },\n })\n}\n\n/**\n * Get the queryOptions to request list of Grid sessions. For an infinite query, use `useGetGridSessionsInfinite`\n * @param request\n * @param context\n */\nexport const getGridSessionsQuery = (\n request: ListGridSessionsRequest,\n context: {\n keyFactory: KeyFactory\n synapseClient: SynapseClient\n },\n) =>\n queryOptions({\n queryKey: context.keyFactory.getGridSessionListKey(request),\n queryFn: () =>\n context.synapseClient.gridServicesClient.postRepoV1GridSessionList({\n listGridSessionsRequest: request,\n }),\n })\n\nexport function useGetGridSessionsInfinite<\n TData = InfiniteData<ListGridSessionsResponse>,\n>(\n request: Omit<ListGridSessionsRequest, 'nextPageToken'>,\n options?: Partial<\n UseInfiniteQueryOptions<\n ListGridSessionsResponse,\n SynapseClientError,\n TData,\n QueryKey,\n ListGridSessionsResponse['nextPageToken']\n >\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useInfiniteQuery<\n ListGridSessionsResponse,\n SynapseClientError,\n TData,\n QueryKey,\n ListGridSessionsResponse['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.getGridSessionListKey(request),\n queryFn: async context =>\n await synapseClient.gridServicesClient.postRepoV1GridSessionList({\n listGridSessionsRequest: {\n ...request,\n nextPageToken: context.pageParam,\n },\n }),\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n\nexport function getGridSessionQuery(\n sessionId: string,\n context: SynapseQueriesContext,\n) {\n const { keyFactory, synapseClient } = context\n return queryOptions<GridSession, SynapseClientError>({\n queryKey: keyFactory.getGridSessionKey(sessionId),\n queryFn: () =>\n synapseClient.gridServicesClient.getRepoV1GridSessionSessionId({\n sessionId: sessionId,\n }),\n })\n}\n\nexport function useGetGridSession(\n sessionId: string,\n options?: Partial<UseQueryOptions<GridSession, SynapseClientError>>,\n) {\n const synapseContext = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useQuery<GridSession, SynapseClientError>({\n ...options,\n ...getGridSessionQuery(sessionId, { ...synapseContext, queryClient }),\n })\n}\n\nexport const useCreateGridSession = (\n options?: Partial<\n UseMutationOptions<\n CreateGridResponse,\n SynapseClientError,\n CreateGridRequest\n >\n >,\n) => {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<CreateGridResponse, SynapseClientError, CreateGridRequest>(\n {\n ...options,\n mutationFn: async (request: CreateGridRequest) =>\n await startGridSession(synapseClient, request),\n },\n )\n}\n\n/**\n * Synchronization is a two-phase process that ensures consistency between the user's local\n * changes and external changes made to the source:\n *\n * Phase 1: Schema Synchronization\n * - Synchronizes column definitions between the grid copy and source\n * - Resolves schema conflicts\n *\n * Phase 2: Row Synchronization\n * - Synchronizes row data using the final schema from Phase 1\n * - Merges cell-level changes when rows conflict\n * - Pushes user changes from copy to source\n * - Pulls external changes from source to copy\n *\n * @see {@link https://rest-docs.synapse.org/rest/POST/grid/synchronize/async/start.html}\n * @see {@link https://rest-docs.synapse.org/rest/GET/grid/synchronize/async/get/asyncToken.html}\n */\nexport function useSynchronizeGridSession(\n options?: Omit<\n UseMutationOptions<\n SynchronizeGridResponse,\n SynapseClientError,\n Omit<SynchronizeGridRequest, 'concreteType'>\n >,\n 'mutationFn'\n >,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<\n SynchronizeGridResponse,\n SynapseClientError,\n Omit<SynchronizeGridRequest, 'concreteType'>\n >({\n ...options,\n mutationFn: async request => {\n const synchronizeGridRequest: SynchronizeGridRequest = {\n ...request,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.SynchronizeGridRequest',\n }\n\n // Start the async export job\n const asyncJobId =\n await synapseClient.gridServicesClient.postRepoV1GridSynchronizeAsyncStart(\n { synchronizeGridRequest },\n )\n\n // Poll for the async job\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n\n return asyncJobResponse.responseBody as SynchronizeGridResponse\n },\n })\n}\n\n/**\n * Fetches all replicas in a grid session by following pagination tokens.\n * Refetch this query on `replica-connected` or `replica-disconnected` WebSocket events\n * to keep the replica list current.\n */\nexport function useListGridReplicas(\n sessionId: string | undefined,\n options?: Partial<UseQueryOptions<GridReplicaInfo[], SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery<GridReplicaInfo[], SynapseClientError>({\n ...options,\n queryKey: keyFactory.getGridReplicaListKey(sessionId!),\n enabled: !!sessionId && (options?.enabled ?? true),\n queryFn: async () => {\n const replicas: GridReplicaInfo[] = []\n let nextPageToken: string | undefined = undefined\n do {\n const response =\n await synapseClient.gridServicesClient.postRepoV1GridSessionSessionIdReplicaList(\n {\n sessionId: sessionId!,\n listGridReplicasRequest: {\n gridSessionId: sessionId!,\n nextPageToken,\n },\n },\n )\n replicas.push(...(response.page ?? []))\n nextPageToken = response.nextPageToken\n } while (nextPageToken)\n return replicas\n },\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useGridSession.js","names":[],"sources":["../../../src/synapse-queries/grid/useGridSession.ts"],"sourcesContent":["import { KeyFactory } from '@/synapse-queries/index'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport startGridSession from '@/utils/functions/GridApiUtils'\nimport {\n CreateGridRequest,\n CreateGridResponse,\n CreateReplicaResponse,\n GridReplicaInfo,\n GridSession,\n ListGridSessionsRequest,\n ListGridSessionsResponse,\n PostRepoV1GridSessionSessionIdReplicaRequest,\n SynapseClient,\n SynchronizeGridRequest,\n SynchronizeGridResponse,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n InfiniteData,\n QueryKey,\n queryOptions,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { SynapseQueriesContext } from '../types'\n\nexport function useCreateGridReplica(\n options?: Partial<\n UseMutationOptions<CreateReplicaResponse, SynapseClientError, string>\n >,\n) {\n const queryClient = useQueryClient()\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useMutation<CreateReplicaResponse, SynapseClientError, string>({\n ...options,\n mutationFn: (sessionId: string) =>\n synapseClient.gridServicesClient.postRepoV1GridSessionSessionIdReplica({\n sessionId,\n createReplicaRequest: {\n gridSessionId: sessionId,\n },\n } as PostRepoV1GridSessionSessionIdReplicaRequest),\n onSuccess: async (replicaId, sessionId, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getGridSessionListKey(),\n })\n if (options?.onSuccess) {\n await options.onSuccess(replicaId, sessionId, ctx)\n }\n },\n })\n}\n\nexport function useDeleteGridSession(\n options?: Partial<UseMutationOptions<void, SynapseClientError, string>>,\n) {\n const queryClient = useQueryClient()\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, string>({\n ...options,\n mutationFn: (sessionId: string) =>\n synapseClient.gridServicesClient.deleteRepoV1GridSessionSessionId({\n sessionId,\n }),\n onSuccess: async (updatedClient, sessionId, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getGridSessionListKey(),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedClient, sessionId, ctx)\n }\n },\n })\n}\n\n/**\n * Get the queryOptions to request list of Grid sessions. For an infinite query, use `useGetGridSessionsInfinite`\n * @param request\n * @param context\n */\nexport const getGridSessionsQuery = (\n request: ListGridSessionsRequest,\n context: {\n keyFactory: KeyFactory\n synapseClient: SynapseClient\n },\n) =>\n queryOptions({\n queryKey: context.keyFactory.getGridSessionListKey(request),\n queryFn: () =>\n context.synapseClient.gridServicesClient.postRepoV1GridSessionList({\n listGridSessionsRequest: request,\n }),\n })\n\nexport function useGetGridSessionsInfinite<\n TData = InfiniteData<ListGridSessionsResponse>,\n>(\n request: Omit<ListGridSessionsRequest, 'nextPageToken'>,\n options?: Partial<\n UseInfiniteQueryOptions<\n ListGridSessionsResponse,\n SynapseClientError,\n TData,\n QueryKey,\n ListGridSessionsResponse['nextPageToken']\n >\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useInfiniteQuery<\n ListGridSessionsResponse,\n SynapseClientError,\n TData,\n QueryKey,\n ListGridSessionsResponse['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.getGridSessionListKey(request),\n queryFn: async context =>\n await synapseClient.gridServicesClient.postRepoV1GridSessionList({\n listGridSessionsRequest: {\n ...request,\n nextPageToken: context.pageParam,\n },\n }),\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n\nexport function getGridSessionQuery(\n sessionId: string,\n context: SynapseQueriesContext,\n) {\n const { keyFactory, synapseClient } = context\n return queryOptions<GridSession, SynapseClientError>({\n queryKey: keyFactory.getGridSessionKey(sessionId),\n queryFn: () =>\n synapseClient.gridServicesClient.getRepoV1GridSessionSessionId({\n sessionId: sessionId,\n }),\n })\n}\n\nexport function useGetGridSession(\n sessionId: string,\n options?: Partial<UseQueryOptions<GridSession, SynapseClientError>>,\n) {\n const synapseContext = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useQuery<GridSession, SynapseClientError>({\n ...options,\n ...getGridSessionQuery(sessionId, { ...synapseContext, queryClient }),\n })\n}\n\nexport const useCreateGridSession = (\n options?: Partial<\n UseMutationOptions<\n CreateGridResponse,\n SynapseClientError,\n CreateGridRequest\n >\n >,\n) => {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<CreateGridResponse, SynapseClientError, CreateGridRequest>(\n {\n ...options,\n mutationFn: async (request: CreateGridRequest) =>\n await startGridSession(synapseClient, request),\n },\n )\n}\n\n/**\n * Synchronization is a two-phase process that ensures consistency between the user's local\n * changes and external changes made to the source:\n *\n * Phase 1: Schema Synchronization\n * - Synchronizes column definitions between the grid copy and source\n * - Resolves schema conflicts\n *\n * Phase 2: Row Synchronization\n * - Synchronizes row data using the final schema from Phase 1\n * - Merges cell-level changes when rows conflict\n * - Pushes user changes from copy to source\n * - Pulls external changes from source to copy\n *\n * @see {@link https://rest-docs.synapse.org/rest/POST/grid/synchronize/async/start.html}\n * @see {@link https://rest-docs.synapse.org/rest/GET/grid/synchronize/async/get/asyncToken.html}\n */\nexport function useSynchronizeGridSession(\n options?: Omit<\n UseMutationOptions<\n SynchronizeGridResponse,\n SynapseClientError,\n Omit<SynchronizeGridRequest, 'concreteType'>\n >,\n 'mutationFn'\n >,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<\n SynchronizeGridResponse,\n SynapseClientError,\n Omit<SynchronizeGridRequest, 'concreteType'>\n >({\n ...options,\n mutationFn: async request => {\n const synchronizeGridRequest: SynchronizeGridRequest = {\n ...request,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.SynchronizeGridRequest',\n }\n\n // Start the async export job\n const asyncJobId =\n await synapseClient.gridServicesClient.postRepoV1GridSynchronizeAsyncStart(\n { synchronizeGridRequest },\n )\n\n // Poll for the async job\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n\n return asyncJobResponse.responseBody as SynchronizeGridResponse\n },\n })\n}\n\n/**\n * Fetches all replicas in a grid session by following pagination tokens.\n * Refetch this query on `replica-connected` or `replica-disconnected` WebSocket events\n * to keep the replica list current.\n */\nexport function useListGridReplicas(\n sessionId: string | undefined,\n options?: Partial<UseQueryOptions<GridReplicaInfo[], SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery<GridReplicaInfo[], SynapseClientError>({\n ...options,\n queryKey: keyFactory.getGridReplicaListKey(sessionId!),\n enabled: !!sessionId && (options?.enabled ?? true),\n queryFn: async () => {\n const replicas: GridReplicaInfo[] = []\n let nextPageToken: string | undefined = undefined\n do {\n const response =\n await synapseClient.gridServicesClient.postRepoV1GridSessionSessionIdReplicaList(\n {\n sessionId: sessionId!,\n listGridReplicasRequest: {\n gridSessionId: sessionId!,\n nextPageToken,\n },\n },\n )\n replicas.push(...(response.page ?? []))\n nextPageToken = response.nextPageToken\n } while (nextPageToken)\n return replicas\n },\n })\n}\n"],"mappings":";;;;;AAgCA,SAAgB,EACd,GAGA;CACA,IAAM,IAAc,GAAgB,EAC9B,EAAE,eAAY,qBAAkB,GAAmB;AAEzD,QAAO,EAA+D;EACpE,GAAG;EACH,aAAa,MACX,EAAc,mBAAmB,sCAAsC;GACrE;GACA,sBAAsB,EACpB,eAAe,GAChB;GACF,CAAiD;EACpD,WAAW,OAAO,GAAW,GAAW,MAAQ;AAI9C,GAHA,MAAM,EAAY,kBAAkB,EAClC,UAAU,EAAW,uBAAuB,EAC7C,CAAC,EACE,GAAS,aACX,MAAM,EAAQ,UAAU,GAAW,GAAW,EAAI;;EAGvD,CAAC;;AAGJ,SAAgB,EACd,GACA;CACA,IAAM,IAAc,GAAgB,EAC9B,EAAE,eAAY,qBAAkB,GAAmB;AAEzD,QAAO,EAA8C;EACnD,GAAG;EACH,aAAa,MACX,EAAc,mBAAmB,iCAAiC,EAChE,cACD,CAAC;EACJ,WAAW,OAAO,GAAe,GAAW,MAAQ;AAIlD,GAHA,MAAM,EAAY,kBAAkB,EAClC,UAAU,EAAW,uBAAuB,EAC7C,CAAC,EACE,GAAS,aACX,MAAM,EAAQ,UAAU,GAAe,GAAW,EAAI;;EAG3D,CAAC;;AAQJ,IAAa,KACX,GACA,MAKA,EAAa;CACX,UAAU,EAAQ,WAAW,sBAAsB,EAAQ;CAC3D,eACE,EAAQ,cAAc,mBAAmB,0BAA0B,EACjE,yBAAyB,GAC1B,CAAC;CACL,CAAC;AAEJ,SAAgB,EAGd,GACA,GASA;CACA,IAAM,EAAE,eAAY,qBAAkB,GAAmB;AAEzD,QAAO,EAML;EACA,GAAG;EACH,UAAU,EAAW,sBAAsB,EAAQ;EACnD,SAAS,OAAM,MACb,MAAM,EAAc,mBAAmB,0BAA0B,EAC/D,yBAAyB;GACvB,GAAG;GACH,eAAe,EAAQ;GACxB,EACF,CAAC;EACJ,kBAAkB,KAAA;EAClB,mBAAkB,MAAQ,EAAK;EAChC,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,eAAY,qBAAkB;AACtC,QAAO,EAA8C;EACnD,UAAU,EAAW,kBAAkB,EAAU;EACjD,eACE,EAAc,mBAAmB,8BAA8B,EAClD,cACZ,CAAC;EACL,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,IAAiB,GAAmB,EACpC,IAAc,GAAgB;AAEpC,QAAO,EAA0C;EAC/C,GAAG;EACH,GAAG,EAAoB,GAAW;GAAE,GAAG;GAAgB;GAAa,CAAC;EACtE,CAAC;;AAGJ,IAAa,KACX,MAOG;CACH,IAAM,EAAE,qBAAkB,GAAmB;AAE7C,QAAO,EACL;EACE,GAAG;EACH,YAAY,OAAO,MACjB,MAAM,EAAiB,GAAe,EAAQ;EACjD,CACF;;AAoBH,SAAgB,EACd,GAQA;CACA,IAAM,EAAE,qBAAkB,GAAmB;AAE7C,QAAO,EAIL;EACA,GAAG;EACH,YAAY,OAAM,MAAW;GAC3B,IAAM,IAAiD;IACrD,GAAG;IACH,cACE;IACH,EAGK,IACJ,MAAM,EAAc,mBAAmB,oCACrC,EAAE,2BAAwB,CAC3B;AAWH,WAAO,MARwB,QAC7B,EAAc,8BAA8B,8BAC1C,EACE,OAAO,EAAW,OACnB,CACF,CACF,EAEuB;;EAE3B,CAAC;;AAQJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,eAAY,qBAAkB,GAAmB;AAEzD,QAAO,EAAgD;EACrD,GAAG;EACH,UAAU,EAAW,sBAAsB,EAAW;EACtD,SAAS,CAAC,CAAC,MAAc,GAAS,WAAW;EAC7C,SAAS,YAAY;GACnB,IAAM,IAA8B,EAAE,EAClC;AACJ,MAAG;IACD,IAAM,IACJ,MAAM,EAAc,mBAAmB,0CACrC;KACa;KACX,yBAAyB;MACvB,eAAe;MACf;MACD;KACF,CACF;AAEH,IADA,EAAS,KAAK,GAAI,EAAS,QAAQ,EAAE,CAAE,EACvC,IAAgB,EAAS;YAClB;AACT,UAAO;;EAEV,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useImportCsvIntoGrid.js","names":[],"sources":["../../../src/synapse-queries/grid/useImportCsvIntoGrid.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils/index'\nimport {\n GridCsvImportRequest,\n GridCsvImportResponse,\n SynapseClientError,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\n\nexport function useImportCsvIntoGrid(\n options?: Partial<\n UseMutationOptions<\n GridCsvImportResponse,\n SynapseClientError,\n GridCsvImportRequest\n >\n >,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<\n GridCsvImportResponse,\n SynapseClientError,\n GridCsvImportRequest\n >({\n ...options,\n mutationFn: async request => {\n const asyncJobId =\n await synapseClient.gridServicesClient.postRepoV1GridImportCsvAsyncStart(\n {\n gridCsvImportRequest: request,\n },\n )\n\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n return asyncJobResponse.responseBody as unknown as GridCsvImportResponse\n },\n })\n}\n"],"mappings":";;;;;AASA,SAAgB,EACd,GAOA;CACA,IAAM,EAAE,qBAAkB,GAAmB;AAE7C,QAAO,EAIL;EACA,GAAG;EACH,YAAY,OAAM,MAAW;GAC3B,IAAM,IACJ,MAAM,EAAc,mBAAmB,kCACrC,EACE,sBAAsB,GACvB,CACF;AASH,
|
|
1
|
+
{"version":3,"file":"useImportCsvIntoGrid.js","names":[],"sources":["../../../src/synapse-queries/grid/useImportCsvIntoGrid.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils/index'\nimport {\n GridCsvImportRequest,\n GridCsvImportResponse,\n SynapseClientError,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\n\nexport function useImportCsvIntoGrid(\n options?: Partial<\n UseMutationOptions<\n GridCsvImportResponse,\n SynapseClientError,\n GridCsvImportRequest\n >\n >,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<\n GridCsvImportResponse,\n SynapseClientError,\n GridCsvImportRequest\n >({\n ...options,\n mutationFn: async request => {\n const asyncJobId =\n await synapseClient.gridServicesClient.postRepoV1GridImportCsvAsyncStart(\n {\n gridCsvImportRequest: request,\n },\n )\n\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n return asyncJobResponse.responseBody as unknown as GridCsvImportResponse\n },\n })\n}\n"],"mappings":";;;;;AASA,SAAgB,EACd,GAOA;CACA,IAAM,EAAE,qBAAkB,GAAmB;AAE7C,QAAO,EAIL;EACA,GAAG;EACH,YAAY,OAAM,MAAW;GAC3B,IAAM,IACJ,MAAM,EAAc,mBAAmB,kCACrC,EACE,sBAAsB,GACvB,CACF;AASH,WAAO,MAPwB,QAC7B,EAAc,8BAA8B,8BAC1C,EACE,OAAO,EAAW,OACnB,CACF,CACF,EACuB;;EAE3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSubscription.js","names":[],"sources":["../../../src/synapse-queries/subscription/useSubscription.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n Direction,\n SortByType,\n SubscriberPagedResults,\n Subscription,\n SubscriptionObjectType,\n SubscriptionPagedResults,\n SubscriptionQuery,\n SubscriptionRequest,\n Topic,\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 { isEmpty } from 'lodash-es'\nimport { useCallback } from 'react'\n\nexport function useGetSubscribers(\n topic: Topic,\n options?: Partial<\n UseQueryOptions<SubscriberPagedResults, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getSubscribersQueryKey(\n topic.objectId,\n topic.objectType,\n ),\n queryFn: () => SynapseClient.getSubscribers(accessToken, topic),\n })\n}\n\nexport function useGetSubscription(\n objectId: string,\n objectType: SubscriptionObjectType,\n options?: Partial<UseQueryOptions<Subscription | null, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const subscriptionRequest: SubscriptionRequest = {\n objectType: objectType,\n idList: [objectId],\n sortByType: SortByType.OBJECT_ID,\n sortDirection: Direction.ASC,\n }\n const subscriptionList = await SynapseClient.postSubscriptionList(\n accessToken,\n subscriptionRequest,\n )\n\n if (isEmpty(subscriptionList.results)) {\n return null\n }\n return subscriptionList.results[0]\n }\n return useQuery<Subscription | null, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getSubscriptionQueryKey(objectId, objectType),\n queryFn,\n })\n}\n\nexport function useGetAllSubscriptions<\n TData = InfiniteData<SubscriptionPagedResults>,\n>(\n query: SubscriptionQuery,\n options?: Partial<\n UseInfiniteQueryOptions<\n SubscriptionPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n queryKeyOverride?: QueryKey,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useInfiniteQuery<\n SubscriptionPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n queryKey: queryKeyOverride ?? keyFactory.getAllSubscriptionsQueryKey(query),\n queryFn: async context => {\n const offset = context.pageParam\n const subscriptions = await SynapseClient.getAllSubscriptions(\n accessToken,\n 10,\n offset,\n query,\n )\n subscriptions.results.forEach(subscription => {\n queryClient.setQueryData(\n keyFactory.getSubscriptionQueryKey(\n subscription.objectId,\n subscription.objectType,\n ),\n subscription,\n )\n })\n return subscriptions\n },\n initialPageParam: undefined,\n getNextPageParam: (page, allPages) => {\n const totalNumberOfFetchedResults = allPages.flatMap(\n page => page.results,\n ).length\n if (page.totalNumberOfResults > totalNumberOfFetchedResults) {\n return totalNumberOfFetchedResults\n }\n return undefined\n },\n })\n}\n\nexport function usePostSubscription(\n options?: Partial<\n UseMutationOptions<Subscription, SynapseClientError, Topic>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<Subscription, SynapseClientError, Topic>({\n ...options,\n mutationFn: (topic: Topic) =>\n SynapseClient.postSubscription(accessToken, topic),\n onSuccess: async (updatedSubscription, variables, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllSubscriptionsQueryKey(),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getSubscriptionQueryKey(\n variables.objectId,\n variables.objectType,\n ),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getSubscribersQueryKey(\n variables.objectId,\n variables.objectType,\n ),\n }),\n ])\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedSubscription, variables, ctx)\n }\n },\n })\n}\n\nexport function useDeleteSubscription(\n options?: Partial<UseMutationOptions<void, SynapseClientError, Subscription>>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, Subscription>({\n ...options,\n mutationFn: (subscription: Subscription) =>\n SynapseClient.deleteSubscription(\n accessToken,\n subscription.subscriptionId,\n ),\n onSuccess: async (updatedSubscription, variables, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllSubscriptionsQueryKey(),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getSubscriptionQueryKey(\n variables.objectId,\n variables.objectType,\n ),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getSubscribersQueryKey(\n variables.objectId,\n variables.objectType,\n ),\n }),\n ])\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedSubscription, variables, ctx)\n }\n },\n })\n}\n\nexport const useSubscription = (\n objectId: string,\n objectType: SubscriptionObjectType,\n) => {\n const { data: subscription, isLoading: isLoadingGet } = useGetSubscription(\n objectId,\n objectType,\n )\n const { mutate: postSubscription, isPending: isPendingCreate } =\n usePostSubscription()\n const { mutate: deleteSubscription, isPending: isPendingDelete } =\n useDeleteSubscription()\n\n const isLoading: boolean = isLoadingGet || isPendingCreate || isPendingDelete\n const toggleSubscribed = useCallback(() => {\n if (subscription) {\n deleteSubscription(subscription)\n } else {\n postSubscription({ objectId, objectType })\n }\n }, [deleteSubscription, objectId, objectType, postSubscription, subscription])\n\n return {\n isLoading,\n subscription,\n toggleSubscribed,\n isSubscribed: Boolean(subscription),\n }\n}\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useSubscription.js","names":[],"sources":["../../../src/synapse-queries/subscription/useSubscription.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n Direction,\n SortByType,\n SubscriberPagedResults,\n Subscription,\n SubscriptionObjectType,\n SubscriptionPagedResults,\n SubscriptionQuery,\n SubscriptionRequest,\n Topic,\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 { isEmpty } from 'lodash-es'\nimport { useCallback } from 'react'\n\nexport function useGetSubscribers(\n topic: Topic,\n options?: Partial<\n UseQueryOptions<SubscriberPagedResults, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getSubscribersQueryKey(\n topic.objectId,\n topic.objectType,\n ),\n queryFn: () => SynapseClient.getSubscribers(accessToken, topic),\n })\n}\n\nexport function useGetSubscription(\n objectId: string,\n objectType: SubscriptionObjectType,\n options?: Partial<UseQueryOptions<Subscription | null, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryFn = async () => {\n const subscriptionRequest: SubscriptionRequest = {\n objectType: objectType,\n idList: [objectId],\n sortByType: SortByType.OBJECT_ID,\n sortDirection: Direction.ASC,\n }\n const subscriptionList = await SynapseClient.postSubscriptionList(\n accessToken,\n subscriptionRequest,\n )\n\n if (isEmpty(subscriptionList.results)) {\n return null\n }\n return subscriptionList.results[0]\n }\n return useQuery<Subscription | null, SynapseClientError>({\n ...options,\n queryKey: keyFactory.getSubscriptionQueryKey(objectId, objectType),\n queryFn,\n })\n}\n\nexport function useGetAllSubscriptions<\n TData = InfiniteData<SubscriptionPagedResults>,\n>(\n query: SubscriptionQuery,\n options?: Partial<\n UseInfiniteQueryOptions<\n SubscriptionPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n queryKeyOverride?: QueryKey,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useInfiniteQuery<\n SubscriptionPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n queryKey: queryKeyOverride ?? keyFactory.getAllSubscriptionsQueryKey(query),\n queryFn: async context => {\n const offset = context.pageParam\n const subscriptions = await SynapseClient.getAllSubscriptions(\n accessToken,\n 10,\n offset,\n query,\n )\n subscriptions.results.forEach(subscription => {\n queryClient.setQueryData(\n keyFactory.getSubscriptionQueryKey(\n subscription.objectId,\n subscription.objectType,\n ),\n subscription,\n )\n })\n return subscriptions\n },\n initialPageParam: undefined,\n getNextPageParam: (page, allPages) => {\n const totalNumberOfFetchedResults = allPages.flatMap(\n page => page.results,\n ).length\n if (page.totalNumberOfResults > totalNumberOfFetchedResults) {\n return totalNumberOfFetchedResults\n }\n return undefined\n },\n })\n}\n\nexport function usePostSubscription(\n options?: Partial<\n UseMutationOptions<Subscription, SynapseClientError, Topic>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<Subscription, SynapseClientError, Topic>({\n ...options,\n mutationFn: (topic: Topic) =>\n SynapseClient.postSubscription(accessToken, topic),\n onSuccess: async (updatedSubscription, variables, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllSubscriptionsQueryKey(),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getSubscriptionQueryKey(\n variables.objectId,\n variables.objectType,\n ),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getSubscribersQueryKey(\n variables.objectId,\n variables.objectType,\n ),\n }),\n ])\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedSubscription, variables, ctx)\n }\n },\n })\n}\n\nexport function useDeleteSubscription(\n options?: Partial<UseMutationOptions<void, SynapseClientError, Subscription>>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, Subscription>({\n ...options,\n mutationFn: (subscription: Subscription) =>\n SynapseClient.deleteSubscription(\n accessToken,\n subscription.subscriptionId,\n ),\n onSuccess: async (updatedSubscription, variables, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllSubscriptionsQueryKey(),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getSubscriptionQueryKey(\n variables.objectId,\n variables.objectType,\n ),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getSubscribersQueryKey(\n variables.objectId,\n variables.objectType,\n ),\n }),\n ])\n\n if (options?.onSuccess) {\n await options.onSuccess(updatedSubscription, variables, ctx)\n }\n },\n })\n}\n\nexport const useSubscription = (\n objectId: string,\n objectType: SubscriptionObjectType,\n) => {\n const { data: subscription, isLoading: isLoadingGet } = useGetSubscription(\n objectId,\n objectType,\n )\n const { mutate: postSubscription, isPending: isPendingCreate } =\n usePostSubscription()\n const { mutate: deleteSubscription, isPending: isPendingDelete } =\n useDeleteSubscription()\n\n const isLoading: boolean = isLoadingGet || isPendingCreate || isPendingDelete\n const toggleSubscribed = useCallback(() => {\n if (subscription) {\n deleteSubscription(subscription)\n } else {\n postSubscription({ objectId, objectType })\n }\n }, [deleteSubscription, objectId, objectType, postSubscription, subscription])\n\n return {\n isLoading,\n subscription,\n toggleSubscribed,\n isSubscribed: Boolean(subscription),\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetCsvPreview.js","names":[],"sources":["../../../src/synapse-queries/table/useGetCsvPreview.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils/index'\nimport {\n UploadToTablePreviewRequest,\n UploadToTablePreviewResult,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { skipToken, useQuery } from '@tanstack/react-query'\n\nexport function useGetCsvPreview(request: UploadToTablePreviewRequest) {\n const { synapseClient, keyFactory } = useSynapseContext()\n\n return useQuery({\n queryKey: keyFactory.getCsvPreviewQueryKey(request),\n queryFn: request?.uploadFileHandleId\n ? async () => {\n const asyncJobId =\n await synapseClient.tableServicesClient.postRepoV1TableUploadCsvPreviewAsyncStart(\n { uploadToTablePreviewRequest: request },\n )\n\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n return asyncJobResponse.responseBody as UploadToTablePreviewResult\n }\n : skipToken,\n // This request is deterministic and the response will never change.\n staleTime: Infinity,\n gcTime: Infinity,\n })\n}\n"],"mappings":";;;;;AAQA,SAAgB,EAAiB,GAAsC;CACrE,IAAM,EAAE,kBAAe,kBAAe,GAAmB;AAEzD,QAAO,EAAS;EACd,UAAU,EAAW,sBAAsB,EAAQ;EACnD,SAAS,GAAS,qBACd,YAAY;GACV,IAAM,IACJ,MAAM,EAAc,oBAAoB,0CACtC,EAAE,6BAA6B,GAAS,CACzC;AASH,
|
|
1
|
+
{"version":3,"file":"useGetCsvPreview.js","names":[],"sources":["../../../src/synapse-queries/table/useGetCsvPreview.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils/index'\nimport {\n UploadToTablePreviewRequest,\n UploadToTablePreviewResult,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { skipToken, useQuery } from '@tanstack/react-query'\n\nexport function useGetCsvPreview(request: UploadToTablePreviewRequest) {\n const { synapseClient, keyFactory } = useSynapseContext()\n\n return useQuery({\n queryKey: keyFactory.getCsvPreviewQueryKey(request),\n queryFn: request?.uploadFileHandleId\n ? async () => {\n const asyncJobId =\n await synapseClient.tableServicesClient.postRepoV1TableUploadCsvPreviewAsyncStart(\n { uploadToTablePreviewRequest: request },\n )\n\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n return asyncJobResponse.responseBody as UploadToTablePreviewResult\n }\n : skipToken,\n // This request is deterministic and the response will never change.\n staleTime: Infinity,\n gcTime: Infinity,\n })\n}\n"],"mappings":";;;;;AAQA,SAAgB,EAAiB,GAAsC;CACrE,IAAM,EAAE,kBAAe,kBAAe,GAAmB;AAEzD,QAAO,EAAS;EACd,UAAU,EAAW,sBAAsB,EAAQ;EACnD,SAAS,GAAS,qBACd,YAAY;GACV,IAAM,IACJ,MAAM,EAAc,oBAAoB,0CACtC,EAAE,6BAA6B,GAAS,CACzC;AASH,WAAO,MAPwB,QAC7B,EAAc,8BAA8B,8BAC1C,EACE,OAAO,EAAW,OACnB,CACF,CACF,EACuB;MAE1B;EAEJ,WAAW;EACX,QAAQ;EACT,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableUpdateTransaction.js","names":[],"sources":["../../../src/synapse-queries/table/useTableUpdateTransaction.ts"],"sourcesContent":["import { invalidateAllQueriesForEntity } from '@/synapse-queries/index'\nimport { useSynapseContext } from '@/utils/index'\nimport {\n SynapseClientError,\n TableUpdateTransactionRequest,\n TableUpdateTransactionResponse,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport {\n useMutation,\n UseMutationOptions,\n useQueryClient,\n} from '@tanstack/react-query'\n\nexport function useTableUpdateTransaction(\n options?: Partial<\n UseMutationOptions<\n TableUpdateTransactionResponse,\n SynapseClientError,\n TableUpdateTransactionRequest\n >\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useMutation<\n TableUpdateTransactionResponse,\n SynapseClientError,\n TableUpdateTransactionRequest\n >({\n ...options,\n mutationFn: async tableUpdateTransactionRequest => {\n const asyncJobId =\n await synapseClient.tableServicesClient.postRepoV1EntityIdTableTransactionAsyncStart(\n {\n id: tableUpdateTransactionRequest.entityId!,\n tableUpdateTransactionRequest,\n },\n )\n\n const response = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n\n return response.responseBody as TableUpdateTransactionResponse\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"],"mappings":";;;;;;;AAcA,SAAgB,EACd,GAOA;CACA,IAAM,EAAE,eAAY,qBAAkB,GAAmB,EACnD,IAAc,GAAgB;AAEpC,QAAO,EAIL;EACA,GAAG;EACH,YAAY,OAAM,MAAiC;GACjD,IAAM,IACJ,MAAM,EAAc,oBAAoB,6CACtC;IACE,IAAI,EAA8B;IAClC;IACD,CACF;AAUH,
|
|
1
|
+
{"version":3,"file":"useTableUpdateTransaction.js","names":[],"sources":["../../../src/synapse-queries/table/useTableUpdateTransaction.ts"],"sourcesContent":["import { invalidateAllQueriesForEntity } from '@/synapse-queries/index'\nimport { useSynapseContext } from '@/utils/index'\nimport {\n SynapseClientError,\n TableUpdateTransactionRequest,\n TableUpdateTransactionResponse,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport {\n useMutation,\n UseMutationOptions,\n useQueryClient,\n} from '@tanstack/react-query'\n\nexport function useTableUpdateTransaction(\n options?: Partial<\n UseMutationOptions<\n TableUpdateTransactionResponse,\n SynapseClientError,\n TableUpdateTransactionRequest\n >\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useMutation<\n TableUpdateTransactionResponse,\n SynapseClientError,\n TableUpdateTransactionRequest\n >({\n ...options,\n mutationFn: async tableUpdateTransactionRequest => {\n const asyncJobId =\n await synapseClient.tableServicesClient.postRepoV1EntityIdTableTransactionAsyncStart(\n {\n id: tableUpdateTransactionRequest.entityId!,\n tableUpdateTransactionRequest,\n },\n )\n\n const response = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n\n return response.responseBody as TableUpdateTransactionResponse\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"],"mappings":";;;;;;;AAcA,SAAgB,EACd,GAOA;CACA,IAAM,EAAE,eAAY,qBAAkB,GAAmB,EACnD,IAAc,GAAgB;AAEpC,QAAO,EAIL;EACA,GAAG;EACH,YAAY,OAAM,MAAiC;GACjD,IAAM,IACJ,MAAM,EAAc,oBAAoB,6CACtC;IACE,IAAI,EAA8B;IAClC;IACD,CACF;AAUH,WAAO,MARgB,QACrB,EAAc,8BAA8B,8BAC1C,EACE,OAAO,EAAW,OACnB,CACF,CACF,EAEe;;EAElB,WAAW,OAAO,GAAU,GAAW,MAAQ;AAO7C,GANA,MAAM,EACJ,GACA,GACA,EAAU,SACX,EAEG,GAAS,aACX,MAAM,EAAQ,UAAU,GAAU,GAAW,EAAI;;EAGtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTeamMembers.js","names":[],"sources":["../../../src/synapse-queries/team/useTeamMembers.ts"],"sourcesContent":["import SynapseClient, { deleteMemberFromTeam } from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n Count,\n MembershipInvitation as MembershipInvitationGenerated,\n} from '@sage-bionetworks/synapse-client'\nimport {\n CreateMembershipInvitationRequest,\n CreateMembershipRequestRequest,\n MembershipInvitation,\n MembershipRequest,\n PaginatedResults,\n TeamMember,\n TeamMembershipStatus,\n} from '@sage-bionetworks/synapse-types'\nimport {\n queryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { SynapseQueriesContext } from '../types'\nimport { getUserGroupHeaderQuery } from '../user'\n\nexport function useGetTeamMembers(\n teamId: string | number,\n options?: Partial<\n UseQueryOptions<PaginatedResults<TeamMember>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getTeamMembersQueryKey(String(teamId)),\n queryFn: () => SynapseClient.getTeamMembers(accessToken, teamId, '', 50, 0),\n })\n}\n\nexport function useGetTeamMemberCount(\n teamId: string,\n options?: Partial<UseQueryOptions<Count, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getTeamMemberCountQueryKey(String(teamId)),\n queryFn: () =>\n synapseClient.teamServicesClient.getRepoV1TeamMembersCountId({\n id: teamId,\n }),\n })\n}\n\nexport function getIsUserMemberOfTeamQuery(\n teamId: string,\n userId: string,\n context: SynapseQueriesContext,\n) {\n const { accessToken, keyFactory } = context\n return queryOptions<TeamMember | null, SynapseClientError>({\n queryKey: keyFactory.getIsUserMemberOfTeamQueryKey(teamId, userId),\n queryFn: () =>\n SynapseClient.getIsUserMemberOfTeam(teamId, userId, accessToken),\n })\n}\n\nexport function useGetIsUserMemberOfTeam(\n teamId: string,\n userId: string,\n options?: Partial<UseQueryOptions<TeamMember | null, SynapseClientError>>,\n) {\n const synapseContext = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useQuery({\n ...options,\n ...getIsUserMemberOfTeamQuery(teamId, userId, {\n ...synapseContext,\n queryClient,\n }),\n })\n}\n\n/**\n * Checks if the passed principalId is either the userId or a team that the userId is a member of.\n *\n * @param userId the userId of the current user\n * @param principalId the principalId of the share (either a userId or a teamId)\n * @param context context required to issue the request(s)\n * @returns true if the principalId is either the userId or a team that the userId is a member of. Returns false otherwise.\n */\nexport function getIsPrincipalIdUserOrMemberOfTeamQuery(\n userId: string,\n principalId: string,\n context: SynapseQueriesContext,\n) {\n const { keyFactory, queryClient } = context\n return queryOptions<boolean, SynapseClientError>({\n queryKey: keyFactory.getIsPrincipalIdSelfOrTeamMemberQueryKey(\n principalId,\n userId,\n ),\n queryFn: async () => {\n // Is the principalId the userId?\n if (principalId.trim() === userId.trim()) {\n return true\n }\n // Is the principalId a team ID?\n const principalUserGroupResult = await queryClient.fetchQuery(\n getUserGroupHeaderQuery(principalId, context),\n )\n if (\n !principalUserGroupResult ||\n principalUserGroupResult?.isIndividual === true\n ) {\n return false\n }\n\n // Is the user a member of the team?\n const teamMembership = await queryClient.fetchQuery(\n getIsUserMemberOfTeamQuery(principalId, userId, context),\n )\n return teamMembership !== null\n },\n })\n}\n\n/**\n * Checks if the passed principalId is either the userId or a team that the userId is a member of.\n *\n * @param userId the userId of the current user\n * @param principalId the principalId of the share (either a userId or a teamId)\n * @param options react-query options\n * @returns true if the principalId is either the userId or a team that the userId is a member of. Returns false otherwise.\n */\nexport function useGetIsPrincipalIdUserOrMemberOfTeam(\n userId: string,\n principalId: string,\n options?: Partial<UseQueryOptions<boolean, SynapseClientError>>,\n) {\n const synapseContext = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useQuery({\n ...options,\n ...getIsPrincipalIdUserOrMemberOfTeamQuery(userId, principalId, {\n ...synapseContext,\n queryClient,\n }),\n })\n}\n\nexport function useGetMembershipStatus(\n teamId: string,\n userId: string,\n options?: Partial<UseQueryOptions<TeamMembershipStatus, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getMembershipStatusQueryKey(teamId, userId),\n queryFn: () =>\n SynapseClient.getMembershipStatus(teamId, userId, accessToken),\n })\n}\n\nexport function useGetAllOpenMembershipInvitations(\n userId: string,\n options?: Partial<\n UseQueryOptions<MembershipInvitation[], SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getAllOpenMembershipInvitationsForUserQueryKey(userId),\n queryFn: () =>\n SynapseClient.getAllOpenMembershipInvitationsForUser(\n userId,\n accessToken!,\n ),\n })\n}\n\nexport function useInviteUserToTeam(\n options?: Partial<\n UseMutationOptions<\n MembershipInvitation,\n SynapseClientError,\n CreateMembershipInvitationRequest\n >\n >,\n) {\n const { accessToken } = useSynapseContext()\n\n return useMutation<\n MembershipInvitation,\n SynapseClientError,\n CreateMembershipInvitationRequest\n >({\n ...options,\n mutationFn: invitation =>\n SynapseClient.createMembershipInvitation(invitation, accessToken),\n })\n}\n\nexport function useAddMemberToTeam(\n options?: Partial<\n UseMutationOptions<\n void,\n SynapseClientError,\n { teamId: string; userId: string }\n >\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n void,\n SynapseClientError,\n { teamId: string; userId: string }\n >({\n ...options,\n mutationFn: ({ teamId, userId }) =>\n SynapseClient.addTeamMemberAsAuthenticatedUserOrAdmin(\n teamId,\n userId,\n accessToken!,\n ),\n onSuccess: async (data, variables, ctx) => {\n if (options?.onSuccess) {\n options.onSuccess(data, variables, ctx)\n }\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllOpenMembershipInvitationsQueryKey(),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getMembershipStatusQueryKey(\n variables.teamId,\n variables.userId,\n ),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getIsUserMemberOfTeamQueryKey(\n variables.teamId,\n variables.userId,\n ),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getTeamMembersQueryKey(variables.teamId),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllSubmissionTeamsQueryKeys(),\n }),\n ])\n },\n })\n}\n\nexport function useRequestToJoinTeam(\n options: Partial<\n UseMutationOptions<\n MembershipRequest,\n SynapseClientError,\n CreateMembershipRequestRequest\n >\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n MembershipRequest,\n SynapseClientError,\n CreateMembershipRequestRequest\n >({\n ...options,\n mutationFn: request =>\n SynapseClient.createMembershipRequest(request, accessToken),\n onSuccess: async (data, variables, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getMembershipStatusQueryKey(\n variables.teamId,\n variables.userId,\n ),\n })\n if (options.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\n/**\n * Delete an invitation.\n * Note: The client must be an administrator of the Team referenced by the invitation or the invitee to make this request.\n *\n * @see https://rest-docs.synapse.org/rest/DELETE/membershipInvitation/id.html\n */\nexport function useDeleteMembershipInvitation(\n options?: Partial<\n UseMutationOptions<\n void,\n SynapseClientError,\n { membershipInvitation: MembershipInvitationGenerated }\n >\n >,\n) {\n const queryClient = useQueryClient()\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useMutation<\n void,\n SynapseClientError,\n { membershipInvitation: MembershipInvitationGenerated }\n >({\n ...options,\n mutationFn: ({ membershipInvitation }) =>\n synapseClient.membershipInvitationServicesClient.deleteRepoV1MembershipInvitationId(\n { id: membershipInvitation.id! },\n ),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllOpenMembershipInvitationsQueryKey(),\n }),\n // MembershipStatus includes `hasOpenInvitation`, which may change after deleting an invitation\n queryClient.invalidateQueries({\n queryKey: keyFactory.getMembershipStatusQueryKey(\n variables.membershipInvitation.teamId!,\n variables.membershipInvitation.inviteeId,\n ),\n }),\n ])\n if (options?.onSuccess) {\n await options.onSuccess(data, variables, ctx)\n }\n },\n })\n}\n\nexport type TeamMembershipParam = {\n teamId: string\n userId: string\n}\n\nexport function useDeleteTeamMembership(\n options?: Partial<\n UseMutationOptions<void, SynapseClientError, TeamMembershipParam>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, TeamMembershipParam>({\n ...options,\n mutationFn: variables =>\n deleteMemberFromTeam(variables.teamId, variables.userId, accessToken),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getIsUserMemberOfTeamQueryKey(\n variables.teamId,\n variables.userId,\n ),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getMembershipStatusQueryKey(\n variables.teamId,\n variables.userId,\n ),\n }),\n ])\n if (options?.onSuccess) {\n await options.onSuccess(data, variables, ctx)\n }\n },\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTeamMembers.js","names":[],"sources":["../../../src/synapse-queries/team/useTeamMembers.ts"],"sourcesContent":["import SynapseClient, { deleteMemberFromTeam } from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n Count,\n MembershipInvitation as MembershipInvitationGenerated,\n} from '@sage-bionetworks/synapse-client'\nimport {\n CreateMembershipInvitationRequest,\n CreateMembershipRequestRequest,\n MembershipInvitation,\n MembershipRequest,\n PaginatedResults,\n TeamMember,\n TeamMembershipStatus,\n} from '@sage-bionetworks/synapse-types'\nimport {\n queryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { SynapseQueriesContext } from '../types'\nimport { getUserGroupHeaderQuery } from '../user'\n\nexport function useGetTeamMembers(\n teamId: string | number,\n options?: Partial<\n UseQueryOptions<PaginatedResults<TeamMember>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getTeamMembersQueryKey(String(teamId)),\n queryFn: () => SynapseClient.getTeamMembers(accessToken, teamId, '', 50, 0),\n })\n}\n\nexport function useGetTeamMemberCount(\n teamId: string,\n options?: Partial<UseQueryOptions<Count, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getTeamMemberCountQueryKey(String(teamId)),\n queryFn: () =>\n synapseClient.teamServicesClient.getRepoV1TeamMembersCountId({\n id: teamId,\n }),\n })\n}\n\nexport function getIsUserMemberOfTeamQuery(\n teamId: string,\n userId: string,\n context: SynapseQueriesContext,\n) {\n const { accessToken, keyFactory } = context\n return queryOptions<TeamMember | null, SynapseClientError>({\n queryKey: keyFactory.getIsUserMemberOfTeamQueryKey(teamId, userId),\n queryFn: () =>\n SynapseClient.getIsUserMemberOfTeam(teamId, userId, accessToken),\n })\n}\n\nexport function useGetIsUserMemberOfTeam(\n teamId: string,\n userId: string,\n options?: Partial<UseQueryOptions<TeamMember | null, SynapseClientError>>,\n) {\n const synapseContext = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useQuery({\n ...options,\n ...getIsUserMemberOfTeamQuery(teamId, userId, {\n ...synapseContext,\n queryClient,\n }),\n })\n}\n\n/**\n * Checks if the passed principalId is either the userId or a team that the userId is a member of.\n *\n * @param userId the userId of the current user\n * @param principalId the principalId of the share (either a userId or a teamId)\n * @param context context required to issue the request(s)\n * @returns true if the principalId is either the userId or a team that the userId is a member of. Returns false otherwise.\n */\nexport function getIsPrincipalIdUserOrMemberOfTeamQuery(\n userId: string,\n principalId: string,\n context: SynapseQueriesContext,\n) {\n const { keyFactory, queryClient } = context\n return queryOptions<boolean, SynapseClientError>({\n queryKey: keyFactory.getIsPrincipalIdSelfOrTeamMemberQueryKey(\n principalId,\n userId,\n ),\n queryFn: async () => {\n // Is the principalId the userId?\n if (principalId.trim() === userId.trim()) {\n return true\n }\n // Is the principalId a team ID?\n const principalUserGroupResult = await queryClient.fetchQuery(\n getUserGroupHeaderQuery(principalId, context),\n )\n if (\n !principalUserGroupResult ||\n principalUserGroupResult?.isIndividual === true\n ) {\n return false\n }\n\n // Is the user a member of the team?\n const teamMembership = await queryClient.fetchQuery(\n getIsUserMemberOfTeamQuery(principalId, userId, context),\n )\n return teamMembership !== null\n },\n })\n}\n\n/**\n * Checks if the passed principalId is either the userId or a team that the userId is a member of.\n *\n * @param userId the userId of the current user\n * @param principalId the principalId of the share (either a userId or a teamId)\n * @param options react-query options\n * @returns true if the principalId is either the userId or a team that the userId is a member of. Returns false otherwise.\n */\nexport function useGetIsPrincipalIdUserOrMemberOfTeam(\n userId: string,\n principalId: string,\n options?: Partial<UseQueryOptions<boolean, SynapseClientError>>,\n) {\n const synapseContext = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useQuery({\n ...options,\n ...getIsPrincipalIdUserOrMemberOfTeamQuery(userId, principalId, {\n ...synapseContext,\n queryClient,\n }),\n })\n}\n\nexport function useGetMembershipStatus(\n teamId: string,\n userId: string,\n options?: Partial<UseQueryOptions<TeamMembershipStatus, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getMembershipStatusQueryKey(teamId, userId),\n queryFn: () =>\n SynapseClient.getMembershipStatus(teamId, userId, accessToken),\n })\n}\n\nexport function useGetAllOpenMembershipInvitations(\n userId: string,\n options?: Partial<\n UseQueryOptions<MembershipInvitation[], SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getAllOpenMembershipInvitationsForUserQueryKey(userId),\n queryFn: () =>\n SynapseClient.getAllOpenMembershipInvitationsForUser(\n userId,\n accessToken!,\n ),\n })\n}\n\nexport function useInviteUserToTeam(\n options?: Partial<\n UseMutationOptions<\n MembershipInvitation,\n SynapseClientError,\n CreateMembershipInvitationRequest\n >\n >,\n) {\n const { accessToken } = useSynapseContext()\n\n return useMutation<\n MembershipInvitation,\n SynapseClientError,\n CreateMembershipInvitationRequest\n >({\n ...options,\n mutationFn: invitation =>\n SynapseClient.createMembershipInvitation(invitation, accessToken),\n })\n}\n\nexport function useAddMemberToTeam(\n options?: Partial<\n UseMutationOptions<\n void,\n SynapseClientError,\n { teamId: string; userId: string }\n >\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n void,\n SynapseClientError,\n { teamId: string; userId: string }\n >({\n ...options,\n mutationFn: ({ teamId, userId }) =>\n SynapseClient.addTeamMemberAsAuthenticatedUserOrAdmin(\n teamId,\n userId,\n accessToken!,\n ),\n onSuccess: async (data, variables, ctx) => {\n if (options?.onSuccess) {\n options.onSuccess(data, variables, ctx)\n }\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllOpenMembershipInvitationsQueryKey(),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getMembershipStatusQueryKey(\n variables.teamId,\n variables.userId,\n ),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getIsUserMemberOfTeamQueryKey(\n variables.teamId,\n variables.userId,\n ),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getTeamMembersQueryKey(variables.teamId),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllSubmissionTeamsQueryKeys(),\n }),\n ])\n },\n })\n}\n\nexport function useRequestToJoinTeam(\n options: Partial<\n UseMutationOptions<\n MembershipRequest,\n SynapseClientError,\n CreateMembershipRequestRequest\n >\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<\n MembershipRequest,\n SynapseClientError,\n CreateMembershipRequestRequest\n >({\n ...options,\n mutationFn: request =>\n SynapseClient.createMembershipRequest(request, accessToken),\n onSuccess: async (data, variables, ctx) => {\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getMembershipStatusQueryKey(\n variables.teamId,\n variables.userId,\n ),\n })\n if (options.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\n/**\n * Delete an invitation.\n * Note: The client must be an administrator of the Team referenced by the invitation or the invitee to make this request.\n *\n * @see https://rest-docs.synapse.org/rest/DELETE/membershipInvitation/id.html\n */\nexport function useDeleteMembershipInvitation(\n options?: Partial<\n UseMutationOptions<\n void,\n SynapseClientError,\n { membershipInvitation: MembershipInvitationGenerated }\n >\n >,\n) {\n const queryClient = useQueryClient()\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useMutation<\n void,\n SynapseClientError,\n { membershipInvitation: MembershipInvitationGenerated }\n >({\n ...options,\n mutationFn: ({ membershipInvitation }) =>\n synapseClient.membershipInvitationServicesClient.deleteRepoV1MembershipInvitationId(\n { id: membershipInvitation.id! },\n ),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllOpenMembershipInvitationsQueryKey(),\n }),\n // MembershipStatus includes `hasOpenInvitation`, which may change after deleting an invitation\n queryClient.invalidateQueries({\n queryKey: keyFactory.getMembershipStatusQueryKey(\n variables.membershipInvitation.teamId!,\n variables.membershipInvitation.inviteeId,\n ),\n }),\n ])\n if (options?.onSuccess) {\n await options.onSuccess(data, variables, ctx)\n }\n },\n })\n}\n\nexport type TeamMembershipParam = {\n teamId: string\n userId: string\n}\n\nexport function useDeleteTeamMembership(\n options?: Partial<\n UseMutationOptions<void, SynapseClientError, TeamMembershipParam>\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, TeamMembershipParam>({\n ...options,\n mutationFn: variables =>\n deleteMemberFromTeam(variables.teamId, variables.userId, accessToken),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getIsUserMemberOfTeamQueryKey(\n variables.teamId,\n variables.userId,\n ),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getMembershipStatusQueryKey(\n variables.teamId,\n variables.userId,\n ),\n }),\n ])\n if (options?.onSuccess) {\n await options.onSuccess(data, variables, ctx)\n }\n },\n })\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetUserChallenges.js","names":[],"sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Challenge,\n ChallengeWithProjectHeaderPagedResults,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetUserChallenges(\n userId: string,\n limit?: number,\n options?: Partial<\n UseQueryOptions<PaginatedResults<Challenge>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: () =>\n SynapseClient.getUserChallenges(accessToken, userId, 0, limit ?? 10),\n })\n}\n\nexport function useGetUserChallengesInfinite<\n TData = InfiniteData<ChallengeWithProjectHeaderPagedResults>,\n>(\n userId: string,\n options?: Partial<\n UseInfiniteQueryOptions<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n initialPageParam: undefined,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: async context => {\n const challenges = await SynapseClient.getUserChallenges(\n accessToken,\n userId,\n context.pageParam, // pass the context.pageParam for the new offset\n 10, // limit\n )\n // also look up the challenge project names (if there are challenges)\n if (challenges.results.length > 0) {\n const challengeProjectIds = Array.from(\n challenges.results,\n challenge => challenge.projectId,\n )\n const challengeProjects = await SynapseClient.getEntityHeadersByIds(\n challengeProjectIds,\n )\n const challengeWithProjectHeaderPagedResults: ChallengeWithProjectHeaderPagedResults =\n {\n results: Array.from(challenges.results, (challenge, index) => {\n return {\n challenge,\n projectHeader: challengeProjects.results[index],\n }\n }),\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n return challengeWithProjectHeaderPagedResults\n }\n return {\n results: [],\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n },\n getNextPageParam: (lastPage, pages) => {\n if (lastPage.results.length > 0)\n return pages.length * 10 //set the new offset to (page * limit)\n else return undefined\n },\n })\n}\n"],"mappings":";;;;AAiBA,SAAgB,EACd,GACA,GACA,GAGA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AAEvD,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,0BAA0B,EAAO;EACtD,eACE,EAAc,kBAAkB,GAAa,GAAQ,GAAG,KAAS,GAAG;EACvE,CAAC;;AAGJ,SAAgB,EAGd,GACA,GASA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO,EAML;EACA,GAAG;EACH,kBAAkB,KAAA;EAClB,UAAU,EAAW,0BAA0B,EAAO;EACtD,SAAS,OAAM,MAAW;GACxB,IAAM,IAAa,MAAM,EAAc,kBACrC,GACA,GACA,EAAQ,WACR,GACD;AAED,OAAI,EAAW,QAAQ,SAAS,GAAG;IACjC,IAAM,IAAsB,MAAM,KAChC,EAAW,UACX,MAAa,EAAU,UACxB,EACK,IAAoB,MAAM,EAAc,sBAC5C,EACD;AAWD,
|
|
1
|
+
{"version":3,"file":"useGetUserChallenges.js","names":[],"sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Challenge,\n ChallengeWithProjectHeaderPagedResults,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetUserChallenges(\n userId: string,\n limit?: number,\n options?: Partial<\n UseQueryOptions<PaginatedResults<Challenge>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: () =>\n SynapseClient.getUserChallenges(accessToken, userId, 0, limit ?? 10),\n })\n}\n\nexport function useGetUserChallengesInfinite<\n TData = InfiniteData<ChallengeWithProjectHeaderPagedResults>,\n>(\n userId: string,\n options?: Partial<\n UseInfiniteQueryOptions<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n initialPageParam: undefined,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: async context => {\n const challenges = await SynapseClient.getUserChallenges(\n accessToken,\n userId,\n context.pageParam, // pass the context.pageParam for the new offset\n 10, // limit\n )\n // also look up the challenge project names (if there are challenges)\n if (challenges.results.length > 0) {\n const challengeProjectIds = Array.from(\n challenges.results,\n challenge => challenge.projectId,\n )\n const challengeProjects = await SynapseClient.getEntityHeadersByIds(\n challengeProjectIds,\n )\n const challengeWithProjectHeaderPagedResults: ChallengeWithProjectHeaderPagedResults =\n {\n results: Array.from(challenges.results, (challenge, index) => {\n return {\n challenge,\n projectHeader: challengeProjects.results[index],\n }\n }),\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n return challengeWithProjectHeaderPagedResults\n }\n return {\n results: [],\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n },\n getNextPageParam: (lastPage, pages) => {\n if (lastPage.results.length > 0)\n return pages.length * 10 //set the new offset to (page * limit)\n else return undefined\n },\n })\n}\n"],"mappings":";;;;AAiBA,SAAgB,EACd,GACA,GACA,GAGA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AAEvD,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,0BAA0B,EAAO;EACtD,eACE,EAAc,kBAAkB,GAAa,GAAQ,GAAG,KAAS,GAAG;EACvE,CAAC;;AAGJ,SAAgB,EAGd,GACA,GASA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO,EAML;EACA,GAAG;EACH,kBAAkB,KAAA;EAClB,UAAU,EAAW,0BAA0B,EAAO;EACtD,SAAS,OAAM,MAAW;GACxB,IAAM,IAAa,MAAM,EAAc,kBACrC,GACA,GACA,EAAQ,WACR,GACD;AAED,OAAI,EAAW,QAAQ,SAAS,GAAG;IACjC,IAAM,IAAsB,MAAM,KAChC,EAAW,UACX,MAAa,EAAU,UACxB,EACK,IAAoB,MAAM,EAAc,sBAC5C,EACD;AAWD,WAAO;KARH,SAAS,MAAM,KAAK,EAAW,UAAU,GAAW,OAC3C;MACL;MACA,eAAe,EAAkB,QAAQ;MAC1C,EACD;KACF,sBAAsB,EAAW;KAE9B;;AAET,UAAO;IACL,SAAS,EAAE;IACX,sBAAsB,EAAW;IAClC;;EAEH,mBAAmB,GAAU,MAAU;AACrC,OAAI,EAAS,QAAQ,SAAS,EAC5B,QAAO,EAAM,SAAS;;EAG3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUserBundle.js","names":[],"sources":["../../../src/synapse-queries/user/useUserBundle.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n USER_BUNDLE_MASK_IS_ACT_MEMBER,\n USER_BUNDLE_MASK_IS_AR_REVIEWER,\n USER_BUNDLE_MASK_IS_CERTIFIED,\n USER_BUNDLE_MASK_IS_VERIFIED,\n USER_BUNDLE_MASK_ORCID,\n USER_BUNDLE_MASK_USER_PROFILE,\n USER_BUNDLE_MASK_VERIFICATION_SUBMISSION,\n} from '@/utils/SynapseConstants'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n NotificationEmail,\n PrincipalAliasRequest,\n PrincipalAliasResponse,\n UserBundle,\n UserProfile,\n} from '@sage-bionetworks/synapse-types'\nimport {\n queryOptions,\n useQuery,\n UseQueryOptions,\n useSuspenseQuery,\n} from '@tanstack/react-query'\nimport type { SynapseQueriesContext } from '../types'\n\nexport function useGetNotificationEmail(\n options?: Partial<UseQueryOptions<NotificationEmail, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getNotificationEmailQueryKey(),\n queryFn: () => SynapseClient.getNotificationEmail(accessToken),\n })\n}\n\nfunction useGetCurrentUserProfileQueryOptions() {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryKey = keyFactory.getCurrentUserProfileQueryKey()\n return {\n queryKey: queryKey,\n queryFn: () => SynapseClient.getUserProfile(accessToken),\n }\n}\n\nexport function useGetCurrentUserProfile(\n options?: Partial<UseQueryOptions<UserProfile, SynapseClientError>>,\n) {\n const queryOptions = useGetCurrentUserProfileQueryOptions()\n return useQuery({\n ...options,\n ...queryOptions,\n })\n}\n\nexport function useSuspenseGetCurrentUserProfile(\n options?: Partial<UseQueryOptions<UserProfile, SynapseClientError>>,\n) {\n const queryOptions = useGetCurrentUserProfileQueryOptions()\n\n return useSuspenseQuery({\n ...options,\n ...queryOptions,\n })\n}\n\nconst ALL_USER_BUNDLE_FIELDS =\n USER_BUNDLE_MASK_USER_PROFILE |\n USER_BUNDLE_MASK_ORCID |\n USER_BUNDLE_MASK_VERIFICATION_SUBMISSION |\n USER_BUNDLE_MASK_IS_CERTIFIED |\n USER_BUNDLE_MASK_IS_VERIFIED |\n USER_BUNDLE_MASK_IS_ACT_MEMBER |\n USER_BUNDLE_MASK_IS_AR_REVIEWER\n\nexport function useGetUserBundle(\n userId: string,\n mask: number = ALL_USER_BUNDLE_FIELDS,\n options?: Partial<UseQueryOptions<UserBundle, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryKey = keyFactory.getUserBundleQueryKey(userId, mask)\n\n return useQuery({\n ...options,\n queryKey: queryKey,\n queryFn: () => SynapseClient.getUserBundle(userId, mask, accessToken),\n })\n}\n\nexport function useGetCurrentUserBundle<TData = UserBundle>(\n mask: number = ALL_USER_BUNDLE_FIELDS,\n options?: Partial<UseQueryOptions<UserBundle, SynapseClientError, TData>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n const queryKey = keyFactory.getUserBundleQueryKey('current', mask)\n\n return useQuery({\n ...options,\n queryKey: queryKey,\n queryFn: () => SynapseClient.getMyUserBundle(mask, accessToken),\n })\n}\n\nexport function getUserProfileQuery(\n principalId: string,\n context: Pick<SynapseQueriesContext, 'accessToken' | 'keyFactory'>,\n) {\n const { accessToken, keyFactory } = context\n return queryOptions<UserProfile, SynapseClientError>({\n queryKey: keyFactory.getUserProfileQueryKey(principalId),\n queryFn: () => SynapseClient.getUserProfileById(principalId, accessToken),\n })\n}\n\nexport function useGetUserProfile(\n principalId: string,\n options?: Partial<UseQueryOptions<UserProfile, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n // We store the profile in a session storage cache used by SWC\n const sessionStorageCacheKey = `${principalId}_USER_PROFILE`\n const cachedValue = sessionStorage.getItem(sessionStorageCacheKey)\n\n return useQuery({\n ...options,\n ...getUserProfileQuery(principalId, { accessToken, keyFactory }),\n queryFn: async () => {\n const userProfile = await SynapseClient.getUserProfileById(\n principalId,\n accessToken,\n )\n // If the profile is re-fetched, save it to sessionStorage\n sessionStorage.setItem(\n sessionStorageCacheKey,\n JSON.stringify(userProfile),\n )\n return userProfile\n },\n // Use the sessionStorage cache to pre-populate profile data.\n placeholderData: cachedValue\n ? (JSON.parse(cachedValue) as UserProfile)\n : options?.placeholderData,\n })\n}\n\nexport function useGetPrincipalIdForAlias(\n request: PrincipalAliasRequest,\n options?: Partial<\n UseQueryOptions<PrincipalAliasResponse['principalId'], SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n const queryKey = keyFactory.getPrincipalAliasQueryKey(request)\n\n return useQuery({\n ...options,\n queryKey: queryKey,\n queryFn: async () => {\n return (\n await SynapseClient.getPrincipalAliasRequest(accessToken, request)\n ).principalId\n },\n })\n}\n\nexport function useIsCurrentUserACTMember() {\n return useGetCurrentUserBundle<boolean>(undefined, {\n select: data => data.isACTMember!,\n })\n}\n"],"mappings":";;;;;AA2BA,SAAgB,EACd,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,8BAA8B;EACnD,eAAe,EAAc,qBAAqB,EAAY;EAC/D,CAAC;;AAGJ,SAAS,IAAuC;CAC9C,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AAEvD,QAAO;EACK,UAFK,EAAW,+
|
|
1
|
+
{"version":3,"file":"useUserBundle.js","names":[],"sources":["../../../src/synapse-queries/user/useUserBundle.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n USER_BUNDLE_MASK_IS_ACT_MEMBER,\n USER_BUNDLE_MASK_IS_AR_REVIEWER,\n USER_BUNDLE_MASK_IS_CERTIFIED,\n USER_BUNDLE_MASK_IS_VERIFIED,\n USER_BUNDLE_MASK_ORCID,\n USER_BUNDLE_MASK_USER_PROFILE,\n USER_BUNDLE_MASK_VERIFICATION_SUBMISSION,\n} from '@/utils/SynapseConstants'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n NotificationEmail,\n PrincipalAliasRequest,\n PrincipalAliasResponse,\n UserBundle,\n UserProfile,\n} from '@sage-bionetworks/synapse-types'\nimport {\n queryOptions,\n useQuery,\n UseQueryOptions,\n useSuspenseQuery,\n} from '@tanstack/react-query'\nimport type { SynapseQueriesContext } from '../types'\n\nexport function useGetNotificationEmail(\n options?: Partial<UseQueryOptions<NotificationEmail, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getNotificationEmailQueryKey(),\n queryFn: () => SynapseClient.getNotificationEmail(accessToken),\n })\n}\n\nfunction useGetCurrentUserProfileQueryOptions() {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryKey = keyFactory.getCurrentUserProfileQueryKey()\n return {\n queryKey: queryKey,\n queryFn: () => SynapseClient.getUserProfile(accessToken),\n }\n}\n\nexport function useGetCurrentUserProfile(\n options?: Partial<UseQueryOptions<UserProfile, SynapseClientError>>,\n) {\n const queryOptions = useGetCurrentUserProfileQueryOptions()\n return useQuery({\n ...options,\n ...queryOptions,\n })\n}\n\nexport function useSuspenseGetCurrentUserProfile(\n options?: Partial<UseQueryOptions<UserProfile, SynapseClientError>>,\n) {\n const queryOptions = useGetCurrentUserProfileQueryOptions()\n\n return useSuspenseQuery({\n ...options,\n ...queryOptions,\n })\n}\n\nconst ALL_USER_BUNDLE_FIELDS =\n USER_BUNDLE_MASK_USER_PROFILE |\n USER_BUNDLE_MASK_ORCID |\n USER_BUNDLE_MASK_VERIFICATION_SUBMISSION |\n USER_BUNDLE_MASK_IS_CERTIFIED |\n USER_BUNDLE_MASK_IS_VERIFIED |\n USER_BUNDLE_MASK_IS_ACT_MEMBER |\n USER_BUNDLE_MASK_IS_AR_REVIEWER\n\nexport function useGetUserBundle(\n userId: string,\n mask: number = ALL_USER_BUNDLE_FIELDS,\n options?: Partial<UseQueryOptions<UserBundle, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryKey = keyFactory.getUserBundleQueryKey(userId, mask)\n\n return useQuery({\n ...options,\n queryKey: queryKey,\n queryFn: () => SynapseClient.getUserBundle(userId, mask, accessToken),\n })\n}\n\nexport function useGetCurrentUserBundle<TData = UserBundle>(\n mask: number = ALL_USER_BUNDLE_FIELDS,\n options?: Partial<UseQueryOptions<UserBundle, SynapseClientError, TData>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n const queryKey = keyFactory.getUserBundleQueryKey('current', mask)\n\n return useQuery({\n ...options,\n queryKey: queryKey,\n queryFn: () => SynapseClient.getMyUserBundle(mask, accessToken),\n })\n}\n\nexport function getUserProfileQuery(\n principalId: string,\n context: Pick<SynapseQueriesContext, 'accessToken' | 'keyFactory'>,\n) {\n const { accessToken, keyFactory } = context\n return queryOptions<UserProfile, SynapseClientError>({\n queryKey: keyFactory.getUserProfileQueryKey(principalId),\n queryFn: () => SynapseClient.getUserProfileById(principalId, accessToken),\n })\n}\n\nexport function useGetUserProfile(\n principalId: string,\n options?: Partial<UseQueryOptions<UserProfile, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n // We store the profile in a session storage cache used by SWC\n const sessionStorageCacheKey = `${principalId}_USER_PROFILE`\n const cachedValue = sessionStorage.getItem(sessionStorageCacheKey)\n\n return useQuery({\n ...options,\n ...getUserProfileQuery(principalId, { accessToken, keyFactory }),\n queryFn: async () => {\n const userProfile = await SynapseClient.getUserProfileById(\n principalId,\n accessToken,\n )\n // If the profile is re-fetched, save it to sessionStorage\n sessionStorage.setItem(\n sessionStorageCacheKey,\n JSON.stringify(userProfile),\n )\n return userProfile\n },\n // Use the sessionStorage cache to pre-populate profile data.\n placeholderData: cachedValue\n ? (JSON.parse(cachedValue) as UserProfile)\n : options?.placeholderData,\n })\n}\n\nexport function useGetPrincipalIdForAlias(\n request: PrincipalAliasRequest,\n options?: Partial<\n UseQueryOptions<PrincipalAliasResponse['principalId'], SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n const queryKey = keyFactory.getPrincipalAliasQueryKey(request)\n\n return useQuery({\n ...options,\n queryKey: queryKey,\n queryFn: async () => {\n return (\n await SynapseClient.getPrincipalAliasRequest(accessToken, request)\n ).principalId\n },\n })\n}\n\nexport function useIsCurrentUserACTMember() {\n return useGetCurrentUserBundle<boolean>(undefined, {\n select: data => data.isACTMember!,\n })\n}\n"],"mappings":";;;;;AA2BA,SAAgB,EACd,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AACvD,QAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,8BAA8B;EACnD,eAAe,EAAc,qBAAqB,EAAY;EAC/D,CAAC;;AAGJ,SAAS,IAAuC;CAC9C,IAAM,EAAE,gBAAa,kBAAe,GAAmB;AAEvD,QAAO;EACK,UAFK,EAAW,+BAEhB;EACV,eAAe,EAAc,eAAe,EAAY;EACzD;;AAGH,SAAgB,EACd,GACA;CACA,IAAM,IAAe,GAAsC;AAC3D,QAAO,EAAS;EACd,GAAG;EACH,GAAG;EACJ,CAAC;;AAGJ,SAAgB,EACd,GACA;CACA,IAAM,IAAe,GAAsC;AAE3D,QAAO,EAAiB;EACtB,GAAG;EACH,GAAG;EACJ,CAAC;;AAGJ,IAAM,IAAA;AASN,SAAgB,EACd,GACA,IAAe,GACf,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB,EACjD,IAAW,EAAW,sBAAsB,GAAQ,EAAK;AAE/D,QAAO,EAAS;EACd,GAAG;EACO;EACV,eAAe,EAAc,cAAc,GAAQ,GAAM,EAAY;EACtE,CAAC;;AAGJ,SAAgB,EACd,IAAe,GACf,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB,EAEjD,IAAW,EAAW,sBAAsB,WAAW,EAAK;AAElE,QAAO,EAAS;EACd,GAAG;EACO;EACV,eAAe,EAAc,gBAAgB,GAAM,EAAY;EAChE,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe;AACpC,QAAO,EAA8C;EACnD,UAAU,EAAW,uBAAuB,EAAY;EACxD,eAAe,EAAc,mBAAmB,GAAa,EAAY;EAC1E,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB,EAEjD,IAAyB,GAAG,EAAY,gBACxC,IAAc,eAAe,QAAQ,EAAuB;AAElE,QAAO,EAAS;EACd,GAAG;EACH,GAAG,EAAoB,GAAa;GAAE;GAAa;GAAY,CAAC;EAChE,SAAS,YAAY;GACnB,IAAM,IAAc,MAAM,EAAc,mBACtC,GACA,EACD;AAMD,UAJA,eAAe,QACb,GACA,KAAK,UAAU,EAAY,CAC5B,EACM;;EAGT,iBAAiB,IACZ,KAAK,MAAM,EAAY,GACxB,GAAS;EACd,CAAC;;AAGJ,SAAgB,EACd,GACA,GAGA;CACA,IAAM,EAAE,gBAAa,kBAAe,GAAmB,EAEjD,IAAW,EAAW,0BAA0B,EAAQ;AAE9D,QAAO,EAAS;EACd,GAAG;EACO;EACV,SAAS,aAEL,MAAM,EAAc,yBAAyB,GAAa,EAAQ,EAClE;EAEL,CAAC;;AAGJ,SAAgB,IAA4B;AAC1C,QAAO,EAAiC,KAAA,GAAW,EACjD,SAAQ,MAAQ,EAAK,aACtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUserGroupHeader.js","names":[],"sources":["../../../src/synapse-queries/user/useUserGroupHeader.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { TYPE_FILTER, UserGroupHeader } from '@sage-bionetworks/synapse-types'\nimport {\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { SynapseQueriesContext } from '../types'\n\nexport function getUserGroupHeaderQuery(\n principalId: string,\n context: SynapseQueriesContext,\n) {\n const { accessToken, keyFactory } = context\n return {\n queryKey: keyFactory.getUserGroupHeaderQueryKey(principalId),\n queryFn: async () => {\n const responsePage = await SynapseClient.getGroupHeadersBatch(\n [principalId],\n accessToken,\n )\n if (responsePage.children.length !== 1) {\n throw new Error(\n `Expected one response in getUserGroupHeaderQuery for id: ${principalId}, got ${responsePage.children.length}`,\n )\n }\n return responsePage.children[0]\n },\n }\n}\n\n/**\n * Get a single UserGroupHeader, utilizing a react-query cache. This is always an unauthenticated call\n * (the user's current email address will never be returned in the result).\n * @param principalId\n * @param options\n * @returns\n */\nexport function useGetUserGroupHeader(\n principalId: string,\n options?: Partial<UseQueryOptions<UserGroupHeader, SynapseClientError>>,\n) {\n const synapseContext = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useQuery({\n ...options,\n ...getUserGroupHeaderQuery(principalId, { ...synapseContext, queryClient }),\n })\n}\n\n/**\n * Get an array of UserGroupHeaders, utilizing a react-query cache. This is always an unauthenticated call\n * (the users current email addresses will never be returned in the result).\n * @param principalIds\n * @param options\n * @returns\n */\nexport function useGetUserGroupHeaders(\n principalIds: string[],\n options?: Partial<UseQueryOptions<UserGroupHeader[], SynapseClientError>>,\n) {\n const { keyFactory, accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const queryKey = keyFactory.getUserGroupHeaderBatchQueryKey(principalIds)\n const queryFn = async () => {\n const response = await SynapseClient.getGroupHeadersBatch(\n principalIds,\n accessToken,\n )\n\n // Update the cache with each individual header\n response.children.forEach(userGroupHeader => {\n queryClient.setQueryData(\n keyFactory.getUserGroupHeaderQueryKey(userGroupHeader.ownerId),\n userGroupHeader,\n )\n })\n\n return response.children\n }\n\n return useQuery<UserGroupHeader[], SynapseClientError>({\n ...options,\n queryKey,\n queryFn,\n })\n}\n\nexport function useSearchUserGroupHeaders(\n prefix: string,\n filter?: TYPE_FILTER,\n options?: Partial<UseQueryOptions<UserGroupHeader[], SynapseClientError>>,\n) {\n const { keyFactory, accessToken } = useSynapseContext()\n const queryKey = keyFactory.getUserGroupHeaderSearchQueryKey(prefix, filter)\n\n return useQuery({\n ...options,\n queryKey: queryKey,\n queryFn: async () => {\n const responsePage = await SynapseClient.getUserGroupHeaders(\n prefix,\n filter,\n undefined,\n undefined,\n accessToken,\n )\n return responsePage.children\n },\n })\n}\n\nexport function useGetUserGroupHeaderWithAlias(\n aliases: string[],\n options?: Partial<UseQueryOptions<UserGroupHeader[], SynapseClientError>>,\n) {\n const { keyFactory, accessToken } = useSynapseContext()\n\n const queryKey = keyFactory.getUserGroupHeaderWithAliasQueryKey(aliases)\n\n return useQuery({\n ...options,\n queryKey: queryKey,\n queryFn: async () => {\n const response = await SynapseClient.postUserGroupHeadersWithAlias(\n aliases,\n accessToken,\n )\n return response.list\n },\n })\n}\n"],"mappings":";;;;AAWA,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe;AACpC,QAAO;EACL,UAAU,EAAW,2BAA2B,EAAY;EAC5D,SAAS,YAAY;GACnB,IAAM,IAAe,MAAM,EAAc,qBACvC,CAAC,EAAY,EACb,EACD;AACD,OAAI,EAAa,SAAS,WAAW,EACnC,OAAU,MACR,4DAA4D,EAAY,QAAQ,EAAa,SAAS,SACvG;AAEH,UAAO,EAAa,SAAS;;EAEhC;;AAUH,SAAgB,EACd,GACA,GACA;CACA,IAAM,IAAiB,GAAmB,EACpC,IAAc,GAAgB;AAEpC,QAAO,EAAS;EACd,GAAG;EACH,GAAG,EAAwB,GAAa;GAAE,GAAG;GAAgB;GAAa,CAAC;EAC5E,CAAC;;AAUJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,eAAY,mBAAgB,GAAmB,EACjD,IAAc,GAAgB,EAC9B,IAAW,EAAW,gCAAgC,EAAa,EACnE,IAAU,YAAY;EAC1B,IAAM,IAAW,MAAM,EAAc,qBACnC,GACA,EACD;AAUD,SAPA,EAAS,SAAS,SAAQ,MAAmB;AAC3C,KAAY,aACV,EAAW,2BAA2B,EAAgB,QAAQ,EAC9D,EACD;IACD,EAEK,EAAS;;AAGlB,QAAO,EAAgD;EACrD,GAAG;EACH;EACA;EACD,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA,GACA;CACA,IAAM,EAAE,eAAY,mBAAgB,GAAmB,EACjD,IAAW,EAAW,iCAAiC,GAAQ,EAAO;AAE5E,QAAO,EAAS;EACd,GAAG;EACO;EACV,SAAS,
|
|
1
|
+
{"version":3,"file":"useUserGroupHeader.js","names":[],"sources":["../../../src/synapse-queries/user/useUserGroupHeader.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { TYPE_FILTER, UserGroupHeader } from '@sage-bionetworks/synapse-types'\nimport {\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { SynapseQueriesContext } from '../types'\n\nexport function getUserGroupHeaderQuery(\n principalId: string,\n context: SynapseQueriesContext,\n) {\n const { accessToken, keyFactory } = context\n return {\n queryKey: keyFactory.getUserGroupHeaderQueryKey(principalId),\n queryFn: async () => {\n const responsePage = await SynapseClient.getGroupHeadersBatch(\n [principalId],\n accessToken,\n )\n if (responsePage.children.length !== 1) {\n throw new Error(\n `Expected one response in getUserGroupHeaderQuery for id: ${principalId}, got ${responsePage.children.length}`,\n )\n }\n return responsePage.children[0]\n },\n }\n}\n\n/**\n * Get a single UserGroupHeader, utilizing a react-query cache. This is always an unauthenticated call\n * (the user's current email address will never be returned in the result).\n * @param principalId\n * @param options\n * @returns\n */\nexport function useGetUserGroupHeader(\n principalId: string,\n options?: Partial<UseQueryOptions<UserGroupHeader, SynapseClientError>>,\n) {\n const synapseContext = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useQuery({\n ...options,\n ...getUserGroupHeaderQuery(principalId, { ...synapseContext, queryClient }),\n })\n}\n\n/**\n * Get an array of UserGroupHeaders, utilizing a react-query cache. This is always an unauthenticated call\n * (the users current email addresses will never be returned in the result).\n * @param principalIds\n * @param options\n * @returns\n */\nexport function useGetUserGroupHeaders(\n principalIds: string[],\n options?: Partial<UseQueryOptions<UserGroupHeader[], SynapseClientError>>,\n) {\n const { keyFactory, accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const queryKey = keyFactory.getUserGroupHeaderBatchQueryKey(principalIds)\n const queryFn = async () => {\n const response = await SynapseClient.getGroupHeadersBatch(\n principalIds,\n accessToken,\n )\n\n // Update the cache with each individual header\n response.children.forEach(userGroupHeader => {\n queryClient.setQueryData(\n keyFactory.getUserGroupHeaderQueryKey(userGroupHeader.ownerId),\n userGroupHeader,\n )\n })\n\n return response.children\n }\n\n return useQuery<UserGroupHeader[], SynapseClientError>({\n ...options,\n queryKey,\n queryFn,\n })\n}\n\nexport function useSearchUserGroupHeaders(\n prefix: string,\n filter?: TYPE_FILTER,\n options?: Partial<UseQueryOptions<UserGroupHeader[], SynapseClientError>>,\n) {\n const { keyFactory, accessToken } = useSynapseContext()\n const queryKey = keyFactory.getUserGroupHeaderSearchQueryKey(prefix, filter)\n\n return useQuery({\n ...options,\n queryKey: queryKey,\n queryFn: async () => {\n const responsePage = await SynapseClient.getUserGroupHeaders(\n prefix,\n filter,\n undefined,\n undefined,\n accessToken,\n )\n return responsePage.children\n },\n })\n}\n\nexport function useGetUserGroupHeaderWithAlias(\n aliases: string[],\n options?: Partial<UseQueryOptions<UserGroupHeader[], SynapseClientError>>,\n) {\n const { keyFactory, accessToken } = useSynapseContext()\n\n const queryKey = keyFactory.getUserGroupHeaderWithAliasQueryKey(aliases)\n\n return useQuery({\n ...options,\n queryKey: queryKey,\n queryFn: async () => {\n const response = await SynapseClient.postUserGroupHeadersWithAlias(\n aliases,\n accessToken,\n )\n return response.list\n },\n })\n}\n"],"mappings":";;;;AAWA,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,gBAAa,kBAAe;AACpC,QAAO;EACL,UAAU,EAAW,2BAA2B,EAAY;EAC5D,SAAS,YAAY;GACnB,IAAM,IAAe,MAAM,EAAc,qBACvC,CAAC,EAAY,EACb,EACD;AACD,OAAI,EAAa,SAAS,WAAW,EACnC,OAAU,MACR,4DAA4D,EAAY,QAAQ,EAAa,SAAS,SACvG;AAEH,UAAO,EAAa,SAAS;;EAEhC;;AAUH,SAAgB,EACd,GACA,GACA;CACA,IAAM,IAAiB,GAAmB,EACpC,IAAc,GAAgB;AAEpC,QAAO,EAAS;EACd,GAAG;EACH,GAAG,EAAwB,GAAa;GAAE,GAAG;GAAgB;GAAa,CAAC;EAC5E,CAAC;;AAUJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,eAAY,mBAAgB,GAAmB,EACjD,IAAc,GAAgB,EAC9B,IAAW,EAAW,gCAAgC,EAAa,EACnE,IAAU,YAAY;EAC1B,IAAM,IAAW,MAAM,EAAc,qBACnC,GACA,EACD;AAUD,SAPA,EAAS,SAAS,SAAQ,MAAmB;AAC3C,KAAY,aACV,EAAW,2BAA2B,EAAgB,QAAQ,EAC9D,EACD;IACD,EAEK,EAAS;;AAGlB,QAAO,EAAgD;EACrD,GAAG;EACH;EACA;EACD,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA,GACA;CACA,IAAM,EAAE,eAAY,mBAAgB,GAAmB,EACjD,IAAW,EAAW,iCAAiC,GAAQ,EAAO;AAE5E,QAAO,EAAS;EACd,GAAG;EACO;EACV,SAAS,aAQA,MAPoB,EAAc,oBACvC,GACA,GACA,KAAA,GACA,KAAA,GACA,EACD,EACmB;EAEvB,CAAC;;AAGJ,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,eAAY,mBAAgB,GAAmB,EAEjD,IAAW,EAAW,oCAAoC,EAAQ;AAExE,QAAO,EAAS;EACd,GAAG;EACO;EACV,SAAS,aAKA,MAJgB,EAAc,8BACnC,GACA,EACD,EACe;EAEnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactQueryMockUtils.js","names":[],"sources":["../../src/testutils/ReactQueryMockUtils.ts"],"sourcesContent":["import type { InfiniteData } from '@tanstack/query-core'\nimport {\n QueryObserverLoadingResult,\n QueryObserverSuccessResult,\n UseInfiniteQueryResult,\n UseMutationResult,\n UseQueryResult,\n} from '@tanstack/react-query'\nimport type { Mock } from '@vitest/spy'\nimport { Dispatch, SetStateAction, useState } from 'react'\n\n/**\n * Returns a mock instance for useQuery, as well as functions to manipulate the mock hook's state, and\n * mocks for function(s) returned by the hook.\n *\n * Example usage:\n * ```tsx\n * const { mock, setSuccess } = getUseQueryMock<MyDataType, MyErrorType>();\n *\n * // Set the mock implementation\n * myMockedHook.mockImplementation(mock);\n *\n * // ...optionally verify a loading state in your component/hook\n *\n * // Update the hook's state to success with data\n * act(() => { myMockedHook.setSuccess(myDataArray, true); });\n * ```\n */\nexport function getUseQueryMock<TData = unknown, TError = unknown>(): {\n mock: Mock<() => UseQueryResult<TData, TError>>\n mockRefetch: Mock\n setSuccess: (data: TData) => void\n setError: (error: TError) => void\n setLoading: () => void\n setIdle: () => void\n} {\n // Stable mock functions\n const mockRefetch = vi.fn()\n\n let currentSetValue: Dispatch<\n SetStateAction<UseQueryResult<TData, TError>>\n > | null = null\n\n const setSuccess = (data: TData) => {\n if (currentSetValue) {\n const successState: UseQueryResult<TData, TError> = {\n data: data,\n status: 'success',\n isSuccess: true,\n isPending: false,\n isLoading: false,\n isError: false,\n error: null,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isInitialLoading: false,\n isLoadingError: false,\n isRefetchError: false,\n isRefetching: false,\n fetchStatus: 'idle',\n isPaused: false,\n dataUpdatedAt: Date.now(),\n errorUpdatedAt: 0,\n errorUpdateCount: 0,\n failureCount: 0,\n failureReason: null,\n refetch: mockRefetch,\n isPlaceholderData: false,\n isStale: false,\n promise: Promise.resolve(data),\n }\n\n currentSetValue(successState)\n } else {\n console.warn(\n 'setSuccess called before mock query was rendered or setValue was captured.',\n )\n }\n }\n\n const setError = (error: TError) => {\n if (currentSetValue) {\n const errorState: UseQueryResult<TData, TError> = {\n data: undefined,\n dataUpdatedAt: 0,\n error: error,\n errorUpdateCount: 1,\n errorUpdatedAt: Date.now(),\n failureCount: 1,\n isError: true,\n isFetched: false,\n isFetchedAfterMount: true,\n isFetching: false,\n isLoadingError: true,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: mockRefetch,\n status: 'error',\n failureReason: null,\n fetchStatus: 'idle',\n isInitialLoading: false,\n isPaused: false,\n isLoading: false,\n isPending: false,\n promise: new Promise(() => {}),\n }\n\n currentSetValue(errorState)\n } else {\n console.warn(\n 'setError called before mock query was rendered or setValue was captured.',\n )\n }\n }\n\n const setLoading = () => {\n if (currentSetValue) {\n const loadingState: UseQueryResult<TData, TError> = {\n data: undefined,\n dataUpdatedAt: Date.now(),\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n isError: false,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: true,\n isLoading: true,\n isLoadingError: false,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: mockRefetch,\n status: 'pending',\n failureReason: null,\n fetchStatus: 'fetching',\n isPending: true,\n isInitialLoading: true,\n isPaused: false,\n promise: new Promise(() => {}),\n }\n\n currentSetValue(loadingState)\n } else {\n console.warn(\n 'setError called before mock query was rendered or setValue was captured.',\n )\n }\n }\n\n function setIdle() {\n if (currentSetValue) {\n const idleState: UseQueryResult<TData, TError> = {\n data: undefined,\n dataUpdatedAt: 0,\n error: null,\n errorUpdateCount: 1,\n errorUpdatedAt: Date.now(),\n failureCount: 1,\n isError: false,\n isFetched: false,\n isFetchedAfterMount: false,\n isFetching: false,\n isLoadingError: false,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: mockRefetch,\n status: 'pending',\n failureReason: null,\n fetchStatus: 'idle',\n isInitialLoading: false,\n isPaused: true,\n isLoading: false,\n isPending: true,\n promise: new Promise(() => {}),\n }\n currentSetValue(idleState)\n } else {\n console.warn(\n 'setIdle called before mock query was rendered or setValue was captured.',\n )\n }\n }\n\n const mock = vi.fn(function useQueryMocked() {\n const [value, setValue] = useState<UseQueryResult<TData, TError>>({\n data: undefined,\n fetchStatus: 'fetching',\n dataUpdatedAt: 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n failureReason: null,\n isError: false,\n isFetched: false,\n isFetchedAfterMount: false,\n isFetching: false,\n isInitialLoading: false,\n isLoading: true,\n isLoadingError: false,\n isPaused: false,\n isPending: true,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: mockRefetch,\n status: 'pending',\n promise: new Promise(() => {}),\n })\n\n currentSetValue = setValue\n\n return value\n })\n return {\n mock: mock,\n mockRefetch: mockRefetch,\n setSuccess,\n setError,\n setLoading,\n setIdle,\n }\n}\n\n/**\n * @deprecated Use {@link getUseQueryMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseQuerySuccessMock<TData>(\n data: TData,\n): QueryObserverSuccessResult<TData, never> {\n return {\n data: data,\n dataUpdatedAt: Date.now(),\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n isError: false,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isLoading: false,\n isLoadingError: false,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: true,\n refetch: vi.fn(),\n status: 'success',\n failureReason: null,\n fetchStatus: 'idle',\n isInitialLoading: false,\n isPaused: false,\n isPending: false,\n promise: Promise.resolve(data),\n }\n}\n\n/**\n * @deprecated Use {@link getUseQueryMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseQueryLoadingMock(): QueryObserverLoadingResult<\n never,\n never\n> {\n return {\n data: undefined,\n dataUpdatedAt: Date.now(),\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n isError: false,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: true,\n isLoading: true,\n isLoadingError: false,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: vi.fn(),\n status: 'pending',\n failureReason: null,\n fetchStatus: 'fetching',\n isPending: true,\n isInitialLoading: true,\n isPaused: false,\n promise: new Promise(() => {}),\n }\n}\n\n/**\n * @deprecated Use {@link getUseQueryMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseQueryErrorMock<TError>(\n error: TError,\n): UseQueryResult<never, TError> {\n return {\n data: undefined,\n dataUpdatedAt: 0,\n error: error,\n errorUpdateCount: 1,\n errorUpdatedAt: Date.now(),\n failureCount: 1,\n isError: true,\n isFetched: false,\n isFetchedAfterMount: true,\n isFetching: false,\n isLoadingError: true,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: vi.fn(),\n status: 'error',\n failureReason: null,\n fetchStatus: 'idle',\n isInitialLoading: false,\n isPaused: false,\n isLoading: false,\n isPending: false,\n promise: new Promise<never>(() => {}),\n }\n}\n\n/**\n * @deprecated Use {@link getUseQueryMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseQueryIdleMock(): UseQueryResult<never, never> {\n return {\n data: undefined,\n dataUpdatedAt: 0,\n error: null,\n errorUpdateCount: 1,\n errorUpdatedAt: Date.now(),\n failureCount: 1,\n isError: false,\n isFetched: false,\n isFetchedAfterMount: false,\n isFetching: false,\n isLoadingError: false,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: vi.fn(),\n status: 'pending',\n failureReason: null,\n fetchStatus: 'idle',\n isInitialLoading: false,\n isPaused: true,\n isLoading: false,\n isPending: true,\n promise: new Promise(() => {}),\n }\n}\n\n/**\n * Returns a mock instance for useMutation, as well as functions to manipulate the mock hook's state, and\n * mocks for function(s) returned by the hook.\n *\n * Example usage:\n * ```tsx\n * const { mock, setPending, setSuccess, mockMutate } = getUseMutationMockImpl<MyDataType, MyErrorType, MyVarsType>();\n *\n * // Set the mock implementation\n * myMockedHook.mockImplementation(mock);\n *\n * // ...trigger the mutation using your component/hook interface, then\n * expect(mockMutate).toHaveBeenCalledWith(expectedVars);\n * act(() => { setPending(); })\n *\n * // ...verify the pending state in your component/hook, then resolve the mutation\n *\n *\n * // Update the hook's state to success with data\n * act(() => { myMockedHook.setSuccess(myDataArray, true); });\n * ```\n */\nexport function getUseMutationMock<\n TData = unknown,\n TError = unknown,\n TVariables = unknown,\n>(): {\n mock: Mock<() => UseMutationResult<TData, TError, TVariables>>\n mockMutate: Mock<(vars: TVariables) => void>\n mockMutateAsync: Mock<(vars: TVariables) => Promise<TData>>\n mockReset: Mock\n setSuccess: (data: TData) => void\n setError: (error: TError) => void\n setPending: () => void\n setIdle: () => void\n} {\n let currentSetValue: Dispatch<\n SetStateAction<UseMutationResult<TData, TError, TVariables>>\n > | null = null\n\n function setVars(vars: TVariables) {\n if (currentSetValue) {\n currentSetValue(\n prevState =>\n ({\n ...prevState,\n variables: vars,\n } as UseMutationResult<TData, TError, TVariables>),\n )\n } else {\n console.warn(\n 'mutate or mutateAsync called before mock mutation was rendered or setValue was captured.',\n )\n }\n }\n\n // Stable mock functions\n const mockMutate = vi.fn()\n const mockMutateAsync = vi.fn()\n const mockReset = vi.fn()\n const variables = (mockMutate.mock.lastCall?.[0] ??\n mockMutateAsync.mock.lastCall?.[0]) as TVariables | undefined\n\n function mutate(vars: TVariables): void {\n setVars(vars)\n mockMutate(vars)\n }\n\n function mutateAsync(vars: TVariables): Promise<TData> {\n setVars(vars)\n return mockMutateAsync(vars) as Promise<TData>\n }\n\n const setSuccess = (data: TData) => {\n if (currentSetValue) {\n const successState: UseMutationResult<TData, TError, TVariables> = {\n data: data,\n mutate,\n mutateAsync,\n reset: mockReset,\n context: undefined,\n error: null,\n failureCount: 0,\n isError: false,\n isIdle: false,\n isPaused: false,\n isSuccess: true,\n status: 'success',\n variables: variables!,\n failureReason: null,\n isPending: false,\n submittedAt: 0,\n }\n\n currentSetValue(\n prev =>\n ({ ...successState, variables: prev.variables } as UseMutationResult<\n TData,\n TError,\n TVariables\n >),\n )\n } else {\n console.warn(\n 'setSuccess called before mock mutation was rendered or setValue was captured.',\n )\n }\n }\n\n const setError = (error: TError) => {\n if (currentSetValue) {\n const errorState: UseMutationResult<TData, TError, TVariables> = {\n error: error,\n data: undefined,\n mutate,\n mutateAsync,\n reset: mockReset,\n context: undefined,\n failureCount: 1,\n isError: true,\n isIdle: false,\n isPaused: false,\n isSuccess: false,\n status: 'error',\n variables: variables!,\n failureReason: error,\n isPending: false,\n submittedAt: 0,\n }\n\n currentSetValue(\n prev =>\n ({ ...errorState, variables: prev.variables } as UseMutationResult<\n TData,\n TError,\n TVariables\n >),\n )\n } else {\n console.warn(\n 'setError called before mock mutation was rendered or setValue was captured.',\n )\n }\n }\n\n const setPending = () => {\n if (currentSetValue) {\n const pendingState: UseMutationResult<TData, TError, TVariables> = {\n data: undefined,\n error: null,\n mutate,\n mutateAsync,\n reset: mockReset,\n context: undefined,\n failureCount: 0,\n isError: false,\n isIdle: false,\n isPaused: false,\n isSuccess: false,\n status: 'pending',\n failureReason: null,\n isPending: true,\n submittedAt: 0,\n variables: variables!,\n }\n\n currentSetValue(\n prev =>\n ({ ...pendingState, variables: prev.variables } as UseMutationResult<\n TData,\n TError,\n TVariables\n >),\n )\n } else {\n console.warn(\n 'setPending called before mock mutation was rendered or setValue was captured.',\n )\n }\n }\n\n function setIdle() {\n if (currentSetValue) {\n const idleState: UseMutationResult<TData, TError, TVariables> = {\n data: undefined,\n error: null,\n mutate,\n mutateAsync,\n reset: mockReset,\n variables: undefined,\n context: undefined,\n failureCount: 0,\n isError: false,\n isIdle: true,\n isPaused: false,\n isSuccess: false,\n status: 'idle',\n failureReason: null,\n isPending: false,\n submittedAt: 0,\n }\n currentSetValue(idleState)\n } else {\n console.warn(\n 'setIdle called before mock mutation was rendered or setValue was captured.',\n )\n }\n }\n\n const mock = vi.fn(function useMutationMocked() {\n const [value, setValue] = useState<\n UseMutationResult<TData, TError, TVariables>\n >({\n data: undefined,\n error: null,\n mutate,\n mutateAsync,\n reset: mockReset,\n variables: undefined,\n context: undefined,\n failureCount: 0,\n isError: false,\n isIdle: true,\n isPaused: false,\n isSuccess: false,\n status: 'idle',\n failureReason: null,\n isPending: false,\n submittedAt: 0,\n })\n\n currentSetValue = setValue\n\n return value\n })\n return {\n mock: mock,\n mockMutate,\n mockMutateAsync,\n mockReset,\n setSuccess,\n setError,\n setPending,\n setIdle,\n }\n}\n\n/**\n * @deprecated Use {@link getUseMutationMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseMutationIdleMock<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TData = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TError = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TVariables = any,\n>(data?: TData) {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isError: false,\n isIdle: true,\n isPaused: false,\n isSuccess: false,\n mutate: vi.fn(),\n mutateAsync: vi.fn().mockResolvedValue(data),\n reset: vi.fn(),\n status: 'idle',\n variables: undefined,\n failureReason: null,\n isPending: false,\n submittedAt: 0,\n } satisfies UseMutationResult<TData, TError, TVariables>\n}\n\n/**\n * @deprecated Use {@link getUseMutationMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseMutationPendingMock<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TData = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TError = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TVariables = any,\n>(data?: TData, variables?: TVariables) {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isError: false,\n isIdle: false,\n isPaused: false,\n isSuccess: false,\n mutate: vi.fn(),\n mutateAsync: vi.fn().mockResolvedValue(data),\n reset: vi.fn(),\n status: 'pending',\n variables: variables!,\n failureReason: null,\n isPending: true,\n submittedAt: 0,\n } satisfies UseMutationResult<TData, TError, TVariables>\n}\n\n/**\n * @deprecated Use {@link getUseInfiniteQueryMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseInfiniteQuerySuccessMock<TData>(\n pages: TData[],\n hasNextPage = false,\n): UseInfiniteQueryResult<{ pages: TData[] }, never> {\n return {\n data: {\n pages: pages,\n },\n error: null,\n isError: false,\n isPending: false,\n isLoading: false,\n isLoadingError: false,\n isRefetchError: false,\n isSuccess: true,\n status: 'success',\n fetchNextPage: vi.fn(),\n fetchPreviousPage: vi.fn(),\n hasNextPage: hasNextPage,\n hasPreviousPage: false,\n isFetchingNextPage: false,\n isFetchingPreviousPage: false,\n dataUpdatedAt: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n failureReason: null,\n errorUpdateCount: 0,\n isFetched: false,\n isFetchedAfterMount: false,\n isFetching: false,\n isInitialLoading: false,\n isPaused: false,\n isPlaceholderData: false,\n isRefetching: false,\n isStale: false,\n refetch: vi.fn(),\n fetchStatus: 'idle',\n isFetchNextPageError: false,\n isFetchPreviousPageError: false,\n promise: Promise.resolve({ pages }),\n } satisfies UseInfiniteQueryResult<{ pages: TData[] }, never>\n}\n\n/**\n * Returns a mock instance for useInfiniteQuery, as well as functions to manipulate the mock hook's state, and\n * mock functions for fetchNextPage, fetchPreviousPage, and refetch.\n *\n * Example usage:\n * ```tsx\n * const { mock, setSuccess } = getUseInfiniteQueryMock<MyDataType, MyErrorType>();\n *\n * // Set the mock implementation\n * myMockedHook.mockImplementation(mock);\n * // Update the hook's state to success with data\n * act(() => { myMockedHook.setSuccess(myDataArray, true); });\n * ```\n */\nexport function getUseInfiniteQueryMock<TData = unknown, TError = unknown>(): {\n mock: Mock<() => UseInfiniteQueryResult<InfiniteData<TData>, TError>>\n mockFetchNextPage: Mock\n setSuccess: (\n data: TData[],\n hasNextPage?: boolean,\n isFetchingNextPage?: boolean,\n ) => void\n setError: (error: TError) => void\n setLoading: () => void\n} {\n // Stable mock functions\n const mockFetchNextPage = vi.fn()\n const mockFetchPreviousPage = vi.fn()\n const mockRefetch = vi.fn()\n\n let currentSetValue: Dispatch<\n SetStateAction<UseInfiniteQueryResult<InfiniteData<TData>, TError>>\n > | null = null\n\n const setSuccess = (\n data: TData[],\n hasNextPage = false,\n isFetchingNextPage = false,\n ) => {\n if (currentSetValue) {\n const successState: UseInfiniteQueryResult<\n InfiniteData<TData>,\n TError\n > = {\n data: { pages: data, pageParams: [] },\n hasNextPage: hasNextPage,\n status: 'success',\n isSuccess: true,\n isPending: false,\n isLoading: false,\n isError: false,\n error: null,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isInitialLoading: false,\n isLoadingError: false,\n isRefetchError: false,\n isRefetching: false,\n fetchStatus: isFetchingNextPage ? 'fetching' : 'idle',\n isPaused: false,\n dataUpdatedAt: Date.now(),\n errorUpdatedAt: 0,\n errorUpdateCount: 0,\n failureCount: 0,\n failureReason: null,\n fetchNextPage: mockFetchNextPage,\n fetchPreviousPage: mockFetchPreviousPage,\n refetch: mockRefetch,\n hasPreviousPage: false,\n isFetchingNextPage: isFetchingNextPage,\n isFetchingPreviousPage: false,\n isPlaceholderData: false,\n isStale: false,\n isFetchPreviousPageError: false,\n isFetchNextPageError: false,\n promise: Promise.resolve({ pages: data, pageParams: [] }),\n }\n currentSetValue(successState)\n } else {\n console.warn(\n 'setSuccess called before useInfiniteQueryMock was rendered or setValue was captured.',\n )\n }\n }\n\n const setError = (error: TError) => {\n if (currentSetValue) {\n const errorState: UseInfiniteQueryResult<InfiniteData<TData>, TError> = {\n data: undefined,\n hasNextPage: false,\n status: 'error',\n isSuccess: false,\n isPending: false,\n isLoading: false,\n isError: true,\n error: error,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isInitialLoading: false,\n isLoadingError: true,\n isRefetchError: false,\n isRefetching: false,\n fetchStatus: 'idle',\n isPaused: false,\n dataUpdatedAt: Date.now(),\n errorUpdatedAt: 0,\n errorUpdateCount: 0,\n failureCount: 0,\n failureReason: null,\n fetchNextPage: mockFetchNextPage,\n fetchPreviousPage: mockFetchPreviousPage,\n refetch: mockRefetch,\n hasPreviousPage: false,\n isFetchingNextPage: false,\n isFetchingPreviousPage: false,\n isPlaceholderData: false,\n isStale: false,\n isFetchNextPageError: false,\n isFetchPreviousPageError: false,\n promise: new Promise(() => {}),\n }\n currentSetValue(errorState)\n } else {\n console.warn(\n 'setError called before useInfiniteQueryMock was rendered or setValue was captured.',\n )\n }\n }\n\n const setLoading = () => {\n if (currentSetValue) {\n const loadingState: UseInfiniteQueryResult<\n InfiniteData<TData>,\n TError\n > = {\n data: undefined,\n hasNextPage: false,\n status: 'pending',\n isSuccess: false,\n isPending: true,\n isLoading: true,\n isError: false,\n error: null,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isInitialLoading: false,\n isLoadingError: false,\n isRefetchError: false,\n isRefetching: false,\n fetchStatus: 'fetching',\n isPaused: false,\n dataUpdatedAt: Date.now(),\n errorUpdatedAt: 0,\n errorUpdateCount: 0,\n failureCount: 0,\n failureReason: null,\n fetchNextPage: mockFetchNextPage,\n fetchPreviousPage: mockFetchPreviousPage,\n refetch: mockRefetch,\n hasPreviousPage: false,\n isFetchingNextPage: true,\n isFetchingPreviousPage: false,\n isPlaceholderData: false,\n isStale: false,\n isFetchNextPageError: false,\n isFetchPreviousPageError: false,\n promise: new Promise(() => {}),\n }\n currentSetValue(loadingState)\n } else {\n console.warn(\n 'setError called before useInfiniteQueryMock was rendered or setValue was captured.',\n )\n }\n }\n\n const mock = vi.fn(function useMockInfiniteQuery() {\n const [value, setValue] = useState<\n UseInfiniteQueryResult<InfiniteData<TData>, TError>\n >({\n data: undefined,\n fetchStatus: 'fetching',\n dataUpdatedAt: 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n failureReason: null,\n fetchNextPage: mockFetchNextPage,\n fetchPreviousPage: mockFetchPreviousPage,\n hasNextPage: false,\n hasPreviousPage: false,\n isError: false,\n isFetched: false,\n isFetchedAfterMount: false,\n isFetching: false,\n isFetchingNextPage: false,\n isFetchingPreviousPage: false,\n isInitialLoading: false,\n isLoading: true,\n isLoadingError: false,\n isPaused: false,\n isPending: true,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: mockRefetch,\n status: 'pending',\n isFetchNextPageError: false,\n isFetchPreviousPageError: false,\n promise: new Promise(() => {}),\n })\n\n currentSetValue = setValue\n\n return value\n })\n return {\n mock: mock,\n mockFetchNextPage: mockFetchNextPage,\n setSuccess,\n setError,\n setLoading,\n }\n}\n"],"mappings":";;AA4BA,SAAgB,IAOd;CAEA,IAAM,IAAc,GAAG,IAAI,EAEvB,IAEO,MAEL,KAAc,MAAgB;AAClC,MAAI,GAAiB;GACnB,IAAM,IAA8C;IAC5C;IACN,QAAQ;IACR,WAAW;IACX,WAAW;IACX,WAAW;IACX,SAAS;IACT,OAAO;IACP,WAAW;IACX,qBAAqB;IACrB,YAAY;IACZ,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,aAAa;IACb,UAAU;IACV,eAAe,KAAK,KAAK;IACzB,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,SAAS;IACT,mBAAmB;IACnB,SAAS;IACT,SAAS,QAAQ,QAAQ,EAAK;IAC/B;AAED,KAAgB,EAAa;QAE7B,SAAQ,KACN,6EACD;IAIC,KAAY,MAAkB;AAClC,MAAI,GAAiB;GACnB,IAAM,IAA4C;IAChD,MAAM,KAAA;IACN,eAAe;IACR;IACP,kBAAkB;IAClB,gBAAgB,KAAK,KAAK;IAC1B,cAAc;IACd,SAAS;IACT,WAAW;IACX,qBAAqB;IACrB,YAAY;IACZ,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,WAAW;IACX,SAAS;IACT,QAAQ;IACR,eAAe;IACf,aAAa;IACb,kBAAkB;IAClB,UAAU;IACV,WAAW;IACX,WAAW;IACX,SAAS,IAAI,cAAc,GAAG;IAC/B;AAED,KAAgB,EAAW;QAE3B,SAAQ,KACN,2EACD;IAIC,UAAmB;AACvB,MAAI,GAAiB;GACnB,IAAM,IAA8C;IAClD,MAAM,KAAA;IACN,eAAe,KAAK,KAAK;IACzB,OAAO;IACP,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,WAAW;IACX,qBAAqB;IACrB,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,WAAW;IACX,SAAS;IACT,QAAQ;IACR,eAAe;IACf,aAAa;IACb,WAAW;IACX,kBAAkB;IAClB,UAAU;IACV,SAAS,IAAI,cAAc,GAAG;IAC/B;AAED,KAAgB,EAAa;QAE7B,SAAQ,KACN,2EACD;;CAIL,SAAS,IAAU;AACjB,MAAI,GAAiB;GACnB,IAAM,IAA2C;IAC/C,MAAM,KAAA;IACN,eAAe;IACf,OAAO;IACP,kBAAkB;IAClB,gBAAgB,KAAK,KAAK;IAC1B,cAAc;IACd,SAAS;IACT,WAAW;IACX,qBAAqB;IACrB,YAAY;IACZ,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,WAAW;IACX,SAAS;IACT,QAAQ;IACR,eAAe;IACf,aAAa;IACb,kBAAkB;IAClB,UAAU;IACV,WAAW;IACX,WAAW;IACX,SAAS,IAAI,cAAc,GAAG;IAC/B;AACD,KAAgB,EAAU;QAE1B,SAAQ,KACN,0EACD;;AAqCL,QAAO;EACC,MAlCK,GAAG,GAAG,WAA0B;GAC3C,IAAM,CAAC,GAAO,KAAY,EAAwC;IAChE,MAAM,KAAA;IACN,aAAa;IACb,eAAe;IACf,OAAO;IACP,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,SAAS;IACT,WAAW;IACX,qBAAqB;IACrB,YAAY;IACZ,kBAAkB;IAClB,WAAW;IACX,gBAAgB;IAChB,UAAU;IACV,WAAW;IACX,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,WAAW;IACX,SAAS;IACT,QAAQ;IACR,SAAS,IAAI,cAAc,GAAG;IAC/B,CAAC;AAIF,UAFA,IAAkB,GAEX;IACP;EAGa;EACb;EACA;EACA;EACA;EACD;;AAMH,SAAgB,EACd,GAC0C;AAC1C,QAAO;EACC;EACN,eAAe,KAAK,KAAK;EACzB,OAAO;EACP,kBAAkB;EAClB,gBAAgB;EAChB,cAAc;EACd,SAAS;EACT,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,mBAAmB;EACnB,gBAAgB;EAChB,cAAc;EACd,SAAS;EACT,WAAW;EACX,SAAS,GAAG,IAAI;EAChB,QAAQ;EACR,eAAe;EACf,aAAa;EACb,kBAAkB;EAClB,UAAU;EACV,WAAW;EACX,SAAS,QAAQ,QAAQ,EAAK;EAC/B;;AAMH,SAAgB,IAGd;AACA,QAAO;EACL,MAAM,KAAA;EACN,eAAe,KAAK,KAAK;EACzB,OAAO;EACP,kBAAkB;EAClB,gBAAgB;EAChB,cAAc;EACd,SAAS;EACT,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,mBAAmB;EACnB,gBAAgB;EAChB,cAAc;EACd,SAAS;EACT,WAAW;EACX,SAAS,GAAG,IAAI;EAChB,QAAQ;EACR,eAAe;EACf,aAAa;EACb,WAAW;EACX,kBAAkB;EAClB,UAAU;EACV,SAAS,IAAI,cAAc,GAAG;EAC/B;;AAMH,SAAgB,EACd,GAC+B;AAC/B,QAAO;EACL,MAAM,KAAA;EACN,eAAe;EACR;EACP,kBAAkB;EAClB,gBAAgB,KAAK,KAAK;EAC1B,cAAc;EACd,SAAS;EACT,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,gBAAgB;EAChB,mBAAmB;EACnB,gBAAgB;EAChB,cAAc;EACd,SAAS;EACT,WAAW;EACX,SAAS,GAAG,IAAI;EAChB,QAAQ;EACR,eAAe;EACf,aAAa;EACb,kBAAkB;EAClB,UAAU;EACV,WAAW;EACX,WAAW;EACX,SAAS,IAAI,cAAqB,GAAG;EACtC;;AAMH,SAAgB,IAAoD;AAClE,QAAO;EACL,MAAM,KAAA;EACN,eAAe;EACf,OAAO;EACP,kBAAkB;EAClB,gBAAgB,KAAK,KAAK;EAC1B,cAAc;EACd,SAAS;EACT,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,gBAAgB;EAChB,mBAAmB;EACnB,gBAAgB;EAChB,cAAc;EACd,SAAS;EACT,WAAW;EACX,SAAS,GAAG,IAAI;EAChB,QAAQ;EACR,eAAe;EACf,aAAa;EACb,kBAAkB;EAClB,UAAU;EACV,WAAW;EACX,WAAW;EACX,SAAS,IAAI,cAAc,GAAG;EAC/B;;AAyBH,SAAgB,IAad;CACA,IAAI,IAEO;CAEX,SAAS,EAAQ,GAAkB;AACjC,EAAI,IACF,GACE,OACG;GACC,GAAG;GACH,WAAW;GACZ,EACJ,GAED,QAAQ,KACN,2FACD;;CAKL,IAAM,IAAa,GAAG,IAAI,EACpB,IAAkB,GAAG,IAAI,EACzB,IAAY,GAAG,IAAI,EACnB,IAAa,EAAW,KAAK,WAAW,MAC5C,EAAgB,KAAK,WAAW;CAElC,SAAS,EAAO,GAAwB;AAEtC,EADA,EAAQ,EAAK,EACb,EAAW,EAAK;;CAGlB,SAAS,EAAY,GAAkC;AAErD,SADA,EAAQ,EAAK,EACN,EAAgB,EAAK;;CAG9B,IAAM,KAAc,MAAgB;AAClC,MAAI,GAAiB;GACnB,IAAM,IAA6D;IAC3D;IACN;IACA;IACA,OAAO;IACP,SAAS,KAAA;IACT,OAAO;IACP,cAAc;IACd,SAAS;IACT,QAAQ;IACR,UAAU;IACV,WAAW;IACX,QAAQ;IACG;IACX,eAAe;IACf,WAAW;IACX,aAAa;IACd;AAED,MACE,OACG;IAAE,GAAG;IAAc,WAAW,EAAK;IAAW,EAKlD;QAED,SAAQ,KACN,gFACD;IAIC,KAAY,MAAkB;AAClC,MAAI,GAAiB;GACnB,IAAM,IAA2D;IACxD;IACP,MAAM,KAAA;IACN;IACA;IACA,OAAO;IACP,SAAS,KAAA;IACT,cAAc;IACd,SAAS;IACT,QAAQ;IACR,UAAU;IACV,WAAW;IACX,QAAQ;IACG;IACX,eAAe;IACf,WAAW;IACX,aAAa;IACd;AAED,MACE,OACG;IAAE,GAAG;IAAY,WAAW,EAAK;IAAW,EAKhD;QAED,SAAQ,KACN,8EACD;IAIC,UAAmB;AACvB,MAAI,GAAiB;GACnB,IAAM,IAA6D;IACjE,MAAM,KAAA;IACN,OAAO;IACP;IACA;IACA,OAAO;IACP,SAAS,KAAA;IACT,cAAc;IACd,SAAS;IACT,QAAQ;IACR,UAAU;IACV,WAAW;IACX,QAAQ;IACR,eAAe;IACf,WAAW;IACX,aAAa;IACF;IACZ;AAED,MACE,OACG;IAAE,GAAG;IAAc,WAAW,EAAK;IAAW,EAKlD;QAED,SAAQ,KACN,gFACD;;CAIL,SAAS,IAAU;AACjB,EAAI,IAmBF,EAlBgE;GAC9D,MAAM,KAAA;GACN,OAAO;GACP;GACA;GACA,OAAO;GACP,WAAW,KAAA;GACX,SAAS,KAAA;GACT,cAAc;GACd,SAAS;GACT,QAAQ;GACR,UAAU;GACV,WAAW;GACX,QAAQ;GACR,eAAe;GACf,WAAW;GACX,aAAa;GACd,CACyB,GAE1B,QAAQ,KACN,6EACD;;AA8BL,QAAO;EACC,MA3BK,GAAG,GAAG,WAA6B;GAC9C,IAAM,CAAC,GAAO,KAAY,EAExB;IACA,MAAM,KAAA;IACN,OAAO;IACP;IACA;IACA,OAAO;IACP,WAAW,KAAA;IACX,SAAS,KAAA;IACT,cAAc;IACd,SAAS;IACT,QAAQ;IACR,UAAU;IACV,WAAW;IACX,QAAQ;IACR,eAAe;IACf,WAAW;IACX,aAAa;IACd,CAAC;AAIF,UAFA,IAAkB,GAEX;IACP;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;;AAMH,SAAgB,EAOd,GAAc;AACd,QAAO;EACL,SAAS,KAAA;EACT,MAAM,KAAA;EACN,OAAO;EACP,cAAc;EACd,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW;EACX,QAAQ,GAAG,IAAI;EACf,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAK;EAC5C,OAAO,GAAG,IAAI;EACd,QAAQ;EACR,WAAW,KAAA;EACX,eAAe;EACf,WAAW;EACX,aAAa;EACd;;AAMH,SAAgB,EAOd,GAAc,GAAwB;AACtC,QAAO;EACL,SAAS,KAAA;EACT,MAAM,KAAA;EACN,OAAO;EACP,cAAc;EACd,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW;EACX,QAAQ,GAAG,IAAI;EACf,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAK;EAC5C,OAAO,GAAG,IAAI;EACd,QAAQ;EACG;EACX,eAAe;EACf,WAAW;EACX,aAAa;EACd;;AAMH,SAAgB,EACd,GACA,IAAc,IACqC;AACnD,QAAO;EACL,MAAM,EACG,UACR;EACD,OAAO;EACP,SAAS;EACT,WAAW;EACX,WAAW;EACX,gBAAgB;EAChB,gBAAgB;EAChB,WAAW;EACX,QAAQ;EACR,eAAe,GAAG,IAAI;EACtB,mBAAmB,GAAG,IAAI;EACb;EACb,iBAAiB;EACjB,oBAAoB;EACpB,wBAAwB;EACxB,eAAe;EACf,gBAAgB;EAChB,cAAc;EACd,eAAe;EACf,kBAAkB;EAClB,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,kBAAkB;EAClB,UAAU;EACV,mBAAmB;EACnB,cAAc;EACd,SAAS;EACT,SAAS,GAAG,IAAI;EAChB,aAAa;EACb,sBAAsB;EACtB,0BAA0B;EAC1B,SAAS,QAAQ,QAAQ,EAAE,UAAO,CAAC;EACpC;;AAiBH,SAAgB,IAUd;CAEA,IAAM,IAAoB,GAAG,IAAI,EAC3B,IAAwB,GAAG,IAAI,EAC/B,IAAc,GAAG,IAAI,EAEvB,IAEO;AA8LX,QAAO;EACC,MA5CK,GAAG,GAAG,WAAgC;GACjD,IAAM,CAAC,GAAO,KAAY,EAExB;IACA,MAAM,KAAA;IACN,aAAa;IACb,eAAe;IACf,OAAO;IACP,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,aAAa;IACb,iBAAiB;IACjB,SAAS;IACT,WAAW;IACX,qBAAqB;IACrB,YAAY;IACZ,oBAAoB;IACpB,wBAAwB;IACxB,kBAAkB;IAClB,WAAW;IACX,gBAAgB;IAChB,UAAU;IACV,WAAW;IACX,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,WAAW;IACX,SAAS;IACT,QAAQ;IACR,sBAAsB;IACtB,0BAA0B;IAC1B,SAAS,IAAI,cAAc,GAAG;IAC/B,CAAC;AAIF,UAFA,IAAkB,GAEX;IACP;EAGmB;EACnB,aA9LA,GACA,IAAc,IACd,IAAqB,OAClB;AACH,OAAI,GAAiB;IACnB,IAAM,IAGF;KACF,MAAM;MAAE,OAAO;MAAM,YAAY,EAAE;MAAE;KACxB;KACb,QAAQ;KACR,WAAW;KACX,WAAW;KACX,WAAW;KACX,SAAS;KACT,OAAO;KACP,WAAW;KACX,qBAAqB;KACrB,YAAY;KACZ,kBAAkB;KAClB,gBAAgB;KAChB,gBAAgB;KAChB,cAAc;KACd,aAAa,IAAqB,aAAa;KAC/C,UAAU;KACV,eAAe,KAAK,KAAK;KACzB,gBAAgB;KAChB,kBAAkB;KAClB,cAAc;KACd,eAAe;KACf,eAAe;KACf,mBAAmB;KACnB,SAAS;KACT,iBAAiB;KACG;KACpB,wBAAwB;KACxB,mBAAmB;KACnB,SAAS;KACT,0BAA0B;KAC1B,sBAAsB;KACtB,SAAS,QAAQ,QAAQ;MAAE,OAAO;MAAM,YAAY,EAAE;MAAE,CAAC;KAC1D;AACD,MAAgB,EAAa;SAE7B,SAAQ,KACN,uFACD;;EAgJH,WA5IgB,MAAkB;AAClC,OAAI,GAAiB;IACnB,IAAM,IAAkE;KACtE,MAAM,KAAA;KACN,aAAa;KACb,QAAQ;KACR,WAAW;KACX,WAAW;KACX,WAAW;KACX,SAAS;KACF;KACP,WAAW;KACX,qBAAqB;KACrB,YAAY;KACZ,kBAAkB;KAClB,gBAAgB;KAChB,gBAAgB;KAChB,cAAc;KACd,aAAa;KACb,UAAU;KACV,eAAe,KAAK,KAAK;KACzB,gBAAgB;KAChB,kBAAkB;KAClB,cAAc;KACd,eAAe;KACf,eAAe;KACf,mBAAmB;KACnB,SAAS;KACT,iBAAiB;KACjB,oBAAoB;KACpB,wBAAwB;KACxB,mBAAmB;KACnB,SAAS;KACT,sBAAsB;KACtB,0BAA0B;KAC1B,SAAS,IAAI,cAAc,GAAG;KAC/B;AACD,MAAgB,EAAW;SAE3B,SAAQ,KACN,qFACD;;EAoGH,kBAhGuB;AACvB,OAAI,GAAiB;IACnB,IAAM,IAGF;KACF,MAAM,KAAA;KACN,aAAa;KACb,QAAQ;KACR,WAAW;KACX,WAAW;KACX,WAAW;KACX,SAAS;KACT,OAAO;KACP,WAAW;KACX,qBAAqB;KACrB,YAAY;KACZ,kBAAkB;KAClB,gBAAgB;KAChB,gBAAgB;KAChB,cAAc;KACd,aAAa;KACb,UAAU;KACV,eAAe,KAAK,KAAK;KACzB,gBAAgB;KAChB,kBAAkB;KAClB,cAAc;KACd,eAAe;KACf,eAAe;KACf,mBAAmB;KACnB,SAAS;KACT,iBAAiB;KACjB,oBAAoB;KACpB,wBAAwB;KACxB,mBAAmB;KACnB,SAAS;KACT,sBAAsB;KACtB,0BAA0B;KAC1B,SAAS,IAAI,cAAc,GAAG;KAC/B;AACD,MAAgB,EAAa;SAE7B,SAAQ,KACN,qFACD;;EAqDJ"}
|
|
1
|
+
{"version":3,"file":"ReactQueryMockUtils.js","names":[],"sources":["../../src/testutils/ReactQueryMockUtils.ts"],"sourcesContent":["import type { InfiniteData } from '@tanstack/query-core'\nimport {\n QueryObserverLoadingResult,\n QueryObserverSuccessResult,\n UseInfiniteQueryResult,\n UseMutationResult,\n UseQueryResult,\n} from '@tanstack/react-query'\nimport type { Mock } from '@vitest/spy'\nimport { Dispatch, SetStateAction, useState } from 'react'\n\n/**\n * Returns a mock instance for useQuery, as well as functions to manipulate the mock hook's state, and\n * mocks for function(s) returned by the hook.\n *\n * Example usage:\n * ```tsx\n * const { mock, setSuccess } = getUseQueryMock<MyDataType, MyErrorType>();\n *\n * // Set the mock implementation\n * myMockedHook.mockImplementation(mock);\n *\n * // ...optionally verify a loading state in your component/hook\n *\n * // Update the hook's state to success with data\n * act(() => { myMockedHook.setSuccess(myDataArray, true); });\n * ```\n */\nexport function getUseQueryMock<TData = unknown, TError = unknown>(): {\n mock: Mock<() => UseQueryResult<TData, TError>>\n mockRefetch: Mock\n setSuccess: (data: TData) => void\n setError: (error: TError) => void\n setLoading: () => void\n setIdle: () => void\n} {\n // Stable mock functions\n const mockRefetch = vi.fn()\n\n let currentSetValue: Dispatch<\n SetStateAction<UseQueryResult<TData, TError>>\n > | null = null\n\n const setSuccess = (data: TData) => {\n if (currentSetValue) {\n const successState: UseQueryResult<TData, TError> = {\n data: data,\n status: 'success',\n isSuccess: true,\n isPending: false,\n isLoading: false,\n isError: false,\n error: null,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isInitialLoading: false,\n isLoadingError: false,\n isRefetchError: false,\n isRefetching: false,\n fetchStatus: 'idle',\n isPaused: false,\n dataUpdatedAt: Date.now(),\n errorUpdatedAt: 0,\n errorUpdateCount: 0,\n failureCount: 0,\n failureReason: null,\n refetch: mockRefetch,\n isPlaceholderData: false,\n isStale: false,\n promise: Promise.resolve(data),\n }\n\n currentSetValue(successState)\n } else {\n console.warn(\n 'setSuccess called before mock query was rendered or setValue was captured.',\n )\n }\n }\n\n const setError = (error: TError) => {\n if (currentSetValue) {\n const errorState: UseQueryResult<TData, TError> = {\n data: undefined,\n dataUpdatedAt: 0,\n error: error,\n errorUpdateCount: 1,\n errorUpdatedAt: Date.now(),\n failureCount: 1,\n isError: true,\n isFetched: false,\n isFetchedAfterMount: true,\n isFetching: false,\n isLoadingError: true,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: mockRefetch,\n status: 'error',\n failureReason: null,\n fetchStatus: 'idle',\n isInitialLoading: false,\n isPaused: false,\n isLoading: false,\n isPending: false,\n promise: new Promise(() => {}),\n }\n\n currentSetValue(errorState)\n } else {\n console.warn(\n 'setError called before mock query was rendered or setValue was captured.',\n )\n }\n }\n\n const setLoading = () => {\n if (currentSetValue) {\n const loadingState: UseQueryResult<TData, TError> = {\n data: undefined,\n dataUpdatedAt: Date.now(),\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n isError: false,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: true,\n isLoading: true,\n isLoadingError: false,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: mockRefetch,\n status: 'pending',\n failureReason: null,\n fetchStatus: 'fetching',\n isPending: true,\n isInitialLoading: true,\n isPaused: false,\n promise: new Promise(() => {}),\n }\n\n currentSetValue(loadingState)\n } else {\n console.warn(\n 'setError called before mock query was rendered or setValue was captured.',\n )\n }\n }\n\n function setIdle() {\n if (currentSetValue) {\n const idleState: UseQueryResult<TData, TError> = {\n data: undefined,\n dataUpdatedAt: 0,\n error: null,\n errorUpdateCount: 1,\n errorUpdatedAt: Date.now(),\n failureCount: 1,\n isError: false,\n isFetched: false,\n isFetchedAfterMount: false,\n isFetching: false,\n isLoadingError: false,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: mockRefetch,\n status: 'pending',\n failureReason: null,\n fetchStatus: 'idle',\n isInitialLoading: false,\n isPaused: true,\n isLoading: false,\n isPending: true,\n promise: new Promise(() => {}),\n }\n currentSetValue(idleState)\n } else {\n console.warn(\n 'setIdle called before mock query was rendered or setValue was captured.',\n )\n }\n }\n\n const mock = vi.fn(function useQueryMocked() {\n const [value, setValue] = useState<UseQueryResult<TData, TError>>({\n data: undefined,\n fetchStatus: 'fetching',\n dataUpdatedAt: 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n failureReason: null,\n isError: false,\n isFetched: false,\n isFetchedAfterMount: false,\n isFetching: false,\n isInitialLoading: false,\n isLoading: true,\n isLoadingError: false,\n isPaused: false,\n isPending: true,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: mockRefetch,\n status: 'pending',\n promise: new Promise(() => {}),\n })\n\n currentSetValue = setValue\n\n return value\n })\n return {\n mock: mock,\n mockRefetch: mockRefetch,\n setSuccess,\n setError,\n setLoading,\n setIdle,\n }\n}\n\n/**\n * @deprecated Use {@link getUseQueryMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseQuerySuccessMock<TData>(\n data: TData,\n): QueryObserverSuccessResult<TData, never> {\n return {\n data: data,\n dataUpdatedAt: Date.now(),\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n isError: false,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isLoading: false,\n isLoadingError: false,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: true,\n refetch: vi.fn(),\n status: 'success',\n failureReason: null,\n fetchStatus: 'idle',\n isInitialLoading: false,\n isPaused: false,\n isPending: false,\n promise: Promise.resolve(data),\n }\n}\n\n/**\n * @deprecated Use {@link getUseQueryMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseQueryLoadingMock(): QueryObserverLoadingResult<\n never,\n never\n> {\n return {\n data: undefined,\n dataUpdatedAt: Date.now(),\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n isError: false,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: true,\n isLoading: true,\n isLoadingError: false,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: vi.fn(),\n status: 'pending',\n failureReason: null,\n fetchStatus: 'fetching',\n isPending: true,\n isInitialLoading: true,\n isPaused: false,\n promise: new Promise(() => {}),\n }\n}\n\n/**\n * @deprecated Use {@link getUseQueryMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseQueryErrorMock<TError>(\n error: TError,\n): UseQueryResult<never, TError> {\n return {\n data: undefined,\n dataUpdatedAt: 0,\n error: error,\n errorUpdateCount: 1,\n errorUpdatedAt: Date.now(),\n failureCount: 1,\n isError: true,\n isFetched: false,\n isFetchedAfterMount: true,\n isFetching: false,\n isLoadingError: true,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: vi.fn(),\n status: 'error',\n failureReason: null,\n fetchStatus: 'idle',\n isInitialLoading: false,\n isPaused: false,\n isLoading: false,\n isPending: false,\n promise: new Promise<never>(() => {}),\n }\n}\n\n/**\n * @deprecated Use {@link getUseQueryMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseQueryIdleMock(): UseQueryResult<never, never> {\n return {\n data: undefined,\n dataUpdatedAt: 0,\n error: null,\n errorUpdateCount: 1,\n errorUpdatedAt: Date.now(),\n failureCount: 1,\n isError: false,\n isFetched: false,\n isFetchedAfterMount: false,\n isFetching: false,\n isLoadingError: false,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: vi.fn(),\n status: 'pending',\n failureReason: null,\n fetchStatus: 'idle',\n isInitialLoading: false,\n isPaused: true,\n isLoading: false,\n isPending: true,\n promise: new Promise(() => {}),\n }\n}\n\n/**\n * Returns a mock instance for useMutation, as well as functions to manipulate the mock hook's state, and\n * mocks for function(s) returned by the hook.\n *\n * Example usage:\n * ```tsx\n * const { mock, setPending, setSuccess, mockMutate } = getUseMutationMockImpl<MyDataType, MyErrorType, MyVarsType>();\n *\n * // Set the mock implementation\n * myMockedHook.mockImplementation(mock);\n *\n * // ...trigger the mutation using your component/hook interface, then\n * expect(mockMutate).toHaveBeenCalledWith(expectedVars);\n * act(() => { setPending(); })\n *\n * // ...verify the pending state in your component/hook, then resolve the mutation\n *\n *\n * // Update the hook's state to success with data\n * act(() => { myMockedHook.setSuccess(myDataArray, true); });\n * ```\n */\nexport function getUseMutationMock<\n TData = unknown,\n TError = unknown,\n TVariables = unknown,\n>(): {\n mock: Mock<() => UseMutationResult<TData, TError, TVariables>>\n mockMutate: Mock<(vars: TVariables) => void>\n mockMutateAsync: Mock<(vars: TVariables) => Promise<TData>>\n mockReset: Mock\n setSuccess: (data: TData) => void\n setError: (error: TError) => void\n setPending: () => void\n setIdle: () => void\n} {\n let currentSetValue: Dispatch<\n SetStateAction<UseMutationResult<TData, TError, TVariables>>\n > | null = null\n\n function setVars(vars: TVariables) {\n if (currentSetValue) {\n currentSetValue(\n prevState =>\n ({\n ...prevState,\n variables: vars,\n } as UseMutationResult<TData, TError, TVariables>),\n )\n } else {\n console.warn(\n 'mutate or mutateAsync called before mock mutation was rendered or setValue was captured.',\n )\n }\n }\n\n // Stable mock functions\n const mockMutate = vi.fn()\n const mockMutateAsync = vi.fn()\n const mockReset = vi.fn()\n const variables = (mockMutate.mock.lastCall?.[0] ??\n mockMutateAsync.mock.lastCall?.[0]) as TVariables | undefined\n\n function mutate(vars: TVariables): void {\n setVars(vars)\n mockMutate(vars)\n }\n\n function mutateAsync(vars: TVariables): Promise<TData> {\n setVars(vars)\n return mockMutateAsync(vars) as Promise<TData>\n }\n\n const setSuccess = (data: TData) => {\n if (currentSetValue) {\n const successState: UseMutationResult<TData, TError, TVariables> = {\n data: data,\n mutate,\n mutateAsync,\n reset: mockReset,\n context: undefined,\n error: null,\n failureCount: 0,\n isError: false,\n isIdle: false,\n isPaused: false,\n isSuccess: true,\n status: 'success',\n variables: variables!,\n failureReason: null,\n isPending: false,\n submittedAt: 0,\n }\n\n currentSetValue(\n prev =>\n ({ ...successState, variables: prev.variables } as UseMutationResult<\n TData,\n TError,\n TVariables\n >),\n )\n } else {\n console.warn(\n 'setSuccess called before mock mutation was rendered or setValue was captured.',\n )\n }\n }\n\n const setError = (error: TError) => {\n if (currentSetValue) {\n const errorState: UseMutationResult<TData, TError, TVariables> = {\n error: error,\n data: undefined,\n mutate,\n mutateAsync,\n reset: mockReset,\n context: undefined,\n failureCount: 1,\n isError: true,\n isIdle: false,\n isPaused: false,\n isSuccess: false,\n status: 'error',\n variables: variables!,\n failureReason: error,\n isPending: false,\n submittedAt: 0,\n }\n\n currentSetValue(\n prev =>\n ({ ...errorState, variables: prev.variables } as UseMutationResult<\n TData,\n TError,\n TVariables\n >),\n )\n } else {\n console.warn(\n 'setError called before mock mutation was rendered or setValue was captured.',\n )\n }\n }\n\n const setPending = () => {\n if (currentSetValue) {\n const pendingState: UseMutationResult<TData, TError, TVariables> = {\n data: undefined,\n error: null,\n mutate,\n mutateAsync,\n reset: mockReset,\n context: undefined,\n failureCount: 0,\n isError: false,\n isIdle: false,\n isPaused: false,\n isSuccess: false,\n status: 'pending',\n failureReason: null,\n isPending: true,\n submittedAt: 0,\n variables: variables!,\n }\n\n currentSetValue(\n prev =>\n ({ ...pendingState, variables: prev.variables } as UseMutationResult<\n TData,\n TError,\n TVariables\n >),\n )\n } else {\n console.warn(\n 'setPending called before mock mutation was rendered or setValue was captured.',\n )\n }\n }\n\n function setIdle() {\n if (currentSetValue) {\n const idleState: UseMutationResult<TData, TError, TVariables> = {\n data: undefined,\n error: null,\n mutate,\n mutateAsync,\n reset: mockReset,\n variables: undefined,\n context: undefined,\n failureCount: 0,\n isError: false,\n isIdle: true,\n isPaused: false,\n isSuccess: false,\n status: 'idle',\n failureReason: null,\n isPending: false,\n submittedAt: 0,\n }\n currentSetValue(idleState)\n } else {\n console.warn(\n 'setIdle called before mock mutation was rendered or setValue was captured.',\n )\n }\n }\n\n const mock = vi.fn(function useMutationMocked() {\n const [value, setValue] = useState<\n UseMutationResult<TData, TError, TVariables>\n >({\n data: undefined,\n error: null,\n mutate,\n mutateAsync,\n reset: mockReset,\n variables: undefined,\n context: undefined,\n failureCount: 0,\n isError: false,\n isIdle: true,\n isPaused: false,\n isSuccess: false,\n status: 'idle',\n failureReason: null,\n isPending: false,\n submittedAt: 0,\n })\n\n currentSetValue = setValue\n\n return value\n })\n return {\n mock: mock,\n mockMutate,\n mockMutateAsync,\n mockReset,\n setSuccess,\n setError,\n setPending,\n setIdle,\n }\n}\n\n/**\n * @deprecated Use {@link getUseMutationMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseMutationIdleMock<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TData = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TError = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TVariables = any,\n>(data?: TData) {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isError: false,\n isIdle: true,\n isPaused: false,\n isSuccess: false,\n mutate: vi.fn(),\n mutateAsync: vi.fn().mockResolvedValue(data),\n reset: vi.fn(),\n status: 'idle',\n variables: undefined,\n failureReason: null,\n isPending: false,\n submittedAt: 0,\n } satisfies UseMutationResult<TData, TError, TVariables>\n}\n\n/**\n * @deprecated Use {@link getUseMutationMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseMutationPendingMock<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TData = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TError = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TVariables = any,\n>(data?: TData, variables?: TVariables) {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isError: false,\n isIdle: false,\n isPaused: false,\n isSuccess: false,\n mutate: vi.fn(),\n mutateAsync: vi.fn().mockResolvedValue(data),\n reset: vi.fn(),\n status: 'pending',\n variables: variables!,\n failureReason: null,\n isPending: true,\n submittedAt: 0,\n } satisfies UseMutationResult<TData, TError, TVariables>\n}\n\n/**\n * @deprecated Use {@link getUseInfiniteQueryMock} instead, which provides utilities to dynamically change the state of the mock hook.\n */\nexport function getUseInfiniteQuerySuccessMock<TData>(\n pages: TData[],\n hasNextPage = false,\n): UseInfiniteQueryResult<{ pages: TData[] }, never> {\n return {\n data: {\n pages: pages,\n },\n error: null,\n isError: false,\n isPending: false,\n isLoading: false,\n isLoadingError: false,\n isRefetchError: false,\n isSuccess: true,\n status: 'success',\n fetchNextPage: vi.fn(),\n fetchPreviousPage: vi.fn(),\n hasNextPage: hasNextPage,\n hasPreviousPage: false,\n isFetchingNextPage: false,\n isFetchingPreviousPage: false,\n dataUpdatedAt: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n failureReason: null,\n errorUpdateCount: 0,\n isFetched: false,\n isFetchedAfterMount: false,\n isFetching: false,\n isInitialLoading: false,\n isPaused: false,\n isPlaceholderData: false,\n isRefetching: false,\n isStale: false,\n refetch: vi.fn(),\n fetchStatus: 'idle',\n isFetchNextPageError: false,\n isFetchPreviousPageError: false,\n promise: Promise.resolve({ pages }),\n } satisfies UseInfiniteQueryResult<{ pages: TData[] }, never>\n}\n\n/**\n * Returns a mock instance for useInfiniteQuery, as well as functions to manipulate the mock hook's state, and\n * mock functions for fetchNextPage, fetchPreviousPage, and refetch.\n *\n * Example usage:\n * ```tsx\n * const { mock, setSuccess } = getUseInfiniteQueryMock<MyDataType, MyErrorType>();\n *\n * // Set the mock implementation\n * myMockedHook.mockImplementation(mock);\n * // Update the hook's state to success with data\n * act(() => { myMockedHook.setSuccess(myDataArray, true); });\n * ```\n */\nexport function getUseInfiniteQueryMock<TData = unknown, TError = unknown>(): {\n mock: Mock<() => UseInfiniteQueryResult<InfiniteData<TData>, TError>>\n mockFetchNextPage: Mock\n setSuccess: (\n data: TData[],\n hasNextPage?: boolean,\n isFetchingNextPage?: boolean,\n ) => void\n setError: (error: TError) => void\n setLoading: () => void\n} {\n // Stable mock functions\n const mockFetchNextPage = vi.fn()\n const mockFetchPreviousPage = vi.fn()\n const mockRefetch = vi.fn()\n\n let currentSetValue: Dispatch<\n SetStateAction<UseInfiniteQueryResult<InfiniteData<TData>, TError>>\n > | null = null\n\n const setSuccess = (\n data: TData[],\n hasNextPage = false,\n isFetchingNextPage = false,\n ) => {\n if (currentSetValue) {\n const successState: UseInfiniteQueryResult<\n InfiniteData<TData>,\n TError\n > = {\n data: { pages: data, pageParams: [] },\n hasNextPage: hasNextPage,\n status: 'success',\n isSuccess: true,\n isPending: false,\n isLoading: false,\n isError: false,\n error: null,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isInitialLoading: false,\n isLoadingError: false,\n isRefetchError: false,\n isRefetching: false,\n fetchStatus: isFetchingNextPage ? 'fetching' : 'idle',\n isPaused: false,\n dataUpdatedAt: Date.now(),\n errorUpdatedAt: 0,\n errorUpdateCount: 0,\n failureCount: 0,\n failureReason: null,\n fetchNextPage: mockFetchNextPage,\n fetchPreviousPage: mockFetchPreviousPage,\n refetch: mockRefetch,\n hasPreviousPage: false,\n isFetchingNextPage: isFetchingNextPage,\n isFetchingPreviousPage: false,\n isPlaceholderData: false,\n isStale: false,\n isFetchPreviousPageError: false,\n isFetchNextPageError: false,\n promise: Promise.resolve({ pages: data, pageParams: [] }),\n }\n currentSetValue(successState)\n } else {\n console.warn(\n 'setSuccess called before useInfiniteQueryMock was rendered or setValue was captured.',\n )\n }\n }\n\n const setError = (error: TError) => {\n if (currentSetValue) {\n const errorState: UseInfiniteQueryResult<InfiniteData<TData>, TError> = {\n data: undefined,\n hasNextPage: false,\n status: 'error',\n isSuccess: false,\n isPending: false,\n isLoading: false,\n isError: true,\n error: error,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isInitialLoading: false,\n isLoadingError: true,\n isRefetchError: false,\n isRefetching: false,\n fetchStatus: 'idle',\n isPaused: false,\n dataUpdatedAt: Date.now(),\n errorUpdatedAt: 0,\n errorUpdateCount: 0,\n failureCount: 0,\n failureReason: null,\n fetchNextPage: mockFetchNextPage,\n fetchPreviousPage: mockFetchPreviousPage,\n refetch: mockRefetch,\n hasPreviousPage: false,\n isFetchingNextPage: false,\n isFetchingPreviousPage: false,\n isPlaceholderData: false,\n isStale: false,\n isFetchNextPageError: false,\n isFetchPreviousPageError: false,\n promise: new Promise(() => {}),\n }\n currentSetValue(errorState)\n } else {\n console.warn(\n 'setError called before useInfiniteQueryMock was rendered or setValue was captured.',\n )\n }\n }\n\n const setLoading = () => {\n if (currentSetValue) {\n const loadingState: UseInfiniteQueryResult<\n InfiniteData<TData>,\n TError\n > = {\n data: undefined,\n hasNextPage: false,\n status: 'pending',\n isSuccess: false,\n isPending: true,\n isLoading: true,\n isError: false,\n error: null,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isInitialLoading: false,\n isLoadingError: false,\n isRefetchError: false,\n isRefetching: false,\n fetchStatus: 'fetching',\n isPaused: false,\n dataUpdatedAt: Date.now(),\n errorUpdatedAt: 0,\n errorUpdateCount: 0,\n failureCount: 0,\n failureReason: null,\n fetchNextPage: mockFetchNextPage,\n fetchPreviousPage: mockFetchPreviousPage,\n refetch: mockRefetch,\n hasPreviousPage: false,\n isFetchingNextPage: true,\n isFetchingPreviousPage: false,\n isPlaceholderData: false,\n isStale: false,\n isFetchNextPageError: false,\n isFetchPreviousPageError: false,\n promise: new Promise(() => {}),\n }\n currentSetValue(loadingState)\n } else {\n console.warn(\n 'setError called before useInfiniteQueryMock was rendered or setValue was captured.',\n )\n }\n }\n\n const mock = vi.fn(function useMockInfiniteQuery() {\n const [value, setValue] = useState<\n UseInfiniteQueryResult<InfiniteData<TData>, TError>\n >({\n data: undefined,\n fetchStatus: 'fetching',\n dataUpdatedAt: 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n failureCount: 0,\n failureReason: null,\n fetchNextPage: mockFetchNextPage,\n fetchPreviousPage: mockFetchPreviousPage,\n hasNextPage: false,\n hasPreviousPage: false,\n isError: false,\n isFetched: false,\n isFetchedAfterMount: false,\n isFetching: false,\n isFetchingNextPage: false,\n isFetchingPreviousPage: false,\n isInitialLoading: false,\n isLoading: true,\n isLoadingError: false,\n isPaused: false,\n isPending: true,\n isPlaceholderData: false,\n isRefetchError: false,\n isRefetching: false,\n isStale: false,\n isSuccess: false,\n refetch: mockRefetch,\n status: 'pending',\n isFetchNextPageError: false,\n isFetchPreviousPageError: false,\n promise: new Promise(() => {}),\n })\n\n currentSetValue = setValue\n\n return value\n })\n return {\n mock: mock,\n mockFetchNextPage: mockFetchNextPage,\n setSuccess,\n setError,\n setLoading,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.js","names":[],"sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["import React from 'react'\nimport { createTheme, StyledEngineProvider, ThemeOptions } from '@mui/material'\nimport { ThemeProvider as MuiThemeProvider } from '@mui/material/styles'\nimport { PropsWithChildren, useMemo } from 'react'\nimport defaultMuiThemeOptions from './DefaultTheme'\nimport { mergeTheme } from './mergeTheme'\n\nexport type ThemeProviderProps = PropsWithChildren<{\n theme?: ThemeOptions\n injectFirst?: boolean\n}>\n\nexport const ThemeProvider = ({\n theme = defaultMuiThemeOptions,\n injectFirst,\n children,\n}: ThemeProviderProps): React.ReactNode => {\n const mergedTheme = useMemo(() => mergeTheme(theme), [theme])\n const muiTheme = createTheme(mergedTheme)\n return (\n <StyledEngineProvider injectFirst={injectFirst}>\n <MuiThemeProvider theme={muiTheme}>{children}</MuiThemeProvider>\n </StyledEngineProvider>\n )\n}\n"],"mappings":";;;;;;;AAYA,IAAa,KAAiB,EAC5B,WAAQ,GACR,gBACA,kBAKE,kBAAC,GAAD;CAAmC;WACjC,kBAAC,GAAD;EAAkB,OAHL,EADG,QAAc,EAAW,EAAM,EAAE,CAAC,EAAM,
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","names":[],"sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["import React from 'react'\nimport { createTheme, StyledEngineProvider, ThemeOptions } from '@mui/material'\nimport { ThemeProvider as MuiThemeProvider } from '@mui/material/styles'\nimport { PropsWithChildren, useMemo } from 'react'\nimport defaultMuiThemeOptions from './DefaultTheme'\nimport { mergeTheme } from './mergeTheme'\n\nexport type ThemeProviderProps = PropsWithChildren<{\n theme?: ThemeOptions\n injectFirst?: boolean\n}>\n\nexport const ThemeProvider = ({\n theme = defaultMuiThemeOptions,\n injectFirst,\n children,\n}: ThemeProviderProps): React.ReactNode => {\n const mergedTheme = useMemo(() => mergeTheme(theme), [theme])\n const muiTheme = createTheme(mergedTheme)\n return (\n <StyledEngineProvider injectFirst={injectFirst}>\n <MuiThemeProvider theme={muiTheme}>{children}</MuiThemeProvider>\n </StyledEngineProvider>\n )\n}\n"],"mappings":";;;;;;;AAYA,IAAa,KAAiB,EAC5B,WAAQ,GACR,gBACA,kBAKE,kBAAC,GAAD;CAAmC;WACjC,kBAAC,GAAD;EAAkB,OAHL,EADG,QAAc,EAAW,EAAM,EAAE,CAAC,EAAM,CAC/B,CAGA;EAAW;EAA4B,CAAA;CAC3C,CAAA"}
|