@spotify/backstage-plugin-soundcheck 0.22.0 → 0.22.2

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 (96) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/api.esm.js +1 -1
  3. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  4. package/dist/components/Badges/StatusBadge.esm.js +1 -1
  5. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  6. package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
  7. package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
  8. package/dist/components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js +1 -1
  9. package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
  10. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  11. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  12. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  13. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  14. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +1 -1
  15. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  16. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  17. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  18. package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
  19. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  20. package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
  21. package/dist/components/CheckDetails/CheckPullRequest.esm.js +2 -0
  22. package/dist/components/CheckDryRun/CheckDryRun.esm.js +1 -1
  23. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  24. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  25. package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  26. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
  27. package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  28. package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
  29. package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
  30. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  31. package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
  32. package/dist/components/CheckPage/CheckPageBUI.esm.js +1 -1
  33. package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +1 -1
  34. package/dist/components/CheckSelection/CheckSelection.esm.js +1 -1
  35. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
  36. package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
  37. package/dist/components/ChecksTable/FixMeCell.esm.js +2 -0
  38. package/dist/components/ChecksTable/PullRequestsTable.esm.js +2 -0
  39. package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +1 -1
  40. package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.esm.js +1 -1
  41. package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
  42. package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfWorkItemsComponent.esm.js +1 -1
  43. package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
  44. package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js +1 -1
  45. package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
  46. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  47. package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
  48. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  49. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  50. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  51. package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
  52. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  53. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  54. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  55. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  56. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  57. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  58. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
  59. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  60. package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
  61. package/dist/components/FixMeButton/FixMeButton.esm.js +2 -0
  62. package/dist/components/FixWithAiKAButton/FixWithAiKAButton.esm.js +2 -0
  63. package/dist/components/GroupSelectorBUI/GroupSelectList.esm.js +1 -1
  64. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  65. package/dist/components/LoadingIcon/LoadingIcon.esm.js +2 -0
  66. package/dist/components/Menus/useCampaignActions.esm.js +1 -1
  67. package/dist/components/Menus/useCheckActions.esm.js +1 -1
  68. package/dist/components/Menus/useTrackActions.esm.js +1 -1
  69. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  70. package/dist/components/ProgressBar/ProgressBar.esm.js +2 -0
  71. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  72. package/dist/components/RelativeTime/RelativeTime.esm.js +1 -1
  73. package/dist/components/Router.esm.js +1 -1
  74. package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js +1 -1
  75. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
  76. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
  77. package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
  78. package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
  79. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  80. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  81. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  82. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  83. package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
  84. package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
  85. package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
  86. package/dist/components/ViewPullRequests/ViewPullRequests.esm.js +2 -0
  87. package/dist/contexts/UserProvider.esm.js +1 -1
  88. package/dist/hooks/fixMe/useFixMe.esm.js +2 -0
  89. package/dist/hooks/fixWithAika/useFixWithAika.esm.js +2 -0
  90. package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
  91. package/dist/hooks/remedy/useRemediesForCheck.esm.js +2 -0
  92. package/dist/hooks/remedy/useRemediesForEntity.esm.js +2 -0
  93. package/dist/hooks/remedy/useRemedyTrackerApi.esm.js +2 -0
  94. package/dist/index.d.ts +13 -2
  95. package/dist/index.esm.js +1 -1
  96. package/package.json +2 -2
@@ -1,2 +1,2 @@
1
- import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as v,FormProvider as b}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as w}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as N}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as D,confirmationModalContent as M}from"../Common/utils.esm.js";import{mapConfigToCatalogCollectorConfig as P,defaultCatalogConfig as T,mapCatalogCollectorConfigToConfig as j}from"./utils.esm.js";const H=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),R=({disabled:t,selectedCollector:r})=>{const i=v({defaultValues:r?P(r.config):T(),mode:"onChange"}),{formState:{errors:n},handleSubmit:e}=i,a=H(),s=!!n.entityDescriptor,{mutateAsync:l}=w(),[c,p]=B(x),{showModal:f}=y(),m=async g=>{if(!await f(M(r)))return;const d=j(g);await l({collectorId:r.id,config:d})&&p()};return N(D(r)),C(u,{children:[o(S,{className:a.form,children:o(b,{...i,children:o("form",{onSubmit:e(m),children:o(k,{name:"entityDescriptor",label:"Entity Descriptor",description:"Collects entities from Backstage's Software Catalog.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:c,saveButtonText:"Save",isLoading:!1,onSave:e(m),disableSave:s})})]})};export{R as CatalogConfigurator};
1
+ import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as v,FormProvider as b}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as w}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as N}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as D,confirmationModalContent as M}from"../Common/utils.esm.js";import{mapConfigToCatalogCollectorConfig as P,defaultCatalogConfig as T,mapCatalogCollectorConfigToConfig as j}from"./utils.esm.js";const H=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),R=({disabled:t,selectedCollector:r})=>{const i=v({defaultValues:r?P(r.config):T(),mode:"onChange"}),{formState:{errors:n},handleSubmit:e}=i,m=H(),s=!!n.entityDescriptor,{mutateAsync:l}=w(),[c,p]=B(x),{showModal:f}=y(),a=async g=>{if(!await f(M(r)))return;const d=j(g);await l({collectorId:r.id,config:d})&&p()};return N(D(r)),C(u,{children:[o(S,{className:m.form,children:o(b,{...i,children:o("form",{onSubmit:e(a),children:o(k,{name:"entityDescriptor",label:"Entity Descriptor",description:"Collects entities from Backstage's Software Catalog.",disabled:t})})})}),o("div",{className:m.section,children:o(F,{onCancel:c,saveButtonText:"Save",isLoading:!1,onSave:e(a),disableSave:s})})]})};export{R as CatalogConfigurator};
2
2
  //# sourceMappingURL=CatalogConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as c,Fragment as D,jsx as e}from"react/jsx-runtime";import{makeStyles as b,Paper as h,Divider as S}from"@material-ui/core";import{useForm as y,FormProvider as j}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as N}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as F}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as L}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as O}from"../../../../routes.esm.js";import{FooterButtons as k}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as l}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as x}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as B,confirmationModalContent as I}from"../Common/utils.esm.js";import{mapConfigToDataDogCollectorConfig as M,defaultDataDogConfig as P,mapDataDogCollectorConfigToConfig as T}from"./utils.esm.js";const A=b(i=>({spacer:{height:i.spacing(8),width:"100%"},section:{marginBottom:i.spacing(2)}})),H=({disabled:i,selectedCollector:o})=>{const t=y({defaultValues:o?M(o.config):P(),mode:"onChange"}),{formState:{errors:r},handleSubmit:a}=t,n=A(),s=!!r.serviceDefinition||!!r.serviceLevelObjective,{mutateAsync:d}=L(),[p,f]=F(O),{showModal:g}=N(),m=async C=>{if(!await g(I(o)))return;const u=T(C);await d({collectorId:o.id,config:u})&&f()};w(B(o));const v=!o.config?.apiKey||!o.config?.appKey;return c(D,{children:[e(x,{collectorName:"Datadog",collectorId:o.id,invalidConfig:v,hasNonUIOptions:!0}),e(h,{className:n.section,children:e(j,{...t,children:c("form",{onSubmit:a(m),children:[e(l,{name:"serviceDefinition",label:"Service Definition",description:"Collects details about Datadog service linked to an entity.",disabled:i}),e(S,{}),e(l,{name:"serviceLevelObjective",label:"Service Level Objective",description:"Collects details about SLOs configured for a Datadog service linked to an entity.",disabled:i})]})})}),e("div",{className:n.section,children:e(k,{onCancel:p,saveButtonText:"Save",isLoading:!1,onSave:a(m),disableSave:s})})]})};export{H as DataDogConfigurator};
1
+ import{jsxs as c,Fragment as D,jsx as e}from"react/jsx-runtime";import{makeStyles as b,Paper as h,Divider as S}from"@material-ui/core";import{useForm as y,FormProvider as j}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as N}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as F}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as L}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as O}from"../../../../routes.esm.js";import{FooterButtons as k}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as l}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as x}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as B,confirmationModalContent as I}from"../Common/utils.esm.js";import{mapConfigToDataDogCollectorConfig as M,defaultDataDogConfig as P,mapDataDogCollectorConfigToConfig as T}from"./utils.esm.js";const A=b(i=>({spacer:{height:i.spacing(8),width:"100%"},section:{marginBottom:i.spacing(2)}})),H=({disabled:i,selectedCollector:o})=>{const t=y({defaultValues:o?M(o.config):P(),mode:"onChange"}),{formState:{errors:r},handleSubmit:a}=t,n=A(),s=!!r.serviceDefinition||!!r.serviceLevelObjective,{mutateAsync:d}=L(),[p,f]=F(O),{showModal:g}=N(),m=async C=>{if(!await g(I(o)))return;const u=T(C);await d({collectorId:o.id,config:u})&&f()};w(B(o));const v=!o.config?.apiKey||!o.config?.appKey;return c(D,{children:[e(x,{collectorName:"Datadog",collectorId:o.id,invalidConfig:v,hasNonUIOptions:!0}),e(h,{className:n.section,children:e(j,{...t,children:c("form",{onSubmit:a(m),children:[e(l,{name:"serviceDefinition",label:"Service Definition",description:"Collects details about Datadog service linked to an entity.",disabled:i}),e(S,{}),e(l,{name:"serviceLevelObjective",label:"Service Level Objective",description:"Collects details about SLOs configured for a Datadog service linked to an entity.",disabled:i})]})})}),e("div",{className:n.section,children:e(k,{onCancel:p,saveButtonText:"Save",isLoading:!1,onSave:a(m),disableSave:s})})]})};export{H as DataDogConfigurator};
2
2
  //# sourceMappingURL=DataDogConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as y,FormProvider as v}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as R}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as b}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as D}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as x}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as N,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToDataRegistryCollectorConfig as M,defaultDataRegistryConfig as P,mapDataRegistryCollectorConfigToConfig as j}from"./utils.esm.js";const k=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:r})=>{const e=y({defaultValues:r?M(r.config):P(),mode:"onChange"}),{formState:{errors:n},handleSubmit:i}=e,a=k(),s=!!n.datasetSchema,{mutateAsync:c}=D(),[l,p]=b(B),{showModal:f}=R(),m=async d=>{if(!await f(T(r)))return;const g=j(d);await c({collectorId:r.id,config:g})&&p()};return w(N(r)),C(u,{children:[o(S,{className:a.form,children:o(v,{...e,children:o("form",{onSubmit:i(m),children:o(x,{name:"datasetSchema",label:"Dataset Schema",description:"Collects fields (name, type, description) from a dataset in Data Registry.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:l,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:s})})]})};export{H as DataRegistryConfigurator};
