@spotify/backstage-plugin-soundcheck 0.14.3 → 0.14.5

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 (93) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/config.d.ts +14 -0
  3. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  4. package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
  5. package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +1 -1
  6. package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +1 -1
  7. package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +1 -1
  8. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  9. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  10. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  11. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  12. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  13. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  14. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  15. package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
  16. package/dist/components/CheckCard/CheckCard.esm.js +1 -1
  17. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  18. package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
  19. package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js +1 -1
  20. package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
  21. package/dist/components/CheckForm/utils/checkFormUtils.esm.js +1 -1
  22. package/dist/components/CheckPage/CheckDetailsView.esm.js +1 -1
  23. package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
  24. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
  25. package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
  26. package/dist/components/CollectorPage/Configurators/Common/CollectorOption.esm.js +1 -1
  27. package/dist/components/CollectorPage/Configurators/Common/CollectorSchedulingOptions.esm.js +2 -0
  28. package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
  29. package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
  30. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  31. package/dist/components/CollectorPage/Configurators/DataDog/utils.esm.js +1 -1
  32. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  33. package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
  34. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  35. package/dist/components/CollectorPage/Configurators/Gitlab/utils.esm.js +1 -1
  36. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  37. package/dist/components/CollectorPage/Configurators/Jira/utils.esm.js +1 -1
  38. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  39. package/dist/components/CollectorPage/Configurators/Kubernetes/utils.esm.js +1 -1
  40. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  41. package/dist/components/CollectorPage/Configurators/NewRelic/utils.esm.js +1 -1
  42. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  43. package/dist/components/CollectorPage/Configurators/PagerDuty/utils.esm.js +1 -1
  44. package/dist/components/CollectorPage/Configurators/SCM/FactCollectionConfig.esm.js +1 -1
  45. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  46. package/dist/components/CollectorPage/Configurators/SCM/utils.esm.js +1 -1
  47. package/dist/components/CollectorPage/Configurators/SCM/validation.esm.js +1 -1
  48. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  49. package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
  50. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  51. package/dist/components/LevelCard/LevelCard.esm.js +1 -1
  52. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  53. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  54. package/dist/components/OverviewPage/OverviewPageHeader.esm.js +1 -1
  55. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  56. package/dist/components/PassRateTable/PassRateTable.esm.js +2 -2
  57. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  58. package/dist/components/Router.esm.js +1 -1
  59. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  60. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  61. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  62. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  63. package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
  64. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  65. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  66. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  67. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  68. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  69. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  70. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  71. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  72. package/dist/components/TrackPage/FilterBar/util.esm.js +2 -0
  73. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  74. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  75. package/dist/hooks/certifications/useProgramOverviewForOwner.esm.js +1 -1
  76. package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
  77. package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
  78. package/dist/hooks/facets/useFacetsForOwner.esm.js +1 -1
  79. package/dist/hooks/graphqlKeys.esm.js +1 -1
  80. package/dist/hooks/groups/useAllGroups.esm.js +1 -1
  81. package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
  82. package/dist/hooks/tracks/useCreateTrack.esm.js +1 -1
  83. package/dist/hooks/tracks/useDeleteTrack.esm.js +1 -1
  84. package/dist/hooks/tracks/useUpdateTrack.esm.js +1 -1
  85. package/dist/utils/export.esm.js +3 -3
  86. package/dist/utils/getGroupFilterFromConfig.esm.js +2 -0
  87. package/package.json +21 -20
  88. package/dist/components/CampaignDetailsPage/CampaignDetailRow.esm.js +0 -2
  89. package/dist/components/CampaignDetailsPage/CampaignDetails.esm.js +0 -2
  90. package/dist/components/OverviewPage/CampaignBanner/CampaignArea.esm.js +0 -2
  91. package/dist/components/OverviewPage/CampaignBanner/CampaignBanner.esm.js +0 -2
  92. package/dist/components/OverviewPage/CampaignBanner/useCampaignBannerStyles.esm.js +0 -2
  93. package/dist/components/OverviewPage/CampaignBanner/utils.esm.js +0 -2
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.14.3",
4
+ "version": "0.14.5",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "homepage": "https://backstage.spotify.com",
7
7
  "main": "./dist/index.esm.js",
