@spotify/backstage-plugin-soundcheck 0.18.0 → 0.18.1

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 (128) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/api.esm.js +1 -1
  3. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  4. package/dist/components/Badges/StatusBadge.esm.js +1 -1
  5. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
  6. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  7. package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
  8. package/dist/components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js +1 -1
  9. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  10. package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
  11. package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
  12. package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +1 -1
  13. package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +2 -0
  14. package/dist/components/CollectorPage/CollectorFactTable.esm.js +2 -0
  15. package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +1 -1
  16. package/dist/components/CollectorPage/Configurators/Github/DependabotAlertsFactDetails.esm.js +1 -1
  17. package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +1 -1
  18. package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +1 -1
  19. package/dist/components/CollectorPage/Configurators/SonarQube/IssuesFactDetailsInput.esm.js +1 -1
  20. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  21. package/dist/components/ColorChip/ColorChip.esm.js +2 -0
  22. package/dist/components/Expand/Expand.esm.js +1 -1
  23. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  24. package/dist/components/FactExplorer/FactExplorerContext.esm.js +1 -1
  25. package/dist/components/FactExplorer/FactExplorerDialog.esm.js +1 -1
  26. package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
  27. package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +1 -1
  28. package/dist/components/GroupHierarchySelector/GroupHierarchyCategorySelection.esm.js +2 -0
  29. package/dist/components/GroupHierarchySelector/GroupHierarchyChip.esm.js +2 -0
  30. package/dist/components/GroupHierarchySelector/GroupHierarchyGroupInfo.esm.js +2 -0
  31. package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +2 -0
  32. package/dist/components/GroupHierarchySelector/GroupHierarchySelectorDialog.esm.js +2 -0
  33. package/dist/components/GroupHierarchySelector/usePreviousSelectedGroups.esm.js +2 -0
  34. package/dist/components/QuickstartPage/HowDoIListItem.esm.js +1 -1
  35. package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +1 -1
  36. package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -1
  37. package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +5 -5
  38. package/dist/components/QuickstartPage/WelcomeModal.esm.js +1 -1
  39. package/dist/components/QuickstartPage/styles.esm.js +1 -1
  40. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  41. package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
  42. package/dist/components/SoundcheckHeader/headerUtil.esm.js +1 -1
  43. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
  44. package/dist/components/TechHealth/Loading/Loading.esm.js +1 -1
  45. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
  46. package/dist/components/TechInsights/ColorLegend.esm.js +1 -1
  47. package/dist/components/TechInsights/ColorSchemeSelector.esm.js +2 -0
  48. package/dist/components/TechInsights/FilterControls.esm.js +2 -0
  49. package/dist/components/TechInsights/HierarchicalTechInsightsPage.esm.js +2 -0
  50. package/dist/components/TechInsights/HierarchyTable.esm.js +2 -0
  51. package/dist/components/TechInsights/LoadingOverlay.esm.js +1 -1
  52. package/dist/components/TechInsights/LowestPerformingTeams.esm.js +1 -1
  53. package/dist/components/TechInsights/NivoCirclePacking.esm.js +1 -1
  54. package/dist/components/TechInsights/NivoIcicle.esm.js +1 -1
  55. package/dist/components/TechInsights/NivoSunburst.esm.js +1 -1
  56. package/dist/components/TechInsights/NivoTreemap.esm.js +1 -1
  57. package/dist/components/TechInsights/SelectedNodeSidebar.esm.js +2 -0
  58. package/dist/components/TechInsights/SummaryTiles.esm.js +2 -0
  59. package/dist/components/TechInsights/TeamComparison/FailingComponentsTable.esm.js +1 -1
  60. package/dist/components/TechInsights/TeamComparison/MultiCheckStatusHistoryChart.esm.js +1 -1
  61. package/dist/components/TechInsights/TeamPerformanceCard.esm.js +1 -1
  62. package/dist/components/TechInsights/TeamStatusBar.esm.js +2 -0
  63. package/dist/components/TechInsights/TechInsightsCardsView.esm.js +2 -0
  64. package/dist/components/TechInsights/TechInsightsChartView.esm.js +2 -0
  65. package/dist/components/TechInsights/TechInsightsGroupSelector.esm.js +1 -1
  66. package/dist/components/TechInsights/TechInsightsPage2.esm.js +1 -1
  67. package/dist/components/TechInsights/TechInsightsTableView.esm.js +2 -0
  68. package/dist/components/TechInsights/TechInsightsViewSelector.esm.js +1 -1
  69. package/dist/components/TechInsights/Tiles/TileUtils.esm.js +1 -1
  70. package/dist/components/TechInsights/Tiles/TrackStatusCard.esm.js +2 -0
  71. package/dist/components/TechInsights/TopPerformingTeams.esm.js +1 -1
  72. package/dist/components/TechInsights/ViewModeControls.esm.js +2 -0
  73. package/dist/components/TechInsights/VisualizationBreadcrumb.esm.js +2 -0
  74. package/dist/components/TechInsights/findNodePath.esm.js +2 -0
  75. package/dist/components/TechInsights/hierarchy/GroupNode.esm.js +1 -1
  76. package/dist/components/TechInsights/hierarchy/Hierarchy.esm.js +1 -1
  77. package/dist/components/TechInsights/hierarchyToNivo.esm.js +1 -1
  78. package/dist/components/TechInsights/persistence/FavoriteViews.esm.js +1 -1
  79. package/dist/components/TechInsights/styles.esm.js +1 -1
  80. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
  81. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  82. package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
  83. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  84. package/dist/components/TrackSelection/TrackSelection.esm.js +2 -0
  85. package/dist/graphql/generated/index.esm.js +188 -133
  86. package/dist/hooks/cache/useEntityCountCached.esm.js +2 -0
  87. package/dist/hooks/cache/useTrackCountCached.esm.js +2 -0
  88. package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
  89. package/dist/hooks/catalog/useGetEntityCount.esm.js +2 -0
  90. package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
  91. package/dist/hooks/graphqlKeys.esm.js +1 -1
  92. package/dist/hooks/groups/useAllGroups.esm.js +1 -1
  93. package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
  94. package/dist/hooks/heirarchy/useBatchedHierarchicalTrackStatuses.esm.js +2 -0
  95. package/dist/hooks/heirarchy/useGroupHierarchy.esm.js +1 -1
  96. package/dist/hooks/heirarchy/useGroupTypeHierarchy.esm.js +2 -0
  97. package/dist/hooks/heirarchy/useHierarchicalTrackStatus.esm.js +1 -1
  98. package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
  99. package/dist/hooks/tracks/useGetTracksApplicableEntityCount.esm.js +2 -0
  100. package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +2 -0
  101. package/dist/index.d.ts +3 -0
  102. package/dist/routes.esm.js +1 -1
  103. package/package.json +25 -24
  104. package/dist/components/QuickstartPage/QuickStartChecksCard.esm.js +0 -2
  105. package/dist/components/QuickstartPage/QuickstartCollectorConfigurationsCard.esm.js +0 -2
  106. package/dist/components/QuickstartPage/QuickstartTracksCard.esm.js +0 -2
  107. package/dist/components/TechHealth/Loading/Emoji.esm.js +0 -2
  108. package/dist/components/TechHealth/Loading/EmojiFountain.esm.js +0 -2
  109. package/dist/components/TechInsights/TeamComparison/CheckComparison.esm.js +0 -2
  110. package/dist/components/TechInsights/TeamComparison/LineChartContainer.esm.js +0 -2
  111. package/dist/components/TechInsights/TeamComparison/MultiTrackHistoryChart.esm.js +0 -2
  112. package/dist/components/TechInsights/TeamComparison/TeamComparison.esm.js +0 -2
  113. package/dist/components/TechInsights/TeamComparison/TrackComparison.esm.js +0 -2
  114. package/dist/components/TechInsights/TechInsightsPage.esm.js +0 -2
  115. package/dist/components/TechInsights/TechInsightsSidebar.esm.js +0 -2
  116. package/dist/components/TechInsights/Tiles/CheckStatusTile.esm.js +0 -2
  117. package/dist/components/TechInsights/Tiles/TrackStatusTile.esm.js +0 -2
  118. package/dist/components/TechInsights/TrackCardGrid.esm.js +0 -2
  119. package/dist/components/TechInsights/TrackCardGridBox.esm.js +0 -2
  120. package/dist/components/TechInsights/hierarchy/VirtualRow.esm.js +0 -2
  121. package/dist/hooks/aggregations/useCertificationStatusHistories.esm.js +0 -2
  122. package/dist/hooks/aggregations/useCertificationStatuses.esm.js +0 -2
  123. package/dist/hooks/aggregations/useCheckStatusByGroups.esm.js +0 -2
  124. package/dist/hooks/aggregations/useCheckStatusHistoriesMultiFilter.esm.js +0 -2
  125. package/dist/hooks/heirarchy/useRootGroups.esm.js +0 -2
  126. package/dist/hooks/savedViews/useDeleteView.esm.js +0 -2
  127. package/dist/hooks/savedViews/useSaveView.esm.js +0 -2
  128. package/dist/hooks/savedViews/useSavedViews.esm.js +0 -2
@@ -0,0 +1,2 @@
1
+ import{useState as a,useEffect as r}from"react";import{useGetEntityCount as s}from"../catalog/useGetEntityCount.esm.js";let t=null,o=null;const d=15*60*1e3;function c(){const[i,l]=a(t===null),e=t===null||(o?Date.now()-o>d:!0),{data:n,isLoading:u}=s(e);return r(()=>{!u&&n!==void 0&&(t=n,o=Date.now()),l(!1)},[n,u,e]),{entityCount:t,loading:i}}export{c as useEntityCountCached};
2
+ //# sourceMappingURL=useEntityCountCached.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{useState as r,useEffect as s}from"react";import{useGetAllTracks as c}from"../tracks/useGetAllTracks.esm.js";let t=null,o=null;const i=15*60*1e3;function d(){const[a,u]=r(t===null),e=t===null||(o?Date.now()-o>i:!0),{data:n,isLoading:l}=c({},{enabled:e});return s(()=>{!l&&n!==void 0&&(t=n.totalCount,o=Date.now()),u(!1)},[n,l,e]),{trackCount:t,loading:a}}export{d as useTrackCountCached};
2
+ //# sourceMappingURL=useTrackCountCached.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as i}from"@backstage/core-plugin-api";import{useQuery as n}from"@tanstack/react-query";import{soundcheckApiRef as s}from"../../api.esm.js";import{QueryKeys as m}from"../graphqlKeys.esm.js";function a(e,r,t){const o=i(s);return n([m.GetCampaigns,JSON.stringify(e)],async()=>o.getCampaigns(e,t),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1,enabled:r})}export{a as useGetCampaigns};
1
+ import{useApi as o}from"@backstage/core-plugin-api";import{useQuery as i}from"@tanstack/react-query";import{soundcheckApiRef as c}from"../../api.esm.js";import{QueryKeys as m}from"../graphqlKeys.esm.js";function s(e,t,n){const r=o(c);return i([m.GetCampaigns,JSON.stringify(e)],async()=>r.getCampaigns(e,n),{staleTime:1e3*60*15,cacheTime:1e3*60*60,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,refetchInterval:!1,enabled:t})}export{s as useGetCampaigns};
2
2
  //# sourceMappingURL=useGetCampaigns.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{useApi as i}from"@backstage/core-plugin-api";import{catalogApiRef as s}from"@backstage/plugin-catalog-react";import{useQuery as m}from"@tanstack/react-query";import{useState as u}from"react";const a=(t=!1)=>{const r=i(s),[o,n]=u(0);return m(["GetEntityCount"],async()=>{if(!t)return o;const e=await r.queryEntities({limit:0});return n(e.totalItems),e.totalItems},{enabled:t,refetchOnWindowFocus:!1,refetchInterval:!1,staleTime:15*60*1e3})};export{a as useGetEntityCount};
