@spotify/backstage-plugin-soundcheck 0.20.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 (91) hide show
  1. package/CHANGELOG.md +47 -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 +2 -0
  10. package/dist/components/CampaignPage/CampaignActionsContext.esm.js +2 -0
  11. package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
  12. package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
  13. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  14. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  15. package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
  16. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +1 -1
  17. package/dist/components/CheckPage/CheckPageBUI.esm.js +1 -1
  18. package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +1 -1
  19. package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +1 -1
  20. package/dist/components/CheckTemplatesPage/TemplateCategoryBUI.esm.js +1 -1
  21. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
  22. package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
  23. package/dist/components/CollectorPage/CollectorFactTableBUI.esm.js +1 -1
  24. package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
  25. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  26. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  27. package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
  28. package/dist/components/CollectorsPage/IntegrationLogoBUI.esm.js +1 -1
  29. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
  30. package/dist/components/CreateNewTrackPage/CreateNewTrackPage.esm.js +2 -0
  31. package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +1 -1
  32. package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
  33. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  34. package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +1 -1
  35. package/dist/components/FilterSidebar/util.esm.js +1 -1
  36. package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
  37. package/dist/components/GroupSelectorBUI/GroupSelectorBUI.esm.js +1 -1
  38. package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +1 -1
  39. package/dist/components/Loading/Loading.esm.js +2 -0
  40. package/dist/components/Menus/useCampaignActions.esm.js +1 -1
  41. package/dist/components/RoutingPage/RoutingPageBUI.esm.js +1 -1
  42. package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +1 -1
  43. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js +1 -1
  44. package/dist/components/Stepper/Stepper.esm.js +2 -0
  45. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
  46. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
  47. package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +1 -1
  48. package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
  49. package/dist/components/TimePeriodBar/TimePeriodBarBUI.esm.js +1 -1
  50. package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +1 -1
  51. package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
  52. package/dist/components/TrackBuilderPage/TrackBuilderPage.esm.js +2 -0
  53. package/dist/components/TrackBuilderPage/components/CheckItem/CheckItem.esm.js +2 -0
  54. package/dist/components/TrackBuilderPage/components/IntegrationTags/IntegrationTags.esm.js +2 -0
  55. package/dist/components/TrackBuilderPage/components/RunChecksStep/RunChecksStep.esm.js +2 -0
  56. package/dist/components/TrackBuilderPage/components/SelectProviderStep/SelectProviderStep.esm.js +2 -0
  57. package/dist/components/TrackBuilderPage/components/SelectTracksStep/SelectTracksStep.esm.js +2 -0
  58. package/dist/components/TrackBuilderPage/components/TrackAccordion/TrackAccordion.esm.js +2 -0
  59. package/dist/components/TrackBuilderPage/components/TrackBuilderStatus/TrackBuilderStatus.esm.js +2 -0
  60. package/dist/components/TrackBuilderPage/hooks/useTrackBuilderStatus.esm.js +2 -0
  61. package/dist/components/TrackBuilderPage/hooks/useTrackCheckExecutions.esm.js +2 -0
  62. package/dist/components/TrackBuilderPage/utils.esm.js +4 -0
  63. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
  64. package/dist/components/TrackPage/TrackHistoryChartBUI.esm.js +1 -1
  65. package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
  66. package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
  67. package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
  68. package/dist/graphql/generated/index.esm.js +163 -84
  69. package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
  70. package/dist/hooks/filters/useFilters.esm.js +1 -1
  71. package/dist/hooks/graphqlKeys.esm.js +1 -1
  72. package/dist/hooks/tracks/useDeleteTrack.esm.js +1 -1
  73. package/dist/hooks/tracks/useOutOfBoxTracks.esm.js +2 -0
  74. package/dist/hooks/tracks/useSaveOutOfBoxTracks.esm.js +2 -0
  75. package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
  76. package/dist/index.d.ts +30 -2
  77. package/dist/index.esm.js +1 -1
  78. package/dist/routes.esm.js +1 -1
  79. package/dist/utils/facetFilters/utils.esm.js +2 -0
  80. package/package.json +25 -25
  81. package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +0 -2
  82. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +0 -2
  83. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +0 -2
  84. package/dist/components/TechHealth/Filters/Filters.esm.js +0 -2
  85. package/dist/components/TechHealth/Filters/FiltersHeader.esm.js +0 -2
  86. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +0 -2
  87. package/dist/components/TechHealth/Filters/NumberOfDaysFilter.esm.js +0 -2
  88. package/dist/components/TechHealth/Filters/utils.esm.js +0 -2
  89. package/dist/components/TechHealth/Loading/Loading.esm.js +0 -2
  90. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +0 -2
  91. /package/dist/{components/TechHealth/Filters → utils/facetFilters}/types.esm.js +0 -0