1
+ import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as y,FormProvider as v}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as R}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as b}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as D}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as x}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as N,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToDataRegistryCollectorConfig as M,defaultDataRegistryConfig as P,mapDataRegistryCollectorConfigToConfig as j}from"./utils.esm.js";const k=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:r})=>{const e=y({defaultValues:r?M(r.config):P(),mode:"onChange"}),{formState:{errors:n},handleSubmit:i}=e,a=k(),s=!!n.datasetSchema,{mutateAsync:c}=D(),[p,l]=b(B),{showModal:f}=R(),m=async d=>{if(!await f(T(r)))return;const g=j(d);await c({collectorId:r.id,config:g})&&l()};return w(N(r)),C(u,{children:[o(S,{className:a.form,children:o(v,{...e,children:o("form",{onSubmit:i(m),children:o(x,{name:"datasetSchema",label:"Dataset Schema",description:"Collects fields (name, type, description) from a dataset in Data Registry.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:p,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:s})})]})};export{H as DataRegistryConfigurator};
2
2
  //# sourceMappingURL=DataRegistryConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as p,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as A}from"@hookform/resolvers/zod";import{makeStyles as F,Paper as v,Divider as r}from"@material-ui/core";import{useForm as D,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as B}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as L}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as T}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as N}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as w,confirmationModalContent as G}from"../Common/utils.esm.js";import{CodeScanningAlertsFactDetails as E}from"./CodeScanningAlertsFactDetails.esm.js";import{DependabotAlertsFactDetails as I}from"./DependabotAlertsFactDetails.esm.js";import{SecretScanningAlertsFactDetails as M}from"./SecretScanningAlertsFactDetails.esm.js";import{SecurityAdvisoriesFactDetails as O}from"./SecurityAdvisoriesFactDetails.esm.js";import{mapConfigToGithubCollectorConfig as _,defaultGithubConfig as j,DEFAULT_NEW_COLLECTOR_CONFIG as n,mapGithubCollectorConfigToConfig as k}from"./utils.esm.js";import{githubCollectorFormSchema as H}from"./validation.esm.js";const d=F(o=>({spacer:{height:o.spacing(8),width:"100%"},section:{marginBottom:o.spacing(2)},form:{marginBottom:o.spacing(2)},root:{paddingTop:o.spacing(1)},formInput:{marginTop:0,marginBottom:o.spacing(2),width:"500px"},helperText:{marginLeft:0}})),U=({disabled:o,selectedCollector:a})=>{const s=D({defaultValues:a?_(a.config):j(),mode:"onChange",resolver:A(H)}),{formState:{errors:t},handleSubmit:l}=s,c=d(),f=!!t.branchProtections||!!t.branchRules||!!t.codeScanningAlerts||!!t.dependabotAlerts||!!t.repositoryDetails||!!t.repositoryLanguages||!!t.secretScanningAlerts||!!t.securityAdvisories,{mutateAsync:u}=T(),[g,b]=L(x),{showModal:C}=B(),m=async y=>{if(!await C(G(a)))return;const h=k(y);await u({collectorId:a.id,config:h})&&b()};return P(w(a)),p(S,{children:[e(v,{className:c.form,children:e(R,{...s,children:p("form",{onSubmit:l(m),children:[e(i,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"branchRules",label:"Branch Rules",description:"Collects branch rules information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"codeScanningAlerts",label:"Code Scanning Alerts",description:"Collects details about code scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:E,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"dependabotAlerts",label:"Dependabot Alerts",description:"Collects details about dependabot alerts for an entity's repository.",disabled:o,FactDetailsComponent:I,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"repositoryLanguages",label:"Repository Languages",description:"Collects details about the languages used in an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"secretScanningAlerts",label:"Secret Scanning Alerts",description:"Collects details about secret scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:M,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"securityAdvisories",label:"Security Advisories",description:"Collects details about security advisories for an entity's repository.",disabled:o,FactDetailsComponent:O,multipleCollectors:{enable:!0,defaultConfig:n}})]})})}),e("div",{className:c.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(m),disableSave:f})})]})};export{U as GithubConfigurator,d as useStyles};
1
+ import{jsxs as p,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as A}from"@hookform/resolvers/zod";import{makeStyles as F,Paper as v,Divider as r}from"@material-ui/core";import{useForm as D,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as B}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as L}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as T}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as N}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as w,confirmationModalContent as G}from"../Common/utils.esm.js";import{CodeScanningAlertsFactDetails as E}from"./CodeScanningAlertsFactDetails.esm.js";import{DependabotAlertsFactDetails as I}from"./DependabotAlertsFactDetails.esm.js";import{SecretScanningAlertsFactDetails as M}from"./SecretScanningAlertsFactDetails.esm.js";import{SecurityAdvisoriesFactDetails as O}from"./SecurityAdvisoriesFactDetails.esm.js";import{mapConfigToGithubCollectorConfig as _,defaultGithubConfig as j,DEFAULT_NEW_COLLECTOR_CONFIG as n,mapGithubCollectorConfigToConfig as k}from"./utils.esm.js";import{githubCollectorFormSchema as H}from"./validation.esm.js";const d=F(o=>({spacer:{height:o.spacing(8),width:"100%"},section:{marginBottom:o.spacing(2)},form:{marginBottom:o.spacing(2)},root:{paddingTop:o.spacing(1)},formInput:{marginTop:0,marginBottom:o.spacing(2),width:"500px"},helperText:{marginLeft:0}})),U=({disabled:o,selectedCollector:a})=>{const s=D({defaultValues:a?_(a.config):j(),mode:"onChange",resolver:A(H)}),{formState:{errors:t},handleSubmit:l}=s,c=d(),f=!!t.branchProtections||!!t.branchRules||!!t.codeScanningAlerts||!!t.dependabotAlerts||!!t.repositoryDetails||!!t.repositoryLanguages||!!t.secretScanningAlerts||!!t.securityAdvisories,{mutateAsync:u}=T(),[g,b]=L(x),{showModal:C}=B(),m=async y=>{if(!await C(G(a)))return;const h=k(y);await u({collectorId:a.id,config:h})&&b()};return P(w(a)),p(S,{children:[e(v,{className:c.form,children:e(R,{...s,children:p("form",{onSubmit:l(m),children:[e(i,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"branchRules",label:"Branch Rules",description:"Collects branch rules information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"codeScanningAlerts",label:"Code Scanning Alerts",description:"Collects details about code scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:E,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"dependabotAlerts",label:"Dependabot Alerts",description:"Collects details about dependabot alerts for an entity's repository.",disabled:o,FactDetailsComponent:I,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"repositoryLanguages",label:"Repository Languages",description:"Collects details about the languages used in an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"secretScanningAlerts",label:"Secret Scanning Alerts",description:"Collects details about secret scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:M,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"securityAdvisories",label:"Security Advisories",description:"Collects details about security advisories for an entity's repository.",disabled:o,FactDetailsComponent:O,multipleCollectors:{enable:!0,defaultConfig:n}})]})})}),e("div",{className:c.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(m),disableSave:f})})]})};export{U as GithubConfigurator,d as useStyles};
2
2
  //# sourceMappingURL=GithubConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as l,Fragment as h,jsx as o}from"react/jsx-runtime";import{makeStyles as j,Paper as v,Divider as c}from"@material-ui/core";import{useForm as P,FormProvider as S}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as D}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as G,confirmationModalContent as L}from"../Common/utils.esm.js";import{mapConfigToGitlabCollectorConfig as N,defaultGitlabConfig as T,mapGitlabCollectorConfigToConfig as M}from"./utils.esm.js";const k=j(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const a=P({defaultValues:e?N(e.config):T(),mode:"onChange"}),{formState:{errors:i},handleSubmit:n}=a,m=k(),p=!!i.branchProtections||!!i.projectDetails||!!i.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(e)))return;const b=M(C);await d({collectorId:e.id,config:b})&&g()};return D(G(e)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(r,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectLanguages",label:"Project Languages",description:"Collects details about the languages used in an entity's project.",disabled:t})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:p})})]})};export{H as GitlabConfigurator};
1
+ import{jsxs as l,Fragment as h,jsx as o}from"react/jsx-runtime";import{makeStyles as j,Paper as v,Divider as c}from"@material-ui/core";import{useForm as P,FormProvider as S}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as D}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as G,confirmationModalContent as L}from"../Common/utils.esm.js";import{mapConfigToGitlabCollectorConfig as N,defaultGitlabConfig as T,mapGitlabCollectorConfigToConfig as M}from"./utils.esm.js";const k=j(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const a=P({defaultValues:e?N(e.config):T(),mode:"onChange"}),{formState:{errors:i},handleSubmit:n}=a,m=k(),p=!!i.branchProtections||!!i.projectDetails||!!i.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(e)))return;const b=M(C);await d({collectorId:e.id,config:b})&&g()};return D(G(e)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(r,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectLanguages",label:"Project Languages",description:"Collects details about the languages used in an entity's project.",disabled:t})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:p})})]})};export{H as GitlabConfigurator};
2
2
  //# sourceMappingURL=GitlabConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as b,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as H,Paper as S}from"@material-ui/core";import{useCallback as q}from"react";import{useForm as N,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as y}from"../../../../routes.esm.js";import{FooterButtons as B}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as U}from"../Common/utils.esm.js";import{RequestFactDetailsComponent as j}from"./RequestFactDetailsComponent.esm.js";import{mapConfigToHttpCollectorConfig as A,defaultHttpConfig as D,defaultRequestCollectorConfig as V,mapHttpCollectorConfigToConfig as z}from"./utils.esm.js";import{httpCollectorFormSchema as L}from"./validation.esm.js";const O=H(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),E=({disabled:e,selectedCollector:t})=>{const s=q(async(r,...i)=>{const g={enabled:!1,collectors:[]},h={request:r.request.enabled?r.request:g};return F(L)(h,...i)},[]),m=N({defaultValues:t?A(t.config):D(),mode:"onChange",resolver:s}),{formState:{isValid:c},handleSubmit:n}=m,a=O(),p=!c,{mutateAsync:f}=x(),[d,u]=w(y),{showModal:C}=T(),l=async r=>{if(!await C(U(t)))return;const i=z(r);await f({collectorId:t.id,config:i})&&u()};return P(M(t)),b(v,{children:[o(I,{collectorName:"Http",collectorId:t.id,hasNonUIOptions:!0}),o(S,{className:a.section,children:o(R,{...m,children:o("form",{onSubmit:n(l),children:o(k,{name:"request",label:"Request",description:"Collects data from HTTP endpoint.",disabled:e,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:V()}})})})}),o("div",{className:a.section,children:o(B,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:n(l),disableSave:p})})]})};export{E as HttpConfigurator};
1
+ import{jsxs as b,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as H,Paper as S}from"@material-ui/core";import{useCallback as q}from"react";import{useForm as N,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as y}from"../../../../routes.esm.js";import{FooterButtons as B}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as U}from"../Common/utils.esm.js";import{RequestFactDetailsComponent as j}from"./RequestFactDetailsComponent.esm.js";import{mapConfigToHttpCollectorConfig as A,defaultHttpConfig as D,defaultRequestCollectorConfig as V,mapHttpCollectorConfigToConfig as z}from"./utils.esm.js";import{httpCollectorFormSchema as L}from"./validation.esm.js";const O=H(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),E=({disabled:e,selectedCollector:t})=>{const s=q(async(r,...i)=>{const g={enabled:!1,collectors:[]},h={request:r.request.enabled?r.request:g};return F(L)(h,...i)},[]),m=N({defaultValues:t?A(t.config):D(),mode:"onChange",resolver:s}),{formState:{isValid:c},handleSubmit:n}=m,a=O(),p=!c,{mutateAsync:f}=x(),[d,u]=w(y),{showModal:C}=T(),l=async r=>{if(!await C(U(t)))return;const i=z(r);await f({collectorId:t.id,config:i})&&u()};return P(M(t)),b(v,{children:[o(I,{collectorName:"Http",collectorId:t.id,hasNonUIOptions:!0}),o(S,{className:a.section,children:o(R,{...m,children:o("form",{onSubmit:n(l),children:o(k,{name:"request",label:"Request",description:"Collects data from HTTP endpoint.",disabled:e,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:V()}})})})}),o("div",{className:a.section,children:o(B,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:n(l),disableSave:p})})]})};export{E as HttpConfigurator};
2
2
  //# sourceMappingURL=HttpConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as a,jsx as e}from"react/jsx-runtime";import{Grid as l,TextField as h,MenuItem as T,FormHelperText as y,Typography as k,IconButton as g}from"@material-ui/core";import q from"@material-ui/icons/Add";import N from"@material-ui/icons/Remove";import b from"classnames";import{highlight as H,languages as I}from"prismjs";import"prismjs/components/prism-json";import{useFormContext as v,useFieldArray as S,Controller as c}from"react-hook-form";import P from"react-simple-code-editor";import{FormFieldLabel as p}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as F}from"./RequestFactDetailsComponent.esm.js";import{HTTP_METHOD_OPTIONS as C,defaultNewHeaderConfig as R}from"./utils.esm.js";const $=({name:s,disabled:n})=>{const r=F(),{control:d}=v(),{fields:u,insert:f,remove:x}=S({control:d,name:`${s}.headers`});return a(l,{container:!0,spacing:1,direction:"column",className:r.root,children:[a(l,{item:!0,children:[e(p,{title:"Target Plugin ID (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),e(c,{name:`${s}.targetPluginId`,control:d,render:({field:o,fieldState:{error:t}})=>e(h,{...o,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Example: soundcheck",className:r.textInput,disabled:n,error:!!t,helperText:t?.message??"Specify if calling a plugin's API to use {{targetPluginBaseUrl}} and {{targetPluginAuthToken}} template tags",FormHelperTextProps:{className:r.helperText}})})]}),a(l,{item:!0,children:[e(p,{title:"Request URL",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),a(l,{container:!0,spacing:1,direction:"row",children:[e(l,{item:!0,xs:2,children:e(c,{name:`${s}.method`,control:d,render:({field:o,fieldState:{error:t}})=>e(h,{...o,fullWidth:!0,select:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Method",className:r.textInput,disabled:n,error:!!t,helperText:t?.message??"Method",FormHelperTextProps:{className:r.helperText},children:C.map(i=>e(T,{value:i,children:i},i))})})}),e(l,{item:!0,xs:10,children:e(c,{name:`${s}.url`,control:d,render:({field:o,fieldState:{error:t}})=>e(h,{...o,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Example: https://api.example.com/{{entity.metadata.name}}/get",className:r.textInput,disabled:n,error:!!t,helperText:t?.message??"Request URL can use liquid template language",FormHelperTextProps:{className:r.helperText}})})})]})]}),a(l,{item:!0,children:[e(p,{title:"Request Body (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),e(c,{name:`${s}.body`,control:d,render:({field:o,fieldState:{error:t}})=>a("div",{children:[e("div",{className:b(r.jsonInput,t?r.jsonInputError:void 0),children:e(P,{...o,highlight:i=>H(i??"",I.json,"json"),onValueChange:o.onChange,padding:10,disabled:n,placeholder:"Request Body",textareaClassName:r.jsonTextarea})}),e(y,{className:r.helperText,error:!!t,children:t?.message??"Request body can use liquid template language"})]})})]}),e(l,{item:!0,children:a(l,{container:!0,spacing:0,direction:"column",children:[e(p,{title:"Request Headers (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),e(k,{color:"textSecondary",variant:"caption",children:"Header keys and values can use liquid template language"}),u.map((o,t)=>a(l,{item:!0,container:!0,alignItems:"center",spacing:2,children:[a(l,{item:!0,xs:5,children:[e(p,{title:"Key"}),e(c,{name:`${s}.headers.${t}.key`,control:d,render:({field:i,fieldState:{error:m}})=>e(h,{...i,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Header Key",className:r.textInput,disabled:n,error:!!m,helperText:m?.message??" ",FormHelperTextProps:{className:r.helperText}})})]}),a(l,{item:!0,xs:5,children:[e(p,{title:"Value"}),e(c,{name:`${s}.headers.${t}.value`,control:d,render:({field:i,fieldState:{error:m}})=>e(h,{...i,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Header Value",className:r.textInput,disabled:n,error:!!m,helperText:m?.message??" ",FormHelperTextProps:{className:r.helperText}})})]}),a(l,{item:!0,xs:2,children:[e(g,{onClick:()=>x(t),disabled:n||u.length===1,children:e(N,{fontSize:"small"})}),e(g,{onClick:()=>f(t+1,R()),disabled:n,children:e(q,{fontSize:"small"})})]})]},o.id))]})})]})};export{$ as HttpRequestComponent};