2
+ //# sourceMappingURL=useGetEntityCount.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as n,useAnalytics as p}from"@backstage/core-plugin-api";import{useQueryClient as d,useMutation as h}from"@tanstack/react-query";import{soundcheckApiRef as k}from"../../api.esm.js";import{MutationKeys as m,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as C}from"../useSoundcheckAlert.esm.js";const l="Error Creating Check";function y(){const u=n(k),o=d(),{showAlert:a}=C(),s=p(),i=async e=>{const r=await u.updateCheck(e);if(!r)throw new Error("Failed to update check.");return r};return h([m.UpdateCheck],i,{onSuccess:e=>{const r=[t.GetChecks,t.GetCheckOwners,t.ExecutableChecks,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return o.setQueryData([t.Check,e.id],e),s.captureEvent("resource_action","Update Check",{attributes:{resourceType:"check",resourceAction:"update",resourceId:e.id,success:"true"}}),Promise.all(r.map(c=>o.invalidateQueries({queryKey:[c]})))},onError:(e,r)=>{let c="Failed to update check.";e instanceof Error&&(c=e.message),a({severity:"error",title:l,message:c}),s.captureEvent("resource_action","Update Check",{attributes:{resourceType:"check",resourceAction:"update",resourceId:r.id,success:"false"}}),s.captureEvent("error","Update Check",{attributes:{errorMessage:c}})}})}export{y as useUpdateCheck};
1
+ import{useApi as n,useAnalytics as p}from"@backstage/core-plugin-api";import{useQueryClient as d,useMutation as h}from"@tanstack/react-query";import{soundcheckApiRef as k}from"../../api.esm.js";import{MutationKeys as l,QueryKeys as r}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as C}from"../useSoundcheckAlert.esm.js";const m="Error Creating Check";function y(){const u=n(k),o=d(),{showAlert:a}=C(),s=p(),i=async e=>{const t=await u.updateCheck(e);if(!t)throw new Error("Failed to update check.");return t};return h([l.UpdateCheck],i,{onSuccess:e=>{const t=[r.GetChecks,r.GetCheckOwners,r.ExecutableChecks,r.GetFacetsForOwner,r.GetTrackOverviewForOwner,r.GetCollectors];return o.setQueryData([r.Check,e.id],e),s.captureEvent("resource_action","Update Check",{attributes:{resourceType:"check",resourceAction:"update",resourceId:e.id,success:"true"}}),Promise.all(t.map(c=>o.invalidateQueries({queryKey:[c]})))},onError:(e,t)=>{let c="Failed to update check.";e instanceof Error&&(c=e.message),a({severity:"error",title:m,message:c}),s.captureEvent("resource_action","Update Check",{attributes:{resourceType:"check",resourceAction:"update",resourceId:t.id,success:"false"}}),s.captureEvent("error","Update Check",{attributes:{errorMessage:c}})}})}export{y as useUpdateCheck};
2
2
  //# sourceMappingURL=useUpdateCheck.esm.js.map
@@ -1,2 +1,2 @@
1
- var t=(e=>(e.GetTrack="soundcheck/track",e.GetAllTracks="soundcheck/tracks",e.GetChecks="soundcheck/checks",e.GetCollectors="soundcheck/collectors",e.GetFactSchema="soundcheck/collectors/schema",e.GetEntityFacets="soundcheck/catalog/facets",e.GetSoftwareEntityRefsForUser="soundcheck/entities/softwareEntityRefsForUser",e.GetEntityRefs="soundcheck/catalog/entityRefs",e.ExecutableChecks="soundcheck/executableChecks",e.GetCampaigns="soundcheck/campaigns",e.GetOverallCheckPassRateTrends="soundcheck/charts/overallCheckPassRateTrends",e.GetIndividualCheckPassRateTrends="soundcheck/charts/getIndividualCheckPassRateTrends",e.GetOverallTrackPassRateTrends="soundcheck/charts/overallTrackPassRateTrends",e.GetIndividualTrackPassRateTrends="soundcheck/charts/individualTrackPassRateTrends",e.GetOverallEntityPassRateTrends="soundcheck/charts/overallEntityPassRateTrends",e.GetIndividualEntityPassRateTrends="soundcheck/charts/individualEntityPassRateTrends",e.GetOverallGroupPassRateTrends="soundcheck/charts/overallGroupPassRateTrends",e.GetIndividualGroupPassRateTrends="soundcheck/charts/individualGroupPassRateTrends",e.EntityByRef="soundcheck/catalog/entityByRef",e.EntitiesByRefs="soundcheck/catalog/entitiesByRef",e.TrackEntities="soundcheck/track/entities",e.CheckEntities="soundcheck/check/entities",e.CertificationStatus="soundcheck/certificationStatus",e.CertificationStatuses="soundcheck/certificationStatuses",e.CertificationStatusHistory="soundcheck/certificationStatusHistory",e.CertificationStatusHistories="soundcheck/certificationStatusHistories",e.CheckStatus="soundcheck/checkStatus",e.CheckStatuses="soundcheck/checkStatuses",e.SavedViews="soundcheck/savedViews",e.CheckStatusHistory="soundcheck/checkStatusHistory",e.CheckStatusHistories="soundcheck/checkStatusHistories",e.CheckStatusHistoriesMultiFilter="soundcheck/checkStatusHistoriesMultiFilter",e.Check="soundcheck/check",e.CheckDetails="soundcheck/checkDetails",e.Certifications="soundcheck/certifications",e.CertificationDetails="soundcheck/certificationDetails",e.GetCheckOwners="soundcheck/checks/getOwners",e.GetTrackOwners="soundcheck/tracks/getOwners",e.GetCampaignOwners="soundcheck/campaigns/getOwners",e.GetTrackRelatedGroups="soundcheck/track/getTrackRelatedGroups",e.CheckTemplates="soundcheck/checkTemplates",e.GetFacetsForOwner="soundcheck/facets-for-owner",e.GetTrackOverviewForOwner="soundcheck/track-overview-for-owner",e.GetExemption="soundcheck/getExemption",e.GetExemptions="soundcheck/getExemptions",e.GetExemptCheckIds="soundcheck/getExemptCheckIds",e))(t||{}),s=(e=>(e.DeleteCheck="soundcheck/deleteCheck",e.CreateCheck="soundcheck/createCheck",e.UpdateCheck="soundcheck/updateCheck",e.ExecuteCheck="soundcheck/executeCheck",e.ImportChecks="soundcheck/importChecks",e.SetResult="soundcheck/setResult",e.CreateExemption="soundcheck/createExemption",e.UpdateExemption="soundcheck/updateExemption",e.DeleteExemption="soundcheck/deleteExemption",e.SaveView="soundcheck/saveView",e.DeleteTrack="soundcheck/deleteTrack",e.CreateTrack="soundcheck/createTrack",e.UpdateTrack="soundcheck/updateTrack",e.ImportTracks="soundcheck/importTracks",e.UpdateCollectorConfig="soundcheck/updateCollectorConfig",e.CreateCampaign="soundcheck/createCampaign",e.UpdateCampaign="soundcheck/updateCampaign",e.DeleteCampaign="soundcheck/deleteCampaign",e.ArchiveCampaign="soundcheck/archiveCampaign",e.SendCampaignNotification="soundcheck/sendCampaignNotification",e))(s||{});export{s as MutationKeys,t as QueryKeys};
1
+ var t=(e=>(e.GetTrack="soundcheck/track",e.GetAllTracks="soundcheck/tracks",e.GetTracksApplicableEntityCount="soundcheck/tracks/applicableEntities",e.GetChecks="soundcheck/checks",e.GetCollectors="soundcheck/collectors",e.GetFactSchema="soundcheck/collectors/schema",e.GetEntityFacets="soundcheck/catalog/facets",e.GetSoftwareEntityRefsForUser="soundcheck/entities/softwareEntityRefsForUser",e.GetEntityRefs="soundcheck/catalog/entityRefs",e.ExecutableChecks="soundcheck/executableChecks",e.GetCampaigns="soundcheck/campaigns",e.GetOverallCheckPassRateTrends="soundcheck/charts/overallCheckPassRateTrends",e.GetIndividualCheckPassRateTrends="soundcheck/charts/getIndividualCheckPassRateTrends",e.GetOverallTrackPassRateTrends="soundcheck/charts/overallTrackPassRateTrends",e.GetIndividualTrackPassRateTrends="soundcheck/charts/individualTrackPassRateTrends",e.GetOverallEntityPassRateTrends="soundcheck/charts/overallEntityPassRateTrends",e.GetIndividualEntityPassRateTrends="soundcheck/charts/individualEntityPassRateTrends",e.GetOverallGroupPassRateTrends="soundcheck/charts/overallGroupPassRateTrends",e.GetIndividualGroupPassRateTrends="soundcheck/charts/individualGroupPassRateTrends",e.EntityByRef="soundcheck/catalog/entityByRef",e.EntitiesByRefs="soundcheck/catalog/entitiesByRef",e.TrackEntities="soundcheck/track/entities",e.CheckEntities="soundcheck/check/entities",e.CertificationStatus="soundcheck/certificationStatus",e.CertificationStatuses="soundcheck/certificationStatuses",e.MultipleTrackStatuses="soundcheck/multipleTrackStatuses",e.CertificationStatusHistory="soundcheck/certificationStatusHistory",e.CertificationStatusHistories="soundcheck/certificationStatusHistories",e.CheckStatus="soundcheck/checkStatus",e.CheckStatuses="soundcheck/checkStatuses",e.SavedViews="soundcheck/savedViews",e.CheckStatusHistory="soundcheck/checkStatusHistory",e.CheckStatusHistories="soundcheck/checkStatusHistories",e.CheckStatusHistoriesMultiFilter="soundcheck/checkStatusHistoriesMultiFilter",e.TrackStatusHistory="soundcheck/trackStatusHistory",e.TrackStatusHistories="soundcheck/trackStatusHistories",e.Check="soundcheck/check",e.CheckDetails="soundcheck/checkDetails",e.Certifications="soundcheck/certifications",e.CertificationDetails="soundcheck/certificationDetails",e.GetCheckOwners="soundcheck/checks/getOwners",e.GetTrackOwners="soundcheck/tracks/getOwners",e.GetCampaignOwners="soundcheck/campaigns/getOwners",e.GetTrackRelatedGroups="soundcheck/track/getTrackRelatedGroups",e.CheckTemplates="soundcheck/checkTemplates",e.GetFacetsForOwner="soundcheck/facets-for-owner",e.GetTrackOverviewForOwner="soundcheck/track-overview-for-owner",e.GetExemption="soundcheck/getExemption",e.GetExemptions="soundcheck/getExemptions",e.GetExemptCheckIds="soundcheck/getExemptCheckIds",e))(t||{}),s=(e=>(e.DeleteCheck="soundcheck/deleteCheck",e.CreateCheck="soundcheck/createCheck",e.UpdateCheck="soundcheck/updateCheck",e.ExecuteCheck="soundcheck/executeCheck",e.ImportChecks="soundcheck/importChecks",e.SetResult="soundcheck/setResult",e.CreateExemption="soundcheck/createExemption",e.UpdateExemption="soundcheck/updateExemption",e.DeleteExemption="soundcheck/deleteExemption",e.SaveView="soundcheck/saveView",e.DeleteTrack="soundcheck/deleteTrack",e.CreateTrack="soundcheck/createTrack",e.UpdateTrack="soundcheck/updateTrack",e.ImportTracks="soundcheck/importTracks",e.UpdateCollectorConfig="soundcheck/updateCollectorConfig",e.CreateCampaign="soundcheck/createCampaign",e.UpdateCampaign="soundcheck/updateCampaign",e.DeleteCampaign="soundcheck/deleteCampaign",e.ArchiveCampaign="soundcheck/archiveCampaign",e.SendCampaignNotification="soundcheck/sendCampaignNotification",e))(s||{});export{s as MutationKeys,t as QueryKeys};
2
2
  //# sourceMappingURL=graphqlKeys.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as n}from"@backstage/catalog-model";import{useApi as t,configApiRef as p}from"@backstage/core-plugin-api";import{catalogApiRef as s}from"@backstage/plugin-catalog-react";import{getGroupFilterFromConfig as f,combineEntityFilterQueries as l}from"@spotify/backstage-plugin-soundcheck-common";import{useQuery as c}from"@tanstack/react-query";function u(){const i=t(s),r=t(p);return c(["soundcheck/all-groups"],async()=>{const a=f(r),o=l({kind:"Group"},a),{items:m}=await i.getEntities({filter:o,fields:["spec.profile.displayName","metadata.title","metadata.name","metadata.namespace","kind"]});return m.filter(e=>e?.kind==="Group").map(e=>({name:e.spec?.profile?.displayName??e.metadata.title??e.metadata.name,ref:n(e)}))},{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}export{u as useAllGroups};