@@ -1,2 +1,2 @@
1
- import{useApi as t,alertApiRef as s}from"@backstage/core-plugin-api";import{catalogApiRef as n}from"@backstage/plugin-catalog-react";import{useQuery as m}from"@tanstack/react-query";import{QueryKeys as f}from"../graphqlKeys.esm.js";const p=(e,i,r=!0)=>{const a=t(s),o=t(n);return m([f.GetEntityRefs,e],async()=>o.getEntities({filter:e,limit:i,fields:["kind","metadata.name","metadata.description","metadata.namespace"]}),{enabled:r,refetchOnWindowFocus:!1,onError:()=>{a.post({message:"Failed to load entities",severity:"error"})}})};export{p as useGetEntityRefs};
1
+ import{useApi as t,alertApiRef as s}from"@backstage/core-plugin-api";import{catalogApiRef as n}from"@backstage/plugin-catalog-react";import{useQuery as m}from"@tanstack/react-query";import{QueryKeys as f}from"../graphqlKeys.esm.js";const p=(e,i,r=!0)=>{const o=t(s),a=t(n);return m([f.GetEntityRefs,e],async()=>a.getEntities({filter:e,limit:i,fields:["kind","metadata.name","metadata.description","metadata.namespace"]}),{enabled:r,refetchOnWindowFocus:!1,onError:()=>{o.post({message:"Failed to load entities",severity:"error"})}})};export{p as useGetEntityRefs};
2
2
  //# sourceMappingURL=useGetEntityRefs.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as I,parseEntityRef as b}from"@backstage/catalog-model";import{useApi as G,configApiRef as M}from"@backstage/core-plugin-api";import{combineEntityFilterQueries as N,getGroupFilterFromConfig as j}from"@spotify/backstage-plugin-soundcheck-common";import l from"lodash/startCase";import{useMemo as w,useCallback as B}from"react";import{useSearchParams as Q}from"react-router-dom";import{CheckState as r}from"../../components/CheckPage/utils.esm.js";import{useGetEntityFacets as f}from"../catalog/useGetEntityFacets.esm.js";import{useGetEntityRefs as _}from"../catalog/useGetEntityRefs.esm.js";function x({entityFilterQuery:c,hasStatusFilters:E=!1,hasCertificationStatusFilters:d=!1}){const R=G(M),[o,u]=Q(),A=N({kind:["group"]},j(R)),{data:y}=_(A),g=w(()=>y?.items.map(e=>({label:e.metadata.title??e.metadata.name,value:I(e)}))??[],[y]),{data:h}=f("spec.lifecycle",c),F=h?.map(e=>({label:e,value:e}))??[],{data:L}=f("spec.type",c),$=L?.map(e=>({label:e,value:e}))??[],{data:k}=f("relations.partOf",c),v=k?.map(e=>({label:b(e).name,value:e}))??[],C=[r.PASSED,r.FAILED,r.WARNING,r.EXEMPT,r.NOT_APPLICABLE,r.ERROR].map(e=>({label:l(e.toLowerCase()),value:e})),P=[r.PASSED,r.FAILED,r.NOT_REPORTED].map(e=>{const t=l(e.toLowerCase());return{label:t,value:t}}),O=(e,t)=>{const s=["owners","systems"];if(e==="certificationStatuses")return`statuses: ${l(t.toLowerCase())}`;const a=e.replace(/s$/,"");return s.includes(e)?`${a}: ${b(t).name}`:e==="states"?`${a}: ${l(t.toLowerCase())}`:`${a}: ${t}`},m=w(()=>{const e=["numberOfDays","search","page","perPage","sort","sortDirection","level"],t={owners:new Set,lifecycles:new Set,types:new Set,systems:new Set,states:new Set,certificationStatuses:new Set};for(const[s,a]of o.entries())if(!e.includes(s)){const i=a.split(",").map(n=>n.trim()).filter(Boolean);t[s]=new Set(i)}return t},[o]),S=B((e,t)=>{const s=new URLSearchParams(o),a=Array.from(t);a.length>0?s.set(e,a.join(",")):s.delete(e),u(s,{replace:!0})},[o,u]),D=Object.entries(m).flatMap(([e,t])=>Array.from(t).map(s=>({label:O(e,s),value:`${e}:${s}`}))),T=e=>{e.forEach(t=>{if(typeof t!="string")return;const[s,a]=t.split(/:(.+)/),i=m[s];if(!i)return;const n=new Set(i);n.delete(a),S(s,n)})},p=[{key:"owners",label:"Owner",options:g},{key:"lifecycles",label:"Lifecycle",options:F},{key:"types",label:"Type",options:$},{key:"systems",label:"System",options:v}];return E&&p.push({key:"states",label:"States",options:C}),d&&p.push({key:"certificationStatuses",label:"Status",options:P}),{filters:p,selected:m,setSelected:S,selectedTags:D,onRemoveTag:T}}export{x as useFilters};
1
+ import{stringifyEntityRef as I,parseEntityRef as b}from"@backstage/catalog-model";import{useApi as G,configApiRef as M}from"@backstage/core-plugin-api";import{combineEntityFilterQueries as N,getGroupFilterFromConfig as j}from"@spotify/backstage-plugin-soundcheck-common";import l from"lodash/startCase";import{useMemo as w,useCallback as B}from"react";import{useSearchParams as Q}from"react-router-dom";import{CheckState as r}from"../../components/CheckPage/utils.esm.js";import{useGetEntityFacets as f}from"../catalog/useGetEntityFacets.esm.js";import{useGetEntityRefs as _}from"../catalog/useGetEntityRefs.esm.js";function x({entityFilterQuery:c,hasStatusFilters:E=!1,hasCertificationStatusFilters:d=!1}){const R=G(M),[o,u]=Q(),A=N({kind:["group"]},j(R)),{data:y}=_(A),g=w(()=>y?.items.map(e=>({label:e.metadata.title??e.metadata.name,value:I(e)}))??[],[y]),{data:h}=f("spec.lifecycle",c),F=h?.map(e=>({label:e,value:e}))??[],{data:L}=f("spec.type",c),$=L?.map(e=>({label:e,value:e}))??[],{data:k}=f("relations.partOf",c),v=k?.map(e=>({label:b(e).name,value:e}))??[],C=[r.PASSED,r.FAILED,r.WARNING,r.EXEMPT,r.NOT_APPLICABLE,r.ERROR].map(e=>({label:l(e.toLowerCase()),value:e})),P=[r.PASSED,r.FAILED,r.NOT_REPORTED].map(e=>{const t=l(e.toLowerCase());return{label:t,value:t}}),O=(e,t)=>{const s=["owners","systems"];if(e==="certificationStatuses")return`statuses: ${l(t.toLowerCase())}`;const a=e.replace(/s$/,"");return s.includes(e)?`${a}: ${b(t).name}`:e==="states"?`${a}: ${l(t.toLowerCase())}`:`${a}: ${t}`},m=w(()=>{const e=["numberOfDays","search","page","perPage","sort","sortDirection","level","section"],t={owners:new Set,lifecycles:new Set,types:new Set,systems:new Set,states:new Set,certificationStatuses:new Set};for(const[s,a]of o.entries())if(!e.includes(s)){const i=a.split(",").map(n=>n.trim()).filter(Boolean);t[s]=new Set(i)}return t},[o]),S=B((e,t)=>{const s=new URLSearchParams(o),a=Array.from(t);a.length>0?s.set(e,a.join(",")):s.delete(e),u(s,{replace:!0})},[o,u]),D=Object.entries(m).flatMap(([e,t])=>Array.from(t).map(s=>({label:O(e,s),value:`${e}:${s}`}))),T=e=>{e.forEach(t=>{if(typeof t!="string")return;const[s,a]=t.split(/:(.+)/),i=m[s];if(!i)return;const n=new Set(i);n.delete(a),S(s,n)})},p=[{key:"owners",label:"Owner",options:g},{key:"lifecycles",label:"Lifecycle",options:F},{key:"types",label:"Type",options:$},{key:"systems",label:"System",options:v}];return E&&p.push({key:"states",label:"States",options:C}),d&&p.push({key:"certificationStatuses",label:"Status",options:P}),{filters:p,selected:m,setSelected:S,selectedTags:D,onRemoveTag:T}}export{x as useFilters};
2
2
  //# sourceMappingURL=useFilters.esm.js.map
