@spotify/backstage-plugin-soundcheck 0.16.2 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/alpha/integrations.esm.js +2 -0
  3. package/dist/alpha/pages.esm.js +1 -1
  4. package/dist/alpha/plugin.esm.js +1 -1
  5. package/dist/alpha.d.ts +252 -17
  6. package/dist/api.esm.js +1 -1
  7. package/dist/blueprints/IntegrationPageBlueprint.esm.js +2 -0
  8. package/dist/components/Badges/LevelBadge.esm.js +1 -1
  9. package/dist/components/CampaignForm/hooks/utils.esm.js +1 -1
  10. package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +1 -1
  11. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.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/CheckDetails/CheckResultDetails.esm.js +1 -1
  15. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  16. package/dist/components/CheckDryRun/CheckDryRunDetails.esm.js +1 -1
  17. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js +1 -1
  18. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/FactValueDisplay.esm.js +1 -1
  19. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  20. package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js +1 -1
  21. package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  22. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
  23. package/dist/components/CheckForm/utils/checkFormUtils.esm.js +2 -2
  24. package/dist/components/CheckForm/utils/validation.esm.js +1 -1
  25. package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
  26. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
  27. package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
  28. package/dist/components/CheckPage/ExemptionsTable.esm.js +2 -0
  29. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  30. package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
  31. package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
  32. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  33. package/dist/components/CollectorPage/Configurators/PagerDuty/utils.esm.js +1 -1
  34. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
  35. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  36. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  37. package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
  38. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  39. package/dist/components/FactExplorer/FactExplorerDialog.esm.js +1 -1
  40. package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
  41. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  42. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  43. package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
  44. package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +1 -1
  45. package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
  46. package/dist/components/LevelsTable/CheckRowContent.esm.js +1 -1
  47. package/dist/components/OrgInsights/OrgInsightsPage.esm.js +2 -0
  48. package/dist/components/OrgInsights/OrgInsightsSidebar.esm.js +2 -0
  49. package/dist/components/OrgInsights/OrgInsightsViewSelector.esm.js +2 -0
  50. package/dist/components/OrgInsights/TrackCardGrid.esm.js +2 -0
  51. package/dist/components/OrgInsights/TrackComparison.esm.js +2 -0
  52. package/dist/components/OrgInsights/TrackStatusTile.esm.js +2 -0
  53. package/dist/components/OrgInsights/styles.esm.js +2 -0
  54. package/dist/components/OverviewPage/OverviewPageHeader.esm.js +1 -1
  55. package/dist/components/OverviewTable/Cell/CheckNameCell.esm.js +1 -1
  56. package/dist/components/OverviewTable/Cell/TrackCheckStatusCount.esm.js +2 -0
  57. package/dist/components/OverviewTable/Cell/cellRenderer.esm.js +1 -1
  58. package/dist/components/OverviewTable/OverviewTableContent.esm.js +1 -1
  59. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  60. package/dist/components/OverviewTable/ResultsTableRow.esm.js +1 -1
  61. package/dist/components/Router.esm.js +1 -1
  62. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  63. package/dist/components/RoutingPage/index.esm.js +1 -1
  64. package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
  65. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  66. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  67. package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +1 -1
  68. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
  69. package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
  70. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  71. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  72. package/dist/components/TrackPage/TrackStatusBar.esm.js +1 -1
  73. package/dist/components/TrackPage/TrackStatusTable.esm.js +1 -1
  74. package/dist/contexts/UserProvider.esm.js +1 -1
  75. package/dist/graphql/generated/index.esm.js +56 -22
  76. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  77. package/dist/hooks/campaigns/useCreateCampaign.esm.js +1 -1
  78. package/dist/hooks/campaigns/useUpdateCampaign.esm.js +1 -1
  79. package/dist/hooks/certifications/useTrackOverviewForOwner.esm.js +1 -1
  80. package/dist/hooks/checks/useCreateCheck.esm.js +1 -1
  81. package/dist/hooks/checks/useSetManualResult.esm.js +1 -1
  82. package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
  83. package/dist/hooks/collectors/useUpdateCollectorConfig.esm.js +1 -1
  84. package/dist/hooks/exemptions/useDeleteExemption.esm.js +1 -1
  85. package/dist/hooks/exemptions/useExemptCheckIds.esm.js +1 -1
  86. package/dist/hooks/exemptions/useExemptions.esm.js +2 -0
  87. package/dist/hooks/exemptions/useGetExemption.esm.js +1 -1
  88. package/dist/hooks/exemptions/useSetEntityExempt.esm.js +1 -1
  89. package/dist/hooks/graphqlKeys.esm.js +1 -1
  90. package/dist/hooks/tracks/useCreateTrack.esm.js +1 -1
  91. package/dist/hooks/tracks/useUpdateTrack.esm.js +1 -1
  92. package/dist/index.d.ts +85 -1
  93. package/dist/index.esm.js +1 -1
  94. package/dist/utils/validation.esm.js +1 -1
  95. package/package.json +18 -18
  96. package/dist/components/CheckForm/FormFields/RuleInput/useRuleInputHandlers.esm.js +0 -2
  97. package/dist/components/OrgHealth/OrgHealthPage.esm.js +0 -2
  98. package/dist/components/OverviewTable/Cell/TrackCheckIndicator.esm.js +0 -2
@@ -1,2 +1,2 @@
1
- import{jsx as a,jsxs as s}from"react/jsx-runtime";import{useTheme as y,Typography as p}from"@material-ui/core";import{makeStyles as v,createStyles as k}from"@material-ui/core/styles";import{Skeleton as d}from"@material-ui/lab";import{memo as x,useMemo as N,Fragment as S}from"react";import{compactNumberFormatter as h}from"../../utils/formatters.esm.js";import{getChartColors as w}from"../Charts/chartUtils.esm.js";const C=v(e=>k({container:{display:"grid",gridTemplateColumns:"3fr 2fr",gap:e.spacing(1),minWidth:0},item:{display:"flex",alignItems:"center",fontSize:"0.875rem",minWidth:0},legendDash:{width:e.spacing(2),height:e.spacing(.75),borderRadius:e.spacing(.375),marginRight:e.spacing(1)},category:{display:"flex",alignItems:"center",fontSize:"0.875rem",minWidth:0,flex:1},categoryText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontSize:"0.875rem",minWidth:0,flex:1},value:{fontSize:"0.875rem",color:e.palette.text.primary},valueCell:{justifyContent:"flex-end",whiteSpace:"nowrap"},percentage:{color:e.palette.text.secondary,marginLeft:e.spacing(1)},skeleton:{backgroundColor:e.palette.action.hover}})),T=x(({track:e,status:m})=>{const r=y(),t=C(),g=N(()=>{if(!e)return[{name:"",key:1,color:r.palette.action.hover},{name:"",key:2,color:r.palette.action.hover},{name:"",key:3,color:r.palette.action.hover}];const o=w(r);return e.levels.map(({name:n,ordinal:l},i)=>({name:n??`Level ${l}`,key:l,color:o[i%o.length]}))},[r,e]),c=m?.numberOfEntities??0;return a("div",{className:t.container,children:g.map(({name:o,key:n,color:l})=>{const i=m?.statusByLevel.find(({ordinal:u})=>u===n)?.cumulativelyPassed??0,f=c>0?Math.round(i/c*100):0;return s(S,{children:[a("div",{className:t.item,children:s("div",{className:t.category,children:[a("span",{className:t.legendDash,style:{backgroundColor:l}}),e?a(p,{className:t.categoryText,children:o}):a(d,{width:80,height:20,className:t.skeleton})]})}),a("div",{className:`${t.item} ${t.valueCell}`,children:e&&m?s(p,{className:t.value,children:[h(i)," of"," ",h(c),s("span",{className:t.percentage,children:["(",f,"%)"]})]}):a(d,{width:120,height:20,className:t.skeleton})})]},n)})})});export{T as TrackStatusTable};
1
+ import{jsx as a,jsxs as l}from"react/jsx-runtime";import{useTheme as y,Typography as p}from"@material-ui/core";import{makeStyles as v,createStyles as k}from"@material-ui/core/styles";import{Skeleton as d}from"@material-ui/lab";import{memo as x,useMemo as N,Fragment as S}from"react";import{compactNumberFormatter as h}from"../../utils/formatters.esm.js";import{getChartColors as w}from"../Charts/chartUtils.esm.js";const C=v(e=>k({container:{display:"grid",gridTemplateColumns:"3fr 2fr",gap:e.spacing(1),minWidth:0},item:{display:"flex",alignItems:"center",fontSize:"0.875rem",minWidth:0},legendDash:{width:e.spacing(2),height:e.spacing(.75),borderRadius:e.spacing(.375),marginRight:e.spacing(1)},category:{display:"flex",alignItems:"center",fontSize:"0.875rem",minWidth:0,flex:1},categoryText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontSize:"0.875rem",minWidth:0,flex:1},value:{fontSize:"0.875rem",color:e.palette.text.primary},valueCell:{justifyContent:"flex-end",whiteSpace:"nowrap"},percentage:{color:e.palette.text.secondary,marginLeft:e.spacing(1)},skeleton:{backgroundColor:e.palette.action.hover}})),T=x(({track:e,status:s})=>{const r=y(),t=C(),g=N(()=>{if(!e)return[{name:"",key:1,color:r.palette.action.hover},{name:"",key:2,color:r.palette.action.hover},{name:"",key:3,color:r.palette.action.hover}];const n=w(r);return e.levels.map(({name:i,ordinal:o})=>({name:i??`Level ${o}`,key:o,color:n[o%n.length]}))},[r,e]),c=s?.numberOfEntities??0;return a("div",{className:t.container,children:g.map(({name:n,key:i,color:o})=>{const m=s?.statusByLevel.find(({ordinal:u})=>u===i)?.cumulativelyPassed??0,f=c>0?Math.round(m/c*100):0;return l(S,{children:[a("div",{className:t.item,children:l("div",{className:t.category,children:[a("span",{className:t.legendDash,style:{backgroundColor:o}}),e?a(p,{className:t.categoryText,children:n}):a(d,{width:80,height:20,className:t.skeleton})]})}),a("div",{className:`${t.item} ${t.valueCell}`,children:e&&s?l(p,{className:t.value,children:[h(m)," of"," ",h(c),l("span",{className:t.percentage,children:["(",f,"%)"]})]}):a(d,{width:120,height:20,className:t.skeleton})})]},i)})})});export{T as TrackStatusTable};
2
2
  //# sourceMappingURL=TrackStatusTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as d}from"react/jsx-runtime";import{stringifyEntityRef as g}from"@backstage/catalog-model";import{useApi as a,identityApiRef as p}from"@backstage/core-plugin-api";import{catalogApiRef as y}from"@backstage/plugin-catalog-react";import{createContext as R,useState as E,useEffect as v,useContext as x}from"react";import A from"react-use/lib/useAsync";const f={loading:!0},l=R(f),C=()=>x(l),P=({children:u})=>{const[m,n]=E(f),s=a(y),t=a(p),{value:e,loading:r,error:o}=A(async()=>{const[{token:i},c]=await Promise.all([t.getCredentials(),t.getBackstageIdentity()]);return i?await s.getEntityByRef(c.userEntityRef):null},[s,t]);return v(()=>{if(e){const i=g(e);n({user:e,userEntityRef:i,loading:r,error:o})}else n({loading:r,error:o})},[e,r,o]),d(l.Provider,{value:m,children:u})};export{P as UserProvider,C as useLoggedInUser};