1
+ import{stringifyEntityRef as m}from"@backstage/catalog-model";import{useApi as t,configApiRef as n}from"@backstage/core-plugin-api";import{catalogApiRef as s}from"@backstage/plugin-catalog-react";import{getGroupFilterFromConfig as f,combineEntityFilterQueries as l}from"@spotify/backstage-plugin-soundcheck-common";import{useQuery as c}from"@tanstack/react-query";function u(){const i=t(s),r=t(n);return c(["soundcheck/all-groups"],async()=>{const a=f(r),o=l({kind:"Group"},a),{items:p}=await i.getEntities({filter:o,fields:["spec.profile.displayName","metadata.title","metadata.name","metadata.namespace","kind","spec.type"]});return p.filter(e=>e?.kind==="Group").map(e=>({name:e.spec?.profile?.displayName??e.metadata.title??e.metadata.name,ref:m(e),type:e.spec?.type}))},{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}export{u as useAllGroups};
2
2
  //# sourceMappingURL=useAllGroups.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useMemo as u}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../graphqlKeys.esm.js";import{useAllGroups as f}from"./useAllGroups.esm.js";import{useUsersGroupClaims as l}from"./useUsersGroupClaims.esm.js";import"../useSoundcheckAlert.esm.js";import"../useConfirmationModal.esm.js";import"react-router-dom";const c=()=>{const{data:s,isLoading:i,isError:p}=l(),{data:t,isLoading:m,isError:a}=f();return{options:u(()=>{const o=new Map;return s&&s.forEach(({name:e,ref:r,type:n})=>{o.set(`${r}`,{name:e,ref:r,type:n,key:"My Groups"})}),t&&t.forEach(({name:e,ref:r})=>{o.has(`${r}`)||o.set(`${r}`,{name:e,ref:r,key:"All Groups"})}),[...o.values()]},[s,t]),isLoading:i||m,isError:p||a}};export{c as useGroupOptions};
1
+ import{useMemo as u}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../graphqlKeys.esm.js";import{useAllGroups as f}from"./useAllGroups.esm.js";import{useUsersGroupClaims as y}from"./useUsersGroupClaims.esm.js";import"../useSoundcheckAlert.esm.js";import"../useConfirmationModal.esm.js";import"react-router-dom";const l=()=>{const{data:e,isLoading:i,isError:m}=y(),{data:t,isLoading:a,isError:n}=f();return{options:u(()=>{const o=new Map;return e&&e.forEach(({name:s,ref:r,type:p})=>{o.set(`${r}`,{name:s,ref:r,type:p,key:"My Groups"})}),t&&t.forEach(({name:s,ref:r,type:p})=>{o.has(`${r}`)||o.set(`${r}`,{name:s,ref:r,type:p,key:"All Groups"})}),[...o.values()]},[e,t]),isLoading:i||a,isError:m||n}};export{l as useGroupOptions};
2
2
  //# sourceMappingURL=useGroupOptions.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{useApi as k}from"@backstage/core-plugin-api";import{useQueries as T}from"@tanstack/react-query";import{useMemo as n,useState as L,useEffect as S}from"react";import{soundcheckApiRef as y}from"../../api.esm.js";const q=({trackIds:h,groupRef:i,batchSize:c=10,skip:u})=>{const d=k(y),a=n(()=>[...h].sort(),[h]),g=n(()=>{const e=[];for(let r=0;r<a.length;r+=c)e.push(a.slice(r,r+c));return e},[a,c]),f=n(()=>g.map((e,r)=>({queryKey:["hierarchicalTrackStatuses",e,i,r],queryFn:async()=>await d.getHierarchicalTrackStatuses(e,i),enabled:!u&&e.length>0,staleTime:1e3*60*15,cacheTime:1e3*60*60,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1})),[g,i,u,d]),o=T({queries:f}),[l,m]=L({loadedTracks:0,totalTracks:a.length,isLoading:!1,error:null}),p=n(()=>o.map(e=>[e.isLoading,e.error,e.data?e.data.length:0].join(":")).join("|"),[o]);return S(()=>{let e=0,r=!1,s=null;o.forEach(t=>{t.isLoading&&(r=!0),t.error&&(s=t.error),t.data&&(e+=t.data.length)}),m(t=>t.loadedTracks===e&&t.totalTracks===a.length&&t.isLoading===r&&t.error===s?t:{loadedTracks:e,totalTracks:a.length,isLoading:r,error:s})},[o,p,a.length]),{data:n(()=>{if(o.length===0)return null;const e=[];return o.forEach(r=>{r.data&&e.push(...r.data)}),e.map(r=>({...r,...r.status,children:r.children.map(s=>({...s,...s.status}))}))},[o]),isLoading:l.isLoading,progress:l,error:l.error}};export{q as useBatchedHierarchicalTrackStatuses};
2
+ //# sourceMappingURL=useBatchedHierarchicalTrackStatuses.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as i}from"@backstage/core-plugin-api";import{useQuery as u}from"@tanstack/react-query";import{soundcheckApiRef as c}from"../../api.esm.js";const t=(e,r)=>{const o=i(c);return u({queryKey:["groupHierarchy",e],queryFn:async()=>(await o.getGroupHierarchy(e)).hierarchy,staleTime:60*60*1e3,refetchOnWindowFocus:!1,enabled:r?.enabled??!0})};export{t as useGroupHierarchy};
1
+ import{useApi as t}from"@backstage/core-plugin-api";import{useQuery as n}from"@tanstack/react-query";import{soundcheckApiRef as o}from"../../api.esm.js";const u=(r,e)=>{const i=t(o);return n({queryKey:["groupHierarchy",r,e?.ownedEntitiesFilter,!!e?.includeParent],queryFn:async()=>(await i.getGroupHierarchy(r,e?.ownedEntitiesFilter,e?.includeParent)).hierarchy,staleTime:60*60*1e3,refetchOnWindowFocus:!1,enabled:e?.enabled??!0})};export{u as useGroupHierarchy};
2
2
  //# sourceMappingURL=useGroupHierarchy.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{useApi as r}from"@backstage/core-plugin-api";import{useQuery as c}from"@tanstack/react-query";import{soundcheckApiRef as o}from"../../api.esm.js";const t=()=>{const e=r(o);return c({queryKey:["groupTypeHierarchy"],queryFn:async()=>(await e.getGroupTypeHierarchy()).hierarchy,staleTime:1e3*60*60,cacheTime:1e3*60*60*4,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1})};export{t as useGroupTypeHierarchy};
2
+ //# sourceMappingURL=useGroupTypeHierarchy.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as a}from"@backstage/core-plugin-api";import{useQuery as i}from"@tanstack/react-query";import{soundcheckApiRef as o}from"../../api.esm.js";const n=({trackId:e,groupRef:r,skip:c})=>{const t=a(o);return i({queryKey:["hierarchicalTrackStatus",e,r],queryFn:async()=>await t.getHierarchicalTrackStatus(e,r),enabled:!c,staleTime:1e3*60*15,cacheTime:1e3*60*60,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1})};export{n as useHierarchicalTrackStatus};
1
+ import{useApi as a}from"@backstage/core-plugin-api";import{useQuery as i}from"@tanstack/react-query";import{soundcheckApiRef as n}from"../../api.esm.js";const o=({trackId:e,groupRef:r,skip:c})=>{const t=a(n);return i({queryKey:["hierarchicalTrackStatus",e,r],queryFn:async()=>!e||!r?null:await t.getHierarchicalTrackStatus(e,r),enabled:!c,staleTime:1e3*60*15,cacheTime:1e3*60*60,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1})};export{o as useHierarchicalTrackStatus};
2
2
  //# sourceMappingURL=useHierarchicalTrackStatus.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as n}from"@backstage/core-plugin-api";import{useQueryClient as c,useQuery as f}from"@tanstack/react-query";import{useEffect as i}from"react";import{soundcheckApiRef as u}from"../../api.esm.js";import{QueryKeys as a}from"../graphqlKeys.esm.js";function m(r,d){const s=n(u),t=c(),e=f([a.GetAllTracks,r],async()=>s.getTracks(r),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1,enabled:!0});return i(()=>{if(e.data)for(const o of e.data.edges)t.setQueryData([a.GetTrack,o.node.id],o.node)},[e.data,t]),e}export{m as useGetAllTracks};
1
+ import{useApi as s}from"@backstage/core-plugin-api";import{useQueryClient as f,useQuery as i}from"@tanstack/react-query";import{useEffect as u}from"react";import{soundcheckApiRef as m}from"../../api.esm.js";import{QueryKeys as c}from"../graphqlKeys.esm.js";function d(r,n){const a=s(m),t=f(),e=i([c.GetAllTracks,r],async()=>a.getTracks(r),{staleTime:1e3*60*15,cacheTime:1e3*60*60,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,refetchInterval:!1,enabled:n?.enabled??!0});return u(()=>{if(e.data)for(const o of e.data.edges)t.setQueryData([c.GetTrack,o.node.id],o.node)},[e.data,t]),e}export{d as useGetAllTracks};
2
2
  //# sourceMappingURL=useGetAllTracks.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{useApi as o}from"@backstage/core-plugin-api";import{useQuery as i}from"@tanstack/react-query";import{soundcheckApiRef as c}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";function p(e,t={},r){const n=o(c);return i({queryKey:[u.GetTracksApplicableEntityCount,t,e],queryFn:async()=>n.getTracksApplicableEntityCount(t,e??""),staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1,enabled:!!e&&(r?.enabled??!0)})}export{p as useGetTracksApplicableEntityCount};
2
+ //# sourceMappingURL=useGetTracksApplicableEntityCount.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{parseEntityRef as G}from"@backstage/catalog-model";import{useMemo as o}from"react";import{useGetCampaigns as L}from"../campaigns/useGetCampaigns.esm.js";import{useGetAllTracks as E}from"./useGetAllTracks.esm.js";import{useGetTracksApplicableEntityCount as T}from"./useGetTracksApplicableEntityCount.esm.js";function A(r){if(!r||r.trim()==="")return!1;try{return G(r).kind.toLowerCase()==="group"}catch{return!1}}function M(r,h={},k){const n=A(r)&&(k?.enabled??!0),{data:d,isLoading:s,error:m}=E(h,{enabled:n}),{data:p,isLoading:l,error:c}=L({},n),u=o(()=>p?.edges?new Set(p.edges.filter(({node:e})=>e.archived).map(({node:e})=>e.track.id)):new Set,[p]),i=o(()=>d?.edges?d.edges.map(({node:e})=>e).filter(e=>!u.has(e.id)).filter(e=>!e.draft).sort((e,a)=>e.id.localeCompare(a.id)):[],[d,u]),{data:t,isLoading:f,error:g}=T(r,{ids:i.map(e=>e.id)},{enabled:n&&i.length>0&&!s&&!l}),b=o(()=>t?new Map(t.map(e=>[e.id,e.applicableEntityCount])):new Map,[t]),w=o(()=>t?i.filter(e=>{const a=b.get(e.id);return a!==void 0&&a>0}):[],[i,b,t]),y=o(()=>s||l||f||!!r&&!t&&i.length>0,[s,l,f,r,t,i.length]),C=o(()=>m||c||g,[m,c,g]);return{tracks:w,counts:t,isLoading:y,error:C}}export{M as useTracksApplicableToGroup};
2
+ //# sourceMappingURL=useTracksApplicableToGroup.esm.js.map
package/dist/index.d.ts CHANGED
@@ -125,6 +125,9 @@ declare function useGetCollectors(collectorIds?: string[]): _tanstack_react_quer
125
125
  __typename?: "Checker";
126
126
  id: string;
127
127
  name?: string | null;
128
+ description?: string | null;
129
+ rule?: any | null;
130
+ schedule?: any | null;
128
131
  }> | null;
129
132
  }[], unknown>;
