@spotify/backstage-plugin-soundcheck 0.14.2 → 0.14.4

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 (73) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/alpha.d.ts +12 -12
  3. package/dist/components/AreaChart/AreaChart.esm.js +2 -0
  4. package/dist/components/AreaChart/ChartTooltip.esm.js +2 -0
  5. package/dist/components/AreaChart/Legend.esm.js +2 -0
  6. package/dist/components/AreaChart/LegendItem.esm.js +2 -0
  7. package/dist/components/AreaChart/utils.esm.js +2 -0
  8. package/dist/components/CacheConfig/utils.esm.js +1 -1
  9. package/dist/components/CampaignDetailsPage/CampaignDetailRow.esm.js +1 -1
  10. package/dist/components/CampaignDetailsPage/CampaignDetails.esm.js +1 -1
  11. package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +2 -0
  12. package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +2 -0
  13. package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +2 -0
  14. package/dist/components/CampaignInsightsPage/DaysRemainingTile.esm.js +2 -0
  15. package/dist/components/CampaignsPage/CampaignListPage/CampaignMetadata.esm.js +1 -1
  16. package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
  17. package/dist/components/CategoryBar/CategoryBar.esm.js +2 -0
  18. package/dist/components/CheckCard/CheckCard.esm.js +1 -1
  19. package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
  20. package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +1 -1
  21. package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
  22. package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
  23. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  24. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  25. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  26. package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +1 -1
  27. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  28. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  29. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesFactDetails.esm.js +2 -0
  30. package/dist/components/CollectorPage/Configurators/Kubernetes/types.esm.js +2 -0
  31. package/dist/components/CollectorPage/Configurators/Kubernetes/utils.esm.js +1 -1
  32. package/dist/components/CollectorPage/Configurators/Kubernetes/validation.esm.js +2 -0
  33. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  34. package/dist/components/CollectorPage/Configurators/PagerDuty/IncidentsFactDetailsComponent.esm.js +1 -1
  35. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  36. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  37. package/dist/components/CollectorPage/Configurators/SCM/utils.esm.js +1 -1
  38. package/dist/components/CollectorPage/Configurators/SonarQube/MeasuresFactDetailsInput.esm.js +1 -1
  39. package/dist/components/CollectorPage/Configurators/SonarQube/MetricsInput.esm.js +1 -1
  40. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  41. package/dist/components/DroppableInput/DroppableInput.esm.js +1 -1
  42. package/dist/components/Filter/FilterPreviewTable/EntityTableColumns.esm.js +2 -0
  43. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  44. package/dist/components/FormControlledTextField/FormControlledTextField.esm.js +2 -0
  45. package/dist/components/LevelCard/LevelCard.esm.js +1 -1
  46. package/dist/components/OverviewTable/resultsTableUtils.esm.js +1 -1
  47. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
  48. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  49. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  50. package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
  51. package/dist/components/TrackPage/FilterBar/util.esm.js +2 -0
  52. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  53. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  54. package/dist/components/TrackPage/TrackProgressCard.esm.js +1 -1
  55. package/dist/graphql/generated/index.esm.js +1 -0
  56. package/dist/hooks/campaigns/useArchiveCampaign.esm.js +1 -1
  57. package/dist/hooks/campaigns/useCreateCampaign.esm.js +1 -1
  58. package/dist/hooks/campaigns/useDeleteCampaign.esm.js +1 -1
  59. package/dist/hooks/campaigns/useGetCampaign.esm.js +1 -1
  60. package/dist/hooks/checks/useCreateCheck.esm.js +1 -1
  61. package/dist/hooks/checks/useExecuteCheck.esm.js +1 -1
  62. package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
  63. package/dist/hooks/collectors/useUpdateCollectorConfig.esm.js +1 -1
  64. package/dist/hooks/tracks/useCreateTrack.esm.js +1 -1
  65. package/dist/hooks/tracks/useDeleteTrack.esm.js +1 -1
  66. package/package.json +37 -26
  67. package/alpha/package.json +0 -7
  68. package/dist/components/CampaignDetailsPage/CampaignChecks.esm.js +0 -2
  69. package/dist/components/CampaignDetailsPage/CampaignDetailsPage.esm.js +0 -2
  70. package/dist/components/CampaignDetailsPage/CampaignMilestones.esm.js +0 -2
  71. package/dist/components/CampaignDetailsPage/CampaignProgress.esm.js +0 -2
  72. package/dist/components/CampaignDetailsPage/CampaignResultsTable.esm.js +0 -2
  73. package/dist/hooks/campaigns/useGetCampaignProgress.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.2",