1
+ import{jsxs as a,jsx as e}from"react/jsx-runtime";import{Grid as l,TextField as h,MenuItem as T,FormHelperText as y,Typography as k,IconButton as g}from"@material-ui/core";import q from"@material-ui/icons/Add";import b from"@material-ui/icons/Remove";import N from"classnames";import{highlight as H,languages as I}from"prismjs";import"prismjs/components/prism-json";import{useFormContext as v,useFieldArray as S,Controller as c}from"react-hook-form";import F from"react-simple-code-editor";import{FormFieldLabel as p}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as P}from"./RequestFactDetailsComponent.esm.js";import{HTTP_METHOD_OPTIONS as C,defaultNewHeaderConfig as R}from"./utils.esm.js";const $=({name:s,disabled:n})=>{const r=P(),{control:d}=v(),{fields:u,insert:f,remove:x}=S({control:d,name:`${s}.headers`});return a(l,{container:!0,spacing:1,direction:"column",className:r.root,children:[a(l,{item:!0,children:[e(p,{title:"Target Plugin ID (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),e(c,{name:`${s}.targetPluginId`,control:d,render:({field:o,fieldState:{error:t}})=>e(h,{...o,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Example: soundcheck",className:r.textInput,disabled:n,error:!!t,helperText:t?.message??"Specify if calling a plugin's API to use {{targetPluginBaseUrl}} and {{targetPluginAuthToken}} template tags",FormHelperTextProps:{className:r.helperText}})})]}),a(l,{item:!0,children:[e(p,{title:"Request URL",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),a(l,{container:!0,spacing:1,direction:"row",children:[e(l,{item:!0,xs:2,children:e(c,{name:`${s}.method`,control:d,render:({field:o,fieldState:{error:t}})=>e(h,{...o,fullWidth:!0,select:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Method",className:r.textInput,disabled:n,error:!!t,helperText:t?.message??"Method",FormHelperTextProps:{className:r.helperText},children:C.map(i=>e(T,{value:i,children:i},i))})})}),e(l,{item:!0,xs:10,children:e(c,{name:`${s}.url`,control:d,render:({field:o,fieldState:{error:t}})=>e(h,{...o,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Example: https://api.example.com/{{entity.metadata.name}}/get",className:r.textInput,disabled:n,error:!!t,helperText:t?.message??"Request URL can use liquid template language",FormHelperTextProps:{className:r.helperText}})})})]})]}),a(l,{item:!0,children:[e(p,{title:"Request Body (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),e(c,{name:`${s}.body`,control:d,render:({field:o,fieldState:{error:t}})=>a("div",{children:[e("div",{className:N(r.jsonInput,t?r.jsonInputError:void 0),children:e(F,{...o,highlight:i=>H(i??"",I.json,"json"),onValueChange:o.onChange,padding:10,disabled:n,placeholder:"Request Body",textareaClassName:r.jsonTextarea})}),e(y,{className:r.helperText,error:!!t,children:t?.message??"Request body can use liquid template language"})]})})]}),e(l,{item:!0,children:a(l,{container:!0,spacing:0,direction:"column",children:[e(p,{title:"Request Headers (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/http#request-required"}),e(k,{color:"textSecondary",variant:"caption",children:"Header keys and values can use liquid template language"}),u.map((o,t)=>a(l,{item:!0,container:!0,alignItems:"center",spacing:2,children:[a(l,{item:!0,xs:5,children:[e(p,{title:"Key"}),e(c,{name:`${s}.headers.${t}.key`,control:d,render:({field:i,fieldState:{error:m}})=>e(h,{...i,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Header Key",className:r.textInput,disabled:n,error:!!m,helperText:m?.message??" ",FormHelperTextProps:{className:r.helperText}})})]}),a(l,{item:!0,xs:5,children:[e(p,{title:"Value"}),e(c,{name:`${s}.headers.${t}.value`,control:d,render:({field:i,fieldState:{error:m}})=>e(h,{...i,fullWidth:!0,type:"text",variant:"outlined",margin:"dense",placeholder:"Header Value",className:r.textInput,disabled:n,error:!!m,helperText:m?.message??" ",FormHelperTextProps:{className:r.helperText}})})]}),a(l,{item:!0,xs:2,children:[e(g,{onClick:()=>x(t),disabled:n||u.length===1,children:e(b,{fontSize:"small"})}),e(g,{onClick:()=>f(t+1,R()),disabled:n,children:e(q,{fontSize:"small"})})]})]},o.id))]})})]})};export{$ as HttpRequestComponent};
2
2
  //# sourceMappingURL=HttpRequestComponent.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as i,Fragment as N,jsx as o}from"react/jsx-runtime";import{DismissableBanner as w}from"@backstage/core-components";import{zodResolver as y}from"@hookform/resolvers/zod";import{makeStyles as D,Typography as F,Link as l,Paper as j,Divider as L}from"@material-ui/core";import{useForm as A,FormProvider as P}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as B}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as M}from"../../../../routes.esm.js";import{FooterButtons as R}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as U}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as m}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as q}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as H,confirmationModalContent as O}from"../Common/utils.esm.js";import{IssuesFactDetailsComponent as p}from"./IssuesFactDetailsComponent.esm.js";import{mapConfigToJiraCollectorConfig as Q,defaultJiraConfig as _,issuesCollectorConfig as d,mapJiraCollectorConfigToConfig as z}from"./utils.esm.js";import{jiraCollectorFormSchema as V}from"./validation.esm.js";const E=D(r=>({spacer:{height:r.spacing(8),width:"100%"},section:{marginBottom:r.spacing(2)},apiLink:{color:r.palette.text.primary}})),G=({disabled:r,selectedCollector:e})=>{const t=A({defaultValues:e?Q(e.config):_(),mode:"onChange",resolver:y(V)}),{formState:{errors:u},handleSubmit:n}=t,a=E(),f=!!u.issuesSearch,{mutateAsync:h}=B(),[g,C]=x(M),{showModal:S}=T(),c=async k=>{if(!await S(O(e)))return;const I=z(k);await h({collectorId:e.id,config:I})&&C()};U(H(e));const b=!e.config?.apiToken||!e.config?.username,v=!e.config?.personalAccessToken,J=!e.config?.baseUrl||b&&v,s={issuesSearchDeprecated:{name:"Search for issues using JQL",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-search/#api-rest-api-2-search-get"},issuesSearchNew:{name:"Search for issues using JQL enhanced search",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-post"}};return i(N,{children:[o(q,{collectorName:"Jira",collectorId:e.id,invalidConfig:J,hasNonUIOptions:!0}),o(w,{message:i(F,{variant:"body2",children:["Issues Search fact collector now uses the updated",o(l,{href:s.issuesSearchNew.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",s.issuesSearchNew.name," "]})}),"API, as the previous",o(l,{href:s.issuesSearchDeprecated.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",s.issuesSearchDeprecated.name," "]})}),"API was deprecated and removed for Jira Cloud instances. Jira Cloud users may be required to update their dependent checks due to this minor API schema change."]}),variant:"warning",id:"jiraDeprecatedIssuesSearch"}),o(j,{className:a.section,children:o(P,{...t,children:i("form",{onSubmit:n(c),children:[o(m,{name:"issuesSearch",label:"Issues Search",description:"Collects details about Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}}),o(L,{}),o(m,{name:"issuesCount",label:"Issues Count",description:"Collects details about a total number of Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}})]})})}),o("div",{className:a.section,children:o(R,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:n(c),disableSave:f})})]})};export{G as JiraConfigurator};
1
+ import{jsxs as i,Fragment as N,jsx as o}from"react/jsx-runtime";import{DismissableBanner as w}from"@backstage/core-components";import{zodResolver as y}from"@hookform/resolvers/zod";import{makeStyles as D,Typography as F,Link as l,Paper as j,Divider as L}from"@material-ui/core";import{useForm as A,FormProvider as P}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as B}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as M}from"../../../../routes.esm.js";import{FooterButtons as R}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as U}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as m}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as q}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as H,confirmationModalContent as O}from"../Common/utils.esm.js";import{IssuesFactDetailsComponent as p}from"./IssuesFactDetailsComponent.esm.js";import{mapConfigToJiraCollectorConfig as Q,defaultJiraConfig as _,issuesCollectorConfig as d,mapJiraCollectorConfigToConfig as z}from"./utils.esm.js";import{jiraCollectorFormSchema as V}from"./validation.esm.js";const E=D(r=>({spacer:{height:r.spacing(8),width:"100%"},section:{marginBottom:r.spacing(2)},apiLink:{color:r.palette.text.primary}})),G=({disabled:r,selectedCollector:e})=>{const s=A({defaultValues:e?Q(e.config):_(),mode:"onChange",resolver:y(V)}),{formState:{errors:u},handleSubmit:n}=s,a=E(),f=!!u.issuesSearch,{mutateAsync:h}=B(),[g,C]=x(M),{showModal:S}=T(),c=async k=>{if(!await S(O(e)))return;const I=z(k);await h({collectorId:e.id,config:I})&&C()};U(H(e));const b=!e.config?.apiToken||!e.config?.username,v=!e.config?.personalAccessToken,J=!e.config?.baseUrl||b&&v,t={issuesSearchDeprecated:{name:"Search for issues using JQL",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-search/#api-rest-api-2-search-get"},issuesSearchNew:{name:"Search for issues using JQL enhanced search",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-post"}};return i(N,{children:[o(q,{collectorName:"Jira",collectorId:e.id,invalidConfig:J,hasNonUIOptions:!0}),o(w,{message:i(F,{variant:"body2",children:["Issues Search fact collector now uses the updated",o(l,{href:t.issuesSearchNew.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",t.issuesSearchNew.name," "]})}),"API, as the previous",o(l,{href:t.issuesSearchDeprecated.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",t.issuesSearchDeprecated.name," "]})}),"API was deprecated and removed for Jira Cloud instances. Jira Cloud users may be required to update their dependent checks due to this minor API schema change."]}),variant:"warning",id:"jiraDeprecatedIssuesSearch"}),o(j,{className:a.section,children:o(P,{...s,children:i("form",{onSubmit:n(c),children:[o(m,{name:"issuesSearch",label:"Issues Search",description:"Collects details about Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}}),o(L,{}),o(m,{name:"issuesCount",label:"Issues Count",description:"Collects details about a total number of Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}})]})})}),o("div",{className:a.section,children:o(R,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:n(c),disableSave:f})})]})};export{G as JiraConfigurator};
2
2
  //# sourceMappingURL=JiraConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as n,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as h}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as S,Divider as F}from"@material-ui/core";import{useForm as R,FormProvider as K}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as w}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as y}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as D}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as L}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as c}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{defaultCollectorOption as N}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as O,confirmationModalContent as T}from"../Common/utils.esm.js";import{KubernetesFactDetails as j}from"./KubernetesFactDetails.esm.js";import{mapConfigToKubernetesCollectorConfig as k,defaultKubernetesConfig as I,K8S_COLLECTOR_FIELDS as M,mapKubernetesCollectorConfigToConfig as P}from"./utils.esm.js";import{customResourceFormSchema as E}from"./validation.esm.js";const H=v(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),V=({disabled:t,selectedCollector:e})=>{const r=R({defaultValues:e?k(e.config):I(),mode:"onChange",resolver:h(E)}),a=H(),{mutateAsync:p}=y(),[d,f]=x(B),{isValid:u}=r.formState,{showModal:C}=w(),s=async m=>{if(!await C(T(e)))return;const i=P(m);await p({collectorId:e.id,config:i})&&f()};return L(O(e)),n(b,{children:[o(S,{className:a.section,children:o(K,{...r,children:n("form",{onSubmit:r.handleSubmit(s),children:[Object.entries(M).map(([m,i],l,g)=>n("div",{children:[o(c,{name:m,label:i.label,description:i.description,disabled:t}),l<g.length-1&&o(F,{})]},l)),o(c,{name:"customResources",label:"Custom Resources",description:"Collect facts from a kubernetes custom resource associated with an entity.",disabled:t,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:N(e.config)}})]})})}),o("div",{className:a.section,children:o(D,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:r.handleSubmit(s),disableSave:!u})})]})};export{V as KubernetesConfigurator};
1
+ import{jsxs as n,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as h}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as S,Divider as F}from"@material-ui/core";import{useForm as R,FormProvider as K}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as w}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as y}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as D}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as L}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as c}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{defaultCollectorOption as N}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as O,confirmationModalContent as T}from"../Common/utils.esm.js";import{KubernetesFactDetails as j}from"./KubernetesFactDetails.esm.js";import{mapConfigToKubernetesCollectorConfig as k,defaultKubernetesConfig as I,K8S_COLLECTOR_FIELDS as M,mapKubernetesCollectorConfigToConfig as P}from"./utils.esm.js";import{customResourceFormSchema as E}from"./validation.esm.js";const H=v(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),V=({disabled:t,selectedCollector:e})=>{const r=R({defaultValues:e?k(e.config):I(),mode:"onChange",resolver:h(E)}),a=H(),{mutateAsync:p}=y(),[d,f]=x(B),{isValid:u}=r.formState,{showModal:C}=w(),s=async m=>{if(!await C(T(e)))return;const i=P(m);await p({collectorId:e.id,config:i})&&f()};return L(O(e)),n(b,{children:[o(S,{className:a.section,children:o(K,{...r,children:n("form",{onSubmit:r.handleSubmit(s),children:[Object.entries(M).map(([m,i],l,g)=>n("div",{children:[o(c,{name:m,label:i.label,description:i.description,disabled:t}),l<g.length-1&&o(F,{})]},l)),o(c,{name:"customResources",label:"Custom Resources",description:"Collect facts from a kubernetes custom resource associated with an entity.",disabled:t,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:N(e.config)}})]})})}),o("div",{className:a.section,children:o(D,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:r.handleSubmit(s),disableSave:!u})})]})};export{V as KubernetesConfigurator};
2
2
  //# sourceMappingURL=KubernetesConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as m,Fragment as w,jsx as o}from"react/jsx-runtime";import{makeStyles as b,Paper as S,Divider as s}from"@material-ui/core";import{useForm as y,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as v}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as P}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as E}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToNewRelicCollectorConfig as j,defaultNewRelicConfig as k,mapNewRelicCollectorConfigToConfig as A}from"./utils.esm.js";const H=b(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)},form:{marginBottom:e.spacing(2)}})),U=({disabled:e,selectedCollector:i})=>{const a=y({defaultValues:i?j(i.config):k(),mode:"onChange"}),{formState:{errors:t},handleSubmit:c}=a,n=H(),p=!!t.entity||!!t.entitySearch||!!t.policiesSearch,{mutateAsync:d}=F(),[f,g]=B(x),{showModal:C}=v(),l=async h=>{if(!await C(T(i)))return;const N=A(h);await d({collectorId:i.id,config:N})&&g()};E(M(i));const u=!i.config?.apiKey;return m(w,{children:[o(I,{collectorName:"NewRelic",collectorId:i.id,invalidConfig:u,hasNonUIOptions:!0}),o(S,{className:n.form,children:o(R,{...a,children:m("form",{onSubmit:c(l),children:[o(r,{name:"entity",label:"Entity",description:"Collects details about New Relic entity with a specific id.",disabled:e}),o(s,{}),o(r,{name:"entitySearch",label:"Entity Search",description:"Collects details about New Relic entities with a specific tag.",disabled:e}),o(s,{}),o(r,{name:"policiesSearch",label:"Policies Search",description:"Collects details about New Relic policies for a specific account.",disabled:e})]})})}),o("div",{className:n.section,children:o(P,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:c(l),disableSave:p})})]})};export{U as NewRelicConfigurator};
1
+ import{jsxs as m,Fragment as w,jsx as o}from"react/jsx-runtime";import{makeStyles as b,Paper as S,Divider as s}from"@material-ui/core";import{useForm as y,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as v}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as P}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as E}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToNewRelicCollectorConfig as j,defaultNewRelicConfig as k,mapNewRelicCollectorConfigToConfig as A}from"./utils.esm.js";const H=b(i=>({spacer:{height:i.spacing(8),width:"100%"},section:{marginBottom:i.spacing(2)},form:{marginBottom:i.spacing(2)}})),U=({disabled:i,selectedCollector:e})=>{const a=y({defaultValues:e?j(e.config):k(),mode:"onChange"}),{formState:{errors:t},handleSubmit:c}=a,n=H(),p=!!t.entity||!!t.entitySearch||!!t.policiesSearch,{mutateAsync:d}=F(),[f,g]=B(x),{showModal:C}=v(),l=async h=>{if(!await C(T(e)))return;const N=A(h);await d({collectorId:e.id,config:N})&&g()};E(M(e));const u=!e.config?.apiKey;return m(w,{children:[o(I,{collectorName:"NewRelic",collectorId:e.id,invalidConfig:u,hasNonUIOptions:!0}),o(S,{className:n.form,children:o(R,{...a,children:m("form",{onSubmit:c(l),children:[o(r,{name:"entity",label:"Entity",description:"Collects details about New Relic entity with a specific id.",disabled:i}),o(s,{}),o(r,{name:"entitySearch",label:"Entity Search",description:"Collects details about New Relic entities with a specific tag.",disabled:i}),o(s,{}),o(r,{name:"policiesSearch",label:"Policies Search",description:"Collects details about New Relic policies for a specific account.",disabled:i})]})})}),o("div",{className:n.section,children:o(P,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:c(l),disableSave:p})})]})};export{U as NewRelicConfigurator};
2
2
  //# sourceMappingURL=NewRelicConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as m,Fragment as D,jsx as o}from"react/jsx-runtime";import{zodResolver as P}from"@hookform/resolvers/zod";import{makeStyles as b,Paper as h,Divider as c}from"@material-ui/core";import{useForm as S,FormProvider as T}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as L}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as E}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as N}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as I}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as R}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as O,confirmationModalContent as k}from"../Common/utils.esm.js";import{IncidentsFactDetailsComponent as _}from"./IncidentsFactDetailsComponent.esm.js";import{mapConfigToPagerDutyCollectorConfig as x,defaultPagerDutyConfig as A,SERVICE_COLLECTOR_TYPE as B,STANDARDS_COLLECTOR_TYPE as M,INCIDENTS_COLLECTOR_TYPE as Y,incidentsCollectorConfig as j,mapPagerDutyCollectorConfigToConfig as H}from"./utils.esm.js";import{pagerDutyCollectorFormSchema as U}from"./validation.esm.js";const V=b(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),z=({disabled:t,selectedCollector:e})=>{const a=S({defaultValues:e?x(e.config):A(),mode:"onChange",resolver:P(U)}),{formState:{errors:i},handleSubmit:n}=a,l=V(),d=!!i.service||!!i.standards||!!i.incidents,{mutateAsync:p}=N(),[f,C]=E(w),{showModal:g}=L(),s=async v=>{if(!await g(k(e)))return;const y=H(v);await p({collectorId:e.id,config:y})&&C()};I(O(e));const u=!e.config?.token||!e.config?.server;return m(D,{children:[o(R,{collectorName:"PagerDuty",collectorId:e.id,invalidConfig:u,hasNonUIOptions:!0}),o(h,{className:l.section,children:o(T,{...a,children:m("form",{onSubmit:n(s),children:[o(r,{name:B.toLowerCase(),label:"Service",description:"Collects details about PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:M.toLowerCase(),label:"Standards",description:"Collects details about standards applied to a PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:Y.toLowerCase(),label:"Incidents",description:"Collects details about incidents associated with a PagerDuty service linked to an entity.",disabled:t,FactDetailsComponent:_,multipleCollectors:{enable:!0,defaultConfig:j(e.config)}})]})})}),o("div",{className:l.section,children:o(F,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:d})})]})};export{z as PagerDutyConfigurator};