130
133
 
@@ -1,2 +1,2 @@
1
- import{createRouteRef as a,createSubRouteRef as e}from"@backstage/core-plugin-api";const c=a({id:"soundcheck-entity"}),i=a({id:"soundcheck-group"}),r=e({id:"soundcheck-entity-certification-track-redirect",parent:c,path:"/tracks/:trackId"}),n=e({id:"soundcheck-entity-certification",parent:c,path:"/tracks/:trackId/checks/:checkId"}),s=e({id:"soundcheck-entity-playlist-redirect",parent:c,path:"/playlists/:playlistId"}),d=e({id:"soundcheck-entity-playlist-track-redirect",parent:c,path:"/playlists/:playlistId/tracks/:trackId"}),k=e({id:"soundcheck-entity-playlist-track-redirect",parent:c,path:"/playlists/:playlistId/tracks/:trackId/checks/:checkId"}),t=a({id:"soundcheck"}),h=e({id:"soundcheck-quickstart",parent:t,path:"/quickstart"}),o=e({id:"soundcheck-checks",parent:t,path:"/checks"}),p=e({id:"soundcheck-check-details",parent:t,path:"/checks/:checkId"}),u=e({id:"soundcheck-check-edit",parent:t,path:"/checks/:checkId/edit"}),R=e({id:"soundcheck-check-create",parent:t,path:"/checks/create"}),l=e({id:"soundcheck-check-templates",parent:t,path:"/checks/templates"}),f=e({id:"soundcheck-tracks",parent:t,path:"/tracks"}),g=e({id:"soundcheck-track-details",parent:t,path:"/tracks/:trackId"}),m=e({id:"soundcheck-track-edit",parent:t,path:"/tracks/:trackId/edit"}),y=e({id:"soundcheck-track-create",parent:t,path:"/tracks/create"}),I=e({id:"soundcheck-track-check-details",parent:t,path:"/tracks/:trackId/checks/:checkId"}),P=e({id:"soundcheck-campaigns",parent:t,path:"/campaigns"}),C=e({id:"soundcheck-campaign-details",parent:t,path:"/campaigns/:campaignId"}),D=e({id:"soundcheck-campaign-edit",parent:t,path:"/campaigns/:campaignId/edit"}),T=e({id:"soundcheck-campaign-create",parent:t,path:"/campaigns/create"});e({id:"soundcheck-tech-health",parent:t,path:"/tech-health"});const q=e({id:"soundcheck-integrations-page",parent:t,path:"/integrations"}),E=e({id:"soundcheck-integration-details",parent:t,path:"/integrations/:integrationId"});export{T as campaignCreateRouteRef,C as campaignDetailsRouteRef,D as campaignEditRouteRef,P as campaignsPageRouteRef,s as certificationPlaylistRouteRef,k as certificationPlaylistTrackCheckRouteRef,d as certificationPlaylistTrackRouteRef,n as certificationRouteRef,r as certificationTrackRouteRef,R as checkCreateRouteRef,p as checkDetailsRouteRef,u as checkEditRouteRef,l as checkTemplatesRouteRef,o as checksPageRouteRef,c as entityRootRouteRef,i as groupRootRouteRef,E as integrationDetailsRouteRef,q as integrationsPageRouteRef,h as quickstartRouteRef,t as rootRouteRef,I as trackCheckDetailsRouteRef,y as trackCreateRouteRef,g as trackDetailsRouteRef,m as trackEditRouteRef,f as tracksPageRouteRef};
1
+ import{createRouteRef as a,createSubRouteRef as t}from"@backstage/core-plugin-api";const c=a({id:"soundcheck-entity"}),i=a({id:"soundcheck-group"}),n=t({id:"soundcheck-entity-certification-track-redirect",parent:c,path:"/tracks/:trackId"}),s=t({id:"soundcheck-entity-certification",parent:c,path:"/tracks/:trackId/checks/:checkId"}),r=t({id:"soundcheck-entity-playlist-redirect",parent:c,path:"/playlists/:playlistId"}),h=t({id:"soundcheck-entity-playlist-track-redirect",parent:c,path:"/playlists/:playlistId/tracks/:trackId"}),d=t({id:"soundcheck-entity-playlist-track-redirect",parent:c,path:"/playlists/:playlistId/tracks/:trackId/checks/:checkId"}),e=a({id:"soundcheck"}),k=t({id:"soundcheck-quickstart",parent:e,path:"/quickstart"}),o=t({id:"soundcheck-checks",parent:e,path:"/checks"}),p=t({id:"soundcheck-check-details",parent:e,path:"/checks/:checkId"}),u=t({id:"soundcheck-check-edit",parent:e,path:"/checks/:checkId/edit"}),R=t({id:"soundcheck-check-create",parent:e,path:"/checks/create"}),g=t({id:"soundcheck-check-templates",parent:e,path:"/checks/templates"}),l=t({id:"soundcheck-tracks",parent:e,path:"/tracks"}),f=t({id:"soundcheck-track-details",parent:e,path:"/tracks/:trackId"}),I=t({id:"soundcheck-track-edit",parent:e,path:"/tracks/:trackId/edit"}),m=t({id:"soundcheck-track-create",parent:e,path:"/tracks/create"}),y=t({id:"soundcheck-track-check-details",parent:e,path:"/tracks/:trackId/checks/:checkId"}),P=t({id:"soundcheck-campaigns",parent:e,path:"/campaigns"}),C=t({id:"soundcheck-campaign-details",parent:e,path:"/campaigns/:campaignId"}),D=t({id:"soundcheck-campaign-edit",parent:e,path:"/campaigns/:campaignId/edit"}),T=t({id:"soundcheck-campaign-create",parent:e,path:"/campaigns/create"}),E=t({id:"soundcheck-tech-health",parent:e,path:"/tech-health"}),q=t({id:"soundcheck-tech-insights",parent:e,path:"/tech-insights"}),b=t({id:"soundcheck-integrations-page",parent:e,path:"/integrations"}),x=t({id:"soundcheck-integration-details",parent:e,path:"/integrations/:integrationId"}),H=t({id:"soundcheck-integration-edit",parent:e,path:"/integrations/:integrationId/edit"});t({id:"soundcheck-tech-insights-tracks",parent:e,path:"/tech-insights/tracks"});const S=t({id:"soundcheck-tech-insights-track",parent:e,path:"/tech-insights/track"});export{T as campaignCreateRouteRef,C as campaignDetailsRouteRef,D as campaignEditRouteRef,P as campaignsPageRouteRef,r as certificationPlaylistRouteRef,d as certificationPlaylistTrackCheckRouteRef,h as certificationPlaylistTrackRouteRef,s as certificationRouteRef,n as certificationTrackRouteRef,R as checkCreateRouteRef,p as checkDetailsRouteRef,u as checkEditRouteRef,g as checkTemplatesRouteRef,o as checksPageRouteRef,c as entityRootRouteRef,i as groupRootRouteRef,x as integrationDetailsRouteRef,H as integrationEditRouteRef,b as integrationsPageRouteRef,k as quickstartRouteRef,e as rootRouteRef,E as techHealthRouteRef,q as techInsightsPageRouteRef,S as techInsightsTrackRouteRef,y as trackCheckDetailsRouteRef,m as trackCreateRouteRef,f as trackDetailsRouteRef,I as trackEditRouteRef,l as tracksPageRouteRef};
2
2
  //# sourceMappingURL=routes.esm.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spotify/backstage-plugin-soundcheck",
3
3
  "description": "Ensure quality, reliability and alignment of software development with codified checks and guidance.",
4
- "version": "0.18.0",
4
+ "version": "0.18.1",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "homepage": "https://backstage.spotify.com",
7
7
  "main": "./dist/index.esm.js",
@@ -58,16 +58,16 @@
58
58
  "prepare": "yarn generate"
59
59
  },
