synapse-react-client 4.0.45 → 4.0.46
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.js +1 -1
- package/dist/aridhia-queries/AridhiaKeyFactory.d.ts +1 -0
- package/dist/aridhia-queries/AridhiaKeyFactory.d.ts.map +1 -1
- package/dist/aridhia-queries/AridhiaKeyFactory.js +3 -0
- package/dist/aridhia-queries/AridhiaKeyFactory.js.map +1 -1
- package/dist/aridhia-queries/aridhiaTokenExchange.js +6 -6
- package/dist/aridhia-queries/index.d.ts +1 -0
- package/dist/aridhia-queries/index.d.ts.map +1 -1
- package/dist/aridhia-queries/index.js +11 -10
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts +19 -0
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js +14 -0
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js.map +1 -0
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +6 -4
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +11 -8
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenPage.js +1 -1
- package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSectionForm.d.ts.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSectionForm.js +17 -13
- package/dist/components/Aridhia/DarWizard/DarSectionForm.js.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts +3 -3
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +33 -34
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -1
- package/dist/components/Aridhia/fairFormToRjsf.js +1 -1
- package/dist/components/Aridhia/fairFormToRjsf.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.js +1 -1
- package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
- package/dist/components/CertificationQuiz/CertificationQuiz.js +1 -1
- package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
- package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +1 -1
- package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js +6 -6
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js +4 -4
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +4 -4
- package/dist/components/CitationPopover/CitationPopoverContent.js +4 -4
- package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
- package/dist/components/ComponentCollapse.d.ts.map +1 -1
- package/dist/components/ComponentCollapse.js +2 -1
- package/dist/components/ComponentCollapse.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +231 -219
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.js +5 -4
- package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +7 -5
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
- package/dist/components/DataGrid/components/ExportCsvFromGridButton.js +4 -4
- package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsButton.js +4 -4
- package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js +12 -8
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridButton.js +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js +5 -5
- package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js +14 -14
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/splitPatch.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/splitPatch.js +22 -13
- package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +2 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.scss +1 -3
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +16 -10
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinder.js +4 -4
- package/dist/components/EntityFinder/EntityIdTextField.js +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.d.ts.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.js +5 -4
- package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js +2 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
- package/dist/components/EntityUpload/FileUploadProgress.d.ts.map +1 -1
- package/dist/components/EntityUpload/FileUploadProgress.js +11 -7
- package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.d.ts.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js +4 -3
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +2 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -1
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +2 -1
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
- package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/FieldLibrary.js +2 -1
- package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -1
- package/dist/components/FormTemplateEditor/FieldLibraryRow.js +4 -4
- package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -1
- package/dist/components/FormTemplateEditor/FormStructurePanel.js +1 -1
- package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -1
- package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +1 -1
- package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -1
- package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/StepCard.js +15 -10
- package/dist/components/FormTemplateEditor/StepCard.js.map +1 -1
- package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/StepFieldRow.js +11 -6
- package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -1
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +2 -1
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -1
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +45 -45
- package/dist/components/GenericCard/PortalDOI/PortalDOI.js +5 -5
- package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/HelpPopover/HelpPopover.js +1 -1
- package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +154 -47
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js +19 -16
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +2 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts +9 -0
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts.map +1 -0
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js +21 -0
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js.map +1 -0
- package/dist/components/Markdown/MarkdownCollapse.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownCollapse.js +3 -1
- package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
- package/dist/components/OAuthClientManagement/OAuthManagement.js +14 -13
- package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
- package/dist/components/PortalList/PortalCard.d.ts.map +1 -1
- package/dist/components/PortalList/PortalCard.js +6 -5
- package/dist/components/PortalList/PortalCard.js.map +1 -1
- package/dist/components/PortalList/PortalList.js +4 -4
- package/dist/components/PortalList/PortalList.js.map +1 -1
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js +6 -6
- package/dist/components/QueryBuilder/FilterConditionRow.js +4 -4
- package/dist/components/QueryCountButton/QueryCountButton.js +5 -5
- package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardLarge.js +5 -5
- package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
- package/dist/components/ShareThisPage/ShareThisPage.js +4 -4
- package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
- package/dist/components/SustainabilityScorecard/DialLayout.js +1 -1
- package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +1 -1
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js +2 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js +1 -1
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js.map +1 -1
- package/dist/components/SynapseFooter/SynapseFooter.js +1 -1
- package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.d.ts.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +2 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js +4 -4
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +4 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +12 -9
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +140 -140
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +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 +9 -9
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js +6 -4
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js +1 -1
- package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.d.ts.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js +4 -3
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
- package/dist/components/Webhook/WebhookDashboard.js +1 -1
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementTable.js +1 -1
- package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/EDucTemplateTable.d.ts.map +1 -1
- package/dist/components/dataaccess/EDucTemplateTable.js +13 -11
- package/dist/components/dataaccess/EDucTemplateTable.js.map +1 -1
- package/dist/components/dataaccess/FormTemplateTable.js +6 -6
- package/dist/components/dataaccess/FormTemplateTable.js.map +1 -1
- package/dist/components/dataaccess/ReviewerDashboard.js +17 -17
- package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +4 -4
- package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/download_list/DownloadDetails.d.ts.map +1 -1
- package/dist/components/download_list/DownloadDetails.js +12 -10
- package/dist/components/download_list/DownloadDetails.js.map +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/error/ErrorChip.d.ts.map +1 -1
- package/dist/components/error/ErrorChip.js +2 -1
- package/dist/components/error/ErrorChip.js.map +1 -1
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +14 -14
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +4 -4
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.js +7 -6
- package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +8 -8
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +4 -4
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +4 -4
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.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/create-task/CurateTaskForm.js +4 -4
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js +10 -10
- package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js.map +1 -1
- package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js +1 -1
- package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +8 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.js +52 -41
- package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.js +70 -67
- package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/gridHandlers.js +2 -2
- package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
- package/dist/mocks/msw/server.d.ts.map +1 -1
- package/dist/mocks/msw/server.js +4 -2
- package/dist/mocks/msw/server.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.d.ts.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
- package/dist/theme/DefaultTheme.d.ts.map +1 -1
- package/dist/theme/DefaultTheme.js +4 -1
- package/dist/theme/DefaultTheme.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts.map +1 -1
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/AppUtils/AppUtils.js +1 -1
- package/dist/utils/AppUtils/AppUtils.js.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
- package/package.json +7 -6
|
@@ -1,49 +1,50 @@
|
|
|
1
|
-
import { ENTITY as e, ENTITY_BUNDLE_V2 as t, ENTITY_HEADERS as n, ENTITY_ID as r, ENTITY_ID_VERSION as i, ENTITY_ID_VERSIONS as a, ENTITY_JSON as o, ENTITY_SCHEMA_BINDING as s } from "../../../utils/APIConstants.js";
|
|
2
|
-
import { normalizeSynPrefix as
|
|
1
|
+
import { ENTITY as e, ENTITY_BUNDLE_V2 as t, ENTITY_HEADERS as n, ENTITY_ID as r, ENTITY_ID_VERSION as i, ENTITY_ID_VERSIONS as a, ENTITY_JSON as o, ENTITY_SCHEMA_BINDING as s, ENTITY_SCHEMA_VALIDATION as c } from "../../../utils/APIConstants.js";
|
|
2
|
+
import { normalizeSynPrefix as l } from "../../../utils/functions/EntityTypeUtils.js";
|
|
3
3
|
import "../../entity/mockEntity.js";
|
|
4
|
-
import { mockSchemaBinding as
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
4
|
+
import { mockSchemaBinding as u, mockSchemaValidationResults as d } from "../../mockSchema.js";
|
|
5
|
+
import f, { mockProjectsEntityData as p } from "../../entity/index.js";
|
|
6
|
+
import { mockOpenRestrictionInformation as m } from "../../mock_has_access_data.js";
|
|
7
|
+
import { mockSynapseStorageUploadDestination as h, mockUploadDestinations as g } from "../../mock_upload_destination.js";
|
|
8
|
+
import { uniqueId as _ } from "lodash-es";
|
|
9
|
+
import { HttpResponse as v, http as y } from "msw";
|
|
9
10
|
//#region src/mocks/msw/handlers/entityHandlers.ts
|
|
10
|
-
function
|
|
11
|
-
let t = e.map(
|
|
12
|
-
return
|
|
11
|
+
function b(e) {
|
|
12
|
+
let t = e.map(l);
|
|
13
|
+
return f.filter((e) => t.includes(l(e.id)));
|
|
13
14
|
}
|
|
14
|
-
function
|
|
15
|
-
let t =
|
|
15
|
+
function x(e) {
|
|
16
|
+
let t = b([e]);
|
|
16
17
|
if (t.length != 0) return t[0];
|
|
17
18
|
}
|
|
18
|
-
function
|
|
19
|
-
return
|
|
19
|
+
function S(e, n) {
|
|
20
|
+
return y.post(`${e}${t(":entityId")}`, ({ params: e }) => {
|
|
20
21
|
let t = 404, r = {
|
|
21
22
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
22
23
|
reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
|
|
23
24
|
};
|
|
24
25
|
if (n) r = n, t = 200;
|
|
25
26
|
else {
|
|
26
|
-
let n =
|
|
27
|
+
let n = x(e.entityId);
|
|
27
28
|
n?.bundle && (r = n.bundle, t = 200);
|
|
28
29
|
}
|
|
29
|
-
return
|
|
30
|
+
return v.json(r, { status: t });
|
|
30
31
|
});
|
|
31
32
|
}
|
|
32
|
-
function
|
|
33
|
-
return
|
|
33
|
+
function C(e, t) {
|
|
34
|
+
return y.get(`${e}${o(":entityId")}`, () => {
|
|
34
35
|
let e = t;
|
|
35
|
-
return
|
|
36
|
+
return v.json(e, { status: 200 });
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
|
-
function
|
|
39
|
-
return
|
|
39
|
+
function w(e, n) {
|
|
40
|
+
return y.post(`${e}${t(":entityId", ":versionNumber")}`, ({ params: e }) => {
|
|
40
41
|
let t = e.entityId, r = parseInt(e.versionNumber), i = 404, a = {
|
|
41
42
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
42
43
|
reason: `Mock Service worker could not find a mock entity bundle with ID ${t}`
|
|
43
44
|
};
|
|
44
45
|
if (n) a = n, i = 200;
|
|
45
46
|
else {
|
|
46
|
-
let e =
|
|
47
|
+
let e = x(t);
|
|
47
48
|
if (e) {
|
|
48
49
|
let t = e.bundle;
|
|
49
50
|
a = e.versions?.[r] ? {
|
|
@@ -52,127 +53,129 @@ function x(e, n) {
|
|
|
52
53
|
} : t, i = 200;
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
|
-
return
|
|
56
|
+
return v.json(a, { status: i });
|
|
56
57
|
});
|
|
57
58
|
}
|
|
58
|
-
var
|
|
59
|
-
|
|
59
|
+
var T = (t) => [
|
|
60
|
+
y.post(`${t}${e}`, async ({ request: t }) => {
|
|
60
61
|
let n = 200, r = await t.json(), i = {
|
|
61
62
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
62
63
|
reason: "..."
|
|
63
64
|
};
|
|
64
65
|
return r ? r.name === "A $@*#$% terribly named Project" ? (i.reason = "Invalid project name", n = 403) : i = {
|
|
65
|
-
id:
|
|
66
|
+
id: _("syn"),
|
|
66
67
|
...r
|
|
67
68
|
} : (n = 400, i = {
|
|
68
69
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
69
70
|
reason: `Mock service worker received the following malformed body for PUT ${e} : ${JSON.stringify(r)}`
|
|
70
|
-
}),
|
|
71
|
+
}), v.json(i, { status: n });
|
|
71
72
|
}),
|
|
72
|
-
|
|
73
|
+
y.get(`${t}${r(":entityId")}`, ({ params: e }) => {
|
|
73
74
|
let t = 404, n = {
|
|
74
75
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
75
76
|
reason: `Mock Service worker could not find a mock entity with ID ${e.entityId}`
|
|
76
|
-
}, r =
|
|
77
|
-
return r && (n = r.entity, t = 200),
|
|
77
|
+
}, r = x(e.entityId);
|
|
78
|
+
return r && (n = r.entity, t = 200), v.json(n, { status: t });
|
|
78
79
|
}),
|
|
79
|
-
|
|
80
|
+
y.get(`${t}${a(":entityId")}`, ({ params: e }) => {
|
|
80
81
|
let t = 404, n = {
|
|
81
82
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
82
83
|
reason: `Mock Service worker could not find mock entity versions for ID ${e.entityId}`
|
|
83
|
-
}, r =
|
|
84
|
-
return r?.versionInfo && (n = { results: r.versionInfo }, t = 200),
|
|
84
|
+
}, r = x(e.entityId);
|
|
85
|
+
return r?.versionInfo && (n = { results: r.versionInfo }, t = 200), v.json(n, { status: t });
|
|
85
86
|
}),
|
|
86
|
-
|
|
87
|
+
y.get(`${t}${i(":entityId", ":versionNumber")}`, ({ params: e }) => {
|
|
87
88
|
let t = 404, n = e.entityId, r = e.versionNumber.toString(), i = parseInt(r), a = {
|
|
88
89
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
89
90
|
reason: `Mock Service worker could not find a mock versioned entity with ID ${n}.${r}`
|
|
90
|
-
}, o =
|
|
91
|
-
return o?.versions?.[i] && (a = o.versions[i], t = 200),
|
|
91
|
+
}, o = x(e.entityId);
|
|
92
|
+
return o?.versions?.[i] && (a = o.versions[i], t = 200), v.json(a, { status: t });
|
|
92
93
|
}),
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
S(t),
|
|
95
|
+
w(t),
|
|
96
|
+
y.get(`${t}${s(":entityId")}`, () => v.json(u, { status: 200 })),
|
|
97
|
+
y.get(`${t}${c(":entityId")}`, () => v.json(d, { status: 200 })),
|
|
98
|
+
y.post(`${t}/repo/v1/restrictionInformation`, () => v.json(m, { status: 200 })),
|
|
99
|
+
y.get(`${t}${o(":entityId")}`, ({ params: e }) => {
|
|
97
100
|
let t = 404, n = {
|
|
98
101
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
99
102
|
reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
|
|
100
|
-
}, r =
|
|
101
|
-
return r?.json && (n = r.json, t = 200),
|
|
103
|
+
}, r = x(e.entityId);
|
|
104
|
+
return r?.json && (n = r.json, t = 200), v.json(n, { status: t });
|
|
102
105
|
}),
|
|
103
|
-
|
|
106
|
+
y.post(`${t}${n}`, async ({ params: e, request: t }) => {
|
|
104
107
|
let n = 404, r = {
|
|
105
108
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
106
109
|
reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
|
|
107
110
|
}, i = (await t.json()).references.map((e) => {
|
|
108
|
-
let t =
|
|
111
|
+
let t = x(e.targetId)?.entityHeader;
|
|
109
112
|
if (t) return {
|
|
110
113
|
...t,
|
|
111
114
|
id: e.targetId
|
|
112
115
|
};
|
|
113
116
|
}).filter((e) => !!e);
|
|
114
|
-
return i && (r = { results: i }, n = 200),
|
|
117
|
+
return i && (r = { results: i }, n = 200), v.json(r, { status: n });
|
|
115
118
|
}),
|
|
116
|
-
|
|
119
|
+
y.get(`${t}${r(":entityId")}/path`, ({ params: e }) => {
|
|
117
120
|
let t = 404, n = {
|
|
118
121
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
119
122
|
reason: `Mock Service worker could not find a mock entity path using ID ${e.entityId}`
|
|
120
|
-
}, r =
|
|
121
|
-
return r?.path && (n = r.path, t = 200),
|
|
123
|
+
}, r = x(e.entityId);
|
|
124
|
+
return r?.path && (n = r.path, t = 200), v.json(n, { status: t });
|
|
122
125
|
}),
|
|
123
|
-
|
|
124
|
-
let e =
|
|
125
|
-
return
|
|
126
|
+
y.get(`${t}/file/v1/entity/:id/uploadDestination`, () => {
|
|
127
|
+
let e = h;
|
|
128
|
+
return v.json(e, { status: 200 });
|
|
126
129
|
}),
|
|
127
|
-
|
|
130
|
+
y.get(`${t}/file/v1/entity/:id/uploadDestination/:storageLocationId`, ({ params: e }) => {
|
|
128
131
|
let t = 404, n = {
|
|
129
132
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
130
133
|
reason: `Mock Service worker could not find an uploadDestination using storageLocationId ${e.storageLocationId}`
|
|
131
|
-
}, r =
|
|
132
|
-
return r && (n = r, t = 200),
|
|
134
|
+
}, r = g.find((t) => Number(e.storageLocationId) === t.storageLocationId);
|
|
135
|
+
return r && (n = r, t = 200), v.json(n, { status: t });
|
|
133
136
|
}),
|
|
134
|
-
|
|
135
|
-
let e = { results:
|
|
137
|
+
y.get(`${t}/repo/v1/projects`, () => {
|
|
138
|
+
let e = { results: p.map((e) => ({
|
|
136
139
|
name: e.name,
|
|
137
140
|
id: e.id,
|
|
138
141
|
lastActivity: "2024-01-04T21:11:59.000Z",
|
|
139
142
|
modifiedBy: parseInt(e.entity.modifiedBy),
|
|
140
143
|
modifiedOn: e.entity.modifiedOn
|
|
141
144
|
})) };
|
|
142
|
-
return
|
|
145
|
+
return v.json(e, { status: 200 });
|
|
143
146
|
}),
|
|
144
|
-
|
|
145
|
-
let n =
|
|
147
|
+
y.post(`${t}${r(":entityId")}/acl`, async ({ params: e, request: t }) => {
|
|
148
|
+
let n = x(e.entityId), r, i;
|
|
146
149
|
return n ? n.bundle?.accessControlList ? (r = 403, i = {
|
|
147
150
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
148
151
|
reason: "Resource already has an ACL."
|
|
149
152
|
}) : (i = await t.json(), r = 201) : (r = 404, i = {
|
|
150
153
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
151
154
|
reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
|
|
152
|
-
}),
|
|
155
|
+
}), v.json(i, { status: r });
|
|
153
156
|
}),
|
|
154
|
-
|
|
155
|
-
let n =
|
|
157
|
+
y.put(`${t}${r(":entityId")}/acl`, async ({ params: e, request: t }) => {
|
|
158
|
+
let n = x(e.entityId), r, i;
|
|
156
159
|
return n ? n?.bundle?.accessControlList ? (i = await t.json(), r = 200) : (i = {
|
|
157
160
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
158
161
|
reason: "Cannot update ACL for a resource which inherits its permissions."
|
|
159
162
|
}, r = 403) : (r = 404, i = {
|
|
160
163
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
161
164
|
reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
|
|
162
|
-
}),
|
|
165
|
+
}), v.json(i, { status: r });
|
|
163
166
|
}),
|
|
164
|
-
|
|
165
|
-
let t =
|
|
167
|
+
y.delete(`${t}${r(":entityId")}/acl`, ({ params: e }) => {
|
|
168
|
+
let t = x(e.entityId), n, r;
|
|
166
169
|
return t ? t?.bundle?.accessControlList ? (r = "", n = 200) : (r = {
|
|
167
170
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
168
171
|
reason: "Cannot delete ACL for a resource which inherits its permissions."
|
|
169
172
|
}, n = 403) : (n = 404, r = {
|
|
170
173
|
concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
|
|
171
174
|
reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
|
|
172
|
-
}),
|
|
175
|
+
}), v.json(r, { status: n });
|
|
173
176
|
})
|
|
174
177
|
];
|
|
175
178
|
//#endregion
|
|
176
|
-
export {
|
|
179
|
+
export { S as getEntityBundleHandler, T as getEntityHandlers, C as getEntityJsonHandler, w as getVersionedEntityBundleHandler };
|
|
177
180
|
|
|
178
181
|
//# sourceMappingURL=entityHandlers.js.map
|
|
@@ -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?.[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?.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 (entityData?.versions?.[requestedVersionNumber]) {\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?.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":";;;;;;;;;AAwCA,SAAS,EAAwB,GAAuC;CACtE,IAAM,IAAsB,EAAU,IAAI,CAAkB;CAC5D,OAAO,EAAa,QAAO,MACzB,EAAoB,SAAS,EAAmB,EAAO,EAAE,CAAC,CAC5D;AACF;AACA,SAAS,EAAsB,GAA8C;CAC3E,IAAM,IAAU,EAAwB,CAAC,CAAQ,CAAC;CAC9C,MAAQ,UAAU,GAGtB,OAAO,EAAQ;AACjB;AAEA,SAAgB,EACd,GACA,GACA;CACA,OAAO,EAAK,KACV,GAAG,IAAgB,EAAiB,WAAW,MAC9C,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAA6C;GAC/C,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF;EACA,IAAI,GAEF,AADA,IAAW,GACX,IAAS;OACJ;GACL,IAAM,IAAa,EAAsB,EAAO,QAAkB;GAClE,AAAI,GAAY,WACd,IAAW,EAAW,QACtB,IAAS;EAEb;EACA,OAAO,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;AACF;AAEA,SAAgB,EACd,GACA,GACA;CACA,OAAO,EAAK,IACV,GAAG,IAAgB,EAAY,WAAW,WAEpC;EACJ,IAAM,IAAW;EACjB,OAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,IAAI,CAAC;CACpD,CACF;AACF;AAEA,SAAgB,EACd,GACA,GACA;CACA,OAAO,EAAK,KACV,GAAG,IAAgB,EAAiB,aAAa,gBAAgB,MAChE,EAAE,gBAAa;EACd,IAAM,IAAW,EAAO,UAClB,IAAgB,SAAS,EAAO,aAAuB,GACzD,IAAS,KACT,IAA6C;GAC/C,cAAc;GACd,QAAQ,mEAAmE;EAC7E;EACA,IAAI,GAEF,AADA,IAAW,GACX,IAAS;OACJ;GACL,IAAM,IAAa,EAAsB,CAAQ;GACjD,IAAI,GAAY;IACd,IAAM,IAAS,EAAW;IAS1B,AARA,AAME,IANE,EAAW,WAAW,KACb;KACT,GAAG;KACH,QAAQ,EAAW,SAAS;IAC9B,IAEW,GAEb,IAAS;GACX;EACF;EACA,OAAO,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;AACF;AAEA,IAAa,KAAqB,MAA0B;CAI1D,EAAK,KAAoB,GAAG,IAAgB,KAAU,OAAO,EAAE,iBAAc;EAC3E,IAAI,IAAS,KACP,IAAc,MAAM,EAAQ,KAAK,GACnC,IAAuC;GACzC,cAAc;GACd,QAAQ;EACV;EAkBA,OAjBK,IASC,EAAY,SAAA,qCACb,EAA4B,SAAS,wBACtC,IAAS,OAET,IAAW;GAAE,IAAI,EAAS,KAAK;GAAG,GAAG;EAAY,KAZnD,IAAS,KACT,IAAW;GACT,cAAc;GACd,QAAQ,qEAAqE,EAAO,KAAK,KAAK,UAC5F,CACF;EACF,IAUK,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CAAC;CAKD,EAAK,IAAI,GAAG,IAAgB,EAAU,WAAW,MAAM,EAAE,gBAAa;EACpE,IAAI,IAAS,KACT,IAAuC;GACzC,cAAc;GACd,QAAQ,4DAA4D,EAAO;EAC7E,GAEM,IAAa,EAAsB,EAAO,QAAkB;EAKlE,OAJI,MACF,IAAW,EAAW,QACtB,IAAS,MAEJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CAAC;CAED,EAAK,IACH,GAAG,IAAgB,EAAmB,WAAW,MAChD,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAA8D;GAChE,cAAc;GACd,QAAQ,kEAAkE,EAAO;EACnF,GAEM,IAAa,EAAsB,EAAO,QAAkB;EAKlE,OAJI,GAAY,gBACd,IAAW,EAAE,SAAS,EAAW,YAAY,GAC7C,IAAS,MAEJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,IACH,GAAG,IAAgB,EAAkB,aAAa,gBAAgB,MACjE,EAAE,gBAAa;EACd,IAAI,IAAS,KACP,IAAW,EAAO,UAClB,IAAgB,EAAO,cAAc,SAAS,GAC9C,IAAyB,SAAS,CAAa,GAEjD,IAAkD;GACpD,cAAc;GACd,QAAQ,sEAAsE,EAAS,GAAG;EAC5F,GAEM,IAAa,EAAsB,EAAO,QAAQ;EAOxD,OANI,GAAY,WAAW,OACzB,IAAW,EAAW,SACpB,IAEF,IAAS,MAEJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAuB,CAAa;CACpC,EAAgC,CAAa;CAE7C,EAAK,IAAI,GAAG,IAAgB,EAAsB,WAAW,WACpD,EAAa,KAAK,GAAmB,EAAE,QAAQ,IAAI,CAAC,CAC5D;CACD,EAAK,IACH,GAAG,IAAgB,EAAY,WAAW,MAEzC,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAA2C;GAC7C,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF,GACM,IAAa,EAAsB,EAAO,QAAkB;EAMlE,OALI,GAAY,SACd,IAAW,EAAW,MACtB,IAAS,MAGJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,KACH,GAAG,IAAgB,KAEnB,OAAO,EAAE,WAAQ,iBAAc;EAC7B,IAAI,IAAS,KACT,IAA+D;GACjE,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF,GAGM,KAA6B,MADP,EAAQ,KAAK,GACQ,WAC9C,KAAI,MAAO;GACV,IAAM,IAAe,EAAsB,EAAI,QAAQ,GAAG;GAC1D,IAAI,GACF,OAAO;IACL,GAAG;IAEH,IAAI,EAAI;GACV;EAGJ,CAAC,EACA,QAAQ,MAAmC,CAAC,CAAC,CAAM;EAOtD,OALI,MACF,IAAW,EAAE,SAAS,EAAW,GACjC,IAAS,MAGJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,IACH,GAAG,IAAgB,EAAU,WAAW,EAAE,SAEzC,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAA2C;GAC7C,cAAc;GACd,QAAQ,kEAAkE,EAAO;EACnF,GACM,IAAa,EAAsB,EAAO,QAAkB;EAOlE,OALI,GAAY,SACd,IAAW,EAAW,MACtB,IAAS,MAGJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,IAAI,GAAG,EAAc,8CAA8C;EACtE,IAAM,IAA8B;EACpC,OAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,IAAI,CAAC;CACpD,CAAC;CAED,EAAK,IACH,GAAG,EAAc,4DAChB,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAAkD;GACpD,cAAc;GACd,QAAQ,mFAAmF,EAAO;EACpG,GACM,IAAoB,EAAuB,MAC/C,MAAK,OAAO,EAAO,iBAAiB,MAAM,EAAE,iBAC9C;EAOA,OALI,MACF,IAAW,GACX,IAAS,MAGJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,IAAI,GAAG,EAAc,0BAA0B;EAClD,IAAM,IAA8B,EAClC,SAAS,EAAuB,KAAI,OAAM;GACxC,MAAM,EAAE;GACR,IAAI,EAAE;GACN,cAAc;GACd,YAAY,SAAS,EAAE,OAAO,UAAW;GACzC,YAAY,EAAE,OAAO;EACvB,EAAE,EACJ;EACA,OAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,IAAI,CAAC;CACpD,CAAC;CAED,EAAK,KACH,GAAG,IAAgB,EAAU,WAAW,EAAE,OAC1C,OAAO,EAAE,WAAQ,iBAAc;EAC7B,IAAM,IAAa,EAAsB,EAAO,QAAQ,GACpD,GACA;EAkBJ,OAjBK,IAMM,EAAW,QAAQ,qBAC5B,IAAS,KACT,IAAW;GACT,cAAc;GACd,QAAQ;EACV,MAEA,IAAW,MAAM,EAAQ,KAAK,GAC9B,IAAS,QAbT,IAAS,KACT,IAAW;GACT,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF,IAYK,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,IACH,GAAG,IAAgB,EAAU,WAAW,EAAE,OAC1C,OAAO,EAAE,WAAQ,iBAAc;EAC7B,IAAM,IAAa,EAAsB,EAAO,QAAQ,GAEpD,GACA;EAoBJ,OAlBK,IAMO,GAAY,QAAQ,qBAQ9B,IAAW,MAAM,EAAQ,KAAK,GAC9B,IAAS,QART,IAAW;GACT,cAAc;GACd,QACE;EACJ,GACA,IAAS,QAXT,IAAS,KACT,IAAW;GACT,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF,IAaK,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,OAAO,GAAG,IAAgB,EAAU,WAAW,EAAE,QAAQ,EAAE,gBAAa;EAC3E,IAAM,IAAa,EAAsB,EAAO,QAAkB,GAE9D,GACA;EAoBJ,OAlBK,IAMO,GAAY,QAAQ,qBAQ9B,IAAW,IACX,IAAS,QART,IAAW;GACT,cAAc;GACd,QACE;EACJ,GACA,IAAS,QAXT,IAAS,KACT,IAAW;GACT,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF,IAaK,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CAAC;AACH"}
|
|
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 ENTITY_SCHEMA_VALIDATION,\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 { mockOpenRestrictionInformation } from '../../mock_has_access_data'\nimport {\n mockSchemaBinding,\n mockSchemaValidationResults,\n} 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?.[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?.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 (entityData?.versions?.[requestedVersionNumber]) {\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(`${backendOrigin}${ENTITY_SCHEMA_VALIDATION(':entityId')}`, () => {\n return HttpResponse.json(mockSchemaValidationResults, { status: 200 })\n }),\n http.post(`${backendOrigin}/repo/v1/restrictionInformation`, () => {\n return HttpResponse.json(mockOpenRestrictionInformation, { 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?.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":";;;;;;;;;;AA6CA,SAAS,EAAwB,GAAuC;CACtE,IAAM,IAAsB,EAAU,IAAI,CAAkB;CAC5D,OAAO,EAAa,QAAO,MACzB,EAAoB,SAAS,EAAmB,EAAO,EAAE,CAAC,CAC5D;AACF;AACA,SAAS,EAAsB,GAA8C;CAC3E,IAAM,IAAU,EAAwB,CAAC,CAAQ,CAAC;CAC9C,MAAQ,UAAU,GAGtB,OAAO,EAAQ;AACjB;AAEA,SAAgB,EACd,GACA,GACA;CACA,OAAO,EAAK,KACV,GAAG,IAAgB,EAAiB,WAAW,MAC9C,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAA6C;GAC/C,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF;EACA,IAAI,GAEF,AADA,IAAW,GACX,IAAS;OACJ;GACL,IAAM,IAAa,EAAsB,EAAO,QAAkB;GAClE,AAAI,GAAY,WACd,IAAW,EAAW,QACtB,IAAS;EAEb;EACA,OAAO,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;AACF;AAEA,SAAgB,EACd,GACA,GACA;CACA,OAAO,EAAK,IACV,GAAG,IAAgB,EAAY,WAAW,WAEpC;EACJ,IAAM,IAAW;EACjB,OAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,IAAI,CAAC;CACpD,CACF;AACF;AAEA,SAAgB,EACd,GACA,GACA;CACA,OAAO,EAAK,KACV,GAAG,IAAgB,EAAiB,aAAa,gBAAgB,MAChE,EAAE,gBAAa;EACd,IAAM,IAAW,EAAO,UAClB,IAAgB,SAAS,EAAO,aAAuB,GACzD,IAAS,KACT,IAA6C;GAC/C,cAAc;GACd,QAAQ,mEAAmE;EAC7E;EACA,IAAI,GAEF,AADA,IAAW,GACX,IAAS;OACJ;GACL,IAAM,IAAa,EAAsB,CAAQ;GACjD,IAAI,GAAY;IACd,IAAM,IAAS,EAAW;IAS1B,AARA,AAME,IANE,EAAW,WAAW,KACb;KACT,GAAG;KACH,QAAQ,EAAW,SAAS;IAC9B,IAEW,GAEb,IAAS;GACX;EACF;EACA,OAAO,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;AACF;AAEA,IAAa,KAAqB,MAA0B;CAI1D,EAAK,KAAoB,GAAG,IAAgB,KAAU,OAAO,EAAE,iBAAc;EAC3E,IAAI,IAAS,KACP,IAAc,MAAM,EAAQ,KAAK,GACnC,IAAuC;GACzC,cAAc;GACd,QAAQ;EACV;EAkBA,OAjBK,IASC,EAAY,SAAA,qCACb,EAA4B,SAAS,wBACtC,IAAS,OAET,IAAW;GAAE,IAAI,EAAS,KAAK;GAAG,GAAG;EAAY,KAZnD,IAAS,KACT,IAAW;GACT,cAAc;GACd,QAAQ,qEAAqE,EAAO,KAAK,KAAK,UAC5F,CACF;EACF,IAUK,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CAAC;CAKD,EAAK,IAAI,GAAG,IAAgB,EAAU,WAAW,MAAM,EAAE,gBAAa;EACpE,IAAI,IAAS,KACT,IAAuC;GACzC,cAAc;GACd,QAAQ,4DAA4D,EAAO;EAC7E,GAEM,IAAa,EAAsB,EAAO,QAAkB;EAKlE,OAJI,MACF,IAAW,EAAW,QACtB,IAAS,MAEJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CAAC;CAED,EAAK,IACH,GAAG,IAAgB,EAAmB,WAAW,MAChD,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAA8D;GAChE,cAAc;GACd,QAAQ,kEAAkE,EAAO;EACnF,GAEM,IAAa,EAAsB,EAAO,QAAkB;EAKlE,OAJI,GAAY,gBACd,IAAW,EAAE,SAAS,EAAW,YAAY,GAC7C,IAAS,MAEJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,IACH,GAAG,IAAgB,EAAkB,aAAa,gBAAgB,MACjE,EAAE,gBAAa;EACd,IAAI,IAAS,KACP,IAAW,EAAO,UAClB,IAAgB,EAAO,cAAc,SAAS,GAC9C,IAAyB,SAAS,CAAa,GAEjD,IAAkD;GACpD,cAAc;GACd,QAAQ,sEAAsE,EAAS,GAAG;EAC5F,GAEM,IAAa,EAAsB,EAAO,QAAQ;EAOxD,OANI,GAAY,WAAW,OACzB,IAAW,EAAW,SACpB,IAEF,IAAS,MAEJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAuB,CAAa;CACpC,EAAgC,CAAa;CAE7C,EAAK,IAAI,GAAG,IAAgB,EAAsB,WAAW,WACpD,EAAa,KAAK,GAAmB,EAAE,QAAQ,IAAI,CAAC,CAC5D;CACD,EAAK,IAAI,GAAG,IAAgB,EAAyB,WAAW,WACvD,EAAa,KAAK,GAA6B,EAAE,QAAQ,IAAI,CAAC,CACtE;CACD,EAAK,KAAK,GAAG,EAAc,wCAClB,EAAa,KAAK,GAAgC,EAAE,QAAQ,IAAI,CAAC,CACzE;CACD,EAAK,IACH,GAAG,IAAgB,EAAY,WAAW,MAEzC,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAA2C;GAC7C,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF,GACM,IAAa,EAAsB,EAAO,QAAkB;EAMlE,OALI,GAAY,SACd,IAAW,EAAW,MACtB,IAAS,MAGJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,KACH,GAAG,IAAgB,KAEnB,OAAO,EAAE,WAAQ,iBAAc;EAC7B,IAAI,IAAS,KACT,IAA+D;GACjE,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF,GAGM,KAA6B,MADP,EAAQ,KAAK,GACQ,WAC9C,KAAI,MAAO;GACV,IAAM,IAAe,EAAsB,EAAI,QAAQ,GAAG;GAC1D,IAAI,GACF,OAAO;IACL,GAAG;IAEH,IAAI,EAAI;GACV;EAGJ,CAAC,EACA,QAAQ,MAAmC,CAAC,CAAC,CAAM;EAOtD,OALI,MACF,IAAW,EAAE,SAAS,EAAW,GACjC,IAAS,MAGJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,IACH,GAAG,IAAgB,EAAU,WAAW,EAAE,SAEzC,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAA2C;GAC7C,cAAc;GACd,QAAQ,kEAAkE,EAAO;EACnF,GACM,IAAa,EAAsB,EAAO,QAAkB;EAOlE,OALI,GAAY,SACd,IAAW,EAAW,MACtB,IAAS,MAGJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,IAAI,GAAG,EAAc,8CAA8C;EACtE,IAAM,IAA8B;EACpC,OAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,IAAI,CAAC;CACpD,CAAC;CAED,EAAK,IACH,GAAG,EAAc,4DAChB,EAAE,gBAAa;EACd,IAAI,IAAS,KACT,IAAkD;GACpD,cAAc;GACd,QAAQ,mFAAmF,EAAO;EACpG,GACM,IAAoB,EAAuB,MAC/C,MAAK,OAAO,EAAO,iBAAiB,MAAM,EAAE,iBAC9C;EAOA,OALI,MACF,IAAW,GACX,IAAS,MAGJ,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,IAAI,GAAG,EAAc,0BAA0B;EAClD,IAAM,IAA8B,EAClC,SAAS,EAAuB,KAAI,OAAM;GACxC,MAAM,EAAE;GACR,IAAI,EAAE;GACN,cAAc;GACd,YAAY,SAAS,EAAE,OAAO,UAAW;GACzC,YAAY,EAAE,OAAO;EACvB,EAAE,EACJ;EACA,OAAO,EAAa,KAAK,GAAU,EAAE,QAAQ,IAAI,CAAC;CACpD,CAAC;CAED,EAAK,KACH,GAAG,IAAgB,EAAU,WAAW,EAAE,OAC1C,OAAO,EAAE,WAAQ,iBAAc;EAC7B,IAAM,IAAa,EAAsB,EAAO,QAAQ,GACpD,GACA;EAkBJ,OAjBK,IAMM,EAAW,QAAQ,qBAC5B,IAAS,KACT,IAAW;GACT,cAAc;GACd,QAAQ;EACV,MAEA,IAAW,MAAM,EAAQ,KAAK,GAC9B,IAAS,QAbT,IAAS,KACT,IAAW;GACT,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF,IAYK,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,IACH,GAAG,IAAgB,EAAU,WAAW,EAAE,OAC1C,OAAO,EAAE,WAAQ,iBAAc;EAC7B,IAAM,IAAa,EAAsB,EAAO,QAAQ,GAEpD,GACA;EAoBJ,OAlBK,IAMO,GAAY,QAAQ,qBAQ9B,IAAW,MAAM,EAAQ,KAAK,GAC9B,IAAS,QART,IAAW;GACT,cAAc;GACd,QACE;EACJ,GACA,IAAS,QAXT,IAAS,KACT,IAAW;GACT,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF,IAaK,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CACF;CAEA,EAAK,OAAO,GAAG,IAAgB,EAAU,WAAW,EAAE,QAAQ,EAAE,gBAAa;EAC3E,IAAM,IAAa,EAAsB,EAAO,QAAkB,GAE9D,GACA;EAoBJ,OAlBK,IAMO,GAAY,QAAQ,qBAQ9B,IAAW,IACX,IAAS,QART,IAAW;GACT,cAAc;GACd,QACE;EACJ,GACA,IAAS,QAXT,IAAS,KACT,IAAW;GACT,cAAc;GACd,QAAQ,mEAAmE,EAAO;EACpF,IAaK,EAAa,KAAK,GAAU,EAAE,UAAO,CAAC;CAC/C,CAAC;AACH"}
|
|
@@ -29,7 +29,7 @@ function a(a) {
|
|
|
29
29
|
}
|
|
30
30
|
}, { status: 200 })) : e.text("Job not found", { status: 404 });
|
|
31
31
|
}),
|
|
32
|
-
t.post(`${a}/repo/v1/grid/:sessionId/replica`, async ({ request: t }) => {
|
|
32
|
+
t.post(`${a}/repo/v1/grid/session/:sessionId/replica`, async ({ request: t }) => {
|
|
33
33
|
let { gridSessionId: r } = await t.json();
|
|
34
34
|
if (!Array.from(i.values()).find((e) => e.sessionId === r)) return e.text("Grid session not found", { status: 404 });
|
|
35
35
|
let a = {
|
|
@@ -44,7 +44,7 @@ function a(a) {
|
|
|
44
44
|
};
|
|
45
45
|
return e.json(a, { status: 201 });
|
|
46
46
|
}),
|
|
47
|
-
t.
|
|
47
|
+
t.post(`${a}/repo/v1/grid/session/:sessionId/presigned/url`, ({ params: t }) => {
|
|
48
48
|
let { sessionId: n } = t;
|
|
49
49
|
if (!Array.from(i.values()).find((e) => e.sessionId === n)) return e.text("Grid session not found", { status: 404 });
|
|
50
50
|
let r = `https://mock-s3-bucket/${n}/data.csv?presigned=true`;
|
|
@@ -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.
|
|
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/session/: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.post<{ sessionId: string }>(\n `${backendOrigin}/repo/v1/grid/session/:sessionId/presigned/url`,\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;CACtB,OAAO,OAAO,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE;AACpD;AAGA,IAAM,UAEG,gBADkB,EACF,IAAW,OAU9B,oBAAc,IAAI,IAAqB;AAE7C,SAAgB,EAAgB,GAAuB;CACrD,OAAO;EAEL,EAAK,KACH,GAAG,EAAc,oCACjB,OAAO,EAAE,iBAAc;GAErB,IAAM,IAAW,OAAO,KAAK,IAAI,EAAE,GAAG,KAAK,OAAO,EAC/C,SAAS,EAAE,EACX,UAAU,GAAG,CAAC,KACX,IAAc,MAAM,EAAQ,KAAK;GASvC,OANA,EAAY,IAAI,GAAU;IACxB,QAAQ;IACR,WAAW,KAAK,IAAI;IACpB,WAAW,EAAkB;GAC/B,CAAC,GAEM,EAAa,KAAK,GAAa,EAAE,QAAQ,IAAI,CAAC;EACvD,CACF;EAGA,EAAK,IACH,GAAG,EAAc,0CAChB,EAAE,gBAAa;GAEd,IAAM,IAAU,EAAY,IAAI,EAAO,KAAK;GAQ5C,OANK,KAKL,EAAQ,SAAS,YACV,EAAa,KAClB;IACE,cAAc;IACd,aAAa;KACX,WAAW,EAAQ;KACnB,WAAW;KACX,4BAAW,IAAI,KAAK,GAAE,YAAY;KAClC,MAAM,QAAQ,KAAK,IAAI;KACvB,6BAAY,IAAI,KAAK,GAAE,YAAY;KACnC,qBAAqB;KACrB,sBAAsB;IACxB;GACF,GACA,EAAE,QAAQ,IAAI,CAChB,KAnBS,EAAa,KAAK,iBAAiB,EAAE,QAAQ,IAAI,CAAC;EAoB7D,CACF;EAGA,EAAK,KACH,GAAG,EAAc,2CACjB,OAAO,EAAE,iBAAc;GACrB,IAAM,EAAE,qBAAkB,MAAM,EAAQ,KAAK;GAO7C,IAAI,CAJY,MAAM,KAAK,EAAY,OAAO,CAAC,EAAE,MAC/C,MAAO,EAAI,cAAc,CAGtB,GACH,OAAO,EAAa,KAAK,0BAA0B,EAAE,QAAQ,IAAI,CAAC;GAKpE,IAAM,IAAkB;IACtB,cAAc;IACd,SAAS;KACP;KACA,WALc,EAAa,IAAI;KAM/B,WAAW;KACX,gBAAgB;KAChB,4BAAW,IAAI,KAAK,GAAE,YAAY;IACpC;GACF;GACA,OAAO,EAAa,KAAK,GAAiB,EAAE,QAAQ,IAAI,CAAC;EAC3D,CACF;EAGA,EAAK,KACH,GAAG,EAAc,kDAChB,EAAE,gBAAa;GACd,IAAM,EAAE,iBAAc;GAKtB,IAAI,CAHY,MAAM,KAAK,EAAY,OAAO,CAAC,EAAE,MAC/C,MAAO,EAAI,cAAc,CAEtB,GACH,OAAO,EAAa,KAAK,0BAA0B,EAAE,QAAQ,IAAI,CAAC;GAGpE,IAAM,IAAe,0BAA0B,EAAU;GACzD,OAAO,EAAa,KAAK,EAAE,gBAAa,GAAG,EAAE,QAAQ,IAAI,CAAC;EAC5D,CACF;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mocks/msw/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mocks/msw/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAK1B,QAAA,MAAM,MAAM,gCAA2B,CAAA;AAWvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA"}
|
package/dist/mocks/msw/server.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { handlers as e } from "./handlers.js";
|
|
2
2
|
import { http as t } from "msw";
|
|
3
3
|
import { setupServer as n } from "msw/node";
|
|
4
|
+
import { afterAll as r, afterEach as i, beforeAll as a } from "vitest";
|
|
4
5
|
//#region src/mocks/msw/server.ts
|
|
5
|
-
var
|
|
6
|
+
var o = n(...e);
|
|
7
|
+
a(() => o.listen({ onUnhandledRequest: "error" })), i(() => o.resetHandlers()), r(() => o.close());
|
|
6
8
|
//#endregion
|
|
7
|
-
export { t as http,
|
|
9
|
+
export { t as http, o as server };
|
|
8
10
|
|
|
9
11
|
//# sourceMappingURL=server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","names":[],"sources":["../../../src/mocks/msw/server.ts"],"sourcesContent":["import { http } from 'msw'\nimport { setupServer } from 'msw/node'\nimport { handlers } from './handlers'\n\nconst server = setupServer(...handlers)\n\nexport { server, http }\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.js","names":[],"sources":["../../../src/mocks/msw/server.ts"],"sourcesContent":["import { http } from 'msw'\nimport { setupServer } from 'msw/node'\nimport { afterAll, afterEach, beforeAll } from 'vitest'\nimport { handlers } from './handlers'\n\nconst server = setupServer(...handlers)\n\n// Importing this module from a test file starts the server for that file. Test files that never import it\n// pay nothing, because the server (and every handler fixture) is only loaded when it is needed.\n//\n// Requests with no matching handler fail the test instead of silently reaching the network.\n// `resetHandlers` (not `restoreHandlers`) drops `server.use` overrides, so they cannot leak between tests.\nbeforeAll(() => server.listen({ onUnhandledRequest: 'error' }))\nafterEach(() => server.resetHandlers())\nafterAll(() => server.close())\n\nexport { server, http }\n"],"mappings":";;;;;AAKA,IAAM,IAAS,EAAY,GAAG,CAAQ;AAOtC,QAAgB,EAAO,OAAO,EAAE,oBAAoB,QAAQ,CAAC,CAAC,GAC9D,QAAgB,EAAO,cAAc,CAAC,GACtC,QAAe,EAAO,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetUserChallenges.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,SAAS,EACT,sCAAsC,EACtC,gBAAgB,EACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CACjE,mGAUF;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,GAAG,YAAY,CAAC,sCAAsC,CAAC,EAE5D,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,sCAAsC,EACtC,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,SAAS,CACnB,CACF,
|
|
1
|
+
{"version":3,"file":"useGetUserChallenges.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,SAAS,EACT,sCAAsC,EACtC,gBAAgB,EACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CACjE,mGAUF;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,GAAG,YAAY,CAAC,sCAAsC,CAAC,EAE5D,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,sCAAsC,EACtC,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,SAAS,CACnB,CACF,qFAkDF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetUserChallenges.js","names":[],"sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Challenge,\n ChallengeWithProjectHeaderPagedResults,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetUserChallenges(\n userId: string,\n limit?: number,\n options?: Partial<\n UseQueryOptions<PaginatedResults<Challenge>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: () =>\n SynapseClient.getUserChallenges(accessToken, userId, 0, limit ?? 10),\n })\n}\n\nexport function useGetUserChallengesInfinite<\n TData = InfiniteData<ChallengeWithProjectHeaderPagedResults>,\n>(\n userId: string,\n options?: Partial<\n UseInfiniteQueryOptions<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n initialPageParam: undefined,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: async context => {\n const challenges = await SynapseClient.getUserChallenges(\n accessToken,\n userId,\n context.pageParam, // pass the context.pageParam for the new offset\n 10, // limit\n )\n // also look up the challenge project names (if there are challenges)\n if (challenges.results.length > 0) {\n const challengeProjectIds = Array.from(\n challenges.results,\n challenge => challenge.projectId,\n )\n const challengeProjects =\n await SynapseClient.getEntityHeadersByIds(challengeProjectIds)\n const challengeWithProjectHeaderPagedResults: ChallengeWithProjectHeaderPagedResults =\n {\n results: Array.from(challenges.results, (challenge, index) => {\n return {\n challenge,\n projectHeader: challengeProjects.results[index],\n }\n }),\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n return challengeWithProjectHeaderPagedResults\n }\n return {\n results: [],\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n },\n getNextPageParam: (lastPage, pages) => {\n if (lastPage.results.length > 0)
|
|
1
|
+
{"version":3,"file":"useGetUserChallenges.js","names":[],"sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Challenge,\n ChallengeWithProjectHeaderPagedResults,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetUserChallenges(\n userId: string,\n limit?: number,\n options?: Partial<\n UseQueryOptions<PaginatedResults<Challenge>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: () =>\n SynapseClient.getUserChallenges(accessToken, userId, 0, limit ?? 10),\n })\n}\n\nexport function useGetUserChallengesInfinite<\n TData = InfiniteData<ChallengeWithProjectHeaderPagedResults>,\n>(\n userId: string,\n options?: Partial<\n UseInfiniteQueryOptions<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n initialPageParam: undefined,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: async context => {\n const challenges = await SynapseClient.getUserChallenges(\n accessToken,\n userId,\n context.pageParam, // pass the context.pageParam for the new offset\n 10, // limit\n )\n // also look up the challenge project names (if there are challenges)\n if (challenges.results.length > 0) {\n const challengeProjectIds = Array.from(\n challenges.results,\n challenge => challenge.projectId,\n )\n const challengeProjects =\n await SynapseClient.getEntityHeadersByIds(challengeProjectIds)\n const challengeWithProjectHeaderPagedResults: ChallengeWithProjectHeaderPagedResults =\n {\n results: Array.from(challenges.results, (challenge, index) => {\n return {\n challenge,\n projectHeader: challengeProjects.results[index],\n }\n }),\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n return challengeWithProjectHeaderPagedResults\n }\n return {\n results: [],\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n },\n getNextPageParam: (lastPage, pages) => {\n if (lastPage.results.length > 0) return pages.length * 10 //set the new offset to (page * limit)\n else return undefined\n },\n })\n}\n"],"mappings":";;;;AAiBA,SAAgB,EACd,GACA,GACA,GAGA;CACA,IAAM,EAAE,gBAAa,kBAAe,EAAkB;CAEtD,OAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,0BAA0B,CAAM;EACrD,eACE,EAAc,kBAAkB,GAAa,GAAQ,GAAG,KAAS,EAAE;CACvE,CAAC;AACH;AAEA,SAAgB,EAGd,GACA,GASA;CACA,IAAM,EAAE,gBAAa,kBAAe,EAAkB;CACtD,OAAO,EAML;EACA,GAAG;EACH,kBAAkB,KAAA;EAClB,UAAU,EAAW,0BAA0B,CAAM;EACrD,SAAS,OAAM,MAAW;GACxB,IAAM,IAAa,MAAM,EAAc,kBACrC,GACA,GACA,EAAQ,WACR,EACF;GAEA,IAAI,EAAW,QAAQ,SAAS,GAAG;IACjC,IAAM,IAAsB,MAAM,KAChC,EAAW,UACX,MAAa,EAAU,SACzB,GACM,IACJ,MAAM,EAAc,sBAAsB,CAAmB;IAW/D,OAAO;KARH,SAAS,MAAM,KAAK,EAAW,UAAU,GAAW,OAC3C;MACL;MACA,eAAe,EAAkB,QAAQ;KAC3C,EACD;KACD,sBAAsB,EAAW;IAE9B;GACT;GACA,OAAO;IACL,SAAS,CAAC;IACV,sBAAsB,EAAW;GACnC;EACF;EACA,mBAAmB,GAAU,MAAU;GACrC,IAAI,EAAS,QAAQ,SAAS,GAAG,OAAO,EAAM,SAAS;EAEzD;CACF,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultTheme.d.ts","sourceRoot":"","sources":["../../src/theme/DefaultTheme.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DefaultTheme.d.ts","sourceRoot":"","sources":["../../src/theme/DefaultTheme.tsx"],"names":[],"mappings":"AAOA,OAAO,EAKL,YAAY,EACb,MAAM,eAAe,CAAA;AAUtB,eAAO,MAAM,sBAAsB,EAAE,YA2cpC,CAAA;AAED,eAAe,sBAAsB,CAAA"}
|
|
@@ -6,7 +6,10 @@ import i from "./typography/Link.js";
|
|
|
6
6
|
import { typographyOptions as a } from "./typography/Typography.js";
|
|
7
7
|
import { Fade as o, alpha as s, inputBaseClasses as c, lighten as l } from "@mui/material";
|
|
8
8
|
import { jsx as u } from "react/jsx-runtime";
|
|
9
|
-
import
|
|
9
|
+
import d from "@mui/icons-material/CheckCircleTwoTone";
|
|
10
|
+
import f from "@mui/icons-material/ErrorTwoTone";
|
|
11
|
+
import p from "@mui/icons-material/HighlightOffTwoTone";
|
|
12
|
+
import m from "@mui/icons-material/InfoTwoTone";
|
|
10
13
|
//#region src/theme/DefaultTheme.tsx
|
|
11
14
|
var h = "2px", g = o, _ = {
|
|
12
15
|
typography: a,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultTheme.js","names":[],"sources":["../../src/theme/DefaultTheme.tsx"],"sourcesContent":["import Checked from '@/assets/icons/Checkbox/Checked'\nimport Indeterminate from '@/assets/icons/Checkbox/Indeterminate'\nimport Unchecked from '@/assets/icons/Checkbox/Unchecked'\nimport {\n CheckCircleTwoTone,\n ErrorTwoTone,\n HighlightOffTwoTone,\n InfoTwoTone,\n} from '@mui/icons-material'\nimport {\n alpha,\n Fade,\n inputBaseClasses,\n lighten,\n ThemeOptions,\n} from '@mui/material'\nimport { palette } from './palette/Palettes'\nimport linkTheme from './typography/Link'\nimport { typographyOptions } from './typography/Typography'\n\nconst DIALOG_INNER_PADDING = '2px'\n\n// The default TransitionComponent, Grow, causes click event interception issues, especially in SWC's gwtbootstrap modals.\nconst TRANSITION_COMPONENT_OVERRIDE = Fade\n\nexport const defaultMuiThemeOptions: ThemeOptions = {\n typography: typographyOptions,\n palette: palette,\n components: {\n MuiAlert: {\n defaultProps: {\n square: true,\n iconMapping: {\n error: <HighlightOffTwoTone />,\n info: <InfoTwoTone />,\n success: <CheckCircleTwoTone />,\n warning: <ErrorTwoTone />,\n },\n },\n styleOverrides: {\n root: ({ ownerState, theme }) => ({\n alignItems: 'center',\n fontSize: '14px',\n borderLeft: `10px solid ${\n // The default severity is 'success'.\n theme.palette[ownerState.severity || 'success']['main']\n }`,\n color: theme.palette.text.primary,\n }),\n icon: ({ theme }) => ({\n marginRight: theme.spacing(3),\n }),\n action: ({ ownerState, theme }) => ({\n paddingRight: theme.spacing(2),\n ...(ownerState.onClose &&\n !ownerState.action && { color: theme.palette.grey[700] }),\n }),\n standardSuccess: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.success.light, 0.8),\n }),\n standardError: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.error.light, 0.8),\n }),\n standardWarning: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.warning.light, 0.8),\n }),\n standardInfo: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.info.light, 0.8),\n }),\n },\n },\n MuiAlertTitle: {\n styleOverrides: {\n root: ({ theme }) => ({\n color: theme.palette.text.primary,\n fontSize: '14px',\n fontWeight: 700,\n }),\n },\n },\n MuiLink: linkTheme,\n MuiButtonBase: {\n defaultProps: {\n disableRipple: true,\n },\n },\n MuiButton: {\n styleOverrides: {\n root: ({ ownerState }) => {\n let padding = '6px 12px'\n if (ownerState.size === 'small') {\n padding = '6px 8px'\n } else if (ownerState.size === 'large') {\n padding = '8px 16px'\n }\n return {\n fontWeight: 900,\n padding: padding,\n borderRadius: '3px',\n textTransform: 'var(--synapse-button-text-transform)' as any,\n '&:hover': {\n transition: '0.2s',\n },\n }\n },\n contained: ({ theme, ownerState }) => ({\n '&:hover, &:visited': {\n // Overrides a base style in bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary'].contrastText,\n },\n }),\n outlined: ({ theme, ownerState }) => ({\n '&:hover, &:visited': {\n // Overrides a base style in Bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary'].dark,\n },\n }),\n text: ({ theme, ownerState }) => ({\n '&:hover': {\n textDecoration: 'underline',\n textUnderlineOffset: '4px',\n textDecorationColor:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary']['main'],\n textDecorationThickness: '2px',\n },\n '&:hover, &:visited': {\n // Overrides a base style in Bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary']['main'],\n },\n }),\n },\n },\n MuiCard: {\n styleOverrides: {\n root: {\n border: '1px solid rgba(0, 0, 0, 0.05)',\n boxShadow:\n '0px 16px 16px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.05), 0px 1px 1px rgba(0, 0, 0, 0.05)',\n },\n },\n defaultProps: {\n square: true,\n },\n },\n MuiFormControlLabel: {\n styleOverrides: {\n root: ({ theme }) => ({\n // Remove negative margin\n marginLeft: '0px',\n // When rendering a checkbox/radio, add margin between the control and the label\n '& .MuiCheckbox-root, & .MuiRadio-root': {\n marginRight: theme.spacing(1),\n },\n }),\n },\n },\n MuiCheckbox: {\n defaultProps: {\n color: 'secondary',\n icon: <Unchecked />,\n checkedIcon: <Checked />,\n indeterminateIcon: <Indeterminate />,\n size: 'small',\n },\n styleOverrides: {\n root: ({ theme, ownerState: { color = 'primary' } }) => {\n const paletteColor =\n color === 'default' ? theme.palette.primary : theme.palette[color]\n const outlineColor =\n 100 in paletteColor ? paletteColor[100] : paletteColor.light\n const focusColor =\n 600 in paletteColor ? paletteColor[600] : paletteColor.dark\n\n return {\n padding: '0px',\n borderRadius: '0px',\n '&:not(.Mui-checked):not(.MuiCheckbox-indeterminate)': {\n color: theme.palette.grey[600],\n '&:not(.Mui-disabled):hover': {\n boxShadow: `0px 0px 2px 2px ${outlineColor}`,\n },\n '&.Mui-focusVisible': {\n color: paletteColor.main,\n },\n },\n '&:hover.Mui-checked, &.Mui-focusVisible.Mui-checked, &.Mui-focusVisible.MuiCheckbox-indeterminate, &:hover.MuiCheckbox-indeterminate':\n {\n 'svg > rect': {\n stroke: outlineColor,\n },\n 'svg > path': {\n transform: 'scale(0.95)',\n transformOrigin: 'center',\n },\n },\n '&:hover:active.Mui-checked, &:hover:active.MuiCheckbox-indeterminate':\n {\n 'svg > rect': {\n fill: focusColor,\n },\n },\n '&.Mui-disabled': {\n color: theme.palette.grey[400],\n },\n }\n },\n },\n },\n MuiRadio: {\n defaultProps: {\n color: 'secondary',\n size: 'small',\n },\n styleOverrides: {\n root: ({ theme, ownerState: { color = 'primary' } }) => {\n const paletteColor =\n color === 'default' ? theme.palette.primary : theme.palette[color]\n const unselectedOutlineColor = theme.palette.grey[400]\n const selectedOutlineColor =\n 100 in paletteColor ? paletteColor[100] : paletteColor.light\n const focusColor =\n 600 in paletteColor ? paletteColor[600] : paletteColor.dark\n\n return {\n padding: '0px',\n ':hover, &.Mui-focusVisible': {\n outline: `2px solid`,\n outlineOffset: '-1px',\n },\n '&:not(.Mui-checked)': {\n color: theme.palette.grey[600],\n '&:not(.Mui-disabled):hover': {\n outlineColor: unselectedOutlineColor,\n },\n '&.Mui-focusVisible': {\n color: paletteColor.main,\n outlineColor: selectedOutlineColor,\n },\n },\n '&:hover.Mui-checked, &.Mui-focusVisible.Mui-checked': {\n outlineColor: selectedOutlineColor,\n color: focusColor,\n },\n '&:hover:active.Mui-checked': {\n outlineColor: selectedOutlineColor,\n },\n '&.Mui-disabled': {\n color: theme.palette.grey[400],\n },\n }\n },\n },\n },\n MuiDialog: {\n styleOverrides: {\n root: ({ theme }) => ({\n '.MuiDialog-container > .MuiPaper-root': {\n borderRadius: '0px',\n padding: theme.spacing(5.5),\n alignSelf: 'flex-start',\n },\n }),\n },\n },\n MuiDialogTitle: {\n styleOverrides: {\n root: ({ theme }) => ({\n fontSize: '24px',\n fontWeight: 700,\n paddingLeft: '0px',\n paddingRight: '0px',\n paddingBottom: theme.spacing(3),\n }),\n },\n },\n MuiDialogContent: {\n defaultProps: {\n dividers: true,\n },\n styleOverrides: {\n root: ({ ownerState, theme }) => ({\n color: theme.palette.text.secondary,\n paddingTop: ownerState.dividers ? theme.spacing(3) : 0,\n paddingBottom: ownerState.dividers ? theme.spacing(3) : 0,\n // Hack - set add a small padding and offset with a negative margin so box-shadow effects on full width elements (like input fields) are shown\n paddingLeft: DIALOG_INNER_PADDING,\n paddingRight: DIALOG_INNER_PADDING,\n marginLeft: `-${DIALOG_INNER_PADDING}`,\n marginRight: `-${DIALOG_INNER_PADDING}`,\n // Add a filter on the `dividers` borders so that the borders are transparent on the edges based on the DIALOG_INNER_PADDING length\n borderImage: ownerState.dividers\n ? `linear-gradient(to right, transparent 0px, transparent ${DIALOG_INNER_PADDING}, ${theme.palette.grey[400]} ${DIALOG_INNER_PADDING}, ${theme.palette.grey[400]} calc(100% - ${DIALOG_INNER_PADDING}), transparent calc(100% - ${DIALOG_INNER_PADDING})) 1`\n : undefined,\n }),\n },\n },\n MuiDialogActions: {\n styleOverrides: {\n root: ({ theme }) => ({\n paddingLeft: '0px',\n paddingRight: '0px',\n paddingTop: theme.spacing(3),\n '& .MuiButton-root': {\n height: '36px',\n padding: '0px 16px',\n },\n }),\n },\n },\n MuiFormHelperText: {\n styleOverrides: {\n root: ({ theme }) => ({\n marginLeft: '0',\n '&.Mui-error': {\n color: theme.palette.error.main,\n },\n }),\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: ({ theme, ownerState }) => {\n const hasOutline = ownerState.error || ownerState.focused\n let outline = 'none'\n if (hasOutline) {\n if (ownerState.error) {\n outline = `1px solid ${theme.palette.error.main}`\n } else if (ownerState.color) {\n outline = `1px solid ${theme.palette[ownerState.color].main}`\n }\n }\n let backgroundColor = theme.palette.grey[200]\n if (ownerState.error) {\n backgroundColor = alpha(theme.palette.error.main, 0.1)\n }\n const formHelperTextColor =\n ownerState.color === 'warning'\n ? theme.palette[ownerState.color].main\n : undefined\n return {\n borderRadius: '3px',\n fontSize: '14px',\n position: 'relative',\n backgroundColor: backgroundColor,\n outline: outline,\n '&+.MuiFormHelperText-root': {\n color: formHelperTextColor,\n },\n '&.Mui-disabled': {\n backgroundColor: theme.palette.grey[100],\n },\n '&.Mui-focused': {\n boxShadow: `${alpha(\n theme.palette.primary.main,\n 0.25,\n )} 0 0 0 0.1rem`,\n },\n '& fieldset': {\n border: 'none',\n },\n }\n },\n input: ({ theme }) => ({\n padding: '14px 12px',\n }),\n multiline: {\n padding: '0px',\n },\n },\n },\n MuiInputLabel: {\n defaultProps: {\n shrink: true,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n fontWeight: 700,\n mb: '4px',\n fontSize: '14px',\n transform: 'none',\n '.MuiInputLabel-asterisk': {\n color: theme.palette.secondary.main,\n },\n }),\n },\n },\n MuiTextField: {\n styleOverrides: {\n root: ({ theme, ownerState }) => ({\n [`& .${inputBaseClasses.root}`]: {\n marginTop: ownerState.label && theme.spacing(3),\n },\n }),\n },\n },\n MuiMenu: {\n defaultProps: {\n slots: {\n transition: TRANSITION_COMPONENT_OVERRIDE,\n },\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: {\n height: '38px',\n paddingLeft: '12px',\n paddingRight: '12px',\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n fontWeight: 900,\n textTransform: 'capitalize',\n },\n },\n },\n MuiToggleButton: {\n styleOverrides: {\n root: {\n textTransform: 'var(--synapse-button-text-transform)' as any,\n },\n },\n },\n MuiTooltip: {\n defaultProps: {\n arrow: true,\n slots: {\n transition: TRANSITION_COMPONENT_OVERRIDE,\n },\n },\n styleOverrides: {\n arrow: ({ theme }) => ({\n color: theme.palette.common.black,\n }),\n tooltip: ({ theme }) => ({\n fontSize: '14px',\n borderRadius: '2px',\n backgroundColor: theme.palette.common.black,\n '& .MuiLink-root': {\n color: '#fff',\n },\n }),\n },\n },\n MuiTypography: {\n defaultProps: {\n variantMapping: {\n headline1: 'h1',\n headline2: 'h2',\n headline3: 'h3',\n body1: 'p',\n body1Italic: 'p',\n body2: 'p',\n breadcrumb1: 'span',\n breadcrumb2: 'span',\n smallText1: 'p',\n smallText2: 'p',\n smallLink: 'span',\n label: 'span',\n buttonLink: 'span',\n hintText: 'p',\n sectionTitle: 'p',\n subsectionHeader: 'p',\n dataFieldKey: 'p',\n },\n },\n },\n },\n styledBackground:\n \"url('https://s3.amazonaws.com/static.synapse.org/images/SynapseLoginPageBackground.svg')\",\n}\n\nexport default defaultMuiThemeOptions\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DefaultTheme.js","names":[],"sources":["../../src/theme/DefaultTheme.tsx"],"sourcesContent":["import Checked from '@/assets/icons/Checkbox/Checked'\nimport Indeterminate from '@/assets/icons/Checkbox/Indeterminate'\nimport Unchecked from '@/assets/icons/Checkbox/Unchecked'\nimport CheckCircleTwoTone from '@mui/icons-material/CheckCircleTwoTone'\nimport ErrorTwoTone from '@mui/icons-material/ErrorTwoTone'\nimport HighlightOffTwoTone from '@mui/icons-material/HighlightOffTwoTone'\nimport InfoTwoTone from '@mui/icons-material/InfoTwoTone'\nimport {\n alpha,\n Fade,\n inputBaseClasses,\n lighten,\n ThemeOptions,\n} from '@mui/material'\nimport { palette } from './palette/Palettes'\nimport linkTheme from './typography/Link'\nimport { typographyOptions } from './typography/Typography'\n\nconst DIALOG_INNER_PADDING = '2px'\n\n// The default TransitionComponent, Grow, causes click event interception issues, especially in SWC's gwtbootstrap modals.\nconst TRANSITION_COMPONENT_OVERRIDE = Fade\n\nexport const defaultMuiThemeOptions: ThemeOptions = {\n typography: typographyOptions,\n palette: palette,\n components: {\n MuiAlert: {\n defaultProps: {\n square: true,\n iconMapping: {\n error: <HighlightOffTwoTone />,\n info: <InfoTwoTone />,\n success: <CheckCircleTwoTone />,\n warning: <ErrorTwoTone />,\n },\n },\n styleOverrides: {\n root: ({ ownerState, theme }) => ({\n alignItems: 'center',\n fontSize: '14px',\n borderLeft: `10px solid ${\n // The default severity is 'success'.\n theme.palette[ownerState.severity || 'success']['main']\n }`,\n color: theme.palette.text.primary,\n }),\n icon: ({ theme }) => ({\n marginRight: theme.spacing(3),\n }),\n action: ({ ownerState, theme }) => ({\n paddingRight: theme.spacing(2),\n ...(ownerState.onClose &&\n !ownerState.action && { color: theme.palette.grey[700] }),\n }),\n standardSuccess: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.success.light, 0.8),\n }),\n standardError: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.error.light, 0.8),\n }),\n standardWarning: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.warning.light, 0.8),\n }),\n standardInfo: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.info.light, 0.8),\n }),\n },\n },\n MuiAlertTitle: {\n styleOverrides: {\n root: ({ theme }) => ({\n color: theme.palette.text.primary,\n fontSize: '14px',\n fontWeight: 700,\n }),\n },\n },\n MuiLink: linkTheme,\n MuiButtonBase: {\n defaultProps: {\n disableRipple: true,\n },\n },\n MuiButton: {\n styleOverrides: {\n root: ({ ownerState }) => {\n let padding = '6px 12px'\n if (ownerState.size === 'small') {\n padding = '6px 8px'\n } else if (ownerState.size === 'large') {\n padding = '8px 16px'\n }\n return {\n fontWeight: 900,\n padding: padding,\n borderRadius: '3px',\n textTransform: 'var(--synapse-button-text-transform)' as any,\n '&:hover': {\n transition: '0.2s',\n },\n }\n },\n contained: ({ theme, ownerState }) => ({\n '&:hover, &:visited': {\n // Overrides a base style in bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary'].contrastText,\n },\n }),\n outlined: ({ theme, ownerState }) => ({\n '&:hover, &:visited': {\n // Overrides a base style in Bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary'].dark,\n },\n }),\n text: ({ theme, ownerState }) => ({\n '&:hover': {\n textDecoration: 'underline',\n textUnderlineOffset: '4px',\n textDecorationColor:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary']['main'],\n textDecorationThickness: '2px',\n },\n '&:hover, &:visited': {\n // Overrides a base style in Bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary']['main'],\n },\n }),\n },\n },\n MuiCard: {\n styleOverrides: {\n root: {\n border: '1px solid rgba(0, 0, 0, 0.05)',\n boxShadow:\n '0px 16px 16px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.05), 0px 1px 1px rgba(0, 0, 0, 0.05)',\n },\n },\n defaultProps: {\n square: true,\n },\n },\n MuiFormControlLabel: {\n styleOverrides: {\n root: ({ theme }) => ({\n // Remove negative margin\n marginLeft: '0px',\n // When rendering a checkbox/radio, add margin between the control and the label\n '& .MuiCheckbox-root, & .MuiRadio-root': {\n marginRight: theme.spacing(1),\n },\n }),\n },\n },\n MuiCheckbox: {\n defaultProps: {\n color: 'secondary',\n icon: <Unchecked />,\n checkedIcon: <Checked />,\n indeterminateIcon: <Indeterminate />,\n size: 'small',\n },\n styleOverrides: {\n root: ({ theme, ownerState: { color = 'primary' } }) => {\n const paletteColor =\n color === 'default' ? theme.palette.primary : theme.palette[color]\n const outlineColor =\n 100 in paletteColor ? paletteColor[100] : paletteColor.light\n const focusColor =\n 600 in paletteColor ? paletteColor[600] : paletteColor.dark\n\n return {\n padding: '0px',\n borderRadius: '0px',\n '&:not(.Mui-checked):not(.MuiCheckbox-indeterminate)': {\n color: theme.palette.grey[600],\n '&:not(.Mui-disabled):hover': {\n boxShadow: `0px 0px 2px 2px ${outlineColor}`,\n },\n '&.Mui-focusVisible': {\n color: paletteColor.main,\n },\n },\n '&:hover.Mui-checked, &.Mui-focusVisible.Mui-checked, &.Mui-focusVisible.MuiCheckbox-indeterminate, &:hover.MuiCheckbox-indeterminate':\n {\n 'svg > rect': {\n stroke: outlineColor,\n },\n 'svg > path': {\n transform: 'scale(0.95)',\n transformOrigin: 'center',\n },\n },\n '&:hover:active.Mui-checked, &:hover:active.MuiCheckbox-indeterminate':\n {\n 'svg > rect': {\n fill: focusColor,\n },\n },\n '&.Mui-disabled': {\n color: theme.palette.grey[400],\n },\n }\n },\n },\n },\n MuiRadio: {\n defaultProps: {\n color: 'secondary',\n size: 'small',\n },\n styleOverrides: {\n root: ({ theme, ownerState: { color = 'primary' } }) => {\n const paletteColor =\n color === 'default' ? theme.palette.primary : theme.palette[color]\n const unselectedOutlineColor = theme.palette.grey[400]\n const selectedOutlineColor =\n 100 in paletteColor ? paletteColor[100] : paletteColor.light\n const focusColor =\n 600 in paletteColor ? paletteColor[600] : paletteColor.dark\n\n return {\n padding: '0px',\n ':hover, &.Mui-focusVisible': {\n outline: `2px solid`,\n outlineOffset: '-1px',\n },\n '&:not(.Mui-checked)': {\n color: theme.palette.grey[600],\n '&:not(.Mui-disabled):hover': {\n outlineColor: unselectedOutlineColor,\n },\n '&.Mui-focusVisible': {\n color: paletteColor.main,\n outlineColor: selectedOutlineColor,\n },\n },\n '&:hover.Mui-checked, &.Mui-focusVisible.Mui-checked': {\n outlineColor: selectedOutlineColor,\n color: focusColor,\n },\n '&:hover:active.Mui-checked': {\n outlineColor: selectedOutlineColor,\n },\n '&.Mui-disabled': {\n color: theme.palette.grey[400],\n },\n }\n },\n },\n },\n MuiDialog: {\n styleOverrides: {\n root: ({ theme }) => ({\n '.MuiDialog-container > .MuiPaper-root': {\n borderRadius: '0px',\n padding: theme.spacing(5.5),\n alignSelf: 'flex-start',\n },\n }),\n },\n },\n MuiDialogTitle: {\n styleOverrides: {\n root: ({ theme }) => ({\n fontSize: '24px',\n fontWeight: 700,\n paddingLeft: '0px',\n paddingRight: '0px',\n paddingBottom: theme.spacing(3),\n }),\n },\n },\n MuiDialogContent: {\n defaultProps: {\n dividers: true,\n },\n styleOverrides: {\n root: ({ ownerState, theme }) => ({\n color: theme.palette.text.secondary,\n paddingTop: ownerState.dividers ? theme.spacing(3) : 0,\n paddingBottom: ownerState.dividers ? theme.spacing(3) : 0,\n // Hack - set add a small padding and offset with a negative margin so box-shadow effects on full width elements (like input fields) are shown\n paddingLeft: DIALOG_INNER_PADDING,\n paddingRight: DIALOG_INNER_PADDING,\n marginLeft: `-${DIALOG_INNER_PADDING}`,\n marginRight: `-${DIALOG_INNER_PADDING}`,\n // Add a filter on the `dividers` borders so that the borders are transparent on the edges based on the DIALOG_INNER_PADDING length\n borderImage: ownerState.dividers\n ? `linear-gradient(to right, transparent 0px, transparent ${DIALOG_INNER_PADDING}, ${theme.palette.grey[400]} ${DIALOG_INNER_PADDING}, ${theme.palette.grey[400]} calc(100% - ${DIALOG_INNER_PADDING}), transparent calc(100% - ${DIALOG_INNER_PADDING})) 1`\n : undefined,\n }),\n },\n },\n MuiDialogActions: {\n styleOverrides: {\n root: ({ theme }) => ({\n paddingLeft: '0px',\n paddingRight: '0px',\n paddingTop: theme.spacing(3),\n '& .MuiButton-root': {\n height: '36px',\n padding: '0px 16px',\n },\n }),\n },\n },\n MuiFormHelperText: {\n styleOverrides: {\n root: ({ theme }) => ({\n marginLeft: '0',\n '&.Mui-error': {\n color: theme.palette.error.main,\n },\n }),\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: ({ theme, ownerState }) => {\n const hasOutline = ownerState.error || ownerState.focused\n let outline = 'none'\n if (hasOutline) {\n if (ownerState.error) {\n outline = `1px solid ${theme.palette.error.main}`\n } else if (ownerState.color) {\n outline = `1px solid ${theme.palette[ownerState.color].main}`\n }\n }\n let backgroundColor = theme.palette.grey[200]\n if (ownerState.error) {\n backgroundColor = alpha(theme.palette.error.main, 0.1)\n }\n const formHelperTextColor =\n ownerState.color === 'warning'\n ? theme.palette[ownerState.color].main\n : undefined\n return {\n borderRadius: '3px',\n fontSize: '14px',\n position: 'relative',\n backgroundColor: backgroundColor,\n outline: outline,\n '&+.MuiFormHelperText-root': {\n color: formHelperTextColor,\n },\n '&.Mui-disabled': {\n backgroundColor: theme.palette.grey[100],\n },\n '&.Mui-focused': {\n boxShadow: `${alpha(\n theme.palette.primary.main,\n 0.25,\n )} 0 0 0 0.1rem`,\n },\n '& fieldset': {\n border: 'none',\n },\n }\n },\n input: ({ theme }) => ({\n padding: '14px 12px',\n }),\n multiline: {\n padding: '0px',\n },\n },\n },\n MuiInputLabel: {\n defaultProps: {\n shrink: true,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n fontWeight: 700,\n mb: '4px',\n fontSize: '14px',\n transform: 'none',\n '.MuiInputLabel-asterisk': {\n color: theme.palette.secondary.main,\n },\n }),\n },\n },\n MuiTextField: {\n styleOverrides: {\n root: ({ theme, ownerState }) => ({\n [`& .${inputBaseClasses.root}`]: {\n marginTop: ownerState.label && theme.spacing(3),\n },\n }),\n },\n },\n MuiMenu: {\n defaultProps: {\n slots: {\n transition: TRANSITION_COMPONENT_OVERRIDE,\n },\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: {\n height: '38px',\n paddingLeft: '12px',\n paddingRight: '12px',\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n fontWeight: 900,\n textTransform: 'capitalize',\n },\n },\n },\n MuiToggleButton: {\n styleOverrides: {\n root: {\n textTransform: 'var(--synapse-button-text-transform)' as any,\n },\n },\n },\n MuiTooltip: {\n defaultProps: {\n arrow: true,\n slots: {\n transition: TRANSITION_COMPONENT_OVERRIDE,\n },\n },\n styleOverrides: {\n arrow: ({ theme }) => ({\n color: theme.palette.common.black,\n }),\n tooltip: ({ theme }) => ({\n fontSize: '14px',\n borderRadius: '2px',\n backgroundColor: theme.palette.common.black,\n '& .MuiLink-root': {\n color: '#fff',\n },\n }),\n },\n },\n MuiTypography: {\n defaultProps: {\n variantMapping: {\n headline1: 'h1',\n headline2: 'h2',\n headline3: 'h3',\n body1: 'p',\n body1Italic: 'p',\n body2: 'p',\n breadcrumb1: 'span',\n breadcrumb2: 'span',\n smallText1: 'p',\n smallText2: 'p',\n smallLink: 'span',\n label: 'span',\n buttonLink: 'span',\n hintText: 'p',\n sectionTitle: 'p',\n subsectionHeader: 'p',\n dataFieldKey: 'p',\n },\n },\n },\n },\n styledBackground:\n \"url('https://s3.amazonaws.com/static.synapse.org/images/SynapseLoginPageBackground.svg')\",\n}\n\nexport default defaultMuiThemeOptions\n"],"mappings":"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"}
|