1
+ import{jsxs as m,Fragment as D,jsx as o}from"react/jsx-runtime";import{zodResolver as P}from"@hookform/resolvers/zod";import{makeStyles as b,Paper as h,Divider as c}from"@material-ui/core";import{useForm as S,FormProvider as T}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as L}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as E}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as N}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as I}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as R}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as O,confirmationModalContent as k}from"../Common/utils.esm.js";import{IncidentsFactDetailsComponent as _}from"./IncidentsFactDetailsComponent.esm.js";import{mapConfigToPagerDutyCollectorConfig as x,defaultPagerDutyConfig as A,SERVICE_COLLECTOR_TYPE as B,STANDARDS_COLLECTOR_TYPE as M,INCIDENTS_COLLECTOR_TYPE as Y,incidentsCollectorConfig as j,mapPagerDutyCollectorConfigToConfig as H}from"./utils.esm.js";import{pagerDutyCollectorFormSchema as U}from"./validation.esm.js";const V=b(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),z=({disabled:t,selectedCollector:e})=>{const a=S({defaultValues:e?x(e.config):A(),mode:"onChange",resolver:P(U)}),{formState:{errors:i},handleSubmit:n}=a,l=V(),d=!!i.service||!!i.standards||!!i.incidents,{mutateAsync:p}=N(),[f,C]=E(w),{showModal:g}=L(),s=async v=>{if(!await g(k(e)))return;const y=H(v);await p({collectorId:e.id,config:y})&&C()};I(O(e));const u=!e.config?.token||!e.config?.server;return m(D,{children:[o(R,{collectorName:"PagerDuty",collectorId:e.id,invalidConfig:u,hasNonUIOptions:!0}),o(h,{className:l.section,children:o(T,{...a,children:m("form",{onSubmit:n(s),children:[o(r,{name:B.toLowerCase(),label:"Service",description:"Collects details about PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:M.toLowerCase(),label:"Standards",description:"Collects details about standards applied to a PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:Y.toLowerCase(),label:"Incidents",description:"Collects details about incidents associated with a PagerDuty service linked to an entity.",disabled:t,FactDetailsComponent:_,multipleCollectors:{enable:!0,defaultConfig:j(e.config)}})]})})}),o("div",{className:l.section,children:o(F,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:d})})]})};export{z as PagerDutyConfigurator};
2
2
  //# sourceMappingURL=PagerDutyConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as C,Fragment as j,jsx as o}from"react/jsx-runtime";import{zodResolver as P}from"@hookform/resolvers/zod";import{makeStyles as w,Paper as _,Box as J,Button as Y,Divider as y}from"@material-ui/core";import k from"@material-ui/icons/UnfoldLess";import I from"@material-ui/icons/UnfoldMore";import{useCallback as z,useMemo as H,useState as l}from"react";import{useForm as V,FormProvider as X}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as G}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as U}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as $}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as q}from"../../../../routes.esm.js";import{FooterButtons as K}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Q}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as g}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as W,confirmationModalContent as Z}from"../Common/utils.esm.js";import{ExistsFactDetailsComponent as oo}from"./ExistsFactDetailsComponent.esm.js";import{JsonFactDetailsComponent as eo}from"./JsonFactDetailsComponent.esm.js";import{RegexFactDetailsComponent as to}from"./RegexFactDetailsComponent.esm.js";import{mapConfigToScmCollectorConfig as io,defaultScmCollectorConfig as v,EXISTS_COLLECTOR_TYPE as lo,REGEX_COLLECTOR_TYPE as ao,JSON_COLLECTOR_TYPE as ro,mapScmCollectorConfigToConfig as no}from"./utils.esm.js";import{scmCollectorFormSchema as so}from"./validation.esm.js";const mo=w(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)},collapseAllContainer:{display:"flex",justifyContent:"flex-end",padding:e.spacing(1.5,6),borderBottom:`1px solid ${e.palette.divider}`}})),co=({disabled:e,selectedCollector:i})=>{const O=z(async(t,...d)=>{const f={enabled:!1,collectors:[]},M={exists:t.exists.enabled?t.exists:f,json:t.json.enabled?t.json:f,regex:t.regex.enabled?t.regex:f};return P(so)(M,...d)},[]),u=V({defaultValues:i?io(i.config):v(),mode:"onChange",resolver:O}),a=H(()=>v(i.config),[i]),{formState:{isValid:T},handleSubmit:x}=u,r=mo(),L=!T,{mutateAsync:N}=$(),[R,A]=U(q),{showModal:B}=G(),b=async t=>{if(!await B(Z(i)))return;const d=no(t);await N({collectorId:i.id,config:d})&&A()};Q(W(i));const[h,n]=l(!0),[S,s]=l(!0),[F,m]=l(!0),[c,E]=l(!0),p=h&&S&&F,D=()=>{p?(n(!1),s(!1),m(!1),E(!1)):(n(!0),s(!0),m(!0),E(!0))};return C(j,{children:[C(_,{className:r.section,children:[o(J,{className:r.collapseAllContainer,children:o(Y,{startIcon:p?o(I,{}):o(k,{}),onClick:D,variant:"outlined",size:"small",children:p?"Expand All":"Collapse All"})}),o(X,{...u,children:C("form",{onSubmit:x(b),children:[o(g,{name:lo,label:"Exists",description:"Collects information on the existence of files within an entity's repository.",disabled:e,multipleCollectors:{enable:!0,defaultConfig:a.exists.collectors[0]},FactDetailsComponent:oo,collapsed:h,onCollapsedChange:n,allFactsCollapsed:c}),o(y,{}),o(g,{name:ao,label:"Regex",description:"Executes regular expressions against a specified file in an entity's repository and collects its capture groups.",disabled:e,multipleCollectors:{enable:!0,defaultConfig:a.regex.collectors[0]},FactDetailsComponent:to,collapsed:S,onCollapsedChange:s,allFactsCollapsed:c}),o(y,{}),o(g,{name:ro,label:"JSON / YAML",description:"Collects data from a JSON/YAML file at specified JSON paths in an entity's repository.",disabled:e,multipleCollectors:{enable:!0,defaultConfig:a.json.collectors[0]},FactDetailsComponent:eo,collapsed:F,onCollapsedChange:m,allFactsCollapsed:c})]})})]}),o("div",{className:r.section,children:o(K,{onCancel:R,saveButtonText:"Save",isLoading:!1,onSave:x(b),disableSave:L,noMargin:!0})})]})};export{co as ScmConfigurator};
1
+ import{jsxs as C,Fragment as j,jsx as o}from"react/jsx-runtime";import{zodResolver as P}from"@hookform/resolvers/zod";import{makeStyles as w,Paper as _,Box as J,Button as Y,Divider as y}from"@material-ui/core";import k from"@material-ui/icons/UnfoldLess";import I from"@material-ui/icons/UnfoldMore";import{useCallback as z,useMemo as H,useState as l}from"react";import{useForm as V,FormProvider as X}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as G}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as U}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as $}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as q}from"../../../../routes.esm.js";import{FooterButtons as K}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Q}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as g}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as W,confirmationModalContent as Z}from"../Common/utils.esm.js";import{ExistsFactDetailsComponent as oo}from"./ExistsFactDetailsComponent.esm.js";import{JsonFactDetailsComponent as eo}from"./JsonFactDetailsComponent.esm.js";import{RegexFactDetailsComponent as to}from"./RegexFactDetailsComponent.esm.js";import{mapConfigToScmCollectorConfig as io,defaultScmCollectorConfig as v,EXISTS_COLLECTOR_TYPE as lo,REGEX_COLLECTOR_TYPE as ao,JSON_COLLECTOR_TYPE as ro,mapScmCollectorConfigToConfig as no}from"./utils.esm.js";import{scmCollectorFormSchema as so}from"./validation.esm.js";const mo=w(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)},collapseAllContainer:{display:"flex",justifyContent:"flex-end",padding:e.spacing(1.5,6),borderBottom:`1px solid ${e.palette.divider}`}})),co=({disabled:e,selectedCollector:i})=>{const O=z(async(t,...d)=>{const f={enabled:!1,collectors:[]},M={exists:t.exists.enabled?t.exists:f,json:t.json.enabled?t.json:f,regex:t.regex.enabled?t.regex:f};return P(so)(M,...d)},[]),u=V({defaultValues:i?io(i.config):v(),mode:"onChange",resolver:O}),a=H(()=>v(i.config),[i]),{formState:{isValid:T},handleSubmit:x}=u,r=mo(),L=!T,{mutateAsync:N}=$(),[R,A]=U(q),{showModal:B}=G(),b=async t=>{if(!await B(Z(i)))return;const d=no(t);await N({collectorId:i.id,config:d})&&A()};Q(W(i));const[h,n]=l(!0),[S,s]=l(!0),[F,m]=l(!0),[c,E]=l(!0),p=h&&S&&F,D=()=>{p?(n(!1),s(!1),m(!1),E(!1)):(n(!0),s(!0),m(!0),E(!0))};return C(j,{children:[C(_,{className:r.section,children:[o(J,{className:r.collapseAllContainer,children:o(Y,{startIcon:p?o(I,{}):o(k,{}),onClick:D,variant:"outlined",size:"small",children:p?"Expand All":"Collapse All"})}),o(X,{...u,children:C("form",{onSubmit:x(b),children:[o(g,{name:lo,label:"Exists",description:"Collects information on the existence of files within an entity's repository.",disabled:e,multipleCollectors:{enable:!0,defaultConfig:a.exists.collectors[0]},FactDetailsComponent:oo,collapsed:h,onCollapsedChange:n,allFactsCollapsed:c}),o(y,{}),o(g,{name:ao,label:"Regex",description:"Executes regular expressions against a specified file in an entity's repository and collects its capture groups.",disabled:e,multipleCollectors:{enable:!0,defaultConfig:a.regex.collectors[0]},FactDetailsComponent:to,collapsed:S,onCollapsedChange:s,allFactsCollapsed:c}),o(y,{}),o(g,{name:ro,label:"JSON / YAML",description:"Collects data from a JSON/YAML file at specified JSON paths in an entity's repository.",disabled:e,multipleCollectors:{enable:!0,defaultConfig:a.json.collectors[0]},FactDetailsComponent:eo,collapsed:F,onCollapsedChange:m,allFactsCollapsed:c})]})})]}),o("div",{className:r.section,children:o(K,{onCancel:R,saveButtonText:"Save",isLoading:!1,onSave:x(b),disableSave:L,noMargin:!0})})]})};export{co as ScmConfigurator};
2
2
  //# sourceMappingURL=ScmConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as p,Fragment as Q,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as y,Paper as k,Divider as s}from"@material-ui/core";import{asArray as w}from"@spotify/backstage-plugin-soundcheck-common";import{useForm as I,FormProvider as N}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as D}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as M}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as P}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as B}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as A}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as R,confirmationModalContent as H}from"../Common/utils.esm.js";import{IssuesFactDetailsInput as U}from"./IssuesFactDetailsInput.esm.js";import{MeasuresFactDetailsInput as z}from"./MeasuresFactDetailsInput.esm.js";import{mapConfigToSonarQubeCollectorConfig as E,defaultSonarQubeConfig as L,issuesCollectorConfig as O,measuresCollectorConfig as V,mapSonarQubeCollectorConfigToConfig as q}from"./utils.esm.js";import{sonarQubeCollectorFormSchema as G}from"./validation.esm.js";const J=y(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),K=({disabled:t,selectedCollector:e})=>{const n=I({defaultValues:e?E(e.config):L(),mode:"onChange",resolver:F(G)}),{formState:{errors:r},handleSubmit:l}=n,m=J(),d=!!r.projects||!!r.projectTags||!!r.issues||!!r.measures,{mutateAsync:u}=M(),[f,C]=D(P),{showModal:g}=T(),c=async j=>{if(!await g(H(e)))return;const v=q(j);await u({collectorId:e.id,config:v})&&C()};B(R(e));const a=w(e.config),b=a[0]?.token,S=a[0]?.username&&a[0]?.password,h=!b&&!S;return p(Q,{children:[o(A,{collectorName:"SonarQube",collectorId:e.id,invalidConfig:h,hasNonUIOptions:!0}),o(k,{className:m.section,children:o(N,{...n,children:p("form",{onSubmit:l(c),children:[o(i,{name:"projects",label:"Projects",description:"Collects details about SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"projectTags",label:"Project Tags",description:"Collects details about tags set on a SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"issues",label:"Issues",description:"Collects details about issues associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:U,multipleCollectors:{enable:!0,defaultConfig:O(e.config)}}),o(s,{}),o(i,{name:"measures",label:"Measures",description:"Collects details about measures associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:z,multipleCollectors:{enable:!0,defaultConfig:V(e.config)}})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:l(c),disableSave:d})})]})};export{K as SonarQubeConfigurator};