60
60
  "dependencies": {
61
- "@backstage/catalog-client": "^1.10.1",
62
- "@backstage/catalog-model": "^1.7.4",
63
- "@backstage/config": "^1.3.2",
64
- "@backstage/core-compat-api": "^0.4.3",
65
- "@backstage/core-components": "^0.17.3",
66
- "@backstage/core-plugin-api": "^1.10.8",
67
- "@backstage/frontend-plugin-api": "^0.10.3",
68
- "@backstage/plugin-catalog-react": "^1.19.0",
69
- "@backstage/plugin-permission-react": "^0.4.35",
70
- "@backstage/plugin-scaffolder-react": "^1.17.0",
61
+ "@backstage/catalog-client": "^1.10.2",
62
+ "@backstage/catalog-model": "^1.7.5",
63
+ "@backstage/config": "^1.3.3",
64
+ "@backstage/core-compat-api": "^0.4.4",
65
+ "@backstage/core-components": "^0.17.4",
66
+ "@backstage/core-plugin-api": "^1.10.9",
67
+ "@backstage/frontend-plugin-api": "^0.10.4",
68
+ "@backstage/plugin-catalog-react": "^1.19.1",
69
+ "@backstage/plugin-permission-react": "^0.4.36",
70
+ "@backstage/plugin-scaffolder-react": "^1.18.0",
71
71
  "@backstage/types": "^1.2.1",
72
72
  "@date-io/luxon": "^1.0.0",
73
73
  "@hookform/resolvers": "^4.0.0",
@@ -75,17 +75,16 @@
75
75
  "@material-ui/icons": "^4.9.1",
76
76
  "@material-ui/lab": "4.0.0-alpha.61",
77
77
  "@material-ui/pickers": "3.3.11",
78
- "@mui/icons-material": "^5.11.16",
79
- "@mui/material": "^5.12.2",
80
78
  "@mui/styles": "^5.14.7",
81
79
  "@nivo/circle-packing": "^0.99.0",
82
80
  "@nivo/colors": "^0.99.0",
83
81
  "@nivo/core": "^0.99.0",
82
+ "@nivo/heatmap": "^0.99.0",
84
83
  "@nivo/icicle": "^0.99.0",
85
84
  "@nivo/sunburst": "^0.99.0",
86
85
  "@nivo/treemap": "^0.99.0",
87
- "@spotify/backstage-plugin-core": "^0.8.8",
88
- "@spotify/backstage-plugin-soundcheck-common": "^0.18.0",
86
+ "@spotify/backstage-plugin-core": "^0.8.9",
87
+ "@spotify/backstage-plugin-soundcheck-common": "^0.18.1",
89
88
  "@tanstack/react-query": "^4.6.1",
90
89
  "@tanstack/react-virtual": "^3.13.9",
91
90
  "@types/react-csv": "^1.1.6",
@@ -121,6 +120,7 @@
121
120
  "recharts": "^2.8.0",
122
121
  "rehype-raw": "^7.0.0",
123
122
  "remark-gfm": "^4.0.0",
123
+ "slate": "^0.117.0",
124
124
  "use-immer": "^0.11.0",
125
125
  "use-resize-observer": "^9.1.0",
126
126
  "uuid": "^11.0.0",
@@ -132,20 +132,21 @@
132
132
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
133
133
  },