1
+ import{jsx as d}from"react/jsx-runtime";import{stringifyEntityRef as g}from"@backstage/catalog-model";import{useApi as a,identityApiRef as p}from"@backstage/core-plugin-api";import{catalogApiRef as y}from"@backstage/plugin-catalog-react";import{createContext as R,useState as E,useEffect as v,useContext as x}from"react";import C from"react-use/lib/useAsync";const f={loading:!0},l=R(f),A=()=>x(l),P=({children:u})=>{const[m,n]=E(f),s=a(y),t=a(p),{value:e,loading:r,error:o}=C(async()=>{const[{token:i},c]=await Promise.all([t.getCredentials(),t.getBackstageIdentity()]);return i?await s.getEntityByRef(c.userEntityRef):null},[s,t]);return v(()=>{if(e){const i=g(e);n({user:e,userEntityRef:i,loading:r,error:o})}else n({loading:r,error:o})},[e,r,o]),d(l.Provider,{value:m,children:u})};export{P as UserProvider,A as useLoggedInUser};
2
2
  //# sourceMappingURL=UserProvider.esm.js.map
@@ -5,6 +5,7 @@ import i from"graphql-tag";var o=(r=>(r.Medal="MEDAL",r.Status="STATUS",r))(o||{
5
5
  options {
6
6
  color
7
7
  level
8
+ svg
8
9
  }
9
10
  }
10
11
  ... on BadgeVariantStatus {
@@ -112,6 +113,7 @@ ${h}`,y=i`
112
113
  }
113
114
  totalCount
114
115
  totalPassing
116
+ totalFailing
115
117
  }
116
118
  }
117
119
  `,$=i`
@@ -175,11 +177,11 @@ ${h}`,y=i`
175
177
  description
176
178
  }
177
179
  }
178
- `,T=i`
180
+ `,I=i`
179
181
  mutation deleteChecker($checkerId: String!) {
180
182
  deleteChecker(checkerId: $checkerId)
181
183
  }
182
- `,I=i`
184
+ `,T=i`
183
185
  mutation deleteExemption($checkId: String!, $entityRef: String!) {
184
186
  deleteExemption(checkId: $checkId, entityRef: $entityRef) {
185
187
  check_id
@@ -199,6 +201,7 @@ ${h}`,y=i`
199
201
  data
200
202
  timestamp
201
203
  entityRef
204
+ sensitive
202
205
  }
203
206
  ruleResults {
204
207
  name
@@ -610,6 +613,30 @@ ${u}`,_=i`
610
613
  }
611
614
  }
612
615
  `,ne=i`
616
+ query getExemptions($checkId: String!, $first: Int, $after: String, $last: Int, $before: String) {
617
+ exemptions(
618
+ input: {checkId: $checkId, first: $first, after: $after, last: $last, before: $before}
619
+ ) {
620
+ totalCount
621
+ edges {
622
+ node {
623
+ check_id
624
+ entity_ref
625
+ user_ref
626
+ justification
627
+ timestamp
628
+ }
629
+ cursor
630
+ }
631
+ pageInfo {
632
+ hasNextPage
633
+ hasPreviousPage
634
+ startCursor
635
+ endCursor
636
+ }
637
+ }
638
+ }
639
+ `,se=i`
613
640
  query getFacetsForOwner($ownerEntityRef: String!) {
614
641
  facetsForOwner(ownerEntityRef: $ownerEntityRef) {
615
642
  types {
@@ -619,7 +646,7 @@ ${u}`,_=i`
619
646
  }
620
647
  }
621
648
  }
622
- `,se=i`
649
+ `,ue=i`
623
650
  query getFact($entityRef: String!, $factRef: String!, $path: String, $pathResolver: String, $refresh: Boolean) {
624
651
  fact(
625
652
  entityRef: $entityRef
@@ -633,6 +660,7 @@ ${u}`,_=i`
633
660
  data
634
661
  entityRef
635
662
  timestamp
663
+ sensitive
636
664
  }
637
665
  collectionError {
638
666
  factRef
@@ -643,7 +671,7 @@ ${u}`,_=i`
643
671
  resolvedValue
644
672
  }
645
673
  }
646
- `,ue=i`
674
+ `,ce=i`
647
675
  query getCollectors($ids: [String!]) {
648
676
  collectors(ids: $ids) {
649
677
  id
@@ -651,6 +679,7 @@ ${u}`,_=i`
651
679
  description
652
680
  factNames
653
681
  config
682
+ configSchema
654
683
  isConfigurable
655
684
  isEditable
656
685
  collectionConfigs {
@@ -660,15 +689,20 @@ ${u}`,_=i`
660
689
  cache
661
690
  exclude
662
691
  }
692
+ hasUIConfig
693
+ dependentChecks {
694
+ id
695
+ name
696
+ }
663
697
  }
664
698
  }
665
- `,ce=i`
699
+ `,oe=i`
666
700
  query getFactSchemas($collectorId: String!, $factName: String!) {
667
701
  factSchema(collectorId: $collectorId, factName: $factName) {
668
702
  schema
669
703
  }
670
704
  }
671
- `,oe=i`
705
+ `,le=i`
672
706
  query getIndividualCheckPassRates($filter: Filter) {
673
707
  individualCheckPassRates(filter: $filter) {
674
708
  id
@@ -679,7 +713,7 @@ ${u}`,_=i`
679
713
  trendPassRates
680
714
  }
681
715
  }
682
- `,le=i`
716
+ `,de=i`
683
717
  query getIndividualEntityPassRates($input: PassRatesInput) {
684
718
  individualEntityPassRates(input: $input) {
685
719
  totalCount
@@ -701,7 +735,7 @@ ${u}`,_=i`
701
735
  }
702
736
  }
703
737
  }
704
- `,de=i`
738
+ `,pe=i`
705
739
  query getIndividualGroupPassRates($input: PassRatesInput) {
706
740
  groupPassRates(input: $input) {
707
741
  totalCount
@@ -723,7 +757,7 @@ ${u}`,_=i`
723
757
  }
724
758
  }
725
759
  }
726
- `,pe=i`
760
+ `,ge=i`
727
761
  query getIndividualTrackPassRate($filter: Filter) {
728
762
  individualTrackPassRate(filter: $filter) {
729
763
  id
@@ -738,25 +772,25 @@ ${u}`,_=i`
738
772
  }
739
773
  }
740
774
  }
741
- `,ge=i`
775
+ `,me=i`
742
776
  query getOperators {
743
777
  operators {
744
778
  name
745
779
  title
746
780
  }
747
781
  }
748
- `,me=i`
782
+ `,fe=i`
749
783
  query getOverallCheckPassRates($filter: Filter) {
750
784
  overallCheckPassRates(filter: $filter)
751
785
  }
752
- `,fe=i`
786
+ `,ke=i`
753
787
  query getOverallEntityPassRates($filter: Filter) {
754
788
  overallEntityPassRates(filter: $filter) {
755
789
  id
756
790
  trendPassRates
757
791
  }
758
792
  }
759
- `,ke=i`
793
+ `,Ce=i`
760
794
  query getOverallGroupPassRates($input: PassRatesInput) {
761
795
  groupPassRates(input: $input) {
762
796
  totalCount
@@ -776,7 +810,7 @@ ${u}`,_=i`
776
810
  }
777
811
  }
778
812
  }
779
- `,Ce=i`
813
+ `,he=i`
780
814
  query getOverallTrackPassRate($filter: Filter) {
781
815
  overallTrackPassRate(filter: $filter) {
782
816
  levelOrdinal
@@ -784,13 +818,13 @@ ${u}`,_=i`
784
818
  trendPassRates
785
819
  }
786
820
  }
787
- `,he=i`
821
+ `,ye=i`
788
822
  query getPathResolvers {
789
823
  pathResolvers {
790
824
  id
791
825
  }
792
826
  }
793
- `,ye=i`
827
+ `,Re=i`
794
828
  query getPlaylists($entityRef: String!) {
795
829
  playlists(entityRef: $entityRef) {
796
830
  id
@@ -800,7 +834,7 @@ ${u}`,_=i`
800
834
  trackIds
801
835
  }
802
836
  }
803
- `,Re=i`
837
+ `,$e=i`
804
838
  query getTrackOverviewForOwner($ownerEntityRef: String!, $facet: FacetInput, $first: Int, $after: String, $entitySearch: String) {
805
839
  trackOverviewForOwner(
806
840
  ownerEntityRef: $ownerEntityRef
@@ -832,7 +866,7 @@ ${u}`,_=i`
832
866
  }
833
867
  }
834
868
  ${$}
835
- ${R}`,$e=i`
869
+ ${R}`,qe=i`
836
870
  query getTrack($id: ID!) {
837
871
  track(id: $id) {
838
872
  id
@@ -854,7 +888,7 @@ ${R}`,$e=i`
854
888
  }
855
889
  }
856
890
  ${c}
857
- ${s}`,qe=i`
891
+ ${s}`,ve=i`
858
892
  query getTrackEntities($input: TrackEntitiesInput!) {
859
893
  trackEntities(input: $input) {
860
894
  totalCount
@@ -891,11 +925,11 @@ ${s}`,qe=i`
891
925
  }
892
926
  }
893
927
  }
894
- ${s}`,ve=i`
928
+ ${s}`,Ee=i`
895
929
  query getTrackOwners {
896
930
  trackOwners
897
931
  }
898
- `,Ee=i`
932
+ `,De=i`
899
933
  query getTracks($filter: ListEntityFilter!) {
900
934
  tracks(filter: $filter) {
901
935
  totalCount
@@ -929,5 +963,5 @@ ${s}`,qe=i`
929
963
  }
930
964
  }
931
965
  ${c}
