@spotify/backstage-plugin-soundcheck 0.21.0 → 0.22.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.
Files changed (68) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/alpha/integrations.esm.js +1 -1
  3. package/dist/alpha/pages.esm.js +1 -1
  4. package/dist/alpha.d.ts +68 -23
  5. package/dist/api.esm.js +1 -1
  6. package/dist/blueprints/CampaignActionBlueprint.esm.js +2 -0
  7. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  8. package/dist/components/AccordionSection/AccordionSection.esm.js +2 -0
  9. package/dist/components/Alert/Alert.esm.js +1 -1
  10. package/dist/components/CampaignPage/CampaignActionsContext.esm.js +2 -0
  11. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  12. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +1 -1
  13. package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +1 -1
  14. package/dist/components/CheckTemplatesPage/TemplateCategoryBUI.esm.js +1 -1
  15. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
  16. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  17. package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
  18. package/dist/components/CollectorsPage/IntegrationLogoBUI.esm.js +1 -1
  19. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
  20. package/dist/components/CreateNewTrackPage/CreateNewTrackPage.esm.js +2 -0
  21. package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +1 -1
  22. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  23. package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +1 -1
  24. package/dist/components/FilterSidebar/util.esm.js +1 -1
  25. package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
  26. package/dist/components/GroupSelectorBUI/GroupSelectorBUI.esm.js +1 -1
  27. package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +1 -1
  28. package/dist/components/Menus/useCampaignActions.esm.js +1 -1
  29. package/dist/components/RoutingPage/RoutingPageBUI.esm.js +1 -1
  30. package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +1 -1
  31. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js +1 -1
  32. package/dist/components/Stepper/Stepper.esm.js +1 -1
  33. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
  34. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
  35. package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
  36. package/dist/components/TimePeriodBar/TimePeriodBarBUI.esm.js +1 -1
  37. package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +1 -1
  38. package/dist/components/TrackBuilderPage/TrackBuilderPage.esm.js +1 -1
  39. package/dist/components/TrackBuilderPage/components/CheckItem/CheckItem.esm.js +2 -0
  40. package/dist/components/TrackBuilderPage/components/IntegrationTags/IntegrationTags.esm.js +2 -0
  41. package/dist/components/TrackBuilderPage/components/RunChecksStep/RunChecksStep.esm.js +2 -0
  42. package/dist/components/TrackBuilderPage/components/SelectProviderStep/SelectProviderStep.esm.js +2 -0
  43. package/dist/components/TrackBuilderPage/components/SelectTracksStep/SelectTracksStep.esm.js +2 -0
  44. package/dist/components/TrackBuilderPage/components/TrackAccordion/TrackAccordion.esm.js +2 -0
  45. package/dist/components/TrackBuilderPage/components/TrackBuilderStatus/TrackBuilderStatus.esm.js +2 -0
  46. package/dist/components/TrackBuilderPage/hooks/useTrackBuilderStatus.esm.js +2 -0
  47. package/dist/components/TrackBuilderPage/hooks/useTrackCheckExecutions.esm.js +2 -0
  48. package/dist/components/TrackBuilderPage/utils.esm.js +4 -0
  49. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
  50. package/dist/components/TrackPage/TrackHistoryChartBUI.esm.js +1 -1
  51. package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
  52. package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
  53. package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
  54. package/dist/graphql/generated/index.esm.js +168 -85
  55. package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
  56. package/dist/hooks/graphqlKeys.esm.js +1 -1
  57. package/dist/hooks/tracks/useDeleteTrack.esm.js +1 -1
  58. package/dist/hooks/tracks/useOutOfBoxTracks.esm.js +2 -0
  59. package/dist/hooks/tracks/useSaveOutOfBoxTracks.esm.js +2 -0
  60. package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
  61. package/dist/index.d.ts +30 -2
  62. package/dist/index.esm.js +1 -1
  63. package/dist/routes.esm.js +1 -1
  64. package/package.json +24 -24
  65. package/dist/components/Badge/Badge.esm.js +0 -2
  66. package/dist/components/TrackBuilderPage/RunFirstCheckStep.esm.js +0 -2
  67. package/dist/components/TrackBuilderPage/SelectTracksStep.esm.js +0 -2
  68. package/dist/components/TrackBuilderPage/mockData.esm.js +0 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # @spotify/backstage-plugin-soundcheck
2
2
 
3
+ ## 0.22.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Added CampaignActionBlueprint extension point for external plugins to inject actions
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependency `backstage` to `1.48.0`.
12
+ - Updated dependency `@graphql-codegen/add` to `^6.0.0`.
13
+ Updated dependency `@graphql-codegen/cli` to `^6.0.0`.
14
+ Updated dependency `@graphql-codegen/typescript` to `^5.0.0`.
15
+ Updated dependency `@graphql-codegen/typescript-resolvers` to `^5.0.0`.
16
+ Updated dependency `@graphql-codegen/fragment-matcher` to `^6.0.0`.
17
+ Updated dependency `@graphql-codegen/introspection` to `^5.0.0`.
18
+ Updated dependency `@graphql-codegen/typescript-operations` to `^5.0.0`.
19
+ Updated dependency `@graphql-codegen/near-operation-file-preset` to `^4.0.0`.
20
+ - Resolved an issue where, in certain scenarios, the "Configure" button was incorrectly disabled for integrations with a custom No-Code UI.
21
+ - Soundcheck - Fixes an issue that could display entity references instead of names in Soundcheck tables.
22
+ - Fixed an issue where the SonarQube integration displayed an error in the UI after clicking "Configure".
23
+ - Dropdowns in Soundcheck no longer auto select values when hovered over and not clicked
24
+ - Launch Spotify Track Templates feature.
25
+ - Fix Soundcheck track overview filtering for multiple selected owners.
26
+ - Soundcheck - Fixed an issue where the fact-explorer could show an empty fact if fact collection failed.
27
+ - Updated dependencies
28
+ - Updated dependencies
29
+ - Updated dependencies
30
+ - Updated dependencies
31
+ - @spotify/backstage-plugin-core@0.8.15
32
+ - @spotify/backstage-plugin-soundcheck-common@0.21.0
33
+
3
34
  ## 0.21.0
4
35
 
5
36
  ### Minor Changes
@@ -1,2 +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};
1
+ import{jsx as e}from"react/jsx-runtime";import{IntegrationPageBlueprint as t}from"../blueprints/IntegrationPageBlueprint.esm.js";import"../blueprints/CampaignActionBlueprint.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
2
  //# sourceMappingURL=integrations.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r}from"react/jsx-runtime";import{convertLegacyRouteRef as n,compatWrapper as i}from"@backstage/core-compat-api";import{PageBlueprint as a,createExtensionInput as s,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 f=a.makeWithOverrides({name:"SoundcheckRoutingPage",inputs:{integrations:s([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),path:"/soundcheck",loader:()=>import("../components/RoutingPage/RoutingPage.esm.js").then(p=>i(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=a.make({name:"overview",params:{routeRef:n(c),path:"/soundcheck",loader:()=>import("../components/OverviewPage/index.esm.js").then(e=>i(r(e.OverviewPage,{})))}});export{h as soundcheckOverviewPage,f as soundcheckRoutingPage};
1
+ import{jsx as n}from"react/jsx-runtime";import{convertLegacyRouteRef as i,compatWrapper as r}from"@backstage/core-compat-api";import{PageBlueprint as c,createExtensionInput as m,coreExtensionData as e}from"@backstage/frontend-plugin-api";import{integrationIdExtensionDataRef as g}from"../blueprints/IntegrationPageBlueprint.esm.js";import{campaignActionLabelDataRef as p,campaignActionIdDataRef as u,campaignActionHrefDataRef as f}from"../blueprints/CampaignActionBlueprint.esm.js";import{rootRouteRef as s}from"../routes.esm.js";const d=c.makeWithOverrides({name:"SoundcheckRoutingPage",inputs:{integrations:m([e.routePath,e.reactElement,e.routeRef.optional(),g]),campaignActions:m([p,u,f])},factory(o,{config:R,inputs:a}){return o({routeRef:i(s),path:"/soundcheck",loader:()=>import("../components/RoutingPage/RoutingPage.esm.js").then(h=>r(n(h.RoutingPage,{title:R.title,integrations:a.integrations.map(t=>({integrationId:t.get(g),routePath:t.get(e.routePath),routeRef:t.get(e.routeRef)})),campaignActions:a.campaignActions.map(t=>({label:t.get(p),id:t.get(u),href:t.get(f)}))})))})}}),l=c.make({name:"overview",params:{routeRef:i(s),path:"/soundcheck",loader:()=>import("../components/OverviewPage/index.esm.js").then(o=>r(n(o.OverviewPage,{})))}});export{l as soundcheckOverviewPage,d as soundcheckRoutingPage};
2
2
  //# sourceMappingURL=pages.esm.js.map
package/dist/alpha.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import * as react from 'react';
2
1
  import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
2
+ import * as react from 'react';
3
3
 