134
134
  "devDependencies": {
135
- "@backstage/cli": "^0.33.0",
136
- "@backstage/core-app-api": "^1.17.1",
137
- "@backstage/dev-utils": "^1.1.11",
135
+ "@backstage/cli": "^0.33.1",
136
+ "@backstage/core-app-api": "^1.18.0",
137
+ "@backstage/dev-utils": "^1.1.12",
138
138
  "@backstage/e2e-test-utils": "^0.1.1",
139
- "@backstage/frontend-test-utils": "^0.3.3",
140
- "@backstage/test-utils": "^1.7.9",
139
+ "@backstage/frontend-test-utils": "^0.3.4",
140
+ "@backstage/plugin-permission-common": "^0.9.1",
141
+ "@backstage/test-utils": "^1.7.10",
141
142
  "@graphql-codegen/cli": "^5.0.0",
142
143
  "@graphql-codegen/typescript": "^4.0.0",
143
144
  "@graphql-codegen/typescript-graphql-request": "^6.0.0",
144
145
  "@graphql-codegen/typescript-operations": "^4.0.0",
145
146
  "@playwright/test": "^1.32.3",
146
147
  "@sp4b-dev/test-utils": "^0.0.13",
147
- "@spotify/backstage-plugin-core-common": "^0.6.7",
148
- "@spotify/backstage-plugin-soundcheck-node": "^0.9.10",
148
+ "@spotify/backstage-plugin-core-common": "^0.6.8",
149
+ "@spotify/backstage-plugin-soundcheck-node": "^0.9.11",
149
150
  "@testing-library/jest-dom": "^6.0.0",
150
151
  "@testing-library/react": "^14.0.0",
151
152
  "@testing-library/user-event": "^14.0.0",
@@ -155,8 +156,8 @@
155
156
  "@types/d3-scale": "^4",
156
157
  "@types/d3-scale-chromatic": "^3.0.0",
157
158
  "@types/d3-shape": "^3",
158
- "@types/git-url-parse": "^9.0.0",
159
- "@types/jest": "^29.4.0",
159
+ "@types/git-url-parse": "^16.0.0",
160
+ "@types/jest": "^30.0.0",
160
161
  "@types/luxon": "^3.0.1",
161
162
  "@types/node": "^22.0.0",
162
163
  "@types/react-window": "^1.8.5",
@@ -1,2 +0,0 @@
1
- import{jsxs as r,jsx as e}from"react/jsx-runtime";import{useRouteRef as a}from"@backstage/core-plugin-api";import{Typography as t,Link as s}from"@material-ui/core";import{checksPageRouteRef as n}from"../../routes.esm.js";import{QuickstartCardBase as i}from"./QuickstartCardBase.esm.js";import{useQuickstartStyles as p}from"./styles.esm.js";const d=()=>{const o=p(),c=a(n);return r(i,{header:"Checks",routeRef:c,children:[e(t,{variant:"body1",component:"div",className:o.mainPoint,children:"Checks are comparisons between defined acceptable fact values and the actual fact values of given collected facts."}),e(t,{variant:"body1",component:"div",paragraph:!0,children:"We've pre-populated your instance with two sets of checks which are used in the provided tracks."}),r(t,{children:["Need Help? Check out the"," ",e(s,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks",className:o.link,target:"_blank",rel:"noopener noreferrer",children:"documentation"}),"."]})]})};export{d as QuickstartChecksCard};
2
- //# sourceMappingURL=QuickStartChecksCard.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as n,jsx as e}from"react/jsx-runtime";import{useRouteRef as c}from"@backstage/core-plugin-api";import{Typography as r,Link as i,Grid as o}from"@material-ui/core";import{integrationsPageRouteRef as h,integrationDetailsRouteRef as m}from"../../routes.esm.js";import{QuickstartCardBase as f}from"./QuickstartCardBase.esm.js";import{useQuickstartStyles as u}from"./styles.esm.js";const p=()=>{const t=u(),s=c(h),a=c(m),l=a({integrationId:"scm"}),d=a({integrationId:"github"});return n(f,{header:"Integrations",routeRef:s,children:[n(r,{variant:"body1",component:"div",className:t.mainPoint,children:["One of the foundational elements of Soundcheck,"," ",e(i,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors",className:t.link,target:"_blank",rel:"noopener noreferrer",children:"Integrations"})," ","collect raw data about your components. These facts are then used by checks to determine the health of your components."]}),e(r,{variant:"body1",component:"div",children:"Soundcheck comes with a variety of integrations, two of which we've enabled and configured for your starting instance:"}),n(o,{container:!0,direction:"row",className:t.grid,children:[e(o,{item:!0,xs:4,children:e(r,{variant:"body1",children:e(i,{href:l,className:t.link,target:"_blank",rel:"noopener noreferrer",children:"SCM Integration"})})}),e(o,{item:!0,xs:8,children:e(r,{variant:"body1",children:"Checks for recommended settings in your GitHub repositories."})}),e(o,{item:!0,xs:4,children:e(r,{variant:"body1",children:e(i,{href:d,className:t.link,target:"_blank",rel:"noopener noreferrer",children:"GitHub Integration"})})}),e(o,{item:!0,xs:8,children:e(r,{variant:"body1",children:"Pulls information from Github."})})]}),n(r,{children:["Need Help? Check out the"," ",e(i,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors",className:t.link,target:"_blank",rel:"noopener noreferrer",children:"documentation"}),"."]})]})};export{p as QuickstartCollectorConfigurationsCard};
2
- //# sourceMappingURL=QuickstartCollectorConfigurationsCard.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as n,jsx as e}from"react/jsx-runtime";import{useRouteRef as c}from"@backstage/core-plugin-api";import{Typography as r,Grid as a,Link as o}from"@material-ui/core";import{tracksPageRouteRef as m,trackDetailsRouteRef as h}from"../../routes.esm.js";import{QuickstartCardBase as u}from"./QuickstartCardBase.esm.js";import{useQuickstartStyles as p}from"./styles.esm.js";const k=()=>{const t=p(),s=c(m),i=c(h),d=i({trackId:"993a9b69-3445-4d42-a950-2a847d618825"}),l=i({trackId:"140ea084-d918-4d41-9035-95d72516ec4b"});return n(u,{header:"Tracks",routeRef:s,children:[e(r,{variant:"body1",component:"div",className:t.mainPoint,children:"Tracks encourage alignment to architectural best practices and standards and are analogous to an organization\u2019s long-term tech health initiatives."}),e(r,{variant:"body1",component:"div",children:"We have provided two tracks to start you off:"}),n(a,{container:!0,direction:"row",className:t.grid,children:[e(a,{item:!0,xs:5,children:e(r,{variant:"body1",children:e(o,{href:d,className:t.link,target:"_blank",rel:"noopener noreferrer",children:"Basic SCM Compliance"})})}),e(a,{item:!0,xs:6,children:e(r,{variant:"body1",children:"Ensures your source control management is configured correctly."})}),e(a,{item:!0,xs:5,children:e(r,{variant:"body1",children:e(o,{href:l,className:t.link,target:"_blank",rel:"noopener noreferrer",children:"Recommended GitHub Settings"})})}),e(a,{item:!0,xs:6,children:e(r,{variant:"body1",children:"Checks for recommended settings in your GitHub repositories."})})]}),n(r,{children:["Need Help? Check out the"," ",e(o,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks",className:t.link,target:"_blank",rel:"noopener noreferrer",children:"documentation"}),"."]})]})};export{k as QuickstartTracksCard};
2
- //# sourceMappingURL=QuickstartTracksCard.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as d}from"react/jsx-runtime";import{motion as l}from"framer-motion";function m({angle:o,arc:i,direction:t,dist:e,emoji:n,delay:r,fontSize:a,speed:p}){return d(l.div,{style:{position:"absolute",fontSize:a},initial:{top:0,left:"50%",x:"-50%",y:"-100%",rotate:0,originX:`${i*t}px`,originY:`${i}px`},animate:{opacity:[0,1,0,0,0,0],y:`${-e}px`,rotate:o*t},transition:{delay:r,duration:p,ease:[.2,.83,.46,.63],repeat:1/0},children:n})}export{m as Emoji};
2
- //# sourceMappingURL=Emoji.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as l,jsx as d}from"react/jsx-runtime";import{makeStyles as p,Typography as c}from"@material-ui/core";import{useMemo as f}from"react";import{Emoji as M}from"./Emoji.esm.js";const F=["\u{1F4C8}","\u{1F4CA}","\u{1F4C9}","\u{1F680}","\u2B50\uFE0F"],j=p(()=>({container:{position:"relative"}}));function y({angle:r=125,density:m=20,emojis:o=F,fontSizeMin:e=6,fontSizeMax:s=24,size:a=300,speed:n=4}){const h=j(),u=f(()=>Array.from({length:m*o.length}).map((t,i)=>({emoji:o[Math.floor(Math.random()*o.length)],arc:Math.random()*a*.5,delay:Math.random()*n,dist:Math.random()*a,direction:i%2?1:-1,fontSize:Math.random()*(s-e)+e,angle:r,speed:n})),[m,o,n,a,r,s,e]);return l("div",{className:h.container,children:[d(c,{variant:"h1",children:"\u{1F469}\u200D\u{1F4BB}"}),u.map((t,i)=>d(M,{...t},`${t.emoji}-${i}`))]})}export{y as EmojiFountain};
2
- //# sourceMappingURL=EmojiFountain.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r,jsxs as f}from"react/jsx-runtime";import{useTheme as G,Grid as i,Typography as h}from"@material-ui/core";import{useState as u,useEffect as k}from"react";import{useSearchParams as b}from"react-router-dom";import{useGroupOptions as M}from"../../../hooks/groups/useGroupOptions.esm.js";import{toFilter as O}from"../../../utils/helpers.esm.js";import{getChartColors as j}from"../../Charts/chartUtils.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as L}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{getTechInsightsStyles as $}from"../styles.esm.js";import{parseTogglesString as B}from"../TechInsightsPage.esm.js";import{CheckStatusTile as H}from"../Tiles/CheckStatusTile.esm.js";import{FailingComponentsTable as P}from"./FailingComponentsTable.esm.js";import{MultiCheckStatusHistoryChart as V}from"./MultiCheckStatusHistoryChart.esm.js";import{getGroupName as W}from"./TeamComparison.esm.js";const q=({checksConnection:C})=>{const w=G(),s=$(),{options:S,isLoading:v,isError:x}=M(),[y]=b(),c=B(y.get("toggles")),{getSelectedFacetValues:d,facetFilters:m}=L(),[T,I]=u([]);k(()=>{I(m.Check)},[d,m]);const[l,N]=u([]);return k(()=>{N(m["Entity Owner"])},[d,m]),v?r(i,{item:!0,children:r(h,{variant:"h1",children:"Loading..."})},"checks"):x?r(i,{item:!0,children:r(h,{variant:"h3",children:"Error loading groups."})},"checks"):r(i,{item:!0,children:T?.map(t=>{const o=C?.edges.find(({node:e})=>e.id===t)?.node,g={id:o?.id??t,name:o?.name??t,description:o?.description??"None"},n=j(w),a=l??[],p=new Map;return a.forEach((e,E)=>{const F=n[E%n.length];p.set(e,F)}),f(i,{container:!0,spacing:2,direction:"row",children:[r(i,{item:!0,className:s.header,xs:12,children:f(h,{variant:"h4",children:["Check: ",o?.name??t]})}),c?.showGraphs&&r(i,{item:!0,className:`check-history-chart-${t}`,xs:12,children:r(V,{checkId:t,trackId:void 0,filters:l?.map(e=>O({owners:[e]})),states:void 0,colorMap:p})}),c?.showCards&&a.map(e=>r(i,{item:!0,className:s.gridItem,children:r(H,{existsWithinSoundcheck:!!o,titleOverride:`${W(e,S)}`,check:g,filter:e?{"relations.ownedBy":e}:void 0,color:p.get(e)??n[0]})},e)),c?.showTables&&r(i,{item:!0,className:s.gridItem,xs:12,children:r(P,{checkId:g.id,groupIds:a})},"failing-components-table")]})})},"checks")};export{q as CheckComparison};
2
- //# sourceMappingURL=CheckComparison.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as e,jsxs as p}from"react/jsx-runtime";import{useTheme as c,Typography as l}from"@material-ui/core";import{DateTime as k}from"luxon";import{ResponsiveContainer as h,LineChart as x,CartesianGrid as y,XAxis as u,YAxis as a,Tooltip as g,Line as f}from"recharts";import{compactNumberFormatter as b}from"../../../utils/formatters.esm.js";const L=({mergedHistory:n,colorMap:o,checkStatusHistories:s,max:d})=>{const t=c(),m={stroke:t.palette.background.paper,strokeWidth:1,r:5};return e(h,{height:250,debounce:1,children:p(x,{data:n??[],margin:{top:0,right:0,bottom:0,left:0},children:[e(y,{stroke:t.palette.divider,strokeWidth:1,horizontal:!0,vertical:!1}),e(u,{dataKey:"date",tickFormatter:r=>k.fromISO(r).toFormat("MMM d"),tickLine:!1,axisLine:!1}),e(a,{yAxisId:"percentage",domain:[0,100],axisLine:!1,tickLine:!1,tickFormatter:r=>`${r}%`,ticks:[0,25,50,75,100]}),e(a,{yAxisId:"count",orientation:"right",domain:[0,d],axisLine:!1,tickLine:!1,tickFormatter:r=>b(r)}),e(g,{contentStyle:{backgroundColor:t.palette.background.paper,color:t.palette.text.primary,border:`1px solid ${t.palette.divider}`},cursor:{stroke:t.palette.divider,strokeWidth:1}}),s?.map(r=>{if(r.filter){const i=r.filter["relations.ownedBy"][0];return e(f,{type:"monotone",dataKey:i,stroke:o?.get(i)??t.palette.primary.main,yAxisId:"count",strokeWidth:2,dot:!1,isAnimationActive:!1,activeDot:{fill:o?.get(i)??t.palette.primary.main,...m}})}return e(l,{children:e("span",{style:{color:t.palette.text.disabled},children:"No data available."})})})]})})};export{L as LineChartContainer};
2
- //# sourceMappingURL=LineChartContainer.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r,jsxs as y}from"react/jsx-runtime";import{useTheme as x,Typography as L}from"@material-ui/core";import{ResponsiveContainer as C,LineChart as b,CartesianGrid as v,XAxis as A,YAxis as h,Tooltip as I,Line as H}from"recharts";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useTrack as T}from"../../../hooks/tracks/useTrack.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useCertificationStatusHistories as $}from"../../../hooks/aggregations/useCertificationStatusHistories.esm.js";import{compactNumberFormatter as E}from"../../../utils/formatters.esm.js";import{getChartColors as F}from"../../Charts/chartUtils.esm.js";import{LoadingChart as S}from"../../Charts/LoadingChart.esm.js";function W(a){const e=[];for(const[p,i]of a.entries()){const m=i.certificationStatusHistory.history,l=p.filter["relations.ownedBy"][0];for(const n of m){let s=e.find(d=>d.name===n.date);s||(e.push({name:n.date}),s=e[e.length-1]),s[`${l}`]=(n.statusByLevel[0].passed/i.certificationStatusHistory.numberOfEntities*100).toFixed(2)}}return e}const w=({trackId:a,filters:e,colorMap:p})=>{const i=x(),m=e?.map(t=>({trackId:a,filter:t,numberOfDays:30}))??[],{data:l,isLoading:n,error:s}=$(m,!!a),d=m.map(t=>t.filter["relations.ownedBy"][0]),{data:f,isLoading:u,isError:g}=T(a);if(n||u)return r(S,{type:"line",numLines:3});if(s||g||!l||!f)return r(L,{children:r("span",{style:{color:i.palette.error.main},children:"Error loading track status histories."})});const o=F(i),k=W(l);return r(C,{width:"100%",height:"100%",minHeight:250,children:y(b,{data:k,height:250,margin:{top:0,right:0,bottom:0,left:0},children:[r(v,{stroke:i.palette.divider,strokeWidth:1,horizontal:!0,vertical:!1}),r(A,{dataKey:"name",tickLine:!1,axisLine:!1}),r(h,{yAxisId:"left",domain:[0,100],axisLine:!1,tickLine:!1,tickFormatter:t=>`${t}%`,ticks:[0,25,50,75,100]}),r(h,{yAxisId:"right",orientation:"right",dataKey:"totalEntities",axisLine:!1,tickLine:!1,tickFormatter:t=>E(t)}),r(I,{contentStyle:{backgroundColor:i.palette.background.paper,color:i.palette.text.primary,border:`1px solid ${i.palette.divider}`},cursor:{stroke:i.palette.divider,strokeWidth:1}}),d.map((t,c)=>r(H,{type:"monotone",dataKey:t,name:`Group: ${t.replace("group:default/","")} - Checks Passing %`,yAxisId:"left",stroke:p?.get(t)??o[c%o.length],strokeWidth:2,dot:!1,fill:p?.get(t)??o[c%o.length],isAnimationActive:!1,activeDot:{fill:o[c%o.length],stroke:i.palette.background.paper,strokeWidth:1,r:5}},`Group:${t} - Checks Passing %`))]})})};export{w as MultiTrackHistoryChart};
2
- //# sourceMappingURL=MultiTrackHistoryChart.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r,jsxs as d}from"react/jsx-runtime";import{Box as n,Typography as l,Grid as u}from"@material-ui/core";import{useMemo as h}from"react";import{useSearchParams as k}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import{useGetChecks as C}from"../../../hooks/checks/useGetChecks.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as N}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{Facet as f}from"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as T}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{getTechInsightsStyles as w}from"../styles.esm.js";import{parseTogglesString as x}from"../TechInsightsPage.esm.js";import{CheckComparison as y}from"./CheckComparison.esm.js";import{TrackComparison as G}from"./TrackComparison.esm.js";const S=(o,a)=>{const e=a.find(c=>c.ref===o);return e?e.name:o},b=()=>{const o=w(),[a]=k(),{data:e,isLoading:c}=N({}),{data:g}=C({}),{getSelectedFacetValues:t}=T(),i=h(()=>t(f.Track),[t]),s=h(()=>t(f.Check),[t]),m=h(()=>t(f.EntityOwner),[t]);if(c)return r(n,{className:o.content,children:r(l,{variant:"h1",children:"Loading..."})});if(!m||m.length===0||(!s||s.length===0)&&(!i||i.length===0))return r(n,{className:o.info,children:r(l,{className:o.info,children:"Select both a set of groups and some checks/tracks to see comparisons."})});const p=x(a.get("toggles"));return!p.showGraphs&&!p.showCards&&!p.showTables?r(n,{className:o.info,children:r(l,{className:o.info,children:"No graphs, cards or tables selected. Please select at least one from the 'Display' selection on the left."})}):r(n,{className:o.content,children:d(u,{container:!0,direction:"row",spacing:2,children:[s&&s.length>0&&g&&m&&r(y,{checksConnection:g}),i&&i.length>0&&e&&m&&r(G,{tracksConnection:e})]})})};export{b as TeamComparison,S as getGroupName};
2
- //# sourceMappingURL=TeamComparison.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r,jsxs as g}from"react/jsx-runtime";import{useTheme as N,Grid as i,Typography as l}from"@material-ui/core";import{useState as f,useEffect as u}from"react";import{useSearchParams as G}from"react-router-dom";import{useGroupOptions as M}from"../../../hooks/groups/useGroupOptions.esm.js";import{toFilter as O}from"../../../utils/helpers.esm.js";import{getChartColors as j}from"../../Charts/chartUtils.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as L}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{getTechInsightsStyles as R}from"../styles.esm.js";import{parseTogglesString as U}from"../TechInsightsPage.esm.js";import{TrackStatusTile as W}from"../Tiles/TrackStatusTile.esm.js";import{FailingComponentsTable as B}from"./FailingComponentsTable.esm.js";import{MultiTrackHistoryChart as H}from"./MultiTrackHistoryChart.esm.js";import{getGroupName as P}from"./TeamComparison.esm.js";const V=({tracksConnection:k})=>{const w=N(),n=R(),{options:T,isLoading:y,isError:E}=M(),[C]=G(),a=U(C.get("toggles")),{getSelectedFacetValues:d,facetFilters:m}=L(),[v,x]=f([]);u(()=>{x(m.Track)},[d,m]);const[h,S]=f([]);return u(()=>{S(m["Entity Owner"])},[d,m]),y?r(i,{item:!0,children:r(l,{variant:"h1",children:"Loading..."})},"tracks"):E?r(i,{item:!0,children:r(l,{variant:"h3",children:"Error loading groups."})},"tracks"):r(i,{item:!0,children:v?.map(o=>{const e=k?.edges.find(({node:t})=>t.id===o)?.node,b={id:e?.id??o,name:e?.name??o,description:e?.description??"None",isEditable:e?.isEditable??!1,levels:e?.levels??[],ownerEntityRef:e?.ownerEntityRef??"Unknown",type:e?.type??"Unknown"},s=j(w),p=h??[],c=new Map;return p.forEach((t,F)=>{const I=s[F%s.length];c.set(t,I)}),g(i,{container:!0,spacing:2,direction:"row",children:[r(i,{item:!0,className:n.header,xs:12,children:g(l,{variant:"h4",children:["Track: ",e?.name??o]})}),a?.showGraphs&&r(i,{item:!0,className:n.content,xs:12,children:r(H,{trackId:o,filters:h?.map(t=>O({owners:[t]})),colorMap:c})}),a?.showCards&&p.map(t=>r(i,{item:!0,className:n.gridItem,style:{minWidth:200},children:r(W,{existsWithinSoundcheck:!!e,titleOverride:`${P(t,T)}`,track:b,filter:t?{"relations.ownedBy":t}:void 0,color:c.get(t)??s[0]})},t)),a?.showTables&&r(i,{item:!0,className:n.gridItem,xs:12,children:r(B,{trackId:o,groupIds:p})},"failing-components-table")]})})},"tracks")};export{V as TrackComparison};
2
- //# sourceMappingURL=TrackComparison.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as t,jsxs as p}from"react/jsx-runtime";import{Grid as i,Typography as u}from"@material-ui/core";import{useState as T,useEffect as V}from"react";import{useSearchParams as b}from"react-router-dom";import C from"react-use/lib/useLocalStorage";import"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import{FilterProvider as S}from"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{getTechInsightsStyles as a}from"./styles.esm.js";import{TeamComparison as y}from"./TeamComparison/TeamComparison.esm.js";import{TechInsightsSidebar as x}from"./TechInsightsSidebar.esm.js";import{TechInsightsViewSelector as G}from"./TechInsightsViewSelector.esm.js";import{TrackCardGridBox as v}from"./TrackCardGridBox.esm.js";const I=({selectedView:e})=>{switch(e){case"Comparison":return t(y,{});default:return t(v,{})}},P=({selectedView:e,setSelectedView:r})=>{const o=a();return p(i,{item:!0,className:o.sidebar,style:{paddingBottom:4},children:[t(u,{variant:"body1",style:{marginBottom:4,fontWeight:"bold"},children:"Choose a view to explore:"}),t(G,{selectedView:e,setSelectedView:r})]})},h=e=>`${e.showCards},${e.showGraphs},${e.showTables}`,l=e=>{if(e)try{const[r,o,s]=e.split(",").map(n=>n==="true");return{showCards:r,showGraphs:o,showTables:s}}catch{}return{showCards:!0,showGraphs:!0,showTables:!0}},j=()=>{const e=a(),[r,o]=b(),[s,n]=C("soundcheck.techInsights.selectedView",void 0),[c,d]=T(()=>{const m=r.get("toggles");return l(m)||{showGraphs:!0,showCards:!0,showTables:!0}}),w=(m,g)=>{d(f=>({...f,[m]:g}))};return V(()=>{const m={...Object.fromEntries(r.entries()),toggles:h(c)};o(m)},[r,o,c]),t(S,{children:t(i,{container:!0,direction:"column",className:e.root,children:t(i,{item:!0,children:p(i,{container:!0,direction:"row",wrap:"nowrap",children:[p(i,{item:!0,style:{width:280,minWidth:280},children:[t(P,{selectedView:s,setSelectedView:n}),t(x,{selectedView:s,toggles:c,onToggleChange:w})]}),t(i,{item:!0,xs:!0,style:{overflow:"auto"},children:t(I,{selectedView:s})})]})})})})};export{j as TechInsightsPage,l as parseTogglesString,h as togglesToString};
2
- //# sourceMappingURL=TechInsightsPage.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as i,Fragment as n,jsx as o}from"react/jsx-runtime";import{Divider as t,Box as h,Typography as d,FormControlLabel as s,Switch as m}from"@material-ui/core";import{Facet as l}from"../TechHealth/Filters/types.esm.js";import{FacetFilter as p}from"../TechHealth/Filters/FacetFilter.esm.js";import"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"react";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import g from"./hierarchy/Hierarchy.esm.js";import C from"./persistence/FavoriteViews.esm.js";import{getTechInsightsStyles as w}from"./styles.esm.js";const T=({toggles:e,onToggleChange:a})=>i("div",{children:[o(d,{variant:"subtitle2",children:"Display"}),i("div",{children:[o(s,{control:o(m,{checked:e?.showCards,onChange:()=>a?.("showCards",!e?.showCards)}),label:"Cards"}),o(s,{control:o(m,{checked:e?.showGraphs,onChange:()=>a?.("showGraphs",!e?.showGraphs)}),label:"Graphs"}),o(s,{control:o(m,{checked:e.showTables,onChange:()=>a("showTables",!e.showTables)}),label:"Tables"})]})]}),b=({selectedView:e,toggles:a,onToggleChange:c})=>{const r=w();return i("div",{className:r.sidebar,style:{paddingTop:4},children:[e==="Comparison"&&i(n,{children:[o(t,{className:r.divider}),o(C,{onToggleChange:c})]}),i(h,{children:[o(t,{className:r.divider}),o(p,{facet:l.EntityOwner}),o(t,{className:r.divider}),o(g,{}),o(t,{className:r.divider})]}),e==="Comparison"&&i(n,{children:[o(p,{facet:l.Check}),o(t,{className:r.divider})]}),o(p,{facet:l.Track}),o(t,{className:r.divider}),e==="Comparison"&&o(T,{selectedView:e,toggles:a,onToggleChange:c})]})};export{b as TechInsightsSidebar};
2
- //# sourceMappingURL=TechInsightsSidebar.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as o,jsx as e}from"react/jsx-runtime";import{useRouteRef as R}from"@backstage/core-plugin-api";import{useTheme as T,Paper as b,Typography as a,Tooltip as w,Box as i,Grid as I}from"@material-ui/core";import P from"lodash";import{useCallback as j}from"react";import{useNavigate as B,useSearchParams as F}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useCheckStatus as G}from"../../../hooks/aggregations/useCheckStatus.esm.js";import{checkDetailsRouteRef as L}from"../../../routes.esm.js";import{CategoryBar as $}from"../../CategoryBar/CategoryBar.esm.js";import{LoadingIndicator as D}from"../../LoadingIndicator/LoadingIndicator.esm.js";import{parseTogglesString as M}from"../TechInsightsPage.esm.js";import{useStyles as O,getPercentageColor as U,formatValue as E,StatusItem as h,ColorSwatch as H}from"./TileUtils.esm.js";const V=({check:l,existsWithinSoundcheck:s,filter:k,titleOverride:x,color:g})=>{const t=T(),u=B(),f=R(L),[d]=F(),S=M(d.get("toggles")).showGraphs,{data:r,isLoading:N}=G({checkId:l.id,filter:k},!0),n=r?.numberOfEntities??0,y=r?.passed?r.passed/n*100:0,c=O(),v=j(()=>{s&&u(`${f({checkId:l.id})}?${d.toString()}`)},[s,u,f,l.id,d]),C=x??l.name;return N?o(b,{className:c.card,onClick:v,children:[e(a,{variant:"h6",children:C}),e(D,{})]}):e(w,{title:e(a,{children:"Cannot navigate to check details page: this check exists only in results, and is not present in any yaml files nor configured via the NCUI."}),disableHoverListener:s,children:o(b,{className:c.card,onClick:v,children:[e(a,{variant:"h6",children:C}),r?e(i,{className:c.content,children:o(i,{width:"100%",children:[o(i,{mb:2,children:[e(a,{variant:"caption",color:"textSecondary",display:"block",align:"left",children:"Current"}),o(a,{variant:"h1",style:{color:U(t,Math.floor(y))},children:[Math.floor(y),"%"]})]}),e(a,{variant:"caption",color:"textSecondary",display:"block",align:"left",children:"Check Summary"}),e(i,{className:c.categoryBarContainer,children:e($,{data:P.map(status,(m,p)=>({category:p,value:m})),valueFormatter:E,categories:["passed","failed","notReported"],categoryFormatter:m=>m.replace(/\b\w/g,p=>p.toUpperCase()),colors:[t.palette.success.main,t.palette.error.main,t.palette.text.disabled]})}),o(I,{container:!0,spacing:0,children:[e(h,{label:"Passing",value:r?.passed??0,total:n,color:t.palette.success.main}),e(h,{label:"Failing",value:r?.failed??0,total:n,color:t.palette.error.main}),e(h,{label:"Not Reported",value:r?.notReported??0,total:n,color:t.palette.text.disabled})]})]})}):e(i,{margin:"auto",children:e(a,{variant:"body2",children:"No Data"})}),e(i,{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"flex-end",style:{paddingTop:"1.5rem"},children:g&&S&&e(H,{color:g,style:{width:"80%",height:"1.5rem",borderRadius:4,border:"1px solid #ccc"}})})]})})};export{V as CheckStatusTile};
2
- //# sourceMappingURL=CheckStatusTile.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as l,jsx as e}from"react/jsx-runtime";import{useRouteRef as v}from"@backstage/core-plugin-api";import{useTheme as T,Paper as x,Typography as r,Tooltip as D,Box as i,Grid as $}from"@material-ui/core";import{useCallback as B}from"react";import{useSearchParams as L}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as P}from"../../../hooks/aggregations/useCertificationStatus.esm.js";import{trackDetailsRouteRef as j,campaignDetailsRouteRef as F}from"../../../routes.esm.js";import{CategoryBar as G}from"../../CategoryBar/CategoryBar.esm.js";import{LoadingIndicator as M}from"../../LoadingIndicator/LoadingIndicator.esm.js";import{parseTogglesString as O}from"../TechInsightsPage.esm.js";import{useStyles as U,getPercentageColor as _,formatValue as E,StatusItem as h,ColorSwatch as H}from"./TileUtils.esm.js";const V=({track:n,existsWithinSoundcheck:p,filter:N,titleOverride:C,color:f,campaignId:m})=>{const a=T(),g=v(j),u=v(F),[s]=L(),S=O(s.get("toggles")).showGraphs,{data:y,isLoading:w}=P({trackId:n.id,filter:N},!0),t=y?.certificationStatus.statusByLevel[0],c=y?.certificationStatus.numberOfEntities??0,o=t?t.passed/c*100:0,d=U(),b=B(()=>{m?window.open(`${u({campaignId:m})}?${s.toString()}`,"_blank"):p&&window.open(`${g({trackId:n.id})}?${s.toString()}`,"_blank")},[m,p,g,n.id,s,u]),k=C??n.name;return w?l(x,{className:d.card,onClick:b,children:[e(r,{variant:"h6",children:k}),e(M,{})]}):e(D,{title:e(r,{children:"Cannot navigate to track details page: this track exists only in results, and is not present in any yaml files nor configured via the NCUI."}),disableHoverListener:p,children:l(x,{className:d.card,onClick:b,children:[e(i,{display:"flex",flexDirection:"column",alignItems:"flex-start",mb:1,children:e(r,{variant:"h6",children:k})}),!t||isNaN(o)?e(i,{margin:"auto",children:e(r,{variant:"body2",children:"No Data"})}):e(i,{className:d.content,children:l(i,{width:"100%",children:[l(i,{mb:2,children:[e(r,{variant:"caption",color:"textSecondary",display:"block",align:"left",children:"Current"}),l(r,{variant:"h1",style:{color:_(a,Math.floor(o))},children:[!isNaN(o)&&`${Math.floor(o)}%`,isNaN(o)&&"No Data"]})]}),e(r,{variant:"caption",color:"textSecondary",display:"block",align:"left",children:"Check Summary"}),e(i,{className:d.categoryBarContainer,children:e(G,{data:t,valueFormatter:E,categories:["passed","failed","notReported"],categoryFormatter:R=>R.replace(/\b\w/g,I=>I.toUpperCase()),colors:[a.palette.success.main,a.palette.error.main,a.palette.text.disabled]})}),l($,{container:!0,spacing:0,children:[e(h,{label:"Passing",value:t.passed,total:c,color:a.palette.success.main}),e(h,{label:"Failing",value:t.failed,total:c,color:a.palette.error.main}),e(h,{label:"Not Reported",value:t.notReported,total:c,color:a.palette.text.disabled})]})]})}),t&&!isNaN(o)&&e(i,{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"flex-end",style:{paddingTop:"1.5rem"},children:f&&S&&e(H,{color:f,style:{width:"80%",height:"1.5rem",borderRadius:4,border:"1px solid #ccc"}})})]})})};export{V as TrackStatusTile};
2
- //# sourceMappingURL=TrackStatusTile.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as g,jsx as i}from"react/jsx-runtime";import{Typography as h,Grid as r}from"@material-ui/core";import{Skeleton as C}from"@material-ui/lab";import{useMemo as T}from"react";import{useSearchParams as G}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as I}from"../../hooks/campaigns/useGetCampaigns.esm.js";import{useGetAllTracks as v}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{GroupSelector as b}from"../GroupSelector/GroupSelector.esm.js";import{Facet as w}from"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as L}from"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{getTechInsightsStyles as S}from"./styles.esm.js";import{TrackStatusTile as x}from"./Tiles/TrackStatusTile.esm.js";const F=({tracksConnection:e,campaignsConnection:c})=>{const o=S(),[m]=G(),d=c?.edges.map(({node:t})=>t.id)||[],{data:f,isLoading:s}=I({ids:d},!0,!0),a=m.get("entityOwner"),u=a?a.split(","):void 0,{getSelectedFacetValues:y}=L(),n=T(()=>y(w.Track),[y]);if(s)return i(r,{item:!0,className:o.content,children:i(h,{variant:"body1",color:"textSecondary",children:"Loading campaigns..."})});const N=f?.edges.map(t=>t.node),p=e?.edges.filter(({node:t})=>t.draft?!1:n.length===0?!0:n.includes(t.id)),l=N?.filter(t=>t.archived?!1:t&&n.length===0?!0:n.includes(t.id));return(p===void 0||p.length===0)&&(l===void 0||l.length===0)?i(r,{item:!0,className:o.content,children:i(h,{variant:"body1",color:"textSecondary",children:"No tracks or campaigns found."})}):g(r,{container:!0,spacing:2,children:[p?.map(({node:t})=>i(r,{item:!0,className:o.gridItem,children:i(x,{track:t,filter:a?{"relations.ownedBy":u}:void 0,existsWithinSoundcheck:!0})},t.id)),l?.map(({id:t,track:k})=>i(r,{item:!0,className:o.gridItem,children:i(x,{track:k,campaignId:t,filter:a?{"relations.ownedBy":u}:void 0,existsWithinSoundcheck:!0})},k.id))]})},j=()=>{const e=S(),{data:c,isLoading:o}=v({types:["standard"]}),{data:m,isLoading:d}=v({types:["campaign"]});return o||d?g("div",{className:e.root,children:[g("div",{className:e.sidebar,children:[i(h,{variant:"caption",color:"textSecondary",children:"Group"}),i(b,{margin:"dense",searchParam:"owners"})]}),i("div",{className:e.content,children:i(r,{container:!0,spacing:2,children:[...Array(12)].map((f,s)=>i(r,{item:!0,className:e.gridItem,children:i(C,{variant:"rect",height:200})},s))})})]}):i(F,{tracksConnection:c,campaignsConnection:m})};export{j as TrackCardGrid};
2
- //# sourceMappingURL=TrackCardGrid.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Box as t}from"@material-ui/core";import{getTechInsightsStyles as m}from"./styles.esm.js";import{TrackCardGrid as c}from"./TrackCardGrid.esm.js";const e=()=>{const o=m();return r(t,{className:o.content,children:r(c,{})})};export{e as TrackCardGridBox};
2
- //# sourceMappingURL=TrackCardGridBox.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r}from"react/jsx-runtime";import{useRef as u}from"react";import{GroupNode as p}from"./GroupNode.esm.js";import{useHierarchyStyles as d}from"./Hierarchy.esm.js";function m({group:t,start:o,index:n,selected:i,onSelect:a,virtualizer:l}){const s=d(),e=u(null);return r("div",{ref:e,className:s.virtualRow,"data-index":n,"data-group-id":t.entityRef,style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${o}px)`},children:r(p,{group:t,selected:i,onSelect:a,onExpandChange:()=>{e.current&&l.measureElement(e.current)}})})}export{m as VirtualRow};
2
- //# sourceMappingURL=VirtualRow.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as a}from"@backstage/core-plugin-api";import{useQuery as n}from"@tanstack/react-query";import{soundcheckApiRef as c}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";const m=(t,i)=>{const o=a(c);return n([u.CertificationStatusHistories,t],async()=>{const e=new Map;return await Promise.all(t.map(async r=>{const s=await o.getCertificationStatusHistory(r);e.set(r,s)})),e},{enabled:i,staleTime:60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{m as useCertificationStatusHistories};
2
- //# sourceMappingURL=useCertificationStatusHistories.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as n}from"@backstage/core-plugin-api";import{useQuery as a}from"@tanstack/react-query";import{soundcheckApiRef as u}from"../../api.esm.js";import{QueryKeys as c}from"../graphqlKeys.esm.js";const p=e=>{const s=n(u);return a([c.CertificationStatuses,e],async()=>{const r=[];return!e.trackId||!e.groups||e.groups.length===0||e.trackId==="-"?[]:(await Promise.all(e.groups.map(t=>{const o=s.getCertificationStatus({trackId:e.trackId,filter:{"relations.ownedBy":t}});return o.then(i=>{r.push({...i,group:t})}),o})),r)},{staleTime:60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{p as useCertificationStatuses};
2
- //# sourceMappingURL=useCertificationStatuses.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as c}from"@backstage/core-plugin-api";import{useQuery as n}from"@tanstack/react-query";import{soundcheckApiRef as p}from"../../api.esm.js";import{QueryKeys as a}from"../graphqlKeys.esm.js";const h=e=>{const s=c(p);return n([a.CheckStatuses,e],async()=>{const t=[];return!e.groupIds||e.groupIds.length===0||await Promise.all(e.groupIds.map(r=>{const o=s.getCheckStatus({checkId:e.checkId,filter:{"relations.ownedBy":r}});return o.then(u=>{t.push({checkStatus:u,group:r})}),o})),t},{enabled:!0,staleTime:10*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{h as useCheckStatusByGroups};
2
- //# sourceMappingURL=useCheckStatusByGroups.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as c}from"@backstage/core-plugin-api";import{useQuery as a}from"@tanstack/react-query";import{soundcheckApiRef as l}from"../../api.esm.js";import{QueryKeys as m}from"../graphqlKeys.esm.js";const f=(e,i=!0)=>{const o=c(l);return a([m.CheckStatusHistoriesMultiFilter,e],async()=>{const t=[],u=e.map(async r=>{const s=o.getCheckStatusHistory(r);return s.then(n=>{t.push({...n,filter:r.filter})}),s});return await Promise.all(u),t},{enabled:i,staleTime:60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{f as useCheckStatusHistoriesMultiFilter};
2
- //# sourceMappingURL=useCheckStatusHistoriesMultiFilter.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as r}from"@backstage/core-plugin-api";import{useQuery as t}from"@tanstack/react-query";import{soundcheckApiRef as c}from"../../api.esm.js";function n(e){const o=r(c);return t(["soundcheck/rootGroups"],async()=>o.getRootGroups(),{enabled:e,staleTime:1e3*60*60,cacheTime:1e3*60*60*4,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1})}export{n as useRootGroups};
2
- //# sourceMappingURL=useRootGroups.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as i,identityApiRef as w}from"@backstage/core-plugin-api";import{useQueryClient as c,useMutation as l}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{QueryKeys as f}from"../graphqlKeys.esm.js";const p=()=>{const r=c(),o=i(m),n=i(w),{mutate:s,isLoading:a,error:u}=l(async e=>{const d=await n.getBackstageIdentity(),t=await o.deleteView({loggedInUser:d.userEntityRef,id:e});if(!t)throw new Error(`Failed to delete view with name ${e}.`);return t},{onSuccess:()=>r.invalidateQueries([f.SavedViews])});return{deleteView:s,isDeletingView:a,deletionError:u}};export{p as useDeleteView};
2
- //# sourceMappingURL=useDeleteView.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as i,identityApiRef as w}from"@backstage/core-plugin-api";import{useQueryClient as v,useMutation as y}from"@tanstack/react-query";import{soundcheckApiRef as f}from"../../api.esm.js";import{QueryKeys as g}from"../graphqlKeys.esm.js";const V=()=>{const r=v(),a=i(f),s=i(w),{mutate:o,isLoading:n,error:u}=y(async({data:m,name:e,description:c,type:d})=>{const p=await s.getBackstageIdentity(),t=await a.saveView({loggedInUser:p.userEntityRef,name:e,description:c,data:m,type:d});if(!t)throw new Error(`Failed to save view with name ${e}.`);return t},{onSuccess:()=>r.invalidateQueries([g.SavedViews])});return{saveView:o,isSavingView:n,saveError:u}};export{V as useSaveView};
2
- //# sourceMappingURL=useSaveView.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as e,identityApiRef as a}from"@backstage/core-plugin-api";import{useQuery as d}from"@tanstack/react-query";import{soundcheckApiRef as u}from"../../api.esm.js";import{QueryKeys as c}from"../graphqlKeys.esm.js";const m=t=>{const i=e(u),s=e(a),{data:o,isLoading:r}=d([c.SavedViews],async()=>{const n=await s.getBackstageIdentity();return i.getSavedViews({loggedInUser:n.userEntityRef,type:t})},{staleTime:10*60*1e3,refetchOnWindowFocus:!1});return{views:o,isLoading:r}};export{m as useSavedViews};
2
- //# sourceMappingURL=useSavedViews.esm.js.map