932
- ${s}`,De=(r,n,e,t)=>r();function Se(r,n=De){return{archiveCampaign(e,t){return n(a=>r.request(v,e,{...t,...a}),"archiveCampaign","mutation",e)},createCampaign(e,t){return n(a=>r.request(E,e,{...t,...a}),"createCampaign","mutation",e)},deleteCampaign(e,t){return n(a=>r.request(D,e,{...t,...a}),"deleteCampaign","mutation",e)},updateCampaign(e,t){return n(a=>r.request(S,e,{...t,...a}),"updateCampaign","mutation",e)},createCheck(e,t){return n(a=>r.request(P,e,{...t,...a}),"createCheck","mutation",e)},deleteChecker(e,t){return n(a=>r.request(T,e,{...t,...a}),"deleteChecker","mutation",e)},deleteExemption(e,t){return n(a=>r.request(I,e,{...t,...a}),"deleteExemption","mutation",e)},executeCheck(e,t){return n(a=>r.request(F,e,{...t,...a}),"executeCheck","mutation",e)},setEntityExempt(e,t){return n(a=>r.request(O,e,{...t,...a}),"setEntityExempt","mutation",e)},setManualCheckResult(e,t){return n(a=>r.request(w,e,{...t,...a}),"setManualCheckResult","mutation",e)},createTrack(e,t){return n(a=>r.request(x,e,{...t,...a}),"createTrack","mutation",e)},deleteTrack(e,t){return n(a=>r.request(G,e,{...t,...a}),"deleteTrack","mutation",e)},updateTrack(e,t){return n(a=>r.request(L,e,{...t,...a}),"updateTrack","mutation",e)},updateCheck(e,t){return n(a=>r.request(b,e,{...t,...a}),"updateCheck","mutation",e)},updateCollectorConfig(e,t){return n(a=>r.request(A,e,{...t,...a}),"updateCollectorConfig","mutation",e)},getAllCertifications(e,t){return n(a=>r.request(N,e,{...t,...a}),"getAllCertifications","query",e)},getCampaignOwners(e,t){return n(a=>r.request(B,e,{...t,...a}),"getCampaignOwners","query",e)},getCampaigns(e,t){return n(a=>r.request(H,e,{...t,...a}),"getCampaigns","query",e)},getCertificationDetails(e,t){return n(a=>r.request(M,e,{...t,...a}),"getCertificationDetails","query",e)},getCertificationDetailsForTrack(e,t){return n(a=>r.request(V,e,{...t,...a}),"getCertificationDetailsForTrack","query",e)},getCertificationStatus(e,t){return n(a=>r.request(_,e,{...t,...a}),"getCertificationStatus","query",e)},getCertificationStatusHistory(e,t){return n(a=>r.request(U,e,{...t,...a}),"getCertificationStatusHistory","query",e)},getCheckResultDetails(e,t){return n(a=>r.request(Y,e,{...t,...a}),"getCheckResultDetails","query",e)},getCheckEntities(e,t){return n(a=>r.request(W,e,{...t,...a}),"getCheckEntities","query",e)},getCheckOwners(e,t){return n(a=>r.request(j,e,{...t,...a}),"getCheckOwners","query",e)},getCheckStatus(e,t){return n(a=>r.request(K,e,{...t,...a}),"getCheckStatus","query",e)},getCheckStatusHistories(e,t){return n(a=>r.request(X,e,{...t,...a}),"getCheckStatusHistories","query",e)},getCheckStatusHistory(e,t){return n(a=>r.request(z,e,{...t,...a}),"getCheckStatusHistory","query",e)},getCheckStatuses(e,t){return n(a=>r.request(J,e,{...t,...a}),"getCheckStatuses","query",e)},getCheckTemplates(e,t){return n(a=>r.request(Q,e,{...t,...a}),"getCheckTemplates","query",e)},getCheck(e,t){return n(a=>r.request(Z,e,{...t,...a}),"getCheck","query",e)},getCheckers(e,t){return n(a=>r.request(ee,e,{...t,...a}),"getCheckers","query",e)},getEntityRefsForTechHealthFilter(e,t){return n(a=>r.request(te,e,{...t,...a}),"getEntityRefsForTechHealthFilter","query",e)},getExecutableChecks(e,t){return n(a=>r.request(ae,e,{...t,...a}),"getExecutableChecks","query",e)},getExemptCheckIds(e,t){return n(a=>r.request(re,e,{...t,...a}),"getExemptCheckIds","query",e)},getExemption(e,t){return n(a=>r.request(ie,e,{...t,...a}),"getExemption","query",e)},getFacetsForOwner(e,t){return n(a=>r.request(ne,e,{...t,...a}),"getFacetsForOwner","query",e)},getFact(e,t){return n(a=>r.request(se,e,{...t,...a}),"getFact","query",e)},getCollectors(e,t){return n(a=>r.request(ue,e,{...t,...a}),"getCollectors","query",e)},getFactSchemas(e,t){return n(a=>r.request(ce,e,{...t,...a}),"getFactSchemas","query",e)},getIndividualCheckPassRates(e,t){return n(a=>r.request(oe,e,{...t,...a}),"getIndividualCheckPassRates","query",e)},getIndividualEntityPassRates(e,t){return n(a=>r.request(le,e,{...t,...a}),"getIndividualEntityPassRates","query",e)},getIndividualGroupPassRates(e,t){return n(a=>r.request(de,e,{...t,...a}),"getIndividualGroupPassRates","query",e)},getIndividualTrackPassRate(e,t){return n(a=>r.request(pe,e,{...t,...a}),"getIndividualTrackPassRate","query",e)},getOperators(e,t){return n(a=>r.request(ge,e,{...t,...a}),"getOperators","query",e)},getOverallCheckPassRates(e,t){return n(a=>r.request(me,e,{...t,...a}),"getOverallCheckPassRates","query",e)},getOverallEntityPassRates(e,t){return n(a=>r.request(fe,e,{...t,...a}),"getOverallEntityPassRates","query",e)},getOverallGroupPassRates(e,t){return n(a=>r.request(ke,e,{...t,...a}),"getOverallGroupPassRates","query",e)},getOverallTrackPassRate(e,t){return n(a=>r.request(Ce,e,{...t,...a}),"getOverallTrackPassRate","query",e)},getPathResolvers(e,t){return n(a=>r.request(he,e,{...t,...a}),"getPathResolvers","query",e)},getPlaylists(e,t){return n(a=>r.request(ye,e,{...t,...a}),"getPlaylists","query",e)},getTrackOverviewForOwner(e,t){return n(a=>r.request(Re,e,{...t,...a}),"getTrackOverviewForOwner","query",e)},getTrack(e,t){return n(a=>r.request($e,e,{...t,...a}),"getTrack","query",e)},getTrackEntities(e,t){return n(a=>r.request(qe,e,{...t,...a}),"getTrackEntities","query",e)},getTrackOwners(e,t){return n(a=>r.request(ve,e,{...t,...a}),"getTrackOwners","query",e)},getTracks(e,t){return n(a=>r.request(Ee,e,{...t,...a}),"getTracks","query",e)}}}export{v as ArchiveCampaignDocument,o as BadgeVariant,s as BadgeVariantsFragmentDoc,k as CampaignLevelFragmentDoc,f as CertificationSummaryFragmentDoc,l as CheckEntityField,y as CheckResultDetailsFragmentDoc,h as CheckResultSummaryFragmentDoc,d as CheckerType,E as CreateCampaignDocument,P as CreateCheckDocument,x as CreateTrackDocument,D as DeleteCampaignDocument,T as DeleteCheckerDocument,I as DeleteExemptionDocument,G as DeleteTrackDocument,p as Direction,F as ExecuteCheckDocument,N as GetAllCertificationsDocument,B as GetCampaignOwnersDocument,H as GetCampaignsDocument,M as GetCertificationDetailsDocument,V as GetCertificationDetailsForTrackDocument,_ as GetCertificationStatusDocument,U as GetCertificationStatusHistoryDocument,Z as GetCheckDocument,W as GetCheckEntitiesDocument,j as GetCheckOwnersDocument,Y as GetCheckResultDetailsDocument,K as GetCheckStatusDocument,X as GetCheckStatusHistoriesDocument,z as GetCheckStatusHistoryDocument,J as GetCheckStatusesDocument,Q as GetCheckTemplatesDocument,ee as GetCheckersDocument,ue as GetCollectorsDocument,te as GetEntityRefsForTechHealthFilterDocument,ae as GetExecutableChecksDocument,re as GetExemptCheckIdsDocument,ie as GetExemptionDocument,ne as GetFacetsForOwnerDocument,se as GetFactDocument,ce as GetFactSchemasDocument,oe as GetIndividualCheckPassRatesDocument,le as GetIndividualEntityPassRatesDocument,de as GetIndividualGroupPassRatesDocument,pe as GetIndividualTrackPassRateDocument,ge as GetOperatorsDocument,me as GetOverallCheckPassRatesDocument,fe as GetOverallEntityPassRatesDocument,ke as GetOverallGroupPassRatesDocument,Ce as GetOverallTrackPassRateDocument,he as GetPathResolversDocument,ye as GetPlaylistsDocument,$e as GetTrackDocument,qe as GetTrackEntitiesDocument,Re as GetTrackOverviewForOwnerDocument,ve as GetTrackOwnersDocument,Ee as GetTracksDocument,q as HighestLevelFragmentDoc,u as LevelResultDetailsFragmentDoc,C as MilestoneFragmentDoc,R as OverviewLevelResultFragmentDoc,g as ResultState,O as SetEntityExemptDocument,w as SetManualCheckResultDocument,m as TrackEntityField,c as TrackLevelFragmentDoc,$ as TrackStatusFragmentDoc,S as UpdateCampaignDocument,b as UpdateCheckDocument,A as UpdateCollectorConfigDocument,L as UpdateTrackDocument,Se as getSdk};
966
+ ${s}`,Se=(r,n,e,t)=>r();function Pe(r,n=Se){return{archiveCampaign(e,t){return n(a=>r.request(v,e,{...t,...a}),"archiveCampaign","mutation",e)},createCampaign(e,t){return n(a=>r.request(E,e,{...t,...a}),"createCampaign","mutation",e)},deleteCampaign(e,t){return n(a=>r.request(D,e,{...t,...a}),"deleteCampaign","mutation",e)},updateCampaign(e,t){return n(a=>r.request(S,e,{...t,...a}),"updateCampaign","mutation",e)},createCheck(e,t){return n(a=>r.request(P,e,{...t,...a}),"createCheck","mutation",e)},deleteChecker(e,t){return n(a=>r.request(I,e,{...t,...a}),"deleteChecker","mutation",e)},deleteExemption(e,t){return n(a=>r.request(T,e,{...t,...a}),"deleteExemption","mutation",e)},executeCheck(e,t){return n(a=>r.request(F,e,{...t,...a}),"executeCheck","mutation",e)},setEntityExempt(e,t){return n(a=>r.request(O,e,{...t,...a}),"setEntityExempt","mutation",e)},setManualCheckResult(e,t){return n(a=>r.request(w,e,{...t,...a}),"setManualCheckResult","mutation",e)},createTrack(e,t){return n(a=>r.request(x,e,{...t,...a}),"createTrack","mutation",e)},deleteTrack(e,t){return n(a=>r.request(G,e,{...t,...a}),"deleteTrack","mutation",e)},updateTrack(e,t){return n(a=>r.request(L,e,{...t,...a}),"updateTrack","mutation",e)},updateCheck(e,t){return n(a=>r.request(b,e,{...t,...a}),"updateCheck","mutation",e)},updateCollectorConfig(e,t){return n(a=>r.request(A,e,{...t,...a}),"updateCollectorConfig","mutation",e)},getAllCertifications(e,t){return n(a=>r.request(N,e,{...t,...a}),"getAllCertifications","query",e)},getCampaignOwners(e,t){return n(a=>r.request(B,e,{...t,...a}),"getCampaignOwners","query",e)},getCampaigns(e,t){return n(a=>r.request(H,e,{...t,...a}),"getCampaigns","query",e)},getCertificationDetails(e,t){return n(a=>r.request(M,e,{...t,...a}),"getCertificationDetails","query",e)},getCertificationDetailsForTrack(e,t){return n(a=>r.request(V,e,{...t,...a}),"getCertificationDetailsForTrack","query",e)},getCertificationStatus(e,t){return n(a=>r.request(_,e,{...t,...a}),"getCertificationStatus","query",e)},getCertificationStatusHistory(e,t){return n(a=>r.request(U,e,{...t,...a}),"getCertificationStatusHistory","query",e)},getCheckResultDetails(e,t){return n(a=>r.request(Y,e,{...t,...a}),"getCheckResultDetails","query",e)},getCheckEntities(e,t){return n(a=>r.request(W,e,{...t,...a}),"getCheckEntities","query",e)},getCheckOwners(e,t){return n(a=>r.request(j,e,{...t,...a}),"getCheckOwners","query",e)},getCheckStatus(e,t){return n(a=>r.request(K,e,{...t,...a}),"getCheckStatus","query",e)},getCheckStatusHistories(e,t){return n(a=>r.request(X,e,{...t,...a}),"getCheckStatusHistories","query",e)},getCheckStatusHistory(e,t){return n(a=>r.request(z,e,{...t,...a}),"getCheckStatusHistory","query",e)},getCheckStatuses(e,t){return n(a=>r.request(J,e,{...t,...a}),"getCheckStatuses","query",e)},getCheckTemplates(e,t){return n(a=>r.request(Q,e,{...t,...a}),"getCheckTemplates","query",e)},getCheck(e,t){return n(a=>r.request(Z,e,{...t,...a}),"getCheck","query",e)},getCheckers(e,t){return n(a=>r.request(ee,e,{...t,...a}),"getCheckers","query",e)},getEntityRefsForTechHealthFilter(e,t){return n(a=>r.request(te,e,{...t,...a}),"getEntityRefsForTechHealthFilter","query",e)},getExecutableChecks(e,t){return n(a=>r.request(ae,e,{...t,...a}),"getExecutableChecks","query",e)},getExemptCheckIds(e,t){return n(a=>r.request(re,e,{...t,...a}),"getExemptCheckIds","query",e)},getExemption(e,t){return n(a=>r.request(ie,e,{...t,...a}),"getExemption","query",e)},getExemptions(e,t){return n(a=>r.request(ne,e,{...t,...a}),"getExemptions","query",e)},getFacetsForOwner(e,t){return n(a=>r.request(se,e,{...t,...a}),"getFacetsForOwner","query",e)},getFact(e,t){return n(a=>r.request(ue,e,{...t,...a}),"getFact","query",e)},getCollectors(e,t){return n(a=>r.request(ce,e,{...t,...a}),"getCollectors","query",e)},getFactSchemas(e,t){return n(a=>r.request(oe,e,{...t,...a}),"getFactSchemas","query",e)},getIndividualCheckPassRates(e,t){return n(a=>r.request(le,e,{...t,...a}),"getIndividualCheckPassRates","query",e)},getIndividualEntityPassRates(e,t){return n(a=>r.request(de,e,{...t,...a}),"getIndividualEntityPassRates","query",e)},getIndividualGroupPassRates(e,t){return n(a=>r.request(pe,e,{...t,...a}),"getIndividualGroupPassRates","query",e)},getIndividualTrackPassRate(e,t){return n(a=>r.request(ge,e,{...t,...a}),"getIndividualTrackPassRate","query",e)},getOperators(e,t){return n(a=>r.request(me,e,{...t,...a}),"getOperators","query",e)},getOverallCheckPassRates(e,t){return n(a=>r.request(fe,e,{...t,...a}),"getOverallCheckPassRates","query",e)},getOverallEntityPassRates(e,t){return n(a=>r.request(ke,e,{...t,...a}),"getOverallEntityPassRates","query",e)},getOverallGroupPassRates(e,t){return n(a=>r.request(Ce,e,{...t,...a}),"getOverallGroupPassRates","query",e)},getOverallTrackPassRate(e,t){return n(a=>r.request(he,e,{...t,...a}),"getOverallTrackPassRate","query",e)},getPathResolvers(e,t){return n(a=>r.request(ye,e,{...t,...a}),"getPathResolvers","query",e)},getPlaylists(e,t){return n(a=>r.request(Re,e,{...t,...a}),"getPlaylists","query",e)},getTrackOverviewForOwner(e,t){return n(a=>r.request($e,e,{...t,...a}),"getTrackOverviewForOwner","query",e)},getTrack(e,t){return n(a=>r.request(qe,e,{...t,...a}),"getTrack","query",e)},getTrackEntities(e,t){return n(a=>r.request(ve,e,{...t,...a}),"getTrackEntities","query",e)},getTrackOwners(e,t){return n(a=>r.request(Ee,e,{...t,...a}),"getTrackOwners","query",e)},getTracks(e,t){return n(a=>r.request(De,e,{...t,...a}),"getTracks","query",e)}}}export{v as ArchiveCampaignDocument,o as BadgeVariant,s as BadgeVariantsFragmentDoc,k as CampaignLevelFragmentDoc,f as CertificationSummaryFragmentDoc,l as CheckEntityField,y as CheckResultDetailsFragmentDoc,h as CheckResultSummaryFragmentDoc,d as CheckerType,E as CreateCampaignDocument,P as CreateCheckDocument,x as CreateTrackDocument,D as DeleteCampaignDocument,I as DeleteCheckerDocument,T as DeleteExemptionDocument,G as DeleteTrackDocument,p as Direction,F as ExecuteCheckDocument,N as GetAllCertificationsDocument,B as GetCampaignOwnersDocument,H as GetCampaignsDocument,M as GetCertificationDetailsDocument,V as GetCertificationDetailsForTrackDocument,_ as GetCertificationStatusDocument,U as GetCertificationStatusHistoryDocument,Z as GetCheckDocument,W as GetCheckEntitiesDocument,j as GetCheckOwnersDocument,Y as GetCheckResultDetailsDocument,K as GetCheckStatusDocument,X as GetCheckStatusHistoriesDocument,z as GetCheckStatusHistoryDocument,J as GetCheckStatusesDocument,Q as GetCheckTemplatesDocument,ee as GetCheckersDocument,ce as GetCollectorsDocument,te as GetEntityRefsForTechHealthFilterDocument,ae as GetExecutableChecksDocument,re as GetExemptCheckIdsDocument,ie as GetExemptionDocument,ne as GetExemptionsDocument,se as GetFacetsForOwnerDocument,ue as GetFactDocument,oe as GetFactSchemasDocument,le as GetIndividualCheckPassRatesDocument,de as GetIndividualEntityPassRatesDocument,pe as GetIndividualGroupPassRatesDocument,ge as GetIndividualTrackPassRateDocument,me as GetOperatorsDocument,fe as GetOverallCheckPassRatesDocument,ke as GetOverallEntityPassRatesDocument,Ce as GetOverallGroupPassRatesDocument,he as GetOverallTrackPassRateDocument,ye as GetPathResolversDocument,Re as GetPlaylistsDocument,qe as GetTrackDocument,ve as GetTrackEntitiesDocument,$e as GetTrackOverviewForOwnerDocument,Ee as GetTrackOwnersDocument,De as GetTracksDocument,q as HighestLevelFragmentDoc,u as LevelResultDetailsFragmentDoc,C as MilestoneFragmentDoc,R as OverviewLevelResultFragmentDoc,g as ResultState,O as SetEntityExemptDocument,w as SetManualCheckResultDocument,m as TrackEntityField,c as TrackLevelFragmentDoc,$ as TrackStatusFragmentDoc,S as UpdateCampaignDocument,b as UpdateCheckDocument,A as UpdateCollectorConfigDocument,L as UpdateTrackDocument,Pe as getSdk};
933
967
  //# sourceMappingURL=index.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as o}from"@backstage/core-plugin-api";import{useQuery as s}from"@tanstack/react-query";import{soundcheckApiRef as c}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";const m=(e,t=!0)=>{const r=o(c);return s([u.CheckStatus,e],async()=>r.getCheckStatus(e),{enabled:t,staleTime:10*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{m as useCheckStatus};