4
4
  /**
5
5
  * @public
@@ -12,7 +12,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
12
12
  name: "azure";
13
13
  config: {};
14
14
  configInput: {};
15
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
15
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
16
16
  optional: true;
17
17
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
18
18
  inputs: {};
@@ -28,7 +28,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
28
28
  name: "bigquery";
29
29
  config: {};
30
30
  configInput: {};
31
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
31
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
32
32
  optional: true;
33
33
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
34
34
  inputs: {};
@@ -44,7 +44,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
44
44
  name: "catalog";
45
45
  config: {};
46
46
  configInput: {};
47
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
47
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
48
48
  optional: true;
49
49
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
50
50
  inputs: {};
@@ -60,7 +60,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
60
60
  name: "datadog";
61
61
  config: {};
62
62
  configInput: {};
63
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
63
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
64
64
  optional: true;
65
65
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
66
66
  inputs: {};
@@ -76,7 +76,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
76
76
  name: "data-registry";
77
77
  config: {};
78
78
  configInput: {};
79
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
79
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
80
80
  optional: true;
81
81
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
82
82
  inputs: {};
@@ -92,7 +92,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
92
92
  name: "github";
93
93
  config: {};
94
94
  configInput: {};
95
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
95
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
96
96
  optional: true;
97
97
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
98
98
  inputs: {};
@@ -108,7 +108,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
108
108
  name: "gitlab";
109
109
  config: {};
110
110
  configInput: {};
111
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
111
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
112
112
  optional: true;
113
113
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
114
114
  inputs: {};
@@ -124,7 +124,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
124
124
  name: "http";
125
125
  config: {};
126
126
  configInput: {};
127
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
127
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
128
128
  optional: true;
129
129
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
130
130
  inputs: {};
@@ -140,7 +140,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
140
140
  name: "jira";
141
141
  config: {};
142
142
  configInput: {};
143
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
143
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
144
144
  optional: true;
145
145
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
146
146
  inputs: {};
@@ -156,7 +156,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
156
156
  name: "kubernetes";
157
157
  config: {};
158
158
  configInput: {};
159
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
159
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
160
160
  optional: true;
161
161
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
162
162
  inputs: {};
@@ -172,7 +172,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
172
172
  name: "newrelic";
173
173
  config: {};
174
174
  configInput: {};
175
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
175
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
176
176
  optional: true;
177
177
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
178
178
  inputs: {};
@@ -188,7 +188,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
188
188
  name: "pagerduty";
189
189
  config: {};
190
190
  configInput: {};
191
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
191
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
192
192
  optional: true;
193
193
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
194
194
  inputs: {};
@@ -204,7 +204,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
204
204
  name: "scm";
205
205
  config: {};
206
206
  configInput: {};
207
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
207
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
208
208
  optional: true;
209
209
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
210
210
  inputs: {};
@@ -220,7 +220,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
220
220
  name: "sonarqube";
221
221
  config: {};
222
222
  configInput: {};
223
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
223
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
224
224
  optional: true;
225
225
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
226
226
  inputs: {};
@@ -250,22 +250,43 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
250
250
  }>;
251
251
  "page:soundcheck/SoundcheckRoutingPage": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
252
252
  config: {
253
- title: string | undefined;
254
253
  path: string | undefined;
254
+ title: string | undefined;
255
255
  };
256
256
  configInput: {
257
- title?: string | undefined;
257
+ title?: string | undefined | undefined;
258
258
  path?: string | undefined | undefined;
259
259
  };
260
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
260
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
261
+ optional: true;
262
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {
263
+ optional: true;
264
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
261
265
  optional: true;
262
266
  }>;
263
267
  inputs: {
264
- integrations: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
268
+ pages: _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<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
269
+ optional: true;
270
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.title", {
271
+ optional: true;
272
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
265
273
  optional: true;
266
274
  }>, {
267
275
  singleton: false;
268
276
  optional: false;
277
+ internal: false;
278
+ }>;
279
+ 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", {
280
+ optional: true;
281
+ }>, {
282
+ singleton: false;
283
+ optional: false;
284
+ internal: false;
285
+ }>;
286
+ campaignActions: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.campaignAction.label", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.campaignAction.id", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(campaignId: string) => string, "soundcheck.campaignAction.href", {}>, {
287
+ singleton: false;
288
+ optional: false;
289
+ internal: false;
269
290
  }>;
270
291
  };
271
292
  kind: "page";
@@ -273,8 +294,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
273
294
  params: {
274
295
  defaultPath?: [Error: `Use the 'path' param instead`];
275
296
  path: string;
276
- loader: () => Promise<JSX.Element>;
297
+ title?: string;
298
+ icon?: _backstage_frontend_plugin_api.IconElement;
299
+ loader?: () => Promise<react.JSX.Element>;
277
300
  routeRef?: _backstage_frontend_plugin_api.RouteRef;
301
+ noHeader?: boolean;
278
302
  };
279
303
  }>;
280
304
  "page:soundcheck/overview": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
@@ -282,19 +306,40 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
282
306
  name: "overview";
283
307
  config: {
284
308
  path: string | undefined;
309
+ title: string | undefined;
285
310
  };
286
311
  configInput: {
312
+ title?: string | undefined;
287
313
  path?: string | undefined;
288
314
  };
289
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
315
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
316
+ optional: true;
317
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {
318
+ optional: true;
319
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
290
320
  optional: true;
291
321
  }>;
292
- inputs: {};
322
+ inputs: {
323
+ pages: _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<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
324
+ optional: true;
325
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.title", {
326
+ optional: true;
327
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
328
+ optional: true;
329
+ }>, {
330
+ singleton: false;
331
+ optional: false;
332
+ internal: false;
333
+ }>;
334
+ };
293
335
  params: {
294
336
  defaultPath?: [Error: `Use the 'path' param instead`];
295
337
  path: string;
296
- loader: () => Promise<JSX.Element>;
338
+ title?: string;
339
+ icon?: _backstage_frontend_plugin_api.IconElement;
340
+ loader?: () => Promise<react.JSX.Element>;
297
341
  routeRef?: _backstage_frontend_plugin_api.RouteRef;
342
+ noHeader?: boolean;
298
343
  };
299
344
  }>;
300
345
  }>;
package/dist/api.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createApiRef as u}from"@backstage/core-plugin-api";import{GraphQLClient as y}from"graphql-request";import o from"pako";import{getSdk as l}from"./graphql/generated/index.esm.js";const g=u({id:"plugin.soundcheck"}),k=i=>"response"in i&&"errors"in i.response,p=i=>"response"in i&&"message"in i.response;class w{#a;#s;#t;constructor(t){this.#a=t.fetchApi,this.#s=t.discoveryApi;const e=new y("/graphql",{fetch:async(a,s)=>{const r=`${await this.#s.getBaseUrl("soundcheck")}${a}`;return this.#a.fetch(r,s)}});this.#t=l(e)}#r=t=>k(t)?t.response?.errors?.[0].message??`${t}`:p(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 getMultipleTrackStatuses(t){return this.#e(async()=>{const{multipleTrackStatuses:e}=await this.#t.getMultipleTrackStatuses({input:t});return e})}async getAllCertifications(t,e=!1,a=!1){return this.#e(async()=>{const{certifications:s}=await this.#t.getAllCertifications({entityRef:t,includeFilteredChecks:e,includeDraftTracks:a});return s})}async getCertificationDetails(t,e=!1,a=!1){return this.#e(async()=>{const{certifications:s}=await this.#t.getCertificationDetails({entityRef:t,includeFilteredChecks:e,includeDraftTracks:a});return s})}async getCertificationDetailsForTrack(t,e,a){return this.#e(async()=>{const{trackCertification:s}=await this.#t.getCertificationDetailsForTrack({entityRef:t,trackId:e,includeFilteredChecks:a});return s})}async getCheckResultDetails(t,e,a){return this.#e(async()=>{const{checkResult:s}=await this.#t.getCheckResultDetails({entityRef:t,trackId:e,checkId:a});return s})}async getFacetsForOwner(t){return this.#e(async()=>{const{facetsForOwner:e}=await this.#t.getFacetsForOwner({ownerEntityRef:t});return e})}async getTrackOverviewForOwner(t,e,a,s,r){return this.#e(async()=>{const{trackOverviewForOwner:n}=await this.#t.getTrackOverviewForOwner({ownerEntityRef:t,facet:e,first:a,after:s,entitySearch:r});return n})}async getTracks(t){return this.#e(async()=>{const{tracks:e}=await this.#t.getTracks({filter:t});return e})}async getTracksApplicableEntityCount(t,e){return this.#e(async()=>{const{tracks:a}=await this.#t.getTracksApplicableEntityCount({filter:t,groupRef:e});return a?.edges?.map(({node:s})=>({id:s.id,applicableEntityCount:s.applicableEntityCount??0}))})}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 recertifyTrack(t,e,a){return this.#e(async()=>{const{trackRecertified:s}=await this.#t.recertifyTrack({trackId:t,numberOfDays:e,loggedInUserRef:a});return s})}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,a,s,r){return this.#e(async()=>await this.#t.getExemptions({checkId:t,first:e,after:a,last:s,before:r}))}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:a}=await this.#t.getFactSchemas({collectorId:t,factName:e});return a})}async updateCollectorConfig(t){return this.#e(async()=>{const{collector:e}=await this.#t.updateCollectorConfig({input:t});return e})}async deleteCollectorConfig(t){return this.#e(async()=>await this.#t.deleteCollectorConfig({collectorId:t}))}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 getTrackEntities(t){return this.#e(async()=>await this.#t.getTrackEntities({input:t}))}async getCampaigns(t,e){return this.#e(async()=>{const{campaigns:a}=await this.#t.getCampaigns({filter:t,byTrackIds:e});return a})}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 getTrackStatusHistory(t){return this.#e(async()=>(await this.#t.getTrackStatusHistory({input:t})).trackStatusHistory)}async getTrackStatusHistories(t){return this.#e(async()=>(await this.#t.getTrackStatusHistories({input:t})).trackStatusHistories)}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 getCheckStatusHistoriesMultiFilter(t){return this.#e(async()=>(await this.#t.getCheckStatusHistoriesMultiFilter({input:t})).checkStatusHistoriesMultiFilter)}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 getGroupTypeHierarchy(){return this.#e(async()=>{const{groupTypeHierarchy:t}=await this.#t.getGroupTypeHierarchy();return t})}async getGroupHierarchy(t,e,a){return this.#e(async()=>{const{groupHierarchy:s}=await this.#t.getGroupHierarchy({groupRef:t,ownedEntitiesFilter:e,includeParent:a}),r=Uint8Array.from(atob(s.hierarchy),h=>h.charCodeAt(0)),n=o.inflate(r),c=new TextDecoder("utf-8").decode(n);return{hierarchy:JSON.parse(c)}})}async getHierarchicalTrackStatus(t,e){return this.#e(async()=>{const{hierarchicalTrackStatus:a}=await this.#t.getHierarchicalTrackStatus({trackId:t,groupRef:e});return a})}async getHierarchicalTrackStatuses(t,e){return this.#e(async()=>{const{hierarchicalTrackStatuses:a}=await this.#t.getHierarchicalTrackStatuses({trackIds:t,groupRef:e});return a})}async recordLoadTime(t){return this.#e(async()=>await this.#t.recordLoadTime({input:{metricType:t.metricType,routeName:t.routeName,loadTimeMs:t.loadTimeMs,additionalAttributes:t.additionalAttributes}}))}}export{w as SoundcheckApi,g as soundcheckApiRef};
1
+ import{createApiRef as h}from"@backstage/core-plugin-api";import{GraphQLClient as o}from"graphql-request";import y from"pako";import{getSdk as l}from"./graphql/generated/index.esm.js";const g=h({id:"plugin.soundcheck"}),k=i=>"response"in i&&"errors"in i.response,p=i=>"response"in i&&"message"in i.response;class w{#a;#s;#t;constructor(t){this.#a=t.fetchApi,this.#s=t.discoveryApi;const e=new o("/graphql",{fetch:async(a,s)=>{const r=`${await this.#s.getBaseUrl("soundcheck")}${a}`;return this.#a.fetch(r,s)}});this.#t=l(e)}#r=t=>k(t)?t.response?.errors?.[0].message??`${t}`:p(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 getMultipleTrackStatuses(t){return this.#e(async()=>{const{multipleTrackStatuses:e}=await this.#t.getMultipleTrackStatuses({input:t});return e})}async getAllCertifications(t,e=!1,a=!1){return this.#e(async()=>{const{certifications:s}=await this.#t.getAllCertifications({entityRef:t,includeFilteredChecks:e,includeDraftTracks:a});return s})}async getCertificationDetails(t,e=!1,a=!1){return this.#e(async()=>{const{certifications:s}=await this.#t.getCertificationDetails({entityRef:t,includeFilteredChecks:e,includeDraftTracks:a});return s})}async getCertificationDetailsForTrack(t,e,a){return this.#e(async()=>{const{trackCertification:s}=await this.#t.getCertificationDetailsForTrack({entityRef:t,trackId:e,includeFilteredChecks:a});return s})}async getCheckResultDetails(t,e,a){return this.#e(async()=>{const{checkResult:s}=await this.#t.getCheckResultDetails({entityRef:t,trackId:e,checkId:a});return s})}async getFacetsForOwner(t){return this.#e(async()=>{const{facetsForOwner:e}=await this.#t.getFacetsForOwner({ownerEntityRef:t});return e})}async getTrackOverviewForOwner(t,e,a,s,r){return this.#e(async()=>{const{trackOverviewForOwner:n}=await this.#t.getTrackOverviewForOwner({ownerEntityRef:t,facet:e,first:a,after:s,entitySearch:r});return n})}async getTracks(t){return this.#e(async()=>{const{tracks:e}=await this.#t.getTracks({filter:t});return e})}async getTracksApplicableEntityCount(t,e){return this.#e(async()=>{const{tracks:a}=await this.#t.getTracksApplicableEntityCount({filter:t,groupRef:e});return a?.edges?.map(({node:s})=>({id:s.id,applicableEntityCount:s.applicableEntityCount??0}))})}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 recertifyTrack(t,e,a){return this.#e(async()=>{const{trackRecertified:s}=await this.#t.recertifyTrack({trackId:t,numberOfDays:e,loggedInUserRef:a});return s})}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,a,s,r){return this.#e(async()=>await this.#t.getExemptions({checkId:t,first:e,after:a,last:s,before:r}))}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:a}=await this.#t.getFactSchemas({collectorId:t,factName:e});return a})}async updateCollectorConfig(t){return this.#e(async()=>{const{collector:e}=await this.#t.updateCollectorConfig({input:t});return e})}async deleteCollectorConfig(t){return this.#e(async()=>await this.#t.deleteCollectorConfig({collectorId:t}))}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 getTrackEntities(t){return this.#e(async()=>await this.#t.getTrackEntities({input:t}))}async getCampaigns(t,e){return this.#e(async()=>{const{campaigns:a}=await this.#t.getCampaigns({filter:t,byTrackIds:e});return a})}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 getTrackStatusHistory(t){return this.#e(async()=>(await this.#t.getTrackStatusHistory({input:t})).trackStatusHistory)}async getTrackStatusHistories(t){return this.#e(async()=>(await this.#t.getTrackStatusHistories({input:t})).trackStatusHistories)}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 getCheckStatusHistoriesMultiFilter(t){return this.#e(async()=>(await this.#t.getCheckStatusHistoriesMultiFilter({input:t})).checkStatusHistoriesMultiFilter)}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 getOutOfBoxTracks(){return this.#e(async()=>{const{outOfBoxTracks:t}=await this.#t.getOutOfBoxTracks();return t})}async saveOutOfBoxTracks(t){return this.#e(async()=>{const{status:e}=await this.#t.saveOutOfBoxTracks(t);return e})}async getFact(t){return this.#e(async()=>{const{fact:e}=await this.#t.getFact(t);return e})}async getGroupTypeHierarchy(){return this.#e(async()=>{const{groupTypeHierarchy:t}=await this.#t.getGroupTypeHierarchy();return t})}async getGroupHierarchy(t,e,a){return this.#e(async()=>{const{groupHierarchy:s}=await this.#t.getGroupHierarchy({groupRef:t,ownedEntitiesFilter:e,includeParent:a}),r=Uint8Array.from(atob(s.hierarchy),u=>u.charCodeAt(0)),n=y.inflate(r),c=new TextDecoder("utf-8").decode(n);return{hierarchy:JSON.parse(c)}})}async getHierarchicalTrackStatus(t,e){return this.#e(async()=>{const{hierarchicalTrackStatus:a}=await this.#t.getHierarchicalTrackStatus({trackId:t,groupRef:e});return a})}async getHierarchicalTrackStatuses(t,e){return this.#e(async()=>{const{hierarchicalTrackStatuses:a}=await this.#t.getHierarchicalTrackStatuses({trackIds:t,groupRef:e});return a})}async recordLoadTime(t){return this.#e(async()=>await this.#t.recordLoadTime({input:{metricType:t.metricType,routeName:t.routeName,loadTimeMs:t.loadTimeMs,additionalAttributes:t.additionalAttributes}}))}}export{w as SoundcheckApi,g as soundcheckApiRef};
2
2
  //# sourceMappingURL=api.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{createExtensionDataRef as t,createExtensionBlueprint as d}from"@backstage/frontend-plugin-api";const a=t().with({id:"soundcheck.campaignAction.label"}),i=t().with({id:"soundcheck.campaignAction.id"}),n=t().with({id:"soundcheck.campaignAction.href"}),p=d({kind:"campaign-action",attachTo:{id:"page:soundcheck/SoundcheckRoutingPage",input:"campaignActions"},output:[a,i,n],dataRefs:{label:a,id:i,href:n},*factory({label:c,id:e,href:o}){yield a(c),yield i(e),yield n(o)}});export{p as CampaignActionBlueprint,n as campaignActionHrefDataRef,i as campaignActionIdDataRef,a as campaignActionLabelDataRef};
2
+ //# sourceMappingURL=CampaignActionBlueprint.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as i}from"react/jsx-runtime";import{compatWrapper as u}from"@backstage/core-compat-api";import{createExtensionDataRef as c,createExtensionBlueprint as s,coreExtensionData as t,ExtensionBoundary as g}from"@backstage/frontend-plugin-api";import{lazy as l}from"react";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import"@backstage/ui";import"@spotify/backstage-plugin-soundcheck-common";import"react-helmet";import"react-router-dom";import"../routes.esm.js";import"../components/CampaignPage/CampaignPageBUI.esm.js";import"../components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js";import"../components/CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import"../components/CampaignsPage/CampaignListPageBUI.esm.js";import"../contexts/TrackFormContext.esm.js";import"../contexts/CheckFormContext.esm.js";import"../contexts/CampaignFormContext.esm.js";import"../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../api.esm.js";import"../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../hooks/useSoundcheckAlert.esm.js";import"../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"../components/CampaignForm/CampaignForm.esm.js";import"@remixicon/react";import"../components/SoundcheckHeader/SoundcheckHeader.esm.js";import"../components/SoundcheckHeader/SoundcheckHeaderContext.esm.js";import"../components/Loading/Loading.esm.js";import"../components/PageWarningMessage/PageWarningMessage.esm.js";import"../components/CampaignsPage/CampaignEmptyState.esm.js";import"uuid";import"@backstage/core-components";import"react-hook-form";import"../utils/formStyles.esm.js";import"@material-ui/core";import"@material-ui/icons/Search";import"../components/SoundcheckDialog/SoundcheckDialog.esm.js";import"../components/FactExplorer/FactExplorer.esm.js";import"../components/FactExplorer/FactExplorerContext.esm.js";import"../components/FormStepper/FormStepper.esm.js";import"../components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js";import"../components/CheckForm/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../components/FormMarkdownInput/FormMarkdownInput.esm.js";import"../components/CheckForm/utils/checkFormUtils.esm.js";import"../components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js";import"../components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"../components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/styles.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../components/CheckForm/FormFields/CheckPathResolverInput.esm.js";import"../components/CheckForm/Steps/CheckDetailsStep.esm.js";import"../components/CheckForm/Steps/CheckRulesStep.esm.js";import"../components/CheckForm/Steps/CheckApplicabilityStep.esm.js";import"../components/CheckForm/Steps/CheckReviewStep.esm.js";import"../components/CheckForm/types/ExpressionType.esm.js";import"../components/Frequency/types.esm.js";import"../components/Frequency/util.esm.js";import"../components/Frequency/FrequencyComponent.esm.js";import"../components/CheckForm/types/Path.esm.js";import"@hookform/resolvers/zod";import"../components/CheckForm/utils/validation.esm.js";import"../components/LoadingIndicator/LoadingIndicator.esm.js";import"../components/CheckPage/CheckPageBUI.esm.js";import"../components/ChecksPage/ChecksListPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js";import"../components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js";import"../components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js";import"../components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js";import"../components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js";import"../components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js";import"../components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js";import"../components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js";import"../components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js";import"../components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js";import"../components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js";import"../components/CollectorPage/CollectorDetailsPageBUI.esm.js";import"../components/CollectorPage/CollectorDetailsPageDeprecated.esm.js";import"../components/CollectorsPage/IntegrationsListPageBUI.esm.js";import"../components/OverviewPage/OverviewPageContent.esm.js";import"../components/TechInsights/TechInsightsPageBUI.esm.js";import"../components/TrackBuilderPage/TrackBuilderPage.esm.js";import"lodash";import"../components/Filter/FilterComponent.esm.js";import"../components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js";import"../components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js";import"../components/TrackForm/utils/validation.esm.js";import"../graphql/generated/index.esm.js";import"../components/TrackPage/TrackPageBUI.esm.js";import"../components/TrackPage/TrackTechInsightsExplorerPage.esm.js";import"../components/TracksPage/TracksListPageBUI.esm.js";import"@spotify/backstage-plugin-core";import"../components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{RoutingPageWrapper as f}from"../components/RoutingPage/RoutingPageWrapper.esm.js";const o=c().with({id:"soundcheck.integrationId"}),h=s({kind:"integration",attachTo:[{id:"page:soundcheck/SoundcheckRoutingPage",input:"integrations"},{id:"app/routes",input:"routes"}],output:[t.routePath,t.reactElement,t.routeRef.optional(),o],dataRefs:{integrationId:o},*factory({integrationId:r,loader:m,path:e,routeRef:p},{node:n}){const a=l(()=>m().then(d=>({default:()=>d})));yield t.routePath(e??`/soundcheck/integrations/${r}/edit`),yield t.reactElement(u(i(g,{node:n,children:i(f,{children:i(a,{})})}))),p&&(yield t.routeRef(p)),yield o(r)}});export{h as IntegrationPageBlueprint,o as integrationIdExtensionDataRef};
1
+ import{jsx as r}from"react/jsx-runtime";import{compatWrapper as u}from"@backstage/core-compat-api";import{createExtensionDataRef as c,createExtensionBlueprint as l,coreExtensionData as t,ExtensionBoundary as s}from"@backstage/frontend-plugin-api";import{lazy as f}from"react";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import"@backstage/ui";import"@spotify/backstage-plugin-soundcheck-common";import"react-helmet";import"react-router-dom";import"../routes.esm.js";import"../components/CampaignPage/CampaignPageBUI.esm.js";import"../components/CampaignPage/CampaignActionsContext.esm.js";import"../components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js";import"../components/CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import"../components/CampaignsPage/CampaignListPageBUI.esm.js";import"../contexts/TrackFormContext.esm.js";import"../contexts/CheckFormContext.esm.js";import"../contexts/CampaignFormContext.esm.js";import"../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../api.esm.js";import"../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../hooks/useSoundcheckAlert.esm.js";import"../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"../components/CampaignForm/CampaignForm.esm.js";import"@remixicon/react";import"../components/SoundcheckHeader/SoundcheckHeader.esm.js";import"../components/SoundcheckHeader/SoundcheckHeaderContext.esm.js";import"../components/Loading/Loading.esm.js";import"../components/PageWarningMessage/PageWarningMessage.esm.js";import"../components/CampaignsPage/CampaignEmptyState.esm.js";import"uuid";import"@backstage/core-components";import"react-hook-form";import"../utils/formStyles.esm.js";import"@material-ui/core";import"@material-ui/icons/Search";import"../components/SoundcheckDialog/SoundcheckDialog.esm.js";import"../components/FactExplorer/FactExplorer.esm.js";import"../components/FactExplorer/FactExplorerContext.esm.js";import"../components/FormStepper/FormStepper.esm.js";import"../components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js";import"../components/CheckForm/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../components/FormMarkdownInput/FormMarkdownInput.esm.js";import"../components/CheckForm/utils/checkFormUtils.esm.js";import"../components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js";import"../components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"../components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/styles.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../components/CheckForm/FormFields/CheckPathResolverInput.esm.js";import"../components/CheckForm/Steps/CheckDetailsStep.esm.js";import"../components/CheckForm/Steps/CheckRulesStep.esm.js";import"../components/CheckForm/Steps/CheckApplicabilityStep.esm.js";import"../components/CheckForm/Steps/CheckReviewStep.esm.js";import"../components/CheckForm/types/ExpressionType.esm.js";import"../components/Frequency/types.esm.js";import"../components/Frequency/util.esm.js";import"../components/Frequency/FrequencyComponent.esm.js";import"../components/CheckForm/types/Path.esm.js";import"@hookform/resolvers/zod";import"../components/CheckForm/utils/validation.esm.js";import"../components/LoadingIndicator/LoadingIndicator.esm.js";import"../components/CheckPage/CheckPageBUI.esm.js";import"../components/ChecksPage/ChecksListPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js";import"../components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js";import"../components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js";import"../components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js";import"../components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js";import"../components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js";import"../components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js";import"../components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js";import"../components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js";import"../components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js";import"../components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js";import"../components/CollectorPage/CollectorDetailsPageBUI.esm.js";import"../components/CollectorPage/CollectorDetailsPageDeprecated.esm.js";import"../components/CollectorsPage/IntegrationsListPageBUI.esm.js";import"../components/CreateNewTrackPage/CreateNewTrackPage.esm.js";import"../components/OverviewPage/OverviewPageContent.esm.js";import"../components/TechInsights/TechInsightsPageBUI.esm.js";import"../components/TrackBuilderPage/TrackBuilderPage.esm.js";import"lodash";import"../components/Filter/FilterComponent.esm.js";import"../components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js";import"../components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js";import"../components/TrackForm/utils/validation.esm.js";import"../graphql/generated/index.esm.js";import"../components/TrackPage/TrackPageBUI.esm.js";import"../components/TrackPage/TrackTechInsightsExplorerPage.esm.js";import"../components/TracksPage/TracksListPageBUI.esm.js";import"@spotify/backstage-plugin-core";import"../components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{RoutingPageWrapper as g}from"../components/RoutingPage/RoutingPageWrapper.esm.js";const o=c().with({id:"soundcheck.integrationId"}),h=l({kind:"integration",attachTo:{id:"app/routes",input:"routes"},output:[t.routePath,t.reactElement,t.routeRef.optional(),o],dataRefs:{integrationId:o},*factory({integrationId:i,loader:m,path:e,routeRef:p},{node:n}){const a=f(()=>m().then(d=>({default:()=>d})));yield t.routePath(e??`/soundcheck/integrations/${i}/edit`),yield t.reactElement(u(r(s,{node:n,children:r(g,{children:r(a,{})})}))),p&&(yield t.routeRef(p)),yield o(i)}});export{h as IntegrationPageBlueprint,o as integrationIdExtensionDataRef};
2
2
  //# sourceMappingURL=IntegrationPageBlueprint.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as x,jsx as d}from"react/jsx-runtime";import{Accordion as h,AccordionTrigger as m,AccordionPanel as E,Box as f}from"@backstage/ui";import{useState as u,useCallback as g}from"react";const A=({header:c,children:i,panelClassName:l,isExpanded:e,onExpandedChange:r,defaultExpanded:o=!1})=>{const[s,p]=u(o),n=e??s,t=g(a=>{e===void 0&&p(a),r?.(a)},[e,r]);return x(h,{defaultExpanded:o,isExpanded:n,onExpandedChange:()=>t(!n),children:[d(m,{children:c}),n&&d(E,{children:d(f,{className:l,children:i})})]})};export{A as AccordionSection};
2
+ //# sourceMappingURL=AccordionSection.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as o}from"react/jsx-runtime";import{makeStyles as b}from"@material-ui/core";import{RiInformationLine as g,RiCheckLine as t,RiErrorWarningLine as u,RiCloseCircleLine as m}from"@remixicon/react";const f={info:{icon:r(g,{}),bg:"var(--bui-bg-solid-disabled)",border:"var(--bui-fg-disabled)",color:"var(--bui-fg-disabled)"},success:{icon:r(t,{}),bg:"var(--bui-bg-success)",border:"var(--bui-fg-success)",color:"var(--bui-fg-success)"},warning:{icon:r(u,{}),bg:"var(--bui-bg-warning)",border:"var(--bui-fg-warning)",color:"var(--bui-fg-warning)"},error:{icon:r(m,{}),bg:"var(--bui-bg-danger)",border:"var(--bui-fg-danger)",color:"var(--bui-fg-danger)"}},v=b(()=>({title:{margin:"0 0 0.5rem",fontWeight:"bold"},description:{margin:0}})),p=({title:i,children:n,variant:a="info"})=>{const e=v(),{icon:d,bg:s,border:c,color:l}=f[a];return r("div",{role:"alert",style:{margin:"1rem 0",padding:"1rem",backgroundColor:s,border:`1px solid ${c}`,borderRadius:"var(--bui-radius-3)"},children:o("div",{style:{display:"flex",gap:"1rem",alignItems:"flex-start",color:l},children:[r("div",{children:d}),o("div",{children:[i&&r("h4",{className:e.title,children:i}),r("p",{className:e.description,children:n})]})]})})};export{p as Alert};
1
+ import{jsx as r,jsxs as o}from"react/jsx-runtime";import{makeStyles as b}from"@material-ui/core";import{RiInformationLine as d,RiCheckLine as t,RiErrorWarningLine as m,RiCloseCircleLine as u}from"@remixicon/react";const v={info:{icon:r(d,{}),bg:"var(--bui-bg-primary)",border:"var(--bui-fg-primary)",color:"var(--bui-fg-primary)"},success:{icon:r(t,{}),bg:"var(--bui-bg-success)",border:"var(--bui-fg-success)",color:"var(--bui-fg-success)"},warning:{icon:r(m,{}),bg:"var(--bui-bg-warning)",border:"var(--bui-fg-warning)",color:"var(--bui-fg-warning)"},error:{icon:r(u,{}),bg:"var(--bui-bg-danger)",border:"var(--bui-fg-danger)",color:"var(--bui-fg-danger)"}},f=b(()=>({title:{margin:"0 0 0.5rem",fontWeight:"bold"},description:{margin:0,lineHeight:"var(--bui-space-5)"}})),p=({title:i,children:n,variant:a="info"})=>{const e=f(),{icon:c,bg:s,border:g,color:l}=v[a];return r("div",{role:"alert",style:{margin:"1rem 0",padding:"1rem",backgroundColor:s,border:`1px solid ${g}`,borderRadius:"var(--bui-radius-3)"},children:o("div",{style:{display:"flex",gap:"1rem",alignItems:"flex-start",color:l},children:[r("div",{children:c}),o("div",{children:[i&&r("h4",{className:e.title,children:i}),r("p",{className:e.description,children:n})]})]})})};export{p as Alert};
2
2
  //# sourceMappingURL=Alert.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{createContext as o,useContext as i}from"react";const n=o([]);function c({actions:r,children:t}){return e(n.Provider,{value:r,children:t})}function a(){return i(n)}export{c as CampaignActionsProvider,a as useExternalCampaignActions};
2
+ //# sourceMappingURL=CampaignActionsContext.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as C,jsx as e,Fragment as N}from"react/jsx-runtime";import{stringifyEntityRef as p}from"@backstage/catalog-model";import{useEntity as v}from"@backstage/plugin-catalog-react";import{makeStyles as E,Box as $,Typography as I,Tooltip as R,IconButton as S,CircularProgress as T}from"@material-ui/core";import z from"@material-ui/icons/Refresh";import A from"classnames";import{Link as L}from"react-router-dom";import{ResultState as h}from"../../graphql/generated/index.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as j}from"../../hooks/exemptions/useGetExemption.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useExecuteCheck as w}from"../../hooks/checks/useExecuteCheck.esm.js";import{CheckIcon as B}from"../CheckIcon/CheckIcon.esm.js";import{RelativeTime as F}from"../RelativeTime/RelativeTime.esm.js";const d=E(t=>({root:{display:"flex",width:"100%",gridTemplateColumns:"auto 1fr auto auto auto auto",gridColumnGap:t.spacing(.5),padding:t.spacing(1),alignItems:"center","&.selected":{backgroundColor:t.palette.action.hover},"&:hover, &:active, &:focus":{backgroundColor:t.palette.action.hover}},checkIcon:{height:20}})),G=({className:t,href:r,name:o,children:c})=>r?e(L,{"aria-label":`select check ${o}`,to:r,className:t,children:c}):e("div",{className:t,children:c}),P=({result:t,name:r,id:o,timestamp:c,isExecutable:l=!1,selected:u=!1,href:f})=>{const m=d(),k=A(m.root,{selected:u}),{entity:a}=v(),{mutateAsync:y,isLoading:n}=w(),{data:s}=j(p(a),o),x=async()=>{if(!(!a||!o))try{await y({checkerId:o,entityRef:p(a),shouldRefreshFacts:!0})}catch{}},g=!a||!o||!l||n||!!s?.exemption||t===h.NotApplicable,b=()=>{const i="Cannot execute check";return a?o?l?n?`${i} - check is already executing.`:s?.exemption?`${i} - entity has been exempted from this check.`:t===h.NotApplicable?`${i} - check is not applicable to entity.`:"Execute Check":`${i} - check is not executable by Soundcheck`:`${i} - no check id.`:`${i} - no entity.`};return C(G,{href:f,className:k,name:r,children:[e(B,{className:m.checkIcon,result:t}),e($,{flex:1,children:e(I,{variant:"body2",children:r})}),c&&!n?e(F,{timestamp:c}):null,!n&&e(N,{children:e(R,{title:b(),children:e("span",{children:e(S,{size:"small",color:"inherit",onClick:x,disabled:g,"aria-label":"Execute Check",children:e(z,{fontSize:"small"})})})})}),n&&e(T,{color:"inherit",size:"1em"})]})};export{P as Check,d as useStyles};
1
+ import{jsxs as C,jsx as e,Fragment as N}from"react/jsx-runtime";import{stringifyEntityRef as p}from"@backstage/catalog-model";import{useEntity as v}from"@backstage/plugin-catalog-react";import{makeStyles as E,Box as $,Typography as I,Tooltip as R,IconButton as S,CircularProgress as T}from"@material-ui/core";import z from"@material-ui/icons/Refresh";import A from"classnames";import{Link as L}from"react-router-dom";import{ResultState as h}from"../../graphql/generated/index.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as j}from"../../hooks/exemptions/useGetExemption.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useExecuteCheck as w}from"../../hooks/checks/useExecuteCheck.esm.js";import{CheckIcon as B}from"../CheckIcon/CheckIcon.esm.js";import{RelativeTime as F}from"../RelativeTime/RelativeTime.esm.js";const d=E(t=>({root:{display:"flex",width:"100%",gridTemplateColumns:"auto 1fr auto auto auto auto",gridColumnGap:t.spacing(.5),padding:t.spacing(1),alignItems:"center","&.selected":{backgroundColor:t.palette.action.hover},"&:hover, &:active, &:focus":{backgroundColor:t.palette.action.hover}},checkIcon:{height:20}})),G=({className:t,href:r,name:o,children:c})=>r?e(L,{"aria-label":`select check ${o}`,to:r,className:t,children:c}):e("div",{className:t,children:c}),P=({result:t,name:r,id:o,timestamp:c,isExecutable:l=!0,selected:u=!1,href:f})=>{const m=d(),k=A(m.root,{selected:u}),{entity:a}=v(),{mutateAsync:y,isLoading:n}=w(),{data:s}=j(p(a),o),x=async()=>{if(!(!a||!o))try{await y({checkerId:o,entityRef:p(a),shouldRefreshFacts:!0})}catch{}},g=!a||!o||!l||n||!!s?.exemption||t===h.NotApplicable,b=()=>{const i="Cannot execute check";return a?o?l?n?`${i} - check is already executing.`:s?.exemption?`${i} - entity has been exempted from this check.`:t===h.NotApplicable?`${i} - check is not applicable to entity.`:"Execute Check":`${i} - check is not executable by Soundcheck`:`${i} - no check id.`:`${i} - no entity.`};return C(G,{href:f,className:k,name:r,children:[e(B,{className:m.checkIcon,result:t}),e($,{flex:1,children:e(I,{variant:"body2",children:r})}),c&&!n?e(F,{timestamp:c}):null,!n&&e(N,{children:e(R,{title:b(),children:e("span",{children:e(S,{size:"small",color:"inherit",onClick:x,disabled:g,"aria-label":"Execute Check",children:e(z,{fontSize:"small"})})})})}),n&&e(T,{color:"inherit",size:"1em"})]})};export{P as Check,d as useStyles};
2
2
  //# sourceMappingURL=Check.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as y,Fragment as ie}from"react/jsx-runtime";import{stringifyEntityRef as F,parseEntityRef as oe,RELATION_OWNED_BY as ne,RELATION_PART_OF as re}from"@backstage/catalog-model";import{useRouteRef as ae}from"@backstage/core-plugin-api";import{entityRouteRef as se,getEntityRelations as j,humanizeEntityRef as C}from"@backstage/plugin-catalog-react";import{TableRoot as ce,TableHeader as le,Column as d,TableBody as de,TablePagination as pe,Row as fe,Flex as ge,CellText as u,CellProfile as me}from"@backstage/ui";import{RiCheckLine as ye,RiCloseLine as ue,RiAlertLine as he,RiErrorWarningFill as Ie,RiProhibitedLine as Re,RiIndeterminateCircleLine as we,RiInformationOffLine as ke}from"@remixicon/react";import{compact as Se,uniq as Ee,startCase as Ce}from"lodash";import{useState as b,useEffect as W,useMemo as P,useCallback as v}from"react";import{useNavigate as be}from"react-router-dom";import{ResultState as l,CheckEntityField as p,Direction as s}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as Pe}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useProfileImages as ve}from"../../../hooks/catalog/useProfileImages.esm.js";import{useCheckEntities as Le}from"../../../hooks/entities/useCheckEntities.esm.js";import{useSortSearchParams as ze}from"../../../hooks/useSortSearchParams.esm.js";import{CustomCell as Ne}from"../../CustomCell/CustomCell.esm.js";import"../../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as Te}from"../../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../routes.esm.js";import{LoadingTableSkeleton as Ae}from"../../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{toResultState as _}from"../utils.esm.js";import{toCheckEntityRow as Be}from"./utils.esm.js";const K=10,De=["kind","metadata.name","metadata.namespace","spec.profile.displayName","metadata.title","relations","spec.lifecycle","spec.type"],Oe={[l.Passed]:t(ye,{style:{color:"var(--bui-fg-success)"}}),[l.Failed]:t(ue,{style:{color:"var(--bui-fg-danger)"}}),[l.Warning]:t(he,{}),[l.Error]:t(Ie,{}),[l.Exempt]:t(Re,{style:{color:"var(--bui-fg-disabled)"}}),[l.NotReported]:t(we,{style:{color:"var(--bui-fg-disabled)"}}),[l.NotApplicable]:t(ke,{style:{color:"var(--bui-fg-disabled)"}})},L={name:p.Name,owner:p.Owner,system:p.System,type:p.Type,lifecycle:p.Lifecycle},xe=({checkId:M,trackId:q,filter:h,states:I})=>{const{updateSortParams:z,searchParams:f}=ze(),[R,N]=b(()=>{const e=f.get("sortDirection");return e==="ascending"?s.Asc:e==="descending"?s.Desc:s.Asc}),[m,T]=b(()=>{const e=f.get("sort");return e&&L[e]?e:"name"}),H=R===s.Asc?"ascending":"descending",[i,A]=b({orderBy:void 0,filter:h,states:I?.map(_).filter(e=>e!==void 0),pageInfo:{page:0,pageSize:K,direction:"forward",cursor:null}});W(()=>{const e=f.get("sortDirection");(e==="ascending"||e==="descending")&&N(e==="ascending"?s.Asc:s.Desc);const o=f.get("sort");o&&L[o]&&T(o)},[f]),W(()=>{let e;m?e={field:L[m]??p.Name,direction:R}:e=void 0,A(o=>({...o,orderBy:e,pageInfo:{...o.pageInfo,page:0,cursor:null},filter:h,states:I?.map(_).filter(a=>a!==void 0)}))},[h,I,m,R]);const{data:r,isLoading:U}=Le({checkId:M,trackId:q,orderBy:i.orderBy,filter:i.filter,states:i.states?.length?i.states:void 0,[i.pageInfo.direction==="forward"?"first":"last"]:i.pageInfo.pageSize,[i.pageInfo.direction==="forward"?"after":"before"]:i.pageInfo.cursor}),Y=r?.checkEntities.edges.map(e=>e.node.entityRef)??[],{data:w,isLoading:$}=Pe({entityRefs:Y,fields:De}),G=P(()=>r?.checkEntities.edges??[],[r]),k=P(()=>r?.checkEntities.totalCount??0,[r]),J=k>K,S=v((e,o)=>{const a=e>i.pageInfo.page?"forward":"backward",E=a==="forward"?r?.checkEntities.pageInfo.endCursor??null:r?.checkEntities.pageInfo.startCursor??null;A({...i,pageInfo:{page:e,pageSize:o,direction:a,cursor:E}})},[r,i]),Q=v(({direction:e,column:o})=>{T(String(o)),N(e==="ascending"?s.Desc:s.Asc),z({sort:String(o),sortDirection:e})},[z]),B=P(()=>!r?.checkEntities.edges?.length||!w?.items?.length?[]:Se(r.checkEntities.edges.map(e=>{const o=w.items.find(a=>!!a&&F(a)===e.node.entityRef);return o?Be({checkDetails:e.node,entity:o}):void 0})),[r?.checkEntities.edges,w?.items]),V=({row:e})=>{const o=be(),a=ae(se),E=v(n=>{const c=oe(F(n)),g=a(c);o(`${g}/soundcheck`)},[o,a]),X=j(e.entity,ne).map(n=>C(n,{defaultKind:n.kind})).join(", "),Z=j(e.entity,re,{kind:"system"}).map(n=>C(n,{defaultKind:"system"})).join(", "),ee=Ee(B.flatMap(n=>n.entity.relations?.filter(({type:c,targetRef:g})=>c==="ownedBy"&&g).map(c=>c.targetRef)||[])),{profileImageMap:te}=ve(ee),D=e.entity.relations?.find(({type:n})=>n==="ownedBy")?.targetRef;let O;D&&(O=te?.[D]);const x=C(e.entity,{defaultKind:"Component"});return y(fe,{onAction:()=>E(e.entity),children:[t(Ne,{children:t(ge,{children:(n=>{const c=Oe[n],g=Ce(n.toLowerCase());return t("span",{title:g,children:c})})(e.state)})}),t(u,{title:x}),t(u,{title:Z}),t(me,{name:X,src:O??x}),t(u,{title:e.entity.spec?.type}),t(u,{title:e.entity.spec?.lifecycle})]},e.id)};return U||$?t(Ae,{}):G.length?y(ie,{children:[y(ce,{onSortChange:Q,sortDescriptor:{direction:H,column:m},children:[y(le,{children:[t(d,{id:"state",style:{width:"5%"}}),t(d,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Name"}),t(d,{id:"system",allowsSorting:!0,style:{width:"20%"},children:"System"}),t(d,{id:"owner",allowsSorting:!0,style:{width:"20%"},children:"Owner"}),t(d,{id:"type",allowsSorting:!0,style:{width:"10%"},children:"Type"}),t(d,{id:"lifecycle",allowsSorting:!0,style:{width:"10%"},children:"Lifecycle"})]}),t(de,{children:B.map(e=>t(V,{row:e},e.id))})]}),J&&t(pe,{showPageSizeOptions:!0,totalCount:k,pageSize:i.pageInfo.pageSize,offset:i.pageInfo.page*i.pageInfo.pageSize,onPreviousPage:()=>{const e=i.pageInfo.page-1;S(e,i.pageInfo.pageSize)},onNextPage:()=>{const e=i.pageInfo.page+1;S(e,i.pageInfo.pageSize)},onPageSizeChange:e=>{S(i.pageInfo.page,e)},hasNextPage:(i.pageInfo.page+1)*i.pageInfo.pageSize<k,hasPreviousPage:i.pageInfo.page>0})]}):t(Te,{title:"No check entities found",body:"There are no check entities found."})};export{xe as CheckEntitiesTableBUI};
1
+ import{jsx as t,jsxs as y,Fragment as ie}from"react/jsx-runtime";import{stringifyEntityRef as C,parseEntityRef as oe,RELATION_OWNED_BY as ne,RELATION_PART_OF as re}from"@backstage/catalog-model";import{useRouteRef as ae}from"@backstage/core-plugin-api";import{entityRouteRef as se,useEntityPresentation as ce,getEntityRelations as F,humanizeEntityRef as j}from"@backstage/plugin-catalog-react";import{TableRoot as le,TableHeader as de,Column as d,TableBody as pe,TablePagination as fe,Row as ge,Flex as me,CellText as u,CellProfile as ye}from"@backstage/ui";import{RiCheckLine as ue,RiCloseLine as he,RiAlertLine as Ie,RiErrorWarningFill as Re,RiProhibitedLine as we,RiIndeterminateCircleLine as ke,RiInformationOffLine as Ee}from"@remixicon/react";import{compact as Se,uniq as Ce,startCase as be}from"lodash";import{useState as b,useEffect as W,useMemo as P,useCallback as v}from"react";import{useNavigate as Pe}from"react-router-dom";import{ResultState as l,CheckEntityField as p,Direction as s}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as ve}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useProfileImages as Le}from"../../../hooks/catalog/useProfileImages.esm.js";import{useCheckEntities as ze}from"../../../hooks/entities/useCheckEntities.esm.js";import{useSortSearchParams as Ne}from"../../../hooks/useSortSearchParams.esm.js";import{CustomCell as Te}from"../../CustomCell/CustomCell.esm.js";import"../../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as Ae}from"../../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../routes.esm.js";import{LoadingTableSkeleton as Be}from"../../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{toResultState as _}from"../utils.esm.js";import{toCheckEntityRow as De}from"./utils.esm.js";const K=10,Oe=["kind","metadata.name","metadata.namespace","spec.profile.displayName","metadata.title","relations","spec.lifecycle","spec.type"],xe={[l.Passed]:t(ue,{style:{color:"var(--bui-fg-success)"}}),[l.Failed]:t(he,{style:{color:"var(--bui-fg-danger)"}}),[l.Warning]:t(Ie,{}),[l.Error]:t(Re,{}),[l.Exempt]:t(we,{style:{color:"var(--bui-fg-disabled)"}}),[l.NotReported]:t(ke,{style:{color:"var(--bui-fg-disabled)"}}),[l.NotApplicable]:t(Ee,{style:{color:"var(--bui-fg-disabled)"}})},L={name:p.Name,owner:p.Owner,system:p.System,type:p.Type,lifecycle:p.Lifecycle},Fe=({checkId:M,trackId:q,filter:h,states:I})=>{const{updateSortParams:z,searchParams:f}=Ne(),[R,N]=b(()=>{const e=f.get("sortDirection");return e==="ascending"?s.Asc:e==="descending"?s.Desc:s.Asc}),[m,T]=b(()=>{const e=f.get("sort");return e&&L[e]?e:"name"}),H=R===s.Asc?"ascending":"descending",[i,A]=b({orderBy:void 0,filter:h,states:I?.map(_).filter(e=>e!==void 0),pageInfo:{page:0,pageSize:K,direction:"forward",cursor:null}});W(()=>{const e=f.get("sortDirection");(e==="ascending"||e==="descending")&&N(e==="ascending"?s.Asc:s.Desc);const o=f.get("sort");o&&L[o]&&T(o)},[f]),W(()=>{let e;m?e={field:L[m]??p.Name,direction:R}:e=void 0,A(o=>({...o,orderBy:e,pageInfo:{...o.pageInfo,page:0,cursor:null},filter:h,states:I?.map(_).filter(a=>a!==void 0)}))},[h,I,m,R]);const{data:r,isLoading:U}=ze({checkId:M,trackId:q,orderBy:i.orderBy,filter:i.filter,states:i.states?.length?i.states:void 0,[i.pageInfo.direction==="forward"?"first":"last"]:i.pageInfo.pageSize,[i.pageInfo.direction==="forward"?"after":"before"]:i.pageInfo.cursor}),Y=r?.checkEntities.edges.map(e=>e.node.entityRef)??[],{data:w,isLoading:$}=ve({entityRefs:Y,fields:Oe}),G=P(()=>r?.checkEntities.edges??[],[r]),k=P(()=>r?.checkEntities.totalCount??0,[r]),J=k>K,E=v((e,o)=>{const a=e>i.pageInfo.page?"forward":"backward",S=a==="forward"?r?.checkEntities.pageInfo.endCursor??null:r?.checkEntities.pageInfo.startCursor??null;A({...i,pageInfo:{page:e,pageSize:o,direction:a,cursor:S}})},[r,i]),V=v(({direction:e,column:o})=>{T(String(o)),N(e==="ascending"?s.Desc:s.Asc),z({sort:String(o),sortDirection:e})},[z]),B=P(()=>!r?.checkEntities.edges?.length||!w?.items?.length?[]:Se(r.checkEntities.edges.map(e=>{const o=w.items.find(a=>!!a&&C(a)===e.node.entityRef);return o?De({checkDetails:e.node,entity:o}):void 0})),[r?.checkEntities.edges,w?.items]),X=({row:e})=>{const o=Pe(),a=ae(se),S=v(n=>{const c=oe(C(n)),g=a(c);o(`${g}/soundcheck`)},[o,a]),{primaryTitle:D}=ce(C(e.entity)),Z=F(e.entity,ne).map(n=>j(n,{defaultKind:n.kind})).join(", "),Q=F(e.entity,re,{kind:"system"}).map(n=>j(n,{defaultKind:"system"})).join(", "),ee=Ce(B.flatMap(n=>n.entity.relations?.filter(({type:c,targetRef:g})=>c==="ownedBy"&&g).map(c=>c.targetRef)||[])),{profileImageMap:te}=Le(ee),O=e.entity.relations?.find(({type:n})=>n==="ownedBy")?.targetRef;let x;return O&&(x=te?.[O]),y(ge,{onAction:()=>S(e.entity),children:[t(Te,{children:t(me,{children:(n=>{const c=xe[n],g=be(n.toLowerCase());return t("span",{title:g,children:c})})(e.state)})}),t(u,{title:D}),t(u,{title:Q}),t(ye,{name:Z,src:x??D}),t(u,{title:e.entity.spec?.type}),t(u,{title:e.entity.spec?.lifecycle})]},e.id)};return U||$?t(Be,{}):G.length?y(ie,{children:[y(le,{onSortChange:V,sortDescriptor:{direction:H,column:m},children:[y(de,{children:[t(d,{id:"state",style:{width:"5%"}}),t(d,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Name"}),t(d,{id:"system",allowsSorting:!0,style:{width:"20%"},children:"System"}),t(d,{id:"owner",allowsSorting:!0,style:{width:"20%"},children:"Owner"}),t(d,{id:"type",allowsSorting:!0,style:{width:"10%"},children:"Type"}),t(d,{id:"lifecycle",allowsSorting:!0,style:{width:"10%"},children:"Lifecycle"})]}),t(pe,{children:B.map(e=>t(X,{row:e},e.id))})]}),J&&t(fe,{showPageSizeOptions:!0,totalCount:k,pageSize:i.pageInfo.pageSize,offset:i.pageInfo.page*i.pageInfo.pageSize,onPreviousPage:()=>{const e=i.pageInfo.page-1;E(e,i.pageInfo.pageSize)},onNextPage:()=>{const e=i.pageInfo.page+1;E(e,i.pageInfo.pageSize)},onPageSizeChange:e=>{E(i.pageInfo.page,e)},hasNextPage:(i.pageInfo.page+1)*i.pageInfo.pageSize<k,hasPreviousPage:i.pageInfo.page>0})]}):t(Ae,{title:"No check entities found",body:"There are no check entities found."})};export{Fe as CheckEntitiesTableBUI};
2
2
  //# sourceMappingURL=CheckEntitiesTableBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as o,Fragment as m}from"react/jsx-runtime";import{useRouteRef as h}from"@backstage/core-plugin-api";import{Grid as u,Link as b,Card as y,CardHeader as R,Text as n,CardBody as x,Box as B,HeaderPage as L,Container as N}from"@backstage/ui";import{makeStyles as T}from"@material-ui/core/styles";import{groupBy as P}from"lodash";import{useMemo as f,useEffect as v}from"react";import{useCheckTemplates as H}from"../../hooks/checks/useCheckTemplates.esm.js";import{useLCPReporting as I}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as j}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as D,checksPageRouteRef as U}from"../../routes.esm.js";import{DocLinkButton as A}from"../DocLinkButton/DocLinkButton.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as E}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"react-router-dom";import{LoadingIndicator as M}from"../LoadingIndicator/LoadingIndicator.esm.js";import{TemplateCategoryBUI as S}from"./TemplateCategoryBUI.esm.js";const F=T(()=>({container:{marginBottom:"var(--bui-space-12)"},link:{"&:hover":{textDecoration:"none"}},fullHeightCard:{height:"100%",display:"flex",flexDirection:"column"}})),G=()=>{const r=F(),l=f(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:s}=j(l),{reporter:g}=I(l),k=h(D),{data:c,isLoading:i}=H(),p=f(()=>P(c??[],"category"),[c]),d=g?.getLCPValue();v(()=>{i||s({lcp:d})},[i,s,d]);const C=h(U);let t;return i?t=e(M,{}):c?.length?t=o(m,{children:[e(u.Root,{columns:"5",gap:"3",mb:"6",children:e(b,{href:k(),className:r.link,children:o(y,{className:r.fullHeightCard,children:[e(R,{children:e(n,{variant:"body-large",style:{fontWeight:"bold"},children:"Custom Check"})}),e(x,{children:e(n,{children:"Create a custom check using the facts collected about your entities."})})]})})}),Object.keys(p).sort().map(a=>o(m,{children:[e(B,{mb:"3",children:e(n,{variant:"title-x-small",children:a})}),e(u.Root,{columns:"5",gap:"3",mb:"6",children:e(S,{templates:p[a]},a)})]}))]}):t=e(E,{title:"No check templates",body:"No check templates found."}),o(m,{children:[e(L,{title:"Check Templates",breadcrumbs:[{label:"All Checks",href:C()}],customActions:e(A,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})}),e(N,{className:r.container,children:t})]})};export{G as CheckTemplatesPageBUI};
1
+ import{jsx as e,jsxs as o,Fragment as m}from"react/jsx-runtime";import{useRouteRef as h}from"@backstage/core-plugin-api";import{Grid as u,Link as b,Card as y,CardHeader as R,Text as n,CardBody as x,Box as B,HeaderPage as L,Container as N}from"@backstage/ui";import{makeStyles as T}from"@material-ui/core/styles";import{groupBy as P}from"lodash";import{useMemo as f,useEffect as H}from"react";import{useCheckTemplates as I}from"../../hooks/checks/useCheckTemplates.esm.js";import{useLCPReporting as j}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as v}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as D,checksPageRouteRef as U}from"../../routes.esm.js";import{DocLinkButton as A}from"../DocLinkButton/DocLinkButton.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as E}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"react-router-dom";import{LoadingIndicator as M}from"../LoadingIndicator/LoadingIndicator.esm.js";import{TemplateCategoryBUI as S}from"./TemplateCategoryBUI.esm.js";const F=T(()=>({container:{marginBottom:"var(--bui-space-12)"},link:{textDecoration:"none"},fullHeightCard:{height:"100%",display:"flex",flexDirection:"column"}})),G=()=>{const r=F(),l=f(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:s}=v(l),{reporter:g}=j(l),k=h(D),{data:c,isLoading:i}=I(),p=f(()=>P(c??[],"category"),[c]),d=g?.getLCPValue();H(()=>{i||s({lcp:d})},[i,s,d]);const C=h(U);let t;return i?t=e(M,{}):c?.length?t=o(m,{children:[e(u.Root,{columns:"5",gap:"3",mb:"6",children:e(b,{href:k(),className:r.link,children:o(y,{className:r.fullHeightCard,children:[e(R,{children:e(n,{variant:"body-large",style:{fontWeight:"bold"},children:"Custom Check"})}),e(x,{children:e(n,{children:"Create a custom check using the facts collected about your entities."})})]})})}),Object.keys(p).sort().map(a=>o(m,{children:[e(B,{mb:"3",children:e(n,{variant:"title-x-small",children:a})}),e(u.Root,{columns:"5",gap:"3",mb:"6",children:e(S,{templates:p[a]},a)})]}))]}):t=e(E,{title:"No check templates",body:"No check templates found."}),o(m,{children:[e(L,{title:"Check Templates",breadcrumbs:[{label:"All Checks",href:C()}],customActions:e(A,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})}),e(N,{className:r.container,children:t})]})};export{G as CheckTemplatesPageBUI};
2
2
  //# sourceMappingURL=CheckTemplatesPageBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,Fragment as a,jsxs as m}from"react/jsx-runtime";import{useRouteRef as n}from"@backstage/core-plugin-api";import{Link as d,Card as c,CardHeader as s,Text as i,CardBody as h}from"@backstage/ui";import{makeStyles as f}from"@material-ui/core/styles";import{sortBy as p}from"lodash";import{checkCreateRouteRef as u}from"../../routes.esm.js";const y=f(()=>({link:{"&:hover":{textDecoration:"none"}},fullHeightCard:{height:"100%",display:"flex",flexDirection:"column"}})),g=({templates:o})=>{const t=y(),l=n(u);return e(a,{children:p(o,"title").map(r=>e(d,{href:`${l()}?template=${r.id}`,className:t.link,children:m(c,{className:t.fullHeightCard,children:[e(s,{children:e(i,{variant:"body-large",style:{fontWeight:"bold"},children:r.title})}),e(h,{children:e(i,{children:r.summary})})]})},r.id))})};export{g as TemplateCategoryBUI};
1
+ import{jsx as e,Fragment as a,jsxs as m}from"react/jsx-runtime";import{useRouteRef as n}from"@backstage/core-plugin-api";import{Link as d,Card as c,CardHeader as s,Text as i,CardBody as f}from"@backstage/ui";import{makeStyles as h}from"@material-ui/core/styles";import{sortBy as p}from"lodash";import{checkCreateRouteRef as u}from"../../routes.esm.js";const y=h(()=>({link:{textDecoration:"none"},fullHeightCard:{height:"100%",display:"flex",flexDirection:"column"}})),g=({templates:o})=>{const t=y(),l=n(u);return e(a,{children:p(o,"title").map(r=>e(d,{href:`${l()}?template=${r.id}`,className:t.link,children:m(c,{className:t.fullHeightCard,children:[e(s,{children:e(i,{variant:"body-large",style:{fontWeight:"bold"},children:r.title})}),e(f,{children:e(i,{children:r.summary})})]})},r.id))})};export{g as TemplateCategoryBUI};
2
2
  //# sourceMappingURL=TemplateCategoryBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as m,Fragment as W}from"react/jsx-runtime";import{useRouteRef as T,useApi as A}from"@backstage/core-plugin-api";import{entityPresentationApiRef as Y}from"@backstage/plugin-catalog-react";import{usePermission as _}from"@backstage/plugin-permission-react";import{HeaderPage as q,Flex as K,Container as Q,TableRoot as X,TableHeader as Z,Column as y,TableBody as $,TablePagination as ee}from"@backstage/ui";import{makeStyles as te}from"@material-ui/core";import{soundcheckCheckCreatePermission as re}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as oe,isEmpty as P}from"lodash";import{useState as k,useMemo as N}from"react";import{useSearchParams as ie}from"react-router-dom";import ne from"react-use/lib/useDebounce";import{soundcheckApiRef as ae}from"../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../hooks/graphqlKeys.esm.js";import{useGetChecks as se}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as me}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useProfileImages as ce}from"../../hooks/catalog/useProfileImages.esm.js";import{useImportChecks as pe}from"../../hooks/checks/useImportChecks.esm.js";import{useSearchNameOwner as le}from"../../hooks/useSearchNameOwner.esm.js";import{checkTemplatesRouteRef as fe,checkDetailsRouteRef as de}from"../../routes.esm.js";import{exportChecks as ge}from"../../utils/export.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as he}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import{EmptyStateNoChecks as ue}from"../EmptyState/EmptyStateNoChecks.esm.js";import{ImportExportPanelBUI as we}from"../ImportExportPanel/ImportExportPanelBUI.esm.js";import"../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{ListPageCustomActions as ye}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as Pe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import{useCheckActions as ke}from"../Menus/useCheckActions.esm.js";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"uuid";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TableRowWithOwner as Ce}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const L=10,Re=["name","owner"],Se=({check:o,profileImageMap:a})=>{const c=T(de),i=ke(o);return t(Ce,{ownerEntityRef:o.ownerEntityRef??"",href:c({checkId:o.id}),profileImageSrc:a[o.ownerEntityRef??""],menuActions:i,name:o.name??o.id,description:o.description??"",cells:[]})},Ee=te(()=>({container:{marginBottom:"var(--bui-space-12)"}})),Ie=()=>{const o=Ee(),[a,c]=ie(),[i,z]=k(()=>a.get("search")??""),[d,B]=k(()=>a.get("sortDirection")==="descending"?"descending":"ascending"),[s,v]=k(()=>{const e=a.get("sort");return e&&Re.includes(e)?e:""}),{isLoading:p,data:C}=se({}),g=N(()=>C?.edges?.map(e=>e.node)??[],[C?.edges]),{loading:R,allowed:S}=_({permission:re}),U=T(fe),{profileImageMap:D}=ce(g.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef)),E=A(Y),h=le(g,i),l=N(()=>{if(!s)return h;const e=oe(h,r=>s==="owner"?r.ownerEntityRef?E.forEntity(r.ownerEntityRef).snapshot.primaryTitle:-1:s==="type"?r.type?r.type:"default":r?.name?.toLowerCase()??r.id.toLowerCase());return d==="descending"&&e.reverse(),e},[s,h,d,E]),{mutateAsync:H}=pe(),M=async e=>H(e),O=A(ae),F=async()=>{const e=await O.getChecks({orderAlphabetical:"asc"});return ge(e.edges.map(r=>r.node))},{paginatedItems:u,reset:I,paginationProps:n}=me({pageParam:"perPage",defaultPageSize:L,items:l});ne(()=>{I();const e=new URLSearchParams(a.toString());i?e.set("search",i):e.delete("search"),c(e,{replace:!0})},300,[i]);const V=({direction:e,column:r})=>{const w=String(r);v(w),B(e),I();const f=new URLSearchParams(a);w?f.set("sort",w):f.delete("sort"),f.set("sortDirection",e),c(f,{replace:!0})},j=p,b=!p&&P(u),G=!p&&!P(u),J=l.length>L;let x=null;return b&&(x=i?t(he,{title:"No checks found",body:"Your current search term did not return any checks. Please try a different search term."}):t(ue,{})),m(W,{children:[t(q,{customActions:m(K,{gap:"2",align:"center",children:[t(we,{resourceType:"check",disableImport:!R&&!S,disableExport:p||P(g),onImport:M,onExport:F}),t(ye,{searchValue:i,setSearchValue:z,canCreate:!R&&S,createHref:U()})]}),title:"Checks"}),m(Q,{className:o.container,children:[j&&t(Pe,{rowCount:10}),b&&x,G&&m(X,{onSortChange:V,sortDescriptor:{direction:d,column:s},children:[m(Z,{children:[t(y,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"82%"},children:"Name"}),t(y,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Check Owner"}),t(y,{id:"actions",style:{width:"3%"}})]}),t($,{children:u.map(e=>t(Se,{check:e,profileImageMap:D??{}},e.id))})]}),J&&t(ee,{totalCount:l.length,offset:n.offset,hasNextPage:n.offset+n.pageSize<(l.length??0),hasPreviousPage:n.offset>0,onNextPage:n.onNextPage,onPreviousPage:n.onPreviousPage,onPageSizeChange:n.onPageSizeChange,pageSize:n.pageSize})]})]})};export{Ie as ChecksListPageBUI};
1
+ import{jsx as t,jsxs as m,Fragment as W}from"react/jsx-runtime";import{useRouteRef as T,useApi as A}from"@backstage/core-plugin-api";import{entityPresentationApiRef as Y}from"@backstage/plugin-catalog-react";import{usePermission as _}from"@backstage/plugin-permission-react";import{HeaderPage as q,Flex as K,Container as Q,TableRoot as X,TableHeader as Z,Column as y,TableBody as $,TablePagination as ee}from"@backstage/ui";import{makeStyles as te}from"@material-ui/core";import{soundcheckCheckCreatePermission as re}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as oe,isEmpty as P}from"lodash";import{useState as k,useMemo as N}from"react";import{useSearchParams as ie}from"react-router-dom";import ne from"react-use/lib/useDebounce";import{soundcheckApiRef as ae}from"../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../hooks/graphqlKeys.esm.js";import{useGetChecks as se}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as me}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useProfileImages as ce}from"../../hooks/catalog/useProfileImages.esm.js";import{useImportChecks as pe}from"../../hooks/checks/useImportChecks.esm.js";import{useSearchNameOwner as le}from"../../hooks/useSearchNameOwner.esm.js";import{checkTemplatesRouteRef as fe,checkDetailsRouteRef as de}from"../../routes.esm.js";import{exportChecks as ge}from"../../utils/export.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as he}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import{EmptyStateNoChecks as ue}from"../EmptyState/EmptyStateNoChecks.esm.js";import{ImportExportPanelBUI as we}from"../ImportExportPanel/ImportExportPanelBUI.esm.js";import"../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{ListPageCustomActions as ye}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as Pe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import{useCheckActions as ke}from"../Menus/useCheckActions.esm.js";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"uuid";import"../CampaignPage/CampaignActionsContext.esm.js";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TableRowWithOwner as Ce}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const L=10,Re=["name","owner"],Se=({check:o,profileImageMap:a})=>{const c=T(de),i=ke(o);return t(Ce,{ownerEntityRef:o.ownerEntityRef??"",href:c({checkId:o.id}),profileImageSrc:a[o.ownerEntityRef??""],menuActions:i,name:o.name??o.id,description:o.description??"",cells:[]})},Ee=te(()=>({container:{marginBottom:"var(--bui-space-12)"}})),Ie=()=>{const o=Ee(),[a,c]=ie(),[i,z]=k(()=>a.get("search")??""),[d,B]=k(()=>a.get("sortDirection")==="descending"?"descending":"ascending"),[s,v]=k(()=>{const e=a.get("sort");return e&&Re.includes(e)?e:""}),{isLoading:p,data:C}=se({}),g=N(()=>C?.edges?.map(e=>e.node)??[],[C?.edges]),{loading:R,allowed:S}=_({permission:re}),U=T(fe),{profileImageMap:D}=ce(g.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef)),E=A(Y),h=le(g,i),l=N(()=>{if(!s)return h;const e=oe(h,r=>s==="owner"?r.ownerEntityRef?E.forEntity(r.ownerEntityRef).snapshot.primaryTitle:-1:s==="type"?r.type?r.type:"default":r?.name?.toLowerCase()??r.id.toLowerCase());return d==="descending"&&e.reverse(),e},[s,h,d,E]),{mutateAsync:H}=pe(),M=async e=>H(e),O=A(ae),F=async()=>{const e=await O.getChecks({orderAlphabetical:"asc"});return ge(e.edges.map(r=>r.node))},{paginatedItems:u,reset:I,paginationProps:n}=me({pageParam:"perPage",defaultPageSize:L,items:l});ne(()=>{I();const e=new URLSearchParams(a.toString());i?e.set("search",i):e.delete("search"),c(e,{replace:!0})},300,[i]);const V=({direction:e,column:r})=>{const w=String(r);v(w),B(e),I();const f=new URLSearchParams(a);w?f.set("sort",w):f.delete("sort"),f.set("sortDirection",e),c(f,{replace:!0})},j=p,b=!p&&P(u),G=!p&&!P(u),J=l.length>L;let x=null;return b&&(x=i?t(he,{title:"No checks found",body:"Your current search term did not return any checks. Please try a different search term."}):t(ue,{})),m(W,{children:[t(q,{customActions:m(K,{gap:"2",align:"center",children:[t(we,{resourceType:"check",disableImport:!R&&!S,disableExport:p||P(g),onImport:M,onExport:F}),t(ye,{searchValue:i,setSearchValue:z,canCreate:!R&&S,createHref:U()})]}),title:"Checks"}),m(Q,{className:o.container,children:[j&&t(Pe,{rowCount:10}),b&&x,G&&m(X,{onSortChange:V,sortDescriptor:{direction:d,column:s},children:[m(Z,{children:[t(y,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"82%"},children:"Name"}),t(y,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Check Owner"}),t(y,{id:"actions",style:{width:"3%"}})]}),t($,{children:u.map(e=>t(Se,{check:e,profileImageMap:D??{}},e.id))})]}),J&&t(ee,{totalCount:l.length,offset:n.offset,hasNextPage:n.offset+n.pageSize<(l.length??0),hasPreviousPage:n.offset>0,onNextPage:n.onNextPage,onPreviousPage:n.onPreviousPage,onPageSizeChange:n.onPageSizeChange,pageSize:n.pageSize})]})]})};export{Ie as ChecksListPageBUI};
2
2
  //# sourceMappingURL=ChecksListPageBUI.esm.js.map
@@ -1,2 +1,2 @@
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};
1
+ import{jsx as t}from"react/jsx-runtime";import{PageWarningMessage as i}from"../../PageWarningMessage/PageWarningMessage.esm.js";import{AzureDevOpsConfigurator as a}from"./AzureDevOps/AzureDevOpsConfigurator.esm.js";import{BigQueryConfigurator as e}from"./BigQuery/BigQueryConfigurator.esm.js";import{CatalogConfigurator as m}from"./Catalog/CatalogConfigurator.esm.js";import{DataDogConfigurator as n}from"./DataDog/DataDogConfigurator.esm.js";import{DataRegistryConfigurator as f}from"./DataRegistry/DataRegistryConfigurator.esm.js";import{GithubConfigurator as g}from"./Github/GithubConfigurator.esm.js";import{GitlabConfigurator as u}from"./Gitlab/GitlabConfigurator.esm.js";import{HttpConfigurator as p}from"./HTTP/HttpConfigurator.esm.js";import{JiraConfigurator as C}from"./Jira/JiraConfigurator.esm.js";import{KubernetesConfigurator as s}from"./Kubernetes/KubernetesConfigurator.esm.js";import{NewRelicConfigurator as c}from"./NewRelic/NewRelicConfigurator.esm.js";import{PagerDutyConfigurator as l}from"./PagerDuty/PagerDutyConfigurator.esm.js";import{ScmConfigurator as d}from"./SCM/ScmConfigurator.esm.js";import{SonarQubeConfigurator as b}from"./SonarQube/SonarQubeConfigurator.esm.js";const y={github:g,gitlab:u,scm:d,pagerduty:l,datadog:n,kubernetes:s,jira:C,sonarqube:b,newrelic:c,bigquery:e,catalog:m,azure:a,http:p,"data-registry":f},D=({selectedCollector:r})=>{const o=y[r?.id];return o?t(o,{selectedCollector:r}):t(i,{entityName:"Integration",entityId:r.id,showCannotEdit:!0})};export{D as Configurator};
2
2
  //# sourceMappingURL=Configurator.esm.js.map