1
+ import{jsxs as p,Fragment as Q,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as y,Paper as k,Divider as s}from"@material-ui/core";import{asArray as w}from"@spotify/backstage-plugin-soundcheck-common";import{useForm as I,FormProvider as N}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as D}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useUpdateCollectorConfig as M}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as P}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as B}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as A}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as R,confirmationModalContent as H}from"../Common/utils.esm.js";import{IssuesFactDetailsInput as U}from"./IssuesFactDetailsInput.esm.js";import{MeasuresFactDetailsInput as z}from"./MeasuresFactDetailsInput.esm.js";import{mapConfigToSonarQubeCollectorConfig as E,defaultSonarQubeConfig as L,issuesCollectorConfig as O,measuresCollectorConfig as V,mapSonarQubeCollectorConfigToConfig as q}from"./utils.esm.js";import{sonarQubeCollectorFormSchema as G}from"./validation.esm.js";const J=y(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),K=({disabled:t,selectedCollector:e})=>{const n=I({defaultValues:e?E(e.config):L(),mode:"onChange",resolver:F(G)}),{formState:{errors:r},handleSubmit:l}=n,m=J(),d=!!r.projects||!!r.projectTags||!!r.issues||!!r.measures,{mutateAsync:u}=M(),[f,C]=D(P),{showModal:g}=T(),c=async j=>{if(!await g(H(e)))return;const v=q(j);await u({collectorId:e.id,config:v})&&C()};B(R(e));const a=w(e.config),b=a[0]?.token,S=a[0]?.username&&a[0]?.password,h=!b&&!S;return p(Q,{children:[o(A,{collectorName:"SonarQube",collectorId:e.id,invalidConfig:h,hasNonUIOptions:!0}),o(k,{className:m.section,children:o(N,{...n,children:p("form",{onSubmit:l(c),children:[o(i,{name:"projects",label:"Projects",description:"Collects details about SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"projectTags",label:"Project Tags",description:"Collects details about tags set on a SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"issues",label:"Issues",description:"Collects details about issues associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:U,multipleCollectors:{enable:!0,defaultConfig:O(e.config)}}),o(s,{}),o(i,{name:"measures",label:"Measures",description:"Collects details about measures associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:z,multipleCollectors:{enable:!0,defaultConfig:V(e.config)}})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:l(c),disableSave:d})})]})};export{K as SonarQubeConfigurator};
2
2
  //# sourceMappingURL=SonarQubeConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as r,Fragment as M}from"react/jsx-runtime";import{useRouteRef as w}from"@backstage/core-plugin-api";import{usePermission as Y}from"@backstage/plugin-permission-react";import{HeaderPage as $,SearchField as O,Container as V,TableRoot as W,TableHeader as q,Column as g,TableBody as z,Row as J,Flex as K,Text as Q,TooltipTrigger as X,ButtonIcon as Z,Tooltip as _,Box as ee,CellText as y,Button as te}from"@backstage/ui";import{makeStyles as oe}from"@material-ui/core";import{RiInformationLine as ie}from"@remixicon/react";import{soundcheckCollectorUpdatePermission as re}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as ne,isEmpty as p}from"lodash";import{useState as f,useMemo as P,useEffect as ae,useCallback as se}from"react";import{useNavigate as ce}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useSearchName as de}from"../../hooks/useSearchName.esm.js";import"react-use/lib/useLocalStorage";import{useSortSearchParams as le}from"../../hooks/useSortSearchParams.esm.js";import{useGetCollectors as me}from"../../hooks/collectors/useGetCollectors.esm.js";import{useLCPReporting as ge}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as pe}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationDetailsRouteRef as he,integrationEditRouteRef as ue}from"../../routes.esm.js";import{CustomCell as x}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as fe}from"../EmptyState/EmptyStateBUI.esm.js";import{LoadingTableSkeleton as Ce}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{IntegrationLogoBUI as Se}from"./IntegrationLogoBUI.esm.js";const R=t=>{const s=t.hasUIConfig?"UI":"YAML";return p(t.config)&&p(t.collectionConfigs)?"None":s},B=oe(()=>({container:{marginBottom:"var(--bui-space-12)"},button:{boxShadow:"none !important",backgroundColor:"inherit !important"},tooltip:{maxWidth:"50rem",padding:0},scrollBox:{maxHeight:"30rem",overflow:"auto",padding:"0 var(--bui-space-3)"}})),N=({integration:t,hasConfigPage:s})=>{const n=B(),c=w(he),a=ce(),h=w(ue);return r(J,{onAction:()=>a(c({integrationId:t.id})),children:[e(x,{children:r(K,{gap:"2",align:"center",children:[e(Se,{integrationId:t.id}),e(Q,{children:t.name??t.id}),t.description&&r(X,{children:[e(Z,{className:n.button,variant:"secondary",icon:e(ie,{}),onClick:()=>a(c({integrationId:t.id}))}),e(_,{className:n.tooltip,children:e(ee,{className:n.scrollBox,children:e("p",{children:t.description})})})]})]})}),e(y,{title:`${String(t.dependentChecks?.length??0)} checks`}),e(y,{title:R(t)}),e(x,{onClick:d=>d.stopPropagation(),children:e(te,{onClick:()=>a(h({integrationId:t.id})),isDisabled:!s,variant:"tertiary","aria-label":`${t.id} configure`,children:"Configure"})})]})},be=["name","dependent-checks","config-source"],ke=({integrations:t})=>{const s=B(),{updateSortParams:n,searchParams:c}=le(),[a,h]=f(""),[d,T]=f(()=>c.get("sortDirection")==="descending"?"descending":"ascending"),[l,L]=f(()=>{const o=c.get("sort");return o&&be.includes(o)?o:""}),C=P(()=>({routeName:"soundcheck-integrations",additionalAttributes:{integrationsPerPage:t?.length}}),[t?.length]),{reportContentLoaded:S}=pe(C),{reporter:v}=ge(C),{loading:D,allowed:E}=Y({permission:re}),{data:U,isLoading:m}=me(),b=de({items:U??[],searchTerm:a}),u=P(()=>{const o=ne(b,i=>l==="name"?i.name??i.id:l==="dependent-checks"?i.dependentChecks?.length??0:l==="config-source"?R(i):i.isEditable?1:2);return d==="descending"&&o.reverse(),o},[b,l,d]),k=v?.getLCPValue();ae(()=>{m||S({lcp:k})},[m,S,k]);const H=se(({direction:o,column:i})=>{const I=String(i);L(I),T(o),n({sort:I,sortDirection:o})},[n]),A=!m&&!p(u),F=m,j=!m&&p(u),G=e(fe,{title:"No integrations found",body:"Your current search term did not return any integrations. Please try a different search term."});return r(M,{children:[e($,{customActions:e(O,{value:a,onChange:h,"aria-label":"Search Name"}),title:"Integrations"}),r(V,{className:s.container,children:[F&&e(Ce,{rowCount:10,rowHeight:36}),j&&G,A&&r(W,{onSortChange:H,sortDescriptor:{direction:d,column:l},children:[r(q,{children:[e(g,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"63%"},children:"Name"}),e(g,{id:"dependent-checks",allowsSorting:!0,style:{width:"15%"},children:"Dependent Checks"}),e(g,{id:"config-source",allowsSorting:!0,style:{width:"15%"},children:"Config Source"}),e(g,{style:{width:"7%"}})]}),e(z,{children:u.map(o=>e(N,{integration:o,hasConfigPage:!D&&E&&o.isEditable},o.id))})]})]})]})};export{N as IntegrationRow,ke as IntegrationsListPageBUI};
1
+ import{jsx as e,jsxs as r,Fragment as M}from"react/jsx-runtime";import{useRouteRef as w}from"@backstage/core-plugin-api";import{usePermission as Y}from"@backstage/plugin-permission-react";import{HeaderPage as $,SearchField as O,Container as V,TableRoot as W,TableHeader as q,Column as g,TableBody as z,Row as J,Flex as K,Text as Q,TooltipTrigger as X,ButtonIcon as Z,Tooltip as _,Box as ee,CellText as y,Button as te}from"@backstage/ui";import{makeStyles as oe}from"@material-ui/core";import{RiInformationLine as ie}from"@remixicon/react";import{soundcheckCollectorUpdatePermission as re}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as ne,isEmpty as p}from"lodash";import{useState as f,useMemo as P,useEffect as ae,useCallback as se}from"react";import{useNavigate as ce}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useSearchName as de}from"../../hooks/useSearchName.esm.js";import"react-use/lib/useLocalStorage";import{useSortSearchParams as me}from"../../hooks/useSortSearchParams.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useGetCollectors as le}from"../../hooks/collectors/useGetCollectors.esm.js";import{useLCPReporting as ge}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as pe}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationDetailsRouteRef as he,integrationEditRouteRef as ue}from"../../routes.esm.js";import{CustomCell as x}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as fe}from"../EmptyState/EmptyStateBUI.esm.js";import{LoadingTableSkeleton as Ce}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{IntegrationLogoBUI as Se}from"./IntegrationLogoBUI.esm.js";const R=t=>{const s=t.hasUIConfig?"UI":"YAML";return p(t.config)&&p(t.collectionConfigs)?"None":s},B=oe(()=>({container:{marginBottom:"var(--bui-space-12)"},button:{boxShadow:"none !important",backgroundColor:"inherit !important"},tooltip:{maxWidth:"50rem",padding:0},scrollBox:{maxHeight:"30rem",overflow:"auto",padding:"0 var(--bui-space-3)"}})),N=({integration:t,hasConfigPage:s})=>{const n=B(),c=w(he),a=ce(),h=w(ue);return r(J,{onAction:()=>a(c({integrationId:t.id})),children:[e(x,{children:r(K,{gap:"2",align:"center",children:[e(Se,{integrationId:t.id}),e(Q,{children:t.name??t.id}),t.description&&r(X,{children:[e(Z,{className:n.button,variant:"secondary",icon:e(ie,{}),onClick:()=>a(c({integrationId:t.id}))}),e(_,{className:n.tooltip,children:e(ee,{className:n.scrollBox,children:e("p",{children:t.description})})})]})]})}),e(y,{title:`${String(t.dependentChecks?.length??0)} checks`}),e(y,{title:R(t)}),e(x,{onClick:d=>d.stopPropagation(),children:e(te,{onClick:()=>a(h({integrationId:t.id})),isDisabled:!s,variant:"tertiary","aria-label":`${t.id} configure`,children:"Configure"})})]})},be=["name","dependent-checks","config-source"],ke=({integrations:t})=>{const s=B(),{updateSortParams:n,searchParams:c}=me(),[a,h]=f(""),[d,T]=f(()=>c.get("sortDirection")==="descending"?"descending":"ascending"),[m,L]=f(()=>{const o=c.get("sort");return o&&be.includes(o)?o:""}),C=P(()=>({routeName:"soundcheck-integrations",additionalAttributes:{integrationsPerPage:t?.length}}),[t?.length]),{reportContentLoaded:S}=pe(C),{reporter:v}=ge(C),{loading:D,allowed:E}=Y({permission:re}),{data:U,isLoading:l}=le(),b=de({items:U??[],searchTerm:a}),u=P(()=>{const o=ne(b,i=>m==="name"?i.name??i.id:m==="dependent-checks"?i.dependentChecks?.length??0:m==="config-source"?R(i):i.isEditable?1:2);return d==="descending"&&o.reverse(),o},[b,m,d]),k=v?.getLCPValue();ae(()=>{l||S({lcp:k})},[l,S,k]);const H=se(({direction:o,column:i})=>{const I=String(i);L(I),T(o),n({sort:I,sortDirection:o})},[n]),A=!l&&!p(u),F=l,j=!l&&p(u),G=e(fe,{title:"No integrations found",body:"Your current search term did not return any integrations. Please try a different search term."});return r(M,{children:[e($,{customActions:e(O,{value:a,onChange:h,"aria-label":"Search Name"}),title:"Integrations"}),r(V,{className:s.container,children:[F&&e(Ce,{rowCount:10,rowHeight:36}),j&&G,A&&r(W,{onSortChange:H,sortDescriptor:{direction:d,column:m},children:[r(q,{children:[e(g,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"63%"},children:"Name"}),e(g,{id:"dependent-checks",allowsSorting:!0,style:{width:"15%"},children:"Dependent Checks"}),e(g,{id:"config-source",allowsSorting:!0,style:{width:"15%"},children:"Config Source"}),e(g,{style:{width:"7%"}})]}),e(z,{children:u.map(o=>e(N,{integration:o,hasConfigPage:!D&&E&&o.isEditable},o.id))})]})]})]})};export{N as IntegrationRow,ke as IntegrationsListPageBUI};
2
2
  //# sourceMappingURL=IntegrationsListPageBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as i,jsxs as c}from"react/jsx-runtime";import{Link as g,InfoCard as v}from"@backstage/core-components";import{useRouteRef as d}from"@backstage/core-plugin-api";import{useEntity as C}from"@backstage/plugin-catalog-react";import{Divider as R}from"@material-ui/core";import S from"@material-ui/core/styles/makeStyles";import{SpotifyLicenseBanner as I}from"@spotify/backstage-plugin-core";import{Fragment as L}from"react";import{useAllCertifications as w}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as b}from"../../hooks/playlists/usePlaylists.esm.js";import"react-use/lib/useLocalStorage";import{certificationTrackRouteRef as x,certificationPlaylistTrackRouteRef as E}from"../../routes.esm.js";import{soundcheckBackend as N,invalidLicenseMessage as j}from"../../utils/license.esm.js";import{AlertPanel as A}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as P}from"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{NoCertifications as T}from"../EmptyState/EmptyState.esm.js";import"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import{CardSkeleton as B}from"./skeletons/CardSkeleton.esm.js";const m=S(t=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:t.spacing(2)},emptyState:{overflow:"hidden"}})),n=({children:t,title:e})=>{const o=m();return i(v,{title:e,children:c("div",{className:o.infoCard,children:[i(I,{inline:!0,backend:N,invalidLicenseMessage:j}),t]})})},D=(t,e)=>t.find(o=>o.trackIds.some(a=>a===e))?.id??"",M=({title:t="Soundcheck"})=>{const{entity:e}=C(),o=m(),{data:a,isError:p,isLoading:l}=w(e),{data:s,isError:f,isLoading:k}=b(e),y=d(x),h=d(E);return p||f?i(n,{title:t,children:i(A,{severity:"error",title:"Error loading certifications"})}):l||k||!a||!s?i(n,{title:t,children:i(B,{})}):a.length?i(n,{title:t,children:a.map((r,u)=>c(L,{children:[c("div",{className:o.certificationWrapper,"data-testid":"soundcheck-track-row",children:[i(P,{name:r.track.name,badge:r.track.badge,trackType:r.track?.type},r.track.id),i(g,{to:r.track.type==="playlist"?h({playlistId:D(s,r.track.id),trackId:r.track.id}):y({trackId:r.track.id}),children:"View Details"})]}),u<a.length-1?i(R,{}):null]},r.track.name))}):i(n,{title:t,children:i("div",{className:o.emptyState,children:i(T,{})})})};export{M as Card,m as useStyles};
1
+ import{jsx as i,jsxs as m}from"react/jsx-runtime";import{Link as g,InfoCard as v}from"@backstage/core-components";import{useRouteRef as s}from"@backstage/core-plugin-api";import{useEntity as C}from"@backstage/plugin-catalog-react";import{Divider as R}from"@material-ui/core";import S from"@material-ui/core/styles/makeStyles";import{SpotifyLicenseBanner as I}from"@spotify/backstage-plugin-core";import{Fragment as L}from"react";import{useAllCertifications as w}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as b}from"../../hooks/playlists/usePlaylists.esm.js";import"react-use/lib/useLocalStorage";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{certificationTrackRouteRef as x,certificationPlaylistTrackRouteRef as E}from"../../routes.esm.js";import{soundcheckBackend as N,invalidLicenseMessage as j}from"../../utils/license.esm.js";import{AlertPanel as A}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as P}from"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{NoCertifications as T}from"../EmptyState/EmptyState.esm.js";import"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import{CardSkeleton as B}from"./skeletons/CardSkeleton.esm.js";const c=S(t=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:t.spacing(2)},emptyState:{overflow:"hidden"}})),n=({children:t,title:e})=>{const o=c();return i(v,{title:e,children:m("div",{className:o.infoCard,children:[i(I,{inline:!0,backend:N,invalidLicenseMessage:j}),t]})})},D=(t,e)=>t.find(o=>o.trackIds.some(a=>a===e))?.id??"",M=({title:t="Soundcheck"})=>{const{entity:e}=C(),o=c(),{data:a,isError:d,isLoading:l}=w(e),{data:p,isError:f,isLoading:k}=b(e),y=s(x),h=s(E);return d||f?i(n,{title:t,children:i(A,{severity:"error",title:"Error loading certifications"})}):l||k||!a||!p?i(n,{title:t,children:i(B,{})}):a.length?i(n,{title:t,children:a.map((r,u)=>m(L,{children:[m("div",{className:o.certificationWrapper,"data-testid":"soundcheck-track-row",children:[i(P,{name:r.track.name,badge:r.track.badge,trackType:r.track?.type},r.track.id),i(g,{to:r.track.type==="playlist"?h({playlistId:D(p,r.track.id),trackId:r.track.id}):y({trackId:r.track.id}),children:"View Details"})]}),u<a.length-1?i(R,{}):null]},r.track.name))}):i(n,{title:t,children:i("div",{className:o.emptyState,children:i(T,{})})})};export{M as Card,c as useStyles};
2
2
  //# sourceMappingURL=Card.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseFactRef as c,stringifyFactRef as p}from"@spotify/backstage-plugin-soundcheck-common";import{useMemo as n}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as s}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";const l=({selectedCollector:e})=>{const{data:a}=s({});return{factOptions:n(()=>e?.factNames?.map(o=>{const t=e.id==="soundcheck"?{source:e.id,scope:"default",name:o}:c(o,{defaultSource:e.id,defaultScope:"default"});let m=t.name;if(e?.id==="soundcheck"){const r=a?.edges.find(i=>i.node.id===t.name.replace("track/",""))?.node;m=r?`${r.type==="campaign"?"Campaign: ":"Track: "}${r.name}`:t.name}return{label:m,value:p(t)}})?.sort((o,t)=>o.label.localeCompare(t.label))??[],[e?.factNames,e?.id,a])}};export{l as useFactOptions};