1
+ import{useApi as n,useAnalytics as a}from"@backstage/core-plugin-api";import{useQuery as o}from"@tanstack/react-query";import{soundcheckApiRef as p}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";const c=(t,r=!0)=>{const i=n(p),s=a();return o([u.CheckStatus,t],async()=>{const e=await i.getCheckStatus(t);return e&&s.captureEvent("page_details","Check Status",{attributes:{id:e.id,error:e.error,exempt:e.exempt,failed:e.failed,notApplicable:e.notApplicable,notReported:e.notReported,numberOfEntities:e.numberOfEntities,passed:e.passed,warning:e.warning,filter:t.filter}}),e},{enabled:r,staleTime:10*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{c as useCheckStatus};
2
2
  //# sourceMappingURL=useCheckStatus.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as m}from"@backstage/core-plugin-api";import{useQueryClient as u,useMutation as c}from"@tanstack/react-query";import{soundcheckApiRef as p}from"../../api.esm.js";import{MutationKeys as l,QueryKeys as a}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as g}from"../useSoundcheckAlert.esm.js";const y="Error Creating Campaign",i="Failed to create campaign.";function C(){const o=m(p),t=u(),{showAlert:n}=g(),s=async r=>{const e=await o.createCampaign(r);if(!e)throw new Error(i);return e};return c([l.CreateCampaign],s,{onSuccess:()=>Promise.all([t.invalidateQueries({queryKey:[a.GetCampaigns]}),t.invalidateQueries({queryKey:[a.GetCampaignOwners]})]),onError:r=>{let e=i;r instanceof Error&&(e=r.message),n({severity:"error",title:y,message:e})}})}export{C as useCreateCampaign};
1
+ import{useApi as u,useAnalytics as m}from"@backstage/core-plugin-api";import{useQueryClient as p,useMutation as g}from"@tanstack/react-query";import{soundcheckApiRef as C}from"../../api.esm.js";import{MutationKeys as y,QueryKeys as i}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as l}from"../useSoundcheckAlert.esm.js";const f="Error Creating Campaign",s="Failed to create campaign.";function d(){const o=u(C),a=p(),{showAlert:n}=l(),t=m(),c=async e=>{const r=await o.createCampaign(e);if(!r)throw new Error(s);return r};return g([y.CreateCampaign],c,{onSuccess:e=>(t.captureEvent("resource_action","Create Campaign",{attributes:{resourceType:"campaign",resourceAction:"create",resourceId:e.id,success:"true"}}),Promise.all([a.invalidateQueries({queryKey:[i.GetCampaigns]}),a.invalidateQueries({queryKey:[i.GetCampaignOwners]})])),onError:e=>{let r=s;e instanceof Error&&(r=e.message),n({severity:"error",title:f,message:r}),t.captureEvent("resource_action","Create Campaign",{attributes:{resourceType:"campaign",resourceAction:"create",success:"false"}}),t.captureEvent("error","Create Campaign",{attributes:{errorMessage:r}})}})}export{d as useCreateCampaign};
2
2
  //# sourceMappingURL=useCreateCampaign.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as u}from"@backstage/core-plugin-api";import{useQueryClient as m,useMutation as p}from"@tanstack/react-query";import{soundcheckApiRef as d}from"../../api.esm.js";import{MutationKeys as c,QueryKeys as a}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as l}from"../useSoundcheckAlert.esm.js";const y="Error Updating Campaign",i="Failed to update campaign.";function g(){const n=u(d),t=m(),{showAlert:o}=l(),s=async r=>{const e=await n.updateCampaign(r);if(!e)throw new Error(i);return e};return p([c.UpdateCampaign],s,{onSuccess:()=>Promise.all([t.invalidateQueries({queryKey:[a.GetCampaigns]}),t.invalidateQueries({queryKey:[a.GetIndividualEntityPassRateTrends]}),t.invalidateQueries({queryKey:[a.GetCampaignOwners]})]),onError:r=>{let e=i;r instanceof Error&&(e=r.message),o({severity:"error",title:y,message:e})}})}export{g as useUpdateCampaign};