4
+ "version": "0.14.4",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "homepage": "https://backstage.spotify.com",
7
7
  "main": "./dist/index.esm.js",
@@ -32,6 +32,16 @@
32
32
  },
33
33
  "./package.json": "./package.json"
34
34
  },
35
+ "typesVersions": {
36
+ "*": {
37
+ "index": [
38
+ "dist/index.d.ts"
39
+ ],
40
+ "alpha": [
41
+ "dist/alpha.d.ts"
42
+ ]
43
+ }
44
+ },
35
45
  "scripts": {
36
46
  "start": "backstage-cli package start",
37
47
  "build": "backstage-cli package build --minify",
@@ -45,16 +55,16 @@
45
55
  "prepare": "yarn generate"
46
56
  },
47
57
  "dependencies": {
48
- "@backstage/catalog-client": "^1.7.1",
49
- "@backstage/catalog-model": "^1.7.0",
50
- "@backstage/core-compat-api": "^0.3.1",
51
- "@backstage/core-components": "^0.15.1",
52
- "@backstage/core-plugin-api": "^1.10.0",
53
- "@backstage/frontend-plugin-api": "^0.9.0",
54
- "@backstage/plugin-catalog-react": "^1.14.0",
55
- "@backstage/plugin-permission-react": "^0.4.27",
56
- "@backstage/plugin-scaffolder-react": "^1.13.0",
57
- "@backstage/types": "^1.1.1",
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",
67
+ "@backstage/types": "^1.2.0",
58
68
  "@date-io/luxon": "^1.0.0",
59
69
  "@hookform/resolvers": "^3.3.2",
60
70
  "@material-ui/core": "^4.12.2",
@@ -62,16 +72,17 @@
62
72
  "@material-ui/lab": "4.0.0-alpha.61",
63
73
  "@material-ui/pickers": "3.3.11",
64
74
  "@mui/styles": "^5.14.7",
65
- "@spotify/backstage-plugin-core": "^0.8.2",
66
- "@spotify/backstage-plugin-soundcheck-common": "^0.14.2",
75
+ "@spotify/backstage-plugin-core": "^0.8.3",
76
+ "@spotify/backstage-plugin-soundcheck-common": "^0.14.4",
67
77
  "@tanstack/react-query": "^4.6.1",
68
78
  "@types/react-csv": "^1.1.6",
69
79
  "@uiw/react-md-editor": "3.20.10",
70
80
  "classnames": "^2.3.2",
71
81
  "cron-validate": "^1.4.5",
72
82
  "cronstrue": "^2.28.0",
83
+ "d3-scale-chromatic": "^3.0.0",
73
84
  "framer-motion": "^6.0.0",
74
- "git-url-parse": "^15.0.0",
85
+ "git-url-parse": "^16.0.0",
75
86
  "graphql-request": "6.1.0",
76
87
  "js-yaml": "^4.1.0",
77
88
  "lodash": "^4.17.21",
@@ -87,7 +98,7 @@
87
98
  "react-window": "^1.8.8",
88
99
  "recharts": "^2.8.0",
89
100
  "rehype-sanitize": "^6.0.0",
90
- "uuid": "^10.0.0",
101
+ "uuid": "^11.0.0",
91
102
  "zod": "^3.20.0"
92
103
  },
93
104
  "peerDependencies": {
@@ -96,27 +107,28 @@
96
107
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
97
108
  },