@@ -1,2 +1,2 @@
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.RecertifyTrack="soundcheck/recertifyTrack",e.UpdateCollectorConfig="soundcheck/updateCollectorConfig",e.DeleteCollectorConfig="soundcheck/deleteCollectorConfig",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.OutOfBoxTracks="soundcheck/outOfBoxTracks",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.RecertifyTrack="soundcheck/recertifyTrack",e.SaveOutOfBoxTracks="soundcheck/saveOutOfBoxTracks",e.UpdateCollectorConfig="soundcheck/updateCollectorConfig",e.DeleteCollectorConfig="soundcheck/deleteCollectorConfig",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{useApi as c}from"@backstage/core-plugin-api";import{useQueryClient as l,useMutation as u}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{MutationKeys as d,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as k}from"../useSoundcheckAlert.esm.js";const T="Error Deleting Track";function f(){const s=c(m),a=l(),{showAlert:n}=k(),i=async e=>{const r=await s.deleteTrack(e);if(!r)throw new Error(`Failed to delete track ${e}`);return r};return u([d.DeleteTrack],i,{onSuccess:()=>{const e=[t.GetAllTracks,t.GetOverallTrackPassRateTrends,t.GetIndividualTrackPassRateTrends,t.GetTrackOwners,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return Promise.all(e.map(r=>a.invalidateQueries({queryKey:[r]})))},onError:(e,r)=>{let o=`Failed to delete track ${r}`;e instanceof Error&&(o=e.message),n({severity:"error",title:T,message:o})}})}export{f as useDeleteTrack};
1
+ import{useApi as i}from"@backstage/core-plugin-api";import{useQueryClient as l,useMutation as u}from"@tanstack/react-query";import{soundcheckApiRef as k}from"../../api.esm.js";import{MutationKeys as m,QueryKeys as r}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as d}from"../useSoundcheckAlert.esm.js";const T="Error Deleting Track";function f(){const s=i(k),a=l(),{showAlert:n}=d(),c=async e=>{const t=await s.deleteTrack(e);if(!t)throw new Error(`Failed to delete track ${e}`);return t};return u([m.DeleteTrack],c,{onSuccess:()=>{const e=[r.GetAllTracks,r.GetOverallTrackPassRateTrends,r.GetIndividualTrackPassRateTrends,r.GetTrackOwners,r.GetFacetsForOwner,r.GetTrackOverviewForOwner,r.OutOfBoxTracks];return Promise.all(e.map(t=>a.invalidateQueries({queryKey:[t]})))},onError:(e,t)=>{let o=`Failed to delete track ${t}`;e instanceof Error&&(o=e.message),n({severity:"error",title:T,message:o})}})}export{f as useDeleteTrack};
2
2
  //# sourceMappingURL=useDeleteTrack.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{useApi as r}from"@backstage/core-plugin-api";import{useQuery as t}from"@tanstack/react-query";import{soundcheckApiRef as e}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";function s(){const o=r(e);return t([u.OutOfBoxTracks],async()=>o.getOutOfBoxTracks())}export{s as useOutOfBoxTracks};
