@spotify/backstage-plugin-soundcheck 0.8.2 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -4
- package/README.md +16 -3
- package/config.d.ts +9 -0
- package/dist/esm/EntitySoundcheckContent-d8bf249e.esm.js +2 -0
- package/dist/esm/OverviewPageContent-5557813a.esm.js +2 -0
- package/dist/esm/{RefetchingIndicator-e114bc04.esm.js → RefetchingIndicator-a31faa1d.esm.js} +2 -2
- package/dist/esm/index-293deb4d.esm.js +2 -0
- package/dist/esm/{index-e3458e3b.esm.js → index-920b177e.esm.js} +2 -2
- package/dist/esm/index-927a757e.esm.js +2 -0
- package/dist/esm/index-c3aebdd7.esm.js +429 -0
- package/dist/images/empty-state.svg +1 -0
- package/dist/images/no-results.svg +42 -0
- package/dist/index.esm.js +1 -1
- package/package.json +23 -17
- package/dist/esm/EntitySoundcheckContent-61aee236.esm.js +0 -2
- package/dist/esm/OverviewPageContent-31025374.esm.js +0 -2
- package/dist/esm/index-0208f72c.esm.js +0 -2
- package/dist/esm/index-7b347cd4.esm.js +0 -388
- package/dist/esm/index-7f1f7ff1.esm.js +0 -2
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import{createApiRef as qe,createRouteRef as I,createSubRouteRef as h,createPlugin as Ge,createApiFactory as Te,discoveryApiRef as xe,fetchApiRef as Ae,createRoutableExtension as b,createComponentExtension as Le,useApi as L,errorApiRef as Be,useRouteRef as V}from"@backstage/core-plugin-api";import{GraphQLClient as Me}from"graphql-request";import c from"graphql-tag";import n,{createContext as K,useState as S,useCallback as E,useContext as _,useRef as ze,useEffect as Ue,Fragment as He}from"react";import{QueryClient as We,QueryClientProvider as Qe,useQuery as J}from"@tanstack/react-query";import{memoize as je}from"lodash";import Ve from"@material-ui/core/styles/makeStyles";import{makeStyles as p,Typography as u,Modal as Ke,Box as X,Button as Y,Fade as _e,alpha as P,Tooltip as Je,withStyles as D,Divider as Xe}from"@material-ui/core";import{MarkdownContent as Z,Link as ee,InfoCard as Ye}from"@backstage/core-components";import{useEntity as te,humanizeEntityRef as ae}from"@backstage/plugin-catalog-react";import{useAutoUpdatingRelativeTime as Ze,SpotifyLicenseBanner as et}from"@spotify/backstage-plugin-core";import{stringifyEntityRef as re,parseEntityRef as ne}from"@backstage/catalog-model";import{Alert as tt,Skeleton as y}from"@material-ui/lab";import{Link as at}from"react-router-dom";import F from"classnames";import rt from"@material-ui/icons/Schedule";import{DateTime as ie}from"luxon";import nt from"@material-ui/icons/Check";import it from"@material-ui/icons/Close";import st from"@material-ui/icons/RemoveCircleOutline";import ct from"@material-ui/icons/HelpOutline";import ot from"../images/empty-state.svg";var se=(e=>(e.Medal="MEDAL",e))(se||{}),f=(e=>(e.Failed="FAILED",e.NotApplicable="NOT_APPLICABLE",e.NotReported="NOT_REPORTED",e.Passed="PASSED",e))(f||{});const lt=c`
|
|
2
|
+
fragment CertificationSummary on Certification {
|
|
3
|
+
entityRef
|
|
4
|
+
program {
|
|
5
|
+
id
|
|
6
|
+
name
|
|
7
|
+
}
|
|
8
|
+
highestLevel {
|
|
9
|
+
ordinal
|
|
10
|
+
name
|
|
11
|
+
description
|
|
12
|
+
badge {
|
|
13
|
+
... on BadgeVariantMedal {
|
|
14
|
+
variant
|
|
15
|
+
options {
|
|
16
|
+
level
|
|
17
|
+
color
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
`,dt=c`
|
|
24
|
+
fragment check on Check {
|
|
25
|
+
id
|
|
26
|
+
name
|
|
27
|
+
description
|
|
28
|
+
}
|
|
29
|
+
`,mt=c`
|
|
30
|
+
fragment level on Level {
|
|
31
|
+
ordinal
|
|
32
|
+
name
|
|
33
|
+
description
|
|
34
|
+
checks {
|
|
35
|
+
...check
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
${dt}`,ut=c`
|
|
39
|
+
fragment CheckResultSummary on CheckResult {
|
|
40
|
+
id
|
|
41
|
+
name
|
|
42
|
+
result
|
|
43
|
+
timestamp
|
|
44
|
+
}
|
|
45
|
+
`,pt=c`
|
|
46
|
+
fragment LevelResultDetails on LevelResult {
|
|
47
|
+
ordinal
|
|
48
|
+
name
|
|
49
|
+
description
|
|
50
|
+
badge {
|
|
51
|
+
... on BadgeVariantMedal {
|
|
52
|
+
variant
|
|
53
|
+
options {
|
|
54
|
+
level
|
|
55
|
+
color
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
certified
|
|
60
|
+
checks {
|
|
61
|
+
...CheckResultSummary
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
${ut}`,gt=c`
|
|
65
|
+
fragment CheckResultDetails on CheckResult {
|
|
66
|
+
id
|
|
67
|
+
name
|
|
68
|
+
description
|
|
69
|
+
result
|
|
70
|
+
timestamp
|
|
71
|
+
notes
|
|
72
|
+
}
|
|
73
|
+
`,ht=c`
|
|
74
|
+
fragment OverviewLevelResult on OverviewLevelResult {
|
|
75
|
+
ordinal
|
|
76
|
+
name
|
|
77
|
+
checks {
|
|
78
|
+
check {
|
|
79
|
+
id
|
|
80
|
+
name
|
|
81
|
+
description
|
|
82
|
+
}
|
|
83
|
+
results {
|
|
84
|
+
id
|
|
85
|
+
entityRef
|
|
86
|
+
result
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
`,ce=c`
|
|
91
|
+
fragment HighestLevel on LevelResult {
|
|
92
|
+
entityRef
|
|
93
|
+
ordinal
|
|
94
|
+
name
|
|
95
|
+
badge {
|
|
96
|
+
... on BadgeVariantMedal {
|
|
97
|
+
variant
|
|
98
|
+
options {
|
|
99
|
+
color
|
|
100
|
+
level
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
`,ft=c`
|
|
106
|
+
mutation archiveCampaign($campaignId: String!) {
|
|
107
|
+
campaignArchived: archiveCampaign(campaignId: $campaignId)
|
|
108
|
+
}
|
|
109
|
+
`,yt=c`
|
|
110
|
+
mutation createCampaign($input: CampaignInput!) {
|
|
111
|
+
campaign: createCampaign(input: $input) {
|
|
112
|
+
id
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
`,kt=c`
|
|
116
|
+
mutation createCheck($input: CheckerInput!) {
|
|
117
|
+
check: createChecker(input: $input) {
|
|
118
|
+
id
|
|
119
|
+
filter
|
|
120
|
+
name
|
|
121
|
+
description
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
`,vt=c`
|
|
125
|
+
mutation createProgram($input: ProgramInput!) {
|
|
126
|
+
program: createProgram(input: $input) {
|
|
127
|
+
id
|
|
128
|
+
ownerEntityRef
|
|
129
|
+
name
|
|
130
|
+
description
|
|
131
|
+
documentationURL
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
`,Ct=c`
|
|
135
|
+
mutation deleteCampaign($campaignId: String!) {
|
|
136
|
+
campaignDeleted: deleteCampaign(campaignId: $campaignId)
|
|
137
|
+
}
|
|
138
|
+
`,Rt=c`
|
|
139
|
+
mutation deleteChecker($checkerId: String!) {
|
|
140
|
+
deleteChecker(checkerId: $checkerId)
|
|
141
|
+
}
|
|
142
|
+
`,Et=c`
|
|
143
|
+
mutation deleteProgram($programId: String!) {
|
|
144
|
+
programDeleted: deleteProgram(programId: $programId)
|
|
145
|
+
}
|
|
146
|
+
`,Pt=c`
|
|
147
|
+
mutation updateCampaign($input: CampaignInput!) {
|
|
148
|
+
campaign: updateCampaign(input: $input) {
|
|
149
|
+
id
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
`,$t=c`
|
|
153
|
+
mutation updateCheck($input: CheckerInput!) {
|
|
154
|
+
check: updateChecker(input: $input) {
|
|
155
|
+
id
|
|
156
|
+
filter
|
|
157
|
+
name
|
|
158
|
+
description
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
`,wt=c`
|
|
162
|
+
mutation updateCollectorConfig($input: CollectorConfigInput!) {
|
|
163
|
+
collector: setCollectorConfig(input: $input) {
|
|
164
|
+
id
|
|
165
|
+
factNames
|
|
166
|
+
collectionConfigs {
|
|
167
|
+
factRefs
|
|
168
|
+
filter
|
|
169
|
+
frequency
|
|
170
|
+
cache
|
|
171
|
+
}
|
|
172
|
+
config
|
|
173
|
+
configSchema
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
`,It=c`
|
|
177
|
+
mutation updateProgram($input: ProgramInput!) {
|
|
178
|
+
program: updateProgram(input: $input) {
|
|
179
|
+
id
|
|
180
|
+
ownerEntityRef
|
|
181
|
+
name
|
|
182
|
+
description
|
|
183
|
+
documentationURL
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
`,bt=c`
|
|
187
|
+
query getAllCertifications($entityRef: String!) {
|
|
188
|
+
certifications(entityRef: $entityRef, includeFilteredChecks: false) {
|
|
189
|
+
...CertificationSummary
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
${lt}`,St=c`
|
|
193
|
+
query getAllPrograms($programIds: [String!], $first: Int, $after: String) {
|
|
194
|
+
programs(programIds: $programIds, first: $first, after: $after) {
|
|
195
|
+
totalCount
|
|
196
|
+
endCursor
|
|
197
|
+
hasNextPage
|
|
198
|
+
edges {
|
|
199
|
+
cursor
|
|
200
|
+
program {
|
|
201
|
+
id
|
|
202
|
+
ownerEntityRef
|
|
203
|
+
name
|
|
204
|
+
description
|
|
205
|
+
documentationURL
|
|
206
|
+
filter
|
|
207
|
+
levels {
|
|
208
|
+
...level
|
|
209
|
+
}
|
|
210
|
+
isEditable
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
${mt}`,Dt=c`
|
|
216
|
+
query getCampaigns($filter: ListCampaignsFilter!) {
|
|
217
|
+
campaigns(filter: $filter) {
|
|
218
|
+
totalCount
|
|
219
|
+
endCursor
|
|
220
|
+
hasNextPage
|
|
221
|
+
edges {
|
|
222
|
+
cursor
|
|
223
|
+
campaign {
|
|
224
|
+
id
|
|
225
|
+
name
|
|
226
|
+
description
|
|
227
|
+
ownerEntityRef
|
|
228
|
+
archived
|
|
229
|
+
startDate
|
|
230
|
+
targetCompletionDate
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
`,Ft=c`
|
|
236
|
+
query getCertificationDetails($entityRef: String!, $programId: String!) {
|
|
237
|
+
programCertification(
|
|
238
|
+
entityRef: $entityRef
|
|
239
|
+
programId: $programId
|
|
240
|
+
includeFilteredChecks: false
|
|
241
|
+
) {
|
|
242
|
+
program {
|
|
243
|
+
id
|
|
244
|
+
name
|
|
245
|
+
description
|
|
246
|
+
documentationURL
|
|
247
|
+
}
|
|
248
|
+
highestLevel {
|
|
249
|
+
...HighestLevel
|
|
250
|
+
}
|
|
251
|
+
levels {
|
|
252
|
+
...LevelResultDetails
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
${ce}
|
|
257
|
+
${pt}`,Nt=c`
|
|
258
|
+
query getCheckResultDetails($entityRef: String!, $programId: String!, $checkId: String!) {
|
|
259
|
+
checkResult(entityRef: $entityRef, programId: $programId, checkId: $checkId) {
|
|
260
|
+
...CheckResultDetails
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
${gt}`,Ot=c`
|
|
264
|
+
query getCheckers($ids: [String!], $first: Int, $after: String, $orderAlphabetical: String, $searchByOwner: String, $searchByName: String) {
|
|
265
|
+
checkers(
|
|
266
|
+
ids: $ids
|
|
267
|
+
first: $first
|
|
268
|
+
after: $after
|
|
269
|
+
orderAlphabetical: $orderAlphabetical
|
|
270
|
+
searchByOwner: $searchByOwner
|
|
271
|
+
searchByName: $searchByName
|
|
272
|
+
) {
|
|
273
|
+
totalCount
|
|
274
|
+
endCursor
|
|
275
|
+
hasNextPage
|
|
276
|
+
edges {
|
|
277
|
+
cursor
|
|
278
|
+
checker {
|
|
279
|
+
id
|
|
280
|
+
ownerEntityRef
|
|
281
|
+
supportChannel
|
|
282
|
+
name
|
|
283
|
+
description
|
|
284
|
+
rule
|
|
285
|
+
passedMessage
|
|
286
|
+
failedMessage
|
|
287
|
+
filter
|
|
288
|
+
isEditable
|
|
289
|
+
schedule
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
`,qt=c`
|
|
295
|
+
query getEntityRefsForTechHealthFilter($ownerEntityRef: String) {
|
|
296
|
+
entityRefsForTechHealthFilter(ownerEntityRef: $ownerEntityRef)
|
|
297
|
+
}
|
|
298
|
+
`,Gt=c`
|
|
299
|
+
query getFacetsForOwner($ownerEntityRef: String!) {
|
|
300
|
+
facetsForOwner(ownerEntityRef: $ownerEntityRef) {
|
|
301
|
+
types {
|
|
302
|
+
kind
|
|
303
|
+
type
|
|
304
|
+
count
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
`,Tt=c`
|
|
309
|
+
query getCollectors($ids: [String!]) {
|
|
310
|
+
collectors(ids: $ids) {
|
|
311
|
+
id
|
|
312
|
+
name
|
|
313
|
+
description
|
|
314
|
+
factNames
|
|
315
|
+
config
|
|
316
|
+
isConfigurable
|
|
317
|
+
isEditable
|
|
318
|
+
collectionConfigs {
|
|
319
|
+
factRefs
|
|
320
|
+
filter
|
|
321
|
+
frequency
|
|
322
|
+
cache
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
`,xt=c`
|
|
327
|
+
query getFactSchemas($collectorId: String!, $factName: String!) {
|
|
328
|
+
factSchema(collectorId: $collectorId, factName: $factName) {
|
|
329
|
+
schema
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
`,At=c`
|
|
333
|
+
query getIndividualCheckPassRates($filter: Filter) {
|
|
334
|
+
individualCheckPassRates(filter: $filter) {
|
|
335
|
+
id
|
|
336
|
+
checkName
|
|
337
|
+
checkDescription
|
|
338
|
+
checkOwnerRef
|
|
339
|
+
snapshotPassRate
|
|
340
|
+
trendPassRates
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
`,Lt=c`
|
|
344
|
+
query getIndividualEntityPassRates($filter: Filter) {
|
|
345
|
+
individualEntityPassRates(filter: $filter) {
|
|
346
|
+
id
|
|
347
|
+
entityDescription
|
|
348
|
+
entityOwnerRef
|
|
349
|
+
snapshotPassRate
|
|
350
|
+
trendPassRates
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
`,Bt=c`
|
|
354
|
+
query getIndividualGroupPassRates($filter: Filter) {
|
|
355
|
+
groupPassRates(filter: $filter) {
|
|
356
|
+
id
|
|
357
|
+
groupTitle
|
|
358
|
+
memberRefs
|
|
359
|
+
snapshotPassRate
|
|
360
|
+
trendPassRates
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
`,Mt=c`
|
|
364
|
+
query getIndividualTrackPassRate($filter: Filter) {
|
|
365
|
+
individualTrackPassRate(filter: $filter) {
|
|
366
|
+
id
|
|
367
|
+
trackName
|
|
368
|
+
trackDescription
|
|
369
|
+
trackOwnerRef
|
|
370
|
+
levels {
|
|
371
|
+
levelOrdinal
|
|
372
|
+
levelName
|
|
373
|
+
snapshotPassRate
|
|
374
|
+
trendPassRates
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
`,zt=c`
|
|
379
|
+
query getOverallCheckPassRates($filter: Filter) {
|
|
380
|
+
overallCheckPassRates(filter: $filter)
|
|
381
|
+
}
|
|
382
|
+
`,Ut=c`
|
|
383
|
+
query getOverallEntityPassRates($filter: Filter) {
|
|
384
|
+
overallEntityPassRates(filter: $filter) {
|
|
385
|
+
id
|
|
386
|
+
trendPassRates
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
`,Ht=c`
|
|
390
|
+
query getOverallGroupPassRates($filter: Filter) {
|
|
391
|
+
groupPassRates(filter: $filter, limit: 5) {
|
|
392
|
+
id
|
|
393
|
+
groupTitle
|
|
394
|
+
snapshotPassRate
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
`,Wt=c`
|
|
398
|
+
query getOverallTrackPassRate($filter: Filter) {
|
|
399
|
+
overallTrackPassRate(filter: $filter) {
|
|
400
|
+
levelOrdinal
|
|
401
|
+
snapshotPassRate
|
|
402
|
+
trendPassRates
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
`,Qt=c`
|
|
406
|
+
query getProgramOverviewForOwner($ownerEntityRef: String!, $facet: FacetInput) {
|
|
407
|
+
programOverviewForOwner(
|
|
408
|
+
ownerEntityRef: $ownerEntityRef
|
|
409
|
+
facet: $facet
|
|
410
|
+
includeFilteredChecks: false
|
|
411
|
+
) {
|
|
412
|
+
programs {
|
|
413
|
+
program {
|
|
414
|
+
id
|
|
415
|
+
name
|
|
416
|
+
}
|
|
417
|
+
highestLevels {
|
|
418
|
+
...HighestLevel
|
|
419
|
+
}
|
|
420
|
+
levels {
|
|
421
|
+
...OverviewLevelResult
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
entityRefs
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
${ce}
|
|
428
|
+
${ht}`,jt=(e,t,a)=>e();function Vt(e,t=jt){return{archiveCampaign(a,r){return t(i=>e.request(ft,a,{...r,...i}),"archiveCampaign","mutation")},createCampaign(a,r){return t(i=>e.request(yt,a,{...r,...i}),"createCampaign","mutation")},createCheck(a,r){return t(i=>e.request(kt,a,{...r,...i}),"createCheck","mutation")},createProgram(a,r){return t(i=>e.request(vt,a,{...r,...i}),"createProgram","mutation")},deleteCampaign(a,r){return t(i=>e.request(Ct,a,{...r,...i}),"deleteCampaign","mutation")},deleteChecker(a,r){return t(i=>e.request(Rt,a,{...r,...i}),"deleteChecker","mutation")},deleteProgram(a,r){return t(i=>e.request(Et,a,{...r,...i}),"deleteProgram","mutation")},updateCampaign(a,r){return t(i=>e.request(Pt,a,{...r,...i}),"updateCampaign","mutation")},updateCheck(a,r){return t(i=>e.request($t,a,{...r,...i}),"updateCheck","mutation")},updateCollectorConfig(a,r){return t(i=>e.request(wt,a,{...r,...i}),"updateCollectorConfig","mutation")},updateProgram(a,r){return t(i=>e.request(It,a,{...r,...i}),"updateProgram","mutation")},getAllCertifications(a,r){return t(i=>e.request(bt,a,{...r,...i}),"getAllCertifications","query")},getAllPrograms(a,r){return t(i=>e.request(St,a,{...r,...i}),"getAllPrograms","query")},getCampaigns(a,r){return t(i=>e.request(Dt,a,{...r,...i}),"getCampaigns","query")},getCertificationDetails(a,r){return t(i=>e.request(Ft,a,{...r,...i}),"getCertificationDetails","query")},getCheckResultDetails(a,r){return t(i=>e.request(Nt,a,{...r,...i}),"getCheckResultDetails","query")},getCheckers(a,r){return t(i=>e.request(Ot,a,{...r,...i}),"getCheckers","query")},getEntityRefsForTechHealthFilter(a,r){return t(i=>e.request(qt,a,{...r,...i}),"getEntityRefsForTechHealthFilter","query")},getFacetsForOwner(a,r){return t(i=>e.request(Gt,a,{...r,...i}),"getFacetsForOwner","query")},getCollectors(a,r){return t(i=>e.request(Tt,a,{...r,...i}),"getCollectors","query")},getFactSchemas(a,r){return t(i=>e.request(xt,a,{...r,...i}),"getFactSchemas","query")},getIndividualCheckPassRates(a,r){return t(i=>e.request(At,a,{...r,...i}),"getIndividualCheckPassRates","query")},getIndividualEntityPassRates(a,r){return t(i=>e.request(Lt,a,{...r,...i}),"getIndividualEntityPassRates","query")},getIndividualGroupPassRates(a,r){return t(i=>e.request(Bt,a,{...r,...i}),"getIndividualGroupPassRates","query")},getIndividualTrackPassRate(a,r){return t(i=>e.request(Mt,a,{...r,...i}),"getIndividualTrackPassRate","query")},getOverallCheckPassRates(a,r){return t(i=>e.request(zt,a,{...r,...i}),"getOverallCheckPassRates","query")},getOverallEntityPassRates(a,r){return t(i=>e.request(Ut,a,{...r,...i}),"getOverallEntityPassRates","query")},getOverallGroupPassRates(a,r){return t(i=>e.request(Ht,a,{...r,...i}),"getOverallGroupPassRates","query")},getOverallTrackPassRate(a,r){return t(i=>e.request(Wt,a,{...r,...i}),"getOverallTrackPassRate","query")},getProgramOverviewForOwner(a,r){return t(i=>e.request(Qt,a,{...r,...i}),"getProgramOverviewForOwner","query")}}}var oe=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)},s=(e,t,a)=>(oe(e,t,"read from private field"),a?a.call(e):t.get(e)),$=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a)},B=(e,t,a,r)=>(oe(e,t,"write to private field"),r?r.call(e,a):t.set(e,a),a),N,O,o,M,l;const q=qe({id:"plugin.soundcheck"}),Kt=e=>"response"in e&&"errors"in e.response,_t=e=>"response"in e&&"message"in e.response;class Jt{constructor(t){$(this,N,void 0),$(this,O,void 0),$(this,o,void 0),$(this,M,r=>{var i,d,m;return Kt(r)?(m=(d=(i=r.response)==null?void 0:i.errors)==null?void 0:d[0].message)!=null?m:`${r}`:_t(r)?r.response.message:`${r}`}),$(this,l,async r=>{try{return await r()}catch(i){throw new Error(`Error from Soundcheck backend: ${s(this,M).call(this,i)}`)}}),B(this,N,t.fetchApi),B(this,O,t.discoveryApi);const a=new Me("/graphql",{fetch:async(r,i)=>{const d=`${await s(this,O).getBaseUrl("soundcheck")}${r}`;return s(this,N).fetch(d,i)}});B(this,o,Vt(a))}async getAllCertifications(t){return s(this,l).call(this,async()=>{const{certifications:a}=await s(this,o).getAllCertifications({entityRef:t});return a})}async getCertificationDetails(t,a){return s(this,l).call(this,async()=>{const{programCertification:r}=await s(this,o).getCertificationDetails({entityRef:t,programId:a});return r})}async getCheckResultDetails(t,a,r){return s(this,l).call(this,async()=>{const{checkResult:i}=await s(this,o).getCheckResultDetails({entityRef:t,programId:a,checkId:r});return i})}async getFacetsForOwner(t){return s(this,l).call(this,async()=>{const{facetsForOwner:a}=await s(this,o).getFacetsForOwner({ownerEntityRef:t});return a})}async getProgramOverviewForOwner(t,a){return s(this,l).call(this,async()=>{const{programOverviewForOwner:r}=await s(this,o).getProgramOverviewForOwner({ownerEntityRef:t,facet:a});return r})}async getAllPrograms(t,a,r){return s(this,l).call(this,async()=>{const{programs:i}=await s(this,o).getAllPrograms({programIds:t,first:a,after:r});return i})}async createProgram(t){return s(this,l).call(this,async()=>{const{program:a}=await s(this,o).createProgram({input:t});return a})}async updateProgram(t){return s(this,l).call(this,async()=>{const{program:a}=await s(this,o).updateProgram({input:t});return a})}async deleteProgram(t){return s(this,l).call(this,async()=>{const{programDeleted:a}=await s(this,o).deleteProgram({programId:t});return a})}async getChecks(t,a,r){return s(this,l).call(this,async()=>{const{checkers:i}=await s(this,o).getCheckers({ids:t,first:a,after:r});return i})}async createCheck(t){return s(this,l).call(this,async()=>{const{check:a}=await s(this,o).createCheck({input:t});return a})}async updateCheck(t){return s(this,l).call(this,async()=>{const{check:a}=await s(this,o).updateCheck({input:t});return a})}async deleteCheck(t){return s(this,l).call(this,async()=>await s(this,o).deleteChecker({checkerId:t}))}async getCollectors(t){return s(this,l).call(this,async()=>{const{collectors:a}=await s(this,o).getCollectors({ids:t});return a})}async getFactSchema(t,a){if(!(!t||!a))return s(this,l).call(this,async()=>{const{factSchema:r}=await s(this,o).getFactSchemas({collectorId:t,factName:a});return r})}async updateCollectorConfig(t){return s(this,l).call(this,async()=>{const{collector:a}=await s(this,o).updateCollectorConfig({input:t});return a})}async getOverallCheckPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getOverallCheckPassRates({filter:t}))}async getIndividualCheckPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getIndividualCheckPassRates({filter:t}))}async getOverallTrackPassRate(t){return s(this,l).call(this,async()=>await s(this,o).getOverallTrackPassRate({filter:t}))}async getIndividualTrackPassRate(t){return s(this,l).call(this,async()=>await s(this,o).getIndividualTrackPassRate({filter:t}))}async getOverallEntityPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getOverallEntityPassRates({filter:t}))}async getIndividualEntityPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getIndividualEntityPassRates({filter:t}))}async getOverallGroupPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getOverallGroupPassRates({filter:t}))}async getIndividualGroupPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getIndividualGroupPassRates({filter:t}))}async getEntityRefsForTechHealthFilter(t){return s(this,l).call(this,async()=>await s(this,o).getEntityRefsForTechHealthFilter({ownerEntityRef:t}))}async getCampaigns(t){return s(this,l).call(this,async()=>{const{campaigns:a}=await s(this,o).getCampaigns({filter:t});return a})}async createCampaign(t){return s(this,l).call(this,async()=>{const{campaign:a}=await s(this,o).createCampaign({input:t});return a})}async updateCampaign(t){return s(this,l).call(this,async()=>{const{campaign:a}=await s(this,o).updateCampaign({input:t});return a})}async deleteCampaign(t){return s(this,l).call(this,async()=>{const{campaignDeleted:a}=await s(this,o).deleteCampaign({campaignId:t});return a})}async archiveCampaign(t){return s(this,l).call(this,async()=>{const{campaignArchived:a}=await s(this,o).archiveCampaign({campaignId:t});return a})}}N=new WeakMap,O=new WeakMap,o=new WeakMap,M=new WeakMap,l=new WeakMap;const G=I({id:"soundcheck-entity"}),Xt=I({id:"soundcheck-group"}),le=h({id:"soundcheck-entity-certification-track-redirect",parent:G,path:"/:trackId"}),de=h({id:"soundcheck-entity-certification",parent:G,path:"/:trackId/:checkId"}),Yt=I({id:"soundcheck-overview"}),k=I({id:"soundcheck"}),Zt=h({id:"soundcheck-checks",parent:k,path:"/checks"}),ea=h({id:"soundcheck-check-details",parent:k,path:"/checks/:checkId"}),ta=h({id:"soundcheck-tracks",parent:k,path:"/tracks"}),aa=h({id:"soundcheck-track-details",parent:k,path:"/tracks/:trackId"}),ra=h({id:"soundcheck-campaigns",parent:k,path:"/campaigns"}),na=h({id:"soundcheck-campaign-details",parent:k,path:"/campaigns/:campaignId"}),ia=h({id:"soundcheck-campaign-edit",parent:k,path:"/campaigns/:campaignId/edit"}),sa=h({id:"soundcheck-tech-health",parent:k,path:"/tech-health"}),C=Ge({id:"soundcheck",apis:[Te({api:q,deps:{discoveryApi:xe,fetchApi:Ae},factory:e=>new Jt(e)})],routes:{entityContent:G}}),ca=C.provide(b({name:"EntitySoundcheckContent",component:()=>import("./EntitySoundcheckContent-d8bf249e.esm.js").then(e=>e.EntitySoundcheckContent),mountPoint:G})),oa=C.provide(Le({name:"EntitySoundcheckCard",component:{lazy:()=>import("./index-920b177e.esm.js").then(e=>e.EntitySoundcheckCard)}})),la=C.provide(b({name:"GroupSoundcheckContent",component:()=>import("./index-293deb4d.esm.js").then(e=>e.FixedGroupOverviewPage),mountPoint:Xt})),da=C.provide(b({name:"SoundcheckOverviewPage",component:()=>import("./index-293deb4d.esm.js").then(e=>e.OverviewPage),mountPoint:Yt})),ma=C.provide(b({name:"SoundcheckRoutingPage",component:()=>import("./index-927a757e.esm.js").then(e=>e.RoutingPage),mountPoint:k})),ua=je(e=>new We({defaultOptions:{queries:{refetchInterval:6e4,refetchIntervalInBackground:!1,refetchOnWindowFocus:"always",retry:2,retryDelay:t=>{const a=450+Math.ceil(Math.random()*100);return Math.min(a*2**t,3e4)},onError:t=>e.post(t)}}})),pa=e=>{const t=L(Be),a=ua(t);return n.createElement(Qe,{client:a},e.children)};function me(e){const t=L(q),a=re(e);return J(["soundcheck/certifications",a],async()=>t.getAllCertifications(a))}function ue(e,t){const a=L(q),r=re(e);return J(["soundcheck/certifications",r,t],async()=>a.getCertificationDetails(r,t),{enabled:!!t})}var pe=(e=>(e.GetAllPrograms="soundcheck/programs",e.GetChecks="soundcheck/checks",e.GetCollectors="soundcheck/collectors",e.GetFactSchema="soundcheck/collectors/schema",e.GetEntityFacets="soundcheck/catalog/facets",e.GetSoftwareEntityRefsForUser="soundcheck/entities/softwareEntityRefsForUser",e.GetCampaigns="soundcheck/campaigns",e.GetOverallCheckPassRates="soundcheck/charts/overallCheckPassRates",e.GetIndividualCheckPassRate="soundcheck/charts/getIndividualCheckPassRate",e.GetOverallTrackPassRate="soundcheck/charts/overallTrackPassRate",e.GetIndividualTrackPassRate="soundcheck/charts/individualTrackPassRate",e.GetOverallEntityPassRates="soundcheck/charts/overallEntityPassRates",e.GetIndividualEntityPassRate="soundcheck/charts/individualEntityPassRate",e.GetOverallGroupPassRates="soundcheck/charts/overallGroupPassRates",e.GetIndividualGroupPassRates="soundcheck/charts/individualGroupPassRates",e.EntityByRef="soundcheck/catalog/entityByRef",e.EntitiesByRefs="soundcheck/catalog/entitiesByRef",e))(pe||{}),ge=(e=>(e.DeleteCheck="soundcheck/deleteCheck",e.CreateCheck="soundcheck/createCheck",e.UpdateCheck="soundcheck/updateCheck",e.DeleteProgram="soundcheck/deleteProgram",e.CreateProgram="soundcheck/createProgram",e.UpdateProgram="soundcheck/updateProgram",e.UpdateCollectorConfig="soundcheck/updateCollectorConfig",e.DeleteCampaign="soundcheck/deleteCampaign",e.ArchiveCampaign="soundcheck/archiveCampaign",e))(ge||{});const ga=p(e=>({root:{padding:e.spacing(3)},icon:{display:"none"},message:{padding:0},type:{fontWeight:700,lineHeight:1.75}})),T=e=>{const{type:t,...a}=ga();return n.createElement(tt,{severity:e.severity,elevation:1,classes:a,onClose:e.onClose},n.createElement(u,{classes:{root:t}},e.title),e.children)},he=K({}),ha=e=>{const[t,a]=S(),r=E(d=>{a(d)},[]),i=E(()=>{a(null)},[]);return n.createElement(he.Provider,{value:{showAlert:r,clearAlert:i}},t&&n.createElement(T,{severity:t.severity,title:t.title,onClose:i},t.message),e.children)},fa=()=>_(he),ya=p(e=>({modalContent:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",padding:"25px",backgroundColor:e.palette.type==="dark"?e.palette.grey[800]:e.palette.grey[200]},modalButtons:{display:"flex",justifyContent:"space-evenly","& button":{width:"40%",maxWidth:"185px"}},modalMessage:{margin:"15px 0 35px"}})),fe=K({}),ka=e=>{const t=ya(),[a,r]=S(!1),[i,d]=S(),m=ze(),g=E(({title:w,message:Fe,error:Ne})=>(d({title:w,message:Fe,error:Ne}),r(!0),new Promise(Oe=>{m.current=Oe})),[]),R=E(()=>{m.current&&m.current(!0),r(!1)},[]),v=E(()=>{m.current&&m.current(!1),r(!1)},[]);return n.createElement(fe.Provider,{value:{showModal:g}},e.children,i&&n.createElement(Ke,{open:a,onClose:v,"aria-labelledby":"confirmation-modal-title","aria-describedby":"confirmation-modal-description"},n.createElement(X,{className:t.modalContent},n.createElement(u,{id:"confirmation-modal-title",variant:"h6"},i.title),n.createElement(u,{className:t.modalMessage,id:"confirmation-modal-description",variant:"body1"},i.message),n.createElement("div",{className:t.modalButtons},!i.error&&n.createElement(Y,{onClick:v,variant:"contained","aria-label":"cancel"},"Cancel"),n.createElement(Y,{color:"primary",onClick:R,variant:"contained","aria-label":"confirm"},i.error?"Ok":"Confirm")))))},va=()=>_(fe),ye=24,Ca=11,z=e=>e==="small"?1:2,Ra=p({root:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"50%",borderWidth:"2px",fontWeight:700,width:({size:e})=>`${ye*z(e)}px`,height:({size:e})=>`${ye*z(e)}px`,fontSize:({size:e})=>`${Ca*z(e)}px`}}),ke=({className:e,label:t,size:a="small"})=>{const r=Ra({size:a});return n.createElement("span",{className:F(e,r.root),role:"img","aria-label":`${t} badge`},t)},Ea=p(e=>({root:{background:({color:t})=>t,color:e.palette.common.black,borderColor:e.palette.common.black,borderStyle:"solid","&::after":{position:"absolute",display:"block",content:'""',top:0,left:0,width:"100%",height:"100%",borderRadius:"50%",boxShadow:["inset 0 -0.18em 0 0 rgba(0, 0, 0, 0.25)","inset 0px 0.18em 0px 0px rgba(255, 255, 255, 0.5)","inset 0px 1.3em 0px -0.5em rgba(255, 255, 255, 0.2)"].join(",")}}})),U=({className:e,badge:t,size:a="small"})=>{const r=Ea({color:t.options.color,size:a});return n.createElement(ke,{className:F(e,r.root),size:a,label:`L${t.options.level}`})},Pa=p({root:{borderColor:"currentColor",borderStyle:"dashed"}}),ve=({className:e,size:t="small"})=>{const a=Pa();return n.createElement(ke,{className:F(e,a.root),size:t,label:"NL"})},H=p(e=>({description:{padding:0,margin:0,display:"block","& p":{margin:0}},root:{padding:e.spacing(2),margin:0,display:"grid",gridTemplateColumns:"min-content auto",gridGap:e.spacing(2)},title:{fontSize:e.typography.pxToRem(18),fontWeight:700,lineHeight:1.235,marginBottom:"6px"},level:{textTransform:"uppercase",color:e.palette.text.secondary,fontWeight:700,letterSpacing:"1px"}}));function $a({description:e,documentationUrl:t}){const a=H();return t?n.createElement("div",{className:a.description},n.createElement(Z,{content:e}),n.createElement(ee,{to:t},"Learn more")):n.createElement("div",{className:a.description},n.createElement(Z,{content:e}))}const Ce=({name:e,level:t,badge:a,description:r,documentationUrl:i})=>{const d=H();return n.createElement("div",{className:d.root},a?n.createElement(U,{size:"large",badge:a}):n.createElement(ve,{size:"large"}),n.createElement("div",null,n.createElement(u,{variant:"caption",className:d.level},t!=null?t:"No Level"),n.createElement(u,{className:d.title},e),r&&n.createElement($a,{description:r,documentationUrl:i})))},x=({children:e})=>{const[t,a]=S(!1);return Ue(()=>{const r=setTimeout(()=>{a(!0)},250);return()=>clearTimeout(r)},[]),n.createElement(_e,{in:t,timeout:250},e)},W=({hideDescription:e=!1})=>{const t=H();return n.createElement(x,null,n.createElement("div",{className:t.root},n.createElement(y,{width:44,height:44}),n.createElement("div",null,n.createElement(u,{variant:"caption",className:t.level},n.createElement(y,{width:100})),n.createElement(u,{variant:"h4",className:t.title},n.createElement(y,{width:300})),!e&&n.createElement(u,{variant:"body2"},n.createElement(y,null)))))},Re=p(e=>{const t=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{wrapper:{backgroundColor:t,color:P(e.palette.getContrastText(t),.8),fontSize:e.typography.caption.fontSize,minHeight:"auto",borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`,padding:e.spacing(1),display:"grid",gridTemplateAreas:({badge:a})=>[`"${a?"badge":"title"} title"`,`"${a?".":"description"} description"`].join(" "),gridTemplateColumns:"auto 1fr"},title:{gridArea:"title",textTransform:"uppercase",fontWeight:"bold",color:P(e.palette.getContrastText(t),.8),fontSize:e.typography.body2.fontSize,paddingTop:e.spacing(.5),paddingBottom:e.spacing(.5),lineHeight:1},badge:{gridArea:"badge",marginRight:e.spacing(1)},description:{gridArea:"description",color:P(e.palette.getContrastText(t),.8),fontSize:e.typography.subtitle2.fontSize,marginTop:e.spacing(1)}}}),wa=e=>{const t=Re({badge:e.badge});return n.createElement("div",{className:t.wrapper},e.badge?n.createElement(U,{className:t.badge,badge:e.badge}):null,n.createElement(u,{className:t.title},e.title),e.description?n.createElement(u,{className:t.description},e.description):null)},Ia=()=>{const e=Re({});return n.createElement(x,null,n.createElement("div",{className:e.wrapper},n.createElement(y,{className:e.title}),n.createElement(u,{className:e.description},n.createElement(y,null))))},ba=p(e=>({root:{display:"inline-flex",alignItems:"center",gap:e.spacing(1)}})),Ee=({timestamp:e,description:t})=>{const a=ba(),r=ie.fromISO(e).toLocaleString(ie.DATETIME_FULL),i=Ze(e),d=t?`${t}: ${i}`:void 0;return n.createElement("div",{className:a.root},n.createElement(Je,{title:r},n.createElement(u,{variant:"caption","aria-label":d},i)),n.createElement(rt,null))},Sa=e=>({[f.Passed]:"Check passed",[f.NotReported]:"Check not reported",[f.Failed]:"Check failed",[f.NotApplicable]:"Check not applicable"})[e],Da=D(e=>({root:{color:e.palette.success.main}}))(nt),Fa=D(e=>({root:{color:e.palette.error.main}}))(it),Na=D(e=>({root:{color:e.palette.info.main}}))(ct),Oa=D(e=>({root:{color:e.palette.text.disabled}}))(st),Pe=({result:e,className:t})=>{const a={className:t,"aria-label":Sa(e),"aria-hidden":!1};return e===f.Passed?n.createElement(Da,{...a}):e===f.NotReported?n.createElement(Na,{...a}):e===f.Failed?n.createElement(Fa,{...a}):e===f.NotApplicable?n.createElement(Oa,{...a}):null},$e=p(e=>({root:{display:"grid",width:"100%",gridTemplateColumns:"auto 1fr auto",gridColumnGap:e.spacing(1),padding:e.spacing(1),alignItems:"center","&.selected":{backgroundColor:P(e.palette.primary[e.palette.type],.2)},"&:hover, &:active, &:focus":{backgroundColor:P(e.palette.primary[e.palette.type],.3)}}})),qa=({className:e,href:t,children:a})=>t?n.createElement(at,{to:t,className:e},a):n.createElement("div",{className:e},a),Ga=({result:e,name:t,timestamp:a,selected:r=!1,href:i})=>{const d=$e(),m=F(d.root,{selected:r});return n.createElement(qa,{href:i,className:m},n.createElement(Pe,{result:e}),n.createElement(u,{variant:"body2"},t),a?n.createElement(Ee,{timestamp:a}):null)},Q=()=>{const e=$e();return n.createElement(x,null,n.createElement("div",{className:e.root},n.createElement(y,{width:24,height:24}),n.createElement(u,{variant:"body2"},n.createElement(y,null)),n.createElement(y,{width:100,height:24})))},Ta=()=>{const e=we();return n.createElement("div",{className:e.root},n.createElement(W,null),new Array(3).fill(null).map((t,a)=>n.createElement(n.Fragment,{key:`skeleton-level-${a}`},n.createElement(Ia,null),n.createElement("ul",{className:e.checks},n.createElement(Q,null),n.createElement(Q,null),n.createElement(Q,null)))))},xa=p(e=>({noChecks:{padding:e.spacing(1)},checks:{padding:0,margin:0,flex:1,listStyle:"none"},checkItem:{borderBottom:`1px solid ${e.palette.divider}`,"&:last-of-type":{borderBottom:"0"}}})),Aa=({checks:e,trackId:t,checkId:a})=>{const r=xa(),i=V(de);return e.length?n.createElement("ul",{className:r.checks},e.map(d=>n.createElement("li",{key:d.id,className:r.checkItem},n.createElement(Ga,{...d,selected:d.id===a,href:i({trackId:t,checkId:d.id})})))):n.createElement(u,{variant:"body2",className:r.noChecks},"No applicable checks at this level.")},La=({level:e,checkId:t,trackId:a})=>{var r;return n.createElement(n.Fragment,null,n.createElement(wa,{badge:e.badge,title:e.name,description:e.description}),n.createElement(Aa,{checks:(r=e.checks)!=null?r:[],trackId:a,checkId:t}))},we=p(e=>({root:{borderRight:`1px solid ${e.palette.divider}`},checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),Ba=({trackId:e,checkId:t})=>{var a,r;const i=we(),{entity:d}=te(),{data:m,isLoading:g,isError:R}=ue(d,e);return R?n.createElement("div",{className:i.root},n.createElement(X,{padding:2},n.createElement(T,{severity:"error",title:"Error loading certification"}))):g||!e?n.createElement(Ta,null):m?n.createElement("div",{className:i.root},n.createElement(Ce,{name:m.program.name,level:(a=m.highestLevel)==null?void 0:a.name,badge:(r=m.highestLevel)==null?void 0:r.badge,description:m.program.description,documentationUrl:m.program.documentationURL}),m==null?void 0:m.levels.map(v=>n.createElement(La,{key:v.ordinal,level:v,checkId:t,trackId:e}))):null},Ma=()=>n.createElement(n.Fragment,null,n.createElement(W,{hideDescription:!0}),n.createElement(W,{hideDescription:!0})),za=p(e=>({card:{backgroundColor:e.palette.background.paper,border:`1px solid ${e.palette.border}`,borderRadius:e.shape.borderRadius,display:"flex",padding:e.spacing(5)},container:{margin:"0 auto",display:"flex",flexDirection:"row",alignItems:"center",gap:e.spacing(5)},content:{width:"20rem",display:"flex",flexDirection:"column",gap:e.spacing(2)},header:{display:"flex",flexDirection:"column",gap:e.spacing(2)},description:{color:e.palette.grey[600],fontWeight:500},action:{display:"inline-block"},img:{maxHeight:400}})),j=({title:e,description:t,imgSrc:a,action:r})=>{const i=za();return n.createElement("div",{className:i.card},n.createElement("div",{className:i.container},n.createElement("div",{className:i.content},n.createElement("header",{className:i.header},n.createElement(u,{variant:"h5"},e),n.createElement(u,{variant:"body1",className:i.description},t)),r&&n.createElement("div",{className:i.action},r)),n.createElement("div",null,n.createElement("img",{src:a!=null?a:ot,className:i.img,alt:e}))))},Ua="No certifications available",Ie=({ownerEntityRef:e,selectGroupHint:t})=>{let a="There are no tracks configured that apply to this entity.";return e&&(a=`Looks like the group '${ae(ne(e),{defaultKind:"Group"})}' doesn't own any entities that have any applicable tracks configured. ${t}`),n.createElement(j,{title:Ua,description:a})},Ha="Missing entities",Wa=({ownerEntityRef:e,selectGroupHint:t})=>{if(!e)return null;const a=ae(ne(e),{defaultKind:"Group"});return n.createElement(j,{title:Ha,description:`The group '${a}' doesn't own any entities. ${t}`})},be="soundcheck",Se="Submitted check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present.",De=Ve(e=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:e.spacing(2)},emptyState:{overflow:"hidden"}})),A=({children:e,title:t})=>{const a=De();return n.createElement(Ye,{title:t},n.createElement("div",{className:a.infoCard},n.createElement(et,{inline:!0,backend:be,invalidLicenseMessage:Se}),e))},Qa=({title:e="Soundcheck"})=>{const{entity:t}=te(),a=De(),{data:r,isError:i,isLoading:d}=me(t),m=V(le);return i?n.createElement(A,{title:e},n.createElement(T,{severity:"error",title:"Error loading certifications"})):d||!r?n.createElement(A,{title:e},n.createElement(Ma,null)):r.length?n.createElement(A,{title:e},r.map((g,R)=>{var v,w;return n.createElement(He,{key:g.program.name},n.createElement("div",{className:a.certificationWrapper,"data-testid":"soundcheck-track-row"},n.createElement(Ce,{key:g.program.id,name:g.program.name,badge:(v=g.highestLevel)==null?void 0:v.badge,level:(w=g.highestLevel)==null?void 0:w.name}),n.createElement(ee,{to:m({trackId:g.program.id})},"View Details")),R<r.length-1?n.createElement(Xe,null):null)})):n.createElement(A,{title:e},n.createElement("div",{className:a.emptyState},n.createElement(Ie,null)))};export{T as A,se as B,Ba as C,oa as D,j as E,x as F,la as G,da as H,ma as I,U as L,ge as M,ve as N,pe as Q,f as R,pa as S,Ee as a,me as b,le as c,Ie as d,be as e,de as f,Qa as g,Pe as h,Se as i,Wa as j,fa as k,va as l,ea as m,na as n,ia as o,sa as p,ra as q,ta as r,q as s,aa as t,ue as u,Zt as v,ka as w,ha as x,C as y,ca as z};
|
|
429
|
+
//# sourceMappingURL=index-c3aebdd7.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="693" height="425" fill="none" viewBox="0 0 693 425"><path fill="#000" fill-opacity=".05" fill-rule="evenodd" d="M40.4387 110.977C27.1556 113.452 18.3941 126.227 20.8693 139.51C23.3445 152.793 36.1192 161.555 49.4023 159.079L67.7036 155.669C62.6078 161.153 60.0854 168.896 61.562 176.82C64.0372 190.103 76.8118 198.865 90.0949 196.39L220.39 172.11C220.416 172.267 220.444 172.425 220.473 172.582C221.95 180.507 227.092 186.822 233.821 190.102L225.826 191.592C212.542 194.067 203.781 206.841 206.256 220.125C208.731 233.408 221.506 242.169 234.789 239.694L614.544 168.929C627.827 166.454 636.588 153.679 634.113 140.396C632.636 132.472 627.494 126.157 620.765 122.877L633.556 120.493C646.839 118.018 655.601 105.244 653.126 91.9604C650.65 78.6773 637.876 69.9158 624.593 72.3911L396.82 114.835C396.794 114.678 396.766 114.52 396.737 114.363C395.26 106.438 390.118 100.123 383.389 96.8431L405.503 92.7224C418.786 90.2471 427.547 77.4725 425.072 64.1894C422.597 50.9063 409.822 42.1448 396.539 44.62L40.4387 110.977ZM59.718 301.107C57.2428 287.824 66.0043 275.05 79.2874 272.574L468.975 199.959C482.258 197.484 495.032 206.245 497.508 219.528C499.983 232.811 491.221 245.586 477.938 248.061L466.779 250.141C468.082 250.776 469.325 251.524 470.493 252.376L605.53 227.213C618.813 224.738 631.588 233.499 634.063 246.782C635.54 254.707 633.017 262.45 627.922 267.934L630.641 267.427C643.924 264.952 656.699 273.713 659.174 286.996C661.649 300.279 652.888 313.054 639.604 315.529L234.809 390.96C221.526 393.435 208.751 384.674 206.276 371.391C203.801 358.108 212.563 345.333 225.846 342.858L255.404 337.35C254.101 336.715 252.858 335.966 251.69 335.114L71.5053 368.69C58.2222 371.165 45.4476 362.404 42.9723 349.121C40.4971 335.838 49.2586 323.063 62.5417 320.588L73.0655 318.627C66.3367 315.347 61.1946 309.032 59.718 301.107Z" clip-rule="evenodd"/><g filter="url(#filter0_d)"><rect width="461" height="286" x="122" y="70" fill="#F8F8F8" rx="10"/><rect width="55" height="7" x="150" y="96" fill="#D9D9D9" rx="3.5"/><rect width="42" height="7" x="150" y="135" fill="#BDBDBD" rx="3.5"/><rect width="65" height="7" x="150" y="174" fill="#BDBDBD" rx="3.5"/><rect width="60" height="7" x="150" y="213" fill="#BDBDBD" rx="3.5"/><rect width="84" height="7" x="150" y="252" fill="#BDBDBD" rx="3.5"/><rect width="42" height="7" x="150" y="291" fill="#BDBDBD" rx="3.5"/><rect width="65" height="7" x="150" y="330" fill="#BDBDBD" rx="3.5"/><rect width="35" height="7" x="282" y="96" fill="#D9D9D9" rx="3.5"/><rect width="102" height="7" x="282" y="135" fill="#BDBDBD" rx="3.5"/><rect width="77" height="7" x="282" y="174" fill="#BDBDBD" rx="3.5"/><rect width="93" height="7" x="282" y="213" fill="#BDBDBD" rx="3.5"/><rect width="42" height="7" x="282" y="252" fill="#BDBDBD" rx="3.5"/><rect width="69" height="7" x="282" y="291" fill="#BDBDBD" rx="3.5"/><rect width="97" height="7" x="282" y="330" fill="#BDBDBD" rx="3.5"/><rect width="92" height="7" x="422" y="96" fill="#D9D9D9" rx="3.5"/><rect width="62" height="7" x="422" y="135" fill="#BDBDBD" rx="3.5"/><rect width="21" height="7" x="422" y="174" fill="#BDBDBD" rx="3.5"/><rect width="39" height="7" x="422" y="213" fill="#BDBDBD" rx="3.5"/><rect width="112" height="7" x="422" y="252" fill="#BDBDBD" rx="3.5"/><rect width="65" height="7" x="422" y="291" fill="#BDBDBD" rx="3.5"/><rect width="30" height="7" x="422" y="330" fill="#BDBDBD" rx="3.5"/><line x1="138" x2="567" y1="118.5" y2="118.5" stroke="#EEE"/><line x1="138" x2="567" y1="157.5" y2="157.5" stroke="#EEE"/><line x1="138" x2="567" y1="196.5" y2="196.5" stroke="#EEE"/><line x1="138" x2="567" y1="235.5" y2="235.5" stroke="#EEE"/><line x1="138" x2="567" y1="274.5" y2="274.5" stroke="#EEE"/><line x1="138" x2="567" y1="313.5" y2="313.5" stroke="#EEE"/></g><defs><filter id="filter0_d" width="485" height="310" x="112" y="62" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dx="2" dy="4"/><feGaussianBlur stdDeviation="6"/><feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/><feBlend in2="BackgroundImageFix" mode="normal" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" mode="normal" result="shape"/></filter></defs></svg>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<svg width="653" height="400" viewBox="0 0 653 400" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M38.1174 104.683C25.5948 107.019 17.333 119.065 19.6642 131.589C21.9953 144.112 34.0367 152.371 46.5593 150.035L63.8232 146.815C59.0061 151.987 56.619 159.297 58.0115 166.778C60.3427 179.302 72.3843 187.561 84.9072 185.225L207.684 162.321C207.699 162.414 207.715 162.506 207.732 162.599C207.742 162.66 207.753 162.721 207.765 162.782C209.157 170.262 214.014 176.221 220.368 179.309L212.82 180.717C200.298 183.053 192.036 195.099 194.367 207.622C196.698 220.145 208.74 228.404 221.262 226.068L579.118 159.313C591.641 156.977 599.903 144.931 597.571 132.408C596.179 124.928 591.323 118.969 584.969 115.881L597.035 113.63C609.558 111.294 617.819 99.2482 615.488 86.7249C613.157 74.2015 601.116 65.943 588.593 68.2789L373.956 108.317C373.943 108.239 373.93 108.16 373.916 108.082C373.903 108.006 373.889 107.93 373.875 107.855C372.483 100.375 367.627 94.4162 361.273 91.3276L382.124 87.4379C394.647 85.1019 402.909 73.0559 400.577 60.5324C398.246 48.0089 386.205 39.7503 373.682 42.0863L38.1174 104.683ZM56.2739 284.002C53.9427 271.479 62.2044 259.433 74.7269 257.097L441.944 188.596C454.466 186.26 466.507 194.519 468.839 207.042C471.17 219.566 462.908 231.611 450.386 233.947L439.856 235.912C441.096 236.514 442.279 237.226 443.39 238.037L570.629 214.302C583.152 211.966 595.193 220.224 597.524 232.748C598.917 240.229 596.529 247.539 591.712 252.711L594.293 252.23C606.815 249.894 618.857 258.152 621.188 270.676C623.519 283.199 615.257 295.245 602.735 297.581L221.281 368.737C208.758 371.073 196.717 362.815 194.386 350.291C192.055 337.768 200.316 325.722 212.839 323.386L240.707 318.188C239.466 317.585 238.283 316.873 237.172 316.061L67.3883 347.733C54.8658 350.069 42.8246 341.81 40.4934 329.287C38.1622 316.764 46.4239 304.718 58.9464 302.382L68.8769 300.529C62.5228 297.441 57.6663 291.482 56.2739 284.002Z" fill="#F8F8F8"/>
|
|
3
|
+
<g filter="url(#filter0_d_62_30783)">
|
|
4
|
+
<path d="M539.294 72.4004H118.785C113.801 72.4004 109.761 76.4392 109.761 81.4214V108.484C109.761 113.466 113.801 117.505 118.785 117.505H539.294C544.278 117.505 548.318 113.466 548.318 108.484V81.4214C548.318 76.4392 544.278 72.4004 539.294 72.4004Z" fill="#616161"/>
|
|
5
|
+
<mask id="mask0_62_30783" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="109" y="72" width="440" height="264">
|
|
6
|
+
<path d="M539.294 72.4004H118.785C113.801 72.4004 109.761 76.4392 109.761 81.4214V326.792C109.761 331.774 113.801 335.813 118.785 335.813H539.294C544.278 335.813 548.318 331.774 548.318 326.792V81.4214C548.318 76.4392 544.278 72.4004 539.294 72.4004Z" fill="#404040"/>
|
|
7
|
+
</mask>
|
|
8
|
+
<g mask="url(#mask0_62_30783)">
|
|
9
|
+
<path d="M555.537 97.6582H109.761V348.441H555.537V97.6582Z" fill="#EEEEEE"/>
|
|
10
|
+
<path d="M497.785 175.238H178.342C176.348 175.238 174.732 176.854 174.732 178.847C174.732 180.84 176.348 182.455 178.342 182.455H497.785C499.779 182.455 501.395 180.84 501.395 178.847C501.395 176.854 499.779 175.238 497.785 175.238Z" fill="white"/>
|
|
11
|
+
<path d="M375.061 191.477H178.342C176.348 191.477 174.732 193.092 174.732 195.085C174.732 197.078 176.348 198.693 178.342 198.693H375.061C377.055 198.693 378.671 197.078 378.671 195.085C378.671 193.092 377.055 191.477 375.061 191.477Z" fill="white"/>
|
|
12
|
+
<path d="M261.361 142.764H178.342C176.348 142.764 174.732 144.379 174.732 146.372C174.732 148.365 176.348 149.98 178.342 149.98H261.361C263.355 149.98 264.971 148.365 264.971 146.372C264.971 144.379 263.355 142.764 261.361 142.764Z" fill="white"/>
|
|
13
|
+
<path d="M199.999 110.287H142.246C140.253 110.287 138.637 111.903 138.637 113.896C138.637 115.888 140.253 117.504 142.246 117.504H199.999C201.992 117.504 203.608 115.888 203.608 113.896C203.608 111.903 201.992 110.287 199.999 110.287Z" fill="white"/>
|
|
14
|
+
<path d="M126.004 113.896C126.004 111.903 124.388 110.287 122.394 110.287C120.401 110.287 118.785 111.903 118.785 113.896C118.785 115.888 120.401 117.504 122.394 117.504C124.388 117.504 126.004 115.888 126.004 113.896Z" fill="#F8F8F8"/>
|
|
15
|
+
<path d="M126.004 130.134C126.004 128.141 124.388 126.525 122.394 126.525C120.401 126.525 118.785 128.141 118.785 130.134C118.785 132.127 120.401 133.742 122.394 133.742C124.388 133.742 126.004 132.127 126.004 130.134Z" fill="#F8F8F8"/>
|
|
16
|
+
<path d="M126.004 146.372C126.004 144.379 124.388 142.764 122.394 142.764C120.401 142.764 118.785 144.379 118.785 146.372C118.785 148.365 120.401 149.98 122.394 149.98C124.388 149.98 126.004 148.365 126.004 146.372Z" fill="#F8F8F8"/>
|
|
17
|
+
<path d="M126.004 162.608C126.004 160.616 124.388 159 122.394 159C120.401 159 118.785 160.616 118.785 162.608C118.785 164.601 120.401 166.217 122.394 166.217C124.388 166.217 126.004 164.601 126.004 162.608Z" fill="#F8F8F8"/>
|
|
18
|
+
<path d="M126.004 180.651C126.004 178.658 124.388 177.043 122.394 177.043C120.401 177.043 118.785 178.658 118.785 180.651C118.785 182.644 120.401 184.26 122.394 184.26C124.388 184.26 126.004 182.644 126.004 180.651Z" fill="#F8F8F8"/>
|
|
19
|
+
<path d="M126.004 195.085C126.004 193.092 124.388 191.477 122.394 191.477C120.401 191.477 118.785 193.092 118.785 195.085C118.785 197.078 120.401 198.693 122.394 198.693C124.388 198.693 126.004 197.078 126.004 195.085Z" fill="#F8F8F8"/>
|
|
20
|
+
<path d="M126.004 211.323C126.004 209.33 124.388 207.715 122.394 207.715C120.401 207.715 118.785 209.33 118.785 211.323C118.785 213.316 120.401 214.932 122.394 214.932C124.388 214.932 126.004 213.316 126.004 211.323Z" fill="#F8F8F8"/>
|
|
21
|
+
<path d="M126.004 227.56C126.004 225.567 124.388 223.951 122.394 223.951C120.401 223.951 118.785 225.567 118.785 227.56C118.785 229.552 120.401 231.168 122.394 231.168C124.388 231.168 126.004 229.552 126.004 227.56Z" fill="#F8F8F8"/>
|
|
22
|
+
<path d="M497.785 159H178.342C176.348 159 174.732 160.616 174.732 162.608C174.732 164.601 176.348 166.217 178.342 166.217H497.785C499.779 166.217 501.395 164.601 501.395 162.608C501.395 160.616 499.779 159 497.785 159Z" fill="white"/>
|
|
23
|
+
<path d="M198.194 223.951H142.246C140.253 223.951 138.637 225.567 138.637 227.56C138.637 229.552 140.253 231.168 142.246 231.168H198.194C200.188 231.168 201.804 229.552 201.804 227.56C201.804 225.567 200.188 223.951 198.194 223.951Z" fill="white"/>
|
|
24
|
+
<path d="M319.113 207.715H160.294C158.301 207.715 156.685 209.33 156.685 211.323C156.685 213.316 158.301 214.932 160.294 214.932H319.113C321.107 214.932 322.723 213.316 322.723 211.323C322.723 209.33 321.107 207.715 319.113 207.715Z" fill="white"/>
|
|
25
|
+
<path d="M234.289 126.525H160.294C158.301 126.525 156.685 128.141 156.685 130.134C156.685 132.127 158.301 133.742 160.294 133.742H234.289C236.283 133.742 237.899 132.127 237.899 130.134C237.899 128.141 236.283 126.525 234.289 126.525Z" fill="white"/>
|
|
26
|
+
<path opacity="0.4" d="M122.394 88.6358C124.388 88.6358 126.004 87.0209 126.004 85.0288C126.004 83.0368 124.388 81.4219 122.394 81.4219C120.401 81.4219 118.785 83.0368 118.785 85.0288C118.785 87.0209 120.401 88.6358 122.394 88.6358Z" fill="#D9D9D9"/>
|
|
27
|
+
<path opacity="0.4" d="M135.224 88.6358C137.218 88.6358 138.834 87.0209 138.834 85.0288C138.834 83.0368 137.218 81.4219 135.224 81.4219C133.231 81.4219 131.615 83.0368 131.615 85.0288C131.615 87.0209 133.231 88.6358 135.224 88.6358Z" fill="#D9D9D9"/>
|
|
28
|
+
<path opacity="0.3" d="M147.661 88.6358C149.655 88.6358 151.271 87.0209 151.271 85.0288C151.271 83.0368 149.655 81.4219 147.661 81.4219C145.668 81.4219 144.052 83.0368 144.052 85.0288C144.052 87.0209 145.668 88.6358 147.661 88.6358Z" fill="#D9D9D9"/>
|
|
29
|
+
</g>
|
|
30
|
+
</g>
|
|
31
|
+
<defs>
|
|
32
|
+
<filter id="filter0_d_62_30783" x="91.7607" y="56.4004" width="478.558" height="303.412" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
|
33
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
|
34
|
+
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
|
35
|
+
<feOffset dx="2" dy="4"/>
|
|
36
|
+
<feGaussianBlur stdDeviation="10"/>
|
|
37
|
+
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
|
|
38
|
+
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_62_30783"/>
|
|
39
|
+
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_62_30783" result="shape"/>
|
|
40
|
+
</filter>
|
|
41
|
+
</defs>
|
|
42
|
+
</svg>
|
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{D as l,z as w,G as x,H as z,I as D,y as H}from"./esm/index-c3aebdd7.esm.js";import"react";import"@backstage/core-plugin-api";import"graphql-request";import"graphql-tag";import"@tanstack/react-query";import"lodash";import"@material-ui/core/styles/makeStyles";import"@material-ui/core";import"@backstage/core-components";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-core";import"@backstage/catalog-model";import"@material-ui/lab";import"react-router-dom";import"classnames";import"@material-ui/icons/Schedule";import"luxon";import"@material-ui/icons/Check";import"@material-ui/icons/Close";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";import"./images/empty-state.svg";export{l as EntitySoundcheckCard,w as EntitySoundcheckContent,x as GroupSoundcheckContent,z as SoundcheckOverviewPage,D as SoundcheckRoutingPage,H as soundcheckPlugin};
|
|
2
2
|
//# sourceMappingURL=index.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.9.1",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"homepage": "https://backstage.spotify.com",
|
|
7
7
|
"main": "dist/index.esm.js",
|
|
@@ -27,20 +27,24 @@
|
|
|
27
27
|
"prepare": "yarn generate"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@backstage/catalog-client": "^1.4.
|
|
31
|
-
"@backstage/catalog-model": "^1.4.
|
|
32
|
-
"@backstage/core-components": "^0.13.
|
|
33
|
-
"@backstage/core-plugin-api": "^1.
|
|
34
|
-
"@backstage/plugin-catalog-react": "^1.
|
|
35
|
-
"@backstage/plugin-permission-react": "^0.4.
|
|
36
|
-
"@backstage/theme": "^0.4.
|
|
30
|
+
"@backstage/catalog-client": "^1.4.6",
|
|
31
|
+
"@backstage/catalog-model": "^1.4.3",
|
|
32
|
+
"@backstage/core-components": "^0.13.8",
|
|
33
|
+
"@backstage/core-plugin-api": "^1.8.0",
|
|
34
|
+
"@backstage/plugin-catalog-react": "^1.9.1",
|
|
35
|
+
"@backstage/plugin-permission-react": "^0.4.17",
|
|
36
|
+
"@backstage/theme": "^0.4.4",
|
|
37
37
|
"@backstage/types": "^1.1.1",
|
|
38
|
+
"@date-io/luxon": "^1.0.0",
|
|
38
39
|
"@material-ui/core": "^4.12.2",
|
|
39
40
|
"@material-ui/icons": "^4.9.1",
|
|
40
41
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
41
|
-
"@
|
|
42
|
-
"@spotify/backstage-plugin-
|
|
42
|
+
"@material-ui/pickers": "^3.3.10",
|
|
43
|
+
"@spotify/backstage-plugin-core": "^0.5.8",
|
|
44
|
+
"@spotify/backstage-plugin-soundcheck-common": "^0.9.1",
|
|
43
45
|
"@tanstack/react-query": "^4.6.1",
|
|
46
|
+
"@types/react-csv": "^1.1.6",
|
|
47
|
+
"@uiw/react-md-editor": "3.19.5",
|
|
44
48
|
"classnames": "^2.3.2",
|
|
45
49
|
"cron-validate": "^1.4.5",
|
|
46
50
|
"cronstrue": "^2.28.0",
|
|
@@ -50,12 +54,14 @@
|
|
|
50
54
|
"luxon": "^3.1.1",
|
|
51
55
|
"react-circular-progressbar": "^2.1.0",
|
|
52
56
|
"react-confetti": "^6.1.0",
|
|
57
|
+
"react-csv": "^2.2.2",
|
|
53
58
|
"react-dnd": "^16.0.1",
|
|
54
59
|
"react-dnd-html5-backend": "^16.0.1",
|
|
55
60
|
"react-hook-form": "^7.19.5",
|
|
56
61
|
"react-use": "^17.2.4",
|
|
57
62
|
"react-window": "^1.8.8",
|
|
58
63
|
"recharts": "^2.8.0",
|
|
64
|
+
"rehype-sanitize": "^6.0.0",
|
|
59
65
|
"uuid": "^9.0.0"
|
|
60
66
|
},
|
|
61
67
|
"peerDependencies": {
|
|
@@ -63,17 +69,17 @@
|
|
|
63
69
|
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
|
64
70
|
},
|
|
65
71
|
"devDependencies": {
|
|
66
|
-
"@backstage/cli": "^0.
|
|
67
|
-
"@backstage/core-app-api": "^1.
|
|
68
|
-
"@backstage/dev-utils": "^1.0.
|
|
69
|
-
"@backstage/test-utils": "^1.
|
|
72
|
+
"@backstage/cli": "^0.24.0",
|
|
73
|
+
"@backstage/core-app-api": "^1.11.1",
|
|
74
|
+
"@backstage/dev-utils": "^1.0.24",
|
|
75
|
+
"@backstage/e2e-test-utils": "^0.1.0",
|
|
76
|
+
"@backstage/test-utils": "^1.4.5",
|
|
70
77
|
"@graphql-codegen/cli": "^5.0.0",
|
|
71
78
|
"@graphql-codegen/typescript": "^4.0.0",
|
|
72
79
|
"@graphql-codegen/typescript-graphql-request": "^5.0.0",
|
|
73
80
|
"@graphql-codegen/typescript-operations": "^4.0.0",
|
|
74
81
|
"@playwright/test": "^1.32.3",
|
|
75
|
-
"@
|
|
76
|
-
"@spotify/backstage-plugin-core-common": "^0.5.6",
|
|
82
|
+
"@spotify/backstage-plugin-core-common": "^0.5.8",
|
|
77
83
|
"@testing-library/jest-dom": "^6.0.0",
|
|
78
84
|
"@testing-library/react": "^12.1.5",
|
|
79
85
|
"@testing-library/react-hooks": "^8.0.1",
|
|
@@ -82,7 +88,7 @@
|
|
|
82
88
|
"@types/luxon": "^3.0.1",
|
|
83
89
|
"@types/node": "^18.0.0",
|
|
84
90
|
"@types/react-window": "^1.8.5",
|
|
85
|
-
"cross-fetch": "^
|
|
91
|
+
"cross-fetch": "^4.0.0",
|
|
86
92
|
"msw": "^1.0.0"
|
|
87
93
|
},
|
|
88
94
|
"files": [
|