@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
package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as a,jsx as e,Fragment as T}from"react/jsx-runtime";import{makeStyles as b,Box as C,Grid as n,Typography as m,TextField as h,FormHelperText as N,Tooltip as v,IconButton as g}from"@material-ui/core";import S from"@material-ui/icons/Add";import q from"@material-ui/icons/Remove";import F from"classnames";import{highlight as I,languages as E}from"prismjs";import"prismjs/components/prism-sql";import{useFormContext as $,useFieldArray as D,Controller as p}from"react-hook-form";import L from"react-simple-code-editor";import{FormControlledSelect as x}from"../../../FormControlledSelect/FormControlledSelect.esm.js";import{FormFieldLabel as _}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import*as k from"../Common/css/prism-dark-sql.css.esm.js";import{DATA_TYPES as H,FOREIGN_KEY_OPTIONS as P,DEFAULT_SCHEMA_ITEM as j}from"./utils.esm.js";const w=b(t=>({...k,root:{paddingTop:t.spacing(1)},textInput:{marginTop:0,width:"580px"},queryCaption:{width:"580px",display:"block"},queryInput:{marginTop:0,width:"580px",minHeight:"100px",maxHeight:"300px",overflowY:"scroll",outline:`1px solid ${t.palette.action.disabled}`,borderRadius:"6px",display:"grid","&:hover":{outlineColor:t.palette.textContrast}},queryInputError:{outlineColor:t.palette.error.main,"&:hover":{outlineColor:t.palette.error.main}},queryTextarea:{outline:"none"},caption:{margin:t.spacing(2,0)},nameInput:{marginTop:0,display:"inline"},selectInput:{marginTop:0,width:"150px"},helperText:{marginLeft:0}})),O=({name:t,disabled:o})=>{const i=w(),{control:l}=$(),{fields:u,insert:y,remove:f}=D({control:l,name:`${t}.schema`});return a(C,{children:[a(n,{container:!0,spacing:1,direction:"column",className:i.root,children:[a(n,{item:!0,children:[e(m,{variant:"subtitle2",children:"Fact Name"}),e(p,{name:`${t}.factName`,control:l,render:({field:d,fieldState:{error:r}})=>e(h,{...d,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:i.textInput,disabled:o,error:!!r,helperText:r?.message??"Fact name must be unique",FormHelperTextProps:{className:i.helperText}})})]}),a(n,{item:!0,children:[e(m,{variant:"subtitle2",children:"GCP Project ID (Optional)"}),e(p,{name:`${t}.projectId`,control:l,render:({field:d,fieldState:{error:r}})=>e(h,{...d,type:"text",variant:"outlined",margin:"dense",placeholder:"Project ID",className:i.textInput,disabled:o,error:!!r,helperText:r?.message??"Google Cloud project ID",FormHelperTextProps:{className:i.helperText}})})]}),a(n,{item:!0,children:[e(_,{title:"SQL Query (GoogleSQL)",docLink:"https://cloud.google.com/bigquery/docs/introduction-sql"}),e(m,{variant:"caption",className:i.queryCaption,children:"The query can be parameterized, supported named parameters are @entity_refs and @entity_names (the values will be resolved automatically)"}),e(p,{name:`${t}.query`,control:l,render:({field:d,fieldState:{error:r}})=>a(T,{children:[e("div",{className:F(i.queryInput,r?i.queryInputError:void 0),children:e(L,{...d,highlight:s=>I(s,E.sql,"sql"),onValueChange:d.onChange,padding:10,disabled:o,placeholder:"Example: SELECT * FROM [bigquery-data:catalog.entities] WHERE entity_ref IN UNNEST(@entity_refs)",textareaClassName:i.queryTextarea})}),e(N,{className:i.helperText,error:!!r,children:r?.message??"Consider updating the collector's batch size to schedule the query for multiple entities at once"})]})})]})]}),a("div",{className:i.caption,children:[e(m,{variant:"subtitle1",children:"Output Schema"}),e(m,{variant:"caption",children:"List the columns returned by the query"})]}),e(n,{container:!0,spacing:0,direction:"column",children:u.map((d,r)=>a(n,{item:!0,container:!0,alignItems:"center",spacing:2,children:[a(n,{item:!0,children:[e(m,{variant:"subtitle2",children:"Column Name"}),e(p,{name:`${t}.schema.${r}.name`,control:l,render:({field:s,fieldState:{error:c}})=>e(h,{...s,type:"text",variant:"outlined",margin:"dense",placeholder:"Column Name",className:i.nameInput,disabled:o,error:!!c,helperText:c?.message??" ",FormHelperTextProps:{className:i.helperText}})})]}),a(n,{item:!0,children:[e(m,{variant:"subtitle2",children:"Data Type"}),e(p,{name:`${t}.schema.${r}.type`,control:l,render:({field:s,fieldState:{error:c}})=>e(x,{...s,control:l,placeholder:"Data Type",options:H,disabled:o,helperText:c?.message??" "})})]}),a(n,{item:!0,children:[e(v,{placement:"top",title:"Select a value if the column is a foreign key that references a catalog entity field",children:e(m,{variant:"subtitle2",children:"Foreign Key"})}),e(p,{name:`${t}.schema.${r}.foreignKey`,control:l,render:({field:s,fieldState:{error:c}})=>e(x,{...s,control:l,placeholder:"Foreign Key",options:P,disabled:o,helperText:c?.message??" "})})]}),a(n,{item:!0,children:[e(g,{onClick:()=>f(r),disabled:o||u.length===1,children:e(q,{fontSize:"small"})}),e(g,{onClick:()=>y(r+1,j),disabled:o,children:e(S,{fontSize:"small"})})]})]},d.id))})]})};export{O as QueryFactDetailsComponent};
|
|
2
2
|
//# sourceMappingURL=QueryFactDetailsComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validNameRegex as
|
|
1
|
+
import{validFactNameRegex as g,invalidFactNameErrorMessage as d,validNameRegex as m,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 p}from"../Common/CollectorOption.esm.js";const l="Fact name is not unique",r="Max 100 characters",x=p.extend({factDetails:e.strictObject({factName:e.string().min(1,a).max(100,r).regex(g,d),projectId:e.string().optional(),query:e.string().min(1,a),schema:e.array(e.strictObject({name:e.string().min(1,a).max(100,r).regex(m,n),type:e.string().min(1,a).max(100,r).regex(m,n).optional(),foreignKey:e.string().optional()})).optional()})}).strict(),N=e.strictObject({enabled:e.boolean(),collectors:e.array(x).superRefine((c,f)=>{const o=c.map(t=>t.factDetails.factName),s=o.filter((t,i)=>o.indexOf(t)!==i);s.length&&c.forEach((t,i)=>{s.includes(t.factDetails.factName)&&f.addIssue({code:e.ZodIssueCode.custom,message:l,path:[i,"factDetails","factName"]})})})}),_=e.strictObject({query:N});export{l as FACT_NAME_IS_NOT_UNIQUE_MSG,r as MAX_100_CHARACTERS_MSG,_ as bigQueryCollectorFormSchema};
|
|
2
2
|
//# sourceMappingURL=validation.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as v,FormProvider as b}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 B}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as w}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}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 N}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as D,confirmationModalContent as M}from"../Common/utils.esm.js";import{mapConfigToCatalogCollectorConfig as P,defaultCatalogConfig as T,mapCatalogCollectorConfigToConfig as j}from"./utils.esm.js";const H=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),R=({disabled:t,selectedCollector:r})=>{const e=v({defaultValues:r?P(r.config):T(),mode:"onChange"}),{formState:{errors:n},handleSubmit:i}=e,a=H(),s=!!n.entityDescriptor,{mutateAsync:l}=w(),[c,p]=B(x),{showModal:f}=y(),m=async g=>{if(!await f(M(r)))return;const d=j(g);await l({collectorId:r.id,config:d})&&p()};return N(D(r)),C(u,{children:[o(S,{className:a.form,children:o(b,{...e,children:o("form",{onSubmit:i(m),children:o(k,{name:"entityDescriptor",label:"Entity Descriptor",description:"Collects entities from Backstage's Software Catalog.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:c,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:s})})]})};export{R as CatalogConfigurator};
|
|
2
2
|
//# sourceMappingURL=CatalogConfigurator.esm.js.map
|
package/dist/components/CollectorPage/Configurators/Common/CollectorSchedulingOptions.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as l,Fragment as D,jsx as e}from"react/jsx-runtime";import{makeStyles as S,Box as n,Typography as m,Divider as x,Button as B,TextField as F}from"@material-ui/core";import{useCallback as g}from"react";import{useFormContext as k,Controller as h}from"react-hook-form";import{validateFrequency as v}from"../../../../utils/frequency.esm.js";import{FormFieldLabel as p}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import"../../../Frequency/types.esm.js";import{defaultInitialDelay as $}from"../../../Frequency/util.esm.js";import{FrequencyComponent as f}from"../../../Frequency/FrequencyComponent.esm.js";const w=S(r=>({root:{borderTop:`1px solid ${r.palette.divider}`},divider:{marginTop:r.spacing(3),marginBottom:r.spacing(3)}})),I=({name:r,disabled:d})=>{const u=w(),{control:c,setValue:o,watch:C}=k(),y=g(()=>{o(`${r}.initialDelay`,$())},[r,o]),T=g(()=>{o(`${r}.initialDelay`,void 0)},[r,o]),s=C(`${r}.initialDelay`);return l(D,{children:[l(n,{marginBottom:2,children:[e(p,{title:"Schedule For Automatic Collection"}),e(m,{variant:"caption",children:"Checks that depend on this fact are automatically updated when the facts are collected."})]}),e(h,{name:`${r}.frequency`,control:c,rules:{validate:v},render:({field:t,fieldState:{error:a}})=>e(f,{disabled:d,value:t.value,onChange:t.onChange,errors:a})}),e(x,{className:u.divider}),l(n,{marginBottom:2,marginTop:2,children:[e(p,{title:"Initial Delay (Optional)"}),e(m,{variant:"caption",children:"The collection will start after the initial delay when soundcheck starts up."}),s&&e(n,{marginTop:2,marginBottom:3,children:e(h,{name:`${r}.initialDelay`,control:c,rules:{validate:t=>t?v(t):!0},render:({field:t,fieldState:{error:a}})=>e(f,{disabled:d,value:t.value,onChange:t.onChange,errors:a,intervalTitle:"Start after a set interval",intervalDescription:"Collection will start when soundcheck starts up after the set interval.",intervalLabel:"After",cronTitle:"Start on a cron schedule",cronDescription:"Set a specific start schedule using a cron expression."})})}),e(n,{marginTop:2,children:l(B,{variant:"outlined",size:"small",onClick:s?T:y,children:[s?"Remove":"Add"," Initial Delay"]})})]}),l(n,{marginTop:3,paddingTop:2,paddingBottom:2,className:u.root,children:[e(p,{title:"Batch Size (Optional)"}),e(m,{variant:"caption",children:"Modifies the batch size that the collector uses. In general this option should not be changed and can affect rate limits."}),e(n,{marginTop:1,children:e(h,{name:`${r}.batchSize`,control:c,render:({field:t,fieldState:a})=>e(F,{...t,onChange:i=>{if(i.target.value){const b=parseInt(i.target.value,10)??null;t.onChange({...i,target:{...i.target,value:b}})}else t.onChange({...i,target:{...i.target,value:null}})},placeholder:"Default: 1",value:t.value??void 0,type:"number",variant:"outlined",margin:"dense",disabled:d,error:!!a.error,helperText:a.error?.message})})})]})]})};export{I as CollectorSchedulingOptions};
|
|
2
2
|
//# sourceMappingURL=CollectorSchedulingOptions.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as c,jsx as l,Fragment as K}from"react/jsx-runtime";import{makeStyles as w,FormControlLabel as G,Checkbox as q,Box as L,Typography as F,Divider as O,Tabs as P,Tab as p,Grid as f,Button as x}from"@material-ui/core";import W from"@material-ui/icons/Add";import E from"@material-ui/icons/Remove";import{useState as H}from"react";import{useFormContext as J,useFieldArray as M,useWatch as Q,Controller as y}from"react-hook-form";import{validateCacheConfig as U}from"../../../../utils/collectors.esm.js";import"lodash";import"../../../Frequency/types.esm.js";import"../../../Frequency/util.esm.js";import"../../../Frequency/FrequencyComponent.esm.js";import{CacheConfigComponent as X}from"../../../CacheConfig/CacheConfigComponent.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import{FilterComponent as Y}from"../../../Filter/FilterComponent.esm.js";import{CollectorSchedulingOptions as Z}from"./CollectorSchedulingOptions.esm.js";const _=w(e=>({root:{padding:e.spacing(1.5,6)},tabsContainer:{marginRight:16},tab:{height:"64px",textAlign:"left"},contentContainer:{width:"100%",padding:e.spacing(1)},divider:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},checkBox:{marginRight:e.spacing(1)},buttonsContainer:{marginTop:e.spacing(1),marginBottom:e.spacing(2)}})),g="FactDetails",u="Schedule",N="Filters",k="Caching",ee=({name:e,label:C,description:S,disabled:s,FactDetailsComponent:m,multipleCollectors:r})=>{const{control:d,formState:D}=J(),$=D.errors?.[e],{fields:B,insert:V,remove:A}=M({control:d,name:r?.enable?`${e}.collectors`:e}),h=r?.enable?B:[{id:e}],v=m?g:u,[o,b]=H(Array(h.length).fill(v)),T=(i,a,n)=>{b([...o.slice(0,n),a,...o.slice(n+1)])},R=i=>{V(i+1,r?.defaultConfig),b([...o.slice(0,i+1),v,...o.slice(i+1)])},j=i=>{A(i),b([...o.slice(0,i),...o.slice(i+1)])},z=Q({control:d,name:`${e}.enabled`}),t=_();return c("div",{className:t.root,children:[l(y,{name:`${e}.enabled`,control:d,render:({field:i})=>l(G,{control:l(q,{...i,checked:i.value,"data-testid":`${e}-switch`,disabled:s,className:t.checkBox}),label:c(L,{display:"flex",flexDirection:"column",children:[l(F,{variant:"body1",component:"span",children:l("b",{children:`${C}`})}),l(F,{variant:"caption",color:"textSecondary",component:"p",children:`${S}`})]})})}),z&&l("div",{children:h.map((i,a)=>c("div",{children:[a!==0&&l(O,{className:t.divider}),c(P,{orientation:"horizontal",variant:"scrollable",value:o[a],onChange:(n,I)=>T(n,I,a),className:t.tabsContainer,children:[m&&l(p,{label:"Fact Details",value:g,className:t.tab}),l(p,{label:"Schedule",value:u,className:t.tab}),l(p,{label:"Filters",value:N,className:t.tab}),l(p,{label:"Caching",value:k,className:t.tab})]}),c("div",{className:t.contentContainer,children:[o[a]===g&&m&&l(m,{name:r?.enable?`${e}.collectors.${a}.factDetails`:`${e}.factDetails`,disabled:s}),o[a]===u&&l(K,{children:l(Z,{name:r?.enable?`${e}.collectors.${a}`:e})}),o[a]===N&&l(Y,{disabled:s,filterName:r?.enable?`${e}.collectors.${a}.filters.filter`:`${e}.filters.filter`,keyValueFilterName:r?.enable?`${e}.collectors.${a}.filters.keyValueFilter`:`${e}.filters.keyValueFilter`,excludeFilterName:r?.enable?`${e}.collectors.${a}.filters.excludeFilter`:`${e}.filters.excludeFilter`,excludeKeyValueFilterName:r?.enable?`${e}.collectors.${a}.filters.excludeKeyValueFilter`:`${e}.filters.excludeKeyValueFilter`}),o[a]===k&&l(y,{name:r?.enable?`${e}.collectors.${a}.cacheConfig`:`${e}.cacheConfig`,control:d,rules:{validate:U},render:({field:n})=>l(X,{disabled:s,value:n.value,onChange:n.onChange,errors:r?.enable?$?.collectors?.[a]?.cacheConfig:$?.cacheConfig})})]}),r?.enable&&c(f,{container:!0,spacing:1,className:t.buttonsContainer,children:[h.length>1&&l(f,{item:!0,children:l(x,{startIcon:l(E,{}),onClick:()=>j(a),disabled:s,variant:"outlined",size:"small",color:"secondary",children:"Remove"})}),l(f,{item:!0,children:c(x,{startIcon:l(W,{}),onClick:()=>R(a),disabled:s,variant:"outlined",size:"small",color:"primary",children:["Add ",C]})})]})]},i.id))})]})};export{ee as FactCollectionConfig};
|
|
2
2
|
//# sourceMappingURL=FactCollectionConfig.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{mapToCacheConfig as c,mapCacheConfigToHumanDurationOrBoolean as f}from"../../../CacheConfig/utils.esm.js";import"../../../CacheConfig/CacheConfigComponent.esm.js";import{mapCatalogFilterToFilters as
|
|
1
|
+
import{mapToCacheConfig as c,mapCacheConfigToHumanDurationOrBoolean as f}from"../../../CacheConfig/utils.esm.js";import"../../../CacheConfig/CacheConfigComponent.esm.js";import{mapCatalogFilterToFilters as a,mapCatalogFilterToFormKeyValueFilters as o,mapFiltersToCatalogFilter as r}from"../../../Filter/utils.esm.js";import"../../../Filter/FilterComponent.esm.js";import"../../../Frequency/types.esm.js";import{mapHumanDurationOrCronToFrequency as n,mapFrequencyToHumanDurationOrCron as l}from"../../../Frequency/util.esm.js";import"../../../Frequency/FrequencyComponent.esm.js";const u=e=>({title:e.name??e.id,description:e.description,docLink:`https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/${e.id}`}),p=e=>({title:"Update Integration",message:`Are you sure you want to update the ${e.name} integration? This will overwrite any configurations currently saved in the database. Configs saved this way will have priority over anything configured in YAML.`,error:!1}),s=({configOption:e,factType:i,additionalParams:t={}})=>({type:i,frequency:l(e.frequency),filter:r(e.filters.filter,e.filters.keyValueFilter),exclude:r(e.filters.excludeFilter,e.filters.excludeKeyValueFilter),cache:f(e.cacheConfig),batchSize:e.batchSize??void 0,initialDelay:e.initialDelay?l(e.initialDelay):void 0,...t}),d=({parentConfig:e,factTypeConfig:i})=>{const t=i.initialDelay??e.initialDelay;return{frequency:n(i.frequency??e.frequency),filters:{filter:a(i.filter??e.filter),keyValueFilter:o(i.filter??e.filter),excludeFilter:a(i.exclude??e.exclude),excludeKeyValueFilter:o(i.exclude??e.exclude)},cacheConfig:c(i.cache??e.cache),batchSize:i.batchSize??e.batchSize,initialDelay:t?n(t):void 0}};export{u as collectorHeaderContent,p as confirmationModalContent,d as mapBackendConfigToFormIntegrationConfig,s as mapFormIntegrationConfigToBackendConfig};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{AzureDevOpsConfigurator as i}from"./AzureDevOps/AzureDevOpsConfigurator.esm.js";import{BigQueryConfigurator as a}from"./BigQuery/BigQueryConfigurator.esm.js";import{CatalogConfigurator as m}from"./Catalog/CatalogConfigurator.esm.js";import{DataDogConfigurator as e}from"./DataDog/DataDogConfigurator.esm.js";import{DataRegistryConfigurator as f}from"./DataRegistry/DataRegistryConfigurator.esm.js";import{GithubConfigurator as u}from"./Github/GithubConfigurator.esm.js";import{GitlabConfigurator as g}from"./Gitlab/GitlabConfigurator.esm.js";import{HttpConfigurator as n}from"./HTTP/HttpConfigurator.esm.js";import{JiraConfigurator as p}from"./Jira/JiraConfigurator.esm.js";import{KubernetesConfigurator as C}from"./Kubernetes/KubernetesConfigurator.esm.js";import{NewRelicConfigurator as s}from"./NewRelic/NewRelicConfigurator.esm.js";import{PagerDutyConfigurator as c}from"./PagerDuty/PagerDutyConfigurator.esm.js";import{ScmConfigurator as l}from"./SCM/ScmConfigurator.esm.js";import{SonarQubeConfigurator as b}from"./SonarQube/SonarQubeConfigurator.esm.js";const d={github:u,gitlab:g,scm:l,pagerduty:c,datadog:e,kubernetes:C,jira:p,sonarqube:b,newrelic:s,bigquery:a,catalog:m,azure:i,http:n,"data-registry":f},y=({selectedCollector:r})=>{const o=d[r?.id];return t(o,{selectedCollector:r})};export{y as Configurator};
|
|
2
2
|
//# sourceMappingURL=Configurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as s,Fragment as C,jsx as o}from"react/jsx-runtime";import{makeStyles as D,Paper as b,Divider as h}from"@material-ui/core";import{useForm as S,FormProvider as j}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 F}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as L}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as k}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 x}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as c}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as B,confirmationModalContent as N}from"../Common/utils.esm.js";import{mapConfigToDataDogCollectorConfig as O,defaultDataDogConfig as M,mapDataDogCollectorConfigToConfig as P}from"./utils.esm.js";const T=D(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),H=({disabled:e,selectedCollector:i})=>{const t=S({defaultValues:i?O(i.config):M(),mode:"onChange"}),{formState:{errors:r},handleSubmit:a}=t,n=T(),l=!!r.serviceDefinition||!!r.serviceLevelObjective,{mutateAsync:d}=L(),[f,p]=F(k),{showModal:g}=y(),m=async v=>{if(!await g(N(i)))return;const u=P(v);await d({collectorId:i.id,config:u})&&p()};return x(B(i)),s(C,{children:[o(b,{className:n.section,children:o(j,{...t,children:s("form",{onSubmit:a(m),children:[o(c,{name:"serviceDefinition",label:"Service Definition",description:"Collects details about Datadog service linked to an entity.",disabled:e}),o(h,{}),o(c,{name:"serviceLevelObjective",label:"Service Level Objective",description:"Collects details about SLOs configured for a Datadog service linked to an entity.",disabled:e})]})})}),o("div",{className:n.section,children:o(w,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:a(m),disableSave:l})})]})};export{H as DataDogConfigurator};
|
|
2
2
|
//# sourceMappingURL=DataDogConfigurator.esm.js.map
|
package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as y,FormProvider as v}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 b}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as D}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}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 w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as x}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as N,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToDataRegistryCollectorConfig as M,defaultDataRegistryConfig as P,mapDataRegistryCollectorConfigToConfig as j}from"./utils.esm.js";const k=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const r=y({defaultValues:e?M(e.config):P(),mode:"onChange"}),{formState:{errors:n},handleSubmit:i}=r,a=k(),s=!!n.datasetSchema,{mutateAsync:c}=D(),[l,p]=b(B),{showModal:f}=R(),m=async d=>{if(!await f(T(e)))return;const g=j(d);await c({collectorId:e.id,config:g})&&p()};return w(N(e)),C(u,{children:[o(S,{className:a.form,children:o(v,{...r,children:o("form",{onSubmit:i(m),children:o(x,{name:"datasetSchema",label:"Dataset Schema",description:"Collects fields (name, type, description) from a dataset in Data Registry.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:l,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:s})})]})};export{H as DataRegistryConfigurator};
|
|
2
|
+
//# sourceMappingURL=DataRegistryConfigurator.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{asArray as f}from"@spotify/backstage-plugin-soundcheck-common";import{defaultCollectorOption as s}from"../Common/CollectorOption.esm.js";import{mapBackendConfigToFormIntegrationConfig as p,mapFormIntegrationConfigToBackendConfig as g}from"../Common/utils.esm.js";const n="dataset-schema",i=o=>({datasetSchema:s({...o,filter:[{kind:["Api"],"spec.type":["dataset"]}]})});function l(o){const{datasetSchema:t}=o;if(t.enabled){const e={},a=[];return e.collects=a,a.push(g({factType:n,configOption:t})),e}return{collects:[]}}function C(o){const t=i(o);if(o){const e=o.collects;if(e)for(const a of f(e)){const r=a.type,c={...p({factTypeConfig:a,parentConfig:o}),enabled:!0};r===n&&(t.datasetSchema=c)}}return t}export{n as DATASET_SCHEMA_COLLECTOR_TYPE,i as defaultDataRegistryConfig,C as mapConfigToDataRegistryCollectorConfig,l as mapDataRegistryCollectorConfigToConfig};
|
|
2
|
+
//# sourceMappingURL=utils.esm.js.map
|
package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as u,jsx as e}from"react/jsx-runtime";import{Typography as n,Box as m,TextField as c}from"@material-ui/core";import{useFormContext as S,Controller as s}from"react-hook-form";import{FormControlledAutocomplete as p}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as f}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"react";import{FormFieldLabel as d}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as x}from"./GithubConfigurator.esm.js";import{CODE_SCANNING_ALERTS_STATE_OPTIONS as T,CODE_SCANNING_ALERTS_SEVERITY_OPTIONS as v}from"./types.esm.js";const b=({name:r,disabled:a})=>{const l=x(),{control:i}=S(),h=f(T.map(t=>({label:t,value:t}))),N=f(v.map(t=>({label:t,value:t})));return u("div",{className:l.root,children:[e(d,{title:"Fact Name"}),e(n,{variant:"caption",children:"Fact name must be unique"}),e(m,{children:e(s,{name:`${r}.factName`,control:i,render:({field:t,fieldState:{error:o}})=>e(c,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:l.formInput,disabled:a,error:!!o,helperText:o?.message,FormHelperTextProps:{className:l.helperText}})})}),e(d,{title:"Code Scanning Tool Name"}),e(n,{variant:"caption",children:"Optional, if not provided results by all code scanning tools will be collected"}),e(m,{children:e(s,{name:`${r}.toolName`,control:i,render:({field:t,fieldState:{error:o}})=>e(c,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Example: CodeQL",className:l.formInput,disabled:a,error:!!o,helperText:o?.message,FormHelperTextProps:{className:l.helperText}})})}),e(d,{title:"Code Scanning Alert State"}),e(n,{variant:"caption",children:"Optional, if not provided code scanning alerts with all states will be collected"}),e(m,{className:l.formInput,children:e(p,{name:`${r}.state`,control:i,fullWidth:!0,freeSolo:!1,disabled:a,placeholder:"Example: open",...h})}),e(d,{title:"Code Scanning Alert Severity"}),e(n,{variant:"caption",children:"Optional, if not provided code scanning alerts with all severities will be collected"}),e(m,{className:l.formInput,children:e(p,{name:`${r}.severity`,control:i,fullWidth:!0,freeSolo:!1,disabled:a,placeholder:"Example: critical",...N})})]})};export{b as CodeScanningAlertsFactDetails};
|
|
2
|
+
//# sourceMappingURL=CodeScanningAlertsFactDetails.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as h,jsx as e}from"react/jsx-runtime";import{Typography as i,Box as m,TextField as u}from"@material-ui/core";import{useFormContext as b,Controller as T}from"react-hook-form";import"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{FormControlledMultipleAutocomplete as d}from"../../../FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js";import{useLabelOptions as s}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{useStyles as v}from"./GithubConfigurator.esm.js";import{DEPENDABOT_ALERTS_STATE_OPTIONS as x,DEPENDABOT_ALERTS_SEVERITY_OPTIONS as N}from"./types.esm.js";const S=({name:r,disabled:o})=>{const l=v(),{control:a}=b(),c=s(x.map(t=>({label:t,value:t}))),f=s(N.map(t=>({label:t,value:t})));return h("div",{className:l.root,children:[e(n,{title:"Fact Name"}),e(i,{variant:"caption",children:"Fact name must be unique"}),e(m,{children:e(T,{name:`${r}.factName`,control:a,render:({field:t,fieldState:{error:p}})=>e(u,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:l.formInput,disabled:o,error:!!p,helperText:p?.message,FormHelperTextProps:{className:l.helperText}})})}),e(n,{title:"Dependabot Alert States"}),e(i,{variant:"caption",children:"Optional, if not provided dependabot alerts with all states will be collected"}),e(m,{className:l.formInput,children:e(d,{name:`${r}.states`,control:a,fullWidth:!0,freeSolo:!1,disabled:o,placeholder:"Example: open",...c})}),e(n,{title:"Dependabot Alert Severities"}),e(i,{variant:"caption",children:"Optional, if not provided dependabot alerts with all severities will be collected"}),e(m,{className:l.formInput,children:e(d,{name:`${r}.severities`,control:a,fullWidth:!0,freeSolo:!1,disabled:o,placeholder:"Example: critical",...f})})]})};export{S as DependabotAlertsFactDetails};
|
|
2
|
+
//# sourceMappingURL=DependabotAlertsFactDetails.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as d,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as A}from"@hookform/resolvers/zod";import{makeStyles as F,Paper as v,Divider as r}from"@material-ui/core";import{useForm as D,FormProvider as R}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 B}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as L}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as T}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as N}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 i}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as w,confirmationModalContent as G}from"../Common/utils.esm.js";import{CodeScanningAlertsFactDetails as E}from"./CodeScanningAlertsFactDetails.esm.js";import{DependabotAlertsFactDetails as I}from"./DependabotAlertsFactDetails.esm.js";import{SecretScanningAlertsFactDetails as M}from"./SecretScanningAlertsFactDetails.esm.js";import{SecurityAdvisoriesFactDetails as O}from"./SecurityAdvisoriesFactDetails.esm.js";import{mapConfigToGithubCollectorConfig as _,defaultGithubConfig as j,DEFAULT_NEW_COLLECTOR_CONFIG as n,mapGithubCollectorConfigToConfig as k}from"./utils.esm.js";import{githubCollectorFormSchema as H}from"./validation.esm.js";const p=F(o=>({spacer:{height:o.spacing(8),width:"100%"},section:{marginBottom:o.spacing(2)},form:{marginBottom:o.spacing(2)},root:{paddingTop:o.spacing(1)},formInput:{marginTop:0,marginBottom:o.spacing(2),width:"500px"},helperText:{marginLeft:0}})),U=({disabled:o,selectedCollector:a})=>{const s=D({defaultValues:a?_(a.config):j(),mode:"onChange",resolver:A(H)}),{formState:{errors:t},handleSubmit:l}=s,c=p(),f=!!t.branchProtections||!!t.branchRules||!!t.codeScanningAlerts||!!t.dependabotAlerts||!!t.repositoryDetails||!!t.repositoryLanguages||!!t.secretScanningAlerts||!!t.securityAdvisories,{mutateAsync:u}=T(),[g,b]=L(x),{showModal:C}=B(),m=async y=>{if(!await C(G(a)))return;const h=k(y);await u({collectorId:a.id,config:h})&&b()};return P(w(a)),d(S,{children:[e(v,{className:c.form,children:e(R,{...s,children:d("form",{onSubmit:l(m),children:[e(i,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"branchRules",label:"Branch Rules",description:"Collects branch rules information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"codeScanningAlerts",label:"Code Scanning Alerts",description:"Collects details about code scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:E,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"dependabotAlerts",label:"Dependabot Alerts",description:"Collects details about dependabot alerts for an entity's repository.",disabled:o,FactDetailsComponent:I,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"repositoryLanguages",label:"Repository Languages",description:"Collects details about the languages used in an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"secretScanningAlerts",label:"Secret Scanning Alerts",description:"Collects details about secret scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:M,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"securityAdvisories",label:"Security Advisories",description:"Collects details about security advisories for an entity's repository.",disabled:o,FactDetailsComponent:O,multipleCollectors:{enable:!0,defaultConfig:n}})]})})}),e("div",{className:c.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(m),disableSave:f})})]})};export{U as GithubConfigurator,p as useStyles};
|
|
2
2
|
//# sourceMappingURL=GithubConfigurator.esm.js.map
|
package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as f,jsx as e}from"react/jsx-runtime";import{Typography as i,Box as n,TextField as S}from"@material-ui/core";import{useFormContext as u,Controller as h}from"react-hook-form";import{FormControlledAutocomplete as N}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{FormControlledMultipleAutocomplete as T}from"../../../FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js";import{useLabelOptions as p}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"@material-ui/lab";import"react";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{FormFieldLabel as m}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as v}from"./GithubConfigurator.esm.js";import{SECRET_SCANNING_ALERTS_STATE_OPTIONS as x,SECRET_SCANNING_ALERTS_VALIDITY_OPTIONS as b}from"./types.esm.js";const A=({name:r,disabled:o})=>{const l=v(),{control:a}=u(),s=p(x.map(t=>({label:t,value:t}))),d=p(b.map(t=>({label:t,value:t})));return f("div",{className:l.root,children:[e(m,{title:"Fact Name"}),e(i,{variant:"caption",children:"Fact name must be unique"}),e(n,{children:e(h,{name:`${r}.factName`,control:a,render:({field:t,fieldState:{error:c}})=>e(S,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:l.formInput,disabled:o,error:!!c,helperText:c?.message,FormHelperTextProps:{className:l.helperText}})})}),e(m,{title:"Secret Scanning Alert State"}),e(i,{variant:"caption",children:"Optional, if not provided secret scanning alerts with all states will be collected"}),e(n,{className:l.formInput,children:e(N,{name:`${r}.state`,control:a,fullWidth:!0,freeSolo:!1,disabled:o,placeholder:"Example: open",...s})}),e(m,{title:"Secret Scanning Alert Validities"}),e(i,{variant:"caption",children:"Optional, if not provided secret scanning alerts with all validities will be collected"}),e(n,{className:l.formInput,children:e(T,{name:`${r}.validities`,control:a,fullWidth:!0,freeSolo:!1,disabled:o,placeholder:"Example: active",...d})})]})};export{A as SecretScanningAlertsFactDetails};
|
|
2
|
+
//# sourceMappingURL=SecretScanningAlertsFactDetails.esm.js.map
|
package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as d,jsx as e}from"react/jsx-runtime";import{Typography as m,Box as s,TextField as c}from"@material-ui/core";import{useFormContext as u,Controller as f}from"react-hook-form";import{FormControlledAutocomplete as h}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as x}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"react";import{FormFieldLabel as n}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as S}from"./GithubConfigurator.esm.js";import{SECURITY_ADVISORIES_STATE_OPTIONS as F}from"./types.esm.js";const b=({name:o,disabled:l})=>{const t=S(),{control:i}=u(),p=x(F.map(r=>({label:r,value:r})));return d("div",{className:t.root,children:[e(n,{title:"Fact Name"}),e(m,{variant:"caption",children:"Fact name must be unique"}),e(s,{children:e(f,{name:`${o}.factName`,control:i,render:({field:r,fieldState:{error:a}})=>e(c,{...r,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:t.formInput,disabled:l,error:!!a,helperText:a?.message,FormHelperTextProps:{className:t.helperText}})})}),e(n,{title:"Security Advisory State"}),e(m,{variant:"caption",children:"Optional, if not provided security advisories with all states will be collected"}),e(s,{className:t.formInput,children:e(h,{name:`${o}.state`,control:i,fullWidth:!0,freeSolo:!1,disabled:l,placeholder:"Example: published",...p})})]})};export{b as SecurityAdvisoriesFactDetails};
|
|
2
|
+
//# sourceMappingURL=SecurityAdvisoriesFactDetails.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _="BranchProtections",E="branch_protections",T="BranchRules",A="branch_rules",S="CodeScanningAlerts",N="code_scanning_alerts",e="open",R=["open","closed","dismissed","fixed"],O=["critical","high","medium","low","warning","note","error"],C="DependabotAlerts",L="dependabot_alerts",i=["open"],s=["open","fixed","dismissed","auto_dismissed"],I=["critical","high","medium","low"],n="RepositoryDetails",o="repository_details",r="RepositoryLanguages",t="repository_languages",a="SecretScanningAlerts",D="secret_scanning_alerts",P="open",c=["open","resolved"],d=["active","inactive","unknown"],l="SecurityAdvisories",Y="security_advisories",p="published",G=["triage","draft","published","closed"];export{_ as BRANCH_PROTECTIONS_COLLECTOR_TYPE,E as BRANCH_PROTECTIONS_FACT_NAME,T as BRANCH_RULES_COLLECTOR_TYPE,A as BRANCH_RULES_FACT_NAME,S as CODE_SCANNING_ALERTS_COLLECTOR_TYPE,e as CODE_SCANNING_ALERTS_DEFAULT_STATE,N as CODE_SCANNING_ALERTS_FACT_NAME,O as CODE_SCANNING_ALERTS_SEVERITY_OPTIONS,R as CODE_SCANNING_ALERTS_STATE_OPTIONS,C as DEPENDABOT_ALERTS_COLLECTOR_TYPE,i as DEPENDABOT_ALERTS_DEFAULT_STATES,L as DEPENDABOT_ALERTS_FACT_NAME,I as DEPENDABOT_ALERTS_SEVERITY_OPTIONS,s as DEPENDABOT_ALERTS_STATE_OPTIONS,n as REPOSITORY_DETAILS_COLLECTOR_TYPE,o as REPOSITORY_DETAILS_FACT_NAME,r as REPOSITORY_LANGUAGES_COLLECTOR_TYPE,t as REPOSITORY_LANGUAGES_FACT_NAME,a as SECRET_SCANNING_ALERTS_COLLECTOR_TYPE,P as SECRET_SCANNING_ALERTS_DEFAULT_STATE,D as SECRET_SCANNING_ALERTS_FACT_NAME,c as SECRET_SCANNING_ALERTS_STATE_OPTIONS,d as SECRET_SCANNING_ALERTS_VALIDITY_OPTIONS,l as SECURITY_ADVISORIES_COLLECTOR_TYPE,p as SECURITY_ADVISORIES_DEFAULT_STATE,Y as SECURITY_ADVISORIES_FACT_NAME,G as SECURITY_ADVISORIES_STATE_OPTIONS};
|
|
2
|
+
//# sourceMappingURL=types.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{asArray as u}from"@spotify/backstage-plugin-soundcheck-common";import{defaultCollectorOption as
|
|
1
|
+
import{asArray as u}from"@spotify/backstage-plugin-soundcheck-common";import{defaultBaseCollectorOption as p,defaultCollectorOption as N}from"../Common/CollectorOption.esm.js";import{mapBackendConfigToFormIntegrationConfig as n,mapFormIntegrationConfigToBackendConfig as c}from"../Common/utils.esm.js";import{CODE_SCANNING_ALERTS_FACT_NAME as A,CODE_SCANNING_ALERTS_DEFAULT_STATE as P,DEPENDABOT_ALERTS_FACT_NAME as _,DEPENDABOT_ALERTS_DEFAULT_STATES as I,SECRET_SCANNING_ALERTS_FACT_NAME as g,SECRET_SCANNING_ALERTS_DEFAULT_STATE as F,SECURITY_ADVISORIES_FACT_NAME as m,SECURITY_ADVISORIES_DEFAULT_STATE as Y,BRANCH_PROTECTIONS_COLLECTOR_TYPE as D,BRANCH_RULES_COLLECTOR_TYPE as O,CODE_SCANNING_ALERTS_COLLECTOR_TYPE as S,DEPENDABOT_ALERTS_COLLECTOR_TYPE as R,REPOSITORY_DETAILS_COLLECTOR_TYPE as h,REPOSITORY_LANGUAGES_COLLECTOR_TYPE as L,SECRET_SCANNING_ALERTS_COLLECTOR_TYPE as b,SECURITY_ADVISORIES_COLLECTOR_TYPE as y,BRANCH_PROTECTIONS_FACT_NAME as G,BRANCH_RULES_FACT_NAME as U,REPOSITORY_DETAILS_FACT_NAME as B,REPOSITORY_LANGUAGES_FACT_NAME as M}from"./types.esm.js";const H={...p(),factDetails:{factName:""}},v=a=>({branchProtections:N(a),branchRules:N(a),codeScanningAlerts:{enabled:!1,collectors:[{...p(a),factDetails:{factName:A,state:P}}]},dependabotAlerts:{enabled:!1,collectors:[{...p(a),factDetails:{factName:_,states:I}}]},repositoryDetails:N(a),repositoryLanguages:N(a),secretScanningAlerts:{enabled:!1,collectors:[{...p(a),factDetails:{factName:g,state:F}}]},securityAdvisories:{enabled:!1,collectors:[{...p(a),factDetails:{factName:m,state:Y}}]}});function V(a){const{branchProtections:i,branchRules:l,codeScanningAlerts:o,dependabotAlerts:f,repositoryDetails:r,repositoryLanguages:d,secretScanningAlerts:T,securityAdvisories:E}=a;if(i.enabled||l.enabled||o.enabled||f.enabled||r.enabled||d.enabled||T.enabled||E.enabled){const C={},s=[];return C.collects=s,i.enabled&&s.push(c({factType:D,configOption:i,additionalParams:{factName:G}})),l.enabled&&s.push(c({factType:O,configOption:l,additionalParams:{factName:U}})),o.enabled&&o.collectors.forEach(e=>{s.push(c({factType:S,configOption:e,additionalParams:{factName:e.factDetails.factName,toolName:e.factDetails.toolName?.length?e.factDetails.toolName:void 0,state:e.factDetails.state?.length?e.factDetails.state:void 0,severity:e.factDetails.severity?.length?e.factDetails.severity:void 0}}))}),f.enabled&&f.collectors.forEach(e=>{s.push(c({factType:R,configOption:e,additionalParams:{factName:e.factDetails.factName,states:e.factDetails.states?.length?e.factDetails.states:void 0,severities:e.factDetails.severities?.length?e.factDetails.severities:void 0}}))}),r.enabled&&s.push(c({factType:h,configOption:r,additionalParams:{factName:B}})),d.enabled&&s.push(c({factType:L,configOption:d,additionalParams:{factName:M}})),T.enabled&&T.collectors.forEach(e=>{s.push(c({factType:b,configOption:e,additionalParams:{factName:e.factDetails.factName,state:e.factDetails.state?.length?e.factDetails.state:void 0,validities:e.factDetails.validities?.length?e.factDetails.validities:void 0}}))}),E.enabled&&E.collectors.forEach(e=>{s.push(c({factType:y,configOption:e,additionalParams:{factName:e.factDetails.factName,state:e.factDetails.state?.length?e.factDetails.state:void 0}}))}),C}return{collects:[]}}function k(a){const i=v(a);if(a){const l=a.collects;if(l){const o=u(l),f=o.find(t=>t.type===D);f&&(i.branchProtections={...n({parentConfig:a,factTypeConfig:f}),enabled:!0});const r=o.find(t=>t.type===O);r&&(i.branchRules={...n({parentConfig:a,factTypeConfig:r}),enabled:!0});const d=o.filter(t=>t.type===S);d.length&&(i.codeScanningAlerts={enabled:!0,collectors:d.map(t=>({...n({parentConfig:a,factTypeConfig:t}),factDetails:{factName:t.factName??A,toolName:t.toolName?.length?t.toolName:void 0,state:t.state?.length?t.state:void 0,severity:t.severity?.length?t.severity:void 0}}))});const T=o.filter(t=>t.type===R);T.length&&(i.dependabotAlerts={enabled:!0,collectors:T.map(t=>({...n({parentConfig:a,factTypeConfig:t}),factDetails:{factName:t.factName??_,states:t.states?.length?t.states:void 0,severities:t.severities?.length?t.severities:void 0}}))});const E=o.find(t=>t.type===h);E&&(i.repositoryDetails={...n({parentConfig:a,factTypeConfig:E}),enabled:!0});const C=o.find(t=>t.type===L);C&&(i.repositoryLanguages={...n({parentConfig:a,factTypeConfig:C}),enabled:!0});const s=o.filter(t=>t.type===b);s.length&&(i.secretScanningAlerts={enabled:!0,collectors:s.map(t=>({...n({parentConfig:a,factTypeConfig:t}),factDetails:{factName:t.factName??g,state:t.state?.length?t.state:void 0,validities:t.validities?.length?t.validities:void 0}}))});const e=o.filter(t=>t.type===y);e.length&&(i.securityAdvisories={enabled:!0,collectors:e.map(t=>({...n({parentConfig:a,factTypeConfig:t}),factDetails:{factName:t.factName??m,state:t.state?.length?t.state:void 0}}))})}}return i}export{H as DEFAULT_NEW_COLLECTOR_CONFIG,v as defaultGithubConfig,k as mapConfigToGithubCollectorConfig,V as mapGithubCollectorConfigToConfig};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{validFactNameRegex as i,invalidFactNameErrorMessage as n}from"@spotify/backstage-plugin-soundcheck-common";import{z as e}from"zod";import{FIELD_IS_REQUIRED_MSG as m}from"../../../../utils/validation.esm.js";import{BaseCollectorSchema as A,CollectorOptionSchema as S}from"../Common/CollectorOption.esm.js";import{CODE_SCANNING_ALERTS_STATE_OPTIONS as d,CODE_SCANNING_ALERTS_SEVERITY_OPTIONS as _,DEPENDABOT_ALERTS_STATE_OPTIONS as E,DEPENDABOT_ALERTS_SEVERITY_OPTIONS as f,SECRET_SCANNING_ALERTS_STATE_OPTIONS as T,SECRET_SCANNING_ALERTS_VALIDITY_OPTIONS as O,SECURITY_ADVISORIES_STATE_OPTIONS as I,BRANCH_PROTECTIONS_FACT_NAME as u,BRANCH_RULES_FACT_NAME as g,REPOSITORY_DETAILS_FACT_NAME as p,REPOSITORY_LANGUAGES_FACT_NAME as b}from"./types.esm.js";const o="Fact name is not unique",r="Max 100 characters",D=A.merge(e.object({factDetails:e.strictObject({factName:e.string().min(1,m).max(100,r).regex(i,n),toolName:e.string().optional(),state:e.enum(d).or(e.literal("")).optional(),severity:e.enum(_).or(e.literal("")).optional()})})).strict(),R=A.merge(e.object({factDetails:e.strictObject({factName:e.string().min(1,m).max(100,r).regex(i,n),states:e.array(e.enum(E)).optional(),severities:e.array(e.enum(f)).optional()})})).strict(),C=A.merge(e.object({factDetails:e.strictObject({factName:e.string().min(1,m).max(100,r).regex(i,n),state:e.enum(T).or(e.literal("")).optional(),validities:e.array(e.enum(O)).optional()})})).strict(),h=A.merge(e.object({factDetails:e.strictObject({factName:e.string().min(1,m).max(100,r).regex(i,n),state:e.enum(I).or(e.literal("")).optional()})})).strict(),y=e.strictObject({branchProtections:S,branchRules:S,codeScanningAlerts:e.strictObject({enabled:e.boolean(),collectors:e.array(D)}),dependabotAlerts:e.strictObject({enabled:e.boolean(),collectors:e.array(R)}),repositoryDetails:S,repositoryLanguages:S,secretScanningAlerts:e.strictObject({enabled:e.boolean(),collectors:e.array(C)}),securityAdvisories:e.strictObject({enabled:e.boolean(),collectors:e.array(h)})}).superRefine((c,l)=>{const N=[u,g,p,b,...c.codeScanningAlerts.collectors.map(t=>t.factDetails.factName),...c.dependabotAlerts.collectors.map(t=>t.factDetails.factName),...c.secretScanningAlerts.collectors.map(t=>t.factDetails.factName),...c.securityAdvisories.collectors.map(t=>t.factDetails.factName)],s=N.filter((t,a)=>N.indexOf(t)!==a);s.length&&(c.codeScanningAlerts.collectors.forEach((t,a)=>{s.includes(t.factDetails.factName)&&l.addIssue({code:e.ZodIssueCode.custom,message:o,path:["codeScanningAlerts","collectors",a,"factDetails","factName"]})}),c.dependabotAlerts.collectors.forEach((t,a)=>{s.includes(t.factDetails.factName)&&l.addIssue({code:e.ZodIssueCode.custom,message:o,path:["dependabotAlerts","collectors",a,"factDetails","factName"]})}),c.secretScanningAlerts.collectors.forEach((t,a)=>{s.includes(t.factDetails.factName)&&l.addIssue({code:e.ZodIssueCode.custom,message:o,path:["secretScanningAlerts","collectors",a,"factDetails","factName"]})}),c.securityAdvisories.collectors.forEach((t,a)=>{s.includes(t.factDetails.factName)&&l.addIssue({code:e.ZodIssueCode.custom,message:o,path:["securityAdvisories","collectors",a,"factDetails","factName"]})}))});export{o as FACT_NAME_IS_NOT_UNIQUE_MSG,r as MAX_100_CHARACTERS_MSG,y as githubCollectorFormSchema};
|
|
2
|
+
//# sourceMappingURL=validation.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as l,Fragment as h,jsx as o}from"react/jsx-runtime";import{makeStyles as j,Paper as v,Divider as c}from"@material-ui/core";import{useForm as P,FormProvider as S}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 B}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}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 D}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as G,confirmationModalContent as L}from"../Common/utils.esm.js";import{mapConfigToGitlabCollectorConfig as N,defaultGitlabConfig as T,mapGitlabCollectorConfigToConfig as M}from"./utils.esm.js";const k=j(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const a=P({defaultValues:e?N(e.config):T(),mode:"onChange"}),{formState:{errors:i},handleSubmit:n}=a,m=k(),p=!!i.branchProtections||!!i.projectDetails||!!i.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(e)))return;const b=M(C);await d({collectorId:e.id,config:b})&&g()};return D(G(e)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(r,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectLanguages",label:"Project Languages",description:"Collects details about the languages used in an entity's project.",disabled:t})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:p})})]})};export{H as GitlabConfigurator};
|
|
2
2
|
//# sourceMappingURL=GitlabConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsxs as b,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as S,Paper as q}from"@material-ui/core";import{useCallback as H}from"react";import{useForm as R,FormProvider as T}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 w}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as y}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as N}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 k}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as M,confirmationModalContent as j}from"../Common/utils.esm.js";import{RequestFactDetailsComponent as A}from"./RequestFactDetailsComponent.esm.js";import{mapConfigToHttpCollectorConfig as D,defaultHttpConfig as V,defaultRequestCollectorConfig as z,mapHttpCollectorConfigToConfig as I}from"./utils.esm.js";import{httpCollectorFormSchema as L}from"./validation.esm.js";const U=S(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),E=({disabled:e,selectedCollector:t})=>{const s=H(async(r,...i)=>{const g={enabled:!1,collectors:[]},h={request:r.request.enabled?r.request:g};return F(L)(h,...i)},[]),a=R({defaultValues:t?D(t.config):V(),mode:"onChange",resolver:s}),{formState:{isValid:c},handleSubmit:n}=a,m=U(),p=!c,{mutateAsync:f}=y(),[d,u]=x(B),{showModal:C}=w(),l=async r=>{if(!await C(j(t)))return;const i=I(r);await f({collectorId:t.id,config:i})&&u()};return P(M(t)),b(v,{children:[o(q,{className:m.section,children:o(T,{...a,children:o("form",{onSubmit:n(l),children:o(k,{name:"request",label:"Request",description:"Collects data from HTTP endpoint.",disabled:e,FactDetailsComponent:A,multipleCollectors:{enable:!0,defaultConfig:z()}})})})}),o("div",{className:m.section,children:o(N,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:n(l),disableSave:p})})]})};export{E as HttpConfigurator};
|
|
2
2
|
//# sourceMappingURL=HttpConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsxs as a,jsx as e}from"react/jsx-runtime";import{Grid as l,TextField as h,MenuItem as T,FormHelperText as y,Typography as q,IconButton as g}from"@material-ui/core";import k from"@material-ui/icons/Add";import b from"@material-ui/icons/Remove";import N from"classnames";import{highlight as H,languages as I}from"prismjs";import"prismjs/components/prism-json";import{useFormContext as v,useFieldArray as S,Controller as c}from"react-hook-form";import P from"react-simple-code-editor";import{FormFieldLabel as p}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as F}from"./RequestFactDetailsComponent.esm.js";import{HTTP_METHOD_OPTIONS as $,defaultNewHeaderConfig as C}from"./utils.esm.js";const R=({name:s,disabled:n})=>{const r=F(),{control:d}=v(),{fields:u,insert:f,remove:x}=S({control:d,name:`${s}.headers`});return a(l,{container:!0,spacing:1,direction:"column",className:r.root,children:[a(l,{item:!0,children:[e(p,{title:"Target Plugin ID (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),e(c,{name:`${s}.targetPluginId`,control:d,render:({field:o,fieldState:{error:t}})=>e(h,{...o,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Example: soundcheck",className:r.textInput,disabled:n,error:!!t,helperText:t?.message??"Specify if calling a plugin's API to use {{targetPluginBaseUrl}} and {{targetPluginAuthToken}} template tags",FormHelperTextProps:{className:r.helperText}})})]}),a(l,{item:!0,children:[e(p,{title:"Request URL",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),a(l,{container:!0,spacing:1,direction:"row",children:[e(l,{item:!0,xs:2,children:e(c,{name:`${s}.method`,control:d,render:({field:o,fieldState:{error:t}})=>e(h,{...o,fullWidth:!0,select:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Method",className:r.textInput,disabled:n,error:!!t,helperText:t?.message??"Method",FormHelperTextProps:{className:r.helperText},children:$.map(i=>e(T,{value:i,children:i},i))})})}),e(l,{item:!0,xs:10,children:e(c,{name:`${s}.url`,control:d,render:({field:o,fieldState:{error:t}})=>e(h,{...o,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Example: https://api.example.com/{{entity.metadata.name}}/get",className:r.textInput,disabled:n,error:!!t,helperText:t?.message??"Request URL can use liquid template language",FormHelperTextProps:{className:r.helperText}})})})]})]}),a(l,{item:!0,children:[e(p,{title:"Request Body (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),e(c,{name:`${s}.body`,control:d,render:({field:o,fieldState:{error:t}})=>a("div",{children:[e("div",{className:N(r.jsonInput,t?r.jsonInputError:void 0),children:e(P,{...o,highlight:i=>H(i??"",I.json,"json"),onValueChange:o.onChange,padding:10,disabled:n,placeholder:"Request Body",textareaClassName:r.jsonTextarea})}),e(y,{className:r.helperText,error:!!t,children:t?.message??"Request body can use liquid template language"})]})})]}),e(l,{item:!0,children:a(l,{container:!0,spacing:0,direction:"column",children:[e(p,{title:"Request Headers (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),e(q,{color:"textSecondary",variant:"caption",children:"Header keys and values can use liquid template language"}),u.map((o,t)=>a(l,{item:!0,container:!0,alignItems:"center",spacing:2,children:[a(l,{item:!0,xs:5,children:[e(p,{title:"Key"}),e(c,{name:`${s}.headers.${t}.key`,control:d,render:({field:i,fieldState:{error:m}})=>e(h,{...i,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Header Key",className:r.textInput,disabled:n,error:!!m,helperText:m?.message??" ",FormHelperTextProps:{className:r.helperText}})})]}),a(l,{item:!0,xs:5,children:[e(p,{title:"Value"}),e(c,{name:`${s}.headers.${t}.value`,control:d,render:({field:i,fieldState:{error:m}})=>e(h,{...i,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Header Value",className:r.textInput,disabled:n,error:!!m,helperText:m?.message??" ",FormHelperTextProps:{className:r.helperText}})})]}),a(l,{item:!0,xs:2,children:[e(g,{onClick:()=>x(t),disabled:n||u.length===1,children:e(b,{fontSize:"small"})}),e(g,{onClick:()=>f(t+1,C()),disabled:n,children:e(k,{fontSize:"small"})})]})]},o.id))]})})]})};export{R as HttpRequestComponent};
|
|
2
2
|
//# sourceMappingURL=HttpRequestComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Grid as
|
|
1
|
+
import{jsxs as n,jsx as e}from"react/jsx-runtime";import{Grid as s,TextField as c,FormHelperText as h}from"@material-ui/core";import f from"classnames";import{highlight as g,languages as u}from"prismjs";import"prismjs/components/prism-json";import{useFormContext as x,Controller as m}from"react-hook-form";import S from"react-simple-code-editor";import{FormFieldLabel as p}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{HttpStatusesInput as T}from"./HttpStatusesInput.esm.js";import{useStyles as N}from"./RequestFactDetailsComponent.esm.js";const C=({name:a,disabled:l})=>{const r=N(),{control:i}=x();return n(s,{container:!0,spacing:1,direction:"column",className:r.root,children:[n(s,{item:!0,children:[e(p,{title:"Transform Response (Optional)",docLink:"https://docs.jsonata.org/overview.html"}),e(m,{name:`${a}.transform`,control:i,render:({field:t,fieldState:{error:o}})=>e(c,{...t,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"JSONata expression",className:r.textInput,disabled:l,error:!!o,helperText:o?.message??"JSONata expression to transform the original HTTP response",FormHelperTextProps:{className:r.helperText}})})]}),n(s,{item:!0,children:[e(p,{title:"Response JSON Schema (Optional)",docLink:"https://json-schema.org/docs"}),e(m,{name:`${a}.schema`,control:i,render:({field:t,fieldState:{error:o}})=>n("div",{children:[e("div",{className:f(r.jsonInput,o?r.jsonInputError:void 0),children:e(S,{...t,highlight:d=>g(d??"",u.json,"json"),onValueChange:t.onChange,padding:10,disabled:l,placeholder:"JSON Schema",textareaClassName:r.jsonTextarea})}),e(h,{className:r.helperText,error:!!o,children:o?.message??"JSON schema of the final HTTP response"})]})})]}),n(s,{item:!0,children:[e(p,{title:"Empty Response on Status Codes (Optional)"}),e(m,{name:`${a}.emptyOnStatuses`,control:i,render:({field:t,fieldState:{error:o}})=>e(T,{disabled:l,value:t.value,onChange:t.onChange,errors:o,helperText:"Collect an empty fact instead of throwing a collection error"})})]})]})};export{C as HttpResponseComponent};
|
|
2
2
|
//# sourceMappingURL=HttpResponseComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Grid as n,TextField as c}from"@material-ui/core";import
|
|
1
|
+
import{jsxs as o,jsx as t}from"react/jsx-runtime";import{Grid as n,TextField as c}from"@material-ui/core";import{useFormContext as f,Controller as m}from"react-hook-form";import{FormFieldLabel as p}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{HttpStatusesInput as h}from"./HttpStatusesInput.esm.js";import{useStyles as x}from"./RequestFactDetailsComponent.esm.js";const g=({name:i,disabled:s})=>{const l=x(),{control:d}=f(),u=(e,r)=>{if(e.target.value){const a=parseInt(e.target.value,10)??null;r({...e,target:{...e.target,value:a}})}else r({...e,target:{...e.target,value:null}})};return o(n,{container:!0,spacing:1,direction:"column",className:l.root,children:[o(n,{item:!0,children:[t(p,{title:"Max Number of Retries (Optional)"}),t(m,{name:`${i}.maxRetries`,control:d,render:({field:e,fieldState:{error:r}})=>t(c,{...e,fullWidth:!0,onChange:a=>u(a,e.onChange),type:"number",variant:"outlined",margin:"dense",placeholder:"Example: 3",className:l.textInput,disabled:s,error:!!r,helperText:r?.message??"If not provided failed requests won't be retried",FormHelperTextProps:{className:l.helperText}})})]}),o(n,{item:!0,children:[t(p,{title:"Retry Delay in Milliseconds (Optional)"}),t(m,{name:`${i}.retryDelay`,control:d,render:({field:e,fieldState:{error:r}})=>t(c,{...e,fullWidth:!0,onChange:a=>u(a,e.onChange),type:"number",variant:"outlined",margin:"dense",placeholder:"Example: 60000",className:l.textInput,disabled:s,error:!!r,helperText:r?.message??"If not provided failed requests will be retried immediately",FormHelperTextProps:{className:l.helperText}})})]}),o(n,{item:!0,children:[t(p,{title:"Retry on Status Codes (Optional)"}),t(m,{name:`${i}.retryOnStatuses`,control:d,render:({field:e,fieldState:{error:r}})=>t(h,{disabled:s,value:e.value,onChange:e.onChange,errors:r,helperText:"If not provided all failed requests will be retried"})})]})]})};export{g as HttpRetriesComponent};
|
|
2
2
|
//# sourceMappingURL=HttpRetriesComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as b,jsx as o}from"react/jsx-runtime";import{makeStyles as x,Box as c,Chip as g,TextField as T,FormControlLabel as C,Checkbox as S}from"@material-ui/core";import N from"@material-ui/icons/CheckBox";import v from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as k}from"@material-ui/lab";import{useState as I,useEffect as L}from"react";import{ListboxVirtualized as z}from"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{HTTP_STATUSES as p}from"./utils.esm.js";const H=x(a=>({statusInput:{marginTop:0},statusChips:{marginBottom:a.spacing(1)},helperText:{marginLeft:0}})),E=({value:a,onChange:i,disabled:r,errors:m,helperText:d})=>{const n=H(),[s,u]=I(a??[]);L(()=>{i&&i(s.map(e=>Number(e)))},[s,i]);const f=(e,t)=>{u(s?.filter(l=>l!==t))},h=(e,t)=>{const l=t.length?t[t.length-1]:void 0;l&&isNaN(Number(l))||u(t)};return b(c,{children:[o(c,{children:s.map(e=>o(g,{label:e,size:"small",className:n.statusChips,onDelete:t=>f(t,e),clickable:!1,disabled:r},e))}),o(k,{disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:!0,popupIcon:null,renderTags:()=>null,disabled:r,options:p.map(e=>e.value),getOptionLabel:e=>p.find(t=>t.value===e)?.label??"",value:s,onChange:(e,t)=>h(e,t),ListboxComponent:z,ListboxProps:{itemHeight:40},renderInput:e=>o(T,{...e,variant:"outlined",margin:"dense",className:n.statusInput,placeholder:"Example: 500",disabled:r,error:!!m,helperText:m?.message??d,FormHelperTextProps:{className:n.helperText}}),renderOption:(e,{selected:t})=>o(C,{onClick:l=>l.preventDefault(),control:o(S,{icon:o(v,{fontSize:"small"}),checkedIcon:o(N,{fontSize:"small"}),checked:t,disabled:r}),label:p.find(l=>l.value===e)?.label??""})})]})};export{E as HttpStatusesInput};
|
|
2
2
|
//# sourceMappingURL=HttpStatusesInput.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as p,jsx as e}from"react/jsx-runtime";import{makeStyles as x,Box as h,TextField as f,Tabs as b,Tab as i}from"@material-ui/core";import{useState as g}from"react";import{useFormContext as C,Controller as T}from"react-hook-form";import{FormFieldLabel as v}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{HttpRequestComponent as F}from"./HttpRequestComponent.esm.js";import{HttpResponseComponent as N}from"./HttpResponseComponent.esm.js";import{HttpRetriesComponent as R}from"./HttpRetriesComponent.esm.js";const d=x(t=>({root:{paddingTop:t.spacing(1),width:"800px"},textInput:{marginTop:0},jsonInput:{marginTop:0,width:"100%",minHeight:"100px",maxHeight:"300px",overflowY:"scroll",outline:`1px solid ${t.palette.action.disabled}`,borderRadius:"4px",display:"grid","&:hover":{outlineColor:t.palette.textContrast}},jsonInputError:{outlineColor:t.palette.error.main,"&:hover":{outlineColor:t.palette.error.main}},jsonTextarea:{outline:"none"},helperText:{marginLeft:0}}));function s({children:t,value:r,index:o,className:l}){return e("div",{hidden:r!==o,className:l,children:r===o&&t})}const H=({name:t,disabled:r})=>{const o=d(),{control:l}=C(),[n,u]=g(0),c=(m,a)=>{u(a)};return p(h,{className:o.root,children:[e(v,{title:"Fact Name"}),e(T,{name:`${t}.factName`,control:l,render:({field:m,fieldState:{error:a}})=>e(f,{...m,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:o.textInput,disabled:r,error:!!a,helperText:a?.message??"Fact name must be unique",FormHelperTextProps:{className:o.helperText}})}),p(b,{value:n,onChange:c,children:[e(i,{label:"Request"}),e(i,{label:"Response"}),e(i,{label:"Retries"})]}),e(s,{value:n,index:0,children:e(F,{name:`${t}.request`,disabled:r})}),e(s,{value:n,index:1,children:e(N,{name:`${t}.response`,disabled:r})}),e(s,{value:n,index:2,children:e(R,{name:`${t}.retries`,disabled:r})})]})};export{H as RequestFactDetailsComponent,d as useStyles};
|
|
2
2
|
//# sourceMappingURL=RequestFactDetailsComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{validFactNameRegex as m,invalidFactNameErrorMessage as p}from"@spotify/backstage-plugin-soundcheck-common";import{z as t}from"zod";import{FIELD_IS_REQUIRED_MSG as i}from"../../../../utils/validation.esm.js";import{BaseCollectorSchema as u}from"../Common/CollectorOption.esm.js";const n="Fact name is not unique",c="Max 100 characters",f=t.strictObject({method:t.enum(["POST","GET"]).optional(),url:t.string().min(1,i),headers:t.array(t.strictObject({key:t.string().optional(),value:t.string().optional()})),body:t.string().optional(),targetPluginId:t.string().optional()}),b=t.strictObject({transform:t.string().optional(),schema:t.string().optional(),emptyOnStatuses:t.array(t.number()).optional()}),d=t.strictObject({maxRetries:t.number().min(0).optional().nullable(),retryDelay:t.number().min(0).optional().nullable(),retryOnStatuses:t.array(t.number()).optional()}),g=u.extend({factDetails:t.strictObject({factName:t.string().min(1,i).max(100,c).regex(m,p),request:f,response:b,retries:d})}).strict(),O=t.strictObject({enabled:t.boolean(),collectors:t.array(g).superRefine((r,l)=>{const o=r.map(e=>e.factDetails.factName),s=o.filter((e,a)=>o.indexOf(e)!==a);s.length&&r.forEach((e,a)=>{s.includes(e.factDetails.factName)&&l.addIssue({code:t.ZodIssueCode.custom,message:n,path:[a,"factDetails","factName"]})})})}),S=t.strictObject({request:O});export{n as FACT_NAME_IS_NOT_UNIQUE_MSG,c as MAX_100_CHARACTERS_MSG,S as httpCollectorFormSchema};
|
|
2
2
|
//# sourceMappingURL=validation.esm.js.map
|
package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{jsxs as i,jsx as e}from"react/jsx-runtime";import{makeStyles as h,Grid as s,Typography as d,TextField as c}from"@material-ui/core";import{useFormContext as T,Controller as x}from"react-hook-form";import{JIRA_COLLECTOR_FIELDS as f}from"./utils.esm.js";const u=h(a=>({root:{paddingTop:a.spacing(1)},textInput:{marginTop:0,width:"500px"},helperText:{marginLeft:0}})),g=({name:a,disabled:m})=>{const t=u(),{factName:l,jql:o}=f.factDetails,{control:p}=T();return i(s,{container:!0,spacing:1,direction:"column",className:t.root,children:[i(s,{item:!0,children:[e(d,{variant:"subtitle2",children:l.name}),e(x,{name:`${a}.factName`,control:p,render:({field:n,fieldState:{error:r}})=>e(c,{...n,type:"text",variant:"outlined",margin:"dense",placeholder:l.placeholder,className:t.textInput,disabled:m,error:!!r,helperText:r?.message??l.helperText,FormHelperTextProps:{className:t.helperText}})})]}),i(s,{item:!0,children:[e(d,{variant:"subtitle2",children:o.name}),e(x,{name:`${a}.jql`,control:p,render:({field:n,fieldState:{error:r}})=>e(c,{...n,type:"text",variant:"outlined",margin:"dense",placeholder:o.placeholder,className:t.textInput,disabled:m,error:!!r,helperText:r?.message??o.helperText,FormHelperTextProps:{className:t.helperText}})})]})]})};export{g as IssuesSearchFactDetailsComponent};
|
|
2
2
|
//# sourceMappingURL=IssuesSearchFactDetailsComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsxs as C,Fragment as g,jsx as o}from"react/jsx-runtime";import{zodResolver as h}from"@hookform/resolvers/zod";import{makeStyles as S,Paper as v}from"@material-ui/core";import{useForm as b,FormProvider as F}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 J}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as N}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 y}from"../Common/FactCollectionConfig.esm.js";import{collectorHeaderContent as I,confirmationModalContent as M}from"../Common/utils.esm.js";import{IssuesSearchFactDetailsComponent as P}from"./IssuesSearchFactDetailsComponent.esm.js";import{mapConfigToJiraCollectorConfig as R,defaultJiraConfig as T,issueSearchCollectorConfig as k,mapJiraCollectorConfigToConfig as D}from"./utils.esm.js";import{jiraCollectorFormSchema as H}from"./validation.esm.js";const z=S(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),A=({disabled:t,selectedCollector:e})=>{const r=b({defaultValues:e?R(e.config):T(),mode:"onChange",resolver:h(H)}),{formState:{errors:s},handleSubmit:i}=r,a=z(),n=!!s.issuesSearch,{mutateAsync:l}=x(),[c,p]=w(B),{showModal:f}=J(),m=async d=>{if(!await f(M(e)))return;const u=D(d);await l({collectorId:e.id,config:u})&&p()};return j(I(e)),C(g,{children:[o(v,{className:a.section,children:o(F,{...r,children:o("form",{onSubmit:i(m),children:o(y,{name:"issuesSearch",label:"Issues Search",description:"Collects details about Jira issues.",disabled:t,FactDetailsComponent:P,multipleCollectors:{enable:!0,defaultConfig:k()}})})})}),o("div",{className:a.section,children:o(N,{onCancel:c,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:n})})]})};export{A as JiraConfigurator};
|
|
2
2
|
//# sourceMappingURL=JiraConfigurator.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 d}from"../Common/CollectorOption.esm.js";const r="Fact name is not unique",i="Max 100 characters",_=d.extend({factDetails:e.strictObject({factName:e.string().min(1,f).max(100,i).regex(l,n),jql:e.string().optional()})}).strict(),S=e.strictObject({enabled:e.boolean(),collectors:e.array(_).superRefine((c,m)=>{const s=c.map(t=>t.factDetails.factName),o=s.filter((t,a)=>s.indexOf(t)!==a);o.length&&c.forEach((t,a)=>{o.includes(t.factDetails.factName)&&m.addIssue({code:e.ZodIssueCode.custom,message:r,path:[a,"factDetails","factName"]})})})}),p=e.strictObject({issuesSearch:S});export{r as FACT_NAME_IS_NOT_UNIQUE_MSG,i as MAX_100_CHARACTERS_MSG,p as jiraCollectorFormSchema};
|
|
2
2
|
//# sourceMappingURL=validation.esm.js.map
|
package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{zodResolver as
|
|
1
|
+
import{jsxs as n,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as h}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as S,Divider as F}from"@material-ui/core";import{useForm as R,FormProvider as K}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 w}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as y}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}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 L}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as c}from"../Common/FactCollectionConfig.esm.js";import{defaultCollectorOption as N}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as O,confirmationModalContent as T}from"../Common/utils.esm.js";import{KubernetesFactDetails as j}from"./KubernetesFactDetails.esm.js";import{mapConfigToKubernetesCollectorConfig as k,defaultKubernetesConfig as I,K8S_COLLECTOR_FIELDS as M,mapKubernetesCollectorConfigToConfig as P}from"./utils.esm.js";import{customResourceFormSchema as E}from"./validation.esm.js";const H=v(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),V=({disabled:t,selectedCollector:e})=>{const r=R({defaultValues:e?k(e.config):I(),mode:"onChange",resolver:h(E)}),a=H(),{mutateAsync:p}=y(),[d,f]=x(B),{isValid:u}=r.formState,{showModal:C}=w(),s=async m=>{if(!await C(T(e)))return;const i=P(m);await p({collectorId:e.id,config:i})&&f()};return L(O(e)),n(b,{children:[o(S,{className:a.section,children:o(K,{...r,children:n("form",{onSubmit:r.handleSubmit(s),children:[Object.entries(M).map(([m,i],l,g)=>n("div",{children:[o(c,{name:m,label:i.label,description:i.description,disabled:t}),l<g.length-1&&o(F,{})]},l)),o(c,{name:"customResources",label:"Custom Resources",description:"Collect facts from a kubernetes custom resource associated with an entity.",disabled:t,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:N(e.config)}})]})})}),o("div",{className:a.section,children:o(D,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:r.handleSubmit(s),disableSave:!u})})]})};export{V as KubernetesConfigurator};
|
|
2
2
|
//# sourceMappingURL=KubernetesConfigurator.esm.js.map
|