2
+ //# sourceMappingURL=useOutOfBoxTracks.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{useApi as l,useAnalytics as d}from"@backstage/core-plugin-api";import{useQueryClient as f,useMutation as p}from"@tanstack/react-query";import{soundcheckApiRef as k}from"../../api.esm.js";import{MutationKeys as T,QueryKeys as r}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as m}from"../useSoundcheckAlert.esm.js";const C="Error Importing Tracks";function v(){const o=l(k),a=f(),{showAlert:u}=m(),t=d(),i=async c=>await o.saveOutOfBoxTracks(c);return p([T.SaveOutOfBoxTracks],i,{onSuccess:c=>{for(const e of c.tracksStatus.created)t.captureEvent("resource_action","Create Track",{attributes:{resourceType:"track",resourceAction:"create",resourceId:e.id,success:"true"}});for(const e of c.tracksStatus.failed)t.captureEvent("resource_action","Create Track",{attributes:{resourceType:"track",resourceAction:"create",resourceId:e.id,success:"false"}}),t.captureEvent("error","Create Track",{attributes:{errorMessage:e.message??`Failed to create a track with ID ${e.id}`}});for(const e of c.checksStatus.created)t.captureEvent("resource_action","Create Check",{attributes:{resourceType:"check",resourceAction:"create",resourceId:e.id,success:"true"}});for(const e of c.checksStatus.failed)t.captureEvent("resource_action","Create Check",{attributes:{resourceType:"check",resourceAction:"create",resourceId:e.id,success:"false"}}),t.captureEvent("error","Create Check",{attributes:{errorMessage:e.message??`Failed to create a check with ID ${e.id}`}});for(const e of c.collectorsStatus.created)t.captureEvent("resource_action","Update Collector Config",{attributes:{resourceType:"collector",resourceAction:"update",resourceId:e.id,success:"true"}});for(const e of c.collectorsStatus.failed)t.captureEvent("resource_action","Update Collector Config",{attributes:{resourceType:"collector",resourceAction:"update",resourceId:e.id,success:"false"}}),t.captureEvent("error","Update Collector Config",{attributes:{errorMessage:e.message??`Failed to update config for a collector with ID ${e.id}`}});const s=[r.GetAllTracks,r.GetOverallTrackPassRateTrends,r.GetIndividualTrackPassRateTrends,r.GetTrackOwners,r.GetFacetsForOwner,r.GetTrackOverviewForOwner,r.OutOfBoxTracks,r.GetChecks,r.GetCheckOwners,r.ExecutableChecks,r.GetCollectors,r.GetFactSchema];return Promise.all(s.map(e=>a.invalidateQueries({queryKey:[e]})))},onError:(c,s)=>{let e="Failed to use Spotify templates.";c instanceof Error&&(e=c.message),u({severity:"error",title:C,message:e});for(const n of s?.trackIds??[])t.captureEvent("resource_action","Create Track",{attributes:{resourceType:"track",resourceAction:"create",resourceId:n,success:"false"}});t.captureEvent("error","Use Spotify Templates",{attributes:{errorMessage:e}})}})}export{v as useSaveOutOfBoxTracks};
2
+ //# sourceMappingURL=useSaveOutOfBoxTracks.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as G}from"@backstage/catalog-model";import{useMemo as i}from"react";import{useGetCampaigns as T}from"../campaigns/useGetCampaigns.esm.js";import{useGetAllTracks as y}from"./useGetAllTracks.esm.js";import{useGetTracksApplicableEntityCount as E}from"./useGetTracksApplicableEntityCount.esm.js";function v(r){if(!r||r.trim()==="")return!1;try{return G(r).kind.toLowerCase()==="group"}catch{return!1}}function A(r,b={},h){const d=v(r)&&(h?.enabled??!0),{data:s,isLoading:p,error:c}=y(b,{enabled:d}),{data:o,isLoading:l,error:m}=T({},d),u=i(()=>o?.edges?new Set(o.edges.filter(({node:e})=>e.archived).map(({node:e})=>e.track.id)):new Set,[o]),a=i(()=>s?.edges?s.edges.map(({node:e})=>e).filter(e=>!u.has(e.id)).filter(e=>!e.draft).sort((e,n)=>e.id.localeCompare(n.id)):[],[s,u]),{data:t,isLoading:g,error:f}=E(r,{ids:a.map(e=>e.id)},{enabled:d&&a.length>0&&!p&&!l}),k=i(()=>t?new Map(t.map(e=>[e.id,e.applicableEntityCount])):new Map,[t]),C=i(()=>t?a.filter(e=>{const n=k.get(e.id);return n!==void 0&&n>0}):[],[a,k,t]),L=i(()=>p||l||g||!!r&&!t&&a.length>0,[p,l,g,r,t,a.length]),w=i(()=>c||m||f,[c,m,f]);return{tracks:C??[],campaigns:o,counts:t,isLoading:L,error:w,activeTrackCount:a?.length}}export{A as useTracksApplicableToGroup};
1
+ import{parseEntityRef as v}from"@backstage/catalog-model";import{useMemo as i}from"react";import{useGetCampaigns as y}from"../campaigns/useGetCampaigns.esm.js";import{useGetAllTracks as E}from"./useGetAllTracks.esm.js";import{useGetTracksApplicableEntityCount as G}from"./useGetTracksApplicableEntityCount.esm.js";function A(r){if(!r||r.trim()==="")return!1;try{return v(r).kind.toLowerCase()==="group"}catch{return!1}}function M(r,b={},C){const n=A(r)&&(C?.enabled??!0),{data:l,isLoading:o,error:m}=E(b,{enabled:n}),{data:d,isLoading:s,error:u}=y({},n),g=i(()=>d?.edges?new Set(d.edges.filter(({node:e})=>e.archived).map(({node:e})=>e.track.id)):new Set,[d]),t=i(()=>l?.edges?l.edges.map(({node:e})=>e).filter(e=>!g.has(e.id)).filter(e=>!e.draft).sort((e,p)=>e.id.localeCompare(p.id)):[],[l,g]),c=i(()=>n&&t.length>0&&!o&&!s,[n,t.length,o,s]),{data:a,isLoading:f,error:h}=G(r,{ids:t.map(e=>e.id)},{enabled:c}),k=i(()=>a?new Map(a.map(e=>[e.id,e.applicableEntityCount])):new Map,[a]),L=i(()=>a?t.filter(e=>{const p=k.get(e.id);return p!==void 0&&p>0}):[],[t,k,a]),T=i(()=>o||s||c&&f||!!r&&!a&&t.length>0,[o,s,c,f,r,a,t.length]),w=i(()=>m||u||h,[m,u,h]);return{tracks:L??[],campaigns:d,counts:a,isLoading:T,error:w,activeTrackCount:t?.length}}export{M as useTracksApplicableToGroup};
2
2
  //# sourceMappingURL=useTracksApplicableToGroup.esm.js.map
package/dist/index.d.ts CHANGED
@@ -85,7 +85,7 @@ declare const IntegrationPageBlueprint: _backstage_frontend_plugin_api.Extension
85
85
  path?: string;
86
86
  routeRef?: RouteRef;
87
87
  };
88
- 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<RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
88
+ 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<RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
89
89
  optional: true;
90
90
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
91
91
  inputs: {};
@@ -96,6 +96,34 @@ declare const IntegrationPageBlueprint: _backstage_frontend_plugin_api.Extension
96
96
  };
97
97
  }>;
98
98
 
