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":"discussionHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/discussionHandlers.ts"],"sourcesContent":["import { FORUM, FORUM_THREAD, THREAD } from '@/utils/APIConstants'\nimport {\n CreateDiscussionThread,\n DiscussionFilter,\n DiscussionThreadBundle,\n Forum,\n PaginatedIds,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport { http, HttpResponse } from 'msw'\nimport {\n mockDiscussionThreadBundles,\n mockForums,\n} from '../../discussion/mock_discussion'\nimport mockProject from '../../entity/mockProject'\nimport { MOCK_USER_ID } from '../../user/mock_user_profile'\nimport { SynapseApiResponse } from '../handlers'\nimport BasicMockedCrudService from '../util/BasicMockedCrudService'\n\nconst forumService = new BasicMockedCrudService<Forum, 'id'>({\n initialData: mockForums,\n idField: 'id',\n autoGenerateId: true,\n})\n\nconst threadService = new BasicMockedCrudService<DiscussionThreadBundle, 'id'>({\n initialData: mockDiscussionThreadBundles,\n idField: 'id',\n autoGenerateId: true,\n})\n\nfunction getAllThreadsMatchingForum(forumId: string, filter: DiscussionFilter) {\n return threadService\n .getMany(thread => thread.forumId === forumId)\n .filter(thread => {\n switch (filter) {\n case DiscussionFilter.NO_FILTER:\n return true\n case DiscussionFilter.DELETED_ONLY:\n return thread.isDeleted\n case DiscussionFilter.EXCLUDE_DELETED:\n return !thread.isDeleted\n }\n })\n}\n\nexport function getDiscussionHandlers(backendOrigin: string) {\n return [\n http.get(`${backendOrigin}${FORUM}/:id`, ({ params }) => {\n let status = 404\n let resp: SynapseApiResponse<Forum> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `MSW could not find a mock forum object with ID ${params.id}`,\n }\n\n const match = forumService.getOneById(params.id as string)\n if (match) {\n status = 200\n resp = match\n }\n\n return HttpResponse.json(resp, { status: status })\n }),\n\n http.get(`${backendOrigin}${THREAD}/:id`, ({ params }) => {\n let status = 404\n let resp: SynapseApiResponse<Forum> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `MSW could not find a mock discussion thread bundle object with ID ${params.id}`,\n }\n if (params.id === 'messageUrl') {\n // This is a different endpoint\n resp = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: 'GET /thread/messageUrl is not yet implemented',\n }\n }\n\n const match = threadService.getOneById(params.id as string)\n if (match) {\n status = 200\n resp = match\n }\n\n return HttpResponse.json(resp, { status: status })\n }),\n\n http.post<never, CreateDiscussionThread>(\n `${backendOrigin}${THREAD}`,\n async ({ request }) => {\n const requestBody = await request.json()\n\n const newDiscussionThreadBundle = threadService.create({\n forumId: requestBody.forumId,\n projectId: mockProject.id,\n title: requestBody.title,\n createdOn: new Date().toISOString(),\n createdBy: String(MOCK_USER_ID),\n modifiedOn: new Date().toISOString(),\n etag: 'etag',\n messageKey: 'todo key',\n numberOfViews: 0,\n numberOfReplies: 0,\n lastActivity: new Date().toISOString(),\n activeAuthors: [String(MOCK_USER_ID)],\n isEdited: false,\n isDeleted: false,\n isPinned: false,\n })\n\n return HttpResponse.json(newDiscussionThreadBundle, { status: 201 })\n },\n ),\n\n http.get(\n `${backendOrigin}${FORUM_THREAD(':forumId')}`,\n ({ params, request }) => {\n const offsetParam = new URL(request.url).searchParams.get('offset')\n const offset = offsetParam ? parseInt(offsetParam) : 0\n const limitParam = new URL(request.url).searchParams.get('limit')\n const limit = limitParam ? parseInt(limitParam) : 10\n const filter: DiscussionFilter =\n (params.filter as DiscussionFilter) ??\n DiscussionFilter.EXCLUDE_DELETED\n\n const matchingThreads = getAllThreadsMatchingForum(\n params.forumId as string,\n filter,\n )\n\n const response: SynapseApiResponse<\n PaginatedResults<DiscussionThreadBundle>\n > = {\n results: matchingThreads.slice(offset, offset + limit),\n totalNumberOfResults: matchingThreads.length,\n }\n return HttpResponse.json(response, { status: 200 })\n },\n ),\n http.get(`${backendOrigin}${FORUM}/:id/moderators`, () => {\n const resp: PaginatedIds = {\n results: [String(MOCK_USER_ID)],\n totalNumberOfResults: 1,\n }\n return HttpResponse.json(resp, { status: 200 })\n }),\n ]\n}\n"],"mappings":";;;;;;;;AAmBA,IAAM,IAAe,IAAI,EAAoC;CAC3D,aAAa;CACb,SAAS;CACT,gBAAgB;CACjB,CAAC,EAEI,IAAgB,IAAI,EAAqD;CAC7E,aAAa;CACb,SAAS;CACT,gBAAgB;CACjB,CAAC;AAEF,SAAS,EAA2B,GAAiB,GAA0B;AAC7E,QAAO,EACJ,SAAQ,MAAU,EAAO,YAAY,EAAQ,CAC7C,QAAO,MAAU;AAChB,UAAQ,GAAR;GACE,KAAK,EAAiB,UACpB,QAAO;GACT,KAAK,EAAiB,aACpB,QAAO,EAAO;GAChB,KAAK,EAAiB,gBACpB,QAAO,CAAC,EAAO;;GAEnB;;AAGN,SAAgB,EAAsB,GAAuB;AAC3D,QAAO;EACL,EAAK,IAAI,GAAG,IAAgB,EAAM,QAAQ,EAAE,gBAAa;GACvD,IAAI,IAAS,KACT,IAAkC;IACpC,cAAc;IACd,QAAQ,kDAAkD,EAAO;IAClE,EAEK,IAAQ,EAAa,WAAW,EAAO,GAAa;AAM1D,UALI,MACF,IAAS,KACT,IAAO,IAGF,EAAa,KAAK,GAAM,EAAU,WAAQ,CAAC;IAClD;EAEF,EAAK,IAAI,GAAG,IAAgB,EAAO,QAAQ,EAAE,gBAAa;GACxD,IAAI,IAAS,KACT,IAAkC;IACpC,cAAc;IACd,QAAQ,qEAAqE,EAAO;IACrF;AACD,GAAI,EAAO,OAAO,iBAEhB,IAAO;IACL,cAAc;IACd,QAAQ;IACT;GAGH,IAAM,IAAQ,EAAc,WAAW,EAAO,GAAa;AAM3D,UALI,MACF,IAAS,KACT,IAAO,IAGF,EAAa,KAAK,GAAM,EAAU,WAAQ,CAAC;IAClD;EAEF,EAAK,KACH,GAAG,IAAgB,KACnB,OAAO,EAAE,iBAAc;GACrB,IAAM,IAAc,MAAM,EAAQ,MAAM,EAElC,IAA4B,EAAc,OAAO;IACrD,SAAS,EAAY;IACrB,WAAW,EAAY;IACvB,OAAO,EAAY;IACnB,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,WAAW;IACX,6BAAY,IAAI,MAAM,EAAC,aAAa;IACpC,MAAM;IACN,YAAY;IACZ,eAAe;IACf,iBAAiB;IACjB,+BAAc,IAAI,MAAM,EAAC,aAAa;IACtC,eAAe,CAAC,MAAqB;IACrC,UAAU;IACV,WAAW;IACX,UAAU;IACX,CAAC;AAEF,UAAO,EAAa,KAAK,GAA2B,EAAE,QAAQ,KAAK,CAAC;IAEvE;EAED,EAAK,IACH,GAAG,IAAgB,EAAa,WAAW,KAC1C,EAAE,WAAQ,iBAAc;GACvB,IAAM,IAAc,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IAAI,SAAS,EAC7D,IAAS,IAAc,SAAS,EAAY,GAAG,GAC/C,IAAa,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IAAI,QAAQ,EAC3D,IAAQ,IAAa,SAAS,EAAW,GAAG,IAC5C,IACH,EAAO,UACR,EAAiB,iBAEb,IAAkB,EACtB,EAAO,SACP,EACD,EAEK,IAEF;IACF,SAAS,EAAgB,MAAM,GAAQ,IAAS,EAAM;IACtD,sBAAsB,EAAgB;IACvC;AACD,UAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IAEtD;EACD,EAAK,IAAI,GAAG,IAAgB,EAAM,wBAKzB,EAAa,
|
|
1
|
+
{"version":3,"file":"discussionHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/discussionHandlers.ts"],"sourcesContent":["import { FORUM, FORUM_THREAD, THREAD } from '@/utils/APIConstants'\nimport {\n CreateDiscussionThread,\n DiscussionFilter,\n DiscussionThreadBundle,\n Forum,\n PaginatedIds,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport { http, HttpResponse } from 'msw'\nimport {\n mockDiscussionThreadBundles,\n mockForums,\n} from '../../discussion/mock_discussion'\nimport mockProject from '../../entity/mockProject'\nimport { MOCK_USER_ID } from '../../user/mock_user_profile'\nimport { SynapseApiResponse } from '../handlers'\nimport BasicMockedCrudService from '../util/BasicMockedCrudService'\n\nconst forumService = new BasicMockedCrudService<Forum, 'id'>({\n initialData: mockForums,\n idField: 'id',\n autoGenerateId: true,\n})\n\nconst threadService = new BasicMockedCrudService<DiscussionThreadBundle, 'id'>({\n initialData: mockDiscussionThreadBundles,\n idField: 'id',\n autoGenerateId: true,\n})\n\nfunction getAllThreadsMatchingForum(forumId: string, filter: DiscussionFilter) {\n return threadService\n .getMany(thread => thread.forumId === forumId)\n .filter(thread => {\n switch (filter) {\n case DiscussionFilter.NO_FILTER:\n return true\n case DiscussionFilter.DELETED_ONLY:\n return thread.isDeleted\n case DiscussionFilter.EXCLUDE_DELETED:\n return !thread.isDeleted\n }\n })\n}\n\nexport function getDiscussionHandlers(backendOrigin: string) {\n return [\n http.get(`${backendOrigin}${FORUM}/:id`, ({ params }) => {\n let status = 404\n let resp: SynapseApiResponse<Forum> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `MSW could not find a mock forum object with ID ${params.id}`,\n }\n\n const match = forumService.getOneById(params.id as string)\n if (match) {\n status = 200\n resp = match\n }\n\n return HttpResponse.json(resp, { status: status })\n }),\n\n http.get(`${backendOrigin}${THREAD}/:id`, ({ params }) => {\n let status = 404\n let resp: SynapseApiResponse<Forum> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `MSW could not find a mock discussion thread bundle object with ID ${params.id}`,\n }\n if (params.id === 'messageUrl') {\n // This is a different endpoint\n resp = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: 'GET /thread/messageUrl is not yet implemented',\n }\n }\n\n const match = threadService.getOneById(params.id as string)\n if (match) {\n status = 200\n resp = match\n }\n\n return HttpResponse.json(resp, { status: status })\n }),\n\n http.post<never, CreateDiscussionThread>(\n `${backendOrigin}${THREAD}`,\n async ({ request }) => {\n const requestBody = await request.json()\n\n const newDiscussionThreadBundle = threadService.create({\n forumId: requestBody.forumId,\n projectId: mockProject.id,\n title: requestBody.title,\n createdOn: new Date().toISOString(),\n createdBy: String(MOCK_USER_ID),\n modifiedOn: new Date().toISOString(),\n etag: 'etag',\n messageKey: 'todo key',\n numberOfViews: 0,\n numberOfReplies: 0,\n lastActivity: new Date().toISOString(),\n activeAuthors: [String(MOCK_USER_ID)],\n isEdited: false,\n isDeleted: false,\n isPinned: false,\n })\n\n return HttpResponse.json(newDiscussionThreadBundle, { status: 201 })\n },\n ),\n\n http.get(\n `${backendOrigin}${FORUM_THREAD(':forumId')}`,\n ({ params, request }) => {\n const offsetParam = new URL(request.url).searchParams.get('offset')\n const offset = offsetParam ? parseInt(offsetParam) : 0\n const limitParam = new URL(request.url).searchParams.get('limit')\n const limit = limitParam ? parseInt(limitParam) : 10\n const filter: DiscussionFilter =\n (params.filter as DiscussionFilter) ??\n DiscussionFilter.EXCLUDE_DELETED\n\n const matchingThreads = getAllThreadsMatchingForum(\n params.forumId as string,\n filter,\n )\n\n const response: SynapseApiResponse<\n PaginatedResults<DiscussionThreadBundle>\n > = {\n results: matchingThreads.slice(offset, offset + limit),\n totalNumberOfResults: matchingThreads.length,\n }\n return HttpResponse.json(response, { status: 200 })\n },\n ),\n http.get(`${backendOrigin}${FORUM}/:id/moderators`, () => {\n const resp: PaginatedIds = {\n results: [String(MOCK_USER_ID)],\n totalNumberOfResults: 1,\n }\n return HttpResponse.json(resp, { status: 200 })\n }),\n ]\n}\n"],"mappings":";;;;;;;;AAmBA,IAAM,IAAe,IAAI,EAAoC;CAC3D,aAAa;CACb,SAAS;CACT,gBAAgB;CACjB,CAAC,EAEI,IAAgB,IAAI,EAAqD;CAC7E,aAAa;CACb,SAAS;CACT,gBAAgB;CACjB,CAAC;AAEF,SAAS,EAA2B,GAAiB,GAA0B;AAC7E,QAAO,EACJ,SAAQ,MAAU,EAAO,YAAY,EAAQ,CAC7C,QAAO,MAAU;AAChB,UAAQ,GAAR;GACE,KAAK,EAAiB,UACpB,QAAO;GACT,KAAK,EAAiB,aACpB,QAAO,EAAO;GAChB,KAAK,EAAiB,gBACpB,QAAO,CAAC,EAAO;;GAEnB;;AAGN,SAAgB,EAAsB,GAAuB;AAC3D,QAAO;EACL,EAAK,IAAI,GAAG,IAAgB,EAAM,QAAQ,EAAE,gBAAa;GACvD,IAAI,IAAS,KACT,IAAkC;IACpC,cAAc;IACd,QAAQ,kDAAkD,EAAO;IAClE,EAEK,IAAQ,EAAa,WAAW,EAAO,GAAa;AAM1D,UALI,MACF,IAAS,KACT,IAAO,IAGF,EAAa,KAAK,GAAM,EAAU,WAAQ,CAAC;IAClD;EAEF,EAAK,IAAI,GAAG,IAAgB,EAAO,QAAQ,EAAE,gBAAa;GACxD,IAAI,IAAS,KACT,IAAkC;IACpC,cAAc;IACd,QAAQ,qEAAqE,EAAO;IACrF;AACD,GAAI,EAAO,OAAO,iBAEhB,IAAO;IACL,cAAc;IACd,QAAQ;IACT;GAGH,IAAM,IAAQ,EAAc,WAAW,EAAO,GAAa;AAM3D,UALI,MACF,IAAS,KACT,IAAO,IAGF,EAAa,KAAK,GAAM,EAAU,WAAQ,CAAC;IAClD;EAEF,EAAK,KACH,GAAG,IAAgB,KACnB,OAAO,EAAE,iBAAc;GACrB,IAAM,IAAc,MAAM,EAAQ,MAAM,EAElC,IAA4B,EAAc,OAAO;IACrD,SAAS,EAAY;IACrB,WAAW,EAAY;IACvB,OAAO,EAAY;IACnB,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,WAAW;IACX,6BAAY,IAAI,MAAM,EAAC,aAAa;IACpC,MAAM;IACN,YAAY;IACZ,eAAe;IACf,iBAAiB;IACjB,+BAAc,IAAI,MAAM,EAAC,aAAa;IACtC,eAAe,CAAC,MAAqB;IACrC,UAAU;IACV,WAAW;IACX,UAAU;IACX,CAAC;AAEF,UAAO,EAAa,KAAK,GAA2B,EAAE,QAAQ,KAAK,CAAC;IAEvE;EAED,EAAK,IACH,GAAG,IAAgB,EAAa,WAAW,KAC1C,EAAE,WAAQ,iBAAc;GACvB,IAAM,IAAc,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IAAI,SAAS,EAC7D,IAAS,IAAc,SAAS,EAAY,GAAG,GAC/C,IAAa,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IAAI,QAAQ,EAC3D,IAAQ,IAAa,SAAS,EAAW,GAAG,IAC5C,IACH,EAAO,UACR,EAAiB,iBAEb,IAAkB,EACtB,EAAO,SACP,EACD,EAEK,IAEF;IACF,SAAS,EAAgB,MAAM,GAAQ,IAAS,EAAM;IACtD,sBAAsB,EAAgB;IACvC;AACD,UAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IAEtD;EACD,EAAK,IAAI,GAAG,IAAgB,EAAM,wBAKzB,EAAa,KAAK;GAHvB,SAAS,CAAC,MAAqB;GAC/B,sBAAsB;GAEC,EAAM,EAAE,QAAQ,KAAK,CAAC,CAC/C;EACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/entityHandlers.ts"],"sourcesContent":["import {\n ENTITY,\n ENTITY_BUNDLE_V2,\n ENTITY_HEADERS,\n ENTITY_ID,\n ENTITY_ID_VERSION,\n ENTITY_ID_VERSIONS,\n ENTITY_JSON,\n ENTITY_SCHEMA_BINDING,\n} from '@/utils/APIConstants'\nimport { normalizeSynPrefix } from '@/utils/functions/EntityTypeUtils'\nimport {\n ErrorResponse,\n UploadDestination,\n} from '@sage-bionetworks/synapse-client'\nimport {\n AccessControlList,\n Entity,\n EntityBundle,\n EntityHeader,\n EntityJson,\n EntityPath,\n PaginatedResults,\n ProjectHeaderList,\n Reference,\n VersionableEntity,\n VersionInfo,\n} from '@sage-bionetworks/synapse-types'\nimport { uniqueId } from 'lodash-es'\nimport { http, HttpResponse } from 'msw'\nimport mockEntities, { mockProjectsEntityData } from '../../entity'\nimport { MOCK_INVALID_PROJECT_NAME } from '../../entity/mockEntity'\nimport { MockEntityData } from '../../entity/MockEntityData'\nimport {\n mockSynapseStorageUploadDestination,\n mockUploadDestinations,\n} from '../../mock_upload_destination'\nimport { mockSchemaBinding } from '../../mockSchema'\nimport { SynapseApiResponse } from '../handlers'\n\nfunction getMatchingMockEntities(entityIds: string[]): MockEntityData[] {\n const normalizedPassedIds = entityIds.map(normalizeSynPrefix)\n return mockEntities.filter(entity =>\n normalizedPassedIds.includes(normalizeSynPrefix(entity.id)),\n )\n}\nfunction getMatchingMockEntity(entityId: string): MockEntityData | undefined {\n const matches = getMatchingMockEntities([entityId])\n if (matches.length == 0) {\n return undefined\n }\n return matches[0]\n}\n\nexport function getEntityBundleHandler(\n backendOrigin: string,\n bundle?: Partial<EntityBundle>,\n) {\n return http.post(\n `${backendOrigin}${ENTITY_BUNDLE_V2(':entityId')}`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityBundle> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n if (bundle) {\n response = bundle as EntityBundle\n status = 200\n } else {\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData?.bundle) {\n response = entityData.bundle\n status = 200\n }\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport function getEntityJsonHandler(\n backendOrigin: string,\n entityJson?: Partial<EntityJson>,\n) {\n return http.get(\n `${backendOrigin}${ENTITY_JSON(':entityId')}`,\n\n () => {\n const response = entityJson\n return HttpResponse.json(response, { status: 200 })\n },\n )\n}\n\nexport function getVersionedEntityBundleHandler(\n backendOrigin: string,\n bundle?: Partial<EntityBundle>,\n) {\n return http.post(\n `${backendOrigin}${ENTITY_BUNDLE_V2(':entityId', ':versionNumber')}`,\n ({ params }) => {\n const entityId = params.entityId as string\n const versionNumber = parseInt(params.versionNumber as string)\n let status = 404\n let response: SynapseApiResponse<EntityBundle> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${entityId}`,\n }\n if (bundle) {\n response = bundle as EntityBundle\n status = 200\n } else {\n const entityData = getMatchingMockEntity(entityId)\n if (entityData) {\n const bundle = entityData.bundle\n if (entityData.versions && entityData.versions[versionNumber]) {\n response = {\n ...bundle,\n entity: entityData.versions[versionNumber],\n } as EntityBundle\n } else {\n response = bundle as EntityBundle\n }\n status = 200\n }\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport const getEntityHandlers = (backendOrigin: string) => [\n /**\n * Create a new entity\n */\n http.post<never, Entity>(`${backendOrigin}${ENTITY}`, async ({ request }) => {\n let status = 200\n const requestBody = await request.json()\n let response: SynapseApiResponse<Entity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: '...',\n }\n if (!requestBody) {\n status = 400\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock service worker received the following malformed body for PUT ${ENTITY} : ${JSON.stringify(\n requestBody,\n )}`,\n }\n } else {\n if (requestBody.name === MOCK_INVALID_PROJECT_NAME) {\n ;(response as ErrorResponse).reason = 'Invalid project name'\n status = 403\n } else {\n response = { id: uniqueId('syn'), ...requestBody }\n }\n }\n\n return HttpResponse.json(response, { status })\n }),\n\n /**\n * Get entity by ID\n */\n http.get(`${backendOrigin}${ENTITY_ID(':entityId')}`, ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<Entity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity with ID ${params.entityId}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData) {\n response = entityData.entity\n status = 200\n }\n return HttpResponse.json(response, { status })\n }),\n\n http.get(\n `${backendOrigin}${ENTITY_ID_VERSIONS(':entityId')}`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<PaginatedResults<VersionInfo>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find mock entity versions for ID ${params.entityId}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData && entityData.versionInfo) {\n response = { results: entityData.versionInfo }\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get<{ entityId: string; versionNumber: string }>(\n `${backendOrigin}${ENTITY_ID_VERSION(':entityId', ':versionNumber')}`,\n ({ params }) => {\n let status = 404\n const entityId = params.entityId\n const versionNumber = params.versionNumber.toString()\n const requestedVersionNumber = parseInt(versionNumber)\n\n let response: SynapseApiResponse<VersionableEntity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock versioned entity with ID ${entityId}.${versionNumber}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId)\n if (\n entityData &&\n entityData.versions &&\n entityData.versions[requestedVersionNumber]\n ) {\n response = entityData.versions[\n requestedVersionNumber\n ] as VersionableEntity\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n ),\n\n getEntityBundleHandler(backendOrigin),\n getVersionedEntityBundleHandler(backendOrigin),\n\n http.get(`${backendOrigin}${ENTITY_SCHEMA_BINDING(':entityId')}`, () => {\n return HttpResponse.json(mockSchemaBinding, { status: 200 })\n }),\n http.get(\n `${backendOrigin}${ENTITY_JSON(':entityId')}`,\n\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityJson> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData?.json) {\n response = entityData.json\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.post<{ entityId: string }, { references: Reference[] }>(\n `${backendOrigin}${ENTITY_HEADERS}`,\n\n async ({ params, request }) => {\n let status = 404\n let response: SynapseApiResponse<PaginatedResults<EntityHeader>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n\n const referenceList = await request.json()\n const entityData: EntityHeader[] = referenceList.references\n .map(ref => {\n const entityHeader = getMatchingMockEntity(ref.targetId)?.entityHeader\n if (entityHeader) {\n return {\n ...entityHeader,\n // ID should match what is passed in (i.e. may or may not have syn prefix)\n id: ref.targetId,\n }\n }\n return undefined\n })\n .filter((header): header is EntityHeader => !!header)\n\n if (entityData) {\n response = { results: entityData }\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(\n `${backendOrigin}${ENTITY_ID(':entityId')}/path`,\n\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityPath> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity path using ID ${params.entityId}`,\n }\n const entityData = getMatchingMockEntity(params.entityId as string)\n\n if (entityData && entityData.path) {\n response = entityData.path\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(`${backendOrigin}/file/v1/entity/:id/uploadDestination`, () => {\n const response: UploadDestination = mockSynapseStorageUploadDestination\n return HttpResponse.json(response, { status: 200 })\n }),\n\n http.get(\n `${backendOrigin}/file/v1/entity/:id/uploadDestination/:storageLocationId`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<UploadDestination> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find an uploadDestination using storageLocationId ${params.storageLocationId}`,\n }\n const uploadDestination = mockUploadDestinations.find(\n e => Number(params.storageLocationId) === e.storageLocationId,\n )\n\n if (uploadDestination) {\n response = uploadDestination\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(`${backendOrigin}/repo/v1/projects`, () => {\n const response: ProjectHeaderList = {\n results: mockProjectsEntityData.map(p => ({\n name: p.name,\n id: p.id,\n lastActivity: '2024-01-04T21:11:59.000Z',\n modifiedBy: parseInt(p.entity.modifiedBy!),\n modifiedOn: p.entity.modifiedOn!,\n })),\n }\n return HttpResponse.json(response, { status: 200 })\n }),\n\n http.post<{ entityId: string }, AccessControlList>(\n `${backendOrigin}${ENTITY_ID(':entityId')}/acl`,\n async ({ params, request }) => {\n const entityData = getMatchingMockEntity(params.entityId)\n let status: number\n let response: SynapseApiResponse<AccessControlList>\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (entityData.bundle?.accessControlList) {\n status = 403\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: 'Resource already has an ACL.',\n }\n } else {\n response = await request.json()\n status = 201\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.put<{ entityId: string }, AccessControlList>(\n `${backendOrigin}${ENTITY_ID(':entityId')}/acl`,\n async ({ params, request }) => {\n const entityData = getMatchingMockEntity(params.entityId)\n\n let status: number\n let response: SynapseApiResponse<AccessControlList>\n\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (!entityData?.bundle?.accessControlList) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason:\n 'Cannot update ACL for a resource which inherits its permissions.',\n }\n status = 403\n } else {\n response = await request.json()\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.delete(`${backendOrigin}${ENTITY_ID(':entityId')}/acl`, ({ params }) => {\n const entityData = getMatchingMockEntity(params.entityId as string)\n\n let status: number\n let response: SynapseApiResponse<''>\n\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (!entityData?.bundle?.accessControlList) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason:\n 'Cannot delete ACL for a resource which inherits its permissions.',\n }\n status = 403\n } else {\n response = ''\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n }),\n]\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entityHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/entityHandlers.ts"],"sourcesContent":["import {\n ENTITY,\n ENTITY_BUNDLE_V2,\n ENTITY_HEADERS,\n ENTITY_ID,\n ENTITY_ID_VERSION,\n ENTITY_ID_VERSIONS,\n ENTITY_JSON,\n ENTITY_SCHEMA_BINDING,\n} from '@/utils/APIConstants'\nimport { normalizeSynPrefix } from '@/utils/functions/EntityTypeUtils'\nimport {\n ErrorResponse,\n UploadDestination,\n} from '@sage-bionetworks/synapse-client'\nimport {\n AccessControlList,\n Entity,\n EntityBundle,\n EntityHeader,\n EntityJson,\n EntityPath,\n PaginatedResults,\n ProjectHeaderList,\n Reference,\n VersionableEntity,\n VersionInfo,\n} from '@sage-bionetworks/synapse-types'\nimport { uniqueId } from 'lodash-es'\nimport { http, HttpResponse } from 'msw'\nimport mockEntities, { mockProjectsEntityData } from '../../entity'\nimport { MOCK_INVALID_PROJECT_NAME } from '../../entity/mockEntity'\nimport { MockEntityData } from '../../entity/MockEntityData'\nimport {\n mockSynapseStorageUploadDestination,\n mockUploadDestinations,\n} from '../../mock_upload_destination'\nimport { mockSchemaBinding } from '../../mockSchema'\nimport { SynapseApiResponse } from '../handlers'\n\nfunction getMatchingMockEntities(entityIds: string[]): MockEntityData[] {\n const normalizedPassedIds = entityIds.map(normalizeSynPrefix)\n return mockEntities.filter(entity =>\n normalizedPassedIds.includes(normalizeSynPrefix(entity.id)),\n )\n}\nfunction getMatchingMockEntity(entityId: string): MockEntityData | undefined {\n const matches = getMatchingMockEntities([entityId])\n if (matches.length == 0) {\n return undefined\n }\n return matches[0]\n}\n\nexport function getEntityBundleHandler(\n backendOrigin: string,\n bundle?: Partial<EntityBundle>,\n) {\n return http.post(\n `${backendOrigin}${ENTITY_BUNDLE_V2(':entityId')}`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityBundle> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n if (bundle) {\n response = bundle as EntityBundle\n status = 200\n } else {\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData?.bundle) {\n response = entityData.bundle\n status = 200\n }\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport function getEntityJsonHandler(\n backendOrigin: string,\n entityJson?: Partial<EntityJson>,\n) {\n return http.get(\n `${backendOrigin}${ENTITY_JSON(':entityId')}`,\n\n () => {\n const response = entityJson\n return HttpResponse.json(response, { status: 200 })\n },\n )\n}\n\nexport function getVersionedEntityBundleHandler(\n backendOrigin: string,\n bundle?: Partial<EntityBundle>,\n) {\n return http.post(\n `${backendOrigin}${ENTITY_BUNDLE_V2(':entityId', ':versionNumber')}`,\n ({ params }) => {\n const entityId = params.entityId as string\n const versionNumber = parseInt(params.versionNumber as string)\n let status = 404\n let response: SynapseApiResponse<EntityBundle> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${entityId}`,\n }\n if (bundle) {\n response = bundle as EntityBundle\n status = 200\n } else {\n const entityData = getMatchingMockEntity(entityId)\n if (entityData) {\n const bundle = entityData.bundle\n if (entityData.versions && entityData.versions[versionNumber]) {\n response = {\n ...bundle,\n entity: entityData.versions[versionNumber],\n } as EntityBundle\n } else {\n response = bundle as EntityBundle\n }\n status = 200\n }\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport const getEntityHandlers = (backendOrigin: string) => [\n /**\n * Create a new entity\n */\n http.post<never, Entity>(`${backendOrigin}${ENTITY}`, async ({ request }) => {\n let status = 200\n const requestBody = await request.json()\n let response: SynapseApiResponse<Entity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: '...',\n }\n if (!requestBody) {\n status = 400\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock service worker received the following malformed body for PUT ${ENTITY} : ${JSON.stringify(\n requestBody,\n )}`,\n }\n } else {\n if (requestBody.name === MOCK_INVALID_PROJECT_NAME) {\n ;(response as ErrorResponse).reason = 'Invalid project name'\n status = 403\n } else {\n response = { id: uniqueId('syn'), ...requestBody }\n }\n }\n\n return HttpResponse.json(response, { status })\n }),\n\n /**\n * Get entity by ID\n */\n http.get(`${backendOrigin}${ENTITY_ID(':entityId')}`, ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<Entity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity with ID ${params.entityId}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData) {\n response = entityData.entity\n status = 200\n }\n return HttpResponse.json(response, { status })\n }),\n\n http.get(\n `${backendOrigin}${ENTITY_ID_VERSIONS(':entityId')}`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<PaginatedResults<VersionInfo>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find mock entity versions for ID ${params.entityId}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData && entityData.versionInfo) {\n response = { results: entityData.versionInfo }\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get<{ entityId: string; versionNumber: string }>(\n `${backendOrigin}${ENTITY_ID_VERSION(':entityId', ':versionNumber')}`,\n ({ params }) => {\n let status = 404\n const entityId = params.entityId\n const versionNumber = params.versionNumber.toString()\n const requestedVersionNumber = parseInt(versionNumber)\n\n let response: SynapseApiResponse<VersionableEntity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock versioned entity with ID ${entityId}.${versionNumber}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId)\n if (\n entityData &&\n entityData.versions &&\n entityData.versions[requestedVersionNumber]\n ) {\n response = entityData.versions[\n requestedVersionNumber\n ] as VersionableEntity\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n ),\n\n getEntityBundleHandler(backendOrigin),\n getVersionedEntityBundleHandler(backendOrigin),\n\n http.get(`${backendOrigin}${ENTITY_SCHEMA_BINDING(':entityId')}`, () => {\n return HttpResponse.json(mockSchemaBinding, { status: 200 })\n }),\n http.get(\n `${backendOrigin}${ENTITY_JSON(':entityId')}`,\n\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityJson> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData?.json) {\n response = entityData.json\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.post<{ entityId: string }, { references: Reference[] }>(\n `${backendOrigin}${ENTITY_HEADERS}`,\n\n async ({ params, request }) => {\n let status = 404\n let response: SynapseApiResponse<PaginatedResults<EntityHeader>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n\n const referenceList = await request.json()\n const entityData: EntityHeader[] = referenceList.references\n .map(ref => {\n const entityHeader = getMatchingMockEntity(ref.targetId)?.entityHeader\n if (entityHeader) {\n return {\n ...entityHeader,\n // ID should match what is passed in (i.e. may or may not have syn prefix)\n id: ref.targetId,\n }\n }\n return undefined\n })\n .filter((header): header is EntityHeader => !!header)\n\n if (entityData) {\n response = { results: entityData }\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(\n `${backendOrigin}${ENTITY_ID(':entityId')}/path`,\n\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityPath> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity path using ID ${params.entityId}`,\n }\n const entityData = getMatchingMockEntity(params.entityId as string)\n\n if (entityData && entityData.path) {\n response = entityData.path\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(`${backendOrigin}/file/v1/entity/:id/uploadDestination`, () => {\n const response: UploadDestination = mockSynapseStorageUploadDestination\n return HttpResponse.json(response, { status: 200 })\n }),\n\n http.get(\n `${backendOrigin}/file/v1/entity/:id/uploadDestination/:storageLocationId`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<UploadDestination> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find an uploadDestination using storageLocationId ${params.storageLocationId}`,\n }\n const uploadDestination = mockUploadDestinations.find(\n e => Number(params.storageLocationId) === e.storageLocationId,\n )\n\n if (uploadDestination) {\n response = uploadDestination\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(`${backendOrigin}/repo/v1/projects`, () => {\n const response: ProjectHeaderList = {\n results: mockProjectsEntityData.map(p => ({\n name: p.name,\n id: p.id,\n lastActivity: '2024-01-04T21:11:59.000Z',\n modifiedBy: parseInt(p.entity.modifiedBy!),\n modifiedOn: p.entity.modifiedOn!,\n })),\n }\n return HttpResponse.json(response, { status: 200 })\n }),\n\n http.post<{ entityId: string }, AccessControlList>(\n `${backendOrigin}${ENTITY_ID(':entityId')}/acl`,\n async ({ params, request }) => {\n const entityData = getMatchingMockEntity(params.entityId)\n let status: number\n let response: SynapseApiResponse<AccessControlList>\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (entityData.bundle?.accessControlList) {\n status = 403\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: 'Resource already has an ACL.',\n }\n } else {\n response = await request.json()\n status = 201\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.put<{ entityId: string }, AccessControlList>(\n `${backendOrigin}${ENTITY_ID(':entityId')}/acl`,\n async ({ params, request }) => {\n const entityData = getMatchingMockEntity(params.entityId)\n\n let status: number\n let response: SynapseApiResponse<AccessControlList>\n\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (!entityData?.bundle?.accessControlList) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason:\n 'Cannot update ACL for a resource which inherits its permissions.',\n }\n status = 403\n } else {\n response = await request.json()\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.delete(`${backendOrigin}${ENTITY_ID(':entityId')}/acl`, ({ params }) => {\n const entityData = getMatchingMockEntity(params.entityId as string)\n\n let status: number\n let response: SynapseApiResponse<''>\n\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (!entityData?.bundle?.accessControlList) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason:\n 'Cannot delete ACL for a resource which inherits its permissions.',\n }\n status = 403\n } else {\n response = ''\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n }),\n]\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/fileHandlers.ts"],"sourcesContent":["import { FILE, FILE_HANDLE_BATCH } from '@/utils/APIConstants'\nimport { ExternalFileHandleInterface } from '@sage-bionetworks/synapse-client'\nimport {\n BatchFileRequest,\n BatchFileResult,\n MultipartUploadStatus,\n} from '@sage-bionetworks/synapse-types'\nimport { uniqueId } from 'lodash-es'\nimport { http, HttpResponse } from 'msw'\nimport { MOCK_FILE_HANDLE_ID, mockFileHandles } from '../../mock_file_handle'\nimport { MOCK_USER_ID } from '../../user/mock_user_profile'\nimport { SynapseApiResponse } from '../handlers'\n\nexport function getFileHandlers(backendOrigin: string) {\n return [\n http.post<never, BatchFileRequest>(\n `${backendOrigin}${FILE_HANDLE_BATCH}`,\n async ({ request }) => {\n const requestBody: BatchFileRequest = await request.json()\n\n const response: BatchFileResult = {\n requestedFiles: [],\n }\n\n requestBody.requestedFiles.forEach(fileHandleAssociation => {\n const fileHandle = mockFileHandles.find(\n fh => fh.id === fileHandleAssociation.fileHandleId,\n )\n if (fileHandle) {\n response.requestedFiles.push({\n fileHandleId: fileHandle.id,\n fileHandle,\n })\n }\n })\n\n return HttpResponse.json(response, { status: 201 })\n },\n ),\n\n http.post(`${backendOrigin}${FILE}/file/multipart`, () => {\n const response: SynapseApiResponse<MultipartUploadStatus> = {\n state: 'COMPLETED',\n resultFileHandleId: MOCK_FILE_HANDLE_ID,\n uploadId: 'mockUploadId',\n startedBy: String(MOCK_USER_ID),\n startedOn: new Date().toISOString(),\n updatedOn: new Date().toISOString(),\n partsState: '1',\n }\n\n return HttpResponse.json(response, { status: 201 })\n }),\n http.put(`${backendOrigin}${FILE}/file/multipart/:id/complete`, () => {\n const response: SynapseApiResponse<MultipartUploadStatus> = {\n state: 'COMPLETED',\n resultFileHandleId: MOCK_FILE_HANDLE_ID,\n uploadId: 'mockUploadId',\n startedBy: String(MOCK_USER_ID),\n startedOn: new Date().toISOString(),\n updatedOn: new Date().toISOString(),\n partsState: '1',\n }\n\n return HttpResponse.json(response, { status: 201 })\n }),\n\n http.post<never, ExternalFileHandleInterface>(\n `${backendOrigin}${FILE}/externalFileHandle`,\n async ({ request }) => {\n const requestBody = await request.json()\n\n const response: SynapseApiResponse<ExternalFileHandleInterface> = {\n ...requestBody,\n id: uniqueId(),\n etag: 'fake-etag',\n createdBy: MOCK_USER_ID.toString(),\n createdOn: new Date().toISOString(),\n modifiedOn: new Date().toISOString(),\n }\n\n return HttpResponse.json(response, { status: 201 })\n },\n ),\n ]\n}\n"],"mappings":";;;;;;AAaA,SAAgB,EAAgB,GAAuB;AACrD,QAAO;EACL,EAAK,KACH,GAAG,IAAgB,KACnB,OAAO,EAAE,iBAAc;GACrB,IAAM,IAAgC,MAAM,EAAQ,MAAM,EAEpD,IAA4B,EAChC,gBAAgB,EAAE,EACnB;AAcD,UAZA,EAAY,eAAe,SAAQ,MAAyB;IAC1D,IAAM,IAAa,EAAgB,MACjC,MAAM,EAAG,OAAO,EAAsB,aACvC;AACD,IAAI,KACF,EAAS,eAAe,KAAK;KAC3B,cAAc,EAAW;KACzB;KACD,CAAC;KAEJ,EAEK,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IAEtD;EAED,EAAK,KAAK,GAAG,IAAgB,EAAK,wBAAwB;GACxD,IAAM,IAAsD;IAC1D,OAAO;IACP,oBAAoB;IACpB,UAAU;IACV,WAAW;IACX,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,YAAY;IACb;AAED,UAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IACnD;EACF,EAAK,IAAI,GAAG,IAAgB,EAAK,qCAAqC;GACpE,IAAM,IAAsD;IAC1D,OAAO;IACP,oBAAoB;IACpB,UAAU;IACV,WAAW;IACX,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,YAAY;IACb;AAED,UAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IACnD;EAEF,EAAK,KACH,GAAG,IAAgB,EAAK,sBACxB,OAAO,EAAE,iBAAc;GAGrB,IAAM,IAA4D;IAChE,
|
|
1
|
+
{"version":3,"file":"fileHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/fileHandlers.ts"],"sourcesContent":["import { FILE, FILE_HANDLE_BATCH } from '@/utils/APIConstants'\nimport { ExternalFileHandleInterface } from '@sage-bionetworks/synapse-client'\nimport {\n BatchFileRequest,\n BatchFileResult,\n MultipartUploadStatus,\n} from '@sage-bionetworks/synapse-types'\nimport { uniqueId } from 'lodash-es'\nimport { http, HttpResponse } from 'msw'\nimport { MOCK_FILE_HANDLE_ID, mockFileHandles } from '../../mock_file_handle'\nimport { MOCK_USER_ID } from '../../user/mock_user_profile'\nimport { SynapseApiResponse } from '../handlers'\n\nexport function getFileHandlers(backendOrigin: string) {\n return [\n http.post<never, BatchFileRequest>(\n `${backendOrigin}${FILE_HANDLE_BATCH}`,\n async ({ request }) => {\n const requestBody: BatchFileRequest = await request.json()\n\n const response: BatchFileResult = {\n requestedFiles: [],\n }\n\n requestBody.requestedFiles.forEach(fileHandleAssociation => {\n const fileHandle = mockFileHandles.find(\n fh => fh.id === fileHandleAssociation.fileHandleId,\n )\n if (fileHandle) {\n response.requestedFiles.push({\n fileHandleId: fileHandle.id,\n fileHandle,\n })\n }\n })\n\n return HttpResponse.json(response, { status: 201 })\n },\n ),\n\n http.post(`${backendOrigin}${FILE}/file/multipart`, () => {\n const response: SynapseApiResponse<MultipartUploadStatus> = {\n state: 'COMPLETED',\n resultFileHandleId: MOCK_FILE_HANDLE_ID,\n uploadId: 'mockUploadId',\n startedBy: String(MOCK_USER_ID),\n startedOn: new Date().toISOString(),\n updatedOn: new Date().toISOString(),\n partsState: '1',\n }\n\n return HttpResponse.json(response, { status: 201 })\n }),\n http.put(`${backendOrigin}${FILE}/file/multipart/:id/complete`, () => {\n const response: SynapseApiResponse<MultipartUploadStatus> = {\n state: 'COMPLETED',\n resultFileHandleId: MOCK_FILE_HANDLE_ID,\n uploadId: 'mockUploadId',\n startedBy: String(MOCK_USER_ID),\n startedOn: new Date().toISOString(),\n updatedOn: new Date().toISOString(),\n partsState: '1',\n }\n\n return HttpResponse.json(response, { status: 201 })\n }),\n\n http.post<never, ExternalFileHandleInterface>(\n `${backendOrigin}${FILE}/externalFileHandle`,\n async ({ request }) => {\n const requestBody = await request.json()\n\n const response: SynapseApiResponse<ExternalFileHandleInterface> = {\n ...requestBody,\n id: uniqueId(),\n etag: 'fake-etag',\n createdBy: MOCK_USER_ID.toString(),\n createdOn: new Date().toISOString(),\n modifiedOn: new Date().toISOString(),\n }\n\n return HttpResponse.json(response, { status: 201 })\n },\n ),\n ]\n}\n"],"mappings":";;;;;;AAaA,SAAgB,EAAgB,GAAuB;AACrD,QAAO;EACL,EAAK,KACH,GAAG,IAAgB,KACnB,OAAO,EAAE,iBAAc;GACrB,IAAM,IAAgC,MAAM,EAAQ,MAAM,EAEpD,IAA4B,EAChC,gBAAgB,EAAE,EACnB;AAcD,UAZA,EAAY,eAAe,SAAQ,MAAyB;IAC1D,IAAM,IAAa,EAAgB,MACjC,MAAM,EAAG,OAAO,EAAsB,aACvC;AACD,IAAI,KACF,EAAS,eAAe,KAAK;KAC3B,cAAc,EAAW;KACzB;KACD,CAAC;KAEJ,EAEK,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IAEtD;EAED,EAAK,KAAK,GAAG,IAAgB,EAAK,wBAAwB;GACxD,IAAM,IAAsD;IAC1D,OAAO;IACP,oBAAoB;IACpB,UAAU;IACV,WAAW;IACX,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,YAAY;IACb;AAED,UAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IACnD;EACF,EAAK,IAAI,GAAG,IAAgB,EAAK,qCAAqC;GACpE,IAAM,IAAsD;IAC1D,OAAO;IACP,oBAAoB;IACpB,UAAU;IACV,WAAW;IACX,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,YAAY;IACb;AAED,UAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IACnD;EAEF,EAAK,KACH,GAAG,IAAgB,EAAK,sBACxB,OAAO,EAAE,iBAAc;GAGrB,IAAM,IAA4D;IAChE,GAAG,MAHqB,EAAQ,MAAM;IAItC,IAAI,GAAU;IACd,MAAM;IACN,WAAA;IACA,4BAAW,IAAI,MAAM,EAAC,aAAa;IACnC,6BAAY,IAAI,MAAM,EAAC,aAAa;IACrC;AAED,UAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IAEtD;EACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gridHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/gridHandlers.ts"],"sourcesContent":["import { CreateReplicaRequest } from '@sage-bionetworks/synapse-client'\nimport { http, HttpResponse } from 'msw'\n\nfunction getRandomInt() {\n return crypto.getRandomValues(new Uint32Array(1))[0]\n}\n\n// Generate unique session IDs for grid sessions\nconst generateSessionId = () => {\n const randomId: number = getRandomInt()\n return `grid-session-${randomId * 100000}`\n}\n\ninterface GridJob {\n status: string\n startTime: number\n sessionId: string\n}\n\n// In-memory storage to track async jobs\nconst pendingJobs = new Map<string, GridJob>()\n\nexport function getGridHandlers(backendOrigin: string) {\n return [\n // Handler for starting a grid session\n http.post(\n `${backendOrigin}/repo/v1/grid/session/async/start`,\n async ({ request }) => {\n // Generate a unique job token\n const jobToken = `job-${Date.now()}-${Math.random()\n .toString(36)\n .substring(2, 9)}`\n const requestBody = await request.json()\n\n // Store job details for later reference\n pendingJobs.set(jobToken, {\n status: 'PROCESSING',\n startTime: Date.now(),\n sessionId: generateSessionId(),\n })\n\n return HttpResponse.json(requestBody, { status: 201 })\n },\n ),\n\n // Handler for retrieving async job results\n http.get<{ token: string }>(\n `${backendOrigin}/repo/v1/grid/session/async/get/:token`,\n ({ params }) => {\n // Retrieve job data\n const jobData = pendingJobs.get(params.token)\n\n if (!jobData) {\n return HttpResponse.text('Job not found', { status: 404 })\n }\n\n // Job is complete, return result\n jobData.status = 'COMPLETE'\n return HttpResponse.json(\n {\n concreteType: 'org.sagebionetworks.repo.model.grid.GridSession',\n gridSession: {\n sessionId: jobData.sessionId,\n startedBy: 'mockUser',\n startedOn: new Date().toISOString(),\n etag: `etag-${Date.now()}`,\n modifiedOn: new Date().toISOString(),\n lastReplicaIdClient: 1,\n lastReplicaIdService: 1,\n },\n },\n { status: 200 },\n )\n },\n ),\n\n // Handler for GridSessionReplica\n http.post<{ sessionId: string }, CreateReplicaRequest>(\n `${backendOrigin}/repo/v1/grid/:sessionId/replica`,\n async ({ request }) => {\n const { gridSessionId } = await request.json()\n\n // Check if the session ID exists in pending jobs\n const jobData = Array.from(pendingJobs.values()).find(\n job => job.sessionId === gridSessionId,\n )\n\n if (!jobData) {\n return HttpResponse.text('Grid session not found', { status: 404 })\n }\n\n // Create a replica for the session\n const replicaId = getRandomInt() % 1000\n const replicaResponse = {\n concreteType: 'org.sagebionetworks.repo.model.grid.GridReplica',\n replica: {\n gridSessionId,\n replicaId,\n createdBy: 'mockUser',\n isAgentReplica: false,\n createdOn: new Date().toISOString(),\n },\n }\n return HttpResponse.json(replicaResponse, { status: 201 })\n },\n ),\n\n // Handler for Grid presigned URL\n http.get<{ sessionId: string }>(\n `${backendOrigin}/repo/v1/grid/:sessionId/presignedUrl`,\n ({ params }) => {\n const { sessionId } = params\n\n const jobData = Array.from(pendingJobs.values()).find(\n job => job.sessionId === sessionId,\n )\n if (!jobData) {\n return HttpResponse.text('Grid session not found', { status: 404 })\n }\n // Generate a mock presigned URL\n const presignedUrl = `https://mock-s3-bucket/${sessionId}/data.csv?presigned=true`\n return HttpResponse.json({ presignedUrl }, { status: 200 })\n },\n ),\n ]\n}\n"],"mappings":";;AAGA,SAAS,IAAe;AACtB,QAAO,OAAO,gBAAgB,IAAI,YAAY,EAAE,CAAC,CAAC;;AAIpD,IAAM,UAEG,gBADkB,
|
|
1
|
+
{"version":3,"file":"gridHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/gridHandlers.ts"],"sourcesContent":["import { CreateReplicaRequest } from '@sage-bionetworks/synapse-client'\nimport { http, HttpResponse } from 'msw'\n\nfunction getRandomInt() {\n return crypto.getRandomValues(new Uint32Array(1))[0]\n}\n\n// Generate unique session IDs for grid sessions\nconst generateSessionId = () => {\n const randomId: number = getRandomInt()\n return `grid-session-${randomId * 100000}`\n}\n\ninterface GridJob {\n status: string\n startTime: number\n sessionId: string\n}\n\n// In-memory storage to track async jobs\nconst pendingJobs = new Map<string, GridJob>()\n\nexport function getGridHandlers(backendOrigin: string) {\n return [\n // Handler for starting a grid session\n http.post(\n `${backendOrigin}/repo/v1/grid/session/async/start`,\n async ({ request }) => {\n // Generate a unique job token\n const jobToken = `job-${Date.now()}-${Math.random()\n .toString(36)\n .substring(2, 9)}`\n const requestBody = await request.json()\n\n // Store job details for later reference\n pendingJobs.set(jobToken, {\n status: 'PROCESSING',\n startTime: Date.now(),\n sessionId: generateSessionId(),\n })\n\n return HttpResponse.json(requestBody, { status: 201 })\n },\n ),\n\n // Handler for retrieving async job results\n http.get<{ token: string }>(\n `${backendOrigin}/repo/v1/grid/session/async/get/:token`,\n ({ params }) => {\n // Retrieve job data\n const jobData = pendingJobs.get(params.token)\n\n if (!jobData) {\n return HttpResponse.text('Job not found', { status: 404 })\n }\n\n // Job is complete, return result\n jobData.status = 'COMPLETE'\n return HttpResponse.json(\n {\n concreteType: 'org.sagebionetworks.repo.model.grid.GridSession',\n gridSession: {\n sessionId: jobData.sessionId,\n startedBy: 'mockUser',\n startedOn: new Date().toISOString(),\n etag: `etag-${Date.now()}`,\n modifiedOn: new Date().toISOString(),\n lastReplicaIdClient: 1,\n lastReplicaIdService: 1,\n },\n },\n { status: 200 },\n )\n },\n ),\n\n // Handler for GridSessionReplica\n http.post<{ sessionId: string }, CreateReplicaRequest>(\n `${backendOrigin}/repo/v1/grid/:sessionId/replica`,\n async ({ request }) => {\n const { gridSessionId } = await request.json()\n\n // Check if the session ID exists in pending jobs\n const jobData = Array.from(pendingJobs.values()).find(\n job => job.sessionId === gridSessionId,\n )\n\n if (!jobData) {\n return HttpResponse.text('Grid session not found', { status: 404 })\n }\n\n // Create a replica for the session\n const replicaId = getRandomInt() % 1000\n const replicaResponse = {\n concreteType: 'org.sagebionetworks.repo.model.grid.GridReplica',\n replica: {\n gridSessionId,\n replicaId,\n createdBy: 'mockUser',\n isAgentReplica: false,\n createdOn: new Date().toISOString(),\n },\n }\n return HttpResponse.json(replicaResponse, { status: 201 })\n },\n ),\n\n // Handler for Grid presigned URL\n http.get<{ sessionId: string }>(\n `${backendOrigin}/repo/v1/grid/:sessionId/presignedUrl`,\n ({ params }) => {\n const { sessionId } = params\n\n const jobData = Array.from(pendingJobs.values()).find(\n job => job.sessionId === sessionId,\n )\n if (!jobData) {\n return HttpResponse.text('Grid session not found', { status: 404 })\n }\n // Generate a mock presigned URL\n const presignedUrl = `https://mock-s3-bucket/${sessionId}/data.csv?presigned=true`\n return HttpResponse.json({ presignedUrl }, { status: 200 })\n },\n ),\n ]\n}\n"],"mappings":";;AAGA,SAAS,IAAe;AACtB,QAAO,OAAO,gBAAgB,IAAI,YAAY,EAAE,CAAC,CAAC;;AAIpD,IAAM,UAEG,gBADkB,GACF,GAAW,OAU9B,oBAAc,IAAI,KAAsB;AAE9C,SAAgB,EAAgB,GAAuB;AACrD,QAAO;EAEL,EAAK,KACH,GAAG,EAAc,oCACjB,OAAO,EAAE,iBAAc;GAErB,IAAM,IAAW,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAChD,SAAS,GAAG,CACZ,UAAU,GAAG,EAAE,IACZ,IAAc,MAAM,EAAQ,MAAM;AASxC,UANA,EAAY,IAAI,GAAU;IACxB,QAAQ;IACR,WAAW,KAAK,KAAK;IACrB,WAAW,GAAmB;IAC/B,CAAC,EAEK,EAAa,KAAK,GAAa,EAAE,QAAQ,KAAK,CAAC;IAEzD;EAGD,EAAK,IACH,GAAG,EAAc,0CAChB,EAAE,gBAAa;GAEd,IAAM,IAAU,EAAY,IAAI,EAAO,MAAM;AAQ7C,UANK,KAKL,EAAQ,SAAS,YACV,EAAa,KAClB;IACE,cAAc;IACd,aAAa;KACX,WAAW,EAAQ;KACnB,WAAW;KACX,4BAAW,IAAI,MAAM,EAAC,aAAa;KACnC,MAAM,QAAQ,KAAK,KAAK;KACxB,6BAAY,IAAI,MAAM,EAAC,aAAa;KACpC,qBAAqB;KACrB,sBAAsB;KACvB;IACF,EACD,EAAE,QAAQ,KAAK,CAChB,IAnBQ,EAAa,KAAK,iBAAiB,EAAE,QAAQ,KAAK,CAAC;IAqB/D;EAGD,EAAK,KACH,GAAG,EAAc,mCACjB,OAAO,EAAE,iBAAc;GACrB,IAAM,EAAE,qBAAkB,MAAM,EAAQ,MAAM;AAO9C,OAAI,CAJY,MAAM,KAAK,EAAY,QAAQ,CAAC,CAAC,MAC/C,MAAO,EAAI,cAAc,EAGtB,CACH,QAAO,EAAa,KAAK,0BAA0B,EAAE,QAAQ,KAAK,CAAC;GAKrE,IAAM,IAAkB;IACtB,cAAc;IACd,SAAS;KACP;KACA,WALc,GAAc,GAAG;KAM/B,WAAW;KACX,gBAAgB;KAChB,4BAAW,IAAI,MAAM,EAAC,aAAa;KACpC;IACF;AACD,UAAO,EAAa,KAAK,GAAiB,EAAE,QAAQ,KAAK,CAAC;IAE7D;EAGD,EAAK,IACH,GAAG,EAAc,yCAChB,EAAE,gBAAa;GACd,IAAM,EAAE,iBAAc;AAKtB,OAAI,CAHY,MAAM,KAAK,EAAY,QAAQ,CAAC,CAAC,MAC/C,MAAO,EAAI,cAAc,EAEtB,CACH,QAAO,EAAa,KAAK,0BAA0B,EAAE,QAAQ,KAAK,CAAC;GAGrE,IAAM,IAAe,0BAA0B,EAAU;AACzD,UAAO,EAAa,KAAK,EAAE,iBAAc,EAAE,EAAE,QAAQ,KAAK,CAAC;IAE9D;EACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personalAccessTokenHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/personalAccessTokenHandlers.ts"],"sourcesContent":["import {\n AccessTokenGenerationResponse,\n AccessTokenRecordList,\n} from '@sage-bionetworks/synapse-types'\nimport { http, HttpResponse } from 'msw'\nimport {\n mockAccessTokenRecordListPageOne,\n mockAccessTokenRecordListPageTwo,\n} from '../../personalAccessToken/mockPersonalAccessToken'\n\nexport function getPersonalAccessTokenHandlers(\n backendOrigin: string,\n tokenRecordOverride?: AccessTokenRecordList,\n) {\n return [\n http.get(`${backendOrigin}/auth/v1/personalAccessToken`, ({ request }) => {\n let response = mockAccessTokenRecordListPageOne\n if (tokenRecordOverride) {\n response = tokenRecordOverride\n } else if (new URL(request.url).searchParams.get('nextPageToken')) {\n response = mockAccessTokenRecordListPageTwo\n }\n\n return HttpResponse.json(response, { status: 200 })\n }),\n http.delete(`${backendOrigin}/auth/v1/personalAccessToken/:id`, () => {\n return new Response('', { status: 202 })\n }),\n\n http.post(`${backendOrigin}/auth/v1/personalAccessToken`, () => {\n const responseBody: AccessTokenGenerationResponse = {\n token: 'your-token-here',\n }\n return HttpResponse.json(responseBody, { status: 201 })\n }),\n ]\n}\n"],"mappings":";;;AAUA,SAAgB,EACd,GACA,GACA;AACA,QAAO;EACL,EAAK,IAAI,GAAG,EAAc,gCAAgC,EAAE,iBAAc;GACxE,IAAI,IAAW;AAOf,UANI,IACF,IAAW,IACF,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IAAI,gBAAgB,KAC/D,IAAW,IAGN,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IACnD;EACF,EAAK,OAAO,GAAG,EAAc,yCACpB,IAAI,SAAS,IAAI,EAAE,QAAQ,KAAK,CAAC,CACxC;EAEF,EAAK,KAAK,GAAG,EAAc,qCAIlB,EAAa,
|
|
1
|
+
{"version":3,"file":"personalAccessTokenHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/personalAccessTokenHandlers.ts"],"sourcesContent":["import {\n AccessTokenGenerationResponse,\n AccessTokenRecordList,\n} from '@sage-bionetworks/synapse-types'\nimport { http, HttpResponse } from 'msw'\nimport {\n mockAccessTokenRecordListPageOne,\n mockAccessTokenRecordListPageTwo,\n} from '../../personalAccessToken/mockPersonalAccessToken'\n\nexport function getPersonalAccessTokenHandlers(\n backendOrigin: string,\n tokenRecordOverride?: AccessTokenRecordList,\n) {\n return [\n http.get(`${backendOrigin}/auth/v1/personalAccessToken`, ({ request }) => {\n let response = mockAccessTokenRecordListPageOne\n if (tokenRecordOverride) {\n response = tokenRecordOverride\n } else if (new URL(request.url).searchParams.get('nextPageToken')) {\n response = mockAccessTokenRecordListPageTwo\n }\n\n return HttpResponse.json(response, { status: 200 })\n }),\n http.delete(`${backendOrigin}/auth/v1/personalAccessToken/:id`, () => {\n return new Response('', { status: 202 })\n }),\n\n http.post(`${backendOrigin}/auth/v1/personalAccessToken`, () => {\n const responseBody: AccessTokenGenerationResponse = {\n token: 'your-token-here',\n }\n return HttpResponse.json(responseBody, { status: 201 })\n }),\n ]\n}\n"],"mappings":";;;AAUA,SAAgB,EACd,GACA,GACA;AACA,QAAO;EACL,EAAK,IAAI,GAAG,EAAc,gCAAgC,EAAE,iBAAc;GACxE,IAAI,IAAW;AAOf,UANI,IACF,IAAW,IACF,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IAAI,gBAAgB,KAC/D,IAAW,IAGN,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;IACnD;EACF,EAAK,OAAO,GAAG,EAAc,yCACpB,IAAI,SAAS,IAAI,EAAE,QAAQ,KAAK,CAAC,CACxC;EAEF,EAAK,KAAK,GAAG,EAAc,qCAIlB,EAAa,KAAK,EAFvB,OAAO,mBAEgB,EAAc,EAAE,QAAQ,KAAK,CAAC,CACvD;EACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptionHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/subscriptionHandlers.ts"],"sourcesContent":["import {\n SortDirection,\n SubscriberPagedResults,\n Subscription,\n SubscriptionObjectType,\n SubscriptionPagedResults,\n SubscriptionRequest,\n Topic,\n} from '@sage-bionetworks/synapse-types'\nimport { http, HttpResponse } from 'msw'\nimport { forumSubscriptions, threadSubscriptions } from '../../mockSubscription'\nimport { MOCK_USER_ID } from '../../user/mock_user_profile'\nimport { SynapseApiResponse } from '../handlers'\nimport BasicMockedCrudService from '../util/BasicMockedCrudService'\n\nconst subscriptionService = new BasicMockedCrudService<\n Subscription,\n 'subscriptionId'\n>({\n initialData: [...forumSubscriptions, ...threadSubscriptions],\n idField: 'subscriptionId',\n autoGenerateId: true,\n})\n\nfunction getSubscriptions(\n objectType?: SubscriptionObjectType,\n sortDirection: SortDirection = 'ASC',\n offset = 0,\n limit = 10,\n idList?: string[],\n): SubscriptionPagedResults {\n const allResults = subscriptionService\n .getAll()\n .filter(s => {\n if (objectType) {\n return s.objectType === objectType\n }\n return true\n })\n .filter(s => {\n if (idList) {\n return idList.includes(s.objectId)\n }\n return true\n })\n .sort((a, b) => {\n const val =\n new Date(b.createdOn).getTime() - new Date(a.createdOn).getTime()\n return sortDirection === 'ASC' ? val : -1 * val\n })\n\n const totalNumberOfResults = allResults.length\n\n return {\n results: allResults.slice(offset, offset + limit),\n totalNumberOfResults,\n }\n}\n\nexport function getSubscriptionHandlers(backendOrigin: string) {\n return [\n http.get(`${backendOrigin}/repo/v1/subscription/all`, ({ request }) => {\n const objectType =\n (new URL(request.url).searchParams.get(\n 'objectType',\n ) as SubscriptionObjectType) ?? undefined\n const sortDirection =\n (new URL(request.url).searchParams.get(\n 'sortDirection',\n ) as SortDirection) ?? undefined\n const offsetParam = new URL(request.url).searchParams.get('offset')\n const offset = offsetParam ? parseInt(offsetParam) : undefined\n const limitParam = new URL(request.url).searchParams.get('limit')\n const limit = limitParam ? parseInt(limitParam) : undefined\n\n const resp: SynapseApiResponse<SubscriptionPagedResults> =\n getSubscriptions(objectType ?? undefined, sortDirection, offset, limit)\n\n return HttpResponse.json(resp, { status: 200 })\n }),\n http.post<never, SubscriptionRequest>(\n `${backendOrigin}/repo/v1/subscription/list`,\n async ({ request }) => {\n const requestBody: SubscriptionRequest = await request.json()\n\n const resp: SynapseApiResponse<SubscriptionPagedResults> =\n getSubscriptions(\n requestBody.objectType,\n requestBody.sortDirection,\n undefined,\n undefined,\n requestBody.idList,\n )\n\n return HttpResponse.json(resp, { status: 200 })\n },\n ),\n http.post<never, Topic>(\n `${backendOrigin}/repo/v1/subscription`,\n async ({ request }) => {\n const requestBody: Topic = await request.json()\n\n const newSubscription = subscriptionService.create({\n subscriberId: String(MOCK_USER_ID),\n objectId: requestBody.objectId,\n objectType: requestBody.objectType,\n createdOn: new Date().toISOString(),\n })\n return HttpResponse.json(newSubscription, { status: 201 })\n },\n ),\n http.delete(`${backendOrigin}/repo/v1/subscription/:id`, ({ params }) => {\n const subscriptionId = params.id as string\n subscriptionService.delete(subscriptionId)\n return new Response('', { status: 200 })\n }),\n http.post<never, Topic>(\n `${backendOrigin}/repo/v1/subscription/subscribers`,\n async ({ request }) => {\n const topic: Topic = await request.json()\n\n const matchingSubscriptions = subscriptionService.getMany(\n s =>\n s.objectType === topic.objectType && s.objectId === topic.objectId,\n )\n\n const resp: SubscriberPagedResults = {\n subscribers: matchingSubscriptions.map(s => s.subscriberId),\n }\n return HttpResponse.json(resp, { status: 200 })\n },\n ),\n ]\n}\n"],"mappings":";;;;;AAeA,IAAM,IAAsB,IAAI,EAG9B;CACA,aAAa,CAAC,GAAG,GAAoB,GAAG,EAAoB;CAC5D,SAAS;CACT,gBAAgB;CACjB,CAAC;AAEF,SAAS,EACP,GACA,IAA+B,OAC/B,IAAS,GACT,IAAQ,IACR,GAC0B;CAC1B,IAAM,IAAa,EAChB,QAAQ,CACR,QAAO,MACF,IACK,EAAE,eAAe,IAEnB,GACP,CACD,QAAO,MACF,IACK,EAAO,SAAS,EAAE,SAAS,GAE7B,GACP,CACD,MAAM,GAAG,MAAM;EACd,IAAM,IACJ,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS;AACnE,SAAO,MAAkB,QAAQ,IAAM,KAAK;GAC5C,EAEE,IAAuB,EAAW;AAExC,QAAO;EACL,SAAS,EAAW,MAAM,GAAQ,IAAS,EAAM;EACjD;EACD;;AAGH,SAAgB,EAAwB,GAAuB;AAC7D,QAAO;EACL,EAAK,IAAI,GAAG,EAAc,6BAA6B,EAAE,iBAAc;GACrE,IAAM,IACH,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IACjC,aACD,IAA+B,KAAA,GAC5B,IACH,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IACjC,gBACD,IAAsB,KAAA,GACnB,IAAc,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IAAI,SAAS,EAC7D,IAAS,IAAc,SAAS,EAAY,GAAG,KAAA,GAC/C,IAAa,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IAAI,QAAQ,EAG3D,IACJ,EAAiB,KAAc,KAAA,GAAW,GAAe,GAH7C,IAAa,SAAS,EAAW,GAAG,KAAA,EAGuB;AAEzE,UAAO,EAAa,KAAK,GAAM,EAAE,QAAQ,KAAK,CAAC;IAC/C;EACF,EAAK,KACH,GAAG,EAAc,6BACjB,OAAO,EAAE,iBAAc;GACrB,IAAM,IAAmC,MAAM,EAAQ,MAAM,EAEvD,IACJ,EACE,EAAY,YACZ,EAAY,eACZ,KAAA,GACA,KAAA,GACA,EAAY,OACb;AAEH,UAAO,EAAa,KAAK,GAAM,EAAE,QAAQ,KAAK,CAAC;IAElD;EACD,EAAK,KACH,GAAG,EAAc,wBACjB,OAAO,EAAE,iBAAc;GACrB,IAAM,IAAqB,MAAM,EAAQ,MAAM,EAEzC,IAAkB,EAAoB,OAAO;IACjD,cAAc;IACd,UAAU,EAAY;IACtB,YAAY,EAAY;IACxB,4BAAW,IAAI,MAAM,EAAC,aAAa;IACpC,CAAC;AACF,UAAO,EAAa,KAAK,GAAiB,EAAE,QAAQ,KAAK,CAAC;IAE7D;EACD,EAAK,OAAO,GAAG,EAAc,6BAA6B,EAAE,gBAAa;GACvE,IAAM,IAAiB,EAAO;AAE9B,UADA,EAAoB,OAAO,EAAe,EACnC,IAAI,SAAS,IAAI,EAAE,QAAQ,KAAK,CAAC;IACxC;EACF,EAAK,KACH,GAAG,EAAc,oCACjB,OAAO,EAAE,iBAAc;GACrB,IAAM,IAAe,MAAM,EAAQ,MAAM,EAOnC,IAA+B,EACnC,aAN4B,EAAoB,SAChD,MACE,EAAE,eAAe,EAAM,cAAc,EAAE,aAAa,EAAM,
|
|
1
|
+
{"version":3,"file":"subscriptionHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/subscriptionHandlers.ts"],"sourcesContent":["import {\n SortDirection,\n SubscriberPagedResults,\n Subscription,\n SubscriptionObjectType,\n SubscriptionPagedResults,\n SubscriptionRequest,\n Topic,\n} from '@sage-bionetworks/synapse-types'\nimport { http, HttpResponse } from 'msw'\nimport { forumSubscriptions, threadSubscriptions } from '../../mockSubscription'\nimport { MOCK_USER_ID } from '../../user/mock_user_profile'\nimport { SynapseApiResponse } from '../handlers'\nimport BasicMockedCrudService from '../util/BasicMockedCrudService'\n\nconst subscriptionService = new BasicMockedCrudService<\n Subscription,\n 'subscriptionId'\n>({\n initialData: [...forumSubscriptions, ...threadSubscriptions],\n idField: 'subscriptionId',\n autoGenerateId: true,\n})\n\nfunction getSubscriptions(\n objectType?: SubscriptionObjectType,\n sortDirection: SortDirection = 'ASC',\n offset = 0,\n limit = 10,\n idList?: string[],\n): SubscriptionPagedResults {\n const allResults = subscriptionService\n .getAll()\n .filter(s => {\n if (objectType) {\n return s.objectType === objectType\n }\n return true\n })\n .filter(s => {\n if (idList) {\n return idList.includes(s.objectId)\n }\n return true\n })\n .sort((a, b) => {\n const val =\n new Date(b.createdOn).getTime() - new Date(a.createdOn).getTime()\n return sortDirection === 'ASC' ? val : -1 * val\n })\n\n const totalNumberOfResults = allResults.length\n\n return {\n results: allResults.slice(offset, offset + limit),\n totalNumberOfResults,\n }\n}\n\nexport function getSubscriptionHandlers(backendOrigin: string) {\n return [\n http.get(`${backendOrigin}/repo/v1/subscription/all`, ({ request }) => {\n const objectType =\n (new URL(request.url).searchParams.get(\n 'objectType',\n ) as SubscriptionObjectType) ?? undefined\n const sortDirection =\n (new URL(request.url).searchParams.get(\n 'sortDirection',\n ) as SortDirection) ?? undefined\n const offsetParam = new URL(request.url).searchParams.get('offset')\n const offset = offsetParam ? parseInt(offsetParam) : undefined\n const limitParam = new URL(request.url).searchParams.get('limit')\n const limit = limitParam ? parseInt(limitParam) : undefined\n\n const resp: SynapseApiResponse<SubscriptionPagedResults> =\n getSubscriptions(objectType ?? undefined, sortDirection, offset, limit)\n\n return HttpResponse.json(resp, { status: 200 })\n }),\n http.post<never, SubscriptionRequest>(\n `${backendOrigin}/repo/v1/subscription/list`,\n async ({ request }) => {\n const requestBody: SubscriptionRequest = await request.json()\n\n const resp: SynapseApiResponse<SubscriptionPagedResults> =\n getSubscriptions(\n requestBody.objectType,\n requestBody.sortDirection,\n undefined,\n undefined,\n requestBody.idList,\n )\n\n return HttpResponse.json(resp, { status: 200 })\n },\n ),\n http.post<never, Topic>(\n `${backendOrigin}/repo/v1/subscription`,\n async ({ request }) => {\n const requestBody: Topic = await request.json()\n\n const newSubscription = subscriptionService.create({\n subscriberId: String(MOCK_USER_ID),\n objectId: requestBody.objectId,\n objectType: requestBody.objectType,\n createdOn: new Date().toISOString(),\n })\n return HttpResponse.json(newSubscription, { status: 201 })\n },\n ),\n http.delete(`${backendOrigin}/repo/v1/subscription/:id`, ({ params }) => {\n const subscriptionId = params.id as string\n subscriptionService.delete(subscriptionId)\n return new Response('', { status: 200 })\n }),\n http.post<never, Topic>(\n `${backendOrigin}/repo/v1/subscription/subscribers`,\n async ({ request }) => {\n const topic: Topic = await request.json()\n\n const matchingSubscriptions = subscriptionService.getMany(\n s =>\n s.objectType === topic.objectType && s.objectId === topic.objectId,\n )\n\n const resp: SubscriberPagedResults = {\n subscribers: matchingSubscriptions.map(s => s.subscriberId),\n }\n return HttpResponse.json(resp, { status: 200 })\n },\n ),\n ]\n}\n"],"mappings":";;;;;AAeA,IAAM,IAAsB,IAAI,EAG9B;CACA,aAAa,CAAC,GAAG,GAAoB,GAAG,EAAoB;CAC5D,SAAS;CACT,gBAAgB;CACjB,CAAC;AAEF,SAAS,EACP,GACA,IAA+B,OAC/B,IAAS,GACT,IAAQ,IACR,GAC0B;CAC1B,IAAM,IAAa,EAChB,QAAQ,CACR,QAAO,MACF,IACK,EAAE,eAAe,IAEnB,GACP,CACD,QAAO,MACF,IACK,EAAO,SAAS,EAAE,SAAS,GAE7B,GACP,CACD,MAAM,GAAG,MAAM;EACd,IAAM,IACJ,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS;AACnE,SAAO,MAAkB,QAAQ,IAAM,KAAK;GAC5C,EAEE,IAAuB,EAAW;AAExC,QAAO;EACL,SAAS,EAAW,MAAM,GAAQ,IAAS,EAAM;EACjD;EACD;;AAGH,SAAgB,EAAwB,GAAuB;AAC7D,QAAO;EACL,EAAK,IAAI,GAAG,EAAc,6BAA6B,EAAE,iBAAc;GACrE,IAAM,IACH,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IACjC,aACD,IAA+B,KAAA,GAC5B,IACH,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IACjC,gBACD,IAAsB,KAAA,GACnB,IAAc,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IAAI,SAAS,EAC7D,IAAS,IAAc,SAAS,EAAY,GAAG,KAAA,GAC/C,IAAa,IAAI,IAAI,EAAQ,IAAI,CAAC,aAAa,IAAI,QAAQ,EAG3D,IACJ,EAAiB,KAAc,KAAA,GAAW,GAAe,GAH7C,IAAa,SAAS,EAAW,GAAG,KAAA,EAGuB;AAEzE,UAAO,EAAa,KAAK,GAAM,EAAE,QAAQ,KAAK,CAAC;IAC/C;EACF,EAAK,KACH,GAAG,EAAc,6BACjB,OAAO,EAAE,iBAAc;GACrB,IAAM,IAAmC,MAAM,EAAQ,MAAM,EAEvD,IACJ,EACE,EAAY,YACZ,EAAY,eACZ,KAAA,GACA,KAAA,GACA,EAAY,OACb;AAEH,UAAO,EAAa,KAAK,GAAM,EAAE,QAAQ,KAAK,CAAC;IAElD;EACD,EAAK,KACH,GAAG,EAAc,wBACjB,OAAO,EAAE,iBAAc;GACrB,IAAM,IAAqB,MAAM,EAAQ,MAAM,EAEzC,IAAkB,EAAoB,OAAO;IACjD,cAAc;IACd,UAAU,EAAY;IACtB,YAAY,EAAY;IACxB,4BAAW,IAAI,MAAM,EAAC,aAAa;IACpC,CAAC;AACF,UAAO,EAAa,KAAK,GAAiB,EAAE,QAAQ,KAAK,CAAC;IAE7D;EACD,EAAK,OAAO,GAAG,EAAc,6BAA6B,EAAE,gBAAa;GACvE,IAAM,IAAiB,EAAO;AAE9B,UADA,EAAoB,OAAO,EAAe,EACnC,IAAI,SAAS,IAAI,EAAE,QAAQ,KAAK,CAAC;IACxC;EACF,EAAK,KACH,GAAG,EAAc,oCACjB,OAAO,EAAE,iBAAc;GACrB,IAAM,IAAe,MAAM,EAAQ,MAAM,EAOnC,IAA+B,EACnC,aAN4B,EAAoB,SAChD,MACE,EAAE,eAAe,EAAM,cAAc,EAAE,aAAa,EAAM,SAI/C,CAAsB,KAAI,MAAK,EAAE,aAAa,EAC5D;AACD,UAAO,EAAa,KAAK,GAAM,EAAE,QAAQ,KAAK,CAAC;IAElD;EACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teamHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/teamHandlers.ts"],"sourcesContent":["import { delay } from '@/synapse-client/HttpClient'\nimport { IdList } from '@sage-bionetworks/synapse-client'\nimport {\n CreateMembershipRequestRequest,\n CreateTeamRequest,\n ListWrapper,\n MembershipInvitation,\n MembershipRequest,\n PaginatedResults,\n Team,\n TeamMembershipStatus,\n} from '@sage-bionetworks/synapse-types'\nimport { uniqueId } from 'lodash-es'\nimport { http, HttpResponse } from 'msw'\nimport {\n mockTeamMembershipInvitations,\n mockTeamMembershipStatuses,\n mockTeams,\n} from '../../team/mockTeam'\nimport { MOCK_USER_ID } from '../../user/mock_user_profile'\nimport { SynapseApiResponse } from '../handlers'\nimport BasicMockedCrudService from '../util/BasicMockedCrudService'\n\nconst mockedTeamService = new BasicMockedCrudService<Team, 'id'>({\n initialData: mockTeams as Team[],\n idField: 'id',\n autoGenerateId: true,\n})\n\nconst mockedTeamMembershipService =\n new BasicMockedCrudService<TeamMembershipStatus>({\n initialData: mockTeamMembershipStatuses as TeamMembershipStatus[],\n })\n\nfunction getTeamMembershipStatusByTeamIdMemberId(\n teamId: string,\n memberId: string,\n): TeamMembershipStatus | undefined {\n return mockedTeamMembershipService.getOneByPredicate(\n membership =>\n membership.teamId === teamId && membership.userId === memberId,\n )\n}\n\nexport function getTeamHandler(backendOrigin: string) {\n return http.get(`${backendOrigin}/repo/v1/team/:teamId`, ({ params }) => {\n const team = mockedTeamService.getOneById(params.teamId as string)\n\n if (team) {\n return HttpResponse.json(team, { status: 200 })\n }\n\n const errorResponse: SynapseApiResponse<ListWrapper<Team>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Team id: '${params.teamId}' does not exist`,\n }\n return HttpResponse.json(errorResponse, { status: 404 })\n })\n}\n\nexport function getTeamListHandler(backendOrigin: string) {\n return http.post<never, IdList>(\n `${backendOrigin}/repo/v1/teamList`,\n async ({ request }) => {\n const requestBody = await request.json()\n const teams: Team[] = []\n for (const teamId of requestBody.list!) {\n const team = mockedTeamService.getOneById(teamId.toString())\n if (!team) {\n const errorResponse: SynapseApiResponse<ListWrapper<Team>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Team with id ${teamId} not found`,\n }\n return HttpResponse.json(errorResponse, { status: 404 })\n }\n teams.push(team)\n }\n\n const response: SynapseApiResponse<ListWrapper<Team>> = {\n concreteType: 'org.sagebionetworks.repo.model.Team',\n list: teams,\n }\n\n return HttpResponse.json(response, { status: 200 })\n },\n )\n}\n\nexport function getCreateTeamHandler(backendOrigin: string) {\n return http.post<never, CreateTeamRequest>(\n `${backendOrigin}/repo/v1/team`,\n async ({ request }) => {\n const requestBody: CreateTeamRequest = await request.json()\n\n const createdTeam = mockedTeamService.create({\n ...requestBody,\n createdBy: String(MOCK_USER_ID),\n createdOn: new Date().toISOString(),\n etag: 'etag',\n modifiedBy: String(MOCK_USER_ID),\n modifiedOn: new Date().toISOString(),\n })\n\n mockedTeamMembershipService.create({\n teamId: createdTeam.id,\n userId: String(MOCK_USER_ID),\n isMember: true,\n hasOpenInvitation: false,\n hasOpenRequest: false,\n canJoin: false,\n membershipApprovalRequired: false,\n hasUnmetAccessRequirement: false,\n canSendEmail: true,\n })\n\n // Avoid a race condition where the data in the arrays may not have updated before subsequent calls are made by the client\n await delay(250)\n\n return HttpResponse.json(createdTeam, { status: 201 })\n },\n )\n}\n\nexport function getTeamMembershipStatusHandler(backendOrigin: string) {\n return http.get(\n `${backendOrigin}/repo/v1/team/:teamId/member/:memberId/membershipStatus`,\n ({ params }) => {\n const teamId = params.teamId as string\n const memberId = params.memberId as string\n let response: SynapseApiResponse<TeamMembershipStatus>\n let status: number\n\n const team = mockedTeamService.getOneById(teamId)\n if (!team) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `getTeamMembershipStatusHandler could not locate a team with ID ${teamId}`,\n }\n status = 404\n } else {\n const membershipStatus: TeamMembershipStatus =\n getTeamMembershipStatusByTeamIdMemberId(teamId, memberId) ?? {\n teamId: teamId,\n userId: memberId,\n isMember: false,\n hasOpenInvitation: false, // TODO\n hasOpenRequest: false, // TODO\n canJoin: true, // TODO\n membershipApprovalRequired: false, // TODO\n hasUnmetAccessRequirement: false, // TODO\n canSendEmail: false, // TODO\n }\n\n response = membershipStatus\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport function getUpdateTeamMembershipStatusHandler(\n backendOrigin: string,\n mockedInvitationService: BasicMockedCrudService<MembershipInvitation, 'id'>,\n) {\n return http.put(\n `${backendOrigin}/repo/v1/team/:teamId/member/:memberId`,\n ({ params }) => {\n const teamId = params.teamId as string\n const memberId = params.memberId as string\n let response: SynapseApiResponse<void> | ''\n let status: number\n\n const team = mockedTeamService.getOneById(teamId)\n if (!team) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `getTeamMembershipStatusHandler could not locate a team with ID ${teamId}`,\n }\n status = 404\n } else {\n const membershipStatus: TeamMembershipStatus = {\n teamId: teamId,\n userId: memberId,\n isMember: true,\n hasOpenInvitation: false, // TODO\n hasOpenRequest: false, // TODO\n canJoin: true, // TODO\n membershipApprovalRequired: false, // TODO\n hasUnmetAccessRequirement: false, // TODO\n canSendEmail: false, // TODO\n }\n mockedTeamMembershipService.create(membershipStatus)\n // Remove any open invitation for this user/team so subsequent GET reflects the accepted state\n const invitation = mockedInvitationService.getOneByPredicate(\n inv => inv.teamId === teamId && inv.inviteeId === memberId,\n )\n if (invitation?.id) {\n mockedInvitationService.delete(invitation.id)\n }\n response = ''\n status = 201\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport function getCreateTeamMembershipRequestHandler(backendOrigin: string) {\n return http.post<never, CreateMembershipRequestRequest>(\n `${backendOrigin}/repo/v1/membershipRequest`,\n async ({ request }) => {\n const requestBody: CreateMembershipRequestRequest = await request.json()\n\n const response: SynapseApiResponse<MembershipRequest> = {\n ...requestBody,\n id: uniqueId(),\n createdOn: new Date().toISOString(),\n createdBy: String(MOCK_USER_ID),\n }\n return HttpResponse.json(response, { status: 201 })\n },\n )\n}\n\nexport function getOpenInvitationsForUserHandler(\n backendOrigin: string,\n mockedInvitationService: BasicMockedCrudService<MembershipInvitation, 'id'>,\n) {\n return http.get(\n `${backendOrigin}/repo/v1/user/:userId/openInvitation`,\n ({ params }) => {\n const userInvitations = mockedInvitationService.getMany(\n inv => String(inv.inviteeId) === String(params.userId),\n )\n const response: SynapseApiResponse<\n PaginatedResults<MembershipInvitation>\n > = {\n results: userInvitations,\n totalNumberOfResults: userInvitations.length,\n }\n return HttpResponse.json(response, { status: 200 })\n },\n )\n}\n\nexport function getDeleteMembershipInvitationHandler(\n backendOrigin: string,\n mockedInvitationService: BasicMockedCrudService<MembershipInvitation, 'id'>,\n) {\n return http.delete(\n `${backendOrigin}/repo/v1/membershipInvitation/:invitationId`,\n ({ params }) => {\n const invitationId = params.invitationId as string\n const invitation = mockedInvitationService.getOneById(invitationId)\n if (!invitation) {\n const errorResponse: SynapseApiResponse<void> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Membership invitation with ID ${invitationId} not found`,\n }\n return HttpResponse.json(errorResponse, { status: 404 })\n }\n mockedInvitationService.delete(invitationId)\n return new HttpResponse(null, { status: 204 })\n },\n )\n}\n\nexport default function getAllTeamHandlers(\n backendOrigin: string,\n initialInvitations: MembershipInvitation[] = [\n ...mockTeamMembershipInvitations,\n ],\n) {\n const mockedInvitationService = new BasicMockedCrudService<\n MembershipInvitation,\n 'id'\n >({\n initialData: initialInvitations,\n idField: 'id',\n })\n\n return [\n getTeamHandler(backendOrigin),\n getTeamListHandler(backendOrigin),\n getCreateTeamHandler(backendOrigin),\n getTeamMembershipStatusHandler(backendOrigin),\n getUpdateTeamMembershipStatusHandler(\n backendOrigin,\n mockedInvitationService,\n ),\n getCreateTeamMembershipRequestHandler(backendOrigin),\n getOpenInvitationsForUserHandler(backendOrigin, mockedInvitationService),\n getDeleteMembershipInvitationHandler(\n backendOrigin,\n mockedInvitationService,\n ),\n ]\n}\n"],"mappings":";;;;;;;AAuBA,IAAM,IAAoB,IAAI,EAAmC;CAC/D,aAAa;CACb,SAAS;CACT,gBAAgB;CACjB,CAAC,EAEI,IACJ,IAAI,EAA6C,EAC/C,aAAa,GACd,CAAC;AAEJ,SAAS,EACP,GACA,GACkC;AAClC,QAAO,EAA4B,mBACjC,MACE,EAAW,WAAW,KAAU,EAAW,WAAW,EACzD;;AAGH,SAAgB,EAAe,GAAuB;AACpD,QAAO,EAAK,IAAI,GAAG,EAAc,yBAAyB,EAAE,gBAAa;EACvE,IAAM,IAAO,EAAkB,WAAW,EAAO,OAAiB;AAElE,MAAI,EACF,QAAO,EAAa,KAAK,GAAM,EAAE,QAAQ,KAAK,CAAC;EAGjD,IAAM,IAAuD;GAC3D,cAAc;GACd,QAAQ,aAAa,EAAO,OAAO;GACpC;AACD,SAAO,EAAa,KAAK,GAAe,EAAE,QAAQ,KAAK,CAAC;GACxD;;AAGJ,SAAgB,EAAmB,GAAuB;AACxD,QAAO,EAAK,KACV,GAAG,EAAc,oBACjB,OAAO,EAAE,iBAAc;EACrB,IAAM,IAAc,MAAM,EAAQ,MAAM,EAClC,IAAgB,EAAE;AACxB,OAAK,IAAM,KAAU,EAAY,MAAO;GACtC,IAAM,IAAO,EAAkB,WAAW,EAAO,UAAU,CAAC;AAC5D,OAAI,CAAC,GAAM;IACT,IAAM,IAAuD;KAC3D,cAAc;KACd,QAAQ,gBAAgB,EAAO;KAChC;AACD,WAAO,EAAa,KAAK,GAAe,EAAE,QAAQ,KAAK,CAAC;;AAE1D,KAAM,KAAK,EAAK;;EAGlB,IAAM,IAAkD;GACtD,cAAc;GACd,MAAM;GACP;AAED,SAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;GAEtD;;AAGH,SAAgB,EAAqB,GAAuB;AAC1D,QAAO,EAAK,KACV,GAAG,EAAc,gBACjB,OAAO,EAAE,iBAAc;EACrB,IAAM,IAAiC,MAAM,EAAQ,MAAM,EAErD,IAAc,EAAkB,OAAO;GAC3C,GAAG;GACH,WAAW;GACX,4BAAW,IAAI,MAAM,EAAC,aAAa;GACnC,MAAM;GACN,YAAY;GACZ,6BAAY,IAAI,MAAM,EAAC,aAAa;GACrC,CAAC;AAiBF,SAfA,EAA4B,OAAO;GACjC,QAAQ,EAAY;GACpB,QAAQ;GACR,UAAU;GACV,mBAAmB;GACnB,gBAAgB;GAChB,SAAS;GACT,4BAA4B;GAC5B,2BAA2B;GAC3B,cAAc;GACf,CAAC,EAGF,MAAM,EAAM,IAAI,EAET,EAAa,KAAK,GAAa,EAAE,QAAQ,KAAK,CAAC;GAEzD;;AAGH,SAAgB,EAA+B,GAAuB;AACpE,QAAO,EAAK,IACV,GAAG,EAAc,2DAChB,EAAE,gBAAa;EACd,IAAM,IAAS,EAAO,QAChB,IAAW,EAAO,UACpB,GACA;AA0BJ,SAxBa,EAAkB,WAAW,EAAO,IAqB/C,IAZE,EAAwC,GAAQ,EAAS,IAAI;GACnD;GACR,QAAQ;GACR,UAAU;GACV,mBAAmB;GACnB,gBAAgB;GAChB,SAAS;GACT,4BAA4B;GAC5B,2BAA2B;GAC3B,cAAc;GACf,EAGH,IAAS,QApBT,IAAW;GACT,cAAc;GACd,QAAQ,kEAAkE;GAC3E,EACD,IAAS,MAkBJ,EAAa,KAAK,GAAU,EAAE,WAAQ,CAAC;GAEjD;;AAGH,SAAgB,EACd,GACA,GACA;AACA,QAAO,EAAK,IACV,GAAG,EAAc,0CAChB,EAAE,gBAAa;EACd,IAAM,IAAS,EAAO,QAChB,IAAW,EAAO,UACpB,GACA;AAGJ,MAAI,CADS,EAAkB,WAAW,EAAO,CAM/C,CAJA,IAAW;GACT,cAAc;GACd,QAAQ,kEAAkE;GAC3E,EACD,IAAS;OACJ;GACL,IAAM,IAAyC;IACrC;IACR,QAAQ;IACR,UAAU;IACV,mBAAmB;IACnB,gBAAgB;IAChB,SAAS;IACT,4BAA4B;IAC5B,2BAA2B;IAC3B,cAAc;IACf;AACD,KAA4B,OAAO,EAAiB;GAEpD,IAAM,IAAa,EAAwB,mBACzC,MAAO,EAAI,WAAW,KAAU,EAAI,cAAc,EACnD;AAKD,GAJI,GAAY,MACd,EAAwB,OAAO,EAAW,GAAG,EAE/C,IAAW,IACX,IAAS;;AAEX,SAAO,EAAa,KAAK,GAAU,EAAE,WAAQ,CAAC;GAEjD;;AAGH,SAAgB,EAAsC,GAAuB;AAC3E,QAAO,EAAK,KACV,GAAG,EAAc,6BACjB,OAAO,EAAE,iBAAc;EAGrB,IAAM,IAAkD;GACtD,GAHkD,MAAM,EAAQ,MAAM;GAItE,IAAI,GAAU;GACd,4BAAW,IAAI,MAAM,EAAC,aAAa;GACnC,WAAW;GACZ;AACD,SAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;GAEtD;;AAGH,SAAgB,EACd,GACA,GACA;AACA,QAAO,EAAK,IACV,GAAG,EAAc,wCAChB,EAAE,gBAAa;EACd,IAAM,IAAkB,EAAwB,SAC9C,MAAO,OAAO,EAAI,UAAU,KAAK,OAAO,EAAO,OAAO,CACvD,EACK,IAEF;GACF,SAAS;GACT,sBAAsB,EAAgB;GACvC;AACD,SAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,KAAK,CAAC;GAEtD;;AAGH,SAAgB,EACd,GACA,GACA;AACA,QAAO,EAAK,OACV,GAAG,EAAc,+CAChB,EAAE,gBAAa;EACd,IAAM,IAAe,EAAO;AAE5B,MAAI,CADe,EAAwB,WAAW,EAAa,EAClD;GACf,IAAM,IAA0C;IAC9C,cAAc;IACd,QAAQ,iCAAiC,EAAa;IACvD;AACD,UAAO,EAAa,KAAK,GAAe,EAAE,QAAQ,KAAK,CAAC;;AAG1D,SADA,EAAwB,OAAO,EAAa,EACrC,IAAI,EAAa,MAAM,EAAE,QAAQ,KAAK,CAAC;GAEjD;;AAGH,SAAwB,EACtB,GACA,IAA6C,CAC3C,GAAG,EACJ,EACD;CACA,IAAM,IAA0B,IAAI,EAGlC;EACA,aAAa;EACb,SAAS;EACV,CAAC;AAEF,QAAO;EACL,EAAe,EAAc;EAC7B,EAAmB,EAAc;EACjC,EAAqB,EAAc;EACnC,EAA+B,EAAc;EAC7C,EACE,GACA,EACD;EACD,EAAsC,EAAc;EACpD,EAAiC,GAAe,EAAwB;EACxE,EACE,GACA,EACD;EACF"}
|
|
1
|
+
{"version":3,"file":"teamHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/teamHandlers.ts"],"sourcesContent":["import { delay } from '@/synapse-client/HttpClient'\nimport { IdList } from '@sage-bionetworks/synapse-client'\nimport {\n CreateMembershipRequestRequest,\n CreateTeamRequest,\n ListWrapper,\n MembershipInvitation,\n MembershipRequest,\n PaginatedResults,\n Team,\n TeamMembershipStatus,\n} from '@sage-bionetworks/synapse-types'\nimport { uniqueId } from 'lodash-es'\nimport { http, HttpResponse } from 'msw'\nimport {\n mockTeamMembershipInvitations,\n mockTeamMembershipStatuses,\n mockTeams,\n} from '../../team/mockTeam'\nimport { MOCK_USER_ID } from '../../user/mock_user_profile'\nimport { SynapseApiResponse } from '../handlers'\nimport BasicMockedCrudService from '../util/BasicMockedCrudService'\n\nconst mockedTeamService = new BasicMockedCrudService<Team, 'id'>({\n initialData: mockTeams as Team[],\n idField: 'id',\n autoGenerateId: true,\n})\n\nconst mockedTeamMembershipService =\n new BasicMockedCrudService<TeamMembershipStatus>({\n initialData: mockTeamMembershipStatuses as TeamMembershipStatus[],\n })\n\nfunction getTeamMembershipStatusByTeamIdMemberId(\n teamId: string,\n memberId: string,\n): TeamMembershipStatus | undefined {\n return mockedTeamMembershipService.getOneByPredicate(\n membership =>\n membership.teamId === teamId && membership.userId === memberId,\n )\n}\n\nexport function getTeamHandler(backendOrigin: string) {\n return http.get(`${backendOrigin}/repo/v1/team/:teamId`, ({ params }) => {\n const team = mockedTeamService.getOneById(params.teamId as string)\n\n if (team) {\n return HttpResponse.json(team, { status: 200 })\n }\n\n const errorResponse: SynapseApiResponse<ListWrapper<Team>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Team id: '${params.teamId}' does not exist`,\n }\n return HttpResponse.json(errorResponse, { status: 404 })\n })\n}\n\nexport function getTeamListHandler(backendOrigin: string) {\n return http.post<never, IdList>(\n `${backendOrigin}/repo/v1/teamList`,\n async ({ request }) => {\n const requestBody = await request.json()\n const teams: Team[] = []\n for (const teamId of requestBody.list!) {\n const team = mockedTeamService.getOneById(teamId.toString())\n if (!team) {\n const errorResponse: SynapseApiResponse<ListWrapper<Team>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Team with id ${teamId} not found`,\n }\n return HttpResponse.json(errorResponse, { status: 404 })\n }\n teams.push(team)\n }\n\n const response: SynapseApiResponse<ListWrapper<Team>> = {\n concreteType: 'org.sagebionetworks.repo.model.Team',\n list: teams,\n }\n\n return HttpResponse.json(response, { status: 200 })\n },\n )\n}\n\nexport function getCreateTeamHandler(backendOrigin: string) {\n return http.post<never, CreateTeamRequest>(\n `${backendOrigin}/repo/v1/team`,\n async ({ request }) => {\n const requestBody: CreateTeamRequest = await request.json()\n\n const createdTeam = mockedTeamService.create({\n ...requestBody,\n createdBy: String(MOCK_USER_ID),\n createdOn: new Date().toISOString(),\n etag: 'etag',\n modifiedBy: String(MOCK_USER_ID),\n modifiedOn: new Date().toISOString(),\n })\n\n mockedTeamMembershipService.create({\n teamId: createdTeam.id,\n userId: String(MOCK_USER_ID),\n isMember: true,\n hasOpenInvitation: false,\n hasOpenRequest: false,\n canJoin: false,\n membershipApprovalRequired: false,\n hasUnmetAccessRequirement: false,\n canSendEmail: true,\n })\n\n // Avoid a race condition where the data in the arrays may not have updated before subsequent calls are made by the client\n await delay(250)\n\n return HttpResponse.json(createdTeam, { status: 201 })\n },\n )\n}\n\nexport function getTeamMembershipStatusHandler(backendOrigin: string) {\n return http.get(\n `${backendOrigin}/repo/v1/team/:teamId/member/:memberId/membershipStatus`,\n ({ params }) => {\n const teamId = params.teamId as string\n const memberId = params.memberId as string\n let response: SynapseApiResponse<TeamMembershipStatus>\n let status: number\n\n const team = mockedTeamService.getOneById(teamId)\n if (!team) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `getTeamMembershipStatusHandler could not locate a team with ID ${teamId}`,\n }\n status = 404\n } else {\n const membershipStatus: TeamMembershipStatus =\n getTeamMembershipStatusByTeamIdMemberId(teamId, memberId) ?? {\n teamId: teamId,\n userId: memberId,\n isMember: false,\n hasOpenInvitation: false, // TODO\n hasOpenRequest: false, // TODO\n canJoin: true, // TODO\n membershipApprovalRequired: false, // TODO\n hasUnmetAccessRequirement: false, // TODO\n canSendEmail: false, // TODO\n }\n\n response = membershipStatus\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport function getUpdateTeamMembershipStatusHandler(\n backendOrigin: string,\n mockedInvitationService: BasicMockedCrudService<MembershipInvitation, 'id'>,\n) {\n return http.put(\n `${backendOrigin}/repo/v1/team/:teamId/member/:memberId`,\n ({ params }) => {\n const teamId = params.teamId as string\n const memberId = params.memberId as string\n let response: SynapseApiResponse<void> | ''\n let status: number\n\n const team = mockedTeamService.getOneById(teamId)\n if (!team) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `getTeamMembershipStatusHandler could not locate a team with ID ${teamId}`,\n }\n status = 404\n } else {\n const membershipStatus: TeamMembershipStatus = {\n teamId: teamId,\n userId: memberId,\n isMember: true,\n hasOpenInvitation: false, // TODO\n hasOpenRequest: false, // TODO\n canJoin: true, // TODO\n membershipApprovalRequired: false, // TODO\n hasUnmetAccessRequirement: false, // TODO\n canSendEmail: false, // TODO\n }\n mockedTeamMembershipService.create(membershipStatus)\n // Remove any open invitation for this user/team so subsequent GET reflects the accepted state\n const invitation = mockedInvitationService.getOneByPredicate(\n inv => inv.teamId === teamId && inv.inviteeId === memberId,\n )\n if (invitation?.id) {\n mockedInvitationService.delete(invitation.id)\n }\n response = ''\n status = 201\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport function getCreateTeamMembershipRequestHandler(backendOrigin: string) {\n return http.post<never, CreateMembershipRequestRequest>(\n `${backendOrigin}/repo/v1/membershipRequest`,\n async ({ request }) => {\n const requestBody: CreateMembershipRequestRequest = await request.json()\n\n const response: SynapseApiResponse<MembershipRequest> = {\n ...requestBody,\n id: uniqueId(),\n createdOn: new Date().toISOString(),\n createdBy: String(MOCK_USER_ID),\n }\n return HttpResponse.json(response, { status: 201 })\n },\n )\n}\n\nexport function getOpenInvitationsForUserHandler(\n backendOrigin: string,\n mockedInvitationService: BasicMockedCrudService<MembershipInvitation, 'id'>,\n) {\n return http.get(\n `${backendOrigin}/repo/v1/user/:userId/openInvitation`,\n ({ params }) => {\n const userInvitations = mockedInvitationService.getMany(\n inv => String(inv.inviteeId) === String(params.userId),\n )\n const response: SynapseApiResponse<\n PaginatedResults<MembershipInvitation>\n > = {\n results: userInvitations,\n totalNumberOfResults: userInvitations.length,\n }\n return HttpResponse.json(response, { status: 200 })\n },\n )\n}\n\nexport function getDeleteMembershipInvitationHandler(\n backendOrigin: string,\n mockedInvitationService: BasicMockedCrudService<MembershipInvitation, 'id'>,\n) {\n return http.delete(\n `${backendOrigin}/repo/v1/membershipInvitation/:invitationId`,\n ({ params }) => {\n const invitationId = params.invitationId as string\n const invitation = mockedInvitationService.getOneById(invitationId)\n if (!invitation) {\n const errorResponse: SynapseApiResponse<void> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Membership invitation with ID ${invitationId} not found`,\n }\n return HttpResponse.json(errorResponse, { status: 404 })\n }\n mockedInvitationService.delete(invitationId)\n return new HttpResponse(null, { status: 204 })\n },\n )\n}\n\nexport default function getAllTeamHandlers(\n backendOrigin: string,\n initialInvitations: MembershipInvitation[] = [\n ...mockTeamMembershipInvitations,\n ],\n) {\n const mockedInvitationService = new BasicMockedCrudService<\n MembershipInvitation,\n 'id'\n >({\n initialData: initialInvitations,\n idField: 'id',\n })\n\n return [\n getTeamHandler(backendOrigin),\n getTeamListHandler(backendOrigin),\n getCreateTeamHandler(backendOrigin),\n getTeamMembershipStatusHandler(backendOrigin),\n getUpdateTeamMembershipStatusHandler(\n backendOrigin,\n mockedInvitationService,\n ),\n getCreateTeamMembershipRequestHandler(backendOrigin),\n getOpenInvitationsForUserHandler(backendOrigin, mockedInvitationService),\n getDeleteMembershipInvitationHandler(\n backendOrigin,\n mockedInvitationService,\n ),\n ]\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userProfileHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/userProfileHandlers.ts"],"sourcesContent":["import { UserProfileList } from '@/synapse-client/SynapseClient'\nimport {\n FAVORITES,\n NOTIFICATION_EMAIL,\n PROFILE_IMAGE_PREVIEW,\n USER_BUNDLE,\n USER_GROUP_HEADERS,\n USER_GROUP_HEADERS_BATCH,\n USER_ID_BUNDLE,\n USER_PROFILE,\n USER_PROFILE_ID,\n} from '@/utils/APIConstants'\nimport { IdList } from '@sage-bionetworks/synapse-client'\nimport {\n TwoFactorAuthStatus,\n TYPE_FILTER,\n UserBundle,\n UserGroupHeaderResponsePage,\n UserProfile,\n} from '@sage-bionetworks/synapse-types'\nimport { http, HttpResponse } from 'msw'\nimport { mockPaginatedEntityHeaders } from '../../entity/mockEntity'\nimport {\n mockUserBundle,\n mockUserData,\n mockUserProfileData,\n} from '../../user/mock_user_profile'\nimport { mockUserGroupData } from '../../usergroup/mockUserGroup'\nimport { SynapseApiResponse } from '../handlers'\n\nexport const getUserProfileHandlers = (backendOrigin: string) => [\n /**\n * Get User Profile by ID\n */\n http.get(`${backendOrigin}${USER_PROFILE_ID(':id')}`, ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<UserProfile> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a user profile with ID ${params.id}`,\n }\n const match = mockUserData.find(\n userData => userData.id.toString() === params.id,\n )\n if (match && match.userProfile) {\n response = match.userProfile\n status = 200\n }\n return HttpResponse.json(response, { status })\n }),\n\n /**\n * Get the caller's user profile\n */\n http.get(`${backendOrigin}${USER_PROFILE}`, () => {\n // default return a mock UserProfile.\n const response: UserProfile = mockUserProfileData\n const status = 200\n return HttpResponse.json(response, { status })\n }),\n\n /**\n * Get the caller's user bundle\n */\n http.get(`${backendOrigin}${USER_BUNDLE}`, () => {\n const result: UserBundle = mockUserBundle\n return HttpResponse.json(result, { status: 200 })\n }),\n\n /**\n * Get a user bundle by ID\n */\n http.get(`${backendOrigin}${USER_ID_BUNDLE(':id')}`, ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<UserBundle> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a user bundle with ID ${params.id}`,\n }\n const match = mockUserData.find(\n userData => userData.id.toString() === params.id,\n )\n if (match && match.userBundle) {\n response = match.userBundle\n status = 200\n }\n return HttpResponse.json(response, { status })\n }),\n\n /**\n * Get the caller's favorites\n */\n http.get(`${backendOrigin}${FAVORITES}`, () => {\n return HttpResponse.json(mockPaginatedEntityHeaders, { status: 200 })\n }),\n\n /**\n * Get a batch of user group headers\n */\n http.get(`${backendOrigin}${USER_GROUP_HEADERS_BATCH}`, ({ request }) => {\n const ids = new URL(request.url).searchParams.get('ids')!.split(',')\n const responsePage: UserGroupHeaderResponsePage = {\n children: mockUserGroupData\n .filter(userData => ids.includes(userData.id.toString()))\n .map(userData => userData.userGroupHeader),\n }\n return HttpResponse.json(responsePage, { status: 200 })\n }),\n\n /**\n * Get a batch of user profiles\n */\n http.post<never, IdList>(\n `${backendOrigin}${USER_PROFILE}`,\n async ({ request }) => {\n const requestedList = ((await request.json()).list ?? []).map(String)\n const responsePage: UserProfileList = {\n list: mockUserData\n .filter(userData => requestedList.includes(userData.id.toString()))\n .map(userData => userData.userProfile)\n .filter(\n (userProfile): userProfile is UserProfile => userProfile != null,\n ),\n }\n return HttpResponse.json(responsePage, { status: 200 })\n },\n ),\n\n /**\n * Get userGroupHeaders by prefix\n */\n http.get(`${backendOrigin}${USER_GROUP_HEADERS}`, ({ request }) => {\n const prefix = (\n new URL(request.url).searchParams.get('prefix') ?? ''\n ).toLowerCase()\n const typeFilter = new URL(request.url).searchParams.get(\n 'typeFilter',\n ) as TYPE_FILTER\n const responsePage: UserGroupHeaderResponsePage = {\n children: mockUserGroupData\n .filter(userData => {\n if (!typeFilter || typeFilter === TYPE_FILTER.ALL) {\n return true\n } else if (typeFilter === TYPE_FILTER.USERS_ONLY) {\n return userData.userGroupHeader.isIndividual\n } else {\n return !userData.userGroupHeader.isIndividual\n }\n })\n .filter(\n userData =>\n userData.userGroupHeader.userName\n .toLowerCase()\n .startsWith(prefix) ||\n (userData.userGroupHeader.firstName || '')\n .toLowerCase()\n .startsWith(prefix) ||\n (userData.userGroupHeader.displayName || '')\n .toLowerCase()\n .startsWith(prefix) ||\n (userData.userGroupHeader.lastName || '')\n .toLowerCase()\n .startsWith(prefix),\n )\n .map(userData => userData.userGroupHeader),\n }\n return HttpResponse.json(responsePage, { status: 200 })\n }),\n\n /**\n * Return a 404 when fetching the profile image\n */\n http.get(`${backendOrigin}${PROFILE_IMAGE_PREVIEW(':userId')}`, () => {\n return HttpResponse.json(\n { reason: 'user has no profile image' },\n { status: 404 },\n )\n }),\n\n http.get(`${backendOrigin}${NOTIFICATION_EMAIL}`, () => {\n return HttpResponse.json(\n { email: mockUserBundle.userProfile?.email },\n { status: 200 },\n )\n }),\n\n http.get(`${backendOrigin}/auth/v1/2fa`, () => {\n const response: TwoFactorAuthStatus = {\n status: 'ENABLED',\n }\n return HttpResponse.json(response, { status: 200 })\n }),\n]\n\nexport function getCurrentUserCertifiedValidatedHandler(\n backendOrigin: string,\n isCertified: boolean,\n isValidated: boolean,\n) {\n return http.get(`${backendOrigin}${USER_BUNDLE}`, () => {\n const status = 200\n const response: UserBundle = {\n ...mockUserBundle,\n isCertified: isCertified,\n isVerified: isValidated,\n }\n\n return HttpResponse.json(response, { status })\n })\n}\n"],"mappings":";;;;;;;AA8BA,IAAa,KAA0B,MAA0B;CAI/D,EAAK,IAAI,GAAG,IAAgB,EAAgB,MAAM,KAAK,EAAE,gBAAa;EACpE,IAAI,IAAS,KACT,IAA4C;GAC9C,cAAc;GACd,QAAQ,6DAA6D,EAAO;GAC7E,EACK,IAAQ,EAAa,MACzB,MAAY,EAAS,GAAG,UAAU,KAAK,EAAO,GAC/C;AAKD,SAJI,KAAS,EAAM,gBACjB,IAAW,EAAM,aACjB,IAAS,MAEJ,EAAa,KAAK,GAAU,EAAE,WAAQ,CAAC;GAC9C;CAKF,EAAK,IAAI,GAAG,IAAgB,WAAsB;EAEhD,IAAM,IAAwB;AAE9B,SAAO,EAAa,KAAK,GAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"userProfileHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/userProfileHandlers.ts"],"sourcesContent":["import { UserProfileList } from '@/synapse-client/SynapseClient'\nimport {\n FAVORITES,\n NOTIFICATION_EMAIL,\n PROFILE_IMAGE_PREVIEW,\n USER_BUNDLE,\n USER_GROUP_HEADERS,\n USER_GROUP_HEADERS_BATCH,\n USER_ID_BUNDLE,\n USER_PROFILE,\n USER_PROFILE_ID,\n} from '@/utils/APIConstants'\nimport { IdList } from '@sage-bionetworks/synapse-client'\nimport {\n TwoFactorAuthStatus,\n TYPE_FILTER,\n UserBundle,\n UserGroupHeaderResponsePage,\n UserProfile,\n} from '@sage-bionetworks/synapse-types'\nimport { http, HttpResponse } from 'msw'\nimport { mockPaginatedEntityHeaders } from '../../entity/mockEntity'\nimport {\n mockUserBundle,\n mockUserData,\n mockUserProfileData,\n} from '../../user/mock_user_profile'\nimport { mockUserGroupData } from '../../usergroup/mockUserGroup'\nimport { SynapseApiResponse } from '../handlers'\n\nexport const getUserProfileHandlers = (backendOrigin: string) => [\n /**\n * Get User Profile by ID\n */\n http.get(`${backendOrigin}${USER_PROFILE_ID(':id')}`, ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<UserProfile> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a user profile with ID ${params.id}`,\n }\n const match = mockUserData.find(\n userData => userData.id.toString() === params.id,\n )\n if (match && match.userProfile) {\n response = match.userProfile\n status = 200\n }\n return HttpResponse.json(response, { status })\n }),\n\n /**\n * Get the caller's user profile\n */\n http.get(`${backendOrigin}${USER_PROFILE}`, () => {\n // default return a mock UserProfile.\n const response: UserProfile = mockUserProfileData\n const status = 200\n return HttpResponse.json(response, { status })\n }),\n\n /**\n * Get the caller's user bundle\n */\n http.get(`${backendOrigin}${USER_BUNDLE}`, () => {\n const result: UserBundle = mockUserBundle\n return HttpResponse.json(result, { status: 200 })\n }),\n\n /**\n * Get a user bundle by ID\n */\n http.get(`${backendOrigin}${USER_ID_BUNDLE(':id')}`, ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<UserBundle> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a user bundle with ID ${params.id}`,\n }\n const match = mockUserData.find(\n userData => userData.id.toString() === params.id,\n )\n if (match && match.userBundle) {\n response = match.userBundle\n status = 200\n }\n return HttpResponse.json(response, { status })\n }),\n\n /**\n * Get the caller's favorites\n */\n http.get(`${backendOrigin}${FAVORITES}`, () => {\n return HttpResponse.json(mockPaginatedEntityHeaders, { status: 200 })\n }),\n\n /**\n * Get a batch of user group headers\n */\n http.get(`${backendOrigin}${USER_GROUP_HEADERS_BATCH}`, ({ request }) => {\n const ids = new URL(request.url).searchParams.get('ids')!.split(',')\n const responsePage: UserGroupHeaderResponsePage = {\n children: mockUserGroupData\n .filter(userData => ids.includes(userData.id.toString()))\n .map(userData => userData.userGroupHeader),\n }\n return HttpResponse.json(responsePage, { status: 200 })\n }),\n\n /**\n * Get a batch of user profiles\n */\n http.post<never, IdList>(\n `${backendOrigin}${USER_PROFILE}`,\n async ({ request }) => {\n const requestedList = ((await request.json()).list ?? []).map(String)\n const responsePage: UserProfileList = {\n list: mockUserData\n .filter(userData => requestedList.includes(userData.id.toString()))\n .map(userData => userData.userProfile)\n .filter(\n (userProfile): userProfile is UserProfile => userProfile != null,\n ),\n }\n return HttpResponse.json(responsePage, { status: 200 })\n },\n ),\n\n /**\n * Get userGroupHeaders by prefix\n */\n http.get(`${backendOrigin}${USER_GROUP_HEADERS}`, ({ request }) => {\n const prefix = (\n new URL(request.url).searchParams.get('prefix') ?? ''\n ).toLowerCase()\n const typeFilter = new URL(request.url).searchParams.get(\n 'typeFilter',\n ) as TYPE_FILTER\n const responsePage: UserGroupHeaderResponsePage = {\n children: mockUserGroupData\n .filter(userData => {\n if (!typeFilter || typeFilter === TYPE_FILTER.ALL) {\n return true\n } else if (typeFilter === TYPE_FILTER.USERS_ONLY) {\n return userData.userGroupHeader.isIndividual\n } else {\n return !userData.userGroupHeader.isIndividual\n }\n })\n .filter(\n userData =>\n userData.userGroupHeader.userName\n .toLowerCase()\n .startsWith(prefix) ||\n (userData.userGroupHeader.firstName || '')\n .toLowerCase()\n .startsWith(prefix) ||\n (userData.userGroupHeader.displayName || '')\n .toLowerCase()\n .startsWith(prefix) ||\n (userData.userGroupHeader.lastName || '')\n .toLowerCase()\n .startsWith(prefix),\n )\n .map(userData => userData.userGroupHeader),\n }\n return HttpResponse.json(responsePage, { status: 200 })\n }),\n\n /**\n * Return a 404 when fetching the profile image\n */\n http.get(`${backendOrigin}${PROFILE_IMAGE_PREVIEW(':userId')}`, () => {\n return HttpResponse.json(\n { reason: 'user has no profile image' },\n { status: 404 },\n )\n }),\n\n http.get(`${backendOrigin}${NOTIFICATION_EMAIL}`, () => {\n return HttpResponse.json(\n { email: mockUserBundle.userProfile?.email },\n { status: 200 },\n )\n }),\n\n http.get(`${backendOrigin}/auth/v1/2fa`, () => {\n const response: TwoFactorAuthStatus = {\n status: 'ENABLED',\n }\n return HttpResponse.json(response, { status: 200 })\n }),\n]\n\nexport function getCurrentUserCertifiedValidatedHandler(\n backendOrigin: string,\n isCertified: boolean,\n isValidated: boolean,\n) {\n return http.get(`${backendOrigin}${USER_BUNDLE}`, () => {\n const status = 200\n const response: UserBundle = {\n ...mockUserBundle,\n isCertified: isCertified,\n isVerified: isValidated,\n }\n\n return HttpResponse.json(response, { status })\n })\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wikiHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/wikiHandlers.ts"],"sourcesContent":["import { WIKI_OBJECT_TYPE, WIKI_PAGE, WIKI_PAGE_ID } from '@/utils/APIConstants'\nimport {\n FileHandleResults,\n ObjectType,\n WikiPage,\n WikiPageKey,\n} from '@sage-bionetworks/synapse-types'\nimport { http, HttpResponse } from 'msw'\nimport { MOCK_WIKI_ETAG, mockWikiPages } from '../../mockWiki'\nimport { mockWikiPageKeys } from '../../mockWikiPageKey'\nimport { MOCK_USER_ID } from '../../user/mock_user_profile'\nimport { SynapseApiResponse } from '../handlers'\nimport BasicMockedCrudService from '../util/BasicMockedCrudService'\n\nconst wikiOwnerObjectTypes = [\n ObjectType.ENTITY,\n ObjectType.ACCESS_REQUIREMENT,\n ObjectType.EVALUATION,\n]\n\nconst mockWikiPageService = new BasicMockedCrudService<WikiPage, 'id'>({\n initialData: mockWikiPages,\n idField: 'id',\n autoGenerateId: true,\n})\n\nconst mockWikiPageKeyService = new BasicMockedCrudService<WikiPageKey>({\n initialData: mockWikiPageKeys,\n})\n\nexport function getWikiPage(backendOrigin: string) {\n return wikiOwnerObjectTypes.map(ownerObjectType => {\n return http.get(\n `${backendOrigin}${WIKI_PAGE_ID(\n ownerObjectType,\n ':ownerObjectId',\n ':wikiPageId',\n )}`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<WikiPage> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a wiki page with ID ${params.wikiPageId}`,\n }\n\n const wikiPage = mockWikiPageService.getOneById(\n params.wikiPageId as string,\n )\n if (wikiPage) {\n response = wikiPage\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n )\n })\n}\n\nexport const getWikiHandlers = (backendOrigin: string) => [\n ...getWikiPage(backendOrigin),\n http.get(\n `${backendOrigin}/repo/v1/:objectType/:objectId/wiki2/:wikiId/attachmenthandles`,\n () => {\n const status = 200\n const response: SynapseApiResponse<FileHandleResults> = {\n list: [],\n }\n return HttpResponse.json(response, { status })\n },\n ),\n]\n\nexport function getRootWikiPageKeyHandler(backendOrigin: string) {\n return wikiOwnerObjectTypes.map(ownerObjectType => {\n return http.get(\n `${backendOrigin}${WIKI_OBJECT_TYPE(\n ownerObjectType,\n )}/:ownerObjectId/wikikey`,\n\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<WikiPageKey> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a WikiPageKey for ${ownerObjectType} ${params.ownerObjectId}`,\n }\n const wikiPageKey = mockWikiPageKeyService.getOneByPredicate(\n wikiPageKey => wikiPageKey.ownerObjectId === params.ownerObjectId,\n )\n\n if (wikiPageKey) {\n response = wikiPageKey\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n )\n })\n}\n\nexport function createWikiPage(backendOrigin: string) {\n return wikiOwnerObjectTypes.map(ownerObjectType => {\n return http.post<{ ownerObjectId: string }, WikiPage>(\n `${backendOrigin}${WIKI_PAGE(ownerObjectType, ':ownerObjectId')}`,\n async ({ request }) => {\n const requestBody: WikiPage = await request.json()\n const now = new Date().toISOString()\n const created = mockWikiPageService.create({\n ...requestBody,\n etag: MOCK_WIKI_ETAG,\n createdBy: String(MOCK_USER_ID),\n createdOn: now,\n modifiedBy: String(MOCK_USER_ID),\n modifiedOn: now,\n })\n\n return HttpResponse.json(created, { status: 201 })\n },\n )\n })\n}\n\nexport function updateWikiPage(backendOrigin: string) {\n return wikiOwnerObjectTypes.map(ownerObjectType => {\n return http.put<{ ownerObjectId: string; wikiPageId: string }, WikiPage>(\n `${backendOrigin}${WIKI_PAGE_ID(\n ownerObjectType,\n ':ownerObjectId',\n ':wikiPageId',\n )}`,\n async ({ request }) => {\n const requestBody: WikiPage = await request.json()\n const updated = mockWikiPageService.update(\n requestBody.id,\n requestBody,\n 'replace',\n )\n return HttpResponse.json(updated, { status: 201 })\n },\n )\n })\n}\n\nexport function getAllWikiHandlers(backendOrigin: string) {\n return [\n ...getWikiHandlers(backendOrigin),\n ...getRootWikiPageKeyHandler(backendOrigin),\n ...createWikiPage(backendOrigin),\n ...updateWikiPage(backendOrigin),\n ]\n}\n"],"mappings":";;;;;;;;AAcA,IAAM,IAAuB;CAC3B,EAAW;CACX,EAAW;CACX,EAAW;CACZ,EAEK,IAAsB,IAAI,EAAuC;CACrE,aAAa;CACb,SAAS;CACT,gBAAgB;CACjB,CAAC,EAEI,IAAyB,IAAI,EAAoC,EACrE,aAAa,GACd,CAAC;AAEF,SAAgB,EAAY,GAAuB;AACjD,QAAO,EAAqB,KAAI,MACvB,EAAK,IACV,GAAG,IAAgB,EACjB,GACA,kBACA,cACD,KACA,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAAyC;GAC3C,cAAc;GACd,QAAQ,0DAA0D,EAAO;GAC1E,EAEK,IAAW,EAAoB,WACnC,EAAO,WACR;AAKD,SAJI,MACF,IAAW,GACX,IAAS,MAEJ,EAAa,KAAK,GAAU,EAAE,WAAQ,CAAC;GAEjD,CACD;;AAGJ,IAAa,KAAmB,MAA0B,CACxD,GAAG,EAAY,EAAc,EAC7B,EAAK,IACH,GAAG,EAAc,uEAMR,EAAa,
|
|
1
|
+
{"version":3,"file":"wikiHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/wikiHandlers.ts"],"sourcesContent":["import { WIKI_OBJECT_TYPE, WIKI_PAGE, WIKI_PAGE_ID } from '@/utils/APIConstants'\nimport {\n FileHandleResults,\n ObjectType,\n WikiPage,\n WikiPageKey,\n} from '@sage-bionetworks/synapse-types'\nimport { http, HttpResponse } from 'msw'\nimport { MOCK_WIKI_ETAG, mockWikiPages } from '../../mockWiki'\nimport { mockWikiPageKeys } from '../../mockWikiPageKey'\nimport { MOCK_USER_ID } from '../../user/mock_user_profile'\nimport { SynapseApiResponse } from '../handlers'\nimport BasicMockedCrudService from '../util/BasicMockedCrudService'\n\nconst wikiOwnerObjectTypes = [\n ObjectType.ENTITY,\n ObjectType.ACCESS_REQUIREMENT,\n ObjectType.EVALUATION,\n]\n\nconst mockWikiPageService = new BasicMockedCrudService<WikiPage, 'id'>({\n initialData: mockWikiPages,\n idField: 'id',\n autoGenerateId: true,\n})\n\nconst mockWikiPageKeyService = new BasicMockedCrudService<WikiPageKey>({\n initialData: mockWikiPageKeys,\n})\n\nexport function getWikiPage(backendOrigin: string) {\n return wikiOwnerObjectTypes.map(ownerObjectType => {\n return http.get(\n `${backendOrigin}${WIKI_PAGE_ID(\n ownerObjectType,\n ':ownerObjectId',\n ':wikiPageId',\n )}`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<WikiPage> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a wiki page with ID ${params.wikiPageId}`,\n }\n\n const wikiPage = mockWikiPageService.getOneById(\n params.wikiPageId as string,\n )\n if (wikiPage) {\n response = wikiPage\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n )\n })\n}\n\nexport const getWikiHandlers = (backendOrigin: string) => [\n ...getWikiPage(backendOrigin),\n http.get(\n `${backendOrigin}/repo/v1/:objectType/:objectId/wiki2/:wikiId/attachmenthandles`,\n () => {\n const status = 200\n const response: SynapseApiResponse<FileHandleResults> = {\n list: [],\n }\n return HttpResponse.json(response, { status })\n },\n ),\n]\n\nexport function getRootWikiPageKeyHandler(backendOrigin: string) {\n return wikiOwnerObjectTypes.map(ownerObjectType => {\n return http.get(\n `${backendOrigin}${WIKI_OBJECT_TYPE(\n ownerObjectType,\n )}/:ownerObjectId/wikikey`,\n\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<WikiPageKey> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a WikiPageKey for ${ownerObjectType} ${params.ownerObjectId}`,\n }\n const wikiPageKey = mockWikiPageKeyService.getOneByPredicate(\n wikiPageKey => wikiPageKey.ownerObjectId === params.ownerObjectId,\n )\n\n if (wikiPageKey) {\n response = wikiPageKey\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n )\n })\n}\n\nexport function createWikiPage(backendOrigin: string) {\n return wikiOwnerObjectTypes.map(ownerObjectType => {\n return http.post<{ ownerObjectId: string }, WikiPage>(\n `${backendOrigin}${WIKI_PAGE(ownerObjectType, ':ownerObjectId')}`,\n async ({ request }) => {\n const requestBody: WikiPage = await request.json()\n const now = new Date().toISOString()\n const created = mockWikiPageService.create({\n ...requestBody,\n etag: MOCK_WIKI_ETAG,\n createdBy: String(MOCK_USER_ID),\n createdOn: now,\n modifiedBy: String(MOCK_USER_ID),\n modifiedOn: now,\n })\n\n return HttpResponse.json(created, { status: 201 })\n },\n )\n })\n}\n\nexport function updateWikiPage(backendOrigin: string) {\n return wikiOwnerObjectTypes.map(ownerObjectType => {\n return http.put<{ ownerObjectId: string; wikiPageId: string }, WikiPage>(\n `${backendOrigin}${WIKI_PAGE_ID(\n ownerObjectType,\n ':ownerObjectId',\n ':wikiPageId',\n )}`,\n async ({ request }) => {\n const requestBody: WikiPage = await request.json()\n const updated = mockWikiPageService.update(\n requestBody.id,\n requestBody,\n 'replace',\n )\n return HttpResponse.json(updated, { status: 201 })\n },\n )\n })\n}\n\nexport function getAllWikiHandlers(backendOrigin: string) {\n return [\n ...getWikiHandlers(backendOrigin),\n ...getRootWikiPageKeyHandler(backendOrigin),\n ...createWikiPage(backendOrigin),\n ...updateWikiPage(backendOrigin),\n ]\n}\n"],"mappings":";;;;;;;;AAcA,IAAM,IAAuB;CAC3B,EAAW;CACX,EAAW;CACX,EAAW;CACZ,EAEK,IAAsB,IAAI,EAAuC;CACrE,aAAa;CACb,SAAS;CACT,gBAAgB;CACjB,CAAC,EAEI,IAAyB,IAAI,EAAoC,EACrE,aAAa,GACd,CAAC;AAEF,SAAgB,EAAY,GAAuB;AACjD,QAAO,EAAqB,KAAI,MACvB,EAAK,IACV,GAAG,IAAgB,EACjB,GACA,kBACA,cACD,KACA,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAAyC;GAC3C,cAAc;GACd,QAAQ,0DAA0D,EAAO;GAC1E,EAEK,IAAW,EAAoB,WACnC,EAAO,WACR;AAKD,SAJI,MACF,IAAW,GACX,IAAS,MAEJ,EAAa,KAAK,GAAU,EAAE,WAAQ,CAAC;GAEjD,CACD;;AAGJ,IAAa,KAAmB,MAA0B,CACxD,GAAG,EAAY,EAAc,EAC7B,EAAK,IACH,GAAG,EAAc,uEAMR,EAAa,KAAK,EAFvB,MAAM,EAAE,EAEe,EAAU,EAAE,QAAA,KAAQ,CAAC,CAEjD,CACF;AAED,SAAgB,EAA0B,GAAuB;AAC/D,QAAO,EAAqB,KAAI,MACvB,EAAK,IACV,GAAG,IAAgB,EACjB,EACD,CAAC,2BAED,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAA4C;GAC9C,cAAc;GACd,QAAQ,wDAAwD,EAAgB,GAAG,EAAO;GAC3F,EACK,IAAc,EAAuB,mBACzC,MAAe,EAAY,kBAAkB,EAAO,cACrD;AAOD,SALI,MACF,IAAW,GACX,IAAS,MAGJ,EAAa,KAAK,GAAU,EAAE,WAAQ,CAAC;GAEjD,CACD;;AAGJ,SAAgB,EAAe,GAAuB;AACpD,QAAO,EAAqB,KAAI,MACvB,EAAK,KACV,GAAG,IAAgB,EAAU,GAAiB,iBAAiB,IAC/D,OAAO,EAAE,iBAAc;EACrB,IAAM,IAAwB,MAAM,EAAQ,MAAM,EAC5C,qBAAM,IAAI,MAAM,EAAC,aAAa,EAC9B,IAAU,EAAoB,OAAO;GACzC,GAAG;GACH,MAAM;GACN,WAAW;GACX,WAAW;GACX,YAAY;GACZ,YAAY;GACb,CAAC;AAEF,SAAO,EAAa,KAAK,GAAS,EAAE,QAAQ,KAAK,CAAC;GAErD,CACD;;AAGJ,SAAgB,EAAe,GAAuB;AACpD,QAAO,EAAqB,KAAI,MACvB,EAAK,IACV,GAAG,IAAgB,EACjB,GACA,kBACA,cACD,IACD,OAAO,EAAE,iBAAc;EACrB,IAAM,IAAwB,MAAM,EAAQ,MAAM,EAC5C,IAAU,EAAoB,OAClC,EAAY,IACZ,GACA,UACD;AACD,SAAO,EAAa,KAAK,GAAS,EAAE,QAAQ,KAAK,CAAC;GAErD,CACD;;AAGJ,SAAgB,EAAmB,GAAuB;AACxD,QAAO;EACL,GAAG,EAAgB,EAAc;EACjC,GAAG,EAA0B,EAAc;EAC3C,GAAG,EAAe,EAAc;EAChC,GAAG,EAAe,EAAc;EACjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockActivity.js","names":[],"sources":["../../../src/mocks/provenance/mockActivity.ts"],"sourcesContent":["import { Activity } from '@sage-bionetworks/synapse-types'\nimport { MOCK_USER_ID } from '../user/mock_user_profile'\nimport { MOCK_TABLE_ENTITY_ID } from '../entity/mockTableEntity'\n\nconst MOCK_ACTIVITY_ID = '1112345'\nconst MOCK_ACTIVITY_NAME = 'My test activity'\nconst MOCK_ACTIVITY_DESCRIPTION = 'My test activity description'\n\nexport const mockActivity: Activity = {\n id: MOCK_ACTIVITY_ID,\n name: MOCK_ACTIVITY_NAME,\n description: MOCK_ACTIVITY_DESCRIPTION,\n etag: '3e2f0478-29d4-4106-8a7a-38b609505dcf',\n createdOn: '2018-10-24T23:38:28.331Z',\n modifiedOn: '2018-10-25T18:42:47.600Z',\n createdBy: `${MOCK_USER_ID}`,\n modifiedBy: `${MOCK_USER_ID}`,\n used: [\n {\n wasExecuted: false,\n concreteType: 'org.sagebionetworks.repo.model.provenance.UsedEntity',\n reference: {\n targetId: MOCK_TABLE_ENTITY_ID,\n },\n },\n {\n wasExecuted: true,\n concreteType: 'org.sagebionetworks.repo.model.provenance.UsedURL',\n name: 'process.R',\n url: 'https://raw.githubusercontent.com/Sage-Bionetworks/agoradataprocessing/v1.0.0/exec/process.R',\n },\n ],\n}\n"],"mappings":";;AAQA,IAAa,IAAyB;CACpC,
|
|
1
|
+
{"version":3,"file":"mockActivity.js","names":[],"sources":["../../../src/mocks/provenance/mockActivity.ts"],"sourcesContent":["import { Activity } from '@sage-bionetworks/synapse-types'\nimport { MOCK_USER_ID } from '../user/mock_user_profile'\nimport { MOCK_TABLE_ENTITY_ID } from '../entity/mockTableEntity'\n\nconst MOCK_ACTIVITY_ID = '1112345'\nconst MOCK_ACTIVITY_NAME = 'My test activity'\nconst MOCK_ACTIVITY_DESCRIPTION = 'My test activity description'\n\nexport const mockActivity: Activity = {\n id: MOCK_ACTIVITY_ID,\n name: MOCK_ACTIVITY_NAME,\n description: MOCK_ACTIVITY_DESCRIPTION,\n etag: '3e2f0478-29d4-4106-8a7a-38b609505dcf',\n createdOn: '2018-10-24T23:38:28.331Z',\n modifiedOn: '2018-10-25T18:42:47.600Z',\n createdBy: `${MOCK_USER_ID}`,\n modifiedBy: `${MOCK_USER_ID}`,\n used: [\n {\n wasExecuted: false,\n concreteType: 'org.sagebionetworks.repo.model.provenance.UsedEntity',\n reference: {\n targetId: MOCK_TABLE_ENTITY_ID,\n },\n },\n {\n wasExecuted: true,\n concreteType: 'org.sagebionetworks.repo.model.provenance.UsedURL',\n name: 'process.R',\n url: 'https://raw.githubusercontent.com/Sage-Bionetworks/agoradataprocessing/v1.0.0/exec/process.R',\n },\n ],\n}\n"],"mappings":";;AAQA,IAAa,IAAyB;CACpC,IAAI;CACJ,MAAM;CACN,aAAa;CACb,MAAM;CACN,WAAW;CACX,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,MAAM,CACJ;EACE,aAAa;EACb,cAAc;EACd,WAAW,EACT,UAAU,GACX;EACF,EACD;EACE,aAAa;EACb,cAAc;EACd,MAAM;EACN,KAAK;EACN,CACF;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockReleaseCardsTableQueryResultBundle.js","names":[],"sources":["../../../src/mocks/query/mockReleaseCardsTableQueryResultBundle.ts"],"sourcesContent":["import {\n ColumnModel,\n QueryResultBundle,\n SelectColumn,\n} from '@sage-bionetworks/synapse-types'\nimport { MOCK_RELEASE_CARDS_TABLE_ID } from '../entity/mockReleaseCardsTable'\n\nconst columnModels: ColumnModel[] = [\n {\n name: 'releaseEntityId',\n columnType: 'ENTITYID',\n id: '207864',\n },\n {\n name: 'releaseName',\n columnType: 'STRING',\n id: '207865',\n maximumSize: 50,\n },\n {\n name: 'releaseDate',\n columnType: 'DATE',\n id: '207866',\n },\n {\n name: 'countPatients',\n columnType: 'INTEGER',\n id: '207920',\n },\n {\n name: 'countSamples',\n columnType: 'INTEGER',\n id: '207921',\n },\n {\n name: 'isCurrentRelease',\n columnType: 'BOOLEAN',\n id: '207868',\n },\n {\n name: 'releaseType',\n columnType: 'STRING',\n facetType: 'enumeration',\n id: '208002',\n maximumSize: 50,\n enumValues: ['CRC', 'NSCLC'],\n },\n {\n name: 'releaseExplorePath',\n columnType: 'STRING',\n id: '208001',\n defaultValue: '/explore/files/genie',\n maximumSize: 50,\n enumValues: ['/explore/files/genie', '/explore/files/genie-bpc'],\n },\n {\n name: 'exploreDataSql',\n columnType: 'STRING',\n id: '208850',\n defaultValue: 'select * from syn54100284',\n maximumSize: 50,\n enumValues: ['select * from syn54100284', 'select * from syn54100290'],\n },\n {\n name: 'version',\n columnType: 'STRING',\n id: '208851',\n maximumSize: 50,\n },\n]\nconst headers: SelectColumn[] = columnModels.map(columnModel => {\n const sc: SelectColumn = { ...columnModel }\n return sc\n})\nconst selectColumns = headers\n\nexport const mockCurrentReleaseCardsQueryResultBundle: QueryResultBundle = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResultBundle',\n queryResult: {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResult',\n queryResults: {\n concreteType: 'org.sagebionetworks.repo.model.table.RowSet',\n tableId: MOCK_RELEASE_CARDS_TABLE_ID,\n etag: 'e2bac0de-5ab6-411d-bf76-7c5a2a2df707',\n headers: headers,\n rows: [\n {\n rowId: 1,\n versionNumber: 16,\n values: [\n 'syn53701297',\n 'GENIE 15.0-public',\n '1704235503000',\n '198041',\n '172005',\n 'true',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '15.0-public',\n ],\n },\n {\n rowId: 2,\n versionNumber: 14,\n values: [\n 'syn51417430',\n 'CRC 2.0-public',\n '1667339328000',\n '1486',\n '1552',\n 'true',\n 'CRC',\n '/explore/files/genie-bpc',\n 'select * from syn54100290',\n '2.0-public',\n ],\n },\n {\n rowId: 3,\n versionNumber: 14,\n values: [\n 'syn51417430',\n 'NSCLC 2.0-public',\n '1651441766000',\n '1846',\n '2004',\n 'true',\n 'NSCLC',\n '/explore/files/genie-bpc',\n 'select * from syn54100290',\n '2.0-public',\n ],\n },\n ],\n },\n },\n queryCount: 3,\n selectColumns: selectColumns,\n maxRowsPerPage: 2957,\n columnModels: columnModels,\n facets: [\n {\n concreteType:\n 'org.sagebionetworks.repo.model.table.FacetColumnResultValues',\n columnName: 'releaseType',\n facetType: 'enumeration',\n facetValues: [\n {\n value: 'main',\n count: 1,\n isSelected: false,\n },\n {\n value: 'CRC',\n count: 1,\n isSelected: false,\n },\n {\n value: 'NSCLC',\n count: 1,\n isSelected: false,\n },\n ],\n },\n ],\n sumFileSizes: {\n sumFileSizesBytes: 0,\n greaterThan: false,\n },\n lastUpdatedOn: '2024-03-02T16:16:43.968Z',\n}\n\nexport const mockPreviousReleaseCardsQueryResultBundle: QueryResultBundle = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResultBundle',\n queryResult: {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResult',\n queryResults: {\n concreteType: 'org.sagebionetworks.repo.model.table.RowSet',\n tableId: MOCK_RELEASE_CARDS_TABLE_ID,\n etag: 'e2bac0de-5ab6-411d-bf76-7c5a2a2df707',\n headers: headers,\n rows: [\n {\n rowId: 4,\n versionNumber: 16,\n values: [\n 'syn51417430',\n '14.1-public',\n '1704235808000',\n '170505',\n '196541',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '14.1-public',\n ],\n },\n {\n rowId: 5,\n versionNumber: 16,\n values: [\n 'syn51417430',\n '14.0-public',\n '1699570245000',\n '169005',\n '195041',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '14.0-public',\n ],\n },\n {\n rowId: 6,\n versionNumber: 16,\n values: [\n 'syn53701297',\n '13.1-public',\n '1694814677000',\n '166005',\n '192041',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '13.1-public',\n ],\n },\n {\n rowId: 7,\n versionNumber: 16,\n values: [\n 'syn53701297',\n '13.0-public',\n '1692913961000',\n '166005',\n '192041',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '13.0-public',\n ],\n },\n {\n rowId: 8,\n versionNumber: 16,\n values: [\n 'syn53701297',\n '12.1-public',\n '1692914000000',\n '163005',\n '189041',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '12.1-public',\n ],\n },\n {\n rowId: 10,\n versionNumber: 16,\n values: [\n 'syn53701297',\n '11.0-public',\n '1689194860000',\n '160005',\n '180022',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '11.0-public',\n ],\n },\n {\n rowId: 11,\n versionNumber: 16,\n values: [\n 'syn53701297',\n '10.1-public',\n '1687898860000',\n '150525',\n '172324',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '10.1-public',\n ],\n },\n {\n rowId: 12,\n versionNumber: 18,\n values: [\n 'syn53701297',\n 'test release missing data',\n '1686689260000',\n null,\n '172324',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n 'Test.1-public',\n ],\n },\n {\n rowId: 13,\n versionNumber: 16,\n values: [\n 'syn53701297',\n 'very very long release name',\n '1709165287000',\n '123456789012345',\n '123456789012345',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n 'Test.2-public',\n ],\n },\n ],\n },\n },\n queryCount: 9,\n selectColumns: selectColumns,\n maxRowsPerPage: 2957,\n columnModels: columnModels,\n facets: [\n {\n concreteType:\n 'org.sagebionetworks.repo.model.table.FacetColumnResultValues',\n columnName: 'releaseType',\n facetType: 'enumeration',\n facetValues: [\n {\n value: 'main',\n count: 9,\n isSelected: false,\n },\n ],\n },\n ],\n sumFileSizes: {\n sumFileSizesBytes: 0,\n greaterThan: false,\n },\n lastUpdatedOn: '2024-03-02T16:16:43.968Z',\n}\n"],"mappings":";;AAOA,IAAM,IAA8B;CAClC;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACL;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACJ,aAAa;EACd;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACL;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACL;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACL;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACL;CACD;EACE,MAAM;EACN,YAAY;EACZ,WAAW;EACX,IAAI;EACJ,aAAa;EACb,YAAY,CAAC,OAAO,QAAQ;EAC7B;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACJ,cAAc;EACd,aAAa;EACb,YAAY,CAAC,wBAAwB,2BAA2B;EACjE;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACJ,cAAc;EACd,aAAa;EACb,YAAY,CAAC,6BAA6B,4BAA4B;EACvE;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACJ,aAAa;EACd;CACF,EACK,IAA0B,EAAa,KAAI,OACtB,EAAE,GAAG,GAAa,EAE3C,EACI,IAAgB,GAET,IAA8D;CACzE,cAAc;CACd,aAAa;EACX,cAAc;EACd,cAAc;GACZ,cAAc;GACd,SAAS;GACT,MAAM;GACG;GACT,MAAM;IACJ;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACF;GACF;EACF;CACD,YAAY;CACG;CACf,gBAAgB;CACF;CACd,QAAQ,CACN;EACE,cACE;EACF,YAAY;EACZ,WAAW;EACX,aAAa;GACX;IACE,OAAO;IACP,OAAO;IACP,YAAY;IACb;GACD;IACE,OAAO;IACP,OAAO;IACP,YAAY;IACb;GACD;IACE,OAAO;IACP,OAAO;IACP,YAAY;IACb;GACF;EACF,CACF;CACD,cAAc;EACZ,mBAAmB;EACnB,aAAa;EACd;CACD,eAAe;CAChB,EAEY,IAA+D;CAC1E,cAAc;CACd,aAAa;EACX,cAAc;EACd,cAAc;GACZ,cAAc;GACd,SAAS;GACT,MAAM;GACG;GACT,MAAM;IACJ;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACF;GACF;EACF;CACD,YAAY;CACG;CACf,gBAAgB;CACF;CACd,QAAQ,CACN;EACE,cACE;EACF,YAAY;EACZ,WAAW;EACX,aAAa,CACX;GACE,OAAO;GACP,OAAO;GACP,YAAY;GACb,CACF;EACF,CACF;CACD,cAAc;EACZ,mBAAmB;EACnB,aAAa;EACd;CACD,eAAe;CAChB"}
|
|
1
|
+
{"version":3,"file":"mockReleaseCardsTableQueryResultBundle.js","names":[],"sources":["../../../src/mocks/query/mockReleaseCardsTableQueryResultBundle.ts"],"sourcesContent":["import {\n ColumnModel,\n QueryResultBundle,\n SelectColumn,\n} from '@sage-bionetworks/synapse-types'\nimport { MOCK_RELEASE_CARDS_TABLE_ID } from '../entity/mockReleaseCardsTable'\n\nconst columnModels: ColumnModel[] = [\n {\n name: 'releaseEntityId',\n columnType: 'ENTITYID',\n id: '207864',\n },\n {\n name: 'releaseName',\n columnType: 'STRING',\n id: '207865',\n maximumSize: 50,\n },\n {\n name: 'releaseDate',\n columnType: 'DATE',\n id: '207866',\n },\n {\n name: 'countPatients',\n columnType: 'INTEGER',\n id: '207920',\n },\n {\n name: 'countSamples',\n columnType: 'INTEGER',\n id: '207921',\n },\n {\n name: 'isCurrentRelease',\n columnType: 'BOOLEAN',\n id: '207868',\n },\n {\n name: 'releaseType',\n columnType: 'STRING',\n facetType: 'enumeration',\n id: '208002',\n maximumSize: 50,\n enumValues: ['CRC', 'NSCLC'],\n },\n {\n name: 'releaseExplorePath',\n columnType: 'STRING',\n id: '208001',\n defaultValue: '/explore/files/genie',\n maximumSize: 50,\n enumValues: ['/explore/files/genie', '/explore/files/genie-bpc'],\n },\n {\n name: 'exploreDataSql',\n columnType: 'STRING',\n id: '208850',\n defaultValue: 'select * from syn54100284',\n maximumSize: 50,\n enumValues: ['select * from syn54100284', 'select * from syn54100290'],\n },\n {\n name: 'version',\n columnType: 'STRING',\n id: '208851',\n maximumSize: 50,\n },\n]\nconst headers: SelectColumn[] = columnModels.map(columnModel => {\n const sc: SelectColumn = { ...columnModel }\n return sc\n})\nconst selectColumns = headers\n\nexport const mockCurrentReleaseCardsQueryResultBundle: QueryResultBundle = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResultBundle',\n queryResult: {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResult',\n queryResults: {\n concreteType: 'org.sagebionetworks.repo.model.table.RowSet',\n tableId: MOCK_RELEASE_CARDS_TABLE_ID,\n etag: 'e2bac0de-5ab6-411d-bf76-7c5a2a2df707',\n headers: headers,\n rows: [\n {\n rowId: 1,\n versionNumber: 16,\n values: [\n 'syn53701297',\n 'GENIE 15.0-public',\n '1704235503000',\n '198041',\n '172005',\n 'true',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '15.0-public',\n ],\n },\n {\n rowId: 2,\n versionNumber: 14,\n values: [\n 'syn51417430',\n 'CRC 2.0-public',\n '1667339328000',\n '1486',\n '1552',\n 'true',\n 'CRC',\n '/explore/files/genie-bpc',\n 'select * from syn54100290',\n '2.0-public',\n ],\n },\n {\n rowId: 3,\n versionNumber: 14,\n values: [\n 'syn51417430',\n 'NSCLC 2.0-public',\n '1651441766000',\n '1846',\n '2004',\n 'true',\n 'NSCLC',\n '/explore/files/genie-bpc',\n 'select * from syn54100290',\n '2.0-public',\n ],\n },\n ],\n },\n },\n queryCount: 3,\n selectColumns: selectColumns,\n maxRowsPerPage: 2957,\n columnModels: columnModels,\n facets: [\n {\n concreteType:\n 'org.sagebionetworks.repo.model.table.FacetColumnResultValues',\n columnName: 'releaseType',\n facetType: 'enumeration',\n facetValues: [\n {\n value: 'main',\n count: 1,\n isSelected: false,\n },\n {\n value: 'CRC',\n count: 1,\n isSelected: false,\n },\n {\n value: 'NSCLC',\n count: 1,\n isSelected: false,\n },\n ],\n },\n ],\n sumFileSizes: {\n sumFileSizesBytes: 0,\n greaterThan: false,\n },\n lastUpdatedOn: '2024-03-02T16:16:43.968Z',\n}\n\nexport const mockPreviousReleaseCardsQueryResultBundle: QueryResultBundle = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResultBundle',\n queryResult: {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResult',\n queryResults: {\n concreteType: 'org.sagebionetworks.repo.model.table.RowSet',\n tableId: MOCK_RELEASE_CARDS_TABLE_ID,\n etag: 'e2bac0de-5ab6-411d-bf76-7c5a2a2df707',\n headers: headers,\n rows: [\n {\n rowId: 4,\n versionNumber: 16,\n values: [\n 'syn51417430',\n '14.1-public',\n '1704235808000',\n '170505',\n '196541',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '14.1-public',\n ],\n },\n {\n rowId: 5,\n versionNumber: 16,\n values: [\n 'syn51417430',\n '14.0-public',\n '1699570245000',\n '169005',\n '195041',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '14.0-public',\n ],\n },\n {\n rowId: 6,\n versionNumber: 16,\n values: [\n 'syn53701297',\n '13.1-public',\n '1694814677000',\n '166005',\n '192041',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '13.1-public',\n ],\n },\n {\n rowId: 7,\n versionNumber: 16,\n values: [\n 'syn53701297',\n '13.0-public',\n '1692913961000',\n '166005',\n '192041',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '13.0-public',\n ],\n },\n {\n rowId: 8,\n versionNumber: 16,\n values: [\n 'syn53701297',\n '12.1-public',\n '1692914000000',\n '163005',\n '189041',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '12.1-public',\n ],\n },\n {\n rowId: 10,\n versionNumber: 16,\n values: [\n 'syn53701297',\n '11.0-public',\n '1689194860000',\n '160005',\n '180022',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '11.0-public',\n ],\n },\n {\n rowId: 11,\n versionNumber: 16,\n values: [\n 'syn53701297',\n '10.1-public',\n '1687898860000',\n '150525',\n '172324',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n '10.1-public',\n ],\n },\n {\n rowId: 12,\n versionNumber: 18,\n values: [\n 'syn53701297',\n 'test release missing data',\n '1686689260000',\n null,\n '172324',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n 'Test.1-public',\n ],\n },\n {\n rowId: 13,\n versionNumber: 16,\n values: [\n 'syn53701297',\n 'very very long release name',\n '1709165287000',\n '123456789012345',\n '123456789012345',\n 'false',\n 'main',\n '/explore/files/genie',\n 'select * from syn54100284',\n 'Test.2-public',\n ],\n },\n ],\n },\n },\n queryCount: 9,\n selectColumns: selectColumns,\n maxRowsPerPage: 2957,\n columnModels: columnModels,\n facets: [\n {\n concreteType:\n 'org.sagebionetworks.repo.model.table.FacetColumnResultValues',\n columnName: 'releaseType',\n facetType: 'enumeration',\n facetValues: [\n {\n value: 'main',\n count: 9,\n isSelected: false,\n },\n ],\n },\n ],\n sumFileSizes: {\n sumFileSizesBytes: 0,\n greaterThan: false,\n },\n lastUpdatedOn: '2024-03-02T16:16:43.968Z',\n}\n"],"mappings":";;AAOA,IAAM,IAA8B;CAClC;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACL;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACJ,aAAa;EACd;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACL;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACL;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACL;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACL;CACD;EACE,MAAM;EACN,YAAY;EACZ,WAAW;EACX,IAAI;EACJ,aAAa;EACb,YAAY,CAAC,OAAO,QAAQ;EAC7B;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACJ,cAAc;EACd,aAAa;EACb,YAAY,CAAC,wBAAwB,2BAA2B;EACjE;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACJ,cAAc;EACd,aAAa;EACb,YAAY,CAAC,6BAA6B,4BAA4B;EACvE;CACD;EACE,MAAM;EACN,YAAY;EACZ,IAAI;EACJ,aAAa;EACd;CACF,EACK,IAA0B,EAAa,KAAI,OAExC,EADoB,GAAG,GACvB,EACP,EACI,IAAgB,GAET,IAA8D;CACzE,cAAc;CACd,aAAa;EACX,cAAc;EACd,cAAc;GACZ,cAAc;GACd,SAAS;GACT,MAAM;GACG;GACT,MAAM;IACJ;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACF;GACF;EACF;CACD,YAAY;CACG;CACf,gBAAgB;CACF;CACd,QAAQ,CACN;EACE,cACE;EACF,YAAY;EACZ,WAAW;EACX,aAAa;GACX;IACE,OAAO;IACP,OAAO;IACP,YAAY;IACb;GACD;IACE,OAAO;IACP,OAAO;IACP,YAAY;IACb;GACD;IACE,OAAO;IACP,OAAO;IACP,YAAY;IACb;GACF;EACF,CACF;CACD,cAAc;EACZ,mBAAmB;EACnB,aAAa;EACd;CACD,eAAe;CAChB,EAEY,IAA+D;CAC1E,cAAc;CACd,aAAa;EACX,cAAc;EACd,cAAc;GACZ,cAAc;GACd,SAAS;GACT,MAAM;GACG;GACT,MAAM;IACJ;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACD;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MACN;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACF;GACF;EACF;CACD,YAAY;CACG;CACf,gBAAgB;CACF;CACd,QAAQ,CACN;EACE,cACE;EACF,YAAY;EACZ,WAAW;EACX,aAAa,CACX;GACE,OAAO;GACP,OAAO;GACP,YAAY;GACb,CACF;EACF,CACF;CACD,cAAc;EACZ,mBAAmB;EACnB,aAAa;EACd;CACD,eAAe;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/ror-client/index.ts"],"sourcesContent":["import { fetchWithExponentialTimeout } from '@sage-bionetworks/synapse-client'\nimport { ROROrganization, RORSearchResult } from './types/ROROrganization'\n\nexport async function searchRegistry(query: string): Promise<RORSearchResult> {\n const response = await fetchWithExponentialTimeout(\n `https://api.ror.org/v2/organizations?query=${encodeURIComponent(query)}`,\n { headers: { ['Content-Type']: 'application/json' } },\n )\n return response.json()\n}\n\nexport async function getOrganization(rorId: string): Promise<ROROrganization> {\n const response = await fetchWithExponentialTimeout(\n `https://api.ror.org/v2/organizations/${rorId}`,\n { headers: { ['Content-Type']: 'application/json' } },\n )\n return response.json()\n}\n"],"mappings":";;AAGA,eAAsB,EAAe,GAAyC;AAK5E,
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/ror-client/index.ts"],"sourcesContent":["import { fetchWithExponentialTimeout } from '@sage-bionetworks/synapse-client'\nimport { ROROrganization, RORSearchResult } from './types/ROROrganization'\n\nexport async function searchRegistry(query: string): Promise<RORSearchResult> {\n const response = await fetchWithExponentialTimeout(\n `https://api.ror.org/v2/organizations?query=${encodeURIComponent(query)}`,\n { headers: { ['Content-Type']: 'application/json' } },\n )\n return response.json()\n}\n\nexport async function getOrganization(rorId: string): Promise<ROROrganization> {\n const response = await fetchWithExponentialTimeout(\n `https://api.ror.org/v2/organizations/${rorId}`,\n { headers: { ['Content-Type']: 'application/json' } },\n )\n return response.json()\n}\n"],"mappings":";;AAGA,eAAsB,EAAe,GAAyC;AAK5E,SAAO,MAJgB,EACrB,8CAA8C,mBAAmB,EAAM,IACvE,EAAE,SAAS,EAAG,gBAAiB,oBAAoB,EAAE,CACtD,EACe,MAAM;;AAGxB,eAAsB,EAAgB,GAAyC;AAK7E,SAAO,MAJgB,EACrB,wCAAwC,KACxC,EAAE,SAAS,EAAG,gBAAiB,oBAAoB,EAAE,CACtD,EACe,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.dsg-input{font-size:inherit;color:#353a3f}.dsg-cell-disabled input{color:#71767f}.row-deleted .dsg-cell,.row-deleted .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fff1f0}.row-created .dsg-cell,.row-created .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#f6ffed}.row-updated .dsg-cell,.row-updated .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fff7e6}.row-valid .dsg-cell-gutter,.row-valid .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#def0dd}.row-invalid .dsg-cell-gutter,.row-invalid .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fccfcc}.row-unknown .dsg-cell-gutter{background:#fdfeeb}.row-unknown .dsg-cell-gutter:after{content:"";z-index:1;border:2px solid #e6c200;border-top-color:#0000;border-radius:50%;width:16px;height:16px;margin:-8px 0 0 -8px;animation:1s linear infinite spin;display:block;position:absolute;top:50%;left:50%}.row-unknown .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fdfeeb}.dsg-cell.cell-invalid,.dsg-cell.cell-invalid.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fccfcc}.dsg-cell.cell-valid.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#def0dd}.dsg-cell.cell-unknown.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fdfeeb}.dsg-cell.dsg-cell-sticky-left:not(.cell-invalid):not(.cell-valid):not(.cell-unknown):not(.dsg-cell-header):not(.dsg-cell-gutter){background:var(--dsg-cell-background-color,white)}@keyframes spin{to{transform:rotate(360deg)}}.dsg-cell-header.header-cell-required{color:#fff;background-color:#395979;font-weight:700}.multi-value-cell{min-height:40px}.multi-value-cell-large{min-height:80px}.dsg-expand-rows-rect{z-index:50;background:#4580e614;box-shadow:inset 0 0 0 1px #4580e6}.dsg-expand-rows-indicator{z-index:1001;overflow:visible}.dsg-expand-rows-indicator:before{content:"";cursor:crosshair;position:absolute;inset:-4px}.cell-selected{border:1px solid #1976d2}.dsg-container:not(:focus-within) .cell-selected{z-index:25;background-color:#1976d20d;border:1px solid #1976d2}.dsg-container{position:relative}.column-resize-handle{cursor:col-resize;-webkit-user-select:none;user-select:none;z-index:100;background-color:#0000;width:8px;transition:background-color .15s;position:absolute}.column-resize-handle:before{content:"";background:0 0;border-left:1px solid #0000;border-right:1px solid #0000;width:4px;height:16px;transition:border-color .15s;position:absolute;top:8px;left:50%;transform:translate(-50%)}.column-resize-handle:hover{background-color:#80808026}.column-resize-handle:hover:before{border-left-color:#80808080;border-right-color:#80808080}.column-resize-handle.is-resizing{background-color:#8080804d}.column-resize-handle.is-resizing:before{border-left-color:#646464cc;border-right-color:#646464cc}body.col-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.col-resizing .dsg-container,body.col-resizing .dsg-container *{cursor:col-resize}.dsg-cell.cell-changed--self:after{content:"";z-index:20;pointer-events:none;border-top:0 solid #0000;border-bottom:7px solid #0000;border-left:0 solid #0000;border-right:7px solid #52c41a;width:0;height:0;position:absolute;top:0;right:0}.dsg-cell.cell-changed--other-user:after{content:"";z-index:20;pointer-events:none;border-top:0 solid #0000;border-bottom:7px solid #0000;border-left:0 solid #0000;border-right:7px solid #1677ff;width:0;height:0;position:absolute;top:0;right:0}.dsg-cell.cell-remote-selected--color-0{box-shadow:inset 0 0 0 1px #1677ff66;background-color:#1677ff1f!important}.dsg-cell.cell-remote-selected--color-1{box-shadow:inset 0 0 0 1px #52c41a66;background-color:#52c41a1f!important}.dsg-cell.cell-remote-selected--color-2{box-shadow:inset 0 0 0 1px #fa8c1666;background-color:#fa8c161f!important}.dsg-cell.cell-remote-selected--color-3{box-shadow:inset 0 0 0 1px #eb2f9666;background-color:#eb2f961f!important}.dsg-cell.cell-remote-selected--color-4{box-shadow:inset 0 0 0 1px #13c2c266;background-color:#13c2c21f!important}.dsg-cell.cell-remote-selected--color-5{box-shadow:inset 0 0 0 1px #9254de66;background-color:#9254de1f!important}.dsg-cell.cell-remote-selected--color-6{box-shadow:inset 0 0 0 1px #f5222d66;background-color:#f5222d1f!important}.dsg-cell.cell-remote-selected--color-7{box-shadow:inset 0 0 0 1px #faad1466;background-color:#faad141f!important}
|
|
1
|
+
.dsg-input{font-size:inherit;color:#353a3f}.dsg-cell-disabled input{color:#71767f}.row-deleted .dsg-cell,.row-deleted .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fff1f0}.row-created .dsg-cell,.row-created .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#f6ffed}.row-updated .dsg-cell,.row-updated .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fff7e6}.row-valid .dsg-cell-gutter,.row-valid .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#def0dd}.row-invalid .dsg-cell-gutter,.row-invalid .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fccfcc}.row-unknown .dsg-cell-gutter{background:#fdfeeb}.row-unknown .dsg-cell-gutter:after{content:"";z-index:1;border:2px solid #e6c200;border-top-color:#0000;border-radius:50%;width:16px;height:16px;margin:-8px 0 0 -8px;animation:1s linear infinite spin;display:block;position:absolute;top:50%;left:50%}.row-unknown .dsg-cell.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fdfeeb}.dsg-cell.cell-invalid,.dsg-cell.cell-invalid.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fccfcc}.dsg-cell.cell-valid.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#def0dd}.dsg-cell.cell-unknown,.dsg-cell.cell-unknown.dsg-cell-sticky-left:not(.dsg-cell-header):not(.dsg-cell-gutter){background:#fdfeeb}.dsg-cell.dsg-cell-sticky-left:not(.cell-invalid):not(.cell-valid):not(.cell-unknown):not(.dsg-cell-header):not(.dsg-cell-gutter){background:var(--dsg-cell-background-color,white)}@keyframes spin{to{transform:rotate(360deg)}}.dsg-cell-header.header-cell-required{color:#fff;background-color:#395979;font-weight:700}.multi-value-cell{min-height:40px}.multi-value-cell-large{min-height:80px}.dsg-expand-rows-rect{z-index:50;background:#4580e614;box-shadow:inset 0 0 0 1px #4580e6}.dsg-expand-rows-indicator{z-index:1001;overflow:visible}.dsg-expand-rows-indicator:before{content:"";cursor:crosshair;position:absolute;inset:-4px}.cell-selected{border:1px solid #1976d2}.dsg-container:not(:focus-within) .cell-selected{z-index:25;background-color:#1976d20d;border:1px solid #1976d2}.dsg-container{position:relative}.column-resize-handle{cursor:col-resize;-webkit-user-select:none;user-select:none;z-index:100;background-color:#0000;width:8px;transition:background-color .15s;position:absolute}.column-resize-handle:before{content:"";background:0 0;border-left:1px solid #0000;border-right:1px solid #0000;width:4px;height:16px;transition:border-color .15s;position:absolute;top:8px;left:50%;transform:translate(-50%)}.column-resize-handle:hover{background-color:#80808026}.column-resize-handle:hover:before{border-left-color:#80808080;border-right-color:#80808080}.column-resize-handle.is-resizing{background-color:#8080804d}.column-resize-handle.is-resizing:before{border-left-color:#646464cc;border-right-color:#646464cc}body.col-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.col-resizing .dsg-container,body.col-resizing .dsg-container *{cursor:col-resize}.dsg-cell.cell-changed--self:after{content:"";z-index:20;pointer-events:none;border-top:0 solid #0000;border-bottom:7px solid #0000;border-left:0 solid #0000;border-right:7px solid #52c41a;width:0;height:0;position:absolute;top:0;right:0}.dsg-cell.cell-changed--other-user:after{content:"";z-index:20;pointer-events:none;border-top:0 solid #0000;border-bottom:7px solid #0000;border-left:0 solid #0000;border-right:7px solid #1677ff;width:0;height:0;position:absolute;top:0;right:0}.dsg-cell.cell-remote-selected--color-0{box-shadow:inset 0 0 0 1px #1677ff66;background-color:#1677ff1f!important}.dsg-cell.cell-remote-selected--color-1{box-shadow:inset 0 0 0 1px #52c41a66;background-color:#52c41a1f!important}.dsg-cell.cell-remote-selected--color-2{box-shadow:inset 0 0 0 1px #fa8c1666;background-color:#fa8c161f!important}.dsg-cell.cell-remote-selected--color-3{box-shadow:inset 0 0 0 1px #eb2f9666;background-color:#eb2f961f!important}.dsg-cell.cell-remote-selected--color-4{box-shadow:inset 0 0 0 1px #13c2c266;background-color:#13c2c21f!important}.dsg-cell.cell-remote-selected--color-5{box-shadow:inset 0 0 0 1px #9254de66;background-color:#9254de1f!important}.dsg-cell.cell-remote-selected--color-6{box-shadow:inset 0 0 0 1px #f5222d66;background-color:#f5222d1f!important}.dsg-cell.cell-remote-selected--color-7{box-shadow:inset 0 0 0 1px #faad1466;background-color:#faad141f!important}
|