1
+ import{useApi as c,useAnalytics as m}from"@backstage/core-plugin-api";import{useQueryClient as d,useMutation as g}from"@tanstack/react-query";import{soundcheckApiRef as y}from"../../api.esm.js";import{MutationKeys as l,QueryKeys as s}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as f}from"../useSoundcheckAlert.esm.js";const C="Error Updating Campaign",n="Failed to update campaign.";function E(){const o=c(y),t=d(),{showAlert:u}=f(),a=m(),p=async e=>{const r=await o.updateCampaign(e);if(!r)throw new Error(n);return r};return g([l.UpdateCampaign],p,{onSuccess:e=>(a.captureEvent("resource_action","Update Campaign",{attributes:{resourceType:"campaign",resourceAction:"update",resourceId:e.id,success:"true"}}),Promise.all([t.invalidateQueries({queryKey:[s.GetCampaigns]}),t.invalidateQueries({queryKey:[s.GetIndividualEntityPassRateTrends]}),t.invalidateQueries({queryKey:[s.GetCampaignOwners]})])),onError:(e,r)=>{let i=n;e instanceof Error&&(i=e.message),u({severity:"error",title:C,message:i}),a.captureEvent("resource_action","Update Campaign",{attributes:{resourceType:"campaign",resourceAction:"update",resourceId:r.id,success:"false"}}),a.captureEvent("error","Update Campaign",{attributes:{errorMessage:i}})}})}export{E as useUpdateCampaign};
2
2
  //# sourceMappingURL=useUpdateCampaign.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as c}from"@backstage/core-plugin-api";import{useQuery as s}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";function f(e,r,o,t,n){const i=c(m);return s([u.GetTrackOverviewForOwner,e??"",r??"",o??"",t??"",n??""],async()=>i.getTrackOverviewForOwner(e,r,o,t,n),{enabled:!!e&&!!r?.kind,staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}export{f as useTrackOverviewForOwner};
1
+ import{useApi as c}from"@backstage/core-plugin-api";import{useQuery as s}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";function f(e,r,o,t,n){const i=c(m);return s([u.GetTrackOverviewForOwner,e??"",r??"",o??"",t??"",n??""],async()=>i.getTrackOverviewForOwner(e,r,o,t,n),{enabled:!!e&&!!r?.kind,staleTime:0,refetchInterval:!1,refetchOnWindowFocus:!1})}export{f as useTrackOverviewForOwner};
2
2
  //# sourceMappingURL=useTrackOverviewForOwner.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as a}from"@backstage/core-plugin-api";import{useQueryClient as n,useMutation as u}from"@tanstack/react-query";import{soundcheckApiRef as l}from"../../api.esm.js";import{MutationKeys as h,QueryKeys as o}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as m}from"../useSoundcheckAlert.esm.js";const y="Error Creating Check";function k(){const i=a(l),t=n(),{showAlert:s}=m(),c=async r=>{const e=await i.createCheck(r);if(!e)throw new Error("Failed to create check.");return e};return u([h.CreateCheck],c,{onSuccess:()=>Promise.all([t.invalidateQueries({queryKey:[o.GetChecks]}),t.invalidateQueries({queryKey:[o.GetCheckOwners]}),t.invalidateQueries({queryKey:[o.ExecutableChecks]})]),onError:r=>{let e="Failed to create check.";r instanceof Error&&(e=r.message),s({severity:"error",title:y,message:e})}})}export{k as useCreateCheck};
1
+ import{useApi as i,useAnalytics as n}from"@backstage/core-plugin-api";import{useQueryClient as h,useMutation as C}from"@tanstack/react-query";import{soundcheckApiRef as k}from"../../api.esm.js";import{MutationKeys as y,QueryKeys as s}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as l}from"../useSoundcheckAlert.esm.js";const m="Error Creating Check";function p(){const o=i(k),t=h(),{showAlert:a}=l(),c=n(),u=async e=>{const r=await o.createCheck(e);if(!r)throw new Error("Failed to create check.");return r};return C([y.CreateCheck],u,{onSuccess:e=>(c.captureEvent("resource_action","Create Check",{attributes:{resourceType:"check",resourceAction:"create",resourceId:e.id,success:"true"}}),Promise.all([t.invalidateQueries({queryKey:[s.GetChecks]}),t.invalidateQueries({queryKey:[s.GetCheckOwners]}),t.invalidateQueries({queryKey:[s.ExecutableChecks]})])),onError:e=>{let r="Failed to create check.";e instanceof Error&&(r=e.message),a({severity:"error",title:m,message:r}),c.captureEvent("resource_action","Create Check",{attributes:{resourceType:"check",resourceAction:"create",success:"false"}}),c.captureEvent("error","Create Check",{attributes:{errorMessage:r}})}})}export{p as useCreateCheck};
2
2
  //# sourceMappingURL=useCreateCheck.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as c}from"@backstage/core-plugin-api";import{useQueryClient as l,useMutation as y}from"@tanstack/react-query";import{useParams as m}from"react-router-dom";import{soundcheckApiRef as d}from"../../api.esm.js";import{MutationKeys as f,QueryKeys as i}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as h}from"../useSoundcheckAlert.esm.js";function k(){const s=c(d),t=l(),{showAlert:u}=h(),o=async r=>{const e=await s.setManualCheckResult(r);if(!e)throw new Error(`Failed to set manual result for check ${r.checkId} on entity ${r.entityRef}.`);return e},{trackId:n}=m();return y([f.SetResult],o,{onSuccess:(r,{checkId:e,entityRef:a})=>Promise.all([t.invalidateQueries({queryKey:[i.CertificationDetails,a]}),t.invalidateQueries({queryKey:[i.CertificationStatus,a]}),t.invalidateQueries({queryKey:[i.Certifications,a]}),t.invalidateQueries({queryKey:[i.CheckDetails,a,n,e]}),t.invalidateQueries({queryKey:[i.CheckStatus,e,a]}),t.invalidateQueries({queryKey:[i.TrackEntities]}),t.invalidateQueries({queryKey:[i.getExemptCheckIds,a]})]),onError:r=>{let e="Failed to execute check.";r instanceof Error&&(e=r.message),u({severity:"error",title:"Failed to set manual result.",message:e})}})}export{k as useSetManualResult};
1
+ import{useApi as l,useAnalytics as y}from"@backstage/core-plugin-api";import{useQueryClient as m,useMutation as d}from"@tanstack/react-query";import{useParams as f}from"react-router-dom";import{soundcheckApiRef as h}from"../../api.esm.js";import{MutationKeys as k,QueryKeys as s}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as p}from"../useSoundcheckAlert.esm.js";function v(){const a=l(h),u=y(),r=m(),{showAlert:c}=p(),o=async i=>{const e=await a.setManualCheckResult(i);if(!e)throw new Error(`Failed to set manual result for check ${i.checkId} on entity ${i.entityRef}.`);return e},{trackId:n}=f();return d([k.SetResult],o,{onSuccess:(i,{checkId:e,entityRef:t})=>(u.captureEvent("resource_action","Manual Result",{attributes:{resourceType:"manual_check_result",resourceAction:"set",resourceId:`${t}:${e}`,success:"true"}}),Promise.all([r.invalidateQueries({queryKey:[s.CertificationDetails,t]}),r.invalidateQueries({queryKey:[s.CertificationStatus,t]}),r.invalidateQueries({queryKey:[s.Certifications,t]}),r.invalidateQueries({queryKey:[s.CheckDetails,t,n,e]}),r.invalidateQueries({queryKey:[s.CheckStatus,e,t]}),r.invalidateQueries({queryKey:[s.TrackEntities]}),r.invalidateQueries({queryKey:[s.GetExemptCheckIds,t]})])),onError:(i,e)=>{let t="Failed to execute check.";i instanceof Error&&(t=i.message),c({severity:"error",title:"Failed to set manual result.",message:t}),u.captureEvent("resource_action","Manual Result",{attributes:{resourceType:"manual_check_result",resourceAction:"set",resourceId:e?.entityRef&&e?.checkId?`${e.entityRef}:${e.checkId}`:"",success:"false"}})}})}export{v as useSetManualResult};
2
2
  //# sourceMappingURL=useSetManualResult.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as i}from"@backstage/core-plugin-api";import{useQueryClient as u,useMutation as h}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{MutationKeys as p,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as k}from"../useSoundcheckAlert.esm.js";const l="Error Creating Check";function d(){const s=i(m),o=u(),{showAlert:c}=k(),n=async e=>{const r=await s.updateCheck(e);if(!r)throw new Error("Failed to update check.");return r};return h([p.UpdateCheck],n,{onSuccess:e=>{const r=[t.GetChecks,t.GetCheckOwners,t.ExecutableChecks,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return o.setQueryData([t.Check,e.id],e),Promise.all(r.map(a=>o.invalidateQueries({queryKey:[a]})))},onError:e=>{let r="Failed to update check.";e instanceof Error&&(r=e.message),c({severity:"error",title:l,message:r})}})}export{d as useUpdateCheck};
1
+ import{useApi as n,useAnalytics as p}from"@backstage/core-plugin-api";import{useQueryClient as d,useMutation as h}from"@tanstack/react-query";import{soundcheckApiRef as k}from"../../api.esm.js";import{MutationKeys as m,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as C}from"../useSoundcheckAlert.esm.js";const l="Error Creating Check";function y(){const u=n(k),o=d(),{showAlert:a}=C(),s=p(),i=async e=>{const r=await u.updateCheck(e);if(!r)throw new Error("Failed to update check.");return r};return h([m.UpdateCheck],i,{onSuccess:e=>{const r=[t.GetChecks,t.GetCheckOwners,t.ExecutableChecks,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return o.setQueryData([t.Check,e.id],e),s.captureEvent("resource_action","Update Check",{attributes:{resourceType:"check",resourceAction:"update",resourceId:e.id,success:"true"}}),Promise.all(r.map(c=>o.invalidateQueries({queryKey:[c]})))},onError:(e,r)=>{let c="Failed to update check.";e instanceof Error&&(c=e.message),a({severity:"error",title:l,message:c}),s.captureEvent("resource_action","Update Check",{attributes:{resourceType:"check",resourceAction:"update",resourceId:r.id,success:"false"}}),s.captureEvent("error","Update Check",{attributes:{errorMessage:c}})}})}export{y as useUpdateCheck};
2
2
  //# sourceMappingURL=useUpdateCheck.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as s}from"@backstage/core-plugin-api";import{useQueryClient as u,useMutation as a}from"@tanstack/react-query";import{soundcheckApiRef as c}from"../../api.esm.js";import{MutationKeys as l,QueryKeys as f}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as g}from"../useSoundcheckAlert.esm.js";const p="Error Configuring Integration";function m(){const r=s(c),t=u(),{showAlert:i}=g(),n=async e=>{const o=await r.updateCollectorConfig(e);if(!o)throw new Error("Failed to update integration configuration.");return o};return a([l.UpdateCollectorConfig],n,{onSuccess:()=>t.invalidateQueries({queryKey:[f.GetCollectors]}),onError:e=>{let o="Failed to update integration configuration.";e instanceof Error&&(o=e.message),i({severity:"error",title:p,message:o})}})}export{m as useUpdateCollectorConfig};
1
+ import{useApi as u,useAnalytics as a}from"@backstage/core-plugin-api";import{useQueryClient as l,useMutation as p}from"@tanstack/react-query";import{soundcheckApiRef as d}from"../../api.esm.js";import{MutationKeys as f,QueryKeys as g}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as C}from"../useSoundcheckAlert.esm.js";const m="Error Configuring Integration";function y(){const c=u(d),i=l(),{showAlert:n}=C(),o=a(),s=async e=>{const r=await c.updateCollectorConfig(e);if(!r)throw new Error("Failed to update integration configuration.");return r};return p([f.UpdateCollectorConfig],s,{onSuccess:e=>(o.captureEvent("resource_action","Update Collector Config",{attributes:{resourceType:"collector",resourceAction:"update",resourceId:e.id,success:"true"}}),i.invalidateQueries({queryKey:[g.GetCollectors]})),onError:(e,r)=>{let t="Failed to update integration configuration.";e instanceof Error&&(t=e.message),n({severity:"error",title:m,message:t}),o.captureEvent("resource_action","Update Collector Config",{attributes:{resourceType:"collector",resourceAction:"update",resourceId:r.collectorId,success:"false"}}),o.captureEvent("error","Update Collector Config",{attributes:{errorMessage:t}})}})}export{y as useUpdateCollectorConfig};
2
2
  //# sourceMappingURL=useUpdateCollectorConfig.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as l}from"@backstage/core-plugin-api";import{useQueryClient as y,useMutation as c}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{MutationKeys as d,QueryKeys as r}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as p}from"../useSoundcheckAlert.esm.js";function f(){const s=l(m),t=y(),{showAlert:a}=p(),u=async o=>{const{checkId:i,entityRef:e}=o,n=await s.deleteExemption(i,e);if(!n)throw new Error(`Failed to delete exemption for entity ${e} from check id ${i}.`);return n};return c([d.DeleteExemption],u,{onSuccess:({deleteExemption:o})=>{const{check_id:i,entity_ref:e}=o;return Promise.all([t.invalidateQueries({queryKey:[r.getExemption,e,i]}),t.invalidateQueries({queryKey:[r.GetChecks,i]}),t.invalidateQueries({queryKey:[r.TrackEntities,e]}),t.invalidateQueries({queryKey:[r.CertificationDetails,e]}),t.invalidateQueries({queryKey:[r.CertificationStatus,e]}),t.invalidateQueries({queryKey:[r.Certifications,e]}),t.invalidateQueries({queryKey:[r.CheckDetails,e]}),t.invalidateQueries({queryKey:[r.CheckStatus,i,e]}),t.invalidateQueries({queryKey:[r.getExemptCheckIds,e]})])},onError:o=>{let i="Failed to delete exemption.";o instanceof Error&&(i=o.message),a({severity:"error",title:"Error Deleting Exemption",message:i})}})}export{f as useDeleteExemption};