99
+ /**
100
+ * Creates Soundcheck campaign action extensions that appear in the campaign
101
+ * detail page header menu.
102
+ *
103
+ * @remarks
104
+ * External plugins use this blueprint to register actions in the campaign
105
+ * page without Soundcheck having any knowledge of the registering plugin.
106
+ *
107
+ * @alpha
108
+ */
109
+ declare const CampaignActionBlueprint: _backstage_frontend_plugin_api.ExtensionBlueprint<{
110
+ kind: "campaign-action";
111
+ params: {
112
+ label: string;
113
+ id: string;
114
+ href: (campaignId: string) => string;
115
+ };
116
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.campaignAction.label", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.campaignAction.id", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(campaignId: string) => string, "soundcheck.campaignAction.href", {}>;
117
+ inputs: {};
118
+ config: {};
119
+ configInput: {};
120
+ dataRefs: {
121
+ label: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.campaignAction.label", {}>;
122
+ id: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.campaignAction.id", {}>;
123
+ href: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(campaignId: string) => string, "soundcheck.campaignAction.href", {}>;
124
+ };
125
+ }>;
126
+
99
127
  /**
100
128
  * React hook that fetches collector configurations by their IDs.
101
129
  *
@@ -153,4 +181,4 @@ declare function useUpdateCollectorConfig(): _tanstack_react_query.UseMutationRe
153
181
  config?: JsonObject;
154
182
  }, unknown>;
155
183
 
156
- export { EntitySoundcheckCard, type EntitySoundcheckCardProps, EntitySoundcheckContent, GroupSoundcheckContent, IntegrationPageBlueprint, type OverviewPageProps, SoundcheckOverviewPage, SoundcheckRoutingPage, soundcheckPlugin, useGetCollectors, useUpdateCollectorConfig };
184
+ export { CampaignActionBlueprint, EntitySoundcheckCard, type EntitySoundcheckCardProps, EntitySoundcheckContent, GroupSoundcheckContent, IntegrationPageBlueprint, type OverviewPageProps, SoundcheckOverviewPage, SoundcheckRoutingPage, soundcheckPlugin, useGetCollectors, useUpdateCollectorConfig };
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{EntitySoundcheckCard as d,EntitySoundcheckContent as g,GroupSoundcheckContent as a,SoundcheckOverviewPage as h,SoundcheckRoutingPage as k,soundcheckPlugin as l}from"./plugin.esm.js";import"react/jsx-runtime";import"./components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import"./components/EntitySoundcheckCard/Card.esm.js";import{IntegrationPageBlueprint as f}from"./blueprints/IntegrationPageBlueprint.esm.js";import{useGetCollectors as s}from"./hooks/collectors/useGetCollectors.esm.js";import{useUpdateCollectorConfig as P}from"./hooks/collectors/useUpdateCollectorConfig.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"./api.esm.js";import"./hooks/graphqlKeys.esm.js";import"./hooks/useSoundcheckAlert.esm.js";export{d as EntitySoundcheckCard,g as EntitySoundcheckContent,a as GroupSoundcheckContent,f as IntegrationPageBlueprint,h as SoundcheckOverviewPage,k as SoundcheckRoutingPage,l as soundcheckPlugin,s as useGetCollectors,P as useUpdateCollectorConfig};
1
+ import{EntitySoundcheckCard as a,EntitySoundcheckContent as d,GroupSoundcheckContent as g,SoundcheckOverviewPage as l,SoundcheckRoutingPage as C,soundcheckPlugin as f}from"./plugin.esm.js";import"react/jsx-runtime";import"./components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import"./components/EntitySoundcheckCard/Card.esm.js";import{IntegrationPageBlueprint as k}from"./blueprints/IntegrationPageBlueprint.esm.js";import{CampaignActionBlueprint as S}from"./blueprints/CampaignActionBlueprint.esm.js";import{useGetCollectors as P}from"./hooks/collectors/useGetCollectors.esm.js";import{useUpdateCollectorConfig as y}from"./hooks/collectors/useUpdateCollectorConfig.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"./api.esm.js";import"./hooks/graphqlKeys.esm.js";import"./hooks/useSoundcheckAlert.esm.js";export{S as CampaignActionBlueprint,a as EntitySoundcheckCard,d as EntitySoundcheckContent,g as GroupSoundcheckContent,k as IntegrationPageBlueprint,l as SoundcheckOverviewPage,C as SoundcheckRoutingPage,f as soundcheckPlugin,P as useGetCollectors,y as useUpdateCollectorConfig};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -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"}),o=e({id:"soundcheck-entity-playlist-track-redirect",parent:c,path:"/playlists/:playlistId/tracks/:trackId"}),d=e({id:"soundcheck-entity-playlist-track-redirect",parent:c,path:"/playlists/:playlistId/tracks/:trackId/checks/:checkId"}),t=a({id:"soundcheck"});e({id:"soundcheck-quickstart",parent:t,path:"/quickstart"});const p=e({id:"soundcheck-checks",parent:t,path:"/checks"}),k=e({id:"soundcheck-check-details",parent:t,path:"/checks/:checkId"}),h=e({id:"soundcheck-check-edit",parent:t,path:"/checks/:checkId/edit"}),u=e({id:"soundcheck-check-create",parent:t,path:"/checks/create"}),R=e({id:"soundcheck-check-templates",parent:t,path:"/checks/templates"}),g=e({id:"soundcheck-tracks",parent:t,path:"/tracks"}),l=e({id:"soundcheck-track-details",parent:t,path:"/tracks/:trackId"}),f=e({id:"soundcheck-track-edit",parent:t,path:"/tracks/:trackId/edit"}),m=e({id:"soundcheck-track-create",parent:t,path:"/tracks/create"}),I=e({id:"soundcheck-track-check-details",parent:t,path:"/tracks/:trackId/checks/:checkId"}),y=e({id:"soundcheck-campaigns",parent:t,path:"/campaigns"}),v=e({id:"soundcheck-campaign-details",parent:t,path:"/campaigns/:campaignId"}),w=e({id:"soundcheck-campaign-edit",parent:t,path:"/campaigns/:campaignId/edit"}),P=e({id:"soundcheck-campaign-create",parent:t,path:"/campaigns/create"}),x=e({id:"soundcheck-tech-insights",parent:t,path:"/tech-insights"}),E=e({id:"soundcheck-integrations-page",parent:t,path:"/integrations"}),C=e({id:"soundcheck-integration-details",parent:t,path:"/integrations/:integrationId"}),D=e({id:"soundcheck-integration-edit",parent:t,path:"/integrations/:integrationId/edit"});e({id:"soundcheck-tech-insights-track",parent:t,path:"/tech-insights/track"});const T=e({id:"soundcheck-track-overview",parent:t,path:"/tracks/:trackId/overview"}),q=e({id:"soundcheck-track-explorer",parent:t,path:"/tracks/:trackId/explorer"}),O=e({id:"soundcheck-campaign-overview",parent:t,path:"/campaigns/:campaignId/overview"}),b=e({id:"soundcheck-campaign-explorer",parent:t,path:"/campaigns/:campaignId/explorer"}),S=e({id:"soundcheck-overview",parent:t,path:"/overview"});export{P as campaignCreateRouteRef,v as campaignDetailsRouteRef,w as campaignEditRouteRef,b as campaignExplorerRouteRef,O as campaignOverviewRouteRef,y as campaignsPageRouteRef,s as certificationPlaylistRouteRef,d as certificationPlaylistTrackCheckRouteRef,o as certificationPlaylistTrackRouteRef,n as certificationRouteRef,r as certificationTrackRouteRef,u as checkCreateRouteRef,k as checkDetailsRouteRef,h as checkEditRouteRef,R as checkTemplatesRouteRef,p as checksPageRouteRef,c as entityRootRouteRef,i as groupRootRouteRef,C as integrationDetailsRouteRef,D as integrationEditRouteRef,E as integrationsPageRouteRef,S as overviewRouteRef,t as rootRouteRef,x as techInsightsPageRouteRef,I as trackCheckDetailsRouteRef,m as trackCreateRouteRef,l as trackDetailsRouteRef,f as trackEditRouteRef,q as trackExplorerRouteRef,T as trackOverviewRouteRef,g as tracksPageRouteRef};
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"}),d=e({id:"soundcheck-entity-playlist-redirect",parent:c,path:"/playlists/:playlistId"}),s=e({id:"soundcheck-entity-playlist-track-redirect",parent:c,path:"/playlists/:playlistId/tracks/:trackId"}),o=e({id:"soundcheck-entity-playlist-track-redirect",parent:c,path:"/playlists/:playlistId/tracks/:trackId/checks/:checkId"}),t=a({id:"soundcheck"});e({id:"soundcheck-quickstart",parent:t,path:"/quickstart"});const k=e({id:"soundcheck-checks",parent:t,path:"/checks"}),p=e({id:"soundcheck-check-details",parent:t,path:"/checks/:checkId"}),h=e({id:"soundcheck-check-edit",parent:t,path:"/checks/:checkId/edit"}),u=e({id:"soundcheck-check-create",parent:t,path:"/checks/create"}),R=e({id:"soundcheck-check-templates",parent:t,path:"/checks/templates"}),g=e({id:"soundcheck-tracks",parent:t,path:"/tracks"}),l=e({id:"soundcheck-track-details",parent:t,path:"/tracks/:trackId"}),f=e({id:"soundcheck-track-edit",parent:t,path:"/tracks/:trackId/edit"}),m=e({id:"soundcheck-track-create",parent:t,path:"/tracks/create"}),I=e({id:"soundcheck-new-track",parent:t,path:"/tracks/new"}),y=e({id:"soundcheck-track-builder",parent:t,path:"/tracks/builder"}),v=e({id:"soundcheck-track-check-details",parent:t,path:"/tracks/:trackId/checks/:checkId"}),w=e({id:"soundcheck-campaigns",parent:t,path:"/campaigns"}),P=e({id:"soundcheck-campaign-details",parent:t,path:"/campaigns/:campaignId"}),x=e({id:"soundcheck-campaign-edit",parent:t,path:"/campaigns/:campaignId/edit"}),E=e({id:"soundcheck-campaign-create",parent:t,path:"/campaigns/create"}),C=e({id:"soundcheck-tech-insights",parent:t,path:"/tech-insights"}),D=e({id:"soundcheck-integrations-page",parent:t,path:"/integrations"}),T=e({id:"soundcheck-integration-details",parent:t,path:"/integrations/:integrationId"}),b=e({id:"soundcheck-integration-edit",parent:t,path:"/integrations/:integrationId/edit"});e({id:"soundcheck-tech-insights-track",parent:t,path:"/tech-insights/track"});const q=e({id:"soundcheck-track-overview",parent:t,path:"/tracks/:trackId/overview"}),O=e({id:"soundcheck-track-explorer",parent:t,path:"/tracks/:trackId/explorer"}),B=e({id:"soundcheck-campaign-overview",parent:t,path:"/campaigns/:campaignId/overview"}),S=e({id:"soundcheck-campaign-explorer",parent:t,path:"/campaigns/:campaignId/explorer"}),j=e({id:"soundcheck-overview",parent:t,path:"/overview"});export{E as campaignCreateRouteRef,P as campaignDetailsRouteRef,x as campaignEditRouteRef,S as campaignExplorerRouteRef,B as campaignOverviewRouteRef,w as campaignsPageRouteRef,d as certificationPlaylistRouteRef,o as certificationPlaylistTrackCheckRouteRef,s as certificationPlaylistTrackRouteRef,n as certificationRouteRef,r as certificationTrackRouteRef,u as checkCreateRouteRef,p as checkDetailsRouteRef,h as checkEditRouteRef,R as checkTemplatesRouteRef,k as checksPageRouteRef,c as entityRootRouteRef,i as groupRootRouteRef,T as integrationDetailsRouteRef,b as integrationEditRouteRef,D as integrationsPageRouteRef,I as newTrackRouteRef,j as overviewRouteRef,t as rootRouteRef,C as techInsightsPageRouteRef,y as trackBuilderRouteRef,v as trackCheckDetailsRouteRef,m as trackCreateRouteRef,l as trackDetailsRouteRef,f as trackEditRouteRef,O as trackExplorerRouteRef,q as trackOverviewRouteRef,g as tracksPageRouteRef};
2
2
  //# sourceMappingURL=routes.esm.js.map
@@ -0,0 +1,2 @@
1
+ import"./types.esm.js";const r=30,e=2,N=90,n=_=>{if(_?.length){const t=parseInt(_,10);if(!isNaN(t)&&t>=e&&t<=N)return t}return r};export{r as DEFAULT_NUMBER_OF_DAYS,N as MAX_NUMBER_OF_DAYS,e as MIN_NUMBER_OF_DAYS,n as parseNumberOfDays};
2
+ //# sourceMappingURL=utils.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.20.0",
4
+ "version": "0.22.0",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "homepage": "https://backstage.spotify.com",
7
7
  "main": "./dist/index.esm.js",
@@ -58,18 +58,18 @@
58
58
  "prepare": "yarn generate"
59
59
  },
60
60
  "dependencies": {
61
- "@backstage/catalog-client": "^1.12.1",
61
+ "@backstage/catalog-client": "^1.13.0",
62
62
  "@backstage/catalog-model": "^1.7.6",
63
63
  "@backstage/config": "^1.3.6",
64
- "@backstage/core-compat-api": "^0.5.5",
65
- "@backstage/core-components": "^0.18.4",
66
- "@backstage/core-plugin-api": "^1.12.1",
67
- "@backstage/frontend-plugin-api": "^0.13.2",
68
- "@backstage/plugin-catalog-react": "^1.21.4",
69
- "@backstage/plugin-permission-react": "^0.4.39",
70
- "@backstage/plugin-scaffolder-react": "^1.19.4",
64
+ "@backstage/core-compat-api": "^0.5.8",
65
+ "@backstage/core-components": "^0.18.7",
66
+ "@backstage/core-plugin-api": "^1.12.3",
67
+ "@backstage/frontend-plugin-api": "^0.14.0",
68
+ "@backstage/plugin-catalog-react": "^2.0.0",
69
+ "@backstage/plugin-permission-react": "^0.4.40",
70
+ "@backstage/plugin-scaffolder-react": "^1.19.7",
71
71
  "@backstage/types": "^1.2.2",
72
- "@backstage/ui": "^0.10.0",
72
+ "@backstage/ui": "^0.12.0",
73
73
  "@date-io/luxon": "^1.0.0",
74
74
  "@hookform/resolvers": "^4.0.0",
75
75
  "@material-ui/core": "^4.12.2",
@@ -84,8 +84,8 @@
84
84
  "@nivo/sunburst": "^0.99.0",
85
85
  "@nivo/treemap": "^0.99.0",
86
86
  "@remixicon/react": "^4.6.0",
87
- "@spotify/backstage-plugin-core": "^0.8.13",
88
- "@spotify/backstage-plugin-soundcheck-common": "^0.19.4",
87
+ "@spotify/backstage-plugin-core": "^0.8.15",
88
+ "@spotify/backstage-plugin-soundcheck-common": "^0.21.0",
89
89
  "@tanstack/react-query": "^4.6.1",
90
90
  "@uiw/react-md-editor": "3.20.10",
91
91
  "classnames": "^2.3.2",
@@ -104,7 +104,7 @@
104
104
  "luxon": "^3.1.1",
105
105
  "pako": "^2.1.0",
106
106
  "prismjs": "^1.27.0",
107
- "react-aria-components": "^1.10.1",
107
+ "react-aria-components": "^1.13.0",
108
108
  "react-circular-progressbar": "^2.1.0",
109
109
  "react-confetti": "^6.1.0",
110
110
  "react-csv": "^2.2.2",
@@ -127,21 +127,21 @@
127
127
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
128
128
  },
129
129
  "devDependencies": {
130
- "@backstage/cli": "^0.35.0",
131
- "@backstage/core-app-api": "^1.19.3",
132
- "@backstage/dev-utils": "^1.1.18",
133
- "@backstage/e2e-test-utils": "^0.1.1",
134
- "@backstage/frontend-test-utils": "^0.4.2",
135
- "@backstage/plugin-permission-common": "^0.9.3",
136
- "@backstage/test-utils": "^1.7.14",
137
- "@graphql-codegen/cli": "^5.0.0",
138
- "@graphql-codegen/typescript": "^4.0.0",
130
+ "@backstage/cli": "^0.35.4",
131
+ "@backstage/core-app-api": "^1.19.5",
132
+ "@backstage/dev-utils": "^1.1.20",
133
+ "@backstage/e2e-test-utils": "^0.1.2",
134
+ "@backstage/frontend-test-utils": "^0.5.0",
135
+ "@backstage/plugin-permission-common": "^0.9.6",
136
+ "@backstage/test-utils": "^1.7.15",
137
+ "@graphql-codegen/cli": "^6.0.0",
138
+ "@graphql-codegen/typescript": "^5.0.0",
139
139
  "@graphql-codegen/typescript-graphql-request": "^6.0.0",
140
- "@graphql-codegen/typescript-operations": "^4.0.0",
140
+ "@graphql-codegen/typescript-operations": "^5.0.0",
141
141
  "@playwright/test": "^1.32.3",
142
142
  "@sp4b-dev/test-utils": "^0.0.13",
143
- "@spotify/backstage-plugin-core-common": "^0.6.12",
144
- "@spotify/backstage-plugin-soundcheck-node": "^0.10.4",
143
+ "@spotify/backstage-plugin-core-common": "^0.6.14",
144
+ "@spotify/backstage-plugin-soundcheck-node": "^0.11.0",
145
145
  "@testing-library/jest-dom": "^6.0.0",
146
146
  "@testing-library/react": "^14.0.0",
147
147
  "@testing-library/user-event": "^14.0.0",
@@ -1,2 +0,0 @@
1
- import"react/jsx-runtime";import{makeStyles as t}from"@material-ui/core";import"@material-ui/icons/ArrowDropDown";import"@material-ui/icons/ArrowDropUp";import"@material-ui/icons/HelpOutline";import"framer-motion";t(({palette:e})=>({header:{display:"flex",alignItems:"left",flexDirection:"row",cursor:"pointer",justifyContent:"space-between"},label:{display:"flex",alignItems:"center"},tooltipIcon:{display:"flex",alignItems:"center",justifyContent:"center",color:e.text.primary}}));
2
- //# sourceMappingURL=CollapsablePanel.esm.js.map
@@ -1,2 +0,0 @@
1
- import"react/jsx-runtime";import{makeStyles as i,alpha as r}from"@material-ui/core";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"lodash";import"react";import"../../CollapsablePanel/CollapsablePanel.esm.js";import"../../ListboxVirtualized/ListboxVirtualized.esm.js";import"./FilterProvider.esm.js";import"./types.esm.js";i(({palette:o,spacing:t})=>({chip:{maxWidth:"45%",textOverflow:"ellipsis",margin:t(.5,.5,.5,0),overflow:"hidden","& svg":{color:r(o.common.white,.7),"&:hover":{color:o.common.white}},backgroundColor:o.action.disabledBackground},autoCompleteInput:{"&& input":{margin:t(1,0,0,0),padding:`${t(0,1,1,1)} !important`,width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},"&& button":{"&:hover":{backgroundColor:"transparent"}}},autoComplete:{margin:t(.5,0,1,0)},selectionLabel:{lineHeight:"1em"}}));
2
- //# sourceMappingURL=FacetFilter.esm.js.map
@@ -1,2 +0,0 @@
1
- import"react/jsx-runtime";import"@backstage/catalog-model";import"@backstage/plugin-catalog-react";import"@material-ui/lab/Autocomplete";import{createContext as t}from"react";import"react-use/lib/useLocalStorage";import"../../../contexts/UserProvider.esm.js";import"lodash";import"react-router-dom";import"./types.esm.js";import"./FacetFilter.esm.js";import"./Filters.esm.js";import"./FiltersHeader.esm.js";import"./FiltersSection.esm.js";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.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"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{emptyFacetFilters as e,DEFAULT_NUMBER_OF_DAYS as r}from"./utils.esm.js";import"../Loading/TechHealthLoading.esm.js";t({facetOptionsLoading:!1,getFacetOptions:()=>[],getFacetOptionLabel:()=>"",facetFilters:e(),clearAllFilters:()=>{},getSelectedFacetValues:()=>[],setSelectedFacetValues:()=>{},setManySelectedFacetValues:()=>{},numberOfDays:r,setNumberOfDays:()=>{},filter:{},loggedInUser:"Unknown"});
2
- //# sourceMappingURL=FilterProvider.esm.js.map
@@ -1,2 +0,0 @@
1
- import"react/jsx-runtime";import{makeStyles as t}from"@material-ui/core";import"react-router-dom";import"./FacetFilter.esm.js";import"./FiltersHeader.esm.js";import"./FiltersSection.esm.js";import"./NumberOfDaysFilter.esm.js";import"./types.esm.js";t(r=>({filters:{maxWidth:"300px",width:"100%",backgroundColor:r.palette.background.paper}}));
2
- //# sourceMappingURL=Filters.esm.js.map
@@ -1,2 +0,0 @@
1
- import"react/jsx-runtime";import{makeStyles as t}from"@material-ui/core";import"./FilterProvider.esm.js";import"./types.esm.js";t(i=>({root:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"space-between"},clearButton:{lineHeight:i.typography.caption.lineHeight,fontSize:i.typography.caption.fontSize,padding:i.spacing(1),margin:i.spacing(2),marginBottom:i.spacing(2)-1},hidden:{visibility:"hidden"},headerText:{marginLeft:i.spacing(3)}}));
2
- //# sourceMappingURL=FiltersHeader.esm.js.map
@@ -1,2 +0,0 @@
1
- import"react/jsx-runtime";import{makeStyles as t}from"@material-ui/core";t(({palette:i,spacing:e})=>({root:{padding:({size:o,isHeader:r})=>r?0:o==="small"?e(1.5,2):e(2),borderBottom:`1px solid ${i.divider}`}}));
2
- //# sourceMappingURL=FiltersSection.esm.js.map
@@ -1,2 +0,0 @@
1
- import"react/jsx-runtime";import{makeStyles as t}from"@material-ui/core";import"react";import"./FilterProvider.esm.js";import"./types.esm.js";t(i=>({select:{width:"100%",margin:i.spacing(1,0)},chipPadding:{marginBottom:i.spacing(1)},chipSelected:{border:`1px solid ${i.palette.text.primary}`}}));
2
- //# sourceMappingURL=NumberOfDaysFilter.esm.js.map
@@ -1,2 +0,0 @@
1
- import{Facet as a}from"./types.esm.js";const r=30,s=2,_=90,n=e=>{if(e?.length){const t=parseInt(e,10);if(!isNaN(t)&&t>=s&&t<=_)return t}return r},F=e=>Object.fromEntries(Object.values(a).map(t=>[t,[]]));export{r as DEFAULT_NUMBER_OF_DAYS,_ as MAX_NUMBER_OF_DAYS,s as MIN_NUMBER_OF_DAYS,F as emptyFacetFilters,n as parseNumberOfDays};
2
- //# sourceMappingURL=utils.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as t,jsxs as o}from"react/jsx-runtime";import{makeStyles as l,Typography as r}from"@material-ui/core";import{motion as c}from"framer-motion";import{LoadingIndicator as m}from"../../LoadingIndicator/LoadingIndicator.esm.js";const s=l(()=>({container:{position:"relative",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:1,height:"100%"},textContainer:{position:"relative",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"}}));function d({title:i,subtitle:e,children:a}){const n=s();return t("div",{className:n.container,children:o("div",{className:n.textContainer,children:[t(m,{}),t("div",{style:{marginBottom:"1.1rem"}}),a??"Loading...",o(c.div,{animate:{y:0,opacity:1},initial:{y:100,opacity:0},children:[i&&t(r,{align:"center",variant:"h6",children:i}),e&&t(r,{align:"center",variant:"subtitle2",children:e})]})]})})}export{d as Loading};
2
- //# sourceMappingURL=Loading.esm.js.map
@@ -1,2 +0,0 @@
1
- import"react/jsx-runtime";import{makeStyles as r}from"@material-ui/core";import"react";import"@backstage/core-plugin-api";import"@backstage/plugin-catalog-react";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"./Loading.esm.js";r(o=>({container:{display:"flex",margin:"-24px",backgroundColor:o.palette.background.paper,borderTop:`1px solid ${o.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${o.palette.border}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:o.palette.background.default,height:"100%",maxWidth:"100%"},tabsPlaceholder:{height:"36.5px",backgroundColor:o.palette.background.paper}}));
2
- //# sourceMappingURL=TechHealthLoading.esm.js.map