@spotify/backstage-plugin-soundcheck 0.21.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/dist/alpha/integrations.esm.js +1 -1
- package/dist/alpha/pages.esm.js +1 -1
- package/dist/alpha.d.ts +68 -23
- package/dist/api.esm.js +1 -1
- package/dist/blueprints/CampaignActionBlueprint.esm.js +2 -0
- package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
- package/dist/components/AccordionSection/AccordionSection.esm.js +2 -0
- package/dist/components/Alert/Alert.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignActionsContext.esm.js +2 -0
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/TemplateCategoryBUI.esm.js +1 -1
- package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
- package/dist/components/CollectorsPage/IntegrationLogoBUI.esm.js +1 -1
- package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
- package/dist/components/CreateNewTrackPage/CreateNewTrackPage.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
- package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +1 -1
- package/dist/components/FilterSidebar/util.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
- package/dist/components/GroupSelectorBUI/GroupSelectorBUI.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +1 -1
- package/dist/components/Menus/useCampaignActions.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPageBUI.esm.js +1 -1
- package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +1 -1
- package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js +1 -1
- package/dist/components/Stepper/Stepper.esm.js +1 -1
- package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
- package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
- package/dist/components/TimePeriodBar/TimePeriodBarBUI.esm.js +1 -1
- package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +1 -1
- package/dist/components/TrackBuilderPage/TrackBuilderPage.esm.js +1 -1
- package/dist/components/TrackBuilderPage/components/CheckItem/CheckItem.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/IntegrationTags/IntegrationTags.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/RunChecksStep/RunChecksStep.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/SelectProviderStep/SelectProviderStep.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/SelectTracksStep/SelectTracksStep.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/TrackAccordion/TrackAccordion.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/TrackBuilderStatus/TrackBuilderStatus.esm.js +2 -0
- package/dist/components/TrackBuilderPage/hooks/useTrackBuilderStatus.esm.js +2 -0
- package/dist/components/TrackBuilderPage/hooks/useTrackCheckExecutions.esm.js +2 -0
- package/dist/components/TrackBuilderPage/utils.esm.js +4 -0
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackHistoryChartBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
- package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +168 -85
- package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/tracks/useDeleteTrack.esm.js +1 -1
- package/dist/hooks/tracks/useOutOfBoxTracks.esm.js +2 -0
- package/dist/hooks/tracks/useSaveOutOfBoxTracks.esm.js +2 -0
- package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
- package/dist/index.d.ts +30 -2
- package/dist/index.esm.js +1 -1
- package/dist/routes.esm.js +1 -1
- package/package.json +24 -24
- package/dist/components/Badge/Badge.esm.js +0 -2
- package/dist/components/TrackBuilderPage/RunFirstCheckStep.esm.js +0 -2
- package/dist/components/TrackBuilderPage/SelectTracksStep.esm.js +0 -2
- package/dist/components/TrackBuilderPage/mockData.esm.js +0 -2
|
@@ -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
|
|
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
|
-
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
|
|
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
|
|
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<
|
|
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
|
|
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
|
package/dist/routes.esm.js
CHANGED
|
@@ -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"}),
|
|
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
|
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.
|
|
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.
|
|
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.
|
|
65
|
-
"@backstage/core-components": "^0.18.
|
|
66
|
-
"@backstage/core-plugin-api": "^1.12.
|
|
67
|
-
"@backstage/frontend-plugin-api": "^0.
|
|
68
|
-
"@backstage/plugin-catalog-react": "^
|
|
69
|
-
"@backstage/plugin-permission-react": "^0.4.
|
|
70
|
-
"@backstage/plugin-scaffolder-react": "^1.19.
|
|
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.
|
|
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.
|
|
88
|
-
"@spotify/backstage-plugin-soundcheck-common": "^0.
|
|
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",
|
|
@@ -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.
|
|
131
|
-
"@backstage/core-app-api": "^1.19.
|
|
132
|
-
"@backstage/dev-utils": "^1.1.
|
|
133
|
-
"@backstage/e2e-test-utils": "^0.1.
|
|
134
|
-
"@backstage/frontend-test-utils": "^0.
|
|
135
|
-
"@backstage/plugin-permission-common": "^0.9.
|
|
136
|
-
"@backstage/test-utils": "^1.7.
|
|
137
|
-
"@graphql-codegen/cli": "^
|
|
138
|
-
"@graphql-codegen/typescript": "^
|
|
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": "^
|
|
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.
|
|
144
|
-
"@spotify/backstage-plugin-soundcheck-node": "^0.
|
|
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{jsxs as b,jsx as d}from"react/jsx-runtime";const l={default:{bg:"var(--bui-bg-solid-disabled)",color:"var(--bui-fg-disabled)",border:"1px solid var(--bui-border-disabled)"},success:{bg:"var(--bui-bg-success)",color:"var(--bui-fg-success)",border:"1px solid var(--bui-border-success)"},warning:{bg:"var(--bui-bg-warning)",color:"var(--bui-fg-warning)",border:"1px solid var(--bui-border-warning)"}},n=({children:i,icon:r,variant:a="default"})=>{const{bg:s,color:e,border:o}=l[a];return b("span",{style:{display:"inline-flex",alignItems:"center",padding:"var(--bui-space-1) var(--bui-space-3)",borderRadius:"var(--bui-radius-full)",backgroundColor:s,color:e,border:o},children:[r&&d("span",{style:{marginRight:"var(--bui-space-1)"},children:r}),i]})};export{n as Badge};
|
|
2
|
-
//# sourceMappingURL=Badge.esm.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsxs as t,jsx as e}from"react/jsx-runtime";import{Box as r,Flex as R,Text as o,Card as b,CardBody as m}from"@backstage/ui";import{makeStyles as w}from"@material-ui/core";import{RiSparklingFill as P,RiCheckboxCircleLine as p,RiStackFill as L,RiTimeLine as h,RiCloseCircleLine as T,RiCircleLine as f,RiPlayCircleLine as z,RiPlayLine as B,RiArrowUpSLine as W,RiArrowDownSLine as F}from"@remixicon/react";import{useState as A}from"react";import{trackBuilderTracks as j}from"./mockData.esm.js";const D=w(()=>({container:{margin:"var(--bui-space-8) 0"},header:{textAlign:"center",marginBottom:"var(--bui-space-8)"},title:{fontSize:"2rem",fontWeight:700,margin:"0 0 var(--bui-space-2)"},savedBadge:{display:"inline-flex",alignItems:"center",gap:"var(--bui-space-2)",padding:"var(--bui-space-2) var(--bui-space-4)",borderRadius:"var(--bui-radius-full)",backgroundColor:"var(--bui-bg-success)",color:"var(--bui-fg-success)",fontSize:"0.875rem",fontWeight:500,marginBottom:"var(--bui-space-4)"},progressCard:{marginBottom:"var(--bui-space-6)"},progressContainer:{display:"flex",alignItems:"center",justifyContent:"center",gap:"var(--bui-space-4)",padding:"var(--bui-space-4)"},progressStep:{display:"flex",alignItems:"center",gap:"var(--bui-space-2)"},progressStepCompleted:{color:"var(--bui-fg-success)"},progressStepActive:{display:"flex",alignItems:"center",gap:"var(--bui-space-2)"},progressStepNumber:{width:24,height:24,borderRadius:"var(--bui-radius-full)",backgroundColor:"var(--bui-bg-solid-primary)",color:"var(--bui-fg-on-solid-primary)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"0.75rem",fontWeight:600},progressArrow:{color:"var(--bui-fg-disabled)",fontSize:"1.25rem"},statsGrid:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"var(--bui-space-4)",marginBottom:"var(--bui-space-4)"},statsGridSmall:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:"var(--bui-space-4)",marginBottom:"var(--bui-space-6)"},statCard:{padding:"var(--bui-space-6)",borderRadius:"var(--bui-radius-3)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"var(--bui-space-2)",minHeight:120},statCardSmall:{padding:"var(--bui-space-4)",borderRadius:"var(--bui-radius-3)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"var(--bui-space-2)",minHeight:100},statCardTracks:{backgroundColor:"rgba(29, 185, 84, 0.1)",border:"1px solid var(--bui-border-success)"},statCardPending:{backgroundColor:"rgba(255, 180, 0, 0.1)",border:"1px solid var(--bui-border-warning)"},statCardPassing:{backgroundColor:"rgba(29, 185, 84, 0.1)",border:"1px solid var(--bui-border-success)"},statCardFailing:{backgroundColor:"rgba(230, 70, 70, 0.1)",border:"1px solid var(--bui-border-danger)"},statCardNotRun:{backgroundColor:"var(--bui-bg-solid-disabled)",border:"1px solid var(--bui-border-disabled)"},statIcon:{width:24,height:24},statIconTracks:{color:"var(--bui-fg-success)"},statIconPending:{color:"var(--bui-fg-warning)"},statIconPassing:{color:"var(--bui-fg-success)"},statIconFailing:{color:"var(--bui-fg-danger)"},statIconNotRun:{color:"var(--bui-fg-disabled)"},statNumber:{fontSize:"2rem",fontWeight:700,lineHeight:1},statNumberSmall:{fontSize:"1.5rem",fontWeight:700,lineHeight:1},statNumberTracks:{color:"var(--bui-fg-success)"},statNumberPending:{color:"var(--bui-fg-warning)"},statNumberPassing:{color:"var(--bui-fg-success)"},statNumberFailing:{color:"var(--bui-fg-danger)"},statNumberNotRun:{color:"var(--bui-fg-disabled)"},statLabel:{fontSize:"0.875rem",fontWeight:500},statLabelTracks:{color:"var(--bui-fg-success)"},statLabelPending:{color:"var(--bui-fg-warning)"},statLabelPassing:{color:"var(--bui-fg-success)"},statLabelFailing:{color:"var(--bui-fg-danger)"},statLabelNotRun:{color:"var(--bui-fg-disabled)"},ctaCard:{backgroundColor:"var(--bui-bg-success)",border:"1px solid var(--bui-border-success)",padding:"var(--bui-space-5)",borderRadius:"var(--bui-radius-3)"},ctaContent:{display:"flex",alignItems:"center",gap:"var(--bui-space-4)"},ctaIcon:{width:40,height:40,borderRadius:"var(--bui-radius-full)",backgroundColor:"rgba(29, 185, 84, 0.3)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--bui-fg-success)"},ctaText:{flex:1},ctaTitle:{fontSize:"1rem",fontWeight:600,margin:0,marginBottom:"var(--bui-space-1)"},ctaDescription:{fontSize:"0.875rem",color:"var(--bui-fg-secondary)",margin:0},ctaHighlight:{color:"var(--bui-fg-success)",fontWeight:600},breakdownSection:{marginTop:"var(--bui-space-8)"},breakdownTitle:{fontSize:"0.75rem",fontWeight:600,letterSpacing:"0.1em",color:"var(--bui-fg-secondary)",marginBottom:"var(--bui-space-4)",textTransform:"uppercase"},trackCard:{marginBottom:"var(--bui-space-4)"},trackCardContent:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},trackInfo:{display:"flex",alignItems:"center",gap:"var(--bui-space-4)"},trackIconWrapper:{width:48,height:48,borderRadius:"var(--bui-radius-3)",backgroundColor:"var(--bui-bg-solid-disabled)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--bui-fg-success)"},trackDetails:{display:"flex",flexDirection:"column",gap:"var(--bui-space-1)"},trackName:{fontSize:"1rem",fontWeight:600,margin:0},trackStats:{display:"flex",alignItems:"center",gap:"var(--bui-space-3)",fontSize:"0.875rem"},trackStatNotRun:{color:"var(--bui-fg-secondary)"},trackStatPending:{color:"var(--bui-fg-warning)"},trackActions:{display:"flex",alignItems:"center",gap:"var(--bui-space-2)"},runCheckButton:{backgroundColor:"var(--bui-bg-solid-success)",color:"var(--bui-fg-on-solid-success)",border:"none",borderRadius:"var(--bui-radius-full)",padding:"var(--bui-space-2) var(--bui-space-4)",fontSize:"0.875rem",fontWeight:600,display:"flex",alignItems:"center",gap:"var(--bui-space-2)",cursor:"pointer","&:hover":{opacity:.9}},expandButton:{width:32,height:32,borderRadius:"var(--bui-radius-2)",border:"1px solid var(--bui-border)",backgroundColor:"transparent",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",color:"var(--bui-fg-secondary)","&:hover":{backgroundColor:"var(--bui-bg-hover)"}},checksList:{borderTop:"1px solid var(--bui-border)"},checkItem:{display:"flex",alignItems:"center",gap:"var(--bui-space-4)",padding:"var(--bui-space-4) var(--bui-space-5)",borderBottom:"1px solid var(--bui-border)",cursor:"pointer","&:last-child":{borderBottom:"none"},"&:hover":{backgroundColor:"var(--bui-bg-hover)"}},checkItemPending:{backgroundColor:"rgba(255, 180, 0, 0.1)","&:hover":{backgroundColor:"rgba(255, 180, 0, 0.15)"}},checkIconWrapper:{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center"},checkIconNotRun:{color:"var(--bui-fg-disabled)"},checkIconPending:{color:"var(--bui-fg-warning)"},checkDetails:{flex:1},checkName:{fontSize:"0.9375rem",fontWeight:500,margin:0,marginBottom:"var(--bui-space-1)"},checkNamePending:{color:"var(--bui-fg-warning)"},checkSubtitle:{fontSize:"0.8125rem",color:"var(--bui-fg-secondary)",margin:0},checkSubtitlePending:{color:"var(--bui-fg-warning)"}})),H=({selectedTrackIds:v})=>{const a=D(),[k,N]=A(()=>new Set),C=s=>{N(n=>{const i=new Set(n);return i.has(s)?i.delete(s):i.add(s),i})},u=j.filter(s=>v.includes(s.id)),S=u.length,d=u.flatMap(s=>s.checks),y=d.filter(s=>!s.isAvailable).length,I=d.filter(s=>s.status==="pass").length,$=d.filter(s=>s.status==="fail").length,x=d.filter(s=>s.isAvailable&&s.status!=="pass"&&s.status!=="fail").length;return t(r,{className:a.container,children:[t(R,{direction:"column",align:"center",justify:"center",className:a.header,children:[t(r,{className:a.savedBadge,children:[e(P,{size:16}),"Configuration Saved"]}),e("h1",{className:a.title,children:"Run Your First Check"}),e(o,{color:"secondary",children:"Select a track to run a check and see instant results."})]}),e(b,{className:a.progressCard,children:e(m,{children:t(r,{className:a.progressContainer,children:[t(r,{className:`${a.progressStep} ${a.progressStepCompleted}`,children:[e(p,{size:20}),e(o,{children:"Config saved"})]}),e(r,{className:a.progressArrow,children:"\u203A"}),t(r,{className:a.progressStepActive,children:[e(r,{className:a.progressStepNumber,children:"2"}),e(o,{style:{fontWeight:600},children:"Run first check"})]})]})})}),t(r,{className:a.statsGrid,children:[t(r,{className:`${a.statCard} ${a.statCardTracks}`,children:[e(L,{className:`${a.statIcon} ${a.statIconTracks}`}),e(r,{className:`${a.statNumber} ${a.statNumberTracks}`,children:S}),e(r,{className:`${a.statLabel} ${a.statLabelTracks}`,children:"Tracks"})]}),t(r,{className:`${a.statCard} ${a.statCardPending}`,children:[e(h,{className:`${a.statIcon} ${a.statIconPending}`}),e(r,{className:`${a.statNumber} ${a.statNumberPending}`,children:y}),e(r,{className:`${a.statLabel} ${a.statLabelPending}`,children:"Pending"})]})]}),t(r,{className:a.statsGridSmall,children:[t(r,{className:`${a.statCardSmall} ${a.statCardPassing}`,children:[e(p,{className:`${a.statIcon} ${a.statIconPassing}`}),e(r,{className:`${a.statNumberSmall} ${a.statNumberPassing}`,children:I}),e(r,{className:`${a.statLabel} ${a.statLabelPassing}`,children:"Passing"})]}),t(r,{className:`${a.statCardSmall} ${a.statCardFailing}`,children:[e(T,{className:`${a.statIcon} ${a.statIconFailing}`}),e(r,{className:`${a.statNumberSmall} ${a.statNumberFailing}`,children:$}),e(r,{className:`${a.statLabel} ${a.statLabelFailing}`,children:"Failing"})]}),t(r,{className:`${a.statCardSmall} ${a.statCardNotRun}`,children:[e(f,{className:`${a.statIcon} ${a.statIconNotRun}`}),e(r,{className:`${a.statNumberSmall} ${a.statNumberNotRun}`,children:x}),e(r,{className:`${a.statLabel} ${a.statLabelNotRun}`,children:"Not Run"})]})]}),e(r,{className:a.ctaCard,children:t(r,{className:a.ctaContent,children:[e(r,{className:a.ctaIcon,children:e(z,{size:24})}),t(r,{className:a.ctaText,children:[e("h4",{className:a.ctaTitle,children:"Ready to run your first check?"}),t("p",{className:a.ctaDescription,children:["Click"," ",e("span",{className:a.ctaHighlight,children:'"Run First Check"'})," on any track below to select an entity and get instant results."]})]})]})}),t(r,{className:a.breakdownSection,children:[e(r,{className:a.breakdownTitle,children:"Track Breakdown"}),u.map(s=>{const n=s.checks.filter(c=>c.isAvailable).length,i=s.checks.length-n,g=k.has(s.id);return e(b,{className:a.trackCard,children:t(m,{style:{padding:0},children:[t(r,{className:a.trackCardContent,style:{padding:"var(--bui-space-4) var(--bui-space-5)"},children:[t(r,{className:a.trackInfo,children:[e(r,{className:a.trackIconWrapper,children:s.icon}),t(r,{className:a.trackDetails,children:[e("h4",{className:a.trackName,children:s.name}),t(r,{className:a.trackStats,children:[n>0&&t(o,{className:a.trackStatNotRun,children:[n," not run"]}),i>0&&t(o,{className:a.trackStatPending,children:[i," pending"]})]})]})]}),t(r,{className:a.trackActions,children:[t("button",{type:"button",className:a.runCheckButton,children:[e(B,{size:16}),"Run First Check"]}),e("button",{type:"button",className:a.expandButton,onClick:()=>C(s.id),children:g?e(W,{size:20}):e(F,{size:20})})]})]}),g&&e(r,{className:a.checksList,children:s.checks.map(c=>{const l=!c.isAvailable;return t(r,{className:`${a.checkItem} ${l?a.checkItemPending:""}`,children:[e(r,{className:a.checkIconWrapper,children:l?e(h,{size:20,className:a.checkIconPending}):e(f,{size:20,className:a.checkIconNotRun})}),t(r,{className:a.checkDetails,children:[e("h5",{className:`${a.checkName} ${l?a.checkNamePending:""}`,children:c.name}),e("p",{className:`${a.checkSubtitle} ${l?a.checkSubtitlePending:""}`,children:l?`Awaiting ${c.connect} setup`:"Click to run this check"})]})]},c.id)})})]})},s.id)})]})]})};export{H as RunFirstCheckStep};
|
|
2
|
-
//# sourceMappingURL=RunFirstCheckStep.esm.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsxs as n,Fragment as v,jsx as e}from"react/jsx-runtime";import{Flex as r,Box as l,Text as d,Card as h,CardBody as u,Accordion as f,AccordionTrigger as C,Switch as y,AccordionPanel as N,Button as w}from"@backstage/ui";import{makeStyles as x}from"@material-ui/core";import{RiCircleLine as j}from"@remixicon/react";import{Alert as T}from"../Alert/Alert.esm.js";import{Badge as m}from"../Badge/Badge.esm.js";import{trackBuilderTracks as o}from"./mockData.esm.js";const S=x(()=>({container:{margin:"var(--bui-space-8) 0 var(--bui-space-8)"},header:{textAlign:"center"},pendingCircle:{width:"24px",height:"24px",background:"var(--bui-bg-warning)",borderRadius:"var(--bui-radius-full)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--bui-fg-warning)"},availableCircle:{width:"24px",height:"24px",background:"var(--bui-bg-solid-disabled)",borderRadius:"var(--bui-radius-full)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--bui-fg-disabled)"},stats:{background:"var(--bui-bg-solid-disabled)",borderRadius:"var(--bui-radius-3)",border:"1px solid var(--bui-border-disabled)",padding:"var(--bui-space-4)"},stat:{"&:not(:last-child)":{borderRight:"1px solid var(--bui-border-disabled)",padding:"0 var(--bui-space-6) 0 0"}},tracksNumber:{fontSize:"1.5rem",fontWeight:"bold",color:"var(--bui-fg-primary)"},pendingNumber:{fontSize:"1.5rem",fontWeight:"bold",color:"var(--bui-fg-warning)"},track:{width:"100%",marginRight:"var(--bui-space-3)"},trackName:{padding:0,margin:"0 0 var(--bui-space-2)"},checksPanel:{borderTop:"1px solid var(--bui-border)",margin:"var(--bui-space-4) 0 0",padding:"var(--bui-space-4) 0 0"},checkIcon:{width:24,height:24},trackIconColumn:{width:38,height:38,padding:"var(--bui-space-2)",backgroundColor:"var(--bui-border-disabled)",borderRadius:"var(--bui-radius-3)"},trackColumn:{width:"85%",marginLeft:"var(--bui-space-4)"},trackSwitchColumn:{width:"10%"},checkColumn:{width:"70%"},checkConnectColumn:{width:"25%"},trackCard:{marginBottom:"var(--bui-space-4)"}})),A=({selectedTrackIds:g,onToggleTrack:b})=>{const a=S(),p=o.length,k=o.flatMap(({checks:i})=>i).filter(({isAvailable:i})=>!i).length;return n(v,{children:[e(r,{direction:"column",align:"center",justify:"center",className:a.container,children:n(l,{className:a.header,children:[e("h2",{children:"Configure Your Tracks"}),e(d,{color:"secondary",children:"Enable the tracks you want and expand to see their checks. Connect integrations to unlock all features."})]})}),n(r,{align:"center",className:a.stats,children:[n(r,{gap:"0",align:"center",direction:"column",className:a.stat,children:[e(l,{className:a.tracksNumber,children:p}),e(l,{children:e(d,{variant:"body-small",children:"Tracks"})})]}),n(r,{gap:"0",align:"center",direction:"column",className:a.stat,children:[e(l,{className:a.pendingNumber,children:k}),e(l,{children:e(d,{variant:"body-small",children:"Pending"})})]})]}),e(T,{title:"Some checks need integrations",variant:"warning",children:"Expand tracks and connect the required integrations to enable all checks. You can save now and connect later."}),o.map(i=>{const t=i.checks.filter(({isAvailable:c})=>c).length,s=i.checks.length-t;return e(h,{className:a.trackCard,children:e(u,{children:n(f,{children:[e(C,{children:n(r,{align:"center",justify:"between",className:a.track,children:[e(r,{align:"center",justify:"center",className:a.trackIconColumn,children:i.icon}),n(r,{direction:"column",gap:"2",className:a.trackColumn,children:[n(l,{children:[e("h4",{className:a.trackName,children:i.name}),e(d,{variant:"body-small",color:"secondary",children:i.description})]}),n(r,{gap:"1",children:[t>0&&e(m,{variant:"default",children:n(d,{variant:"body-x-small",children:[t," not run"]})}),s>0&&e(m,{variant:"warning",children:n(d,{variant:"body-x-small",children:[s," pending"]})})]})]}),e(r,{align:"center",justify:"end",className:a.trackSwitchColumn,children:e(y,{isSelected:g.includes(i.id),onChange:c=>b(i.id,c)},i.id)})]})}),e(N,{children:n(r,{direction:"column",gap:"4",className:a.checksPanel,children:[e(l,{children:n(d,{variant:"body-small",children:[i.checks?.length," checks included."]})}),i.checks?.map(c=>e(h,{children:e(u,{children:n(r,{align:"center",justify:"between",children:[e(l,{className:[a.checkIcon,c.connect?a.pendingCircle:a.availableCircle].join(" "),children:e(j,{size:16})}),n(l,{className:a.checkColumn,children:[e("h4",{className:a.trackName,children:c.name}),e(d,{variant:"body-small",color:"secondary",children:c.description})]}),e(r,{justify:"end",className:a.checkConnectColumn,children:c.connect&&n(w,{size:"small",variant:"secondary",children:["Connect ",c.connect]})})]})})},c.id))]})})]})})},i.id)})]})};export{A as SelectTracksStep};
|
|
2
|
-
//# sourceMappingURL=SelectTracksStep.esm.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{RiStackFill as i,RiBuildingFill as a,RiShieldCheckFill as n,RiBardFill as s}from"@remixicon/react";const o=[{id:"1",name:"Foundational Quality",description:"Focuses on strengthening core engineering practices and infrastructure health.",icon:e(i,{}),checks:[{id:"1-1",name:"Code Review Coverage",description:"All PRs require at least one approval",isAvailable:!0},{id:"1-2",name:"Test Coverage Threshold",description:"Minimum 80% code coverage",connect:"SonarQube",isAvailable:!1},{id:"1-3",name:"Build Success Rate",description:"CI builds pass >95% of the time",isAvailable:!0},{id:"1-4",name:"Technical Debt Ratio",description:"Keep technical debt below 5%",connect:"SonarQube",isAvailable:!1}]},{id:"2",name:"Organizational Maturity",description:"Covers team processes, documentation, ownership, and long-term operational maturity.",icon:e(a,{}),checks:[{id:"2-1",name:"Service Ownership",description:"Every service has a designated owner",isAvailable:!0},{id:"2-2",name:"Documentation Coverage",description:"All services have up-to-date docs",isAvailable:!0},{id:"2-3",name:"Runbook Availability",description:"Operational runbooks exist for all services",connect:"Jira",isAvailable:!1},{id:"2-4",name:"Incident Response Plan",description:"Teams have documented incident procedures",isAvailable:!0}]},{id:"3",name:"Security Readiness",description:"Focuses on protection from vulnerabilities and following security best practices.",icon:e(n,{}),checks:[{id:"3-1",name:"Dependency Scanning",description:"Automated vulnerability scanning enabled",connect:"Snyk",isAvailable:!1},{id:"3-2",name:"Secret Detection",description:"No hardcoded secrets in codebase",isAvailable:!0},{id:"3-3",name:"SAST Analysis",description:"Static analysis runs on all PRs",connect:"SonarQube",isAvailable:!1},{id:"3-4",name:"Security Training",description:"Team completed security training",isAvailable:!0}]},{id:"4",name:"AI Readiness",description:"Preparation for using AI effectively across your development workflow.",icon:e(s,{}),checks:[{id:"4-1",name:"AI Code Assistant",description:"AI coding assistant configured",isAvailable:!0},{id:"4-2",name:"Data Quality Standards",description:"Training data meets quality standards",isAvailable:!0},{id:"4-3",name:"AI Usage Guidelines",description:"Team has AI usage policies",isAvailable:!0},{id:"4-4",name:"Model Governance",description:"AI model lifecycle management in place",isAvailable:!0}]}];export{o as trackBuilderTracks};
|
|
2
|
-
//# sourceMappingURL=mockData.esm.js.map
|