98
109
  "devDependencies": {
99
- "@backstage/cli": "^0.28.0",
100
- "@backstage/core-app-api": "^1.15.1",
101
- "@backstage/dev-utils": "^1.1.2",
110
+ "@backstage/cli": "^0.29.2",
111
+ "@backstage/core-app-api": "^1.15.2",
112
+ "@backstage/dev-utils": "^1.1.4",
102
113
  "@backstage/e2e-test-utils": "^0.1.1",
103
- "@backstage/frontend-test-utils": "^0.2.1",
104
- "@backstage/test-utils": "^1.7.0",
114
+ "@backstage/frontend-test-utils": "^0.2.3",
115
+ "@backstage/test-utils": "^1.7.2",
105
116
  "@graphql-codegen/cli": "^5.0.0",
106
117
  "@graphql-codegen/typescript": "^4.0.0",
107
118
  "@graphql-codegen/typescript-graphql-request": "^6.0.0",
108
119
  "@graphql-codegen/typescript-operations": "^4.0.0",
109
120
  "@playwright/test": "^1.32.3",
110
- "@sp4b-dev/test-utils": "^0.0.8",
111
- "@spotify/backstage-plugin-core-common": "^0.6.2",
112
- "@spotify/backstage-plugin-soundcheck-node": "^0.8.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.5",
113
124
  "@testing-library/jest-dom": "^6.0.0",
114
125
  "@testing-library/react": "^14.0.0",
115
126
  "@testing-library/user-event": "^14.0.0",
127
+ "@types/d3-scale-chromatic": "^3.0.0",
116
128
  "@types/git-url-parse": "^9.0.0",
117
129
  "@types/jest": "^29.4.0",
118
130
  "@types/luxon": "^3.0.1",
119
- "@types/node": "^20.0.0",
131
+ "@types/node": "^22.0.0",
120
132
  "@types/react-window": "^1.8.5",
121
133
  "cross-fetch": "^4.0.0",
122
134
  "msw": "^1.0.0"
@@ -124,8 +136,7 @@
124
136
  "files": [
125
137
  "dist",
126
138
  "!dist/**/*.map",
127
- "config.d.ts",
128
- "alpha"
139
+ "config.d.ts"
129
140
  ],
130
141
  "configSchema": "config.d.ts",
131
142
  "module": "./dist/index.esm.js"
@@ -1,7 +0,0 @@
1
- {
2
- "name": "@spotify/backstage-plugin-soundcheck__alpha",
3
- "version": "0.14.2",
4
- "main": "../dist/alpha.esm.js",
5
- "module": "../dist/alpha.esm.js",
6
- "types": "../dist/alpha.d.ts"
7
- }
@@ -1,2 +0,0 @@
1
- import{Typography as i}from"@material-ui/core";import{makeStyles as n}from"@material-ui/core/styles";import e from"react";import{DraggableChip as c}from"../DraggableChip/DraggableChip.esm.js";const l=n(t=>({sectionLabel:{marginBottom:t.spacing(2)},chipContainer:{display:"flex",flexDirection:"column",fontWeight:"bold",fontSize:t.typography.pxToRem(16),color:t.palette.grey[600],"& .Mui-disabled":{opacity:1}}})),m=({campaign:t})=>{const a=l(),o=t.track?.levels?.[0].checks??[];return e.createElement(e.Fragment,null,e.createElement(i,{color:"textPrimary",variant:"h5",className:a.sectionLabel},"Campaign Checks"),e.createElement("div",{className:a.chipContainer},o.length?o.map(r=>e.createElement(c,{key:r.id,chip:r,disabled:!0})):e.createElement(i,{variant:"body1",color:"textSecondary",style:{alignSelf:"center"}},"There are no checks for this campaign.")))};export{m as CampaignChecks};
2
- //# sourceMappingURL=CampaignChecks.esm.js.map
@@ -1,2 +0,0 @@
1
- import{Grid as n,Paper as m}from"@material-ui/core";import{makeStyles as c}from"@material-ui/core/styles";import e from"react";import{DndProvider as p}from"react-dnd";import{HTML5Backend as s}from"react-dnd-html5-backend";import{useParams as l}from"react-router-dom";import{useGetCampaign as g}from"../../hooks/campaigns/useGetCampaign.esm.js";import{EmptyCampaignState as d}from"../CampaignsPage/CampaignEmptyState.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as E}from"../SoundcheckHeader/useHeader.esm.js";import{Loading as f}from"../TechHealth/Loading/Loading.esm.js";import{CampaignChecks as S}from"./CampaignChecks.esm.js";import{CampaignDetails as u}from"./CampaignDetails.esm.js";import{CampaignMilestones as C}from"./CampaignMilestones.esm.js";import{CampaignProgress as x}from"./CampaignProgress.esm.js";const N=c(t=>({root:{flexGrow:1,padding:t.spacing(2)},progressSection:{minHeight:350,fontSize:t.typography.body1.fontSize},contentSection:{overflow:"auto",padding:t.spacing(2)}})),v=()=>{const t=N(),{campaignId:r}=l(),{data:i,isLoading:o}=g(r??""),a=i?.edges?.[0]?.node;return E({title:a?.name??"View Campaign",description:a?.description}),o?e.createElement("div",{"data-testid":"loading-indicator"},e.createElement(f,null)):a?e.createElement("div",null,e.createElement(p,{backend:s},e.createElement(n,{container:!0,className:t.root,spacing:2,direction:"column"},e.createElement(n,{item:!0,xs:12},e.createElement(m,{className:t.contentSection},e.createElement(u,{campaign:a}))),e.createElement(n,{item:!0,xs:6},e.createElement(m,{className:t.contentSection},e.createElement(S,{campaign:a}))),e.createElement(n,{item:!0,xs:12,className:t.progressSection},e.createElement(m,{className:t.contentSection},e.createElement(x,{campaign:a}))),e.createElement(n,{item:!0,xs:12},e.createElement(m,{className:t.contentSection},e.createElement(C,{campaign:a})))))):e.createElement(d,null)};export{v as CampaignDetailsPage};
2
- //# sourceMappingURL=CampaignDetailsPage.esm.js.map
@@ -1,2 +0,0 @@
1
- import{Typography as o,Grid as i,Divider as s}from"@material-ui/core";import{makeStyles as c}from"@material-ui/core/styles";import e from"react";import{CampaignDetailRow as l}from"./CampaignDetailRow.esm.js";const p=c(t=>({milestones:{flexGrow:1,padding:t.spacing(0,1)},sectionLabel:{marginBottom:t.spacing(2)},divider:{margin:`${t.spacing(2)}px 0`}})),g=({campaign:t})=>{const a=p(),n=t.milestones;return e.createElement(e.Fragment,null,e.createElement(o,{variant:"h5",className:a.sectionLabel,color:"textPrimary"},"Campaign Milestones"),e.createElement(i,{container:!0,className:a.milestones,spacing:2},n.length?n.map((r,m)=>e.createElement(i,{item:!0,container:!0,xs:12,key:m,spacing:2},e.createElement(i,{item:!0,xs:12},e.createElement(l,{label:"Name",value:r.name}),e.createElement(l,{label:"Description",value:r.description}),e.createElement(l,{label:"Goal pass rate",value:`${r.targetPercent}%`}),m<n.length-1&&e.createElement(s,{className:a.divider})))):e.createElement(o,{variant:"body1",color:"textSecondary"},"There are no milestones for this campaign.")))};export{g as CampaignMilestones};
2
- //# sourceMappingURL=CampaignMilestones.esm.js.map
@@ -1,2 +0,0 @@
1
- import{Typography as n}from"@material-ui/core";import{makeStyles as C}from"@material-ui/core/styles";import e from"react";import{useGetCampaignProgress as P}from"../../hooks/campaigns/useGetCampaignProgress.esm.js";import{OverviewTableSkeleton as f}from"../OverviewTable/OverviewTableSkeleton.esm.js";import"../Pagination/Pagination.esm.js";import{useCursorPagination as v,CursorPagination as b}from"../Pagination/CursorPagination.esm.js";import{CampaignResultsTable as S}from"./CampaignResultsTable.esm.js";const i=C(r=>({sectionLabel:{marginBottom:r.spacing(2)},paginationContainer:{margin:r.spacing(0,0,0,-4)}})),o=25,t=()=>{const r=i();return e.createElement(n,{variant:"h5",className:r.sectionLabel,color:"textPrimary"},"Campaign Progress")},k=({campaign:r})=>{const m=i(),{cursor:s,pageSize:l,...c}=v({defaultPageSize:o,label:"entitiesPerPage"}),{data:a,isLoading:g,isError:p}=P(r.id,l,s);if(g)return e.createElement(e.Fragment,null,e.createElement(t,null),e.createElement("div",{"data-testid":"progress-indicator"},e.createElement(f,{checkCount:1,levelCount:1})));if(p)return e.createElement(e.Fragment,null,e.createElement(t,null),e.createElement(n,{color:"error"},"Failed to load campaign progress."));if(!a)return e.createElement(e.Fragment,null,e.createElement(t,null),e.createElement(n,null,"No campaign progress available."));const{totalCount:u,endCursor:E,prevCursor:d}=a;return e.createElement(e.Fragment,null,e.createElement(t,null),e.createElement(S,{results:a,campaignTrackId:r.track.id}),e.createElement("div",{className:m.paginationContainer},e.createElement(b,{...c,totalCount:u,defaultPageSize:o,endCursor:E,prevCursor:d,pageSize:l,rowsPerPageOptions:[o],labelRowsPerPage:"Entities per page:"})))};export{k as CampaignProgress};
2
- //# sourceMappingURL=CampaignProgress.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useRouteRef as R}from"@backstage/core-plugin-api";import{entityRouteRef as k}from"@backstage/plugin-catalog-react";import{makeStyles as b,Grid as C}from"@material-ui/core";import m from"react";import{VariableSizeGrid as T}from"react-window";import{ResultState as w}from"../../graphql/generated/index.esm.js";import{cellRenderer as y,entityHeaderCell as u,checkTitleCell as S,checkResultCell as A}from"../OverviewTable/Cell/cellRenderer.esm.js";import{CellWidths as p,calculateTableHeight as H,calculateTableWidth as x,findLongestRefTitle as E,calculateHeightForRefTitle as N,RowHeights as W}from"../OverviewTable/resultsTableUtils.esm.js";const f=25,v=(o,r,n,c)=>{const a=[],t=E(r??[]);a.push({height:Math.min(N(t.length??1),125),cells:[u(""),...r.map(e=>u(e||""))]});for(const{check:e,results:l,totalCount:i,totalPassing:h}of o)a.push({height:W.check,cells:[S(e.name,{PASSED:h,FAILED:i-h}),...r.flatMap(s=>{if(s===void 0)return[];const g=l.find(({entityRef:d})=>d===s)?.result??w.NotApplicable;return[A(c,e,s,g,n)]})]});return a},D=b(o=>({table:{backgroundColor:o.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left"}})),F=({results:o,campaignTrackId:r})=>{const n=D(),c=R(k),{checks:a,entityRefs:t}=o,e=t.length>=f?t:[...t,...Array.from({length:f-t.length},()=>{})],l=v(a,e,c,r);return m.createElement(C,{item:!0,xs:12},m.createElement(T,{style:{overflow:"auto hidden"},className:n.table,columnCount:e.length+1,columnWidth:i=>i===0?p.trackTitle:p.checkResult,rowCount:l.length,rowHeight:i=>l[i].height,height:H(l)+25,width:x(e.length+25)},y(l)))};export{F as CampaignResultsTable};
2
- //# sourceMappingURL=CampaignResultsTable.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as s}from"@backstage/core-plugin-api";import{useQuery as i}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{QueryKeys as n}from"../graphqlKeys.esm.js";function p(e,r,o){const t=s(m);return i([n.GetCampaignProgress,e,r,o],async()=>t.getCampaignProgress(e,r,o),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}export{p as useGetCampaignProgress};
2
- //# sourceMappingURL=useGetCampaignProgress.esm.js.map