1
+ import{useApi as y,useAnalytics as l}from"@backstage/core-plugin-api";import{useQueryClient as d,useMutation as m}from"@tanstack/react-query";import{soundcheckApiRef as p}from"../../api.esm.js";import{MutationKeys as f,QueryKeys as r}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as E}from"../useSoundcheckAlert.esm.js";function x(){const u=y(p),s=l(),i=d(),{showAlert:c}=E(),a=async o=>{const{checkId:t,entityRef:e}=o,n=await u.deleteExemption(t,e);if(!n)throw new Error(`Failed to delete exemption for entity ${e} from check id ${t}.`);return n};return m([f.DeleteExemption],a,{onSuccess:({deleteExemption:o})=>{const{check_id:t,entity_ref:e}=o;return s.captureEvent("resource_action","Entity Exemption",{attributes:{resourceType:"exemption",resourceAction:"delete",resourceId:`${e}:${t}`,success:"true"}}),Promise.all([i.invalidateQueries({queryKey:[r.GetExemption,e,t]}),i.invalidateQueries({queryKey:[r.GetChecks,t]}),i.invalidateQueries({queryKey:[r.TrackEntities,e]}),i.invalidateQueries({queryKey:[r.CertificationDetails,e]}),i.invalidateQueries({queryKey:[r.CertificationStatus,e]}),i.invalidateQueries({queryKey:[r.Certifications,e]}),i.invalidateQueries({queryKey:[r.CheckDetails,e]}),i.invalidateQueries({queryKey:[r.CheckStatus,t,e]}),i.invalidateQueries({queryKey:[r.GetExemptCheckIds,e]}),i.invalidateQueries({queryKey:[r.GetExemptions]})])},onError:(o,t)=>{let e="Failed to delete exemption.";o instanceof Error&&(e=o.message),c({severity:"error",title:"Error Deleting Exemption",message:e}),s.captureEvent("resource_action","Entity Exemption",{attributes:{resourceType:"exemption",resourceAction:"delete",resourceId:t?.entityRef&&t?.checkId?`${t.entityRef}:${t.checkId}`:"",success:"false"}})}})}export{x as useDeleteExemption};
2
2
  //# sourceMappingURL=useDeleteExemption.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as i}from"@backstage/core-plugin-api";import{useQuery as c}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{QueryKeys as n}from"../graphqlKeys.esm.js";function s(e,t){const r=i(m);return c([n.getExemptCheckIds,e,t],async()=>{const o=await r.getExemptCheckIds(e,t);if(!o)throw new Error(`Failed to get exempt check ids for entity ${e} and track id ${t}.`);return o},{enabled:!!t&&!!e})}export{s as useExemptCheckIds};
1
+ import{useApi as i}from"@backstage/core-plugin-api";import{useQuery as c}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{QueryKeys as n}from"../graphqlKeys.esm.js";function s(e,t){const r=i(m);return c([n.GetExemptCheckIds,e,t],async()=>{const o=await r.getExemptCheckIds(e,t);if(!o)throw new Error(`Failed to get exempt check ids for entity ${e} and track id ${t}.`);return o},{enabled:!!t&&!!e})}export{s as useExemptCheckIds};
2
2
  //# sourceMappingURL=useExemptCheckIds.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{useApi as n}from"@backstage/core-plugin-api";import{useQuery as p}from"@tanstack/react-query";import{soundcheckApiRef as f}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";function a(e,s){const m=n(f),{first:t=10,after:o,last:r,before:i}=s||{};return p([u.GetExemptions,e,t,o,r,i],async()=>(await m.getExemptions(e,t,o,r,i)).exemptions,{enabled:!!e})}export{a as useExemptions};
2
+ //# sourceMappingURL=useExemptions.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as i}from"@backstage/core-plugin-api";import{useQuery as n}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{QueryKeys as f}from"../graphqlKeys.esm.js";function p(t,e){const r=i(m);return n([f.getExemption,t,e],async()=>{if(!e)return null;const o=await r.getExemption(e,t);if(!o)throw new Error(`Failed to check for exemption for entity ${t} for check id ${e}.`);return o})}export{p as useGetExemption};
1
+ import{useApi as i}from"@backstage/core-plugin-api";import{useQuery as n}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{QueryKeys as f}from"../graphqlKeys.esm.js";function p(t,e){const r=i(m);return n([f.GetExemption,t,e],async()=>{if(!e)return null;const o=await r.getExemption(e,t);if(!o)throw new Error(`Failed to check for exemption for entity ${t} for check id ${e}.`);return o})}export{p as useGetExemption};
2
2
  //# sourceMappingURL=useGetExemption.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as y}from"@backstage/core-plugin-api";import{useQueryClient as m,useMutation as l}from"@tanstack/react-query";import{soundcheckApiRef as d}from"../../api.esm.js";import{MutationKeys as f,QueryKeys as i}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as p}from"../useSoundcheckAlert.esm.js";const E="Error Setting Exemption";function h(){const o=y(d),t=m(),{showAlert:a}=p(),u=async r=>{const{checkId:e,entityRef:n,justification:c}=r,s=await o.setEntityExempt({checkId:e,entityRef:n,justification:c});if(!s)throw new Error(`Failed to exempt entity ${n} from check id ${e}.`);return s};return l([f.CreateExemption],u,{onSuccess:({check_id:r,entity_ref:e})=>Promise.all([t.invalidateQueries({queryKey:[i.getExemption,e,r]}),t.invalidateQueries({queryKey:[i.GetChecks,r]}),t.invalidateQueries({queryKey:[i.TrackEntities,e]}),t.invalidateQueries({queryKey:[i.CertificationDetails,e]}),t.invalidateQueries({queryKey:[i.CertificationStatus,e]}),t.invalidateQueries({queryKey:[i.Certifications,e]}),t.invalidateQueries({queryKey:[i.CheckDetails,e]}),t.invalidateQueries({queryKey:[i.CheckStatus,r,e]}),t.invalidateQueries({queryKey:[i.getExemptCheckIds,e]})]),onError:r=>{let e="Failed to set exemption";r instanceof Error&&(e=r.message),a({severity:"error",title:E,message:e})}})}export{h as useSetEntityExempt};
1
+ import{useApi as m,useAnalytics as f}from"@backstage/core-plugin-api";import{useQueryClient as p,useMutation as d}from"@tanstack/react-query";import{soundcheckApiRef as l}from"../../api.esm.js";import{MutationKeys as E,QueryKeys as i}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as h}from"../useSoundcheckAlert.esm.js";const x="Error Setting Exemption";function k(){const u=m(l),n=f(),t=p(),{showAlert:c}=h(),a=async r=>{const{checkId:e,entityRef:s,justification:y}=r,o=await u.setEntityExempt({checkId:e,entityRef:s,justification:y});if(!o)throw new Error(`Failed to exempt entity ${s} from check id ${e}.`);return o};return d([E.CreateExemption],a,{onSuccess:({check_id:r,entity_ref:e,user_ref:s})=>(n.captureEvent("resource_action","Entity Exemption",{attributes:{resourceType:"exemption",resourceAction:"create",resourceId:`${e}:${r}`,success:"true",userRef:s}}),Promise.all([t.invalidateQueries({queryKey:[i.GetExemption,e,r]}),t.invalidateQueries({queryKey:[i.GetChecks,r]}),t.invalidateQueries({queryKey:[i.TrackEntities,e]}),t.invalidateQueries({queryKey:[i.CertificationDetails,e]}),t.invalidateQueries({queryKey:[i.CertificationStatus,e]}),t.invalidateQueries({queryKey:[i.Certifications,e]}),t.invalidateQueries({queryKey:[i.CheckDetails,e]}),t.invalidateQueries({queryKey:[i.CheckStatus,r,e]}),t.invalidateQueries({queryKey:[i.GetExemptCheckIds,e]}),t.invalidateQueries({queryKey:[i.GetExemptions]})])),onError:(r,e)=>{let s="Failed to set exemption";r instanceof Error&&(s=r.message),c({severity:"error",title:x,message:s}),n.captureEvent("resource_action","Entity Exemption",{attributes:{resourceType:"exemption",resourceAction:"create",resourceId:e?.entityRef&&e?.checkId?`${e.entityRef}:${e.checkId}`:"",success:"false",justification:e?.justification}})}})}export{k as useSetEntityExempt};
2
2
  //# sourceMappingURL=useSetEntityExempt.esm.js.map