@@ -55,15 +55,16 @@
55
55
  "prepare": "yarn generate"
56
56
  },
57
57
  "dependencies": {
58
- "@backstage/catalog-client": "^1.8.0",
59
- "@backstage/catalog-model": "^1.7.1",
60
- "@backstage/core-compat-api": "^0.3.3",
61
- "@backstage/core-components": "^0.16.1",
62
- "@backstage/core-plugin-api": "^1.10.1",
63
- "@backstage/frontend-plugin-api": "^0.9.2",
64
- "@backstage/plugin-catalog-react": "^1.14.2",
65
- "@backstage/plugin-permission-react": "^0.4.28",
66
- "@backstage/plugin-scaffolder-react": "^1.14.1",
58
+ "@backstage/catalog-client": "^1.9.0",
59
+ "@backstage/catalog-model": "^1.7.2",
60
+ "@backstage/config": "^1.3.1",
61
+ "@backstage/core-compat-api": "^0.3.4",
62
+ "@backstage/core-components": "^0.16.2",
63
+ "@backstage/core-plugin-api": "^1.10.2",
64
+ "@backstage/frontend-plugin-api": "^0.9.3",
65
+ "@backstage/plugin-catalog-react": "^1.15.0",
66
+ "@backstage/plugin-permission-react": "^0.4.29",
67
+ "@backstage/plugin-scaffolder-react": "^1.14.2",
67
68
  "@backstage/types": "^1.2.0",
68
69
  "@date-io/luxon": "^1.0.0",
69
70
  "@hookform/resolvers": "^3.3.2",
@@ -72,8 +73,8 @@
72
73
  "@material-ui/lab": "4.0.0-alpha.61",
73
74
  "@material-ui/pickers": "3.3.11",
74
75
  "@mui/styles": "^5.14.7",
75
- "@spotify/backstage-plugin-core": "^0.8.3",
76
- "@spotify/backstage-plugin-soundcheck-common": "^0.14.3",
76
+ "@spotify/backstage-plugin-core": "^0.8.4",
77
+ "@spotify/backstage-plugin-soundcheck-common": "^0.14.5",
77
78
  "@tanstack/react-query": "^4.6.1",
78
79
  "@types/react-csv": "^1.1.6",
79
80
  "@uiw/react-md-editor": "3.20.10",
@@ -107,20 +108,20 @@
107
108
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
108
109
  },