1
+ import{parseFactRef as p,stringifyFactRef as c}from"@spotify/backstage-plugin-soundcheck-common";import{useMemo as n}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as s}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";const l=({selectedCollector:e})=>{const{data:m}=s({});return{factOptions:n(()=>e?.factNames?.map(o=>{const t=e.id==="soundcheck"?{source:e.id,scope:"default",name:o}:p(o,{defaultSource:e.id,defaultScope:"default"});let a=t.name;if(e?.id==="soundcheck"){const r=m?.edges.find(i=>i.node.id===t.name.replace("track/",""))?.node;a=r?`${r.type==="campaign"?"Campaign: ":"Track: "}${r.name}`:t.name}return{label:a,value:c(t)}})?.sort((o,t)=>o.label.localeCompare(t.label))??[],[e?.factNames,e?.id,m])}};export{l as useFactOptions};
2
2
  //# sourceMappingURL=useFactOptions.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as e,jsx as n}from"react/jsx-runtime";import{Button as m}from"@backstage/ui";import{useNavigate as f}from"react-router-dom";import{LoadingIcon as a}from"../LoadingIcon/LoadingIcon.esm.js";const h=({href:i,isDisabled:t,isRunning:o,hasShift:r})=>{const s=f();return e(m,{onClick:()=>i&&s(i),isDisabled:t,children:[o&&n(a,{})," ",r?"View Fix Progress":"Fix with Fleetshift"]})};export{h as FixMeButton};
2
+ //# sourceMappingURL=FixMeButton.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as n}from"react/jsx-runtime";import{Button as o,Flex as c,Text as a}from"@backstage/ui";import{RiSparkling2Line as l}from"@remixicon/react";import{useRemedyTrackerApi as m}from"../../hooks/remedy/useRemedyTrackerApi.esm.js";const p=({checkReference:i})=>{const r=m();return e(o,{variant:"secondary",onClick:t=>{t.preventDefault(),r.runAction(i)},children:n(c,{align:"center",gap:"2",children:[e(a,{weight:"bold",children:"Fix with Aika"})," ",e(l,{})]})})};export{p as FixWithAiKAButton};
2
+ //# sourceMappingURL=FixWithAiKAButton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as u}from"react/jsx-runtime";import{Box as i,Flex as y}from"@backstage/ui";import{makeStyles as g}from"@material-ui/core";import{sortBy as b,uniqBy as x,isEmpty as v}from"lodash";import{useMemo as s,useCallback as B}from"react";import{Virtualizer as k,ListLayout as L,ListBox as G,ListBoxItem as S}from"react-aria-components";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSearchName as w}from"../../hooks/useSearchName.esm.js";import"react-use/lib/useLocalStorage";import{useGroupOptions as N}from"../../hooks/groups/useGroupOptions.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as $}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"../../routes.esm.js";import{LoadingTableSkeleton as C}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";const A=g(()=>({empty:{width:"36rem",margin:"var(--bui-space-4) 0"},listArea:{height:"16rem",width:"36rem",overflow:"auto",marginTop:"var(--bui-space-2)"},listBox:{padding:"var(--bui-space-2)","&:hover":{cursor:"pointer",backgroundColor:"var(--bui-bg-tint-hover)"}},listBoxSelected:{backgroundColor:"var(--bui-bg-tint)"}})),j=({searchTerm:d,selectRef:l,selectedRef:t})=>{const o=A(),{options:m,isLoading:a}=N(),p=s(()=>m.filter(e=>e.key==="My Groups").map(e=>({...e,key:`${e.ref}${e.ref===t?"-selectedGroup":""}`,id:e.ref})),[m,t]),n=s(()=>b(m.filter(e=>e.key==="All Groups").map(e=>({...e,key:`${e.ref}${e.ref===t?"-selectedGroup":""}`,id:e.ref})),e=>e.name.toLowerCase()),[m,t]),f=s(()=>x([...p,...n],"id"),[n,p]),c=w({items:f,searchTerm:d}),h=B(e=>{l(e.match(/-selectedGroup$/)?"":e)},[l]);return r(i,{children:r(i,{children:u(k,{layoutOptions:{padding:0,gap:2},layout:L,children:[a&&r(i,{className:o.listArea,children:r(C,{rowHeight:18,rowCount:8})}),v(c)&&!a?r(i,{className:o.empty,children:r($,{title:"No groups found.",body:"No groups found for the current selection."})}):r(G,{"aria-label":"Group List",items:c,className:o.listArea,selectionMode:"single",selectedKeys:t?[t]:void 0,onSelectionChange:e=>h(Object.values(e)[0]),children:e=>r(S,{textValue:e.name,className:`${o.listBox} ${e.ref===t?o.listBoxSelected:""}`,children:u(y,{justify:"between",children:[r(i,{children:e.name}),r(i,{children:e.type})]})})})]})})})};export{j as GroupSelectList};
1
+ import{jsx as r,jsxs as u}from"react/jsx-runtime";import{Box as i,Flex as y}from"@backstage/ui";import{makeStyles as g}from"@material-ui/core";import{sortBy as b,uniqBy as x,isEmpty as v}from"lodash";import{useMemo as s,useCallback as B}from"react";import{Virtualizer as k,ListLayout as L,ListBox as G,ListBoxItem as S}from"react-aria-components";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSearchName as w}from"../../hooks/useSearchName.esm.js";import"react-use/lib/useLocalStorage";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useGroupOptions as N}from"../../hooks/groups/useGroupOptions.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as $}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"../../routes.esm.js";import{LoadingTableSkeleton as C}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";const A=g(()=>({empty:{width:"36rem",margin:"var(--bui-space-4) 0"},listArea:{height:"16rem",width:"36rem",overflow:"auto",marginTop:"var(--bui-space-2)"},listBox:{padding:"var(--bui-space-2)","&:hover":{cursor:"pointer",backgroundColor:"var(--bui-bg-tint-hover)"}},listBoxSelected:{backgroundColor:"var(--bui-bg-tint)"}})),j=({searchTerm:d,selectRef:p,selectedRef:t})=>{const o=A(),{options:m,isLoading:l}=N(),a=s(()=>m.filter(e=>e.key==="My Groups").map(e=>({...e,key:`${e.ref}${e.ref===t?"-selectedGroup":""}`,id:e.ref})),[m,t]),n=s(()=>b(m.filter(e=>e.key==="All Groups").map(e=>({...e,key:`${e.ref}${e.ref===t?"-selectedGroup":""}`,id:e.ref})),e=>e.name.toLowerCase()),[m,t]),f=s(()=>x([...a,...n],"id"),[n,a]),c=w({items:f,searchTerm:d}),h=B(e=>{p(e.match(/-selectedGroup$/)?"":e)},[p]);return r(i,{children:r(i,{children:u(k,{layoutOptions:{padding:0,gap:2},layout:L,children:[l&&r(i,{className:o.listArea,children:r(C,{rowHeight:18,rowCount:8})}),v(c)&&!l?r(i,{className:o.empty,children:r($,{title:"No groups found.",body:"No groups found for the current selection."})}):r(G,{"aria-label":"Group List",items:c,className:o.listArea,selectionMode:"single",selectedKeys:t?[t]:void 0,onSelectionChange:e=>h(Object.values(e)[0]),children:e=>r(S,{textValue:e.name,className:`${o.listBox} ${e.ref===t?o.listBoxSelected:""}`,children:u(y,{justify:"between",children:[r(i,{children:e.name}),r(i,{children:e.type})]})})})]})})})};export{j as GroupSelectList};
2
2
  //# sourceMappingURL=GroupSelectList.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as m}from"react/jsx-runtime";import{useEntity as d}from"@backstage/plugin-catalog-react";import{makeStyles as y}from"@material-ui/core";import{useState as g,useEffect as v}from"react";import C from"react-confetti";import L from"react-use/lib/useMeasure";import p from"react-use/lib/usePrevious";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as k}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";const w=y(()=>({root:{position:"absolute",width:"100%",height:"100%"}})),S=({trackId:t})=>{const s=w(),{entity:a}=d(),{data:f,isLoading:n}=k(a,t),[l,{width:c,height:h}]=L(),o=n?void 0:f?.highestLevel?.ordinal??-1,i=p(o),r=p(t),[u,e]=g(!1);return v(()=>{typeof i<"u"&&typeof o<"u"&&t===r&&o>i&&e(!0)},[o,i,t,r]),u?m("div",{ref:l,className:s.root,children:m(C,{width:c,height:h,numberOfPieces:1e3,gravity:1,initialVelocityY:20,recycle:!1,onConfettiComplete:()=>e(!1)})}):null};export{S as LevelUpParty};
1
+ import{jsx as m}from"react/jsx-runtime";import{useEntity as d}from"@backstage/plugin-catalog-react";import{makeStyles as y}from"@material-ui/core";import{useState as g,useEffect as v}from"react";import C from"react-confetti";import L from"react-use/lib/useMeasure";import p from"react-use/lib/usePrevious";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as k}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";const w=y(()=>({root:{position:"absolute",width:"100%",height:"100%"}})),S=({trackId:t})=>{const s=w(),{entity:a}=d(),{data:f,isLoading:n}=k(a,t),[l,{width:c,height:h}]=L(),o=n?void 0:f?.highestLevel?.ordinal??-1,i=p(o),r=p(t),[u,e]=g(!1);return v(()=>{typeof i<"u"&&typeof o<"u"&&t===r&&o>i&&e(!0)},[o,i,t,r]),u?m("div",{ref:l,className:s.root,children:m(C,{width:c,height:h,numberOfPieces:1e3,gravity:1,initialVelocityY:20,recycle:!1,onConfettiComplete:()=>e(!1)})}):null};export{S as LevelUpParty};
2
2
  //# sourceMappingURL=LevelUpParty.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{makeStyles as n}from"@material-ui/core";import{RiLoopRightLine as r}from"@remixicon/react";const i=n(()=>({spin:{animation:"$spin 1s linear infinite"},"@keyframes spin":{from:{transform:"rotate(0deg)"},to:{transform:"rotate(360deg)"}}})),s=()=>{const o=i();return t(r,{className:o.spin})};export{s as LoadingIcon};