@@ -1,2 +1,2 @@
1
- var t=(e=>(e.GetTrack="soundcheck/track",e.GetAllTracks="soundcheck/tracks",e.GetChecks="soundcheck/checks",e.GetCollectors="soundcheck/collectors",e.GetFactSchema="soundcheck/collectors/schema",e.GetEntityFacets="soundcheck/catalog/facets",e.GetSoftwareEntityRefsForUser="soundcheck/entities/softwareEntityRefsForUser",e.GetEntityRefs="soundcheck/catalog/entityRefs",e.ExecutableChecks="soundcheck/executableChecks",e.GetCampaigns="soundcheck/campaigns",e.GetOverallCheckPassRateTrends="soundcheck/charts/overallCheckPassRateTrends",e.GetIndividualCheckPassRateTrends="soundcheck/charts/getIndividualCheckPassRateTrends",e.GetOverallTrackPassRateTrends="soundcheck/charts/overallTrackPassRateTrends",e.GetIndividualTrackPassRateTrends="soundcheck/charts/individualTrackPassRateTrends",e.GetOverallEntityPassRateTrends="soundcheck/charts/overallEntityPassRateTrends",e.GetIndividualEntityPassRateTrends="soundcheck/charts/individualEntityPassRateTrends",e.GetOverallGroupPassRateTrends="soundcheck/charts/overallGroupPassRateTrends",e.GetIndividualGroupPassRateTrends="soundcheck/charts/individualGroupPassRateTrends",e.EntityByRef="soundcheck/catalog/entityByRef",e.EntitiesByRefs="soundcheck/catalog/entitiesByRef",e.TrackEntities="soundcheck/track/entities",e.CheckEntities="soundcheck/check/entities",e.CertificationStatus="soundcheck/certificationStatus",e.CertificationStatusHistory="soundcheck/certificationStatusHistory",e.CheckStatus="soundcheck/checkStatus",e.CheckStatuses="soundcheck/checkStatuses",e.CheckStatusHistory="soundcheck/checkStatusHistory",e.CheckStatusHistories="soundcheck/checkStatusHistories",e.Check="soundcheck/check",e.CheckDetails="soundcheck/checkDetails",e.Certifications="soundcheck/certifications",e.CertificationDetails="soundcheck/certificationDetails",e.GetCheckOwners="soundcheck/checks/getOwners",e.GetTrackOwners="soundcheck/tracks/getOwners",e.GetCampaignOwners="soundcheck/campaigns/getOwners",e.GetTrackRelatedGroups="soundcheck/track/getTrackRelatedGroups",e.CheckTemplates="soundcheck/checkTemplates",e.GetFacetsForOwner="soundcheck/facets-for-owner",e.GetTrackOverviewForOwner="soundcheck/track-overview-for-owner",e.getExemption="soundcheck/getExemption",e.getExemptCheckIds="soundcheck/getExemptCheckIds",e))(t||{}),c=(e=>(e.DeleteCheck="soundcheck/deleteCheck",e.CreateCheck="soundcheck/createCheck",e.UpdateCheck="soundcheck/updateCheck",e.ExecuteCheck="soundcheck/executeCheck",e.SetResult="soundcheck/setResult",e.CreateExemption="soundcheck/createExemption",e.UpdateExemption="soundcheck/updateExemption",e.DeleteExemption="soundcheck/deleteExemption",e.DeleteTrack="soundcheck/deleteTrack",e.CreateTrack="soundcheck/createTrack",e.UpdateTrack="soundcheck/updateTrack",e.UpdateCollectorConfig="soundcheck/updateCollectorConfig",e.CreateCampaign="soundcheck/createCampaign",e.UpdateCampaign="soundcheck/updateCampaign",e.DeleteCampaign="soundcheck/deleteCampaign",e.ArchiveCampaign="soundcheck/archiveCampaign",e))(c||{});export{c as MutationKeys,t as QueryKeys};
1
+ var t=(e=>(e.GetTrack="soundcheck/track",e.GetAllTracks="soundcheck/tracks",e.GetChecks="soundcheck/checks",e.GetCollectors="soundcheck/collectors",e.GetFactSchema="soundcheck/collectors/schema",e.GetEntityFacets="soundcheck/catalog/facets",e.GetSoftwareEntityRefsForUser="soundcheck/entities/softwareEntityRefsForUser",e.GetEntityRefs="soundcheck/catalog/entityRefs",e.ExecutableChecks="soundcheck/executableChecks",e.GetCampaigns="soundcheck/campaigns",e.GetOverallCheckPassRateTrends="soundcheck/charts/overallCheckPassRateTrends",e.GetIndividualCheckPassRateTrends="soundcheck/charts/getIndividualCheckPassRateTrends",e.GetOverallTrackPassRateTrends="soundcheck/charts/overallTrackPassRateTrends",e.GetIndividualTrackPassRateTrends="soundcheck/charts/individualTrackPassRateTrends",e.GetOverallEntityPassRateTrends="soundcheck/charts/overallEntityPassRateTrends",e.GetIndividualEntityPassRateTrends="soundcheck/charts/individualEntityPassRateTrends",e.GetOverallGroupPassRateTrends="soundcheck/charts/overallGroupPassRateTrends",e.GetIndividualGroupPassRateTrends="soundcheck/charts/individualGroupPassRateTrends",e.EntityByRef="soundcheck/catalog/entityByRef",e.EntitiesByRefs="soundcheck/catalog/entitiesByRef",e.TrackEntities="soundcheck/track/entities",e.CheckEntities="soundcheck/check/entities",e.CertificationStatus="soundcheck/certificationStatus",e.CertificationStatusHistory="soundcheck/certificationStatusHistory",e.CheckStatus="soundcheck/checkStatus",e.CheckStatuses="soundcheck/checkStatuses",e.CheckStatusHistory="soundcheck/checkStatusHistory",e.CheckStatusHistories="soundcheck/checkStatusHistories",e.Check="soundcheck/check",e.CheckDetails="soundcheck/checkDetails",e.Certifications="soundcheck/certifications",e.CertificationDetails="soundcheck/certificationDetails",e.GetCheckOwners="soundcheck/checks/getOwners",e.GetTrackOwners="soundcheck/tracks/getOwners",e.GetCampaignOwners="soundcheck/campaigns/getOwners",e.GetTrackRelatedGroups="soundcheck/track/getTrackRelatedGroups",e.CheckTemplates="soundcheck/checkTemplates",e.GetFacetsForOwner="soundcheck/facets-for-owner",e.GetTrackOverviewForOwner="soundcheck/track-overview-for-owner",e.GetExemption="soundcheck/getExemption",e.GetExemptions="soundcheck/getExemptions",e.GetExemptCheckIds="soundcheck/getExemptCheckIds",e))(t||{}),s=(e=>(e.DeleteCheck="soundcheck/deleteCheck",e.CreateCheck="soundcheck/createCheck",e.UpdateCheck="soundcheck/updateCheck",e.ExecuteCheck="soundcheck/executeCheck",e.SetResult="soundcheck/setResult",e.CreateExemption="soundcheck/createExemption",e.UpdateExemption="soundcheck/updateExemption",e.DeleteExemption="soundcheck/deleteExemption",e.DeleteTrack="soundcheck/deleteTrack",e.CreateTrack="soundcheck/createTrack",e.UpdateTrack="soundcheck/updateTrack",e.UpdateCollectorConfig="soundcheck/updateCollectorConfig",e.CreateCampaign="soundcheck/createCampaign",e.UpdateCampaign="soundcheck/updateCampaign",e.DeleteCampaign="soundcheck/deleteCampaign",e.ArchiveCampaign="soundcheck/archiveCampaign",e))(s||{});export{s as MutationKeys,t as QueryKeys};
2
2
  //# sourceMappingURL=graphqlKeys.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as n}from"@backstage/core-plugin-api";import{useQueryClient as i,useMutation as u}from"@tanstack/react-query";import{soundcheckApiRef as l}from"../../api.esm.js";import{MutationKeys as m,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as k}from"../useSoundcheckAlert.esm.js";const T="Error Creating Track";function d(){const a=n(l),o=i(),{showAlert:s}=k(),c=async r=>{const e=await a.createTrack(r);if(!e)throw new Error("Failed to create track.");return e};return u([m.CreateTrack],c,{onSuccess:async()=>{const r=[t.GetAllTracks,t.GetOverallTrackPassRateTrends,t.GetIndividualTrackPassRateTrends,t.GetTrackOwners,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return Promise.all(r.map(e=>o.invalidateQueries({queryKey:[e]})))},onError:r=>{let e="Failed to create track.";r instanceof Error&&(e=r.message),s({severity:"error",title:T,message:e})}})}export{d as useCreateTrack};