109
110
  "devDependencies": {
110
- "@backstage/cli": "^0.29.2",
111
- "@backstage/core-app-api": "^1.15.2",
112
- "@backstage/dev-utils": "^1.1.4",
111
+ "@backstage/cli": "^0.29.4",
112
+ "@backstage/core-app-api": "^1.15.3",
113
+ "@backstage/dev-utils": "^1.1.5",
113
114
  "@backstage/e2e-test-utils": "^0.1.1",
114
- "@backstage/frontend-test-utils": "^0.2.3",
115
- "@backstage/test-utils": "^1.7.2",
115
+ "@backstage/frontend-test-utils": "^0.2.4",
116
+ "@backstage/test-utils": "^1.7.3",
116
117
  "@graphql-codegen/cli": "^5.0.0",
117
118
  "@graphql-codegen/typescript": "^4.0.0",
118
119
  "@graphql-codegen/typescript-graphql-request": "^6.0.0",
119
120
  "@graphql-codegen/typescript-operations": "^4.0.0",
120
121
  "@playwright/test": "^1.32.3",
121
- "@sp4b-dev/test-utils": "^0.0.9",
122
- "@spotify/backstage-plugin-core-common": "^0.6.3",
123
- "@spotify/backstage-plugin-soundcheck-node": "^0.8.4",
122
+ "@sp4b-dev/test-utils": "^0.0.10",
123
+ "@spotify/backstage-plugin-core-common": "^0.6.4",
124
+ "@spotify/backstage-plugin-soundcheck-node": "^0.8.6",
124
125
  "@testing-library/jest-dom": "^6.0.0",
125
126
  "@testing-library/react": "^14.0.0",
126
127
  "@testing-library/user-event": "^14.0.0",
@@ -1,2 +0,0 @@
1
- import"@material-ui/core";import{makeStyles as o}from"@material-ui/core/styles";import"react";o(t=>({detailRow:{marginBottom:t.spacing(1),"&:last-child":{marginBottom:0}},label:{fontWeight:"bold",color:t.palette.text.primary},value:{marginLeft:t.spacing(1)}}));
2
- //# sourceMappingURL=CampaignDetailRow.esm.js.map
@@ -1,2 +0,0 @@
1
- import"@backstage/plugin-catalog-react";import"@material-ui/core";import{makeStyles as o}from"@material-ui/core/styles";import"react";import"./CampaignDetailRow.esm.js";o(n=>({innerContainer:{padding:n.spacing(0,1),fontSize:n.typography.body2.fontSize},sectionLabel:{marginBottom:n.spacing(1)},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}}));const e=n=>new Date(n).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"});export{e as convertToReadableDate};
2
- //# sourceMappingURL=CampaignDetails.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useRouteRef as c}from"@backstage/core-plugin-api";import{makeStyles as s,Grid as l,Accordion as g,AccordionSummary as d,Typography as f,AccordionDetails as E}from"@material-ui/core";import u from"@material-ui/icons/ExpandMore";import e from"react";import{Link as y}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as h}from"../../../hooks/campaigns/useGetCampaigns.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{campaignsPageRouteRef as x}from"../../../routes.esm.js";import{OVERVIEW_CAMPAIGNS_COUNT as m}from"../OverviewPageContent.esm.js";import{CampaignBanner as C}from"./CampaignBanner.esm.js";const A=s(a=>({campaignsGrid:{margin:`0 0 ${a.spacing(3)}px`,border:`1px solid ${a.palette.divider}`},campaignsCard:{display:"flex",width:"100%",flexDirection:"column",padding:a.spacing(2),gap:a.spacing(2)},campaignsLink:{textAlign:"center",margin:`${a.spacing(1)}rem 0 ${a.spacing(1)}`}})),R=({ownerEntityRef:a})=>{const i=A(),n=c(x),{data:o}=h({orderAlphabetical:"default",searchByOwner:a,searchByStatus:"active"},!!a),t=o?.edges.map(r=>r.node),p=t?.slice(0,m);return e.createElement(e.Fragment,null,t&&t.length>0&&e.createElement(l,{item:!0,xs:12,className:i.campaignsGrid},e.createElement(g,{style:{boxShadow:"none"}},e.createElement(d,{expandIcon:e.createElement(u,null)},e.createElement(f,{variant:"h6"},"Campaigns")),e.createElement(E,null,e.createElement("div",{className:i.campaignsCard},p?.map(r=>e.createElement("div",{key:r.id},e.createElement(C,{campaign:r})))),t.length>m&&e.createElement(y,{to:n(),className:i.campaignsLink},"More Campaigns")))))};export{R as CampaignArea};
2
- //# sourceMappingURL=CampaignArea.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useRouteRef as u}from"@backstage/core-plugin-api";import{EntityRefLink as L}from"@backstage/plugin-catalog-react";import{Typography as t,Button as M,Menu as B,MenuItem as E}from"@material-ui/core";import O from"@material-ui/icons/ArrowDropDown";import z from"@material-ui/icons/ArrowDropUp";import e,{useState as $}from"react";import{useNavigate as j}from"react-router-dom";import{useEntityPassRateTrend as q}from"../../../hooks/aggregations/useEntityPassRateTrend.esm.js";import{campaignDetailsRouteRef as A,campaignEditRouteRef as F}from"../../../routes.esm.js";import{convertToReadableDate as p}from"../../CampaignDetailsPage/CampaignDetails.esm.js";import{Loading as Q}from"../../TechHealth/Loading/Loading.esm.js";import{useCampaignBannerStyles as V}from"./useCampaignBannerStyles.esm.js";import{calculateOverallPassPercent as W,calculatePassingEntities as G}from"./utils.esm.js";const H=l=>{if(l?.edges.length){const a=G(l);return e.createElement(t,{variant:"body2"},a,"/",l.edges.length)}return e.createElement(t,{variant:"body2"},"No progress found.")},J=({campaign:l})=>{const a=V(),v=u(A),f=u(F),m=j(),[n,c]=$(null),o=150,g=l.track.levels.flatMap(({checks:s})=>s.map(({id:T})=>T)),{data:N,isLoading:b,isError:y}=q({filter:{tracks:[{trackId:l.track.id}],checkIds:{included:g},numberOfDays:void 0}}),i=N?.individualEntityPassRates??{totalCount:0,edges:[],pageInfo:{hasNextPage:!1,hasPreviousPage:!1}},C=s=>{c(s.currentTarget)},R=()=>{c(null)},h=()=>{m(f({campaignId:l.id}))},x=()=>{m(v({campaignId:l.id}))};if(b)return e.createElement("div",{"data-testid":"loading-indicator"},e.createElement(Q,null));if(y)return e.createElement(t,{color:"error"},"Failed to load campaigns progress.");const k=i.edges.length?W(i):0,w=H(i),{name:P,description:r,ownerEntityRef:D,targetCompletionDate:I,startDate:S,supportChannel:d}=l;return e.createElement("div",{className:a.campaignCards},e.createElement("div",{className:a.campaignCard},e.createElement("div",{className:a.flexRow,style:{justifyContent:"space-between"}},e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"h5"},P),e.createElement(t,{variant:"body1",className:a.description},r.length>o?`${r.substring(0,o)}...`:r)),e.createElement("div",null,e.createElement(M,{variant:"text","aria-controls":"menu","aria-haspopup":"true",onClick:C},e.createElement("div",{className:a.actions},e.createElement("div",{className:a.actionsText},"Actions"),e.createElement("div",{className:a.flexRow},n?e.createElement(z,{fontSize:"small"}):e.createElement(O,{fontSize:"small"})))),e.createElement(B,{id:"campaign-menu",anchorEl:n,keepMounted:!0,open:!!n,onClose:R,classes:{list:a.menuList}},e.createElement(E,{onClick:x},"View"),e.createElement(E,{onClick:h},"Edit")))),e.createElement("div",{className:a.detailSection},e.createElement("div",{className:a.flexColumn},e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Owner:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},e.createElement(L,{className:a.ownerLink,entityRef:D}))),d&&e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Support Channel:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},d))),e.createElement("div",{className:a.flexColumn},e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Start Date:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},p(S))),e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Target Completion Date:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},p(I)))),e.createElement("div",{className:a.flexRow,style:{minWidth:"300px"}},e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"subtitle1",className:a.label},"Checks Passing"),e.createElement(t,{variant:"body2"},k,"%")),e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"subtitle1",className:a.label},"Entities Complete"),w)))))};export{J as CampaignBanner};
2
- //# sourceMappingURL=CampaignBanner.esm.js.map
@@ -1,2 +0,0 @@
1
- import{makeStyles as i}from"@material-ui/core";const a=i(e=>({campaignCards:{display:"flex",flexDirection:"column"},campaignCard:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`,padding:e.spacing(2),gap:e.spacing(5),borderRadius:e.shape.borderRadius},actions:{display:"flex",alignItems:"center",gap:e.spacing(1)},actionsText:{textTransform:"lowercase","&:first-letter":{textTransform:"uppercase"}},flexRow:{display:"flex",gap:e.spacing(1)},campaignDescription:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},progress:{display:"flex",alignItems:"center",gap:e.spacing(1),width:"90%"},flexColumn:{width:"100%",display:"flex",flexDirection:"column",gap:e.spacing(1)},detailSection:{display:"flex",flexDirection:"row",justifyContent:"space-between",gap:e.spacing(.5)},label:{fontWeight:"bold",color:e.palette.text.primary},value:{marginTop:"2px"},description:{maxWidth:"90%"},menuList:{backgroundColor:e.palette.background.paper},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}}));export{a as useCampaignBannerStyles};
2
- //# sourceMappingURL=useCampaignBannerStyles.esm.js.map
@@ -1,2 +0,0 @@
1
- const a=e=>{let s=0;return e?.edges.forEach(({node:t})=>{s+=t.snapshotPassRate}),Math.round(s/(e?.edges.length??1))},n=e=>e?.edges.filter(({node:s})=>s.snapshotPassRate===100).length;export{a as calculateOverallPassPercent,n as calculatePassingEntities};
2
- //# sourceMappingURL=utils.esm.js.map