@spotify/backstage-plugin-soundcheck 0.16.3 → 0.18.0
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 +63 -0
- package/config.d.ts +14 -0
- package/dist/alpha/integrations.esm.js +2 -0
- package/dist/alpha/pages.esm.js +1 -1
- package/dist/alpha/plugin.esm.js +1 -1
- package/dist/alpha.d.ts +252 -17
- package/dist/api.esm.js +1 -1
- package/dist/blueprints/IntegrationPageBlueprint.esm.js +2 -0
- package/dist/components/Badges/LevelBadge.esm.js +1 -1
- package/dist/components/CampaignForm/hooks/utils.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/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +1 -1
- package/dist/components/CertificationSidebar/ExemptionJustificationDialog.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/CheckDetails/CheckResultDetails.esm.js +1 -1
- package/dist/components/CheckDetails/FixMeDialog.esm.js +1 -1
- package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
- package/dist/components/CheckDryRun/CheckDryRunDetails.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/Expressions/ExpressionBox.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckApplicabilityStep.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/CheckIcon/CheckIcon.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.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/ExemptionsTable.esm.js +2 -0
- package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
- package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/utils.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.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/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorerDialog.esm.js +1 -1
- package/dist/components/FactExplorer/useFactOptions.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/FilterSidebar/FilterSidebar.esm.js +1 -1
- package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +1 -1
- package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
- package/dist/components/ImportExportPanel/ImportExportPanel.esm.js +2 -0
- package/dist/components/LevelsTable/CheckRowContent.esm.js +1 -1
- package/dist/components/LevelsTable/LevelsTable.esm.js +1 -1
- package/dist/components/MultiSelectFilter/MultiSelectFilter.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/CheckNameCell.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/TrackCheckStatusCount.esm.js +2 -0
- package/dist/components/OverviewTable/Cell/cellRenderer.esm.js +1 -1
- package/dist/components/OverviewTable/OverviewTableContent.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTableRow.esm.js +1 -1
- package/dist/components/PassingPercentProgressbar/PassPercentageProgressbar.esm.js +2 -0
- package/dist/components/Router.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/RoutingPage/index.esm.js +1 -1
- package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
- package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialog.esm.js +2 -0
- package/dist/components/SoundcheckDialog/SoundcheckDialog.esm.js +1 -1
- package/dist/components/SoundcheckHeader/headerUtil.esm.js +1 -1
- package/dist/components/SummaryCard/SummaryCard.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/utils.esm.js +1 -1
- package/dist/components/TechInsights/ColorLegend.esm.js +2 -0
- package/dist/components/TechInsights/LoadingOverlay.esm.js +2 -0
- package/dist/components/TechInsights/LowestPerformingTeams.esm.js +2 -0
- package/dist/components/TechInsights/NivoCirclePacking.esm.js +2 -0
- package/dist/components/TechInsights/NivoIcicle.esm.js +2 -0
- package/dist/components/TechInsights/NivoSunburst.esm.js +2 -0
- package/dist/components/TechInsights/NivoTreemap.esm.js +2 -0
- package/dist/components/TechInsights/TeamComparison/CheckComparison.esm.js +2 -0
- package/dist/components/TechInsights/TeamComparison/FailingComponentsTable.esm.js +2 -0
- package/dist/components/TechInsights/TeamComparison/LineChartContainer.esm.js +2 -0
- package/dist/components/TechInsights/TeamComparison/MultiCheckStatusHistoryChart.esm.js +2 -0
- package/dist/components/TechInsights/TeamComparison/MultiTrackHistoryChart.esm.js +2 -0
- package/dist/components/TechInsights/TeamComparison/TeamComparison.esm.js +2 -0
- package/dist/components/TechInsights/TeamComparison/TrackComparison.esm.js +2 -0
- package/dist/components/TechInsights/TeamPerformanceCard.esm.js +2 -0
- package/dist/components/TechInsights/TeamPerformanceListCard.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsGroupSelector.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsPage.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsPage2.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsSidebar.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsViewSelector.esm.js +2 -0
- package/dist/components/TechInsights/Tiles/CheckStatusTile.esm.js +2 -0
- package/dist/components/TechInsights/Tiles/TileUtils.esm.js +2 -0
- package/dist/components/TechInsights/Tiles/TrackStatusTile.esm.js +2 -0
- package/dist/components/TechInsights/TopPerformingTeams.esm.js +2 -0
- package/dist/components/TechInsights/TrackCardGrid.esm.js +2 -0
- package/dist/components/TechInsights/TrackCardGridBox.esm.js +2 -0
- package/dist/components/TechInsights/colorContrast.esm.js +2 -0
- package/dist/components/TechInsights/hierarchy/GroupNode.esm.js +2 -0
- package/dist/components/TechInsights/hierarchy/Hierarchy.esm.js +2 -0
- package/dist/components/TechInsights/hierarchy/VirtualRow.esm.js +2 -0
- package/dist/components/TechInsights/hierarchyToNivo.esm.js +2 -0
- package/dist/components/TechInsights/persistence/FavoriteViews.esm.js +2 -0
- package/dist/components/TechInsights/styles.esm.js +2 -0
- package/dist/components/TimePeriodBar/TimePeriodBar.esm.js +2 -0
- package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
- package/dist/components/TrackForm/utils/useTrackForm.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/TrackStatusBar.esm.js +1 -1
- package/dist/components/TrackPage/TrackStatusTable.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
- package/dist/contexts/UserProvider.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +283 -79
- package/dist/hooks/aggregations/useCertificationStatusHistories.esm.js +2 -0
- package/dist/hooks/aggregations/useCertificationStatuses.esm.js +2 -0
- package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
- package/dist/hooks/aggregations/useCheckStatusByGroups.esm.js +2 -0
- package/dist/hooks/aggregations/useCheckStatusHistoriesMultiFilter.esm.js +2 -0
- package/dist/hooks/campaigns/useCreateCampaign.esm.js +1 -1
- package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
- package/dist/hooks/campaigns/useSendCampaignNotification.esm.js +2 -0
- package/dist/hooks/campaigns/useUpdateCampaign.esm.js +1 -1
- package/dist/hooks/certifications/useTrackOverviewForOwner.esm.js +1 -1
- package/dist/hooks/checks/useCreateCheck.esm.js +1 -1
- package/dist/hooks/checks/useImportChecks.esm.js +2 -0
- package/dist/hooks/checks/useSetManualResult.esm.js +1 -1
- package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
- package/dist/hooks/collectors/useUpdateCollectorConfig.esm.js +1 -1
- package/dist/hooks/exemptions/useDeleteExemption.esm.js +1 -1
- package/dist/hooks/exemptions/useExemptCheckIds.esm.js +1 -1
- package/dist/hooks/exemptions/useExemptions.esm.js +2 -0
- package/dist/hooks/exemptions/useGetExemption.esm.js +1 -1
- package/dist/hooks/exemptions/useSetEntityExempt.esm.js +1 -1
- package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/groups/useAllGroups.esm.js +1 -1
- package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
- package/dist/hooks/heirarchy/useGetDescendentsOfGroups.esm.js +2 -0
- package/dist/hooks/heirarchy/useGroupHierarchy.esm.js +2 -0
- package/dist/hooks/heirarchy/useHierarchicalTrackStatus.esm.js +2 -0
- package/dist/hooks/heirarchy/useRootGroups.esm.js +2 -0
- package/dist/hooks/savedViews/useDeleteView.esm.js +2 -0
- package/dist/hooks/savedViews/useSaveView.esm.js +2 -0
- package/dist/hooks/savedViews/useSavedViews.esm.js +2 -0
- package/dist/hooks/tracks/useCreateTrack.esm.js +1 -1
- package/dist/hooks/tracks/useImportTracks.esm.js +2 -0
- package/dist/hooks/tracks/useUpdateTrack.esm.js +1 -1
- package/dist/index.d.ts +85 -1
- package/dist/index.esm.js +1 -1
- package/dist/utils/colors.esm.js +1 -1
- package/dist/utils/export.esm.js +7 -3
- package/dist/utils/helpers.esm.js +2 -0
- package/dist/utils/validation.esm.js +1 -1
- package/package.json +34 -18
- package/dist/components/CheckForm/FormFields/RuleInput/useRuleInputHandlers.esm.js +0 -2
- package/dist/components/OrgHealth/OrgHealthPage.esm.js +0 -2
- package/dist/components/OverviewTable/Cell/TrackCheckIndicator.esm.js +0 -2
- package/dist/utils/getGroupFilterFromConfig.esm.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,68 @@
|
|
|
1
1
|
# @spotify/backstage-plugin-soundcheck
|
|
2
2
|
|
|
3
|
+
## 0.18.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- BREAKING CHANGE: Updates were made to the CampaignStore interface in Soundcheck. A new method was added: 'getCampaignsByTrackIds', which returns campaigns not by the campaign id but by the track id used by the campaign.
|
|
8
|
+
- Added ability to send a notification to owners of all entities that are still failing a Campaign from the Campaign view page. Permissions for this can be configured via the RBAC role: `soundcheck.campaign.notifications.create`. **DB Migration required to add some indexes.**
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Added possibility to specify a number of days for historical status in Check and Track Insights.
|
|
13
|
+
- Added possibility to export all tracks and import tracks from YAML.
|
|
14
|
+
- Top failing checks are now grouped by level in Track Insights.
|
|
15
|
+
- Fixed some minor color issues on the UI.
|
|
16
|
+
- Added updated timestamp to tooltip on overview page check results.
|
|
17
|
+
- Setting `status` badge type as default for pre-canned tracks and new tracks created via No-Code UI.
|
|
18
|
+
- Added possibility to export all checks and import checks from YAML.
|
|
19
|
+
- Resolved an issue with Track Insight's history chart area colors.
|
|
20
|
+
- Track Insights now uses a 100% stacked area chart.
|
|
21
|
+
- Updates Soundcheck to prepare for the coming leadership insights page. No user-facing changes.
|
|
22
|
+
- Updated dependencies
|
|
23
|
+
- Updated dependencies
|
|
24
|
+
- Updated dependencies
|
|
25
|
+
- Updated dependencies
|
|
26
|
+
- Updated dependencies
|
|
27
|
+
- Updated dependencies
|
|
28
|
+
- @spotify/backstage-plugin-soundcheck-common@0.18.0
|
|
29
|
+
|
|
30
|
+
## 0.17.0
|
|
31
|
+
|
|
32
|
+
### Minor Changes
|
|
33
|
+
|
|
34
|
+
- Added extension blueprint for Soundcheck integration pages.
|
|
35
|
+
- Added a display to show what checks depend on a collector.
|
|
36
|
+
- Added display to integration cards that indicate if it is configured via UI.
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- Fixes a menu appearing in the wrong location.
|
|
41
|
+
- Showing display names as entity names on Check Insights pages.
|
|
42
|
+
- Improved overview page by allowing selection of all types within a kind category, replaced the progress bar with a pass/fail count, and changed the default facet selection behavior. Ensure your soundcheck package versions are all up to date for these to work correctly.
|
|
43
|
+
- Support SVG badges for track levels via `track.levels.badge.svg` property. YAML only currently.
|
|
44
|
+
- Added support for expressions containing only expressions in the Check Form UI.
|
|
45
|
+
- Fixed certain Markdown content not showing up correctly.
|
|
46
|
+
- Made more obvious in UI when fact data is redacted.
|
|
47
|
+
- Fixed certification page navigating to an exempt or not-applicable check when there are other valid checks in a Track.
|
|
48
|
+
- Updates Check/Track/Campaign filters to be unable to specify conflicting inclusion and exclusion parameters.
|
|
49
|
+
- Add Soundcheck analytics
|
|
50
|
+
- Added an Exemptions tab to the Check Insights page displaying the entities that are exempt from the check and the justification.
|
|
51
|
+
- - All errors occurred during PagerDuty fact collection are surfaced to Soundcheck users.
|
|
52
|
+
- Added possibility to configure top-level filter, caching and frequency in YAML for PagerDuty integration.
|
|
53
|
+
- Add config `dangerouslyAllowSensitiveFactReads` allowing sensitive facts to display in the frontend. RBAC rule, soundcheck.fact.sensitive.read has also been added to fine tune these permissions.
|
|
54
|
+
- Added Exempt as a check state filter option.
|
|
55
|
+
- Updated dependencies
|
|
56
|
+
- Updated dependencies
|
|
57
|
+
- Updated dependencies
|
|
58
|
+
- Updated dependencies
|
|
59
|
+
- Updated dependencies
|
|
60
|
+
- Updated dependencies
|
|
61
|
+
- Updated dependencies
|
|
62
|
+
- Updated dependencies
|
|
63
|
+
- @spotify/backstage-plugin-core@0.8.8
|
|
64
|
+
- @spotify/backstage-plugin-soundcheck-common@0.17.0
|
|
65
|
+
|
|
3
66
|
## 0.16.3
|
|
4
67
|
|
|
5
68
|
### Patch Changes
|
package/config.d.ts
CHANGED
|
@@ -31,5 +31,19 @@ export interface Config {
|
|
|
31
31
|
*/
|
|
32
32
|
group?: EntityFilter;
|
|
33
33
|
};
|
|
34
|
+
/**
|
|
35
|
+
* Settings to enable notifications and integration with the backstage notifications plugin.
|
|
36
|
+
* Controls notifications on a global scale.
|
|
37
|
+
*
|
|
38
|
+
* @visibility frontend
|
|
39
|
+
*/
|
|
40
|
+
notifications?: {
|
|
41
|
+
/**
|
|
42
|
+
* Enabled or disable notification on a global level.
|
|
43
|
+
*
|
|
44
|
+
* @visibility frontend
|
|
45
|
+
*/
|
|
46
|
+
enabled?: boolean;
|
|
47
|
+
};
|
|
34
48
|
};
|
|
35
49
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{IntegrationPageBlueprint as t}from"../blueprints/IntegrationPageBlueprint.esm.js";const r=t.make({name:"azure",params:{integrationId:"azure",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"azure"}))}}),o=t.make({name:"bigquery",params:{integrationId:"bigquery",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"bigquery"}))}}),n=t.make({name:"catalog",params:{integrationId:"catalog",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"catalog"}))}}),i=t.make({name:"datadog",params:{integrationId:"datadog",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"datadog"}))}}),l=t.make({name:"data-registry",params:{integrationId:"data-registry",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"data-registry"}))}}),g=t.make({name:"github",params:{integrationId:"github",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"github"}))}}),c=t.make({name:"gitlab",params:{integrationId:"gitlab",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"gitlab"}))}}),m=t.make({name:"http",params:{integrationId:"http",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"http"}))}}),d=t.make({name:"jira",params:{integrationId:"jira",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"jira"}))}}),s=t.make({name:"kubernetes",params:{integrationId:"kubernetes",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"kubernetes"}))}}),I=t.make({name:"newrelic",params:{integrationId:"newrelic",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"newrelic"}))}}),p=t.make({name:"pagerduty",params:{integrationId:"pagerduty",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"pagerduty"}))}}),y=t.make({name:"scm",params:{integrationId:"scm",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"scm"}))}}),u=t.make({name:"sonarqube",params:{integrationId:"sonarqube",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"sonarqube"}))}});export{r as azureIntegration,o as bigqueryIntegration,n as catalogIntegration,l as dataRegistryIntegration,i as datadogIntegration,g as githubIntegration,c as gitlabIntegration,m as httpIntegration,d as jiraIntegration,s as kubernetesIntegration,I as newrelicIntegration,p as pagerdutyIntegration,y as scmIntegration,u as sonarqubeIntegration};
|
|
2
|
+
//# sourceMappingURL=integrations.esm.js.map
|
package/dist/alpha/pages.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{convertLegacyRouteRef as n,compatWrapper as a}from"@backstage/core-compat-api";import{PageBlueprint as i,createExtensionInput as f,coreExtensionData as t}from"@backstage/frontend-plugin-api";import{integrationIdExtensionDataRef as u}from"../blueprints/IntegrationPageBlueprint.esm.js";import{rootRouteRef as c}from"../routes.esm.js";const s=i.makeWithOverrides({name:"SoundcheckRoutingPage",inputs:{integrations:f([t.routePath,t.reactElement,t.routeRef.optional(),u])},config:{schema:{title:e=>e.string().optional()}},factory(e,{config:g,inputs:m}){return e({routeRef:n(c),defaultPath:"/soundcheck",loader:()=>import("../components/RoutingPage/index.esm.js").then(p=>a(r(p.RoutingPage,{title:g.title,integrations:m.integrations.map(o=>({integrationId:o.get(u),routePath:o.get(t.routePath),routeRef:o.get(t.routeRef)}))})))})}}),h=i.make({name:"overview",params:{routeRef:n(c),defaultPath:"/soundcheck",loader:()=>import("../components/OverviewPage/index.esm.js").then(e=>a(r(e.OverviewPage,{})))}});export{h as soundcheckOverviewPage,s as soundcheckRoutingPage};
|
|
2
2
|
//# sourceMappingURL=pages.esm.js.map
|
package/dist/alpha/plugin.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createFrontendPlugin as
|
|
1
|
+
import{createFrontendPlugin as t}from"@backstage/frontend-plugin-api";import{soundcheckApi as n}from"./apis.esm.js";import{entitySoundcheckContent as e,entitySoundcheckCard as o,groupSoundcheckContent as r}from"./entity-content.esm.js";import{azureIntegration as i,bigqueryIntegration as a,catalogIntegration as g,datadogIntegration as c,dataRegistryIntegration as u,githubIntegration as d,gitlabIntegration as I,httpIntegration as m,jiraIntegration as p,kubernetesIntegration as s,newrelicIntegration as h,pagerdutyIntegration as k,scmIntegration as f,sonarqubeIntegration as b}from"./integrations.esm.js";import{soundcheckRoutingPage as l,soundcheckOverviewPage as y}from"./pages.esm.js";import{soundcheckSidebarItem as S}from"./sidebar-item.esm.js";var v=t({id:"soundcheck",extensions:[l,y,n,e,o,r,S,i,a,g,c,u,d,I,m,p,s,h,k,f,b]});export{v as default};
|
|
2
2
|
//# sourceMappingURL=plugin.esm.js.map
|
package/dist/alpha.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _backstage_catalog_model from '@backstage/catalog-model';
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import * as _backstage_plugin_catalog_react_alpha from '@backstage/plugin-catalog-react/alpha';
|
|
4
4
|
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
@@ -10,7 +10,7 @@ import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
|
10
10
|
* The Soundcheck plugin for use within Backstage´s new frontend system
|
|
11
11
|
*/
|
|
12
12
|
declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
|
|
13
|
-
|
|
13
|
+
[x: `api:${string}`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
14
14
|
kind: "api";
|
|
15
15
|
name: undefined;
|
|
16
16
|
config: {};
|
|
@@ -21,7 +21,7 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
|
|
|
21
21
|
factory: _backstage_core_plugin_api.AnyApiFactory;
|
|
22
22
|
};
|
|
23
23
|
}>;
|
|
24
|
-
|
|
24
|
+
[x: `entity-card:${string}/card`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
25
25
|
kind: "entity-card";
|
|
26
26
|
name: "card";
|
|
27
27
|
config: {
|
|
@@ -32,7 +32,7 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
|
|
|
32
32
|
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
33
33
|
type?: "content" | "summary" | "info" | undefined;
|
|
34
34
|
};
|
|
35
|
-
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity:
|
|
35
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
|
|
36
36
|
optional: true;
|
|
37
37
|
}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-filter-expression", {
|
|
38
38
|
optional: true;
|
|
@@ -42,11 +42,11 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
|
|
|
42
42
|
inputs: {};
|
|
43
43
|
params: {
|
|
44
44
|
loader: () => Promise<JSX.Element>;
|
|
45
|
-
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity:
|
|
45
|
+
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
46
46
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
47
47
|
};
|
|
48
48
|
}>;
|
|
49
|
-
|
|
49
|
+
[x: `entity-content:${string}/entity`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
50
50
|
kind: "entity-content";
|
|
51
51
|
name: "entity";
|
|
52
52
|
config: {
|
|
@@ -63,7 +63,7 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
|
|
|
63
63
|
};
|
|
64
64
|
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
65
65
|
optional: true;
|
|
66
|
-
}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity:
|
|
66
|
+
}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
|
|
67
67
|
optional: true;
|
|
68
68
|
}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-filter-expression", {
|
|
69
69
|
optional: true;
|
|
@@ -77,10 +77,10 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
|
|
|
77
77
|
defaultTitle: string;
|
|
78
78
|
defaultGroup?: ("operation" | "development" | "documentation" | "deployment" | "overview" | "observability") | (string & {});
|
|
79
79
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
80
|
-
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity:
|
|
80
|
+
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
81
81
|
};
|
|
82
82
|
}>;
|
|
83
|
-
|
|
83
|
+
[x: `entity-content:${string}/group`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
84
84
|
kind: "entity-content";
|
|
85
85
|
name: "group";
|
|
86
86
|
config: {
|
|
@@ -97,7 +97,7 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
|
|
|
97
97
|
};
|
|
98
98
|
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
99
99
|
optional: true;
|
|
100
|
-
}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity:
|
|
100
|
+
}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
|
|
101
101
|
optional: true;
|
|
102
102
|
}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-filter-expression", {
|
|
103
103
|
optional: true;
|
|
@@ -111,10 +111,234 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
|
|
|
111
111
|
defaultTitle: string;
|
|
112
112
|
defaultGroup?: ("operation" | "development" | "documentation" | "deployment" | "overview" | "observability") | (string & {});
|
|
113
113
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
114
|
-
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity:
|
|
114
|
+
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
115
115
|
};
|
|
116
116
|
}>;
|
|
117
|
-
|
|
117
|
+
[x: `integration:${string}/azure`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
118
|
+
kind: "integration";
|
|
119
|
+
name: "azure";
|
|
120
|
+
config: {};
|
|
121
|
+
configInput: {};
|
|
122
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
123
|
+
optional: true;
|
|
124
|
+
}>;
|
|
125
|
+
inputs: {};
|
|
126
|
+
params: {
|
|
127
|
+
integrationId: string;
|
|
128
|
+
loader: () => Promise<JSX.Element>;
|
|
129
|
+
path?: string;
|
|
130
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
131
|
+
};
|
|
132
|
+
}>;
|
|
133
|
+
[x: `integration:${string}/bigquery`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
134
|
+
kind: "integration";
|
|
135
|
+
name: "bigquery";
|
|
136
|
+
config: {};
|
|
137
|
+
configInput: {};
|
|
138
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
139
|
+
optional: true;
|
|
140
|
+
}>;
|
|
141
|
+
inputs: {};
|
|
142
|
+
params: {
|
|
143
|
+
integrationId: string;
|
|
144
|
+
loader: () => Promise<JSX.Element>;
|
|
145
|
+
path?: string;
|
|
146
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
147
|
+
};
|
|
148
|
+
}>;
|
|
149
|
+
[x: `integration:${string}/catalog`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
150
|
+
kind: "integration";
|
|
151
|
+
name: "catalog";
|
|
152
|
+
config: {};
|
|
153
|
+
configInput: {};
|
|
154
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
155
|
+
optional: true;
|
|
156
|
+
}>;
|
|
157
|
+
inputs: {};
|
|
158
|
+
params: {
|
|
159
|
+
integrationId: string;
|
|
160
|
+
loader: () => Promise<JSX.Element>;
|
|
161
|
+
path?: string;
|
|
162
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
163
|
+
};
|
|
164
|
+
}>;
|
|
165
|
+
[x: `integration:${string}/datadog`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
166
|
+
kind: "integration";
|
|
167
|
+
name: "datadog";
|
|
168
|
+
config: {};
|
|
169
|
+
configInput: {};
|
|
170
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
171
|
+
optional: true;
|
|
172
|
+
}>;
|
|
173
|
+
inputs: {};
|
|
174
|
+
params: {
|
|
175
|
+
integrationId: string;
|
|
176
|
+
loader: () => Promise<JSX.Element>;
|
|
177
|
+
path?: string;
|
|
178
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
179
|
+
};
|
|
180
|
+
}>;
|
|
181
|
+
[x: `integration:${string}/data-registry`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
182
|
+
kind: "integration";
|
|
183
|
+
name: "data-registry";
|
|
184
|
+
config: {};
|
|
185
|
+
configInput: {};
|
|
186
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
187
|
+
optional: true;
|
|
188
|
+
}>;
|
|
189
|
+
inputs: {};
|
|
190
|
+
params: {
|
|
191
|
+
integrationId: string;
|
|
192
|
+
loader: () => Promise<JSX.Element>;
|
|
193
|
+
path?: string;
|
|
194
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
195
|
+
};
|
|
196
|
+
}>;
|
|
197
|
+
[x: `integration:${string}/github`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
198
|
+
kind: "integration";
|
|
199
|
+
name: "github";
|
|
200
|
+
config: {};
|
|
201
|
+
configInput: {};
|
|
202
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
203
|
+
optional: true;
|
|
204
|
+
}>;
|
|
205
|
+
inputs: {};
|
|
206
|
+
params: {
|
|
207
|
+
integrationId: string;
|
|
208
|
+
loader: () => Promise<JSX.Element>;
|
|
209
|
+
path?: string;
|
|
210
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
211
|
+
};
|
|
212
|
+
}>;
|
|
213
|
+
[x: `integration:${string}/gitlab`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
214
|
+
kind: "integration";
|
|
215
|
+
name: "gitlab";
|
|
216
|
+
config: {};
|
|
217
|
+
configInput: {};
|
|
218
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
219
|
+
optional: true;
|
|
220
|
+
}>;
|
|
221
|
+
inputs: {};
|
|
222
|
+
params: {
|
|
223
|
+
integrationId: string;
|
|
224
|
+
loader: () => Promise<JSX.Element>;
|
|
225
|
+
path?: string;
|
|
226
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
227
|
+
};
|
|
228
|
+
}>;
|
|
229
|
+
[x: `integration:${string}/http`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
230
|
+
kind: "integration";
|
|
231
|
+
name: "http";
|
|
232
|
+
config: {};
|
|
233
|
+
configInput: {};
|
|
234
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
235
|
+
optional: true;
|
|
236
|
+
}>;
|
|
237
|
+
inputs: {};
|
|
238
|
+
params: {
|
|
239
|
+
integrationId: string;
|
|
240
|
+
loader: () => Promise<JSX.Element>;
|
|
241
|
+
path?: string;
|
|
242
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
243
|
+
};
|
|
244
|
+
}>;
|
|
245
|
+
[x: `integration:${string}/jira`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
246
|
+
kind: "integration";
|
|
247
|
+
name: "jira";
|
|
248
|
+
config: {};
|
|
249
|
+
configInput: {};
|
|
250
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
251
|
+
optional: true;
|
|
252
|
+
}>;
|
|
253
|
+
inputs: {};
|
|
254
|
+
params: {
|
|
255
|
+
integrationId: string;
|
|
256
|
+
loader: () => Promise<JSX.Element>;
|
|
257
|
+
path?: string;
|
|
258
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
259
|
+
};
|
|
260
|
+
}>;
|
|
261
|
+
[x: `integration:${string}/kubernetes`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
262
|
+
kind: "integration";
|
|
263
|
+
name: "kubernetes";
|
|
264
|
+
config: {};
|
|
265
|
+
configInput: {};
|
|
266
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
267
|
+
optional: true;
|
|
268
|
+
}>;
|
|
269
|
+
inputs: {};
|
|
270
|
+
params: {
|
|
271
|
+
integrationId: string;
|
|
272
|
+
loader: () => Promise<JSX.Element>;
|
|
273
|
+
path?: string;
|
|
274
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
275
|
+
};
|
|
276
|
+
}>;
|
|
277
|
+
[x: `integration:${string}/newrelic`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
278
|
+
kind: "integration";
|
|
279
|
+
name: "newrelic";
|
|
280
|
+
config: {};
|
|
281
|
+
configInput: {};
|
|
282
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
283
|
+
optional: true;
|
|
284
|
+
}>;
|
|
285
|
+
inputs: {};
|
|
286
|
+
params: {
|
|
287
|
+
integrationId: string;
|
|
288
|
+
loader: () => Promise<JSX.Element>;
|
|
289
|
+
path?: string;
|
|
290
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
291
|
+
};
|
|
292
|
+
}>;
|
|
293
|
+
[x: `integration:${string}/pagerduty`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
294
|
+
kind: "integration";
|
|
295
|
+
name: "pagerduty";
|
|
296
|
+
config: {};
|
|
297
|
+
configInput: {};
|
|
298
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
299
|
+
optional: true;
|
|
300
|
+
}>;
|
|
301
|
+
inputs: {};
|
|
302
|
+
params: {
|
|
303
|
+
integrationId: string;
|
|
304
|
+
loader: () => Promise<JSX.Element>;
|
|
305
|
+
path?: string;
|
|
306
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
307
|
+
};
|
|
308
|
+
}>;
|
|
309
|
+
[x: `integration:${string}/scm`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
310
|
+
kind: "integration";
|
|
311
|
+
name: "scm";
|
|
312
|
+
config: {};
|
|
313
|
+
configInput: {};
|
|
314
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
315
|
+
optional: true;
|
|
316
|
+
}>;
|
|
317
|
+
inputs: {};
|
|
318
|
+
params: {
|
|
319
|
+
integrationId: string;
|
|
320
|
+
loader: () => Promise<JSX.Element>;
|
|
321
|
+
path?: string;
|
|
322
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
323
|
+
};
|
|
324
|
+
}>;
|
|
325
|
+
[x: `integration:${string}/sonarqube`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
326
|
+
kind: "integration";
|
|
327
|
+
name: "sonarqube";
|
|
328
|
+
config: {};
|
|
329
|
+
configInput: {};
|
|
330
|
+
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
331
|
+
optional: true;
|
|
332
|
+
}>;
|
|
333
|
+
inputs: {};
|
|
334
|
+
params: {
|
|
335
|
+
integrationId: string;
|
|
336
|
+
loader: () => Promise<JSX.Element>;
|
|
337
|
+
path?: string;
|
|
338
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
339
|
+
};
|
|
340
|
+
}>;
|
|
341
|
+
[x: `nav-item:${string}`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
118
342
|
kind: "nav-item";
|
|
119
343
|
name: undefined;
|
|
120
344
|
config: {};
|
|
@@ -131,26 +355,37 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
|
|
|
131
355
|
routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
|
|
132
356
|
};
|
|
133
357
|
}>;
|
|
134
|
-
|
|
135
|
-
kind: "page";
|
|
136
|
-
name: "SoundcheckRoutingPage";
|
|
358
|
+
[x: `page:${string}/SoundcheckRoutingPage`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
137
359
|
config: {
|
|
360
|
+
title: string | undefined;
|
|
361
|
+
} & {
|
|
138
362
|
path: string | undefined;
|
|
139
363
|
};
|
|
140
364
|
configInput: {
|
|
365
|
+
title?: string | undefined;
|
|
366
|
+
} & {
|
|
141
367
|
path?: string | undefined;
|
|
142
368
|
};
|
|
143
369
|
output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
144
370
|
optional: true;
|
|
145
371
|
}>;
|
|
146
|
-
inputs: {
|
|
372
|
+
inputs: {
|
|
373
|
+
integrations: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
374
|
+
optional: true;
|
|
375
|
+
}>, {
|
|
376
|
+
singleton: false;
|
|
377
|
+
optional: false;
|
|
378
|
+
}>;
|
|
379
|
+
};
|
|
380
|
+
kind: "page";
|
|
381
|
+
name: "SoundcheckRoutingPage";
|
|
147
382
|
params: {
|
|
148
383
|
defaultPath: string;
|
|
149
384
|
loader: () => Promise<JSX.Element>;
|
|
150
385
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
151
386
|
};
|
|
152
387
|
}>;
|
|
153
|
-
|
|
388
|
+
[x: `page:${string}/overview`]: _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
154
389
|
kind: "page";
|
|
155
390
|
name: "overview";
|
|
156
391
|
config: {
|
package/dist/api.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createApiRef as c}from"@backstage/core-plugin-api";import{GraphQLClient as h}from"graphql-request";import{getSdk as u}from"./graphql/generated/index.esm.js";const y=c({id:"plugin.soundcheck"}),o=
|
|
1
|
+
import{createApiRef as c}from"@backstage/core-plugin-api";import{GraphQLClient as h}from"graphql-request";import{getSdk as u}from"./graphql/generated/index.esm.js";const y=c({id:"plugin.soundcheck"}),o=r=>"response"in r&&"errors"in r.response,g=r=>"response"in r&&"message"in r.response;class p{#s;#a;#t;constructor(t){this.#s=t.fetchApi,this.#a=t.discoveryApi;const e=new h("/graphql",{fetch:async(s,a)=>{const n=`${await this.#a.getBaseUrl("soundcheck")}${s}`;return this.#s.fetch(n,a)}});this.#t=u(e)}#r=t=>o(t)?t.response?.errors?.[0].message??`${t}`:g(t)?t.response.message:`${t}`;#e=async t=>{try{return await t()}catch(e){throw new Error(`Error from Soundcheck backend: ${this.#r(e)}`)}};async getAllCertifications(t,e=!1,s=!1){return this.#e(async()=>{const{certifications:a}=await this.#t.getAllCertifications({entityRef:t,includeFilteredChecks:e,includeDraftTracks:s});return a})}async getCertificationDetails(t,e=!1,s=!1){return this.#e(async()=>{const{certifications:a}=await this.#t.getCertificationDetails({entityRef:t,includeFilteredChecks:e,includeDraftTracks:s});return a})}async getCertificationDetailsForTrack(t,e,s){return this.#e(async()=>{const{trackCertification:a}=await this.#t.getCertificationDetailsForTrack({entityRef:t,trackId:e,includeFilteredChecks:s});return a})}async getCheckResultDetails(t,e,s){return this.#e(async()=>{const{checkResult:a}=await this.#t.getCheckResultDetails({entityRef:t,trackId:e,checkId:s});return a})}async getFacetsForOwner(t){return this.#e(async()=>{const{facetsForOwner:e}=await this.#t.getFacetsForOwner({ownerEntityRef:t});return e})}async getTrackOverviewForOwner(t,e,s,a,n){return this.#e(async()=>{const{trackOverviewForOwner:i}=await this.#t.getTrackOverviewForOwner({ownerEntityRef:t,facet:e,first:s,after:a,entitySearch:n});return i})}async getTracks(t){return this.#e(async()=>{const{tracks:e}=await this.#t.getTracks({filter:t});return e})}async getTrack(t){return this.#e(async()=>{const{track:e}=await this.#t.getTrack({id:t});return e})}async createTrack(t){return this.#e(async()=>{const{track:e}=await this.#t.createTrack({input:t});return e})}async updateTrack(t){return this.#e(async()=>{const{track:e}=await this.#t.updateTrack({input:t});return e})}async deleteTrack(t){return this.#e(async()=>{const{trackDeleted:e}=await this.#t.deleteTrack({trackId:t});return e})}async importTracks(t){return this.#e(async()=>{const{status:e}=await this.#t.importTracks({tracks:t});return e})}async getPlaylists(t){return this.#e(async()=>{const{playlists:e}=await this.#t.getPlaylists({entityRef:t});return e})}async getOperators(){return this.#e(async()=>{const{operators:t}=await this.#t.getOperators();return t})}async getCheck(t){return this.#e(async()=>(await this.#t.getCheck({id:t})).check)}async getChecks(t){return this.#e(async()=>{const{checkers:e}=await this.#t.getCheckers({filter:t});return e})}async getExecutableChecks(){return this.#e(async()=>{const{executableChecks:t}=await this.#t.getExecutableChecks();return t})}async createCheck(t){return this.#e(async()=>{const{check:e}=await this.#t.createCheck({input:t});return e})}async updateCheck(t){return this.#e(async()=>{const{check:e}=await this.#t.updateCheck({input:t});return e})}async deleteCheck(t){return this.#e(async()=>await this.#t.deleteChecker({checkerId:t}))}async executeCheck(t){return this.#e(async()=>{const{result:e}=await this.#t.executeCheck({input:t});return e})}async importChecks(t){return this.#e(async()=>{const{status:e}=await this.#t.importCheckers({checkers:t});return e})}async setEntityExempt(t){return this.#e(async()=>{const{setEntityExempt:e}=await this.#t.setEntityExempt({input:t});return e})}async setManualCheckResult(t){return this.#e(async()=>await this.#t.setManualCheckResult({input:t}))}async deleteExemption(t,e){return this.#e(async()=>await this.#t.deleteExemption({checkId:t,entityRef:e}))}async getExemption(t,e){return this.#e(async()=>await this.#t.getExemption({checkId:t,entityRef:e}))}async getExemptions(t,e,s,a,n){return this.#e(async()=>await this.#t.getExemptions({checkId:t,first:e,after:s,last:a,before:n}))}async getExemptCheckIds(t,e){return this.#e(async()=>await this.#t.getExemptCheckIds({entityRef:t,trackId:e}))}async getCollectors(t){return this.#e(async()=>{const{collectors:e}=await this.#t.getCollectors({ids:t});return e})}async getFactSchema(t,e){if(!(!t||!e))return this.#e(async()=>{const{factSchema:s}=await this.#t.getFactSchemas({collectorId:t,factName:e});return s})}async updateCollectorConfig(t){return this.#e(async()=>{const{collector:e}=await this.#t.updateCollectorConfig({input:t});return e})}async getOverallCheckPassRates(t){return this.#e(async()=>await this.#t.getOverallCheckPassRates({filter:t}))}async getIndividualCheckPassRates(t){return this.#e(async()=>await this.#t.getIndividualCheckPassRates({filter:t}))}async getOverallTrackPassRate(t){return this.#e(async()=>await this.#t.getOverallTrackPassRate({filter:t}))}async getIndividualTrackPassRate(t){return this.#e(async()=>await this.#t.getIndividualTrackPassRate({filter:t}))}async getOverallEntityPassRates(t){return this.#e(async()=>await this.#t.getOverallEntityPassRates({filter:t}))}async getIndividualEntityPassRates(t){return this.#e(async()=>await this.#t.getIndividualEntityPassRates({input:t}))}async getOverallGroupPassRates(t){return this.#e(async()=>await this.#t.getOverallGroupPassRates({input:t}))}async getIndividualGroupPassRates(t){return this.#e(async()=>await this.#t.getIndividualGroupPassRates({input:t}))}async getEntityRefsForTechHealthFilter(t){return this.#e(async()=>await this.#t.getEntityRefsForTechHealthFilter({ownerEntityRef:t}))}async getTrackEntities(t){return this.#e(async()=>await this.#t.getTrackEntities({input:t}))}async getCampaigns(t,e){return this.#e(async()=>{const{campaigns:s}=await this.#t.getCampaigns({filter:t,byTrackIds:e});return s})}async createCampaign(t){return this.#e(async()=>{const{campaign:e}=await this.#t.createCampaign({input:t});return e})}async updateCampaign(t){return this.#e(async()=>{const{campaign:e}=await this.#t.updateCampaign({input:t});return e})}async deleteCampaign(t){return this.#e(async()=>{const{campaignDeleted:e}=await this.#t.deleteCampaign({campaignId:t});return e})}async sendCampaignNotification(t){return this.#e(async()=>{const{sendCampaignNotification:e}=await this.#t.sendCampaignNotification({input:t});return e})}async archiveCampaign(t){return this.#e(async()=>{const{campaignArchived:e}=await this.#t.archiveCampaign({campaignId:t});return e})}async getCampaignOwners(){return this.#e(async()=>{const{campaignOwners:t}=await this.#t.getCampaignOwners();return t})}async getCheckOwners(){return this.#e(async()=>{const{checkOwners:t}=await this.#t.getCheckOwners();return t})}async getTrackOwners(){return this.#e(async()=>{const{trackOwners:t}=await this.#t.getTrackOwners();return t})}async getCertificationStatus(t){return this.#e(async()=>this.#t.getCertificationStatus({input:t}))}async getCertificationStatusHistory(t){return this.#e(async()=>this.#t.getCertificationStatusHistory({input:t}))}async getCheckStatus(t){return this.#e(async()=>(await this.#t.getCheckStatus({input:t})).checkStatus)}async getCheckStatuses(t){return this.#e(async()=>(await this.#t.getCheckStatuses({input:t})).checkStatuses)}async getCheckStatusHistory(t){return this.#e(async()=>(await this.#t.getCheckStatusHistory({input:t})).checkStatusHistory)}async getCheckStatusHistories(t){return this.#e(async()=>(await this.#t.getCheckStatusHistories({input:t})).checkStatusHistories)}async getCheckEntities(t){return this.#e(async()=>await this.#t.getCheckEntities({input:t}))}async getSavedViews(t){return this.#e(async()=>await this.#t.getSavedViews({input:t}))}async saveView(t){return this.#e(async()=>{const{saveView:e}=await this.#t.saveView({input:t});return e})}async deleteView(t){return this.#e(async()=>{const{deleteView:e}=await this.#t.deleteView({input:t});return e})}async getPathResolvers(){return this.#e(async()=>{const{pathResolvers:t}=await this.#t.getPathResolvers();return t})}async getCheckTemplates(){return this.#e(async()=>{const{checkerTemplates:t}=await this.#t.getCheckTemplates();return t})}async getFact(t){return this.#e(async()=>{const{fact:e}=await this.#t.getFact(t);return e})}async getRootGroups(){return this.#e(async()=>{const{rootGroups:t}=await this.#t.rootGroups();return t})}async getDescendantsOfGroups(t){return this.#e(async()=>{const{getDescendantsOfGroups:e}=await this.#t.getDescendentsOfGroups({ids:t});return e})}async getGroupTypeHierarchy(){return this.#e(async()=>{const{groupTypeHierarchy:t}=await this.#t.getGroupTypeHierarchy();return t})}async getGroupHierarchy(t){return this.#e(async()=>{const{groupHierarchy:e}=await this.#t.getGroupHierarchy({groupRef:t});return e})}async getHierarchicalTrackStatus(t,e){return this.#e(async()=>{const{hierarchicalTrackStatus:s}=await this.#t.getHierarchicalTrackStatus({trackId:t,groupRef:e});return s})}}export{p as SoundcheckApi,y as soundcheckApiRef};
|
|
2
2
|
//# sourceMappingURL=api.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{compatWrapper as c}from"@backstage/core-compat-api";import{createExtensionDataRef as s,createExtensionBlueprint as g,coreExtensionData as t,ExtensionBoundary as l}from"@backstage/frontend-plugin-api";import{lazy as f}from"react";import{RoutingPageWrapper as m}from"../components/RoutingPage/RoutingPage.esm.js";const e=s().with({id:"soundcheck.integrationId"}),h=g({kind:"integration",attachTo:[{id:"page:soundcheck/SoundcheckRoutingPage",input:"integrations"},{id:"app/routes",input:"routes"}],output:[t.routePath,t.reactElement,t.routeRef.optional(),e],dataRefs:{integrationId:e},*factory({integrationId:n,loader:r,path:a,routeRef:i},{node:d}){const p=f(()=>r().then(u=>({default:()=>u})));yield t.routePath(a??`/soundcheck/integrations/${n}`),yield t.reactElement(c(o(l,{node:d,children:o(m,{children:o(p,{})})}))),i&&(yield t.routeRef(i)),yield e(n)}});export{h as IntegrationPageBlueprint,e as integrationIdExtensionDataRef};
|
|
2
|
+
//# sourceMappingURL=IntegrationPageBlueprint.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as r,Fragment as l}from"react/jsx-runtime";import{makeStyles as n,alpha as m,Box as p}from"@material-ui/core";import d from"classnames";import{BadgeVariant as s}from"../../graphql/generated/index.esm.js";import{BaseBadge as c}from"./BaseBadge.esm.js";import{StatusBadge as g}from"./StatusBadge.esm.js";const x=n(t=>({root:{background:({color:e})=>e,color:({color:e})=>e?t.palette.getContrastText(e):t.palette.text.primary,border:({size:e})=>t.palette.type==="dark"?void 0:`${e==="small"?"1px":"2px"} solid ${m(t.palette.text.primary,.8)}`,"&::after":{position:"absolute",display:"block",content:'""',top:0,left:0,width:"100%",height:"100%",borderRadius:"50%",boxShadow:["inset 0 -0.10em 0 0 rgba(0, 0, 0, 0.15)","inset 0px 0.10em 0px 0px rgba(255, 255, 255, 0.4)","inset 0px 0.9em 0px -0.4em rgba(255, 255, 255, 0.1)"].join(",")}},borderTheme:{borderColor:t.palette.text.primary,borderStyle:"solid",color:t.palette.text.primary}})),b=({className:t,badge:e,size:a="small"})=>{const i=x({color:"color"in e.options?e.options.color:void 0,size:a});if(e.variant===s.Status){const o=e.options;return r(g,{className:t,size:a,status:o.status})}if(e.variant===s.Medal){const o=e.options;return o.svg?r(p,{width:a==="small"?24:48,display:"inline-flex",alignItems:"center",justifyContent:"center",marginRight:1,children:r("img",{src:`data:image/svg+xml;utf8,${encodeURIComponent(o.svg)}`,alt:"level-badge"})}):r(c,{className:d(t,o.color?i.root:i.borderTheme),size:a,label:`L${o.level}`})}return r(l,{})};export{b as LevelBadge};
|
|
2
2
|
//# sourceMappingURL=LevelBadge.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{v4 as S}from"uuid";import{mapInputFilterToFormFilters as d,mapCatalogFilterToFormKeyValueFilters as u}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{mapTrackFormToInput as
|
|
1
|
+
import{v4 as S}from"uuid";import{mapInputFilterToFormFilters as d,mapCatalogFilterToFormKeyValueFilters as u}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{mapTrackFormToInput as D}from"../../TrackForm/utils/useTrackForm.esm.js";const x=({name:p,ownerEntityRef:a,description:o,targetCompletionDate:s,supportChannel:i,milestones:r,startDate:n,track:t})=>({detailsStep:{name:p,description:o,ownerEntityRef:a,supportChannel:i,startDate:n,targetCompletionDate:s,draft:t.draft??!1},tracksStep:{checks:t?.levels?.[0].checks.map(e=>({id:e.id,name:e.name??e.id,description:e.description}))},filtersStep:{filter:d(t.filter),keyValueFilter:u(t.filter),excludeFilter:d(t.exclude),excludeKeyValueFilter:u(t.exclude)},milestonesStep:{milestones:r.map(e=>({id:Number(e.id),name:e.name,description:e.description,passRate:e.targetPercent.toString()}))}}),h=(p,a,o)=>{const{tracksStep:{checks:s},detailsStep:{name:i,description:r,ownerEntityRef:n,supportChannel:t,startDate:e,targetCompletionDate:m,draft:f},filtersStep:l,milestonesStep:{milestones:F}}=p,c=D({detailsStep:{name:i,description:r,ownerEntityRef:n,draft:f},levelsStep:{levels:[{name:"Level 1",checks:s,description:""}]},filtersStep:{filter:l.filter,keyValueFilter:l.keyValueFilter,excludeFilter:l.excludeFilter,excludeKeyValueFilter:l.excludeKeyValueFilter}},o??{},a?.track);return{id:a?.id??S(),track:{...c,type:"campaign"},name:i,description:r,ownerEntityRef:n,supportChannel:t,startDate:e,targetCompletionDate:m,milestones:F.map(({id:k,name:g,description:y,passRate:C})=>({id:k,trackId:c.id,name:g,description:y,targetPercent:parseInt(C,10),targetCompletionDate:m}))}};export{h as mapCampaignFormDataToCampaignInput,x as mapCampaignToFormValues};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i,jsxs as
|
|
1
|
+
import{jsx as i,jsxs as r,Fragment as W}from"react/jsx-runtime";import{Content as x}from"@backstage/core-components";import{useRouteRef as q,useApi as J,configApiRef as K}from"@backstage/core-plugin-api";import{EntityRefLink as Q}from"@backstage/plugin-catalog-react";import{usePermission as u}from"@backstage/plugin-permission-react";import{makeStyles as X,Button as Y,Paper as Z,Grid as s,Typography as E,Box as _}from"@material-ui/core";import{soundcheckCampaignReadPermission as $,soundcheckCampaignUpdatePermission as ee,soundcheckCampaignNotificationsCreatePermission as ie}from"@spotify/backstage-plugin-soundcheck-common";import{DateTime as I}from"luxon";import{useMemo as g}from"react";import{useParams as te,useNavigate as ne}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as oe}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCheckStatuses as re}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useCheckStatusHistories as ae}from"../../hooks/aggregations/useCheckStatusHistories.esm.js";import{useSearchParam as f}from"../../hooks/useSearchParam.esm.js";import{campaignEditRouteRef as se}from"../../routes.esm.js";import{CheckCard as ce}from"../CheckCard/CheckCard.esm.js";import{LoadingIndicator as me}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as de}from"../PageWarningMessage/PageWarningMessage.esm.js";import{SendCampaignNotificationDialog as pe}from"../SendCampaignNotificationDialog/SendCampaignNotificationDialog.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as le}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContent as ge}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"react-markdown";import"rehype-raw";import"remark-gfm";import{FilterBar as fe}from"../TrackPage/FilterBar/FilterBar.esm.js";import{toFilter as he}from"../TrackPage/FilterBar/util.esm.js";import{TrackEntitiesTable as ue}from"../TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js";import{CampaignStatusHistoryTile as ke}from"./CampaignStatusHistoryTile.esm.js";import{CampaignStatusTile as ye}from"./CampaignStatusTile.esm.js";import{DaysRemainingTile as Ce}from"./DaysRemainingTile.esm.js";const we=X(e=>({root:{height:"100%",background:e.palette.background.default},header:{backgroundColor:e.palette.background.paper,borderRadius:0,marginBottom:e.spacing(2),paddingLeft:e.spacing(1),borderLeft:"none",borderRight:"none"},progressContainer:{display:"flex",marginBottom:e.spacing(3)},campaignContainerContent:{paddingTop:e.spacing(1),paddingBottom:e.spacing(1),backgroundColor:e.palette.background.paper},editButton:{marginLeft:"auto"},notificationButton:{marginRight:e.spacing(1)},checksContainer:{},entitiesContainer:{marginTop:e.spacing(3)},headerDescription:{fontSize:e.typography.body2.fontSize,margin:e.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},content:{paddingTop:0},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}},sectionTitle:{paddingBottom:e.spacing(1)}})),Ne=()=>{const e=we(),[c,D]=f("owners"),[m,L]=f("lifecycles"),[d,P]=f("types"),[p,M]=f("systems"),l=g(()=>he({lifecycles:m,owners:c,types:d,systems:p}),[m,c,d,p]),{campaignId:a}=te(),{data:F,isLoading:k}=oe({ids:[a],first:1}),n=F?.edges?.[0]?.node,t=n?.track,y=t?.levels?.[0],{loading:O,allowed:z}=u({permission:$,resourceRef:a}),{loading:C,allowed:w}=u({permission:ee,resourceRef:a}),N=n?I.fromISO(n.startDate):void 0,A=N?Math.max(Math.ceil(I.now().diff(N,"days").days),1):void 0,R=Array.from(new Set(t?.levels.flatMap(o=>o.checks).map(o=>o.id)??[])),{data:H}=re({trackId:t?.id,checkIds:R,filter:l},!!t),{data:G}=ae({trackId:t?.id,checkIds:R,numberOfDays:A??30,filter:l},!!t),b=ne(),v=q(se),j=g(()=>t?.ownerEntityRef?i(Q,{color:"inherit",entityRef:t.ownerEntityRef,className:e.ownerLink}):null,[t?.ownerEntityRef,e.ownerLink]),S=J(K).getOptionalBoolean("soundcheck.notifications.enabled"),{loading:B,allowed:T}=u({permission:ie}),U=g(()=>r(W,{children:[S&&!B&&T&&n&&i(pe,{campaign:n,buttonClass:e.notificationButton}),!C&&w&&t?.isEditable?i(Y,{className:e.editButton,variant:"contained",color:"primary",onClick:()=>{b(v({campaignId:a}))},children:"Edit Campaign"}):null]}),[S,B,T,n,e.notificationButton,e.editButton,C,w,t?.isEditable,b,v,a]),V=g(()=>t?.description?i(ge,{className:e.headerDescription,content:t.description}):null,[e.headerDescription,t?.description]);return le({title:t?.name,description:V,customSubtitle:j,sectionRight:U}),r("div",{children:[i(de,{entityName:"track",entityId:a,showNotFound:!k&&!n,showCannotView:!O&&!z}),k&&i(me,{}),t&&r("div",{className:e.root,children:[i(Z,{elevation:1,className:e.header,children:i(x,{className:e.campaignContainerContent,children:i(fe,{track:t,owners:c,setOwners:D,lifecycles:m,setLifecycles:L,types:d,setTypes:P,systems:p,setSystems:M})})}),r(x,{className:e.content,children:[i("div",{className:e.progressContainer,children:r(s,{container:!0,spacing:2,children:[i(s,{item:!0,xs:2,children:i(Ce,{campaign:n})}),i(s,{item:!0,xs:4,children:i(ye,{campaign:n,filter:l})}),i(s,{item:!0,xs:6,children:i(ke,{campaign:n,filter:l})})]})}),r("div",{className:e.checksContainer,children:[i(E,{variant:"h3",className:e.sectionTitle,children:"Checks"}),y&&i(_,{className:e.content,children:i(s,{container:!0,spacing:1,children:y.checks.map(o=>i(s,{item:!0,xs:12,sm:6,md:4,children:i(ce,{track:t,check:o,status:H?.find(h=>h.id===o.id),history:G?.find(h=>h.id===o.id)})},o.id))})}),t&&r("div",{className:e.entitiesContainer,children:[i(E,{variant:"h3",className:e.sectionTitle,children:"Entities"}),i(ue,{track:t,initialPageSize:10,lifecycles:m,owners:c,types:d,systems:p})]})]})]})]})]})};export{Ne as CampaignInsightsPage};
|
|
2
2
|
//# sourceMappingURL=CampaignInsightsPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i}from"react/jsx-runtime";import{useTheme as l,Paper as f,Box as h}from"@material-ui/core";import{makeStyles as u}from"@material-ui/core/styles";import{DateTime as m}from"luxon";import{useMemo as g}from"react";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"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatusHistory as y}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import"react-router-dom";import{AreaChart as x}from"../AreaChart/AreaChart.esm.js";import{LineChartPlaceholder as S}from"../Charts/LineChart/LineChartPlaceholder.esm.js";const C=u(t=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${t.palette.divider}`,height:"100%",width:"100%"},title:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${t.typography.h5.fontSize}px`,cursor:"default"},content:{padding:t.spacing(1,2,1,0),width:"100%",height:"100%"}}));function H({campaign:t,filter:
|
|
1
|
+
import{jsx as i}from"react/jsx-runtime";import{useTheme as l,Paper as f,Box as h}from"@material-ui/core";import{makeStyles as u}from"@material-ui/core/styles";import{DateTime as m}from"luxon";import{useMemo as g}from"react";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"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatusHistory as y}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import"react-router-dom";import{AreaChart as x}from"../AreaChart/AreaChart.esm.js";import{LineChartPlaceholder as S}from"../Charts/LineChart/LineChartPlaceholder.esm.js";const C=u(t=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${t.palette.divider}`,height:"100%",width:"100%"},title:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${t.typography.h5.fontSize}px`,cursor:"default"},content:{padding:t.spacing(1,2,1,0),width:"100%",height:"100%"}}));function H({campaign:t,filter:n}){const p=l(),a=C(),d=m.fromISO(t.startDate),c=Math.max(Math.ceil(m.now().diff(d,"days").days),1),{data:r}=y({trackId:t.track.id,filter:n,numberOfDays:c},!!t),e=r?.certificationStatusHistory.numberOfEntities??0,o=g(()=>e>0?r?.certificationStatusHistory.history.map(s=>({date:s.date,Passed:Math.round(s.statusByLevel[0].passed/e*100)})):[],[e,r]);return i(f,{className:a.card,children:i(h,{className:a.content,children:o?.length?i(x,{data:o,categories:["Passed"],categoryColors:{Passed:p.palette.success.main},index:"date",minValue:0,maxValue:100,showLegend:!1}):i(S,{height:200,text:e>0?"No Historical Data":"No Applicable Entities"})})})}export{H as CampaignStatusHistoryTile};
|
|
2
2
|
//# sourceMappingURL=CampaignStatusHistoryTile.esm.js.map
|