@spotify/backstage-plugin-soundcheck 0.16.0 → 0.16.2
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/CHANGELOG.md +67 -0
- package/dist/alpha/entity-content.esm.js +1 -1
- package/dist/alpha/pages.esm.js +1 -1
- package/dist/alpha.d.ts +62 -47
- package/dist/api.esm.js +1 -1
- package/dist/components/AlertPanel/AlertPanel.esm.js +1 -1
- package/dist/components/AreaChart/AreaChart.esm.js +1 -1
- package/dist/components/AreaChart/ChartTooltip.esm.js +1 -1
- package/dist/components/AreaChart/Legend.esm.js +1 -1
- package/dist/components/AreaChart/LegendItem.esm.js +1 -1
- package/dist/components/Badges/BaseBadge.esm.js +1 -1
- package/dist/components/Badges/CampaignBadge.esm.js +1 -1
- package/dist/components/Badges/CertificationBadge.esm.js +1 -1
- package/dist/components/Badges/LevelBadge.esm.js +1 -1
- package/dist/components/Badges/NoLevelBadge.esm.js +2 -2
- package/dist/components/Badges/PlaylistBadge.esm.js +1 -1
- package/dist/components/Badges/StatusBadge.esm.js +1 -1
- package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
- package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
- package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDetailsStep.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDraftField.esm.js +2 -0
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignScheduleField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignSupportChannelField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/EndDateChips.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignMilestonesStep.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignTrackStepNew.esm.js +2 -0
- package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
- package/dist/components/CampaignForm/hooks/utils.esm.js +1 -1
- package/dist/components/CampaignForm/utils/campaignFormUtils.esm.js +1 -1
- package/dist/components/CampaignForm/utils/validation.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/DaysRemainingTile.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignEmptyState.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/CampaignMetadata.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/CampaignsOverviewSkeleton.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
- package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
- package/dist/components/CategoryBar/CategoryBar.esm.js +1 -1
- package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationSummary.esm.js +1 -1
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CertificationSidebar/CheckResultInputPopup.esm.js +2 -0
- package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
- package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +2 -0
- package/dist/components/CertificationSidebar/LevelSummary.esm.js +1 -1
- package/dist/components/CertificationSidebar/StatusDetails.esm.js +1 -1
- package/dist/components/CertificationSidebar/skeletons/CertificationSidebarSkeleton.esm.js +1 -1
- package/dist/components/CertificationSidebar/skeletons/CertificationSummarySkeleton.esm.js +1 -1
- package/dist/components/CertificationSidebar/skeletons/CheckSkeleton.esm.js +1 -1
- package/dist/components/CertificationSidebar/skeletons/LevelSummarySkeleton.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistComponent.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistSummary.esm.js +1 -1
- package/dist/components/CertificationsPage/PlaylistCertificationTab.esm.js +1 -1
- package/dist/components/CertificationsPage/skeletons/CertificationTabSkeleton.esm.js +1 -1
- package/dist/components/CertificationsPage/skeletons/CertificationTabsSkeleton.esm.js +1 -1
- package/dist/components/Charts/BarChart/BarChart.esm.js +1 -1
- package/dist/components/Charts/BarChart/BarChartPlaceholder.esm.js +1 -1
- package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
- package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
- package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
- package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
- package/dist/components/Charts/LineChart/LineChart.esm.js +1 -1
- package/dist/components/Charts/LineChart/LineChartPlaceholder.esm.js +1 -1
- package/dist/components/Charts/LineChart/PassRateHistoryLineChart.esm.js +1 -1
- package/dist/components/Charts/LineChart/TableLineChart.esm.js +1 -1
- package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
- package/dist/components/Charts/LoadingChart.esm.js +2 -0
- package/dist/components/Charts/chartUtils.esm.js +1 -1
- package/dist/components/CheckCard/CheckCard.esm.js +1 -1
- package/dist/components/CheckCard/CheckHistoryChart.esm.js +1 -1
- package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
- package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
- package/dist/components/CheckDetails/CheckResultDetails.esm.js +1 -1
- package/dist/components/CheckDetails/CollapseRow.esm.js +1 -1
- package/dist/components/CheckDetails/FactTable.esm.js +1 -1
- package/dist/components/CheckDetails/FixMeDialog.esm.js +1 -1
- package/dist/components/CheckDetails/JustificationDetails.esm.js +2 -0
- package/dist/components/CheckDetails/OngoingTaskComponent.esm.js +1 -1
- package/dist/components/CheckDetails/ResolvedValueTable.esm.js +1 -1
- package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
- package/dist/components/CheckDetails/ReviewStateComponent.esm.js +1 -1
- package/dist/components/CheckDetails/SelectedValueContext.esm.js +1 -1
- package/dist/components/CheckDetails/skeletons/CheckDetailsSkeleton.esm.js +1 -1
- package/dist/components/CheckDryRun/CheckDryRun.esm.js +1 -1
- package/dist/components/CheckDryRun/CheckDryRunContext.esm.js +1 -1
- package/dist/components/CheckDryRun/CheckDryRunDetails.esm.js +1 -1
- package/dist/components/CheckDryRun/CheckDryRunDialog.esm.js +1 -1
- package/dist/components/CheckDryRun/CheckDryRunDialogButton.esm.js +1 -1
- package/dist/components/CheckForm/CheckForm.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckDescriptionInput/CheckDescriptionInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckTypeInput/CheckTypeInput.esm.js +2 -0
- package/dist/components/CheckForm/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/FactValueDisplay.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ValueListContext.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +2 -0
- package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckReviewStep.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
- package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
- package/dist/components/CheckForm/utils/checkFormUtils.esm.js +2 -2
- package/dist/components/CheckForm/utils/validation.esm.js +1 -1
- package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
- package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +1 -1
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
- package/dist/components/CheckSelection/CheckPreview.esm.js +2 -0
- package/dist/components/CheckSelection/CheckPreviewContext.esm.js +2 -0
- package/dist/components/CheckSelection/CheckSelection.esm.js +2 -0
- package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +2 -0
- package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/TemplateCategory.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
- package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
- package/dist/components/ChecksPage/skeletons/ChecksOverviewSkeleton.esm.js +1 -1
- package/dist/components/ChecksTab/ChecksTab.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfDaysComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfWorkItemsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/validation.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/BigQuery/validation.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/CollectorSchedulingOptions.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/DataRegistry/utils.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Github/DependabotAlertsFactDetails.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Github/types.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/validation.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpResponseComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpRetriesComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/RequestFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/validation.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/validation.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Kubernetes/validation.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/IncidentsFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/StatusesComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/validation.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/ExistsFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/FactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/JsonFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/RegexFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/validation.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/IssuesFactDetailsInput.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SonarQube/MeasuresFactDetailsInput.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/MetricsInput.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/validation.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorListSkeleton.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
- package/dist/components/EmptyState/EmptyState.esm.js +1 -1
- package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +2 -0
- package/dist/components/EntityChip/EntityChip.esm.js +1 -1
- package/dist/components/EntityContent/EntityContent.esm.js +1 -1
- package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/EntitySoundcheckCard.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/skeletons/CardSkeleton.esm.js +1 -1
- package/dist/components/EntitySoundcheckContent.esm.js +1 -1
- package/dist/components/Expand/Expand.esm.js +1 -1
- package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorerContext.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorerDialog.esm.js +1 -1
- package/dist/components/FadeIn/FadeIn.esm.js +1 -1
- package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
- package/dist/components/Filter/FilterComponent.esm.js +1 -1
- package/dist/components/Filter/FilterKeyValueInput.esm.js +1 -1
- package/dist/components/Filter/FilterPreviewTable/EntityTableColumns.esm.js +1 -1
- package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
- package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
- package/dist/components/FilterSidebar/FilterSidebar.esm.js +2 -0
- package/dist/components/FilterSidebar/StateFilter.esm.js +2 -0
- package/dist/components/FooterButtons/FooterButtons.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +2 -0
- package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
- package/dist/components/FormControlledTextField/FormControlledTextField.esm.js +1 -1
- package/dist/components/FormFieldLabel/FormFieldLabel.esm.js +1 -1
- package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
- package/dist/components/FormMarkdownInput/FormMarkdownInput.esm.js +1 -1
- package/dist/components/FormStepper/FormStepper.esm.js +1 -1
- package/dist/components/FormTextInput/FormTextInput.esm.js +1 -1
- package/dist/components/FormattedPreview/FormattedPreview.esm.js +2 -2
- package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
- package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
- package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
- package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
- package/dist/components/LevelsTable/CheckRowContent.esm.js +2 -0
- package/dist/components/LevelsTable/LevelsTable.esm.js +2 -0
- package/dist/components/ListboxVirtualized/ListboxVirtualized.esm.js +1 -1
- package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
- package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
- package/dist/components/NoBorderButton/NoBorderButton.esm.js +1 -1
- package/dist/components/OrgHealth/OrgHealthPage.esm.js +2 -0
- package/dist/components/OverviewChartCard/OverviewChartCard.esm.js +1 -1
- package/dist/components/OverviewPage/FixedGroupOverviewPage.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageHeader.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/CheckCell.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/CheckCellTooltip.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/CheckLabelCell.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/CheckNameCell.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/EntityRefCell.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/TrackBadgeCell.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/TrackCheckIndicator.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/TrackLevelHeaderCell.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/TrackTitleCell.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/cellRenderer.esm.js +1 -1
- package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
- package/dist/components/OverviewTable/OverviewTableContent.esm.js +1 -1
- package/dist/components/OverviewTable/OverviewTableSkeleton.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTableHeader.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTableRow.esm.js +1 -1
- package/dist/components/PageWarningMessage/PageWarningMessage.esm.js +1 -1
- package/dist/components/Pagination/CursorPagination.esm.js +1 -1
- package/dist/components/Pagination/Pagination.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
- package/dist/components/PassRateTable/NewPassRateTable.esm.js +1 -1
- package/dist/components/PassRateTable/PassRateTable.esm.js +2 -2
- package/dist/components/QuickstartPage/HowDoIListItem.esm.js +1 -1
- package/dist/components/QuickstartPage/QuickStartChecksCard.esm.js +1 -1
- package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +1 -1
- package/dist/components/QuickstartPage/QuickstartCollectorConfigurationsCard.esm.js +1 -1
- package/dist/components/QuickstartPage/QuickstartPage.esm.js +1 -1
- package/dist/components/QuickstartPage/QuickstartTracksCard.esm.js +1 -1
- package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +6 -6
- package/dist/components/QuickstartPage/WelcomeModal.esm.js +1 -1
- package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
- package/dist/components/RelativeTime/RelativeTime.esm.js +1 -1
- package/dist/components/RichTooltip/RichTooltip.esm.js +1 -1
- package/dist/components/Router.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/RuleResult/BranchResultComponent.esm.js +1 -1
- package/dist/components/RuleResult/ConditionResultComponent.esm.js +1 -1
- package/dist/components/RuleResult/RuleResultComponent.esm.js +1 -1
- package/dist/components/SearchBar/SearchBar.esm.js +1 -1
- package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
- package/dist/components/SoundcheckDialog/SoundcheckDialog.esm.js +1 -1
- package/dist/components/SoundcheckHeader/Breadcrumbs.esm.js +1 -1
- package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
- package/dist/components/SoundcheckHeader/SoundcheckHeaderContext.esm.js +1 -1
- package/dist/components/SoundcheckHeader/headerUtil.esm.js +1 -1
- package/dist/components/SoundcheckMarkdownContent/ComponentRenders.esm.js +2 -0
- package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js +2 -0
- package/dist/components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js +1 -1
- package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
- package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
- package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FiltersHeader.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
- package/dist/components/TechHealth/Filters/NumberOfDaysFilter.esm.js +1 -1
- package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
- package/dist/components/TechHealth/Loading/Emoji.esm.js +1 -1
- package/dist/components/TechHealth/Loading/EmojiFountain.esm.js +1 -1
- package/dist/components/TechHealth/Loading/Loading.esm.js +1 -1
- package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
- package/dist/components/TechHealth/TechHealth.esm.js +1 -1
- package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
- package/dist/components/TechHealthSummary/TechHealthSummary.esm.js +1 -1
- package/dist/components/TechHealthTabs/ActionColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/MostRecentColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
- package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
- package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +2 -0
- package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
- package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
- package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js +2 -0
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDraftInput/TrackDraftInput.esm.js +2 -0
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
- package/dist/components/TrackForm/TrackForm.esm.js +1 -1
- package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
- package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
- package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
- package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TrackPage/TrackProgressCard.esm.js +1 -1
- package/dist/components/TrackPage/TrackStatus.esm.js +2 -0
- package/dist/components/TrackPage/TrackStatusBar.esm.js +2 -0
- package/dist/components/TrackPage/TrackStatusTable.esm.js +2 -0
- package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TracksOverviewSkeleton.esm.js +1 -1
- package/dist/components/TracksPage/TracksPage.esm.js +1 -1
- package/dist/components/TracksTab/TracksTab.esm.js +1 -1
- package/dist/contexts/GenericFormContext.esm.js +1 -1
- package/dist/contexts/UserProvider.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +152 -65
- package/dist/hooks/aggregations/useCertificationStatus.esm.js +1 -1
- package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
- package/dist/hooks/aggregations/useCheckStatuses.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
- package/dist/hooks/certifications/useAllCertifications.esm.js +1 -1
- package/dist/hooks/certifications/useCertificationDetails.esm.js +1 -1
- package/dist/hooks/certifications/useCertificationDetailsForTrack.esm.js +1 -1
- package/dist/hooks/checks/useCheck.esm.js +2 -0
- package/dist/hooks/checks/useDeleteCheck.esm.js +1 -1
- package/dist/hooks/checks/useGetChecks.esm.js +1 -1
- package/dist/hooks/checks/useSetManualResult.esm.js +2 -0
- package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
- package/dist/hooks/exemptions/useDeleteExemption.esm.js +2 -0
- package/dist/hooks/exemptions/useExemptCheckIds.esm.js +2 -0
- package/dist/hooks/exemptions/useGetExemption.esm.js +2 -0
- package/dist/hooks/exemptions/useSetEntityExempt.esm.js +2 -0
- package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
- package/dist/hooks/tracks/useTrack.esm.js +2 -0
- package/dist/hooks/tracks/useUpdateTrack.esm.js +1 -1
- package/dist/hooks/useConfirmationModal.esm.js +1 -1
- package/dist/hooks/useSoundcheckAlert.esm.js +1 -1
- package/dist/images/data-registry-blk.svg +36 -0
- package/dist/images/data-registry-wht.svg +36 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.esm.js +1 -1
- package/dist/routes.esm.js +1 -1
- package/dist/utils/colors.esm.js +2 -0
- package/dist/utils/export.esm.js +3 -3
- package/dist/utils/formatters.esm.js +2 -0
- package/dist/utils/validation.esm.js +1 -1
- package/package.json +30 -26
- package/dist/components/Badges/badge.esm.js +0 -2
- package/dist/components/CampaignForm/Steps/CampaignTrackStep.esm.js +0 -2
- package/dist/components/CheckDetails/ExemptionDetails.esm.js +0 -2
- package/dist/components/CheckDryRun/checkDryRunUtils.esm.js +0 -2
- package/dist/components/CheckPage/CheckStatusBar.esm.js +0 -2
- package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +0 -2
- package/dist/components/CheckPage/StatusRow.esm.js +0 -2
- package/dist/components/ChecksErrors/ChecksErrors.esm.js +0 -2
- package/dist/components/ContextMenu/ContextMenu.esm.js +0 -2
- package/dist/components/DraggableChip/DraggableChip.esm.js +0 -2
- package/dist/components/DraggableChip/chipStyles.esm.js +0 -2
- package/dist/components/DroppableInput/DroppableInput.esm.js +0 -2
- package/dist/components/LevelCard/LevelCard.esm.js +0 -2
- package/dist/components/LevelCard/LevelTooltip.esm.js +0 -2
- package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +0 -2
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +0 -2
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +0 -2
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsStep.esm.js +0 -2
- package/dist/components/TrackPage/TrackLevelsChart.esm.js +0 -2
- package/dist/hooks/useContextMenu.esm.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as s,jsx as t}from"react/jsx-runtime";import{makeStyles as i,Grid as r}from"@material-ui/core";import{useFormContext as p}from"react-hook-form";import{FormControlledTextField as l}from"../../../FormControlledTextField/FormControlledTextField.esm.js";import{FormFieldLabel as n}from"../../../FormFieldLabel/FormFieldLabel.esm.js";const m=i(o=>({root:{paddingTop:o.spacing(1)},textInput:{marginTop:0,width:500},helperText:{marginLeft:0}})),u=({name:o,disabled:c})=>{const e=m(),{control:a}=p();return s(r,{container:!0,spacing:1,direction:"column",className:e.root,children:[s(r,{item:!0,children:[t(n,{title:"Fact Name"}),t(l,{control:a,placeholder:"Input a unique fact name",name:`${o}.factName`,className:e.textInput,helperTextClassName:e.helperText,disabled:c})]}),s(r,{item:!0,children:[t(n,{title:"Group",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/kubernetes#custom-resources"}),t(l,{control:a,placeholder:"Custom resource api group",name:`${o}.customResource.group`,className:e.textInput,helperTextClassName:e.helperText,disabled:c})]}),s(r,{item:!0,children:[t(n,{title:"Api Version",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/kubernetes#custom-resources"}),t(l,{control:a,placeholder:"Custom resource api version",name:`${o}.customResource.apiVersion`,className:e.textInput,helperTextClassName:e.helperText,disabled:c})]}),s(r,{item:!0,children:[t(n,{title:"Plural",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/kubernetes#custom-resources"}),t(l,{control:a,placeholder:"Custom resource plural",name:`${o}.customResource.plural`,className:e.textInput,helperTextClassName:e.helperText,disabled:c})]})]})};export{u as KubernetesFactDetails};
|
|
2
2
|
//# sourceMappingURL=KubernetesFactDetails.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{validFactNameRegex as l,invalidFactNameErrorMessage as f}from"@spotify/backstage-plugin-soundcheck-common";import{z as e}from"zod";import{FIELD_IS_REQUIRED_MSG as p}from"../../../../utils/validation.esm.js";import{BaseCollectorSchema as u,CollectorOptionSchema as t}from"../Common/CollectorOption.esm.js";const i="Fact name is not unique",m="Max 100 characters",d=u.extend({enabled:e.boolean(),factDetails:e.strictObject({factName:e.string().min(1,p).max(100,m).regex(l,f),customResource:e.strictObject({group:e.string(),apiVersion:e.string(),plural:e.string()})})}).strict(),g=e.strictObject({enabled:e.boolean(),collectors:e.array(d).superRefine((c,n)=>{const o=c.map(s=>s.factDetails.factName),r=o.filter((s,a)=>o.indexOf(s)!==a);r.length&&c.forEach((s,a)=>{r.includes(s.factDetails.factName)&&n.addIssue({code:e.ZodIssueCode.custom,message:i,path:[a,"factDetails","factName"]})})})}),_=e.strictObject({deployments:t,hpas:t,ingresses:t,podDisruptionBudgets:t,pods:t,services:t,statefulSets:t,customResources:g});export{i as FACT_NAME_IS_NOT_UNIQUE_MSG,m as MAX_100_CHARACTERS_MSG,_ as customResourceFormSchema};
|
|
2
2
|
//# sourceMappingURL=validation.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as m,Fragment as w,jsx as o}from"react/jsx-runtime";import{makeStyles as b,Paper as S,Divider as s}from"@material-ui/core";import{useForm as N,FormProvider as y}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as R}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as v}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as B}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as F}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as E,confirmationModalContent as M}from"../Common/utils.esm.js";import{mapConfigToNewRelicCollectorConfig as T,defaultNewRelicConfig as j,mapNewRelicCollectorConfigToConfig as k}from"./utils.esm.js";const H=b(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)},form:{marginBottom:e.spacing(2)}})),A=({disabled:e,selectedCollector:i})=>{const a=N({defaultValues:i?T(i.config):j(),mode:"onChange"}),{formState:{errors:t},handleSubmit:n}=a,c=H(),p=!!t.entity||!!t.entitySearch||!!t.policiesSearch,{mutateAsync:d}=B(),[f,g]=v(F),{showModal:u}=R(),l=async C=>{if(!await u(M(i)))return;const h=k(C);await d({collectorId:i.id,config:h})&&g()};return P(E(i)),m(w,{children:[o(S,{className:c.form,children:o(y,{...a,children:m("form",{onSubmit:n(l),children:[o(r,{name:"entity",label:"Entity",description:"Collects details about New Relic entity with a specific id.",disabled:e}),o(s,{}),o(r,{name:"entitySearch",label:"Entity Search",description:"Collects details about New Relic entities with a specific tag.",disabled:e}),o(s,{}),o(r,{name:"policiesSearch",label:"Policies Search",description:"Collects details about New Relic policies for a specific account.",disabled:e})]})})}),o("div",{className:c.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(l),disableSave:p})})]})};export{A as NewRelicConfigurator};
|
|
2
2
|
//# sourceMappingURL=NewRelicConfigurator.esm.js.map
|
package/dist/components/CollectorPage/Configurators/PagerDuty/IncidentsFactDetailsComponent.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as m,jsx as e}from"react/jsx-runtime";import{makeStyles as p,Typography as d,TextField as c}from"@material-ui/core";import{useFormContext as x,Controller as i}from"react-hook-form";import{StatusesComponent as f}from"./StatusesComponent.esm.js";import{PAGERDUTY_COLLECTOR_FIELDS as h}from"./utils.esm.js";const T=p(t=>({root:{paddingTop:t.spacing(1)},textInput:{marginTop:0,width:"255px"},helperText:{marginLeft:0}})),u=({name:t,disabled:l})=>{const a=T(),{control:s}=x(),{factName:n}=h.factDetails;return m("div",{className:a.root,children:[e(d,{variant:"subtitle2",children:n.name}),e(i,{name:`${t}.factName`,control:s,render:({field:r,fieldState:{error:o}})=>e(c,{...r,type:"text",variant:"outlined",margin:"dense",placeholder:n.placeholder,className:a.textInput,disabled:l,error:!!o,helperText:o?.message??n.helperText,FormHelperTextProps:{className:a.helperText}})}),e(i,{name:`${t}.statuses`,control:s,render:({field:r,fieldState:{error:o}})=>e(f,{disabled:l,value:r.value,onChange:r.onChange,errors:o})})]})};export{u as IncidentsFactDetailsComponent};
|
|
2
2
|
//# sourceMappingURL=IncidentsFactDetailsComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{zodResolver as
|
|
1
|
+
import{jsxs as m,Fragment as y,jsx as o}from"react/jsx-runtime";import{zodResolver as b}from"@hookform/resolvers/zod";import{makeStyles as D,Paper as S,Divider as c}from"@material-ui/core";import{useForm as h,FormProvider as P}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as L}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as E}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as R}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as N,confirmationModalContent as I}from"../Common/utils.esm.js";import{IncidentsFactDetailsComponent as O}from"./IncidentsFactDetailsComponent.esm.js";import{mapConfigToPagerDutyCollectorConfig as _,defaultPagerDutyConfig as k,SERVICE_COLLECTOR_TYPE as x,STANDARDS_COLLECTOR_TYPE as B,INCIDENTS_COLLECTOR_TYPE as A,incidentsCollectorConfig as M,mapPagerDutyCollectorConfigToConfig as Y}from"./utils.esm.js";import{pagerDutyCollectorFormSchema as j}from"./validation.esm.js";const H=D(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),V=({disabled:e,selectedCollector:t})=>{const a=h({defaultValues:t?_(t.config):k(),mode:"onChange",resolver:b(j)}),{formState:{errors:i},handleSubmit:n}=a,s=H(),d=!!i.service||!!i.standards||!!i.incidents,{mutateAsync:p}=E(),[C,f]=L(w),{showModal:g}=T(),l=async u=>{if(!await g(I(t)))return;const v=Y(u);await p({collectorId:t.id,config:v})&&f()};return R(N(t)),m(y,{children:[o(S,{className:s.section,children:o(P,{...a,children:m("form",{onSubmit:n(l),children:[o(r,{name:x.toLowerCase(),label:"Service",description:"Collects details about PagerDuty service linked to an entity.",disabled:e}),o(c,{}),o(r,{name:B.toLowerCase(),label:"Standards",description:"Collects details about standards applied to a PagerDuty service linked to an entity.",disabled:e}),o(c,{}),o(r,{name:A.toLowerCase(),label:"Incidents",description:"Collects details about incidents associated with a PagerDuty service linked to an entity.",disabled:e,FactDetailsComponent:O,multipleCollectors:{enable:!0,defaultConfig:M()}})]})})}),o("div",{className:s.section,children:o(F,{onCancel:C,saveButtonText:"Save",isLoading:!1,onSave:n(l),disableSave:d})})]})};export{V as PagerDutyConfigurator};
|
|
2
2
|
//# sourceMappingURL=PagerDutyConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as s,jsx as e}from"react/jsx-runtime";import{makeStyles as g,Typography as c,FormControl as u,FormGroup as T,FormControlLabel as b,Checkbox as C,FormHelperText as f}from"@material-ui/core";import{useState as S,useEffect as x}from"react";import{DEFAULT_INCIDENT_STATUSES as E,PAGERDUTY_COLLECTOR_FIELDS as v}from"./utils.esm.js";const F=g(t=>({caption:{marginTop:t.spacing(2),marginBottom:t.spacing(1)}})),k=({value:t,onChange:n,disabled:l,errors:i})=>{const m=F(),{statuses:a}=v.factDetails,[o,p]=S(t);x(()=>{n&&n(o)},[o,n]);const d=r=>{p({...o,[r.target.name]:r.target.checked})};return s("div",{children:[s("div",{className:m.caption,children:[e(c,{variant:"subtitle2",children:a.name}),e(c,{variant:"caption",color:"textSecondary",children:a.description})]}),s(u,{disabled:l,component:"fieldset",error:!!i?.message,children:[e(T,{children:Object.keys(E).map((r,h)=>e(b,{label:e(c,{variant:"subtitle2",children:r}),control:e(C,{checked:o[r],onChange:d,name:r})},h))}),e(f,{children:i?.message??a.helperText})]})]})};export{k as StatusesComponent};
|
|
2
2
|
//# sourceMappingURL=StatusesComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{validFactNameRegex as d,invalidFactNameErrorMessage as f}from"@spotify/backstage-plugin-soundcheck-common";import{z as e}from"zod";import{FIELD_IS_REQUIRED_MSG as g}from"../../../../utils/validation.esm.js";import{BaseCollectorSchema as S,CollectorOptionSchema as r}from"../Common/CollectorOption.esm.js";const i="Fact name is not unique",l="Max 100 characters",n="At least one status must be selected",_=S.extend({factDetails:e.strictObject({factName:e.string().min(1,g).max(100,l).regex(d,f),statuses:e.strictObject({triggered:e.boolean(),acknowledged:e.boolean(),resolved:e.boolean()}).refine(t=>t.triggered||t.acknowledged||t.resolved,{message:n})})}).strict(),E=e.strictObject({enabled:e.boolean(),collectors:e.array(_).superRefine((t,m)=>{const o=t.map(a=>a.factDetails.factName),c=o.filter((a,s)=>o.indexOf(a)!==s);c.length&&t.forEach((a,s)=>{c.includes(a.factDetails.factName)&&m.addIssue({code:e.ZodIssueCode.custom,message:i,path:[s,"factDetails","factName"]})})})}),u=e.strictObject({service:r,standards:r,incidents:E});export{i as FACT_NAME_IS_NOT_UNIQUE_MSG,l as MAX_100_CHARACTERS_MSG,n as NO_SELECTED_STATUSES,u as pagerDutyCollectorFormSchema};
|
|
2
2
|
//# sourceMappingURL=validation.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as r,jsx as e}from"react/jsx-runtime";import{makeStyles as C,Box as F,Typography as m,Grid as l,TextField as x,IconButton as T}from"@material-ui/core";import v from"@material-ui/icons/Add";import I from"@material-ui/icons/Remove";import{useFormContext as y,useFieldArray as D,Controller as u}from"react-hook-form";import{FactDetailsComponent as A}from"./FactDetailsComponent.esm.js";import{DEFAULT_EXISTS_FACT_DATA as E,SCM_COLLECTOR_FIELDS as L}from"./utils.esm.js";const N=C(t=>({labelInput:{marginTop:0,width:"255px"},filePathInput:{marginTop:0,width:"420px"},caption:{margin:t.spacing(2,0)},helperText:{marginLeft:0}})),P=({name:t,disabled:i})=>{const a=N(),{filePath:s,label:p,exists:h}=L.factDetails,{control:o}=y(),{fields:f,insert:g,remove:b}=D({control:o,name:`${t}.data`});return r(F,{children:[e(A,{name:t,control:o,disabled:i}),r("div",{className:a.caption,children:[e(m,{variant:"subtitle1",children:h.filesSection.name}),e(m,{variant:"caption",children:h.filesSection.description})]}),e(l,{container:!0,spacing:0,direction:"column",children:f.map((S,d)=>r(l,{item:!0,container:!0,alignItems:"center",spacing:2,children:[r(l,{item:!0,children:[e(m,{variant:"subtitle2",children:p.name}),e(u,{name:`${t}.data.${d}.name`,control:o,render:({field:c,fieldState:{error:n}})=>e(x,{...c,type:"text",variant:"outlined",margin:"dense",placeholder:p.placeholder,className:a.labelInput,disabled:i,error:!!n,helperText:n?.message??" ",FormHelperTextProps:{className:a.helperText}})})]}),r(l,{item:!0,children:[e(m,{variant:"subtitle2",children:s.name}),e(u,{name:`${t}.data.${d}.path`,control:o,render:({field:c,fieldState:{error:n}})=>e(x,{...c,type:"text",variant:"outlined",margin:"dense",placeholder:s.placeholder,className:a.filePathInput,disabled:i,error:!!n,helperText:n?.message??" ",FormHelperTextProps:{className:a.helperText}})})]}),r(l,{item:!0,children:[e(T,{onClick:()=>b(d),disabled:i||f.length===1,children:e(I,{fontSize:"small"})}),e(T,{onClick:()=>g(d+1,E),disabled:i,children:e(v,{fontSize:"small"})})]})]},S.id))})]})};export{P as ExistsFactDetailsComponent};
|
|
2
2
|
//# sourceMappingURL=ExistsFactDetailsComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as n,jsx as e}from"react/jsx-runtime";import{makeStyles as T,Grid as c,Typography as s,Box as p,TextField as h}from"@material-ui/core";import{Controller as x}from"react-hook-form";import{FormFieldLabel as f}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{SCM_COLLECTOR_FIELDS as g}from"./utils.esm.js";const b=T(a=>({root:{paddingTop:a.spacing(1),alignItems:"flex-start"},factNameInput:{marginTop:0,width:"255px"},branchInput:{marginTop:0,width:"420px"},branchLabel:{height:"40px"},branchSection:{alignContent:"flex-end"},helperText:{marginLeft:0}})),N=({name:a,disabled:m,control:d})=>{const r=b(),{factName:l,branch:o}=g.factDetails;return n(c,{container:!0,spacing:2,className:r.root,children:[e(x,{name:`${a}.factName`,control:d,render:({field:i,fieldState:{error:t}})=>n(c,{item:!0,children:[e(f,{title:l.name}),e(s,{variant:"caption",children:l.helperText}),e(p,{children:e(h,{...i,type:"text",variant:"outlined",margin:"dense",placeholder:l.placeholder,className:r.factNameInput,disabled:m,error:!!t,helperText:t?.message??"",FormHelperTextProps:{className:r.helperText}})})]})}),e(x,{name:`${a}.branch`,control:d,render:({field:i,fieldState:{error:t}})=>e(c,{item:!0,className:r.branchSection,children:n(p,{children:[n(p,{children:[e(f,{title:o.name}),e(s,{variant:"caption",children:o.helperText})]}),e(h,{...i,type:"text",variant:"outlined",margin:"dense",placeholder:o.placeholder,className:r.branchInput,disabled:m,error:!!t,helperText:t?.message??"",FormHelperTextProps:{className:r.helperText}})]})})})]})};export{N as FactDetailsComponent};
|
|
2
2
|
//# sourceMappingURL=FactDetailsComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as a,jsx as e}from"react/jsx-runtime";import{makeStyles as I,Box as b,Typography as o,TextField as m,Grid as d,MenuItem as N,IconButton as P}from"@material-ui/core";import F from"@material-ui/icons/Add";import j from"@material-ui/icons/Remove";import{useFormContext as y,useFieldArray as C,Controller as h}from"react-hook-form";import{FactDetailsComponent as $}from"./FactDetailsComponent.esm.js";import{ELEMENT_TYPES as _,ARRAY_ELEMENT_TYPES as A,DEFAULT_JSON_FACT_DATA as L,SCM_COLLECTOR_FIELDS as D}from"./utils.esm.js";const w=I(r=>({filePathInput:{marginTop:0,width:"690px"},labelInput:{marginTop:0,width:"255px"},jsonPathInput:{marginTop:0,width:"300px"},typeInput:{marginTop:0,width:"150px"},helperText:{marginLeft:0},caption:{margin:r.spacing(2,0)},filePathSection:{marginTop:r.spacing(1)}})),H=({name:r,disabled:l})=>{const t=w(),{filePath:T,label:u,type:g,json:c}=D.factDetails,{control:s}=y(),{fields:S,insert:v,remove:E}=C({control:s,name:`${r}.data`});return a(b,{children:[e($,{name:r,control:s,disabled:l}),a("div",{className:t.filePathSection,children:[a(b,{children:[e(o,{variant:"subtitle2",children:T.name}),e(o,{variant:"caption",children:T.helperText})]}),e(h,{name:`${r}.path`,control:s,render:({field:x,fieldState:{error:n}})=>e(m,{...x,type:"text",variant:"outlined",margin:"dense",placeholder:T.placeholder,className:t.filePathInput,disabled:l,error:!!n,helperText:n?.message,FormHelperTextProps:{className:t.helperText}})})]}),a("div",{className:t.caption,children:[e(o,{variant:"subtitle1",children:c.jsonElementsSection.name}),e(o,{variant:"caption",children:c.jsonElementsSection.description})]}),e(d,{container:!0,spacing:0,direction:"column",children:S.map((x,n)=>a(d,{item:!0,container:!0,alignItems:"center",spacing:2,children:[a(d,{item:!0,children:[e(o,{variant:"subtitle2",children:u.name}),e(h,{name:`${r}.data.${n}.name`,control:s,render:({field:p,fieldState:{error:i}})=>e(m,{...p,type:"text",variant:"outlined",margin:"dense",placeholder:u.placeholder,className:t.labelInput,disabled:l,error:!!i,helperText:i?.message??" ",FormHelperTextProps:{className:t.helperText}})})]}),a(d,{item:!0,children:[e(o,{variant:"subtitle2",children:c.jsonPath.name}),e(h,{name:`${r}.data.${n}.jsonPath`,control:s,render:({field:p,fieldState:{error:i}})=>e(m,{...p,type:"text",variant:"outlined",margin:"dense",placeholder:c.jsonPath.placeholder,className:t.jsonPathInput,disabled:l,error:!!i,helperText:i?.message??" ",FormHelperTextProps:{className:t.helperText}})})]}),a(d,{item:!0,children:[e(o,{variant:"subtitle2",children:g.name}),e(h,{name:`${r}.data.${n}.type`,control:s,render:({field:p,fieldState:{error:i}})=>e(m,{...p,select:!0,type:"text",variant:"outlined",margin:"dense",placeholder:g.placeholder,className:t.typeInput,disabled:l,error:!!i,helperText:i?.message??" ",FormHelperTextProps:{className:t.helperText},children:[..._,...A].map(f=>e(N,{value:f,children:f},f))})})]}),a(d,{item:!0,children:[e(P,{onClick:()=>E(n),disabled:l||S.length===1,children:e(j,{fontSize:"small"})}),e(P,{onClick:()=>v(n+1,L),disabled:l,children:e(F,{fontSize:"small"})})]})]},x.id))})]})};export{H as JsonFactDetailsComponent};
|
|
2
2
|
//# sourceMappingURL=JsonFactDetailsComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as t,jsx as e}from"react/jsx-runtime";import{makeStyles as L,Box as m,Grid as d,Typography as a,TextField as h,RadioGroup as D,FormControlLabel as I,Radio as M,MenuItem as _,IconButton as E}from"@material-ui/core";import A from"@material-ui/icons/Add";import H from"@material-ui/icons/Remove";import{useState as R}from"react";import{useFormContext as w,useFieldArray as k,Controller as u}from"react-hook-form";import{FactDetailsComponent as z}from"./FactDetailsComponent.esm.js";import{ELEMENT_TYPES as j,DEFAULT_REGEX_FACT_DATA as G,SCM_COLLECTOR_FIELDS as B}from"./utils.esm.js";const x="CaptureGroupsMode",g="TrueFalseMode",O=L(i=>({textInput:{marginTop:0,width:"690px"},labelInput:{marginTop:0,width:"255px"},typeInput:{marginTop:0,width:"150px"},helperText:{marginLeft:0},caption:{margin:i.spacing(2,0)},regexSection:{padding:i.spacing(1,0)}})),q=({name:i,disabled:c})=>{const l=O(),{label:F,type:y,filePath:T,regex:n}=B.factDetails,{control:p}=w(),{fields:f,insert:C,remove:N}=k({control:p,name:`${i}.data`}),[v,$]=R(f.length?x:g),P=o=>{const r=o.target.value;$(r),r===x?C(0,G):r===g&&N()};return t(m,{children:[e(z,{name:i,control:p,disabled:c}),t(d,{container:!0,spacing:1,direction:"column",className:l.regexSection,children:[t(d,{item:!0,children:[t(m,{children:[e(a,{variant:"subtitle2",children:T.name}),e(a,{variant:"caption",children:T.helperText})]}),e(u,{name:`${i}.path`,control:p,render:({field:o,fieldState:{error:r}})=>e(h,{...o,type:"text",variant:"outlined",margin:"dense",placeholder:T.placeholder,className:l.textInput,disabled:c,error:!!r,helperText:r?.message??"",FormHelperTextProps:{className:l.helperText}})})]}),t(d,{item:!0,children:[t(m,{children:[e(a,{variant:"subtitle2",children:n.regex.name}),e(a,{variant:"caption",children:n.regex.helperText})]}),e(u,{name:`${i}.regex`,control:p,render:({field:o,fieldState:{error:r}})=>e(h,{...o,type:"text",variant:"outlined",margin:"dense",placeholder:n.regex.placeholder,className:l.textInput,disabled:c,error:!!r,helperText:r?.message??"",FormHelperTextProps:{className:l.helperText}})})]}),t(d,{item:!0,children:[t(m,{children:[e(a,{variant:"subtitle2",children:n.flags.name}),e(a,{variant:"caption",children:n.flags.helperText})]}),e(u,{name:`${i}.flags`,control:p,render:({field:o,fieldState:{error:r}})=>e(h,{...o,type:"text",variant:"outlined",margin:"dense",placeholder:n.flags.placeholder,className:l.textInput,disabled:c,error:!!r,helperText:r?.message??"",FormHelperTextProps:{className:l.helperText}})})]})]}),t(D,{row:!0,name:"regexMode",value:v,onChange:P,children:[e(I,{value:g,control:e(M,{}),label:e(a,{variant:"subtitle2",children:n.trueFalseMode.label})}),e(I,{value:x,control:e(M,{}),label:e(a,{variant:"subtitle2",children:n.captureGroupsMode.label})})]}),v===g&&e(a,{variant:"caption",children:n.trueFalseMode.description}),v===x&&t(m,{children:[e(a,{variant:"caption",children:n.captureGroupsMode.description}),t("div",{className:l.caption,children:[e(a,{variant:"subtitle2",children:n.captureGroupsSection.name}),e(a,{variant:"caption",children:n.captureGroupsSection.description})]}),e(d,{container:!0,spacing:0,direction:"column",children:f.map((o,r)=>t(d,{item:!0,container:!0,alignItems:"center",spacing:2,children:[t(d,{item:!0,children:[e(a,{variant:"subtitle2",children:F.name}),e(u,{name:`${i}.data.${r}.name`,control:p,render:({field:b,fieldState:{error:s}})=>e(h,{...b,type:"text",variant:"outlined",margin:"dense",placeholder:F.placeholder,className:l.labelInput,disabled:c,error:!!s,helperText:s?.message??" ",FormHelperTextProps:{className:l.helperText}})})]}),t(d,{item:!0,children:[e(a,{variant:"subtitle2",children:y.name}),e(u,{name:`${i}.data.${r}.type`,control:p,render:({field:b,fieldState:{error:s}})=>e(h,{...b,select:!0,type:"text",variant:"outlined",margin:"dense",placeholder:y.placeholder,className:l.typeInput,disabled:c,error:!!s,helperText:s?.message??" ",FormHelperTextProps:{className:l.helperText},children:j.map(S=>e(_,{value:S,children:S},S))})})]}),t(d,{item:!0,children:[e(E,{onClick:()=>N(r),disabled:c||f.length===1,children:e(H,{fontSize:"small"})}),e(E,{onClick:()=>C(r+1,G),disabled:c,children:e(A,{fontSize:"small"})})]})]},o.id))})]})]})};export{q as RegexFactDetailsComponent};
|
|
2
2
|
//# sourceMappingURL=RegexFactDetailsComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsxs as f,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as y}from"@hookform/resolvers/zod";import{makeStyles as O,Paper as T,Divider as d}from"@material-ui/core";import{useCallback as L,useMemo as R}from"react";import{useForm as N,FormProvider as D}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as M}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as j}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as P}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as _}from"../../../../routes.esm.js";import{FooterButtons as w}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as J}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as s}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as Y,confirmationModalContent as B}from"../Common/utils.esm.js";import{ExistsFactDetailsComponent as k}from"./ExistsFactDetailsComponent.esm.js";import{JsonFactDetailsComponent as A}from"./JsonFactDetailsComponent.esm.js";import{RegexFactDetailsComponent as z}from"./RegexFactDetailsComponent.esm.js";import{mapConfigToScmCollectorConfig as H,defaultScmCollectorConfig as C,EXISTS_COLLECTOR_TYPE as I,REGEX_COLLECTOR_TYPE as V,JSON_COLLECTOR_TYPE as X,mapScmCollectorConfigToConfig as G}from"./utils.esm.js";import{scmCollectorFormSchema as U}from"./validation.esm.js";const q=O(i=>({spacer:{height:i.spacing(8),width:"100%"},section:{marginBottom:i.spacing(2)}})),K=({disabled:i,selectedCollector:t})=>{const g=L(async(e,...n)=>{const a={enabled:!1,collectors:[]},F={exists:e.exists.enabled?e.exists:a,json:e.json.enabled?e.json:a,regex:e.regex.enabled?e.regex:a};return y(U)(F,...n)},[]),l=N({defaultValues:t?H(t.config):C(),mode:"onChange",resolver:g}),r=R(()=>C(t.config),[t]),{formState:{isValid:u},handleSubmit:m}=l,c=q(),x=!u,{mutateAsync:b}=P(),[S,h]=j(_),{showModal:E}=M(),p=async e=>{if(!await E(B(t)))return;const n=G(e);await b({collectorId:t.id,config:n})&&h()};return J(Y(t)),f(v,{children:[o(T,{className:c.section,children:o(D,{...l,children:f("form",{onSubmit:m(p),children:[o(s,{name:I,label:"Exists",description:"Collects information on the existence of files within an entity's repository.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.exists.collectors[0]},FactDetailsComponent:k}),o(d,{}),o(s,{name:V,label:"Regex",description:"Executes regular expressions against a specified file in an entity's repository and collects its capture groups.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.regex.collectors[0]},FactDetailsComponent:z}),o(d,{}),o(s,{name:X,label:"JSON / YAML",description:"Collects data from a JSON/YAML file at specified JSON paths in an entity's repository.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.json.collectors[0]},FactDetailsComponent:A})]})})}),o("div",{className:c.section,children:o(w,{onCancel:S,saveButtonText:"Save",isLoading:!1,onSave:m(p),disableSave:x,noMargin:!0})})]})};export{K as ScmConfigurator};
|
|
2
2
|
//# sourceMappingURL=ScmConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{asArray as x}from"@spotify/backstage-plugin-soundcheck-common";import{sumBy as C}from"lodash";import{defaultBaseCollectorOption as D}from"../Common/CollectorOption.esm.js";import{mapBackendConfigToFormIntegrationConfig as m,mapFormIntegrationConfigToBackendConfig as h}from"../Common/utils.esm.js";const d={name:"",path:""},y={name:"",type:"string"},g={name:"",jsonPath:"",type:"string"},N={factName:"",data:[d]},_={factName:"",path:"",regex:"",data:[]},L={factName:"",path:"",data:[g]},u=(t={})=>{const l=D(t);return{exists:{enabled:!1,collectors:[{factDetails:N,...l}]},regex:{enabled:!1,collectors:[{factDetails:_,...l}]},json:{enabled:!1,collectors:[{factDetails:L,...l}]}}},O={factDetails:{factName:{name:"Fact Name",helperText:"Fact name must be unique",placeholder:"Fact Name"},branch:{name:"Custom Branch (Optional)",helperText:"If omitted collects data from default branch",placeholder:"Example: develop"},filePath:{name:"File Path",helperText:"Path to the file whose content will be searched",placeholder:"Example: /catalog-info.yaml"},label:{name:"Label",placeholder:"Label"},type:{name:"Type",placeholder:"Type"},exists:{filesSection:{name:"Files",description:"List the files whose existence will be checked"}},regex:{regex:{name:"RegEx Pattern",helperText:"RegEx pattern to match",placeholder:"Example: ^apiVersion: backstage.io/(.+)"},flags:{name:"RegEx Flags (Optional)",helperText:"Allowed RegEx flags: g, i, m, s, u, y",placeholder:"Example: mi"},trueFalseMode:{label:"True / False Mode",description:"True / False Mode uses a RegEx to search for a match in the given file."},captureGroupsMode:{label:"Capture Groups Mode",description:"RegEx Capture Groups Mode allows the collector to associate capture groups within a RegEx to named values."},captureGroupsSection:{name:"Capture Groups",description:"Each element must correspond to a capture group in the given RegEx"}},json:{jsonPath:{name:"Json Path",placeholder:"Example: metadata.tags"},jsonElementsSection:{name:"JSON / YAML Elements",description:"List json / yaml paths from which to pull data from the given file"}}}},i="exists",f="regex",r="json",E=["string","number","integer","boolean","object"],T=E.map(b);function P(t){const{exists:l,regex:c,json:o}=t;if(l.collectors.length||c.collectors.length||o.collectors.length){const a={},n=[];return a.collects=n,l.enabled&&l.collectors.forEach(e=>{n.push(h({factType:i,configOption:e,additionalParams:{factName:e.factDetails.factName,branch:e.factDetails.branch?.length?e.factDetails.branch:void 0,data:e.factDetails.data}}))}),c.enabled&&c.collectors.forEach(e=>{n.push(h({factType:f,configOption:e,additionalParams:{factName:e.factDetails.factName,branch:e.factDetails.branch?.length?e.factDetails.branch:void 0,path:e.factDetails.path,regex:e.factDetails.regex,flags:e.factDetails.flags?.length?e.factDetails.flags:void 0,data:e.factDetails.data.length?e.factDetails.data:void 0}}))}),o.enabled&&o.collectors.forEach(e=>{n.push(h({factType:r,configOption:e,additionalParams:{factName:e.factDetails.factName,branch:e.factDetails.branch?.length?e.factDetails.branch:void 0,path:e.factDetails.path,data:e.factDetails.data.map(s=>T.includes(s.type)?{name:s.name,jsonPath:s.jsonPath,type:"array",items:{type:A(s.type)}}:s)}}))}),a}return{collects:[]}}const p=(t,l)=>C(t,({type:c})=>+(c===l));function F(t){const l=u(t),c=t?.collects;if(c&&c.length>0){const o=x(c);return{exists:p(o,i)>0?{collectors:o.filter(a=>a.type===i).map(a=>({...m({factTypeConfig:a,parentConfig:t}),factDetails:{factName:a.factName,branch:a.branch,data:a.data}})),enabled:!0}:l.exists,regex:p(o,f)>0?{collectors:o.filter(a=>a.type===f).map(a=>({...m({factTypeConfig:a,parentConfig:t}),factDetails:{factName:a.factName,branch:a.branch,path:a.path,regex:a.regex,flags:a.flags,data:a.data}})),enabled:!0}:l.regex,json:p(o,r)>0?{collectors:o.filter(a=>a.type===r).map(a=>({...m({factTypeConfig:a,parentConfig:t}),factDetails:{factName:a.factName,branch:a.branch,path:a.path,data:a.data.map(n=>n.type==="array"?{name:n.name,jsonPath:n.jsonPath,type:b(n.items?.type)}:n)}})),enabled:p(o,r)>0}:l.json}}return l}function b(t="object"){return`array[${t}]`}function A(t){const l="array[";return t.substring(t.indexOf(l)+l.length,t.lastIndexOf("]"))}export{T as ARRAY_ELEMENT_TYPES,d as DEFAULT_EXISTS_FACT_DATA,g as DEFAULT_JSON_FACT_DATA,y as DEFAULT_REGEX_FACT_DATA,E as ELEMENT_TYPES,i as EXISTS_COLLECTOR_TYPE,r as JSON_COLLECTOR_TYPE,f as REGEX_COLLECTOR_TYPE,O as SCM_COLLECTOR_FIELDS,u as defaultScmCollectorConfig,F as mapConfigToScmCollectorConfig,P as mapScmCollectorConfigToConfig};
|
|
1
|
+
import{asArray as x}from"@spotify/backstage-plugin-soundcheck-common";import{sumBy as C}from"lodash";import{defaultBaseCollectorOption as D}from"../Common/CollectorOption.esm.js";import{mapBackendConfigToFormIntegrationConfig as m,mapFormIntegrationConfigToBackendConfig as h}from"../Common/utils.esm.js";const d={name:"",path:""},y={name:"",type:"string"},g={name:"",jsonPath:"",type:"string"},N={factName:"",data:[d]},_={factName:"",path:"",regex:"",data:[]},L={factName:"",path:"",data:[g]},u=(t={})=>{const l=D(t);return{exists:{enabled:!1,collectors:[{factDetails:N,...l}]},regex:{enabled:!1,collectors:[{factDetails:_,...l}]},json:{enabled:!1,collectors:[{factDetails:L,...l}]}}},O={factDetails:{factName:{name:"Fact Name",helperText:"Fact name must be unique",placeholder:"Fact Name"},branch:{name:"Custom Branch (Optional)",helperText:"If omitted collects data from default branch",placeholder:"Example: develop"},filePath:{name:"File Path",helperText:"Path to the file whose content will be searched",placeholder:"Example: /catalog-info.yaml"},label:{name:"Label",placeholder:"Label"},type:{name:"Type",placeholder:"Type"},exists:{filesSection:{name:"Files",description:"List the files whose existence will be checked"}},regex:{regex:{name:"RegEx Pattern",helperText:"RegEx pattern to match",placeholder:"Example: ^apiVersion: backstage.io/(.+)"},flags:{name:"RegEx Flags (Optional)",helperText:"Allowed RegEx flags: g, i, m, s, u, y",placeholder:"Example: mi"},trueFalseMode:{label:"True / False Mode",description:"True / False Mode uses a RegEx to search for a match in the given file."},captureGroupsMode:{label:"Capture Groups Mode",description:"RegEx Capture Groups Mode allows the collector to associate capture groups within a RegEx to named values."},captureGroupsSection:{name:"Capture Groups",description:"Each element must correspond to a capture group in the given RegEx"}},json:{jsonPath:{name:"Json Path",placeholder:"Example: $.metadata.tags"},jsonElementsSection:{name:"JSON / YAML Elements",description:"List json / yaml paths from which to pull data from the given file"}}}},i="exists",f="regex",r="json",E=["string","number","integer","boolean","object"],T=E.map(b);function P(t){const{exists:l,regex:c,json:o}=t;if(l.collectors.length||c.collectors.length||o.collectors.length){const a={},n=[];return a.collects=n,l.enabled&&l.collectors.forEach(e=>{n.push(h({factType:i,configOption:e,additionalParams:{factName:e.factDetails.factName,branch:e.factDetails.branch?.length?e.factDetails.branch:void 0,data:e.factDetails.data}}))}),c.enabled&&c.collectors.forEach(e=>{n.push(h({factType:f,configOption:e,additionalParams:{factName:e.factDetails.factName,branch:e.factDetails.branch?.length?e.factDetails.branch:void 0,path:e.factDetails.path,regex:e.factDetails.regex,flags:e.factDetails.flags?.length?e.factDetails.flags:void 0,data:e.factDetails.data.length?e.factDetails.data:void 0}}))}),o.enabled&&o.collectors.forEach(e=>{n.push(h({factType:r,configOption:e,additionalParams:{factName:e.factDetails.factName,branch:e.factDetails.branch?.length?e.factDetails.branch:void 0,path:e.factDetails.path,data:e.factDetails.data.map(s=>T.includes(s.type)?{name:s.name,jsonPath:s.jsonPath,type:"array",items:{type:A(s.type)}}:s)}}))}),a}return{collects:[]}}const p=(t,l)=>C(t,({type:c})=>+(c===l));function F(t){const l=u(t),c=t?.collects;if(c&&c.length>0){const o=x(c);return{exists:p(o,i)>0?{collectors:o.filter(a=>a.type===i).map(a=>({...m({factTypeConfig:a,parentConfig:t}),factDetails:{factName:a.factName,branch:a.branch,data:a.data}})),enabled:!0}:l.exists,regex:p(o,f)>0?{collectors:o.filter(a=>a.type===f).map(a=>({...m({factTypeConfig:a,parentConfig:t}),factDetails:{factName:a.factName,branch:a.branch,path:a.path,regex:a.regex,flags:a.flags,data:a.data}})),enabled:!0}:l.regex,json:p(o,r)>0?{collectors:o.filter(a=>a.type===r).map(a=>({...m({factTypeConfig:a,parentConfig:t}),factDetails:{factName:a.factName,branch:a.branch,path:a.path,data:a.data.map(n=>n.type==="array"?{name:n.name,jsonPath:n.jsonPath,type:b(n.items?.type)}:n)}})),enabled:p(o,r)>0}:l.json}}return l}function b(t="object"){return`array[${t}]`}function A(t){const l="array[";return t.substring(t.indexOf(l)+l.length,t.lastIndexOf("]"))}export{T as ARRAY_ELEMENT_TYPES,d as DEFAULT_EXISTS_FACT_DATA,g as DEFAULT_JSON_FACT_DATA,y as DEFAULT_REGEX_FACT_DATA,E as ELEMENT_TYPES,i as EXISTS_COLLECTOR_TYPE,r as JSON_COLLECTOR_TYPE,f as REGEX_COLLECTOR_TYPE,O as SCM_COLLECTOR_FIELDS,u as defaultScmCollectorConfig,F as mapConfigToScmCollectorConfig,P as mapScmCollectorConfigToConfig};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validNameRegex as
|
|
1
|
+
import{validFactNameRegex as N,invalidFactNameErrorMessage as h,validNameRegex as i,invalidNameErrorMessage as n}from"@spotify/backstage-plugin-soundcheck-common";import{z as e}from"zod";import{FIELD_IS_REQUIRED_MSG as a}from"../../../../utils/validation.esm.js";import{BaseCollectorSchema as _}from"../Common/CollectorOption.esm.js";const m="Fact name is not unique",r="Max 100 characters",x="Max 1000 characters",p="Invalid regex flags: at least one of g, i, m, s, u, or y is required.",u=/^[gimsuy]*$/,g=e.object({factName:e.string().min(1,a).max(100,r).regex(N,h),branch:e.string().optional()}),j=g.merge(e.object({data:e.array(e.strictObject({name:e.string().min(1,a).max(100,r).regex(i,n),path:e.string().min(1,a).max(1e3,x)}))})).strict(),E=g.merge(e.object({path:e.string().min(1,a),regex:e.string().min(1,a),flags:e.string().regex(u,p).optional(),data:e.array(e.strictObject({name:e.string().min(1,a).max(100,r).regex(i,n),type:e.string().min(1,a).max(100,r).regex(i,n).optional()})).optional()})).strict(),I=g.merge(e.object({path:e.string().min(1,a),data:e.array(e.strictObject({name:e.string().min(1,a).regex(i,n),jsonPath:e.string().min(1,a),type:e.string().min(1,a)}))})).strict(),f=s=>e.strictObject({enabled:e.boolean().optional(),collectors:e.array(_.extend({factDetails:s}))}),D=e.strictObject({exists:f(j),regex:f(E),json:f(I)}).superRefine((s,l)=>{const d=[...s.exists.collectors.map(t=>t.factDetails.factName),...s.regex.collectors.map(t=>t.factDetails.factName),...s.json.collectors.map(t=>t.factDetails.factName)],o=d.filter((t,c)=>d.indexOf(t)!==c);o.length&&(s.exists.collectors.forEach((t,c)=>{o.includes(t.factDetails.factName)&&l.addIssue({code:e.ZodIssueCode.custom,message:m,path:["exists","collectors",c,"factDetails","factName"]})}),s.regex.collectors.forEach((t,c)=>{o.includes(t.factDetails.factName)&&l.addIssue({code:e.ZodIssueCode.custom,message:m,path:["regex","collectors",c,"factDetails","factName"]})}),s.json.collectors.forEach((t,c)=>{o.includes(t.factDetails.factName)&&l.addIssue({code:e.ZodIssueCode.custom,message:m,path:["json","collectors",c,"factDetails","factName"]})}))});export{m as FACT_NAME_IS_NOT_UNIQUE_MSG,p as INVALID_REGEX_FLAGS_MSG,x as MAX_1000_CHARACTERS_MSG,r as MAX_100_CHARACTERS_MSG,D as scmCollectorFormSchema,u as validFlagsRegex};
|
|
2
2
|
//# sourceMappingURL=validation.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as h,jsx as e}from"react/jsx-runtime";import{makeStyles as I,Typography as i,Box as s,TextField as S}from"@material-ui/core";import{useFormContext as T,Controller as v}from"react-hook-form";import"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{FormControlledMultipleAutocomplete as p}from"../../../FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js";import{useLabelOptions as m}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"@material-ui/lab";import"react";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{FormFieldLabel as n}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{ISSUE_STATUS_OPTIONS as x,ISSUE_SEVERITY_OPTIONS as b,ISSUE_TYPE_OPTIONS as N}from"./utils.esm.js";const O=I(t=>({root:{paddingTop:t.spacing(1)},formInput:{marginTop:0,width:"500px",marginBottom:t.spacing(2)},helperText:{marginLeft:0}})),E=({name:t,disabled:r})=>{const o=O(),{control:a}=T(),c=m(x.map(l=>({label:l,value:l}))),u=m(b.map(l=>({label:l,value:l}))),f=m(N.map(l=>({label:l,value:l})));return h("div",{className:o.root,children:[e(n,{title:"Fact Name"}),e(i,{variant:"caption",children:"Fact name must be unique"}),e(s,{children:e(v,{name:`${t}.factName`,control:a,render:({field:l,fieldState:{error:d}})=>e(S,{...l,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:o.formInput,disabled:r,error:!!d,helperText:d?.message,FormHelperTextProps:{className:o.helperText}})})}),e(n,{title:"Issue Statuses (Optional)"}),e(i,{variant:"caption",children:"If not provided issues with all statuses will be collected"}),e(s,{className:o.formInput,children:e(p,{name:`${t}.statuses`,control:a,fullWidth:!0,freeSolo:!1,disabled:r,placeholder:"Example: OPEN",...c})}),e(n,{title:"Issue Severities (Optional)"}),e(i,{variant:"caption",children:"If not provided issues with all severities will be collected"}),e(s,{className:o.formInput,children:e(p,{name:`${t}.severities`,control:a,fullWidth:!0,freeSolo:!1,disabled:r,placeholder:"Example: BLOCKER",...u})}),e(n,{title:"Issue Types (Optional)"}),e(i,{variant:"caption",children:"If not provided issues with all types will be collected"}),e(s,{className:o.formInput,children:e(p,{name:`${t}.types`,control:a,fullWidth:!0,freeSolo:!1,disabled:r,placeholder:"Example: VULNERABILITY",...f})})]})};export{E as IssuesFactDetailsInput};
|
|
2
|
+
//# sourceMappingURL=IssuesFactDetailsInput.esm.js.map
|
package/dist/components/CollectorPage/Configurators/SonarQube/MeasuresFactDetailsInput.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsxs as p,jsx as e}from"react/jsx-runtime";import{makeStyles as d,Typography as s,Box as c,TextField as x}from"@material-ui/core";import{useFormContext as h,Controller as m}from"react-hook-form";import{MetricsInput as f}from"./MetricsInput.esm.js";import{SONARQUBE_COLLECTOR_FIELDS as u}from"./utils.esm.js";const T=d(r=>({root:{paddingTop:r.spacing(1)},textInput:{marginTop:0,width:"500px"},helperText:{marginLeft:0}})),g=({name:r,disabled:l})=>{const o=T(),{control:i}=h(),{factName:n}=u.factDetails;return p("div",{className:o.root,children:[e(s,{variant:"subtitle2",children:n.name}),e(s,{variant:"caption",children:n.helperText}),e(c,{children:e(m,{name:`${r}.factName`,control:i,render:({field:t,fieldState:{error:a}})=>e(x,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:n.placeholder,className:o.textInput,disabled:l,error:!!a,helperText:a?.message,FormHelperTextProps:{className:o.helperText}})})}),e(m,{name:`${r}.metrics`,control:i,render:({field:t,fieldState:{error:a}})=>e(f,{disabled:l,value:t.value,onChange:t.onChange,errors:a})})]})};export{g as MeasuresFactDetailsInput};
|
|
2
2
|
//# sourceMappingURL=MeasuresFactDetailsInput.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as o,jsx as i}from"react/jsx-runtime";import{makeStyles as C,Typography as f,Grid as p,Chip as y,TextField as N}from"@material-ui/core";import{useState as x,useEffect as b}from"react";import{SONARQUBE_COLLECTOR_FIELDS as E}from"./utils.esm.js";const I=C(r=>({caption:{marginTop:r.spacing(2),marginBottom:r.spacing(1)},metricsInput:{width:"500px"},metricChips:{marginBottom:r.spacing(1)},helperText:{marginLeft:0}})),D=({value:r,onChange:s,disabled:d,errors:h})=>{const a=I(),{metrics:l}=E.factDetails,[t,u]=x(r),[n,g]=x("");b(()=>{s&&s(t)},[t,s]);const T=e=>{e.key==="Enter"&&(t?.includes(n.trim())||u(t?[...t,n.trim()]:[n.trim()]),g(""))},v=(e,c)=>{u(t?.filter(m=>m!==c))};return o("div",{children:[o("div",{className:a.caption,children:[i(f,{variant:"subtitle2",children:l.name}),i(f,{variant:"caption",children:l.helperText})]}),o(p,{container:!0,direction:"column",spacing:0,className:a.metricsInput,children:[i(p,{item:!0,children:t?.map((e,c)=>i(y,{label:e,disabled:d,size:"small",onDelete:m=>v(m,e),className:a.metricChips},`${e}-${c}`))}),i(p,{item:!0,children:i(N,{type:"text",variant:"outlined",margin:"dense",placeholder:l.placeholder,className:a.metricsInput,disabled:d,error:!!h,fullWidth:!0,value:n,onChange:e=>g(e.target.value),onKeyDown:T,helperText:h?.message,FormHelperTextProps:{className:a.helperText}})})]})]})};export{D as MetricsInput};
|
|
2
2
|
//# sourceMappingURL=MetricsInput.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{zodResolver as
|
|
1
|
+
import{jsxs as c,Fragment as S,jsx as o}from"react/jsx-runtime";import{zodResolver as h}from"@hookform/resolvers/zod";import{makeStyles as j,Paper as v,Divider as a}from"@material-ui/core";import{useForm as F,FormProvider as Q}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as k}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as w}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as T}from"../../../../routes.esm.js";import{FooterButtons as D}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as I}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as M,confirmationModalContent as P}from"../Common/utils.esm.js";import{IssuesFactDetailsInput as x}from"./IssuesFactDetailsInput.esm.js";import{MeasuresFactDetailsInput as B}from"./MeasuresFactDetailsInput.esm.js";import{mapConfigToSonarQubeCollectorConfig as N,defaultSonarQubeConfig as R,issuesCollectorConfig as A,measuresCollectorConfig as H,mapSonarQubeCollectorConfigToConfig as z}from"./utils.esm.js";import{sonarQubeCollectorFormSchema as L}from"./validation.esm.js";const U=j(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),V=({disabled:e,selectedCollector:t})=>{const s=F({defaultValues:t?N(t.config):R(),mode:"onChange",resolver:h(L)}),{formState:{errors:r},handleSubmit:n}=s,l=U(),p=!!r.projects||!!r.projectTags||!!r.issues||!!r.measures,{mutateAsync:d}=w(),[u,f]=k(T),{showModal:C}=y(),m=async g=>{if(!await C(P(t)))return;const b=z(g);await d({collectorId:t.id,config:b})&&f()};return I(M(t)),c(S,{children:[o(v,{className:l.section,children:o(Q,{...s,children:c("form",{onSubmit:n(m),children:[o(i,{name:"projects",label:"Projects",description:"Collects details about SonarQube project linked to an entity.",disabled:e}),o(a,{}),o(i,{name:"projectTags",label:"Project Tags",description:"Collects details about tags set on a SonarQube project linked to an entity.",disabled:e}),o(a,{}),o(i,{name:"issues",label:"Issues",description:"Collects details about issues associated with a SonarQube project linked to an entity.",disabled:e,FactDetailsComponent:x,multipleCollectors:{enable:!0,defaultConfig:A(t.config)}}),o(a,{}),o(i,{name:"measures",label:"Measures",description:"Collects details about measures associated with a SonarQube project linked to an entity.",disabled:e,FactDetailsComponent:B,multipleCollectors:{enable:!0,defaultConfig:H(t.config)}})]})})}),o("div",{className:l.section,children:o(D,{onCancel:u,saveButtonText:"Save",isLoading:!1,onSave:n(m),disableSave:p})})]})};export{V as SonarQubeConfigurator};
|
|
2
2
|
//# sourceMappingURL=SonarQubeConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{asArray as d}from"@spotify/backstage-plugin-soundcheck-common";import{defaultBaseCollectorOption as
|
|
1
|
+
import{asArray as d}from"@spotify/backstage-plugin-soundcheck-common";import{defaultBaseCollectorOption as u,defaultCollectorOption as O}from"../Common/CollectorOption.esm.js";import{mapBackendConfigToFormIntegrationConfig as p,mapFormIntegrationConfigToBackendConfig as m}from"../Common/utils.esm.js";const C="projects",E="project-tags",r="issues",f="measures",D=["OPEN","CONFIRMED","REOPENED","RESOLVED","CLOSED"],y=["BLOCKER","CRITICAL","MAJOR","MINOR","INFO"],L=["VULNERABILITY","BUG","CODE_SMELL"],T=["OPEN"],g=["ncloc","complexity","violations","open_issues"],I={factDetails:{factName:{name:"Fact Name",helperText:"Fact name must be unique",placeholder:"Fact Name"},metrics:{name:"Metrics",helperText:"Add more metrics to collect",placeholder:"Example: code_smells"}}},S=(t,s,c,o,i)=>({...u(t),factDetails:{factName:s??"",statuses:c??T,severities:o,types:i}}),N=(t,s,c)=>({...u(t),factDetails:{factName:s??"",metrics:c??g}}),_=t=>({projects:O(t),projectTags:O(t),issues:{enabled:!1,collectors:[S(t,r,T)]},measures:{enabled:!1,collectors:[N(t,f,g)]}});function R(t){const{projects:s,projectTags:c,issues:o,measures:i}=t;if(s.enabled||c.enabled||o.enabled||i.enabled){const l={},n=[];return l.collects=n,s.enabled&&n.push(m({factType:C,configOption:s})),c.enabled&&n.push(m({factType:E,configOption:c})),o.enabled&&o.collectors.forEach(a=>{n.push(m({factType:r,configOption:a,additionalParams:{factName:a.factDetails.factName,statuses:a.factDetails.statuses?.length?a.factDetails.statuses:void 0,severities:a.factDetails.severities?.length?a.factDetails.severities:void 0,types:a.factDetails.types?.length?a.factDetails.types:void 0}}))}),i.enabled&&i.collectors.forEach(a=>{n.push(m({factType:f,configOption:a,additionalParams:{factName:a.factDetails.factName,metrics:a.factDetails.metrics}}))}),l}return{collects:[]}}function b(t){const s=_(t);if(t){const c=d(t).flatMap(o=>o.collects);if(c){const o=d(c),i=o.find(e=>e.type===C);i&&(s.projects={...p({parentConfig:t,factTypeConfig:i}),enabled:!0});const l=o.find(e=>e.type===E);l&&(s.projectTags={...p({parentConfig:t,factTypeConfig:l}),enabled:!0});const n=o.filter(e=>e.type===r);n.length&&(s.issues={enabled:!0,collectors:n.map(e=>({...p({parentConfig:t,factTypeConfig:e}),factDetails:{factName:e.factName??r,statuses:e.statuses?.length?e.statuses:void 0,severities:e.severities?.length?e.severities:void 0,types:e.types?.length?e.types:void 0}}))});const a=o.filter(e=>e.type===f);a.length&&(s.measures={enabled:!0,collectors:a.map(e=>({...p({parentConfig:t,factTypeConfig:e}),factDetails:{factName:e.factName??f,metrics:e.metrics}}))})}}return s}export{T as DEFAULT_ISSUE_STATUSES,g as DEFAULT_METRICS,r as ISSUES_COLLECTOR_TYPE,y as ISSUE_SEVERITY_OPTIONS,D as ISSUE_STATUS_OPTIONS,L as ISSUE_TYPE_OPTIONS,f as MEASURES_COLLECTOR_TYPE,C as PROJECTS_COLLECTOR_TYPE,E as PROJECT_TAGS_COLLECTOR_TYPE,I as SONARQUBE_COLLECTOR_FIELDS,_ as defaultSonarQubeConfig,S as issuesCollectorConfig,b as mapConfigToSonarQubeCollectorConfig,R as mapSonarQubeCollectorConfigToConfig,N as measuresCollectorConfig};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{validFactNameRegex as l,invalidFactNameErrorMessage as n}from"@spotify/backstage-plugin-soundcheck-common";import{z as e}from"zod";import{FIELD_IS_REQUIRED_MSG as f}from"../../../../utils/validation.esm.js";import{BaseCollectorSchema as u,CollectorOptionSchema as d}from"../Common/CollectorOption.esm.js";import{ISSUE_STATUS_OPTIONS as _,ISSUE_SEVERITY_OPTIONS as p,ISSUE_TYPE_OPTIONS as I}from"./utils.esm.js";const r="Fact name is not unique",o="Max 100 characters",S="At least one metric must be added",N=u.extend({factDetails:e.strictObject({factName:e.string().min(1,f).max(100,o).regex(l,n),statuses:e.array(e.enum(_)).optional(),severities:e.array(e.enum(p)).optional(),types:e.array(e.enum(I)).optional()})}).strict(),E=e.strictObject({enabled:e.boolean(),collectors:e.array(N)}),O=u.extend({factDetails:e.strictObject({factName:e.string().min(1,f).max(100,o).regex(l,n),metrics:e.array(e.string()).min(1,S)})}).strict(),g=e.strictObject({enabled:e.boolean(),collectors:e.array(O)}),T=e.strictObject({projects:d,projectTags:d,issues:E,measures:g}).superRefine((s,i)=>{const m=[...s.issues.collectors.map(t=>t.factDetails.factName),...s.measures.collectors.map(t=>t.factDetails.factName)],c=m.filter((t,a)=>m.indexOf(t)!==a);c.length&&s.issues.collectors.forEach((t,a)=>{c.includes(t.factDetails.factName)&&i.addIssue({code:e.ZodIssueCode.custom,message:r,path:["issues","collectors",a,"factDetails","factName"]})}),c.length&&s.measures.collectors.forEach((t,a)=>{c.includes(t.factDetails.factName)&&i.addIssue({code:e.ZodIssueCode.custom,message:r,path:["measures","collectors",a,"factDetails","factName"]})})});export{r as FACT_NAME_IS_NOT_UNIQUE_MSG,o as MAX_100_CHARACTERS_MSG,S as MIN_1_METRIC_MSG,T as sonarQubeCollectorFormSchema};
|
|
2
2
|
//# sourceMappingURL=validation.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{Grid as i}from"@material-ui/core";import{useGetCollectors as d}from"../../../hooks/collectors/useGetCollectors.esm.js";import{CollectorListSkeleton as a}from"./CollectorListSkeleton.esm.js";import{ConfigurableCollectorIds as e,CollectorSummaryCard as n}from"./CollectorSummaryCard.esm.js";const s=()=>{const{data:t,isLoading:c}=d();return r(i,{container:!0,direction:"row",children:r(i,{container:!0,spacing:4,role:"list","aria-label":"checks",children:c?r(a,{}):t?.filter(o=>o.isConfigurable)?.sort((o,l)=>!e.includes(o.id)&&e.includes(l.id)?1:e.includes(o.id)&&!e.includes(l.id)?-1:(o.name??o.id).localeCompare(l.name??l.id))?.map(o=>r(i,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`collector card ${o.id}`,children:r(n,{collector:o})},o.id))})})};export{s as CollectorListPage};
|
|
2
2
|
//# sourceMappingURL=CollectorListPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsx as r,Fragment as e}from"react/jsx-runtime";import{Grid as o}from"@material-ui/core";import{Skeleton as i}from"@material-ui/lab";const l=()=>r(e,{children:Array.from({length:6},(m,t)=>r(o,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem",children:r(i,{variant:"rect",height:385})},`loading-${t}`))});export{l as CollectorListSkeleton};
|
|
2
2
|
//# sourceMappingURL=CollectorListSkeleton.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsx as p}from"react/jsx-runtime";import{makeStyles as g,useTheme as f}from"@material-ui/core";import s from"../../../images/azure-devops-rgb.svg";import c from"../../../images/azure-devops-white.svg";import n from"../../../images/bigquery-rgb.svg";import h from"../../../images/bigquery-white.svg";import l from"../../../images/cat-blk.svg";import u from"../../../images/cat-wht.svg";import d from"../../../images/data-registry-blk.svg";import b from"../../../images/data-registry-wht.svg";import y from"../../../images/dd_logo_h_rgb.svg";import k from"../../../images/dd_logo_h_white.svg";import q from"../../../images/GitHub_Logo.svg";import j from"../../../images/GitHub_Logo_White.svg";import w from"../../../images/gitlab-rgb.svg";import x from"../../../images/gitlab-white.svg";import B from"../../../images/http-rgb.svg";import z from"../../../images/http-white.svg";import I from"../../../images/jira-rgb.svg";import L from"../../../images/jira-white.svg";import S from"../../../images/k8s_blue.svg";import T from"../../../images/k8s_white.svg";import $ from"../../../images/new-relic-rgb.svg";import C from"../../../images/new-relic-white.svg";import D from"../../../images/pd-black.svg";import M from"../../../images/pd-white.svg";import N from"../../../images/SCM_DARK.svg";import A from"../../../images/SCM_LIGHT.svg";import E from"../../../images/sonarqube-rgb.svg";import F from"../../../images/sonarqube-white.svg";import G from"../../../images/soundcheck-black.svg";import H from"../../../images/soundcheck-white.svg";import K from"../../../images/tech-black.svg";import O from"../../../images/tech-white.svg";import{isDarkTheme as Q}from"../../Charts/chartUtils.esm.js";const t={github:q,gitlab:w,datadog:y,scm:A,pagerduty:D,catalog:l,soundcheck:G,techinsights:K,kubernetes:S,jira:I,sonarqube:E,newrelic:$,bigquery:n,azure:s,http:B,"data-registry":d},i={github:j,gitlab:x,datadog:k,scm:N,pagerduty:M,catalog:u,soundcheck:H,techinsights:O,kubernetes:T,jira:L,sonarqube:F,newrelic:C,bigquery:h,azure:c,http:z,"data-registry":b},R=new Set(["catalog","soundcheck","techinsights","sonarqube","data-registry"]),W=g(o=>({image:{objectFit:"contain",color:"white",height:o.spacing(5)-4,maxWidth:"100%",marginBottom:o.spacing(1.5)},tallImage:{height:o.spacing(6.5),marginBottom:o.spacing(0)}})),_=o=>!!t[o]&&!!i[o],v=({collectorId:o,noMargin:a})=>{const r=W(),e=f(),m=Q(e)?i[o]:t[o];return m?p("img",{src:m,alt:o,style:a?{marginBottom:0}:{},className:`${r.image} ${R.has(o)?r.tallImage:""}`}):null};export{v as CollectorLogo,_ as hasLogo};
|
|
2
2
|
//# sourceMappingURL=CollectorLogo.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsxs as s,jsx as e}from"react/jsx-runtime";import{useRouteRef as N}from"@backstage/core-plugin-api";import{usePermission as I}from"@backstage/plugin-permission-react";import{makeStyles as k,CardContent as p,CardHeader as x,Typography as u,Divider as S,CardActions as T,Button as A}from"@material-ui/core";import{soundcheckCollectorUpdatePermission as B}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as H}from"react-router-dom";import{integrationDetailsRouteRef as L}from"../../../routes.esm.js";import{SoundcheckMarkdownContent as R}from"../../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import{useSummaryCardStyles as $,Card as j}from"../../SummaryCard/SummaryCard.esm.js";import{hasLogo as w,CollectorLogo as D}from"./CollectorLogo.esm.js";const M=k(t=>({cardContent:{flex:1,paddingTop:t.spacing(1)},logoHeader:{paddingBottom:0,flex:0},headerContent:{display:"flex",alignItems:"center",height:t.spacing(5),marginBottom:t.spacing(1.5)},headerTypography:{marginBottom:0}})),d=["github","gitlab","scm","pagerduty","datadog","kubernetes","jira","sonarqube","newrelic","bigquery","catalog","azure","http","data-registry"],P=({collector:t})=>{const{description:h,id:o,isConfigurable:l,isEditable:c,name:f}=t,{loading:m,allowed:g}=I({permission:B}),y=H(),C=N(L),r=$(),i=M(),b=d.includes(o)&&l&&c&&!m&&g,v=()=>{y(C({integrationId:o}))};let a;m||!g?a="You don't have permissions to configure this integration.":l?c?d.includes(o)||(a="Integration can only be configured through YAML"):a="Integration is already configured via YAML and cannot be configured through the UI.":a="Integration is not configurable.";const n=f??o;return s(j,{"data-testid":o,className:r.card,children:[w(o)?e(p,{className:i.logoHeader,children:e(D,{collectorId:o})}):e(x,{title:n,titleTypographyProps:{className:`${r.summaryName} ${i.headerTypography}`},classes:{content:i.headerContent}}),s(p,{className:i.cardContent,children:[e(u,{variant:"body1",component:"div",children:e(R,{className:r.summaryDescription,content:h??""})}),e(u,{color:"textSecondary",variant:"body2",children:a})]}),b&&s("div",{children:[e(S,{}),e(T,{className:r.actionArea,children:e(A,{"aria-label":`${n}-edit`,"data-testid":`${n}-button`,size:"medium",role:"link",onClick:v,className:r.button,variant:"outlined",children:"Configure"})})]})]})};export{P as CollectorSummaryCard,d as ConfigurableCollectorIds};
|
|
2
2
|
//# sourceMappingURL=CollectorSummaryCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{makeStyles as t}from"@material-ui/core";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as e}from"../SoundcheckHeader/useHeader.esm.js";import{CollectorListPage as i}from"./CollectorListPage/CollectorListPage.esm.js";const a=t(o=>({container:{padding:o.spacing(3)}})),m=()=>{const o=a();return e(),r("div",{className:o.container,children:r(i,{})})};export{m as CollectorsPage};
|
|
2
2
|
//# sourceMappingURL=CollectorsPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as
|
|
1
|
+
import{jsx as i,jsxs as a}from"react/jsx-runtime";import{parseEntityRef as s}from"@backstage/catalog-model";import{humanizeEntityRef as l}from"@backstage/plugin-catalog-react";import{makeStyles as f,Card as g,Typography as d}from"@material-ui/core";import h from"../../images/empty-state.svg";const u=f(e=>({card:{backgroundColor:e.palette.background.paper,border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadius,display:"flex",padding:e.spacing(5)},container:{margin:"0 auto",display:"flex",flexDirection:"row",alignItems:"center",gap:e.spacing(5)},content:{width:"20rem",display:"flex",flexDirection:"column",gap:e.spacing(2)},header:{display:"flex",flexDirection:"column",gap:e.spacing(2)},action:{display:"inline-block"},img:{maxHeight:400}})),o=({title:e,description:r,imgSrc:t,action:c})=>{const n=u();return i(g,{className:n.card,children:a("div",{className:n.container,children:[a("div",{className:n.content,children:[a("header",{className:n.header,children:[i(d,{variant:"h5",children:e}),i(d,{color:"textSecondary",variant:"body1",children:r})]}),c&&i("div",{className:n.action,children:c})]}),i("div",{children:i("img",{src:t??h,className:n.img,alt:e})})]})})},p="No certifications available",y=({ownerEntityRef:e,selectGroupHint:r})=>{let t="There are no tracks configured that apply to this entity.";return e&&(t=`Looks like the group '${l(s(e),{defaultKind:"Group"})}' doesn't own any entities that have any applicable tracks configured. ${r}`),i(o,{title:p,description:t})},m="Missing entities",x=({ownerEntityRef:e,selectGroupHint:r})=>{if(!e)return null;const t=l(s(e),{defaultKind:"Group"});return i(o,{title:m,description:`The group '${t}' doesn't own any entities. ${r??""}`})};export{o as EmptyState,y as NoCertifications,x as NoEntities,p as noCertificationsTitle,m as noEntitiesTitle};
|
|
2
2
|
//# sourceMappingURL=EmptyState.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e,jsxs as T}from"react/jsx-runtime";import{makeStyles as F,FormControlLabel as O,Checkbox as z,Typography as A,Box as w,TextField as I}from"@material-ui/core";import N from"@material-ui/icons/CheckBox";import j from"@material-ui/icons/CheckBoxOutlineBlank";import B from"@material-ui/icons/ExpandMore";import{Autocomplete as E}from"@material-ui/lab";import{useState as G,useMemo as m,useCallback as p}from"react";import{useGetEntityRefs as D}from"../../hooks/catalog/useGetEntityRefs.esm.js";import{FormFieldLabel as H}from"../FormFieldLabel/FormFieldLabel.esm.js";import{ListboxVirtualized as M}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const P=F({container:{padding:0},formControl:{flexGrow:1},label:{lineHeight:"1em"}}),Q=({label:d,values:o,onChange:n,disabled:f,filter:g,renderOption:b,renderTags:h})=>{const i=P(),[C,a]=G(!1),{data:t,isLoading:u,error:k}=D(g),s=m(()=>o?.map(l=>l.toLocaleLowerCase("en-US"))??[],[o]),x=p((l,r)=>{n(r),t&&t.every(c=>r.includes(c))&&a(!1)},[t,n]),y=p(()=>{n(o?.length?o:void 0)},[o,n]),L=p((l,r)=>b?.(l,r)??e(O,{onClick:c=>c.preventDefault(),control:e(z,{icon:e(j,{fontSize:"small"}),checkedIcon:e(N,{fontSize:"small"}),checked:r.selected}),label:l,classes:{label:i.label}}),[b,i.label]),S=m(()=>f||u||!o?.length&&!t?.length,[f,u,o?.length,t?.length]),v=m(()=>Array.from(new Set([...t??[],...s])),[t,s]);return k?e(A,{color:"error",children:"Failed to load entities"}):T(w,{pb:1,pt:1,className:i.container,children:[e(H,{title:d,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e(E,{open:C,onOpen:()=>a(!0),onClose:()=>a(!1),className:i.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":d,options:v,value:s,onChange:x,onBlur:y,disabled:S,ListboxComponent:M,renderOption:L,renderTags:h,size:"small",popupIcon:e(B,{"data-testid":"selected-facets-expand"}),renderInput:l=>e(I,{...l,variant:"outlined"})})]})};export{Q as EntitiesAutocompletePicker};
|
|
2
|
+
//# sourceMappingURL=EntitiesAutocompletePicker.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{useApi as l}from"@backstage/core-plugin-api";import{entityPresentationApiRef as m,EntityRefLink as s}from"@backstage/plugin-catalog-react";import{Chip as o,Avatar as p}from"@material-ui/core";import{Skeleton as a}from"@material-ui/lab";import f from"react-use/esm/useAsync";const y=({entityOrRef:e,style:r})=>{const n=l(m),{value:i}=f(async()=>await n.forEntity(e).promise);return i?t(s,{entityRef:e,children:t(o,{size:"small",avatar:i.Icon?t(p,{children:t(i.Icon,{})}):void 0,label:i.primaryTitle,style:{cursor:"pointer",...r}})}):t(o,{size:"small",avatar:t(a,{variant:"circle",width:16,height:16}),label:t(a,{variant:"text",width:65}),style:r})};export{y as EntityChip};
|
|
2
2
|
//# sourceMappingURL=EntityChip.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as
|
|
1
|
+
import{jsx as e,Fragment as l,jsxs as f}from"react/jsx-runtime";import{useApi as o,githubAuthApiRef as p,configApiRef as d}from"@backstage/core-plugin-api";import{identityApiRef as g}from"@backstage/frontend-plugin-api";import{useTemplateSecrets as u}from"@backstage/plugin-scaffolder-react";import{makeStyles as A}from"@material-ui/core";import{SpotifyLicenseBanner as h}from"@spotify/backstage-plugin-core";import y from"react-use/lib/useAsync";import{AlertProvider as k}from"../../hooks/useSoundcheckAlert.esm.js";import{soundcheckBackend as v,invalidLicenseMessage as E}from"../../utils/license.esm.js";import{CertificationsPage as L}from"../CertificationsPage/CertificationsPage.esm.js";const P=A(i=>({root:{"&:not(:first-child)":{marginTop:i.spacing(2)}}})),S=()=>{const i=P(),r=o(p),t=o(g),n=o(d).getOptionalStringArray("soundcheck.flags")?.includes("enable-fix-me"),{setSecrets:s}=u();return y(async()=>{const[a,c,m]=await Promise.all([n?r.getAccessToken(void 0,{optional:!0}):Promise.resolve(""),t.getProfileInfo(),t.getBackstageIdentity()]);s({GHE_LOGIN:m.userEntityRef.replace("default/",""),GHE_EMAIL:c.email,GHE_TOKEN:a})},[r,t]),e(l,{children:f(k,{children:[e(h,{backend:v,invalidLicenseMessage:E,inline:!0}),e("div",{className:i.root,children:e(L,{})})]})})};export{S as EntityContent};
|
|
2
2
|
//# sourceMappingURL=EntityContent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{entityPassRatesSummaryCsvFilename as o}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import"luxon";import{useSummaryAggregationsContext as m}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{EntityPassRateHistoryLineChart as n}from"../Charts/LineChart/EntityPassRateHistoryLineChart.esm.js";import"../Charts/BarChart/BarChart.esm.js";import"@backstage/catalog-model";import{OverviewChartCard as p}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallEntityPassRatesToCsv as l}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const y=()=>{const{entityPassRatesOverviewTrends:{data:t,isLoading:r,isError:s}}=m(),a=t?.overallEntityPassRates?.length,i=!t?.overallEntityPassRates||!a||r||s;return e(p,{title:"Entity pass rate",subtitle:"By default, this chart shows the top 5 entities by pass rate for all teams with which you are associated. To see a different set of entities, use the filters.",chartSectionContent:e(n,{}),disableDataExport:i,csvFilename:o,csvData:l(t)})};export{y as EntityPassRateCard};
|
|
2
2
|
//# sourceMappingURL=EntityPassRateCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Link as
|
|
1
|
+
import{jsx as i,jsxs as c}from"react/jsx-runtime";import{Link as g,InfoCard as v}from"@backstage/core-components";import{useRouteRef as d}from"@backstage/core-plugin-api";import{useEntity as C}from"@backstage/plugin-catalog-react";import{Divider as R}from"@material-ui/core";import S from"@material-ui/core/styles/makeStyles";import{SpotifyLicenseBanner as I}from"@spotify/backstage-plugin-core";import{Fragment as L}from"react";import{useAllCertifications as w}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as b}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationTrackRouteRef as x,certificationPlaylistTrackRouteRef as E}from"../../routes.esm.js";import{soundcheckBackend as N,invalidLicenseMessage as j}from"../../utils/license.esm.js";import{AlertPanel as A}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as P}from"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{NoCertifications as T}from"../EmptyState/EmptyState.esm.js";import{CardSkeleton as B}from"./skeletons/CardSkeleton.esm.js";const m=S(t=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:t.spacing(2)},emptyState:{overflow:"hidden"}})),n=({children:t,title:e})=>{const o=m();return i(v,{title:e,children:c("div",{className:o.infoCard,children:[i(I,{inline:!0,backend:N,invalidLicenseMessage:j}),t]})})},D=(t,e)=>t.find(o=>o.trackIds.some(a=>a===e))?.id??"",M=({title:t="Soundcheck"})=>{const{entity:e}=C(),o=m(),{data:a,isError:l,isLoading:p}=w(e),{data:s,isError:f,isLoading:k}=b(e),y=d(x),h=d(E);return l||f?i(n,{title:t,children:i(A,{severity:"error",title:"Error loading certifications"})}):p||k||!a||!s?i(n,{title:t,children:i(B,{})}):a.length?i(n,{title:t,children:a.map((r,u)=>c(L,{children:[c("div",{className:o.certificationWrapper,"data-testid":"soundcheck-track-row",children:[i(P,{name:r.track.name,badge:r.track.badge,trackType:r.track?.type},r.track.id),i(g,{to:r.track.type==="playlist"?h({playlistId:D(s,r.track.id),trackId:r.track.id}):y({trackId:r.track.id}),children:"View Details"})]}),u<a.length-1?i(R,{}):null]},r.track.name))}):i(n,{title:t,children:i("div",{className:o.emptyState,children:i(T,{})})})};export{M as Card,m as useStyles};
|
|
2
2
|
//# sourceMappingURL=Card.esm.js.map
|