2
+ //# sourceMappingURL=LoadingIcon.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t}from"react/jsx-runtime";import{useRouteRef as E,useApi as x,configApiRef as N}from"@backstage/core-plugin-api";import{usePermission as n}from"@backstage/plugin-permission-react";import{RiEditBoxLine as M,RiArchiveLine as P,RiDeleteBinLine as B,RiNotificationLine as T,RiExternalLinkLine as U}from"@remixicon/react";import{soundcheckCampaignUpdatePermission as $,soundcheckCampaignDeletePermission as j,soundcheckCampaignNotificationsCreatePermission as I}from"@spotify/backstage-plugin-soundcheck-common";import{useState as O,useCallback as m,useMemo as q}from"react";import{useNavigate as z}from"react-router-dom";import{v4 as F}from"uuid";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useArchiveCampaign as G}from"../../hooks/campaigns/useArchiveCampaign.esm.js";import{useDeleteCampaign as H}from"../../hooks/campaigns/useDeleteCampaign.esm.js";import{useCreateTrack as J}from"../../hooks/tracks/useCreateTrack.esm.js";import{useConfirmationModal as K}from"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{campaignEditRouteRef as Q}from"../../routes.esm.js";import{useExternalCampaignActions as V}from"../CampaignPage/CampaignActionsContext.esm.js";import{useArchiveConfirmationModal as W}from"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";const X=i=>{const s=E(Q),r=z(),c=i?.archived,{showModal:d}=K(),[D,l]=O(!1),{showArchiveModal:p}=W(),{mutate:u}=J(),{mutate:f}=H(),{mutate:h}=G(),g=V(),C=x(N).getOptionalBoolean("soundcheck.notifications.enabled"),{loading:R,allowed:k}=n({permission:$,resourceRef:i?.id}),{loading:v,allowed:w}=n({permission:j,resourceRef:i?.id}),{loading:A,allowed:y}=n({permission:I}),b=m(async()=>{i?.id&&await d({title:"Delete Campaign",message:`Are you sure you want to delete campaign ${i.name??i.id}?`})&&f(i.id)},[d,f,i?.id,i?.name]),L=m(()=>{if(!i)return;const{track:e}=i,o={id:F(),ownerEntityRef:e.ownerEntityRef,description:e.description??"",name:e.name,documentationURL:e.documentationURL,type:"standard",levels:e.levels.map(a=>({checks:a.checks,description:a.description,name:a.name,ordinal:a.ordinal})),filter:e.filter??void 0,exclude:e.exclude??void 0,badgeType:"status",draft:e.draft??!1};u(o)},[i,u]),S=m(async()=>{if(!i?.id)return;const{saveTrack:e,confirmed:o}=await p({title:"Archive Campaign",message:`Are you sure you want to archive campaign ${i.name??i.id}?`});o&&(e&&L(),h(i.id))},[h,i?.id,i?.name,L,p]);return{actions:q(()=>{if(!i?.id)return[];const e=[];!R&&k&&e.push({label:"Edit",id:"edit",onClick:()=>r(s({campaignId:i.id})),iconStart:t(M,{})}),!v&&w&&(c||e.push({label:"Archive",id:"archive",onClick:S,iconStart:t(P,{})}),e.push({label:"Delete",id:"delete",onClick:b,iconStart:t(B,{})})),!A&&C&&y&&i&&e.push({label:"Send Reminder",id:"send",onClick:()=>l(!0),iconStart:t(T,{})});for(const o of g)e.push({label:o.label,id:o.id,onClick:()=>r(o.href(i.id)),iconStart:t(U,{})});return e},[i,s,w,k,y,g,S,b,c,C,v,R,A,r]),showNotificationDialog:D,setShowNotificationDialog:l}};export{X as useCampaignActions};
1
+ import{jsx as t}from"react/jsx-runtime";import{useRouteRef as E,useApi as x,configApiRef as N}from"@backstage/core-plugin-api";import{usePermission as n}from"@backstage/plugin-permission-react";import{RiEditBoxLine as M,RiArchiveLine as P,RiDeleteBinLine as B,RiNotificationLine as T,RiExternalLinkLine as U}from"@remixicon/react";import{soundcheckCampaignUpdatePermission as $,soundcheckCampaignDeletePermission as j,soundcheckCampaignNotificationsCreatePermission as I}from"@spotify/backstage-plugin-soundcheck-common";import{useState as O,useCallback as m,useMemo as q}from"react";import{useNavigate as z}from"react-router-dom";import{v4 as F}from"uuid";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useArchiveCampaign as G}from"../../hooks/campaigns/useArchiveCampaign.esm.js";import{useDeleteCampaign as H}from"../../hooks/campaigns/useDeleteCampaign.esm.js";import{useCreateTrack as J}from"../../hooks/tracks/useCreateTrack.esm.js";import{useConfirmationModal as K}from"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{campaignEditRouteRef as Q}from"../../routes.esm.js";import{useExternalCampaignActions as V}from"../CampaignPage/CampaignActionsContext.esm.js";import{useArchiveConfirmationModal as W}from"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";const X=i=>{const s=E(Q),r=z(),c=i?.archived,{showModal:d}=K(),[D,l]=O(!1),{showArchiveModal:p}=W(),{mutate:u}=J(),{mutate:f}=H(),{mutate:h}=G(),g=V(),C=x(N).getOptionalBoolean("soundcheck.notifications.enabled"),{loading:R,allowed:k}=n({permission:$,resourceRef:i?.id}),{loading:v,allowed:w}=n({permission:j,resourceRef:i?.id}),{loading:A,allowed:y}=n({permission:I}),b=m(async()=>{i?.id&&await d({title:"Delete Campaign",message:`Are you sure you want to delete campaign ${i.name??i.id}?`})&&f(i.id)},[d,f,i?.id,i?.name]),L=m(()=>{if(!i)return;const{track:o}=i,e={id:F(),ownerEntityRef:o.ownerEntityRef,description:o.description??"",name:o.name,documentationURL:o.documentationURL,type:"standard",levels:o.levels.map(a=>({checks:a.checks,description:a.description,name:a.name,ordinal:a.ordinal})),filter:o.filter??void 0,exclude:o.exclude??void 0,badgeType:"status",draft:o.draft??!1};u(e)},[i,u]),S=m(async()=>{if(!i?.id)return;const{saveTrack:o,confirmed:e}=await p({title:"Archive Campaign",message:`Are you sure you want to archive campaign ${i.name??i.id}?`});e&&(o&&L(),h(i.id))},[h,i?.id,i?.name,L,p]);return{actions:q(()=>{if(!i?.id)return[];const o=[];!R&&k&&o.push({label:"Edit",id:"edit",onClick:()=>r(s({campaignId:i.id})),iconStart:t(M,{})}),!v&&w&&(c||o.push({label:"Archive",id:"archive",onClick:S,iconStart:t(P,{})}),o.push({label:"Delete",id:"delete",onClick:b,iconStart:t(B,{})})),!A&&C&&y&&i&&o.push({label:"Send Reminder",id:"send",onClick:()=>l(!0),iconStart:t(T,{})});for(const e of g)o.push({label:e.label,id:e.id,onClick:()=>r(e.href(i.id)),iconStart:t(U,{})});return o},[i,s,w,k,y,g,S,b,c,C,v,R,A,r]),showNotificationDialog:D,setShowNotificationDialog:l}};export{X as useCampaignActions};
2
2
  //# sourceMappingURL=useCampaignActions.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as i}from"react/jsx-runtime";import{useRouteRef as u}from"@backstage/core-plugin-api";import{usePermission as p}from"@backstage/plugin-permission-react";import{RiExportLine as f,RiEditBoxLine as h,RiDeleteBinLine as k}from"@remixicon/react";import{soundcheckCheckUpdatePermission as C,soundcheckCheckDeletePermission as R}from"@spotify/backstage-plugin-soundcheck-common";import{useCallback as x,useMemo as E}from"react";import{useNavigate as b}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as w}from"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useDeleteCheck as D}from"../../hooks/checks/useDeleteCheck.esm.js";import{checkEditRouteRef as g}from"../../routes.esm.js";import{exportCheck as y}from"../../utils/export.esm.js";const L=e=>{const t=b(),r=u(g),{loading:m,allowed:s}=p({permission:C,resourceRef:e?.id}),{loading:n,allowed:c}=p({permission:R,resourceRef:e?.id}),{showModal:a}=w(),{mutate:l}=D(),d=x(async()=>{e?.id&&await a({title:"Delete Check",message:`Are you sure you want to delete the check '${e.name??e.id}'?`})&&l(e.id)},[a,e?.name,l,e?.id]);return E(()=>{if(!e)return[];const o=[{label:"Export",id:"export",onClick:()=>y(e),iconStart:i(f,{})}];return e.isEditable&&!m&&s&&o.push({label:"Edit",id:"edit",onClick:()=>t(r({checkId:e.id})),iconStart:i(h,{})}),e.isEditable&&!n&&c&&o.push({label:"Delete",id:"delete",onClick:d,iconStart:i(k,{})}),o},[c,s,e,r,d,n,m,t])};export{L as useCheckActions};
1
+ import{jsx as i}from"react/jsx-runtime";import{useRouteRef as u}from"@backstage/core-plugin-api";import{usePermission as d}from"@backstage/plugin-permission-react";import{RiExportLine as f,RiEditBoxLine as h,RiDeleteBinLine as k}from"@remixicon/react";import{soundcheckCheckUpdatePermission as C,soundcheckCheckDeletePermission as R}from"@spotify/backstage-plugin-soundcheck-common";import{useCallback as x,useMemo as E}from"react";import{useNavigate as b}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as w}from"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useDeleteCheck as D}from"../../hooks/checks/useDeleteCheck.esm.js";import{checkEditRouteRef as g}from"../../routes.esm.js";import{exportCheck as y}from"../../utils/export.esm.js";const L=e=>{const t=b(),r=u(g),{loading:m,allowed:s}=d({permission:C,resourceRef:e?.id}),{loading:n,allowed:c}=d({permission:R,resourceRef:e?.id}),{showModal:a}=w(),{mutate:l}=D(),p=x(async()=>{e?.id&&await a({title:"Delete Check",message:`Are you sure you want to delete the check '${e.name??e.id}'?`})&&l(e.id)},[a,e?.name,l,e?.id]);return E(()=>{if(!e)return[];const o=[{label:"Export",id:"export",onClick:()=>y(e),iconStart:i(f,{})}];return e.isEditable&&!m&&s&&o.push({label:"Edit",id:"edit",onClick:()=>t(r({checkId:e.id})),iconStart:i(h,{})}),e.isEditable&&!n&&c&&o.push({label:"Delete",id:"delete",onClick:p,iconStart:i(k,{})}),o},[c,s,e,r,p,n,m,t])};export{L as useCheckActions};
2
2
  //# sourceMappingURL=useCheckActions.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r}from"react/jsx-runtime";import{useRouteRef as R,useApi as g,configApiRef as b}from"@backstage/core-plugin-api";import{usePermission as y}from"@backstage/plugin-permission-react";import{RiExportLine as w,RiEditBoxLine as T,RiDeleteBinLine as x,RiRefreshLine as C}from"@remixicon/react";import{soundcheckTrackDeletePermission as D,soundcheckTrackUpdatePermission as E}from"@spotify/backstage-plugin-soundcheck-common";import{useCallback as h,useMemo as A}from"react";import{useNavigate as I}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as L}from"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useDeleteTrack as M}from"../../hooks/tracks/useDeleteTrack.esm.js";import{useRecertifyTrack as N}from"../../hooks/tracks/useRecertifyTrack.esm.js";import{trackEditRouteRef as O}from"../../routes.esm.js";import{exportTrack as S}from"../../utils/export.esm.js";const B=e=>{const{loading:s,allowed:c}=y({permission:D,resourceRef:e?.id}),{loading:a,allowed:n}=y({permission:E,resourceRef:e?.id}),{showModal:t}=L(),{mutate:m}=N(),{mutate:l}=M(),d=I(),u=R(O),p=g(b).getOptionalConfig("soundcheck.certifications.history");let i=p?.getOptionalBoolean("enable")?p?.getOptionalNumber("retentionTimeInDays")??120:1;i=Math.min(i,365);const f=h(async()=>{e?.id&&await t({title:"Recertify Track",message:`Are you sure you want to recertify track ${e.name??e.id}? It will erase existing certification data, which cannot be undone. New data will be generated for the past ${i} day(s), reflecting the track's current configuration. This process may take some time, you will be notified upon completion.`})&&m({trackId:e.id,numberOfDays:i})},[t,e?.id,e?.name,m,i]),k=h(async()=>{e?.id&&await t({title:"Delete Track",message:`Are you sure you want to delete track ${e.name??e.id}?`})&&l(e.id)},[t,e?.id,e?.name,l]);return A(()=>{if(!e)return[];const o=[{label:"Export",id:"export",onClick:()=>S(e),iconStart:r(w,{})}];return e.isEditable&&!a&&n&&o.push({label:"Edit",id:"edit",onClick:()=>d(u({trackId:e.id})),iconStart:r(T,{})}),e.isEditable&&!s&&c&&o.push({label:"Delete",id:"delete",onClick:k,iconStart:r(x,{})}),!a&&n&&o.push({label:"Recertify",id:"recertify",onClick:f,iconStart:r(C,{})}),o},[c,n,k,f,s,a,d,e,u])};export{B as useTrackActions};
1
+ import{jsx as r}from"react/jsx-runtime";import{useRouteRef as R,useApi as g,configApiRef as b}from"@backstage/core-plugin-api";import{usePermission as y}from"@backstage/plugin-permission-react";import{RiExportLine as w,RiEditBoxLine as T,RiDeleteBinLine as x,RiRefreshLine as C}from"@remixicon/react";import{soundcheckTrackDeletePermission as D,soundcheckTrackUpdatePermission as E}from"@spotify/backstage-plugin-soundcheck-common";import{useCallback as h,useMemo as A}from"react";import{useNavigate as I}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as L}from"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{useDeleteTrack as M}from"../../hooks/tracks/useDeleteTrack.esm.js";import{useRecertifyTrack as N}from"../../hooks/tracks/useRecertifyTrack.esm.js";import{trackEditRouteRef as O}from"../../routes.esm.js";import{exportTrack as S}from"../../utils/export.esm.js";const B=i=>{const{loading:s,allowed:m}=y({permission:D,resourceRef:i?.id}),{loading:a,allowed:n}=y({permission:E,resourceRef:i?.id}),{showModal:t}=L(),{mutate:c}=N(),{mutate:l}=M(),d=I(),p=R(O),u=g(b).getOptionalConfig("soundcheck.certifications.history");let e=u?.getOptionalBoolean("enable")?u?.getOptionalNumber("retentionTimeInDays")??120:1;e=Math.min(e,365);const f=h(async()=>{i?.id&&await t({title:"Recertify Track",message:`Are you sure you want to recertify track ${i.name??i.id}? It will erase existing certification data, which cannot be undone. New data will be generated for the past ${e} day(s), reflecting the track's current configuration. This process may take some time, you will be notified upon completion.`})&&c({trackId:i.id,numberOfDays:e})},[t,i?.id,i?.name,c,e]),k=h(async()=>{i?.id&&await t({title:"Delete Track",message:`Are you sure you want to delete track ${i.name??i.id}?`})&&l(i.id)},[t,i?.id,i?.name,l]);return A(()=>{if(!i)return[];const o=[{label:"Export",id:"export",onClick:()=>S(i),iconStart:r(w,{})}];return i.isEditable&&!a&&n&&o.push({label:"Edit",id:"edit",onClick:()=>d(p({trackId:i.id})),iconStart:r(T,{})}),i.isEditable&&!s&&m&&o.push({label:"Delete",id:"delete",onClick:k,iconStart:r(x,{})}),!a&&n&&o.push({label:"Recertify",id:"recertify",onClick:f,iconStart:r(C,{})}),o},[m,n,k,f,s,a,d,i,p])};export{B as useTrackActions};
2
2
  //# sourceMappingURL=useTrackActions.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as o,jsxs as P,Fragment as D}from"react/jsx-runtime";import{useRouteRef as M}from"@backstage/core-plugin-api";import{entityRouteRef as q}from"@backstage/plugin-catalog-react";import{makeStyles as B,Grid as I}from"@material-ui/core";import{useContext as J,useEffect as y,useState as K,useRef as Q,useLayoutEffect as U,useMemo as X}from"react";import{VariableSizeGrid as Y}from"react-window";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useTrackOverviewForOwner as Z}from"../../hooks/certifications/useTrackOverviewForOwner.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{EmptyState as _}from"../EmptyState/EmptyState.esm.js";import"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"../../routes.esm.js";import"../OverviewPage/OverviewPage.esm.js";import"@spotify/backstage-plugin-core";import"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{OverviewPageContext as ee}from"../OverviewPage/OverviewPageContent.esm.js";import"../Pagination/Pagination.esm.js";import{useCursorPagination as te,CursorPagination as re}from"../Pagination/CursorPagination.esm.js";import{cellRenderer as oe}from"./Cell/cellRenderer.esm.js";import{OverviewTableSkeleton as ie}from"./OverviewTableSkeleton.esm.js";import{ResultsTableHeader as ne}from"./ResultsTableHeader.esm.js";import{generateRowsPivoted as ae,generateRows as le,generateHeaderRowPivoted as me,generateHeaderRow as se}from"./ResultsTableRow.esm.js";import{RowHeights as E,CellWidths as S,calculateTableWidth as ue}from"./resultsTableUtils.esm.js";import pe from"./useWindowDimensions.esm.js";const W=25,ce=B(i=>({table:{backgroundColor:i.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left",overflow:"auto"},tableContainer:{backgroundColor:i.palette.background.paper}})),de=({setError:i,kind:p,type:l,ownerEntityRef:t})=>{const{cursor:x,pageSize:R,...c}=te({defaultPageSize:W,label:"entitiesPerPage"}),{debouncedSearchValue:m,pivot:s}=J(ee),{data:e,isLoading:d,isError:b}=Z(t,{kind:p,type:l==="all"?null:l},R,x,m);y(()=>{c.setCursor(""),c.setCurrentPage(0)},[m]);const k=ce(),g=M(q);y(()=>{i?.(b?new Error("Error loading track overview"):void 0)},[b,i]);const[H,z]=K(0),{height:T}=pe(),n=Q(null);U(()=>{e&&t&&n?.current&&z(n.current.clientWidth?n.current.clientWidth-16:100)},[n,e,t]);const{rows:h,headerRow:f,tableWidth:w,entityRefsWithPadding:N,getRowHeight:O,columnCount:V}=X(()=>{if(d||!e||!t)return{};const{tracks:a,entityRefs:r}=e;if(!r)return{};const u=r.length>=25?r:[...r,...Array.from({length:25-r.length},()=>{})],C=s?ae(a,r,g):le(a,u,g),v=C[0]?.cells?.length??u.length+1,G=s?me(a):se(u),L=ue(v-1)+60;return{rows:C,headerRow:G,tableWidth:L,entityRefsWithPadding:u,getRowHeight:j=>C[j]?.height??E.check,columnCount:v}},[e,g,d,t,s]);if(d)return o(ie,{});if(!e||!t)return null;const{totalCount:$,endCursor:A,prevCursor:F}=e;return!f||!w||!N||!h?.length?m?o(_,{title:"No Entities Found",description:`No entities found with name containing: '${m}'`}):null:P("div",{ref:n,children:[o(I,{"aria-label":`Check results for ${l??p}`,item:!0,xs:12,className:k.tableContainer,children:H>0&&P(D,{children:[o(ne,{headerRow:f,gridWidth:w}),o(Y,{className:k.table,columnCount:V,columnWidth:a=>a===0?S.trackTitle:S.checkResult,rowCount:h.length,rowHeight:O,height:T*.7-E.paginationControl-f.height,width:w,children:oe(h)},s?"entityView":"checkView")]})},`${p}|${l??""}`),o(re,{...c,totalCount:$,defaultPageSize:W,endCursor:A,prevCursor:F,pageSize:R,labelRowsPerPage:"Entities per page:"})]})};export{de as ResultsTable};