1
+ import{useApi as i,useAnalytics as k}from"@backstage/core-plugin-api";import{useQueryClient as l,useMutation as T}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{MutationKeys as p,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as d}from"../useSoundcheckAlert.esm.js";const y="Error Creating Track";function f(){const c=i(m),s=l(),{showAlert:o}=d(),a=k(),n=async r=>{const e=await c.createTrack(r);if(!e)throw new Error("Failed to create track.");return e};return T([p.CreateTrack],n,{onSuccess:r=>{a.captureEvent("resource_action","Create Track",{attributes:{resourceType:"track",resourceAction:"create",resourceId:r.id,success:"true"}});const e=[t.GetAllTracks,t.GetOverallTrackPassRateTrends,t.GetIndividualTrackPassRateTrends,t.GetTrackOwners,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return Promise.all(e.map(u=>s.invalidateQueries({queryKey:[u]})))},onError:r=>{let e="Failed to create track.";r instanceof Error&&(e=r.message),o({severity:"error",title:y,message:e}),a.captureEvent("resource_action","Create Track",{attributes:{resourceType:"track",resourceAction:"create",success:"false"}}),a.captureEvent("error","Create Track",{attributes:{errorMessage:e}})}})}export{f as useCreateTrack};
2
2
  //# sourceMappingURL=useCreateTrack.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as c}from"@backstage/core-plugin-api";import{asArray as u}from"@spotify/backstage-plugin-soundcheck-common";import{useQueryClient as d,useMutation as m}from"@tanstack/react-query";import{soundcheckApiRef as p}from"../../api.esm.js";import{MutationKeys as l,QueryKeys as e}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as k}from"../useSoundcheckAlert.esm.js";const T="Error Updating Track";function f(){const a=c(p),o=d(),{showAlert:s}=k(),n=async t=>{const r=await a.updateTrack(t);if(!r)throw new Error("Failed to update track.");return r};return m([l.UpdateTrack],n,{onSuccess:async t=>{const r=[[e.GetTrack,t.id],e.GetAllTracks,e.GetOverallTrackPassRateTrends,e.GetIndividualTrackPassRateTrends,e.GetTrackOwners,e.GetFacetsForOwner,e.GetTrackOverviewForOwner];return Promise.all(r.map(i=>o.invalidateQueries({queryKey:u(i)})))},onError:t=>{let r="Failed to update track.";t instanceof Error&&(r=t.message),s({severity:"error",title:T,message:r})}})}export{f as useUpdateTrack};
1
+ import{useApi as n,useAnalytics as d}from"@backstage/core-plugin-api";import{asArray as p}from"@spotify/backstage-plugin-soundcheck-common";import{useQueryClient as k,useMutation as l}from"@tanstack/react-query";import{soundcheckApiRef as T}from"../../api.esm.js";import{MutationKeys as m,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as y}from"../useSoundcheckAlert.esm.js";const f="Error Updating Track";function v(){const c=n(T),o=k(),{showAlert:u}=y(),s=d(),i=async e=>{const r=await c.updateTrack(e);if(!r)throw new Error("Failed to update track.");return r};return l([m.UpdateTrack],i,{onSuccess:async e=>{s.captureEvent("resource_action","Update Track",{attributes:{resourceType:"track",resourceAction:"update",resourceId:e.id,success:"true"}});const r=[[t.GetTrack,e.id],t.GetAllTracks,t.GetOverallTrackPassRateTrends,t.GetIndividualTrackPassRateTrends,t.GetTrackOwners,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return Promise.all(r.map(a=>o.invalidateQueries({queryKey:p(a)})))},onError:(e,r)=>{let a="Failed to update track.";e instanceof Error&&(a=e.message),u({severity:"error",title:f,message:a}),s.captureEvent("resource_action","Update Track",{attributes:{resourceType:"track",resourceAction:"update",resourceId:r.id,success:"false"}}),s.captureEvent("error","Update Track",{attributes:{errorMessage:a,resourceId:r.id}})}})}export{v as useUpdateTrack};
2
2
  //# sourceMappingURL=useUpdateTrack.esm.js.map
package/dist/index.d.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
3
+ import * as react from 'react';
4
+ import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
5
+ import { RouteRef } from '@backstage/frontend-plugin-api';
6
+ import * as _tanstack_react_query from '@tanstack/react-query';
7
+ import { JsonObject } from '@backstage/types';
3
8
 
4
9
  /**
5
10
  * Props for the EntitySoundcheckCard.
@@ -67,4 +72,83 @@ declare const SoundcheckOverviewPage: (props: OverviewPageProps) => JSX.Element;
67
72
  */
68
73
  declare const SoundcheckRoutingPage: (props: OverviewPageProps) => JSX.Element;
69
74
 
70
- export { EntitySoundcheckCard, type EntitySoundcheckCardProps, EntitySoundcheckContent, GroupSoundcheckContent, type OverviewPageProps, SoundcheckOverviewPage, SoundcheckRoutingPage, soundcheckPlugin };
75
+ /**
76
+ * Create Soundcheck integration extensions that are routable React page components.
77
+ *
78
+ * @alpha
79
+ */
80
+ declare const IntegrationPageBlueprint: _backstage_frontend_plugin_api.ExtensionBlueprint<{
81
+ kind: "integration";
82
+ name: undefined;
83
+ params: {
84
+ integrationId: string;
85
+ loader: () => Promise<JSX.Element>;
86
+ path?: string;
87
+ routeRef?: RouteRef;
88
+ };
89
+ output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
90
+ optional: true;
91
+ }>;
92
+ inputs: {};
93
+ config: {};
94
+ configInput: {};
95
+ dataRefs: {
96
+ integrationId: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}>;
97
+ };
98
+ }>;
99
+
100
+ /**
101
+ * React hook that fetches collector configurations by their IDs.
102
+ *
103
+ * @public
104
+ */
105
+ declare function useGetCollectors(collectorIds?: string[]): _tanstack_react_query.UseQueryResult<{
106
+ __typename?: "Collector";
107
+ id: string;
108
+ name?: string | null;
109
+ description?: string | null;
110
+ factNames: Array<string>;
111
+ config?: any | null;
112
+ configSchema?: any | null;
113
+ isConfigurable: boolean;
114
+ isEditable: boolean;
115
+ hasUIConfig?: boolean | null;
116
+ collectionConfigs: Array<{
117
+ __typename?: "CollectionConfig";
118
+ factRefs: Array<string>;
119
+ filter?: any | null;
120
+ frequency?: any | null;
121
+ cache?: any | null;
122
+ exclude?: any | null;
123
+ }>;
124
+ dependentChecks?: Array<{
125
+ __typename?: "Checker";
126
+ id: string;
127
+ name?: string | null;
128
+ }> | null;
129
+ }[], unknown>;
130
+
131
+ /**
132
+ * React hook that saves collector configuration.
133
+ *
134
+ * @public
135
+ */
136
+ declare function useUpdateCollectorConfig(): _tanstack_react_query.UseMutationResult<{
137
+ __typename?: "Collector";
138
+ id: string;
139
+ factNames: Array<string>;
140
+ config?: any | null;
141
+ configSchema?: any | null;
142
+ collectionConfigs: Array<{
143
+ __typename?: "CollectionConfig";
144
+ factRefs: Array<string>;
145
+ filter?: any | null;
146
+ frequency?: any | null;
147
+ cache?: any | null;
148
+ }>;
149
+ }, unknown, {
150
+ collectorId: string;
151
+ config?: JsonObject;
152
+ }, unknown>;
153
+
154
+ export { EntitySoundcheckCard, type EntitySoundcheckCardProps, EntitySoundcheckContent, GroupSoundcheckContent, IntegrationPageBlueprint, type OverviewPageProps, SoundcheckOverviewPage, SoundcheckRoutingPage, soundcheckPlugin, useGetCollectors, useUpdateCollectorConfig };
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{EntitySoundcheckCard as u,EntitySoundcheckContent as i,GroupSoundcheckContent as r,SoundcheckOverviewPage as d,SoundcheckRoutingPage as h,soundcheckPlugin as k}from"./plugin.esm.js";import"react/jsx-runtime";import"./components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import"./components/EntitySoundcheckCard/Card.esm.js";export{u as EntitySoundcheckCard,i as EntitySoundcheckContent,r as GroupSoundcheckContent,d as SoundcheckOverviewPage,h as SoundcheckRoutingPage,k as soundcheckPlugin};
1
+ import{EntitySoundcheckCard as m,EntitySoundcheckContent as d,GroupSoundcheckContent as g,SoundcheckOverviewPage as a,SoundcheckRoutingPage as h,soundcheckPlugin as k}from"./plugin.esm.js";import"react/jsx-runtime";import"./components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import"./components/EntitySoundcheckCard/Card.esm.js";import{IntegrationPageBlueprint as C}from"./blueprints/IntegrationPageBlueprint.esm.js";import{useGetCollectors as S}from"./hooks/collectors/useGetCollectors.esm.js";import{useUpdateCollectorConfig as x}from"./hooks/collectors/useUpdateCollectorConfig.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"./api.esm.js";import"./hooks/graphqlKeys.esm.js";export{m as EntitySoundcheckCard,d as EntitySoundcheckContent,g as GroupSoundcheckContent,C as IntegrationPageBlueprint,a as SoundcheckOverviewPage,h as SoundcheckRoutingPage,k as soundcheckPlugin,S as useGetCollectors,x as useUpdateCollectorConfig};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -1,2 +1,2 @@
1
- import{z as e}from"zod";import{filterPresent as i}from"../components/Filter/utils.esm.js";import"../components/Filter/FilterComponent.esm.js";import{TimeUnit as u}from"../components/Frequency/types.esm.js";import"../components/Frequency/util.esm.js";import"../components/Frequency/FrequencyComponent.esm.js";import{validateCacheConfig as n}from"./collectors.esm.js";import{validateFrequency as l}from"./frequency.esm.js";const m="At least one check is required",y="This field is required",s=e.nativeEnum(u),p=e.strictObject({enabled:e.boolean(),hasDuration:e.boolean(),unit:s.optional(),value:e.number().min(1,"Value must be greater than 0.").optional()}).refine(t=>n(t)===!0,t=>({message:n(t)})),d=e.strictObject({type:e.enum(["HumanDuration","cron"]),unit:s.optional(),value:e.number().min(1,"Value must be greater than 0.").optional(),cron:e.string().optional()}).refine(t=>l(t)===!0,t=>({message:l(t)})),r=e.strictObject({selectedKinds:e.string().array(),selectedTypes:e.string().array(),selectedLifecycles:e.string().array(),selectedOwners:e.string().array(),selectedSystems:e.string().array(),selectedTags:e.string().array()}),a=e.strictObject({selectedLabels:e.object({key:e.string(),value:e.string().array().min(1,"Requires at least 1 value for key.")}).array().optional(),selectedAnnotations:e.object({key:e.string(),value:e.string().array().min(1,"Requires at least 1 value for key.")}).array().optional(),selectedOtherFilters:e.object({key:e.string(),value:e.string().array().min(1,"Requires at least 1 value for key.")}).array().optional()}),o=e.strictObject({filter:r.optional(),keyValueFilter:a.optional(),excludeFilter:r.optional(),excludeKeyValueFilter:a.optional()}),c=t=>!(!i(t.filter,t.keyValueFilter)&&i(t.excludeFilter,t.excludeKeyValueFilter)),f=o.refine(c,"Cannot have an exclude filter without an include filter.");export{m as CHECK_IS_REQUIRED_MSG,p as CacheConfigSchema,y as FIELD_IS_REQUIRED_MSG,r as FiltersSchema,d as FrequencySchema,a as KeyValueFiltersSchema,o as baseFiltersSchema,f as formFiltersSchema,c as refineFilters};
1
+ import F from"lodash";import{z as e}from"zod";import{filterPresent as n}from"../components/Filter/utils.esm.js";import"../components/Filter/FilterComponent.esm.js";import{TimeUnit as h}from"../components/Frequency/types.esm.js";import"../components/Frequency/util.esm.js";import"../components/Frequency/FrequencyComponent.esm.js";import{validateCacheConfig as l}from"./collectors.esm.js";import{validateFrequency as o}from"./frequency.esm.js";const b="At least one check is required",v="This field is required",s=e.nativeEnum(h),S=e.strictObject({enabled:e.boolean(),hasDuration:e.boolean(),unit:s.optional(),value:e.number().min(1,"Value must be greater than 0.").optional()}).refine(t=>l(t)===!0,t=>({message:l(t)})),k=e.strictObject({type:e.enum(["HumanDuration","cron"]),unit:s.optional(),value:e.number().min(1,"Value must be greater than 0.").optional(),cron:e.string().optional()}).refine(t=>o(t)===!0,t=>({message:o(t)})),r=e.strictObject({selectedKinds:e.string().array(),selectedTypes:e.string().array(),selectedLifecycles:e.string().array(),selectedOwners:e.string().array(),selectedSystems:e.string().array(),selectedTags:e.string().array()}),i=e.strictObject({selectedLabels:e.object({key:e.string(),value:e.string().array().min(1,"Requires at least 1 value for key.")}).array().optional(),selectedAnnotations:e.object({key:e.string(),value:e.string().array().min(1,"Requires at least 1 value for key.")}).array().optional(),selectedOtherFilters:e.object({key:e.string(),value:e.string().array().min(1,"Requires at least 1 value for key.")}).array().optional()}),c=e.strictObject({filter:r.optional(),keyValueFilter:i.optional(),excludeFilter:r.optional(),excludeKeyValueFilter:i.optional()}),u=t=>!(!n(t.filter,t.keyValueFilter)&&n(t.excludeFilter,t.excludeKeyValueFilter)),m="Cannot have an include and exclude filter on the same facet (kind, type, lifecycle, etc.).",f=t=>{if(t.filter&&t.excludeFilter){const y=Object.keys(t.filter),d=Object.keys(t.excludeFilter);for(const a of F.intersection(y,d)){const p=t.filter[a],g=t.excludeFilter[a];if(p.length>0&&g.length>0)return!1}}return!0},C=c.refine(u,"Cannot have an exclude filter without an include filter.").refine(f,m);export{b as CHECK_IS_REQUIRED_MSG,m as CONFLICTING_FILTER_ERROR_MESSAGE,S as CacheConfigSchema,v as FIELD_IS_REQUIRED_MSG,r as FiltersSchema,k as FrequencySchema,i as KeyValueFiltersSchema,c as baseFiltersSchema,f as ensureNoConflictingFilters,C as formFiltersSchema,u as refineFilters};
2
2
  //# sourceMappingURL=validation.esm.js.map