1
+ import{jsx as o,jsxs as P,Fragment as D}from"react/jsx-runtime";import{useRouteRef as M}from"@backstage/core-plugin-api";import{entityRouteRef as q}from"@backstage/plugin-catalog-react";import{makeStyles as B,Grid as I}from"@material-ui/core";import{useContext as J,useEffect as y,useState as K,useRef as Q,useLayoutEffect as U,useMemo as X}from"react";import{VariableSizeGrid as Y}from"react-window";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useTrackOverviewForOwner as Z}from"../../hooks/certifications/useTrackOverviewForOwner.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{EmptyState as _}from"../EmptyState/EmptyState.esm.js";import"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"../../routes.esm.js";import"../OverviewPage/OverviewPage.esm.js";import"@spotify/backstage-plugin-core";import"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{OverviewPageContext as ee}from"../OverviewPage/OverviewPageContent.esm.js";import"../Pagination/Pagination.esm.js";import{useCursorPagination as te,CursorPagination as re}from"../Pagination/CursorPagination.esm.js";import{cellRenderer as oe}from"./Cell/cellRenderer.esm.js";import{OverviewTableSkeleton as ie}from"./OverviewTableSkeleton.esm.js";import{ResultsTableHeader as ne}from"./ResultsTableHeader.esm.js";import{generateRowsPivoted as ae,generateRows as le,generateHeaderRowPivoted as me,generateHeaderRow as se}from"./ResultsTableRow.esm.js";import{RowHeights as E,CellWidths as S,calculateTableWidth as ue}from"./resultsTableUtils.esm.js";import pe from"./useWindowDimensions.esm.js";const W=25,ce=B(i=>({table:{backgroundColor:i.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left",overflow:"auto"},tableContainer:{backgroundColor:i.palette.background.paper}})),de=({setError:i,kind:p,type:l,ownerEntityRef:t})=>{const{cursor:x,pageSize:R,...c}=te({defaultPageSize:W,label:"entitiesPerPage"}),{debouncedSearchValue:m,pivot:s}=J(ee),{data:e,isLoading:d,isError:b}=Z(t,{kind:p,type:l==="all"?null:l},R,x,m);y(()=>{c.setCursor(""),c.setCurrentPage(0)},[m]);const k=ce(),g=M(q);y(()=>{i?.(b?new Error("Error loading track overview"):void 0)},[b,i]);const[H,z]=K(0),{height:T}=pe(),n=Q(null);U(()=>{e&&t&&n?.current&&z(n.current.clientWidth?n.current.clientWidth-16:100)},[n,e,t]);const{rows:h,headerRow:f,tableWidth:w,entityRefsWithPadding:N,getRowHeight:O,columnCount:V}=X(()=>{if(d||!e||!t)return{};const{tracks:a,entityRefs:r}=e;if(!r)return{};const u=r.length>=25?r:[...r,...Array.from({length:25-r.length},()=>{})],C=s?ae(a,r,g):le(a,u,g),v=C[0]?.cells?.length??u.length+1,G=s?me(a):se(u),L=ue(v-1)+60;return{rows:C,headerRow:G,tableWidth:L,entityRefsWithPadding:u,getRowHeight:j=>C[j]?.height??E.check,columnCount:v}},[e,g,d,t,s]);if(d)return o(ie,{});if(!e||!t)return null;const{totalCount:$,endCursor:A,prevCursor:F}=e;return!f||!w||!N||!h?.length?m?o(_,{title:"No Entities Found",description:`No entities found with name containing: '${m}'`}):null:P("div",{ref:n,children:[o(I,{"aria-label":`Check results for ${l??p}`,item:!0,xs:12,className:k.tableContainer,children:H>0&&P(D,{children:[o(ne,{headerRow:f,gridWidth:w}),o(Y,{className:k.table,columnCount:V,columnWidth:a=>a===0?S.trackTitle:S.checkResult,rowCount:h.length,rowHeight:O,height:T*.7-E.paginationControl-f.height,width:w,children:oe(h)},s?"entityView":"checkView")]})},`${p}|${l??""}`),o(re,{...c,totalCount:$,defaultPageSize:W,endCursor:A,prevCursor:F,pageSize:R,labelRowsPerPage:"Entities per page:"})]})};export{de as ResultsTable};
2
2
  //# sourceMappingURL=ResultsTable.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as i}from"react/jsx-runtime";import{Flex as v}from"@backstage/ui";import{makeStyles as p}from"@material-ui/core";const g=p(()=>({container:{gap:"var(--bui-space-1)",width:"100%"},segment:{height:"var(--bui-space-1_5)",border:"var(--bui-space-0_5) solid transparent",borderRadius:"var(--bui-space-1)"},empty:{height:"var(--bui-space-1_5)",background:"var(--bui-fg-disabled)",border:"var(--bui-space-0_5) solid transparent",borderRadius:"var(--bui-space-1)",width:"100%"}})),h=({segments:u,hideZeroSegments:d=!0})=>{const r=g(),b="var(--bui-fg-disabled)",t=(u??[]).filter(e=>Number.isFinite(e.value)).map(e=>({...e,value:Math.max(0,e.value)})),a=d?t.filter(({value:e})=>e>0):t,s=a.reduce((e,m)=>e+m.value,0);if(a.length===0||s===0)return i("div",{className:r.empty});const l=Math.max(0,100-s),o="In Progress",n=l>0?[...a,{key:o,label:o,value:l,color:b}]:a,c=n.length===1;return i(v,{className:r.container,children:n.map(e=>i("div",{className:r.segment,"aria-label":e.ariaLabel??e.label??e.key,title:e.label,style:{flexGrow:e.value,width:c?"100%":void 0,background:e.color}},e.key))})};export{h as ProgressBar};
2
+ //# sourceMappingURL=ProgressBar.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as i}from"react/jsx-runtime";import{makeStyles as n,LinearProgress as p}from"@material-ui/core";import{useState as a}from"react";import s from"react-use/lib/useDebounce";import d from"react-use/lib/useUnmount";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import{useIsFetching as c}from"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{FadeIn as f}from"../FadeIn/FadeIn.esm.js";const l=n(t=>({indicator:{position:"absolute",width:"100%",zIndex:t.zIndex.speedDial}})),h=()=>{const t=c(),r=l(),[o,e]=a(!!t),[u,m]=s(()=>{e(!!t)},250,[t]);return d(m),o?i(f,{children:i("div",{className:r.indicator,children:i(p,{variant:"indeterminate","data-testid":"refetching-indicator"})})}):null};export{h as RefetchingIndicator};
1
+ import{jsx as i}from"react/jsx-runtime";import{makeStyles as n,LinearProgress as p}from"@material-ui/core";import{useState as a}from"react";import s from"react-use/lib/useDebounce";import d from"react-use/lib/useUnmount";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import{useIsFetching as c}from"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsync";import{FadeIn as f}from"../FadeIn/FadeIn.esm.js";const l=n(t=>({indicator:{position:"absolute",width:"100%",zIndex:t.zIndex.speedDial}})),h=()=>{const t=c(),r=l(),[o,m]=a(!!t),[u,e]=s(()=>{m(!!t)},250,[t]);return d(e),o?i(f,{children:i("div",{className:r.indicator,children:i(p,{variant:"indeterminate","data-testid":"refetching-indicator"})})}):null};export{h as RefetchingIndicator};
2
2
  //# sourceMappingURL=RefetchingIndicator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as n,jsx as t}from"react/jsx-runtime";import{makeStyles as p,Tooltip as s,Typography as c}from"@material-ui/core";import d from"@material-ui/icons/Schedule";import{useAutoUpdatingRelativeTime as f}from"@spotify/backstage-plugin-core";import{DateTime as r}from"luxon";const g=p(i=>({root:{display:"inline-flex",alignItems:"center",gap:i.spacing(1)}})),T=({timestamp:i,description:o})=>{const a=g(),m=r.fromISO(i).toLocaleString(r.DATETIME_FULL),e=f(i),l=o?`${o}: ${e}`:void 0;return n("div",{className:a.root,children:[t(s,{title:m,children:t(c,{variant:"caption","aria-label":l,children:e})}),t(d,{fontSize:"small"})]})};export{T as RelativeTime};
1
+ import{jsxs as s,jsx as o}from"react/jsx-runtime";import{makeStyles as p,Tooltip as c,Typography as d}from"@material-ui/core";import f from"@material-ui/icons/Schedule";import{useAutoUpdatingRelativeTime as T}from"@spotify/backstage-plugin-core";import{DateTime as r}from"luxon";const g=p(i=>({root:{display:"inline-flex",alignItems:"center",gap:i.spacing(1)}})),h=({timestamp:i,description:t,showIcon:a=!0})=>{const m=g(),n=r.fromISO(i).toLocaleString(r.DATETIME_FULL),e=T(i),l=t?`${t}: ${e}`:void 0;return s("div",{className:m.root,children:[o(c,{title:n,children:o(d,{variant:"caption","aria-label":l,children:e})}),a&&o(f,{fontSize:"small"})]})};export{h as RelativeTime};
2
2
  //# sourceMappingURL=RelativeTime.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as s,Fragment as d}from"react/jsx-runtime";import{useRouteRef as p,useRouteRefParams as h}from"@backstage/core-plugin-api";import{useEntity as m}from"@backstage/plugin-catalog-react";import{SecretsContextProvider as L}from"@backstage/plugin-scaffolder-react";import{Routes as N,Route as l,Navigate as f}from"react-router-dom";import{ResultState as T}from"../graphql/generated/index.esm.js";import{useAllCertifications as S}from"../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../api.esm.js";import"../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as C}from"../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../hooks/useSoundcheckAlert.esm.js";import"../hooks/useConfirmationModal.esm.js";import{usePlaylists as P}from"../hooks/playlists/usePlaylists.esm.js";import"react-use/lib/useLocalStorage";import{certificationPlaylistTrackCheckRouteRef as x,certificationPlaylistTrackRouteRef as k,certificationPlaylistRouteRef as R,certificationTrackRouteRef as y,certificationRouteRef as g}from"../routes.esm.js";import{EntityContent as n}from"./EntityContent/EntityContent.esm.js";const b=()=>{const{entity:i}=m(),e=p(R),a=p(y),{isLoading:r,data:o}=P(i),{isLoading:c,data:A}=S(i);if(r||c)return null;const u=o?.[0]?.id,I=A?.[0]?.track.id;return!u&&!I?null:t(f,{to:u?e({playlistId:u}):a({trackId:I}),replace:!0})},v=()=>{const{entity:i}=m(),{playlistId:e}=h(R),a=p(k),{data:r}=P(i),o=r?.find(c=>c.id===e)?.trackIds[0];return o?t(f,{to:a({playlistId:e,trackId:o}),replace:!0}):null},F=i=>(i?.levels?.flatMap(e=>e.checks??[])??[]).filter(e=>e.result!==T.Exempt&&e.result!==T.NotApplicable)[0],E=()=>{const{entity:i}=m(),{playlistId:e,trackId:a}=h(k),{data:r}=C(i,a),o=p(x),c=F(r)?.id??r?.levels[0]?.checks[0]?.id;return c?t(f,{to:o({playlistId:e,trackId:a,checkId:c}),replace:!0}):null},j=()=>{const{entity:i}=m(),{trackId:e}=h(y),a=p(g),{data:r}=C(i,e),o=F(r)?.id??r?.levels?.find(c=>c.checks.length>0)?.checks[0].id;return o?t(f,{to:a({trackId:e,checkId:o}),replace:!0}):null},D=()=>t(L,{children:s(N,{children:[t(l,{path:x.path,element:t(n,{})}),t(l,{path:k.path,element:s(d,{children:[t(n,{}),t(E,{})]})}),t(l,{path:R.path,element:s(d,{children:[t(n,{}),t(v,{})]})}),t(l,{path:y.path,element:s(d,{children:[t(n,{}),t(j,{})]})}),t(l,{path:g.path,element:t(n,{})}),t(l,{path:"/",element:s(d,{children:[t(n,{}),t(b,{})]})})]})});export{j as RedirectToFirstCheck,v as RedirectToFirstPlaylistTrack,E as RedirectToFirstPlaylistTrackCheck,D as Router};
1
+ import{jsx as t,jsxs as s,Fragment as m}from"react/jsx-runtime";import{useRouteRef as p,useRouteRefParams as h}from"@backstage/core-plugin-api";import{useEntity as d}from"@backstage/plugin-catalog-react";import{SecretsContextProvider as L}from"@backstage/plugin-scaffolder-react";import{Routes as N,Route as l,Navigate as f}from"react-router-dom";import{ResultState as T}from"../graphql/generated/index.esm.js";import{useAllCertifications as S}from"../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../api.esm.js";import"../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as C}from"../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../hooks/useSoundcheckAlert.esm.js";import"../hooks/useConfirmationModal.esm.js";import{usePlaylists as P}from"../hooks/playlists/usePlaylists.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import{certificationPlaylistTrackCheckRouteRef as x,certificationPlaylistTrackRouteRef as k,certificationPlaylistRouteRef as R,certificationTrackRouteRef as y,certificationRouteRef as g}from"../routes.esm.js";import{EntityContent as n}from"./EntityContent/EntityContent.esm.js";const b=()=>{const{entity:i}=d(),e=p(R),a=p(y),{isLoading:r,data:o}=P(i),{isLoading:c,data:A}=S(i);if(r||c)return null;const u=o?.[0]?.id,I=A?.[0]?.track.id;return!u&&!I?null:t(f,{to:u?e({playlistId:u}):a({trackId:I}),replace:!0})},v=()=>{const{entity:i}=d(),{playlistId:e}=h(R),a=p(k),{data:r}=P(i),o=r?.find(c=>c.id===e)?.trackIds[0];return o?t(f,{to:a({playlistId:e,trackId:o}),replace:!0}):null},F=i=>(i?.levels?.flatMap(e=>e.checks??[])??[]).filter(e=>e.result!==T.Exempt&&e.result!==T.NotApplicable)[0],E=()=>{const{entity:i}=d(),{playlistId:e,trackId:a}=h(k),{data:r}=C(i,a),o=p(x),c=F(r)?.id??r?.levels[0]?.checks[0]?.id;return c?t(f,{to:o({playlistId:e,trackId:a,checkId:c}),replace:!0}):null},j=()=>{const{entity:i}=d(),{trackId:e}=h(y),a=p(g),{data:r}=C(i,e),o=F(r)?.id??r?.levels?.find(c=>c.checks.length>0)?.checks[0].id;return o?t(f,{to:a({trackId:e,checkId:o}),replace:!0}):null},D=()=>t(L,{children:s(N,{children:[t(l,{path:x.path,element:t(n,{})}),t(l,{path:k.path,element:s(m,{children:[t(n,{}),t(E,{})]})}),t(l,{path:R.path,element:s(m,{children:[t(n,{}),t(v,{})]})}),t(l,{path:y.path,element:s(m,{children:[t(n,{}),t(j,{})]})}),t(l,{path:g.path,element:t(n,{})}),t(l,{path:"/",element:s(m,{children:[t(n,{}),t(b,{})]})})]})});export{j as RedirectToFirstCheck,v as RedirectToFirstPlaylistTrack,E as RedirectToFirstPlaylistTrackCheck,D as Router};
2
2
  //# sourceMappingURL=Router.esm.js.map