@spotify/backstage-plugin-soundcheck 0.22.4 → 0.22.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  3. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  4. package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
  5. package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
  6. package/dist/components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js +1 -1
  7. package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
  8. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  9. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  10. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  11. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  12. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +1 -1
  13. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  14. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  15. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  16. package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
  17. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  18. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  19. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  20. package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  21. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
  22. package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  23. package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
  24. package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
  25. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  26. package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
  27. package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +1 -1
  28. package/dist/components/CheckSelection/CheckSelection.esm.js +1 -1
  29. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
  30. package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
  31. package/dist/components/ChecksTable/FixMeCell.esm.js +1 -1
  32. package/dist/components/ChecksTable/PullRequestsTable.esm.js +1 -1
  33. package/dist/components/ChecksTable/utils.esm.js +2 -0
  34. package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +1 -1
  35. package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.esm.js +1 -1
  36. package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
  37. package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
  38. package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
  39. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  40. package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
  41. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  42. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  43. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  44. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  45. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  46. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  47. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  48. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  49. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  50. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
  51. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  52. package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
  53. package/dist/components/GroupSelectorBUI/GroupSelectList.esm.js +1 -1
  54. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  55. package/dist/components/Menus/useCampaignActions.esm.js +1 -1
  56. package/dist/components/Menus/useCheckActions.esm.js +1 -1
  57. package/dist/components/Menus/useTrackActions.esm.js +1 -1
  58. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  59. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  60. package/dist/components/Router.esm.js +1 -1
  61. package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js +1 -1
  62. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
  63. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
  64. package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
  65. package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
  66. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  67. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  68. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  69. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  70. package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
  71. package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
  72. package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
  73. package/dist/contexts/UserProvider.esm.js +1 -1
  74. package/dist/hooks/checks/useChecks.esm.js +2 -0
  75. package/dist/hooks/fixMe/useFixMe.esm.js +1 -1
  76. package/dist/hooks/fixWithAika/useFixWithAika.esm.js +1 -1
  77. package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
  78. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{zodResolver as p}from"@hookform/resolvers/zod";import{useForm as u}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as c}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react/jsx-runtime";import"react";import{useLoggedInUser as l}from"../../contexts/UserProvider.esm.js";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 f}from"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{mapCheckerToFormValues as d,mapToCheckerInput as h,DEFAULT_FORM_VALUES as C}from"./utils/checkFormUtils.esm.js";import{manualCheckFormSchema as S,defaultCheckFormSchema as k}from"./utils/validation.esm.js";const F=a=>{const{selectedItem:r}=c(),{userEntityRef:m}=l();let t=C;r&&(t=d(r)),m&&!t.detailsStep.ownerEntityRef&&(t.detailsStep.ownerEntityRef=m);const s=u({defaultValues:t,mode:"onChange",resolver:(o,e,i)=>o.detailsStep.type==="manual"?p(S)(o,e,i):p(k)(o,e,i)}),{showModal:n}=f();return{formMethods:s,onSubmit:async o=>{if(!await n({title:"Save Check",message:`Are you sure you want to save check: ${o.detailsStep.name}?`,error:!1}))return;const e=h(o,r);a(e)}}};export{F as useCheckForm};
1
+ import{zodResolver as p}from"@hookform/resolvers/zod";import{useForm as u}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as c}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react/jsx-runtime";import"react";import{useLoggedInUser as l}from"../../contexts/UserProvider.esm.js";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 f}from"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{mapCheckerToFormValues as d,mapToCheckerInput as h,DEFAULT_FORM_VALUES as C}from"./utils/checkFormUtils.esm.js";import{manualCheckFormSchema as S,defaultCheckFormSchema as k}from"./utils/validation.esm.js";const F=a=>{const{selectedItem:r}=c(),{userEntityRef:m}=l();let t=C;r&&(t=d(r)),m&&!t.detailsStep.ownerEntityRef&&(t.detailsStep.ownerEntityRef=m);const s=u({defaultValues:t,mode:"onChange",resolver:(o,e,i)=>o.detailsStep.type==="manual"?p(S)(o,e,i):p(k)(o,e,i)}),{showModal:n}=f();return{formMethods:s,onSubmit:async o=>{if(!await n({title:"Save Check",message:`Are you sure you want to save check: ${o.detailsStep.name}?`,error:!1}))return;const e=h(o,r);a(e)}}};export{F as useCheckForm};
2
2
  //# sourceMappingURL=useCheckForm.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as d,Fragment as h,jsx as o}from"react/jsx-runtime";import{useRouteRef as m}from"@backstage/core-plugin-api";import{usePermission as f}from"@backstage/plugin-permission-react";import{HeaderPage as k}from"@backstage/ui";import{soundcheckCheckUpdatePermission as l}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as u}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as g}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useCheck as C}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{checkDetailsRouteRef as P,checksPageRouteRef as R}from"../../routes.esm.js";import{DocLinkButton as b}from"../DocLinkButton/DocLinkButton.esm.js";import{LoadingIndicator as E}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as w}from"../PageWarningMessage/PageWarningMessage.esm.js";import{CheckEditView as I}from"./CheckEditView.esm.js";const x=()=>{const{checkId:e}=u(),{data:r,isLoading:c}=C(e),{loading:s,allowed:p}=f({permission:l,resourceRef:e}),t=s||c,i=p&&r?.isEditable,a=m(P),n=m(R);return d(h,{children:[o(k,{title:`Edit ${r?.name??e??"Check"}`,breadcrumbs:[{label:"All Checks",href:n()},{label:"Details",href:a({checkId:e??""})}],customActions:o(b,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})}),o(w,{entityName:"check",entityId:e,showCannotEdit:!t&&!i,showNotFound:!t&&!r}),t&&o(E,{}),o(g,{children:!t&&!!r&&i&&o(I,{check:r})})]})};export{x as CheckEditPage};
1
+ import{jsxs as d,Fragment as h,jsx as o}from"react/jsx-runtime";import{useRouteRef as m}from"@backstage/core-plugin-api";import{usePermission as f}from"@backstage/plugin-permission-react";import{HeaderPage as k}from"@backstage/ui";import{soundcheckCheckUpdatePermission as l}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as u}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as g}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useCheck as C}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{checkDetailsRouteRef as P,checksPageRouteRef as R}from"../../routes.esm.js";import{DocLinkButton as b}from"../DocLinkButton/DocLinkButton.esm.js";import{LoadingIndicator as E}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as w}from"../PageWarningMessage/PageWarningMessage.esm.js";import{CheckEditView as I}from"./CheckEditView.esm.js";const x=()=>{const{checkId:r}=u(),{data:e,isLoading:c}=C(r),{loading:s,allowed:p}=f({permission:l,resourceRef:r}),t=s||c,i=p&&e?.isEditable,a=m(P),n=m(R);return d(h,{children:[o(k,{title:`Edit ${e?.name??r??"Check"}`,breadcrumbs:[{label:"All Checks",href:n()},{label:"Details",href:a({checkId:r??""})}],customActions:o(b,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})}),o(w,{entityName:"check",entityId:r,showCannotEdit:!t&&!i,showNotFound:!t&&!e}),t&&o(E,{}),o(g,{children:!t&&!!e&&i&&o(I,{check:e})})]})};export{x as CheckEditPage};
2
2
  //# sourceMappingURL=CheckEditPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as d}from"react/jsx-runtime";import{useEffect as i}from"react";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as m}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";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{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useUpdateCheck as f}from"../../hooks/checks/useUpdateCheck.esm.js";import{checksPageRouteRef as h}from"../../routes.esm.js";import{CheckForm as g}from"../CheckForm/CheckForm.esm.js";import"../CheckForm/Steps/CheckDetailsStep.esm.js";import"../CheckForm/Steps/CheckRulesStep.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as l}from"../SoundcheckHeader/useHeader.esm.js";const C=({check:t})=>{const{selectedItem:c,setSelectedItem:o}=m(),{setIsLoading:e}=m(),{mutateAsync:p,isLoading:r}=f();i(()=>{e(r)},[e,r]),i(()=>{o(t)},[t,o]);const[s,a]=u(h),n=async k=>{await p(k,{onSuccess:a})};return l({title:"Edit a Check",description:"Make changes to your check\u2019s facts, rules and other details.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"}),c&&d(g,{onClose:s,onSave:n})};export{C as CheckEditView};
1
+ import{jsx as d}from"react/jsx-runtime";import{useEffect as i}from"react";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as m}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";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{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useUpdateCheck as f}from"../../hooks/checks/useUpdateCheck.esm.js";import{checksPageRouteRef as h}from"../../routes.esm.js";import{CheckForm as g}from"../CheckForm/CheckForm.esm.js";import"../CheckForm/Steps/CheckDetailsStep.esm.js";import"../CheckForm/Steps/CheckRulesStep.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as l}from"../SoundcheckHeader/useHeader.esm.js";const C=({check:t})=>{const{selectedItem:c,setSelectedItem:o}=m(),{setIsLoading:e}=m(),{mutateAsync:p,isLoading:r}=f();i(()=>{e(r)},[e,r]),i(()=>{o(t)},[t,o]);const[s,a]=u(h),n=async k=>{await p(k,{onSuccess:a})};return l({title:"Edit a Check",description:"Make changes to your check\u2019s facts, rules and other details.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"}),c&&d(g,{onClose:s,onSave:n})};export{C as CheckEditView};
2
2
  //# sourceMappingURL=CheckEditView.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as i,jsxs as l,Fragment as I}from"react/jsx-runtime";import{parseEntityRef as n}from"@backstage/catalog-model";import{useRouteRef as W,useApi as U}from"@backstage/core-plugin-api";import{entityRouteRef as $,entityPresentationApiRef as D}from"@backstage/plugin-catalog-react";import{TableRoot as F,TableHeader as H,Column as f,TableBody as M,Row as O,CellText as P,TooltipTrigger as J,Button as V,Tooltip as q,TablePagination as G}from"@backstage/ui";import{makeStyles as K}from"@material-ui/core";import{useState as T,useMemo as p,useCallback as Q}from"react";import{useNavigate as X}from"react-router-dom";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as Y}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useExemptions as Z}from"../../hooks/exemptions/useExemptions.esm.js";import{formatTimestamp as ee}from"../../utils/time.esm.js";import{CustomCell as te}from"../CustomCell/CustomCell.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 ie}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";const j=10,oe=K(u=>({justificationCell:{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",whiteSpace:"pre-line",wordBreak:"break-word",fontWeight:"normal",textAlign:"left",background:"none !important",padding:0},emptyStateWrapper:{padding:u.spacing(2)}})),re=({checkId:u,searchValue:g})=>{const v=oe(),x=X(),S=W($),[c,R]=T("ascending"),[h,E]=T("entity"),{data:d,isLoading:z,error:B}=Z(u),y=p(()=>d?.totalCount??0,[d]),w=p(()=>d?.edges??[],[d]),N=Q(t=>{const e=n(t),o=S(e);x(`${o}/soundcheck`)},[x,S]),m=p(()=>{const t=(e,o)=>e<o?c==="ascending"?-1:1:e>o?c==="ascending"?1:-1:0;return[...w].sort((e,o)=>{const a=e.node,s=o.node;switch(h){case"entity":return t(n(a.entity_ref).name,n(s.entity_ref).name);case"justification":return t(a.justification??"",s.justification??"");case"user":return t(n(a.user_ref).name,n(s.user_ref).name);case"date":return t(a.timestamp,s.timestamp);default:return 0}})},[w,h,c]),b=U(D),C=p(()=>{const t=new Map;for(const{node:e}of m){const o=b.forEntity(e.entity_ref)?.snapshot?.primaryTitle;o&&t.set(e.entity_ref,o)}return t},[m,b]),k=p(()=>{if(!g?.length)return m;const t=g.toLowerCase().trim();return m.filter(({node:e})=>C.get(e.entity_ref)?.toLowerCase().includes(t))},[m,g,C]),L=y>j,{paginatedItems:A,paginationProps:r}=Y({pageParam:"perPage",defaultPageSize:j,items:k});return z?i(ie,{}):B?i(_,{title:"Exemptions failed",body:"Failed to load exemptions."}):!w.length||!k.length?i(_,{title:"No check exemptions found",body:"There are no check exemptions found."}):l(I,{children:[l(F,{onSortChange:({direction:t,column:e})=>{E(e),R(t)},sortDescriptor:{direction:c,column:h},children:[l(H,{children:[i(f,{id:"entity",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Entity"}),i(f,{id:"justification",style:{width:"40%"},children:"Justification"}),i(f,{id:"user",allowsSorting:!0,style:{width:"15%"},children:"User"}),i(f,{id:"date",allowsSorting:!0,style:{width:"10%"},children:"Date"})]}),i(M,{children:A.map(t=>{const e=t.node,o=ee(e.timestamp),a=n(e.user_ref),s=n(e.entity_ref);return l(O,{onAction:()=>N(e.entity_ref),children:[i(P,{title:s.name}),i(te,{children:l(J,{children:[i(V,{variant:"tertiary",className:v.justificationCell,children:e.justification}),i(q,{children:e.justification})]})}),i(P,{title:a.name}),i(P,{title:o})]},`${e.entity_ref}-${e.check_id}`)})})]}),L&&i(G,{totalCount:y,offset:r.offset,hasNextPage:r.offset+r.pageSize<y,hasPreviousPage:r.offset>0,onNextPage:r.onNextPage,onPreviousPage:r.onPreviousPage,onPageSizeChange:r.onPageSizeChange,pageSize:r.pageSize})]})};export{re as ExemptionsTableBUI};
1
+ import{jsx as i,jsxs as l,Fragment as I}from"react/jsx-runtime";import{parseEntityRef as n}from"@backstage/catalog-model";import{useRouteRef as W,useApi as U}from"@backstage/core-plugin-api";import{entityRouteRef as $,entityPresentationApiRef as D}from"@backstage/plugin-catalog-react";import{TableRoot as F,TableHeader as H,Column as f,TableBody as M,Row as O,CellText as P,TooltipTrigger as J,Button as V,Tooltip as q,TablePagination as G}from"@backstage/ui";import{makeStyles as K}from"@material-ui/core";import{useState as T,useMemo as p,useCallback as Q}from"react";import{useNavigate as X}from"react-router-dom";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as Y}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useExemptions as Z}from"../../hooks/exemptions/useExemptions.esm.js";import{formatTimestamp as ee}from"../../utils/time.esm.js";import{CustomCell as te}from"../CustomCell/CustomCell.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 ie}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";const j=10,oe=K(u=>({justificationCell:{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",whiteSpace:"pre-line",wordBreak:"break-word",fontWeight:"normal",textAlign:"left",background:"none !important",padding:0},emptyStateWrapper:{padding:u.spacing(2)}})),re=({checkId:u,searchValue:g})=>{const v=oe(),x=X(),S=W($),[c,R]=T("ascending"),[h,E]=T("entity"),{data:d,isLoading:z,error:B}=Z(u),y=p(()=>d?.totalCount??0,[d]),w=p(()=>d?.edges??[],[d]),N=Q(t=>{const e=n(t),o=S(e);x(`${o}/soundcheck`)},[x,S]),m=p(()=>{const t=(e,o)=>e<o?c==="ascending"?-1:1:e>o?c==="ascending"?1:-1:0;return[...w].sort((e,o)=>{const a=e.node,s=o.node;switch(h){case"entity":return t(n(a.entity_ref).name,n(s.entity_ref).name);case"justification":return t(a.justification??"",s.justification??"");case"user":return t(n(a.user_ref).name,n(s.user_ref).name);case"date":return t(a.timestamp,s.timestamp);default:return 0}})},[w,h,c]),b=U(D),C=p(()=>{const t=new Map;for(const{node:e}of m){const o=b.forEntity(e.entity_ref)?.snapshot?.primaryTitle;o&&t.set(e.entity_ref,o)}return t},[m,b]),k=p(()=>{if(!g?.length)return m;const t=g.toLowerCase().trim();return m.filter(({node:e})=>C.get(e.entity_ref)?.toLowerCase().includes(t))},[m,g,C]),L=y>j,{paginatedItems:A,paginationProps:r}=Y({pageParam:"perPage",defaultPageSize:j,items:k});return z?i(ie,{}):B?i(_,{title:"Exemptions failed",body:"Failed to load exemptions."}):!w.length||!k.length?i(_,{title:"No check exemptions found",body:"There are no check exemptions found."}):l(I,{children:[l(F,{onSortChange:({direction:t,column:e})=>{E(e),R(t)},sortDescriptor:{direction:c,column:h},children:[l(H,{children:[i(f,{id:"entity",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Entity"}),i(f,{id:"justification",style:{width:"40%"},children:"Justification"}),i(f,{id:"user",allowsSorting:!0,style:{width:"15%"},children:"User"}),i(f,{id:"date",allowsSorting:!0,style:{width:"10%"},children:"Date"})]}),i(M,{children:A.map(t=>{const e=t.node,o=ee(e.timestamp),a=n(e.user_ref),s=n(e.entity_ref);return l(O,{onAction:()=>N(e.entity_ref),children:[i(P,{title:s.name}),i(te,{children:l(J,{children:[i(V,{variant:"tertiary",className:v.justificationCell,children:e.justification}),i(q,{children:e.justification})]})}),i(P,{title:a.name}),i(P,{title:o})]},`${e.entity_ref}-${e.check_id}`)})})]}),L&&i(G,{totalCount:y,offset:r.offset,hasNextPage:r.offset+r.pageSize<y,hasPreviousPage:r.offset>0,onNextPage:r.onNextPage,onPreviousPage:r.onPreviousPage,onPageSizeChange:r.onPageSizeChange,pageSize:r.pageSize})]})};export{re as ExemptionsTableBUI};
2
2
  //# sourceMappingURL=ExemptionsTableBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as n,Fragment as B,jsx as o}from"react/jsx-runtime";import{makeStyles as E,Box as i,Checkbox as N,Typography as O,FormHelperText as A,Tooltip as L,Button as z}from"@material-ui/core";import R from"@material-ui/icons/CheckCircleOutlined";import P from"@material-ui/icons/InfoOutlined";import{isEmpty as j,last as D,difference as F}from"lodash";import{useContext as v,useMemo as g}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"@spotify/backstage-plugin-soundcheck-common";import{useGetChecks as G}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"react-hook-form";import"../ListboxVirtualized/ListboxVirtualized.esm.js";import{ControlledAutocomplete as M}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{CheckPreviewContext as S}from"./CheckPreviewContext.esm.js";const y=E(e=>({checkSelectCard:{padding:e.spacing(1,2),border:`1px solid ${e.palette.divider}`,borderRadius:e.spacing(.25),"&:hover":{cursor:"pointer"},display:"flex",alignItems:"center",background:e.palette.background.default,minWidth:200},selectedCard:{border:`1px solid ${e.palette.border}`},selectedIcon:{color:e.palette.text.secondary},checkCardInfo:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},selectArea:{display:"flex",flexDirection:"column",gap:e.spacing(.75)},removeButton:{margin:0,marginLeft:e.spacing(1),padding:0,color:e.palette.text.primary},wrapper:{padding:e.spacing(1),border:`1px solid ${e.palette.divider}`,borderRadius:e.spacing(1)},wrapperError:{border:`1px solid ${e.palette.error.main}`},checkSearch:{background:e.palette.background.paper}})),H=({check:e,removeCheck:f,isExternal:p})=>{const c=y(),{updateCheck:k,check:x}=v(S),d=e&&x?.id===e.id;return e?n(i,{className:`${c.checkSelectCard} ${d?c.selectedCard:""}`,onClick:()=>k(e),children:[o(R,{className:d?c.selectedIcon:"",fontSize:"small"}),o(i,{className:c.checkCardInfo,flex:1,marginLeft:2,children:e.name}),p&&o(i,{display:"flex",alignItems:"center",marginRight:1,children:o(L,{title:"Externally submitted check",placement:"top",arrow:!0,children:o(P,{fontSize:"small",color:"action",style:{cursor:"help"}})})}),!p&&o(z,{onClick:l=>{l.stopPropagation(),f(e.id)},className:c.removeButton,variant:"text",size:"small","aria-label":`remove check ${e.id}`,children:"Remove"})]}):null},V=({currentSectionCheckIds:e,addCheckToSelection:f,removeCheck:p,error:c,helperText:k,blankText:x,selectedChecks:d})=>{const l=y(),{data:b,isLoading:w}=G({ids:void 0}),{updateCheck:I}=v(S),u=g(()=>b?.edges.map(r=>r.node)??[],[b]),s=g(()=>new Set(u.map(r=>r.id)),[u]),m=g(()=>{const r=(d??[]).filter(t=>!s.has(t.id)).map(t=>({...t,description:t.description??""}));return[...u,...r]},[u,s,d]),C=g(()=>new Map(m.map(r=>[r.id,r])),[m]),$=g(()=>m.map(r=>r.id)??[],[m]),T=r=>{if(r.length>e.length){const t=D(r),a=m.find(h=>h.id===t);f(a),a&&I(a)}if(r.length<e.length){const t=F(e,r)?.[0];t&&p(t)}};return n(B,{children:[n(i,{className:`${l.wrapper} ${c?l.wrapperError:""}`,children:[o(i,{className:l.checkSearch,marginBottom:1,children:o(M,{multiple:!0,disableCloseOnSelect:!0,options:$,getOptionDisabled:r=>!s.has(r),renderOption:(r,{selected:t})=>{const a=C.get(r),h=!s.has(r);return n(i,{display:"flex",alignItems:"center",gridGap:4,style:{opacity:h?.5:1},children:[o(N,{checked:t,size:"small",color:"primary",disabled:h}),n(i,{children:[a?a.name:r,h&&" (External)"]})]})},getOptionLabel:r=>C.get(r)?.name??r,multipleValue:e,onChange:T,isLoading:w,placeholder:"Check Search",autoSelect:!1,testId:"check-search",getOptionSelected:(r,t)=>t.includes(r)})}),n(i,{className:l.selectArea,children:[j(e)&&o(i,{marginTop:1,marginBottom:1,textAlign:"center",children:o(O,{children:x??"Select checks from the dropdown above."})}),e.map(r=>{const t=C.get(r),a=t?!s.has(t.id):!1;return o(H,{removeCheck:p,check:t,isExternal:a},r)})]})]}),k&&o(A,{error:c,children:k})]})};export{V as CheckSelection};
1
+ import{jsxs as n,Fragment as B,jsx as o}from"react/jsx-runtime";import{makeStyles as E,Box as i,Checkbox as N,Typography as O,FormHelperText as A,Tooltip as L,Button as z}from"@material-ui/core";import R from"@material-ui/icons/CheckCircleOutlined";import P from"@material-ui/icons/InfoOutlined";import{isEmpty as j,last as D,difference as F}from"lodash";import{useContext as v,useMemo as g}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"@spotify/backstage-plugin-soundcheck-common";import{useGetChecks as G}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"react-hook-form";import"../ListboxVirtualized/ListboxVirtualized.esm.js";import{ControlledAutocomplete as M}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{CheckPreviewContext as S}from"./CheckPreviewContext.esm.js";const y=E(e=>({checkSelectCard:{padding:e.spacing(1,2),border:`1px solid ${e.palette.divider}`,borderRadius:e.spacing(.25),"&:hover":{cursor:"pointer"},display:"flex",alignItems:"center",background:e.palette.background.default,minWidth:200},selectedCard:{border:`1px solid ${e.palette.border}`},selectedIcon:{color:e.palette.text.secondary},checkCardInfo:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},selectArea:{display:"flex",flexDirection:"column",gap:e.spacing(.75)},removeButton:{margin:0,marginLeft:e.spacing(1),padding:0,color:e.palette.text.primary},wrapper:{padding:e.spacing(1),border:`1px solid ${e.palette.divider}`,borderRadius:e.spacing(1)},wrapperError:{border:`1px solid ${e.palette.error.main}`},checkSearch:{background:e.palette.background.paper}})),H=({check:e,removeCheck:f,isExternal:p})=>{const c=y(),{updateCheck:k,check:x}=v(S),d=e&&x?.id===e.id;return e?n(i,{className:`${c.checkSelectCard} ${d?c.selectedCard:""}`,onClick:()=>k(e),children:[o(R,{className:d?c.selectedIcon:"",fontSize:"small"}),o(i,{className:c.checkCardInfo,flex:1,marginLeft:2,children:e.name}),p&&o(i,{display:"flex",alignItems:"center",marginRight:1,children:o(L,{title:"Externally submitted check",placement:"top",arrow:!0,children:o(P,{fontSize:"small",color:"action",style:{cursor:"help"}})})}),!p&&o(z,{onClick:l=>{l.stopPropagation(),f(e.id)},className:c.removeButton,variant:"text",size:"small","aria-label":`remove check ${e.id}`,children:"Remove"})]}):null},V=({currentSectionCheckIds:e,addCheckToSelection:f,removeCheck:p,error:c,helperText:k,blankText:x,selectedChecks:d})=>{const l=y(),{data:b,isLoading:w}=G({ids:void 0}),{updateCheck:I}=v(S),u=g(()=>b?.edges.map(r=>r.node)??[],[b]),s=g(()=>new Set(u.map(r=>r.id)),[u]),m=g(()=>{const r=(d??[]).filter(t=>!s.has(t.id)).map(t=>({...t,description:t.description??""}));return[...u,...r]},[u,s,d]),C=g(()=>new Map(m.map(r=>[r.id,r])),[m]),$=g(()=>m.map(r=>r.id)??[],[m]),T=r=>{if(r.length>e.length){const t=D(r),a=m.find(h=>h.id===t);f(a),a&&I(a)}if(r.length<e.length){const t=F(e,r)?.[0];t&&p(t)}};return n(B,{children:[n(i,{className:`${l.wrapper} ${c?l.wrapperError:""}`,children:[o(i,{className:l.checkSearch,marginBottom:1,children:o(M,{multiple:!0,disableCloseOnSelect:!0,options:$,getOptionDisabled:r=>!s.has(r),renderOption:(r,{selected:t})=>{const a=C.get(r),h=!s.has(r);return n(i,{display:"flex",alignItems:"center",gridGap:4,style:{opacity:h?.5:1},children:[o(N,{checked:t,size:"small",color:"primary",disabled:h}),n(i,{children:[a?a.name:r,h&&" (External)"]})]})},getOptionLabel:r=>C.get(r)?.name??r,multipleValue:e,onChange:T,isLoading:w,placeholder:"Check Search",autoSelect:!1,testId:"check-search",getOptionSelected:(r,t)=>t.includes(r)})}),n(i,{className:l.selectArea,children:[j(e)&&o(i,{marginTop:1,marginBottom:1,textAlign:"center",children:o(O,{children:x??"Select checks from the dropdown above."})}),e.map(r=>{const t=C.get(r),a=t?!s.has(t.id):!1;return o(H,{removeCheck:p,check:t,isExternal:a},r)})]})]}),k&&o(A,{error:c,children:k})]})};export{V as CheckSelection};
2
2
  //# sourceMappingURL=CheckSelection.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as m,Fragment as W}from"react/jsx-runtime";import{useRouteRef as T,useApi as A}from"@backstage/core-plugin-api";import{entityPresentationApiRef as Y}from"@backstage/plugin-catalog-react";import{usePermission as _}from"@backstage/plugin-permission-react";import{HeaderPage as q,Flex as K,Container as Q,TableRoot as X,TableHeader as Z,Column as y,TableBody as $,TablePagination as ee}from"@backstage/ui";import{makeStyles as te}from"@material-ui/core";import{soundcheckCheckCreatePermission as re}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as oe,isEmpty as P}from"lodash";import{useState as k,useMemo as N}from"react";import{useSearchParams as ie}from"react-router-dom";import ne from"react-use/lib/useDebounce";import{soundcheckApiRef as ae}from"../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../hooks/graphqlKeys.esm.js";import{useGetChecks as se}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as me}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useProfileImages as ce}from"../../hooks/catalog/useProfileImages.esm.js";import{useImportChecks as pe}from"../../hooks/checks/useImportChecks.esm.js";import{useSearchNameOwner as le}from"../../hooks/useSearchNameOwner.esm.js";import{checkTemplatesRouteRef as fe,checkDetailsRouteRef as de}from"../../routes.esm.js";import{exportChecks as ge}from"../../utils/export.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as he}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import{EmptyStateNoChecks as ue}from"../EmptyState/EmptyStateNoChecks.esm.js";import{ImportExportPanelBUI as we}from"../ImportExportPanel/ImportExportPanelBUI.esm.js";import"../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{ListPageCustomActions as ye}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as Pe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import{useCheckActions as ke}from"../Menus/useCheckActions.esm.js";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"uuid";import"../CampaignPage/CampaignActionsContext.esm.js";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TableRowWithOwner as Ce}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const L=10,Re=["name","owner"],Se=({check:o,profileImageMap:a})=>{const c=T(de),i=ke(o);return t(Ce,{ownerEntityRef:o.ownerEntityRef??"",href:c({checkId:o.id}),profileImageSrc:a[o.ownerEntityRef??""],menuActions:i,name:o.name??o.id,description:o.description??"",cells:[]})},Ee=te(()=>({container:{marginBottom:"var(--bui-space-12)"}})),Ie=()=>{const o=Ee(),[a,c]=ie(),[i,z]=k(()=>a.get("search")??""),[d,B]=k(()=>a.get("sortDirection")==="descending"?"descending":"ascending"),[s,v]=k(()=>{const e=a.get("sort");return e&&Re.includes(e)?e:""}),{isLoading:p,data:C}=se({}),g=N(()=>C?.edges?.map(e=>e.node)??[],[C?.edges]),{loading:R,allowed:S}=_({permission:re}),U=T(fe),{profileImageMap:D}=ce(g.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef)),E=A(Y),h=le(g,i),l=N(()=>{if(!s)return h;const e=oe(h,r=>s==="owner"?r.ownerEntityRef?E.forEntity(r.ownerEntityRef).snapshot.primaryTitle:-1:s==="type"?r.type?r.type:"default":r?.name?.toLowerCase()??r.id.toLowerCase());return d==="descending"&&e.reverse(),e},[s,h,d,E]),{mutateAsync:H}=pe(),M=async e=>H(e),O=A(ae),F=async()=>{const e=await O.getChecks({orderAlphabetical:"asc"});return ge(e.edges.map(r=>r.node))},{paginatedItems:u,reset:I,paginationProps:n}=me({pageParam:"perPage",defaultPageSize:L,items:l});ne(()=>{I();const e=new URLSearchParams(a.toString());i?e.set("search",i):e.delete("search"),c(e,{replace:!0})},300,[i]);const V=({direction:e,column:r})=>{const w=String(r);v(w),B(e),I();const f=new URLSearchParams(a);w?f.set("sort",w):f.delete("sort"),f.set("sortDirection",e),c(f,{replace:!0})},j=p,b=!p&&P(u),G=!p&&!P(u),J=l.length>L;let x=null;return b&&(x=i?t(he,{title:"No checks found",body:"Your current search term did not return any checks. Please try a different search term."}):t(ue,{})),m(W,{children:[t(q,{customActions:m(K,{gap:"2",align:"center",children:[t(we,{resourceType:"check",disableImport:!R&&!S,disableExport:p||P(g),onImport:M,onExport:F}),t(ye,{searchValue:i,setSearchValue:z,canCreate:!R&&S,createHref:U()})]}),title:"Checks"}),m(Q,{className:o.container,children:[j&&t(Pe,{rowCount:10}),b&&x,G&&m(X,{onSortChange:V,sortDescriptor:{direction:d,column:s},children:[m(Z,{children:[t(y,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"82%"},children:"Name"}),t(y,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Check Owner"}),t(y,{id:"actions",style:{width:"3%"}})]}),t($,{children:u.map(e=>t(Se,{check:e,profileImageMap:D??{}},e.id))})]}),J&&t(ee,{totalCount:l.length,offset:n.offset,hasNextPage:n.offset+n.pageSize<(l.length??0),hasPreviousPage:n.offset>0,onNextPage:n.onNextPage,onPreviousPage:n.onPreviousPage,onPageSizeChange:n.onPageSizeChange,pageSize:n.pageSize})]})]})};export{Ie as ChecksListPageBUI};
1
+ import{jsx as t,jsxs as m,Fragment as W}from"react/jsx-runtime";import{useRouteRef as T,useApi as A}from"@backstage/core-plugin-api";import{entityPresentationApiRef as Y}from"@backstage/plugin-catalog-react";import{usePermission as _}from"@backstage/plugin-permission-react";import{HeaderPage as q,Flex as K,Container as Q,TableRoot as X,TableHeader as Z,Column as y,TableBody as $,TablePagination as ee}from"@backstage/ui";import{makeStyles as te}from"@material-ui/core";import{soundcheckCheckCreatePermission as re}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as oe,isEmpty as P}from"lodash";import{useState as k,useMemo as N}from"react";import{useSearchParams as ie}from"react-router-dom";import ne from"react-use/lib/useDebounce";import{soundcheckApiRef as ae}from"../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../hooks/graphqlKeys.esm.js";import{useGetChecks as se}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as me}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useProfileImages as ce}from"../../hooks/catalog/useProfileImages.esm.js";import{useImportChecks as pe}from"../../hooks/checks/useImportChecks.esm.js";import{useSearchNameOwner as le}from"../../hooks/useSearchNameOwner.esm.js";import{checkTemplatesRouteRef as fe,checkDetailsRouteRef as de}from"../../routes.esm.js";import{exportChecks as ge}from"../../utils/export.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as he}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import{EmptyStateNoChecks as ue}from"../EmptyState/EmptyStateNoChecks.esm.js";import{ImportExportPanelBUI as we}from"../ImportExportPanel/ImportExportPanelBUI.esm.js";import"../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{ListPageCustomActions as ye}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as Pe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import{useCheckActions as ke}from"../Menus/useCheckActions.esm.js";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"uuid";import"../CampaignPage/CampaignActionsContext.esm.js";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TableRowWithOwner as Ce}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const L=10,Re=["name","owner"],Se=({check:o,profileImageMap:a})=>{const c=T(de),i=ke(o);return t(Ce,{ownerEntityRef:o.ownerEntityRef??"",href:c({checkId:o.id}),profileImageSrc:a[o.ownerEntityRef??""],menuActions:i,name:o.name??o.id,description:o.description??"",cells:[]})},Ee=te(()=>({container:{marginBottom:"var(--bui-space-12)"}})),Ie=()=>{const o=Ee(),[a,c]=ie(),[i,z]=k(()=>a.get("search")??""),[d,B]=k(()=>a.get("sortDirection")==="descending"?"descending":"ascending"),[s,v]=k(()=>{const e=a.get("sort");return e&&Re.includes(e)?e:""}),{isLoading:p,data:C}=se({}),g=N(()=>C?.edges?.map(e=>e.node)??[],[C?.edges]),{loading:R,allowed:S}=_({permission:re}),U=T(fe),{profileImageMap:D}=ce(g.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef)),E=A(Y),h=le(g,i),l=N(()=>{if(!s)return h;const e=oe(h,r=>s==="owner"?r.ownerEntityRef?E.forEntity(r.ownerEntityRef).snapshot.primaryTitle:-1:s==="type"?r.type?r.type:"default":r?.name?.toLowerCase()??r.id.toLowerCase());return d==="descending"&&e.reverse(),e},[s,h,d,E]),{mutateAsync:H}=pe(),M=async e=>H(e),O=A(ae),F=async()=>{const e=await O.getChecks({orderAlphabetical:"asc"});return ge(e.edges.map(r=>r.node))},{paginatedItems:u,reset:I,paginationProps:n}=me({pageParam:"perPage",defaultPageSize:L,items:l});ne(()=>{I();const e=new URLSearchParams(a.toString());i?e.set("search",i):e.delete("search"),c(e,{replace:!0})},300,[i]);const V=({direction:e,column:r})=>{const w=String(r);v(w),B(e),I();const f=new URLSearchParams(a);w?f.set("sort",w):f.delete("sort"),f.set("sortDirection",e),c(f,{replace:!0})},j=p,b=!p&&P(u),G=!p&&!P(u),J=l.length>L;let x=null;return b&&(x=i?t(he,{title:"No checks found",body:"Your current search term did not return any checks. Please try a different search term."}):t(ue,{})),m(W,{children:[t(q,{customActions:m(K,{gap:"2",align:"center",children:[t(we,{resourceType:"check",disableImport:!R&&!S,disableExport:p||P(g),onImport:M,onExport:F}),t(ye,{searchValue:i,setSearchValue:z,canCreate:!R&&S,createHref:U()})]}),title:"Checks"}),m(Q,{className:o.container,children:[j&&t(Pe,{rowCount:10}),b&&x,G&&m(X,{onSortChange:V,sortDescriptor:{direction:d,column:s},children:[m(Z,{children:[t(y,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"82%"},children:"Name"}),t(y,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Check Owner"}),t(y,{id:"actions",style:{width:"3%"}})]}),t($,{children:u.map(e=>t(Se,{check:e,profileImageMap:D??{}},e.id))})]}),J&&t(ee,{totalCount:l.length,offset:n.offset,hasNextPage:n.offset+n.pageSize<(l.length??0),hasPreviousPage:n.offset>0,onNextPage:n.onNextPage,onPreviousPage:n.onPreviousPage,onPageSizeChange:n.onPageSizeChange,pageSize:n.pageSize})]})]})};export{Ie as ChecksListPageBUI};
2
2
  //# sourceMappingURL=ChecksListPageBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as p,Fragment as H}from"react/jsx-runtime";import{useRouteRef as O}from"@backstage/core-plugin-api";import{Row as V,CellText as T,Flex as W,Box as F,Text as _,TableRoot as q,TableHeader as J,Column as S,TableBody as K,TablePagination as Q}from"@backstage/ui";import{makeStyles as X}from"@material-ui/core";import{sortBy as Y}from"lodash";import{memo as N,useMemo as k,useState as z,useEffect as Z,useCallback as ee}from"react";import{CircularProgressbar as te}from"react-circular-progressbar";import{useNavigate as re}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"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as oe}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useSortSearchParams as ie}from"../../hooks/useSortSearchParams.esm.js";import{isCheckFailed as se}from"../../hooks/fixMe/useFixMe.esm.js";import"react-use/lib/useAsyncRetry";import{useFeatureFlag as D}from"../../hooks/useFeatureFlag.esm.js";import{trackCheckDetailsRouteRef as ne}from"../../routes.esm.js";import{getPercentage as M}from"../../utils/formatters.esm.js";import"../CheckStatusBar/CheckStatusBar.esm.js";import{CheckStatusBarBUI as ae}from"../CheckStatusBar/CheckStatusBarBUI.esm.js";import{CustomCell as ce}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as le}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import{FixMeCell as me}from"./FixMeCell.esm.js";const de=X(()=>({statusBar:{width:"45%"},customCell:{padding:"0 var(--bui-space-3)"},circularProgressbar:{width:"var(--bui-space-7)"}})),$=10,pe=["compliance","name","checks"],v=o=>pe.includes(o),ue=N(()=>t("svg",{width:"0",height:"0",style:{position:"absolute",visibility:"hidden"},children:t("defs",{children:p("linearGradient",{id:"progressGradient",x1:"1",y1:"0",x2:"0",y2:"1",children:[t("stop",{offset:"0%",stopColor:"var(--bui-fg-warning)"}),t("stop",{offset:"100%",stopColor:"var(--bui-fg-success)"})]})})})),E=(o,i)=>i?.find(a=>a.id===o),G=o=>o?o.numberOfEntities-o.notApplicable-o.exempt:0,ge=N(({trackId:o,check:i,checkStatuses:a,searchParams:u,showFixMeColumn:c})=>{const P=de(),n=O(ne),b=re(),l=E(i.id,a),{passPercent:g,applicableChecks:h}=k(()=>{const s=G(l);return{passPercent:M(l?.passed,s),applicableChecks:s}},[l]);return p(V,{onAction:()=>{const s=n({trackId:o,checkId:i.id});b(u?`${s}${u}`:s)},children:[t(T,{leadingIcon:p("div",{className:P.circularProgressbar,title:`${g}%`,children:[t(ue,{}),t(te,{value:g,strokeWidth:12,styles:{path:{stroke:"url(#progressGradient)"},trail:{stroke:'rgba(var("--bui-fg-secondary"), 0.25)'}}})]}),title:`${g}%`}),t(T,{title:i.name}),t(ce,{children:p(W,{align:"center",gap:"3",justify:"between",children:[t(F,{children:p(_,{color:"secondary",children:[l?.passed??0," of ",h," checks passing"]})}),t(F,{className:P.statusBar,children:t(ae,{status:l})})]})}),t(me,{status:l,check:i,isColumnVisible:c})]},i.id)}),he=({trackId:o,checks:i,checkStatuses:a,searchValue:u,levelOrdinal:c})=>{const{updateSortParams:P,searchParams:n}=ie(),b=D("portal"),l=D("portal-ai-fm"),g=n.get("level"),h=c===void 0||g!==null&&String(c)===g,[s,y]=z(()=>{if(h){const e=n.get("sortDirection");if(e==="ascending"||e==="descending")return e}return"descending"}),[f,B]=z(()=>{if(h){const e=n.get("sort");if(e&&v(e))return e}return"compliance"}),L=k(()=>{const e=new URLSearchParams(n.toString());e.set("sort",f),e.set("sortDirection",s),typeof c=="number"?e.set("level",String(c)):e.delete("level");const r=e.toString();return r?`?${r}`:""},[c,n,f,s]);Z(()=>{if(!h)return;const e=n.get("sortDirection");(e==="ascending"||e==="descending")&&y(e);const r=n.get("sort");r&&v(r)&&B(r)},[h,n]);const U=ee(({direction:e,column:r})=>{const d=String(r);v(d)&&B(d),y(e),P({sort:v(d)?d:"compliance",sortDirection:e,level:c})},[c,P]),I=k(()=>{if(!u?.length)return i??[];const e=u.toLowerCase();return i?.filter(({name:r})=>r.toLowerCase().includes(e))??[]},[i,u]),C=k(()=>{const e=Y([...I],r=>{const d=E(r.id,a);if(f==="compliance"){const A=G(d);return M(d?.passed,A)}return f==="checks"?d?.passed:r.name.toLowerCase()});return s==="descending"&&e.reverse(),e},[I,a,f,s]),{paginatedItems:w,paginationProps:m}=oe({pageParam:"perPage",defaultPageSize:$,items:C}),j=C.length>$,R=k(()=>{const e=new Map;return(a??[]).forEach(r=>e.set(r.id,r)),e},[a]),x=k(()=>!b||!l?!1:w.some(e=>{const r=R.get(e.id);return se(r)}),[b,l,w,R]);return C?.length?p(H,{children:[p(q,{onSortChange:U,sortDescriptor:{direction:s,column:f},children:[p(J,{children:[t(S,{id:"compliance",allowsSorting:!0,style:{width:"10%"},children:"Compliance"}),t(S,{id:"name",allowsSorting:!0,isRowHeader:!0,children:"Name"}),t(S,{id:"checks",allowsSorting:!0,style:{width:"25%"},children:"Checks"}),t(S,{id:"fix-me",style:{width:x?"23%":0,padding:x?void 0:0}})]}),t(K,{children:w.map(e=>t(ge,{trackId:o,check:e,checkStatuses:a,searchParams:L,showFixMeColumn:x},e.id))})]}),j&&t(Q,{totalCount:C.length,offset:m.offset,hasNextPage:m.offset+m.pageSize<(C.length??0),hasPreviousPage:m.offset>0,onNextPage:m.onNextPage,onPreviousPage:m.onPreviousPage,onPageSizeChange:m.onPageSizeChange,pageSize:m.pageSize})]}):t(le,{title:"No checks",body:"There are no checks found."})};export{he as ChecksTable};
1
+ import{jsx as r,jsxs as u,Fragment as K}from"react/jsx-runtime";import{useRouteRef as Q}from"@backstage/core-plugin-api";import{Row as W,CellText as T,Flex as _,Box as F,Text as q,TableRoot as J,TableHeader as X,Column as b,TableBody as Y,TablePagination as Z}from"@backstage/ui";import{makeStyles as ee}from"@material-ui/core";import{sortBy as te}from"lodash";import{memo as z,useMemo as g,useState as D,useEffect as re,useCallback as oe}from"react";import{CircularProgressbar as ie}from"react-circular-progressbar";import{useNavigate as se}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"@spotify/backstage-plugin-soundcheck-common";import{useChecks as ae}from"../../hooks/checks/useChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as ne}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useSortSearchParams as ce}from"../../hooks/useSortSearchParams.esm.js";import{isCheckFailed as le,isCheckAutofixable as me}from"../../hooks/fixMe/useFixMe.esm.js";import"react-use/lib/useAsyncRetry";import{useFeatureFlag as M}from"../../hooks/useFeatureFlag.esm.js";import{trackCheckDetailsRouteRef as de}from"../../routes.esm.js";import{getPercentage as $}from"../../utils/formatters.esm.js";import"../CheckStatusBar/CheckStatusBar.esm.js";import{CheckStatusBarBUI as pe}from"../CheckStatusBar/CheckStatusBarBUI.esm.js";import{CustomCell as ue}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as ge}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import{FixMeCell as he}from"./FixMeCell.esm.js";const fe=ee(()=>({statusBar:{width:"45%"},customCell:{padding:"0 var(--bui-space-3)"},circularProgressbar:{width:"var(--bui-space-7)"}})),E=10,ke=["compliance","name","checks"],v=o=>ke.includes(o),Ce=z(()=>r("svg",{width:"0",height:"0",style:{position:"absolute",visibility:"hidden"},children:r("defs",{children:u("linearGradient",{id:"progressGradient",x1:"1",y1:"0",x2:"0",y2:"1",children:[r("stop",{offset:"0%",stopColor:"var(--bui-fg-warning)"}),r("stop",{offset:"100%",stopColor:"var(--bui-fg-success)"})]})})})),G=(o,i)=>i?.find(c=>c.id===o),L=o=>o?o.numberOfEntities-o.notApplicable-o.exempt:0,Pe=z(({trackId:o,check:i,checkStatuses:c,searchParams:h,showFixMeColumn:l})=>{const P=fe(),n=Q(de),S=se(),m=G(i.id,c),{passPercent:f,applicableChecks:k}=g(()=>{const s=L(m);return{passPercent:$(m?.passed,s),applicableChecks:s}},[m]);return u(W,{onAction:()=>{const s=n({trackId:o,checkId:i.id});S(h?`${s}${h}`:s)},children:[r(T,{leadingIcon:u("div",{className:P.circularProgressbar,title:`${f}%`,children:[r(Ce,{}),r(ie,{value:f,strokeWidth:12,styles:{path:{stroke:"url(#progressGradient)"},trail:{stroke:'rgba(var("--bui-fg-secondary"), 0.25)'}}})]}),title:`${f}%`}),r(T,{title:i.name}),r(ue,{children:u(_,{align:"center",gap:"3",justify:"between",children:[r(F,{children:u(q,{color:"secondary",children:[m?.passed??0," of ",k," checks passing"]})}),r(F,{className:P.statusBar,children:r(pe,{status:m})})]})}),r(he,{status:m,check:i,isColumnVisible:l})]},i.id)}),Se=({trackId:o,checks:i,checkStatuses:c,searchValue:h,levelOrdinal:l})=>{const{updateSortParams:P,searchParams:n}=ce(),S=M("portal"),m=M("portal-ai-fm"),f=n.get("level"),k=l===void 0||f!==null&&String(l)===f,[s,x]=D(()=>{if(k){const e=n.get("sortDirection");if(e==="ascending"||e==="descending")return e}return"descending"}),[C,y]=D(()=>{if(k){const e=n.get("sort");if(e&&v(e))return e}return"compliance"}),U=g(()=>{const e=new URLSearchParams(n.toString());e.set("sort",C),e.set("sortDirection",s),typeof l=="number"?e.set("level",String(l)):e.delete("level");const t=e.toString();return t?`?${t}`:""},[l,n,C,s]);re(()=>{if(!k)return;const e=n.get("sortDirection");(e==="ascending"||e==="descending")&&x(e);const t=n.get("sort");t&&v(t)&&y(t)},[k,n]);const j=oe(({direction:e,column:t})=>{const a=String(t);v(a)&&y(a),x(e),P({sort:v(a)?a:"compliance",sortDirection:e,level:l})},[l,P]),B=g(()=>{if(!h?.length)return i??[];const e=h.toLowerCase();return i?.filter(({name:t})=>t.toLowerCase().includes(e))??[]},[i,h]),d=g(()=>{const e=te([...B],t=>{const a=G(t.id,c);if(C==="compliance"){const V=L(a);return $(a?.passed,V)}return C==="checks"?a?.passed:t.name.toLowerCase()});return s==="descending"&&e.reverse(),e},[B,c,C,s]),{paginatedItems:A,paginationProps:p}=ne({pageParam:"perPage",defaultPageSize:E,items:d}),H=d.length>E,I=g(()=>{const e=new Map;return(c??[]).forEach(t=>e.set(t.id,t)),e},[c]),O=g(()=>d.map(({id:e})=>e),[d]),N=ae(O),R=g(()=>{const e=new Map;return N.forEach(({data:t})=>{t&&e.set(t.id,t)}),e},[N]),w=g(()=>!S||!m?!1:d.some(({id:e})=>{const t=I.get(e),a=R.get(e);return le(t)&&me(a?.rule,a?.type)}),[S,m,d,I,R]);return d?.length?u(K,{children:[u(J,{onSortChange:j,sortDescriptor:{direction:s,column:C},children:[u(X,{children:[r(b,{id:"compliance",allowsSorting:!0,style:{width:"10%"},children:"Compliance"}),r(b,{id:"name",allowsSorting:!0,isRowHeader:!0,children:"Name"}),r(b,{id:"checks",allowsSorting:!0,style:{width:"25%"},children:"Checks"}),r(b,{id:"fix-me",style:{width:w?"25%":0,padding:w?void 0:0}})]}),r(Y,{children:A.map(e=>r(Pe,{trackId:o,check:e,checkStatuses:c,searchParams:U,showFixMeColumn:w},e.id))})]}),H&&r(Z,{totalCount:d.length,offset:p.offset,hasNextPage:p.offset+p.pageSize<(d.length??0),hasPreviousPage:p.offset>0,onNextPage:p.onNextPage,onPreviousPage:p.onPreviousPage,onPageSizeChange:p.onPageSizeChange,pageSize:p.pageSize})]}):r(ge,{title:"No checks",body:"There are no checks found."})};export{Se as ChecksTable};
2
2
  //# sourceMappingURL=ChecksTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as r}from"react/jsx-runtime";import{Flex as i,Card as C,CardBody as R,Text as o,Cell as b}from"@backstage/ui";import{RiShiningFill as F,RiGitMergeFill as x,RiGitPullRequestFill as k,RiErrorWarningFill as q}from"@remixicon/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"@spotify/backstage-plugin-soundcheck-common";import{useCheck as v}from"../../hooks/checks/useCheck.esm.js";import"react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useFixMe as M}from"../../hooks/fixMe/useFixMe.esm.js";import"react-use/lib/useAsyncRetry";import{CustomCell as P}from"../CustomCell/CustomCell.esm.js";import{FixMeButton as h}from"../FixMeButton/FixMeButton.esm.js";import{ProgressBar as w}from"../ProgressBar/ProgressBar.esm.js";import{ViewPullRequests as S}from"../ViewPullRequests/ViewPullRequests.esm.js";const l={merged:"#c054deff",opened:"var(--bui-fg-success)",failed:"var(--bui-fg-danger)"},j=({check:t,status:g,isColumnVisible:f=!0})=>{const{data:s}=v(t.id),{showFixMeButton:a,hasShift:d,pullRequests:n,openPullRequestsCount:m,mergedPullRequestsCount:c,failedPullRequestsCount:p,pullRequestsCount:y,href:u}=M({type:s?.type,rule:s?.rule,checkStatus:g,checkId:t.id,checkName:t.name});return f?e(P,{children:r(i,{align:"center",justify:"end",children:[a&&!n.length&&e(h,{hasShift:d,href:u}),a&&n.length>0&&e(C,{style:{margin:"var(--bui-space-2) 0 var(--bui-space-2)"},children:e(R,{children:r(i,{direction:"column",children:[r(i,{align:"center",gap:"2",children:[e(F,{size:12}),e(o,{weight:"bold",children:"Fixes in progress"})]}),r(i,{align:"center",gap:"2",children:[e(w,{segments:[{key:"merged",value:c,label:"Merged",color:l.merged},{key:"opened",value:m,label:"Opened",color:l.opened},{key:"failed",value:p,label:"Failed",color:l.failed}]}),r(o,{weight:"bold",children:[c,"/",y]})]}),r(i,{gap:"6",children:[r(i,{align:"center",gap:"1",children:[e(x,{size:16,color:l.merged}),r(o,{color:"secondary",children:[c," merged"]})]}),r(i,{align:"center",gap:"1",children:[e(k,{size:16,color:l.opened}),r(o,{color:"secondary",children:[m," open"]})]}),r(i,{align:"center",gap:"1",children:[e(q,{size:16,color:l.failed}),r(o,{color:"secondary",children:[p," failed"]})]})]}),r(i,{align:"center",gap:"1",justify:"between",children:[n.length>0&&e(S,{checkName:t.name,pullRequests:n}),e(h,{hasShift:d,href:u})]})]})})})]})}):e(b,{style:{padding:0}})};export{j as FixMeCell};
1
+ import{jsx as e,jsxs as l}from"react/jsx-runtime";import{Flex as o,Card as y,CardBody as R,Text as i,Cell as C}from"@backstage/ui";import{RiShiningFill as x,RiGitMergeFill as F,RiGitPullRequestFill as k,RiErrorWarningFill as S}from"@remixicon/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"@spotify/backstage-plugin-soundcheck-common";import{useCheck as q}from"../../hooks/checks/useCheck.esm.js";import"react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useFixMe as P}from"../../hooks/fixMe/useFixMe.esm.js";import"react-use/lib/useAsyncRetry";import{CustomCell as v}from"../CustomCell/CustomCell.esm.js";import{FixMeButton as h}from"../FixMeButton/FixMeButton.esm.js";import{ProgressBar as w}from"../ProgressBar/ProgressBar.esm.js";import{ViewPullRequests as M}from"../ViewPullRequests/ViewPullRequests.esm.js";import{PULL_REQUEST_STATUSES as r}from"./utils.esm.js";const j=({check:t,status:g,isColumnVisible:f=!0})=>{const{data:s}=q(t.id),{showFixMeButton:a,hasShift:m,pullRequests:n,openPullRequestsCount:d,mergedPullRequestsCount:c,failedPullRequestsCount:p,pullRequestsCount:b,href:u}=P({type:s?.type,rule:s?.rule,checkStatus:g,checkId:t.id,checkName:t.name});return f?e(v,{children:l(o,{align:"center",justify:"end",children:[a&&!n.length&&e(h,{hasShift:m,href:u}),a&&n.length>0&&e(y,{style:{margin:"var(--bui-space-2) 0 var(--bui-space-2)"},children:e(R,{children:l(o,{direction:"column",children:[l(o,{align:"center",gap:"2",children:[e(x,{size:12}),e(i,{weight:"bold",children:"Fixes in progress"})]}),l(o,{align:"center",gap:"2",children:[e(w,{segments:[{key:r.merged.label,value:c,label:r.merged.label,color:r.merged.color},{key:r.open.label,value:d,label:r.open.label,color:r.open.color},{key:r.closed.label,value:p,label:r.closed.label,color:r.closed.color}]}),l(i,{weight:"bold",children:[c,"/",b]})]}),l(o,{gap:"6",children:[l(o,{align:"center",gap:"1",children:[e(F,{size:16,color:r.merged.color}),l(i,{color:"secondary",children:[c," merged"]})]}),l(o,{align:"center",gap:"1",children:[e(k,{size:16,color:r.open.color}),l(i,{color:"secondary",children:[d," open"]})]}),l(o,{align:"center",gap:"1",children:[e(S,{size:16,color:r.closed.color}),l(i,{color:"secondary",children:[p," failed"]})]})]}),l(o,{align:"center",gap:"1",justify:"between",children:[n.length>0&&e(M,{checkName:t.name,pullRequests:n}),e(h,{hasShift:m,href:u})]})]})})})]})}):e(C,{style:{padding:0}})};export{j as FixMeCell};
2
2
  //# sourceMappingURL=FixMeCell.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as f}from"react/jsx-runtime";import{useTable as S,Table as g,CellText as n,Cell as s,Flex as R,Text as E,Button as w}from"@backstage/ui";import{makeStyles as x}from"@material-ui/core";import{REMEDY_STATUS as l}from"@spotify/backstage-plugin-soundcheck-common";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"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{getBranchName as T}from"../../hooks/fixMe/useFixMe.esm.js";import"react-use/lib/useAsyncRetry";const k=i=>{const o=i.lastIndexOf("/");return o!==-1?i.substring(o+1):i},D={[l.IN_PROGRESS]:"Open",[l.RESOLVED]:"Merged",[l.FAILED]:"Failed"},C={[l.IN_PROGRESS]:"var(--bui-fg-info)",[l.RESOLVED]:"var(--bui-fg-success)",[l.FAILED]:"var(--bui-fg-danger)"},O=x(()=>({statusDot:{width:8,height:8,borderRadius:"50%",flexShrink:0}})),I=({pullRequests:i,checkName:o})=>{const c=O(),m=i.map(t=>({...t,action:null})),d=T(o??""),p=t=>{const r=window.open(t,"_blank","noopener,noreferrer");r&&(r.opener=null)},u=[{id:"component",label:"Component",width:"25%",isRowHeader:!0,cell:({component:t,id:r})=>e(n,{title:t??k(r)})},{id:"title",label:"Title",width:"29%",cell:({title:t})=>e(n,{title:t})},{id:"status",label:"Status",width:"10%",cell:({status:t,remedyStatus:r})=>{const h=t??D[r]??r,a=C[r];return e(s,{children:f(R,{align:"center",gap:"2",children:[a&&e("div",{className:c.statusDot,style:{backgroundColor:a}}),e(E,{children:h})]})})}},{id:"branch",label:"Branch",width:"30%",cell:({branch:t})=>e(n,{title:t??d})},{id:"action",label:"Action",width:"6%",cell:({url:t})=>e(s,{children:e(w,{onClick:()=>{t&&p(t)},children:"View"})})}],{tableProps:b}=S({mode:"complete",data:m});return e(g,{columnConfig:u,...b})};export{I as PullRequestsTable};
1
+ import{jsx as e,jsxs as b}from"react/jsx-runtime";import{parseEntityRef as f}from"@backstage/catalog-model";import{useTable as w,Table as x,CellText as i,Cell as a,Flex as g,Text as k,Button as C}from"@backstage/ui";import{makeStyles as R}from"@material-ui/core";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"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{getBranchName as T}from"../../hooks/fixMe/useFixMe.esm.js";import"react-use/lib/useAsyncRetry";import{getPullRequestStatus as S}from"./utils.esm.js";const y=o=>{const r=o.lastIndexOf("/");return r!==-1?o.substring(r+1):o},q=R(()=>({statusDot:{width:8,height:8,borderRadius:"50%",flexShrink:0}})),B=({pullRequests:o,checkName:r})=>{const m=q(),s=o.map(t=>({...t,action:null})),c=T(r??""),p=t=>{const l=window.open(t,"_blank","noopener,noreferrer");l&&(l.opener=null)},d=[{id:"component",label:"Component",width:"25%",isRowHeader:!0,cell:({component:t,id:l})=>e(i,{title:t?f(t).name:y(l)})},{id:"title",label:"Title",width:"29%",cell:({title:t})=>e(i,{title:t})},{id:"status",label:"Status",width:"10%",cell:({status:t,remedyStatus:l})=>{const{label:h,color:n}=S(t,l);return e(a,{children:b(g,{align:"center",gap:"2",children:[n&&e("div",{className:m.statusDot,style:{backgroundColor:n}}),e(k,{children:h})]})})}},{id:"branch",label:"Branch",width:"30%",cell:({branch:t})=>e(i,{title:t??c})},{id:"action",label:"Action",width:"6%",cell:({url:t})=>e(a,{children:e(C,{onClick:()=>{t&&p(t)},children:"View"})})}],{tableProps:u}=w({mode:"complete",data:s});return e(x,{columnConfig:d,...u})};export{B as PullRequestsTable};
2
2
  //# sourceMappingURL=PullRequestsTable.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{REMEDY_STATUS as o}from"@spotify/backstage-plugin-soundcheck-common";const E={OPEN:"open",MERGED:"merged",CLOSED:"closed",CREATING:"creating"},l={[E.CREATING]:{label:"Creating",color:"var(--bui-fg-success)"},[E.OPEN]:{label:"Open",color:"var(--bui-fg-success)"},[E.MERGED]:{label:"Merged",color:"#c054deff"},[E.CLOSED]:{label:"Failed",color:"var(--bui-fg-danger)"}},c={[o.IN_PROGRESS]:E.OPEN,[o.RESOLVED]:E.MERGED,[o.FAILED]:E.CLOSED},s=e=>e in l,t=(e,r)=>{const S=e&&s(e)?e:c[r??""]??E.OPEN;return l[S]};export{E as PULL_REQUEST_STATUS,l as PULL_REQUEST_STATUSES,t as getPullRequestStatus};
2
+ //# sourceMappingURL=utils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as r,Fragment as k}from"react/jsx-runtime";import{useRouteRef as v}from"@backstage/core-plugin-api";import{usePermission as R}from"@backstage/plugin-permission-react";import{Box as n,Text as c,Grid as O,Flex as P,Button as w,HeaderPage as Y,Container as J}from"@backstage/ui";import{makeStyles as K}from"@material-ui/core";import{soundcheckCollectorReadPermission as Q,soundcheckCollectorUpdatePermission as X,parseFactRef as Z,asArray as _}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as ee}from"lodash";import{useMemo as te,useCallback as oe,useEffect as ie}from"react";import{useParams as re,useNavigate as ne}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 ae}from"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useGetCollectors as se}from"../../hooks/collectors/useGetCollectors.esm.js";import{useDeleteCollectorConfig as le}from"../../hooks/collectors/useDeleteCollectorConfig.esm.js";import{useLCPReporting as ce}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as me}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationEditRouteRef as de,integrationsPageRouteRef as pe}from"../../routes.esm.js";import{mapRuleToExpression as fe}from"../CheckForm/utils/checkFormUtils.esm.js";import{ConfigurableCollectorIds as ge}from"../CollectorsPage/CollectorListPage/CollectorListPageDeprecated.esm.js";import{DocLinkButton as he}from"../DocLinkButton/DocLinkButton.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as f}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import{FactExplorerProvider as ue}from"../FactExplorer/FactExplorerContext.esm.js";import{LoadingIndicator as Ce}from"../LoadingIndicator/LoadingIndicator.esm.js";import{CollectorFactTableBUI as be}from"./CollectorFactTableBUI.esm.js";import{DependantCheckCard as ye}from"./DependantCheckCard.esm.js";const Ie=K(()=>({container:{marginBottom:"var(--bui-space-12)"}})),ke=({id:A,integrations:N})=>{const U=Ie(),L=re(),o=A??L.integrationId,g=te(()=>({routeName:"soundcheck-integration-details",additionalAttributes:{integrationId:o||""}}),[o]),{reportContentLoaded:h}=me(g),{reporter:x}=ce(g),{data:E,isLoading:B}=se([o??""]),{loading:D,allowed:F}=R({permission:Q}),{loading:u,allowed:C}=R({permission:X}),{showModal:b}=ae(),{mutate:y,isPending:m}=le(o??""),T=oe(async()=>{!await b({title:"Are you sure you want to delete stored UI config?",message:"This action cannot be undone and will remove any stored configs for this integration from the database."})||m||y()},[y,m,b]),t=E?.[0],d=B||u||D,$=N?.map(p=>p.integrationId)??ge,M=!u&&C&&t?.isEditable&&t?.isConfigurable&&$.includes(o??""),S=ne(),W=v(de),G=v(pe),j=t?.hasUIConfig;let a;if(d)a=e(Ce,{});else if(!F)a=e(f,{title:"Cannot view Integration",body:`User does not have permission to view Integration id: ${o}`});else if(!t)a=e(f,{title:"Integration not found",body:`There is no integration with the requested id: ${o}.`});else{const p=r(n,{mb:"6",children:[e(n,{mb:"3",children:e(c,{variant:"title-small",style:{fontWeight:"bold"},children:"Facts"})}),e(n,{children:e(be,{facts:t.factNames.map(i=>{const l=(s=>{try{return Z(s).name}catch{return s}})(i),H=Array.isArray(t.config)?t.config[0]?.collects:t.config?.collects,V=_(H).find(s=>s?.type===l||s?.factName===l);return{factRef:`${o}:default/${l}`,factName:l,config:V,uiConfig:!!t.hasUIConfig,parentConfig:t.config}})})})]}),q=r(n,{mb:"6",children:[e(n,{mb:"3",children:e(c,{variant:"title-small",style:{fontWeight:"bold"},children:"Dependant Checks"})}),ee(t.dependentChecks)?e(f,{title:"No dependent checks",body:"No dependent checks found."}):e(O.Root,{columns:"5",gap:"3",children:t.dependentChecks.map(i=>e(ye,{id:i.id,title:i.name??i.id,description:i.description??void 0,rules:fe(i.rule),integrationId:o,hasSchedule:i.schedule},i.id))})]}),z=C&&j&&r(n,{mb:"6",children:[e(n,{mb:"3",children:e(c,{variant:"title-small",style:{fontWeight:"bold"},children:"Admin Actions"})}),t.hasUIConfig&&r(P,{align:"center",gap:"2",children:[e(w,{isDisabled:m,size:"small",variant:"secondary",onClick:T,children:"Remove Config"}),e(c,{color:"secondary",children:"Revert to using YAML to config this integration by deleting the stored UI config from the database."})]})]});a=r(k,{children:[p,q,z]})}const I=x?.getLCPValue();return ie(()=>{d||h({lcp:I})},[d,h,I]),r(k,{children:[e(Y,{title:t?.name??t?.id??"Integration",breadcrumbs:[{label:"Integrations",href:G()}],customActions:r(P,{align:"center",children:[M?e(w,{onClick:()=>S(W({integrationId:o??""})),children:"Configure"}):void 0,e(he,{href:`https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/${t?.id}`})]})}),e(J,{className:U.container,children:e(ue,{hidePath:!0,children:a})})]})};export{ke as CollectorDetailsPageBUI};
1
+ import{jsx as e,jsxs as r,Fragment as k}from"react/jsx-runtime";import{useRouteRef as v}from"@backstage/core-plugin-api";import{usePermission as R}from"@backstage/plugin-permission-react";import{Box as n,Text as c,Grid as O,Flex as P,Button as w,HeaderPage as Y,Container as J}from"@backstage/ui";import{makeStyles as K}from"@material-ui/core";import{soundcheckCollectorReadPermission as Q,soundcheckCollectorUpdatePermission as X,parseFactRef as Z,asArray as _}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as ee}from"lodash";import{useMemo as te,useCallback as oe,useEffect as ie}from"react";import{useParams as re,useNavigate as ne}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 ae}from"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useGetCollectors as se}from"../../hooks/collectors/useGetCollectors.esm.js";import{useDeleteCollectorConfig as le}from"../../hooks/collectors/useDeleteCollectorConfig.esm.js";import{useLCPReporting as ce}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as me}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationEditRouteRef as de,integrationsPageRouteRef as pe}from"../../routes.esm.js";import{mapRuleToExpression as fe}from"../CheckForm/utils/checkFormUtils.esm.js";import{ConfigurableCollectorIds as ge}from"../CollectorsPage/CollectorListPage/CollectorListPageDeprecated.esm.js";import{DocLinkButton as he}from"../DocLinkButton/DocLinkButton.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as f}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import{FactExplorerProvider as ue}from"../FactExplorer/FactExplorerContext.esm.js";import{LoadingIndicator as Ce}from"../LoadingIndicator/LoadingIndicator.esm.js";import{CollectorFactTableBUI as be}from"./CollectorFactTableBUI.esm.js";import{DependantCheckCard as ye}from"./DependantCheckCard.esm.js";const Ie=K(()=>({container:{marginBottom:"var(--bui-space-12)"}})),ke=({id:A,integrations:N})=>{const U=Ie(),L=re(),o=A??L.integrationId,g=te(()=>({routeName:"soundcheck-integration-details",additionalAttributes:{integrationId:o||""}}),[o]),{reportContentLoaded:h}=me(g),{reporter:x}=ce(g),{data:E,isLoading:B}=se([o??""]),{loading:D,allowed:F}=R({permission:Q}),{loading:u,allowed:C}=R({permission:X}),{showModal:b}=ae(),{mutate:y,isPending:m}=le(o??""),T=oe(async()=>{!await b({title:"Are you sure you want to delete stored UI config?",message:"This action cannot be undone and will remove any stored configs for this integration from the database."})||m||y()},[y,m,b]),t=E?.[0],d=B||u||D,$=N?.map(p=>p.integrationId)??ge,M=!u&&C&&t?.isEditable&&t?.isConfigurable&&$.includes(o??""),S=ne(),W=v(de),G=v(pe),j=t?.hasUIConfig;let a;if(d)a=e(Ce,{});else if(!F)a=e(f,{title:"Cannot view Integration",body:`User does not have permission to view Integration id: ${o}`});else if(!t)a=e(f,{title:"Integration not found",body:`There is no integration with the requested id: ${o}.`});else{const p=r(n,{mb:"6",children:[e(n,{mb:"3",children:e(c,{variant:"title-small",style:{fontWeight:"bold"},children:"Facts"})}),e(n,{children:e(be,{facts:t.factNames.map(i=>{const l=(s=>{try{return Z(s).name}catch{return s}})(i),H=Array.isArray(t.config)?t.config[0]?.collects:t.config?.collects,V=_(H).find(s=>s?.type===l||s?.factName===l);return{factRef:`${o}:default/${l}`,factName:l,config:V,uiConfig:!!t.hasUIConfig,parentConfig:t.config}})})})]}),q=r(n,{mb:"6",children:[e(n,{mb:"3",children:e(c,{variant:"title-small",style:{fontWeight:"bold"},children:"Dependant Checks"})}),ee(t.dependentChecks)?e(f,{title:"No dependent checks",body:"No dependent checks found."}):e(O.Root,{columns:"5",gap:"3",children:t.dependentChecks.map(i=>e(ye,{id:i.id,title:i.name??i.id,description:i.description??void 0,rules:fe(i.rule),integrationId:o,hasSchedule:i.schedule},i.id))})]}),z=C&&j&&r(n,{mb:"6",children:[e(n,{mb:"3",children:e(c,{variant:"title-small",style:{fontWeight:"bold"},children:"Admin Actions"})}),t.hasUIConfig&&r(P,{align:"center",gap:"2",children:[e(w,{isDisabled:m,size:"small",variant:"secondary",onClick:T,children:"Remove Config"}),e(c,{color:"secondary",children:"Revert to using YAML to config this integration by deleting the stored UI config from the database."})]})]});a=r(k,{children:[p,q,z]})}const I=x?.getLCPValue();return ie(()=>{d||h({lcp:I})},[d,h,I]),r(k,{children:[e(Y,{title:t?.name??t?.id??"Integration",breadcrumbs:[{label:"Integrations",href:G()}],customActions:r(P,{align:"center",children:[M?e(w,{onClick:()=>S(W({integrationId:o??""})),children:"Configure"}):void 0,e(he,{href:`https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/${t?.id}`})]})}),e(J,{className:U.container,children:e(ue,{hidePath:!0,children:a})})]})};export{ke as CollectorDetailsPageBUI};
2
2
  //# sourceMappingURL=CollectorDetailsPageBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import"react/jsx-runtime";import"@backstage/core-components";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import{makeStyles as i}from"@material-ui/core";import"@material-ui/lab";import"@spotify/backstage-plugin-soundcheck-common";import"lodash";import"react";import"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"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import"../../routes.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";import"../CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import"../FactExplorer/FactExplorerContext.esm.js";import"../LoadingIndicator/LoadingIndicator.esm.js";import"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import"./CollectorFactTable.esm.js";i(r=>({card:{width:360},cardDescription:{"& p":{marginTop:r.spacing(.5),marginBottom:r.spacing(.5)}},cardContent:{flexGrow:1}}));
1
+ import"react/jsx-runtime";import"@backstage/core-components";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import{makeStyles as i}from"@material-ui/core";import"@material-ui/lab";import"@spotify/backstage-plugin-soundcheck-common";import"lodash";import"react";import"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"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import"../../routes.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";import"../CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import"../FactExplorer/FactExplorerContext.esm.js";import"../LoadingIndicator/LoadingIndicator.esm.js";import"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import"./CollectorFactTable.esm.js";i(r=>({card:{width:360},cardDescription:{"& p":{marginTop:r.spacing(.5),marginBottom:r.spacing(.5)}},cardContent:{flexGrow:1}}));
2
2
  //# sourceMappingURL=CollectorDetailsPageDeprecated.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as u,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as k}from"@hookform/resolvers/zod";import{makeStyles as B,Paper as A,Divider as n}from"@material-ui/core";import{useCallback as F}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 I}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as W}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useUpdateCollectorConfig as q}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as z}from"../../../../routes.esm.js";import{FooterButtons as w}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as x}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{defaultCollectorOption as l}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as j,confirmationModalContent as M}from"../Common/utils.esm.js";import{NumberOfDaysComponent as b}from"./NumberOfDaysComponent.esm.js";import{NumberOfWorkItemsComponent as T}from"./NumberOfWorkItemsComponent.esm.js";import{mapConfigToAzureDevOpsCollectorConfig as H,defaultAzureDevOpsConfig as U,numberOfDaysCollectorConfig as d,numberOfWorkItemsCollectorConfig as V,mapAzureDevOpsCollectorConfigToConfig as L}from"./utils.esm.js";import{azureDevOpsCollectorFormSchema as E}from"./validation.esm.js";const G=B(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),J=({disabled:t,selectedCollector:i})=>{const C=F(async(o,...s)=>{const a={enabled:!1,collectors:[]},P={repositoryDetails:o.repositoryDetails.enabled?o.repositoryDetails:l(),branchPolicies:o.branchPolicies.enabled?o.branchPolicies:l(),branchStatus:o.branchStatus.enabled?o.branchStatus:l(),numberOfBranches:o.numberOfBranches.enabled?o.numberOfBranches:a,numberOfActivePullRequests:o.numberOfActivePullRequests.enabled?o.numberOfActivePullRequests:a,numberOfWorkItems:o.numberOfWorkItems.enabled?o.numberOfWorkItems:a};return k(E)(P,...s)},[]),m=N({defaultValues:i?H(i.config):U(),mode:"onChange",resolver:C}),{formState:{isValid:h},handleSubmit:c}=m,p=G(),g=!h,{mutateAsync:O}=q(),[y,v]=W(z),{showModal:D}=I(),f=async o=>{if(!await D(M(i)))return;const s=L(o);await O({collectorId:i.id,config:s})&&v()};return x(j(i)),u(S,{children:[e(A,{className:p.section,children:e(R,{...m,children:u("form",{onSubmit:c(f),children:[e(r,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"branchPolicies",label:"Branch Policies",description:"Collects branch policies information from an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"branchStatus",label:"Branch Status",description:"Collects the latest branch status information from an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"numberOfBranches",label:"Number Of Branches",description:"Collects the number of branches from an entity's repository.",disabled:t,FactDetailsComponent:b,multipleCollectors:{enable:!0,defaultConfig:d()}}),e(n,{}),e(r,{name:"numberOfActivePullRequests",label:"Number Of Active Pull Requests",description:"Collects the number of active pull requests from an entity's repository.",disabled:t,FactDetailsComponent:b,multipleCollectors:{enable:!0,defaultConfig:d()}}),e(n,{}),e(r,{name:"numberOfWorkItems",label:"Number Of Work Items",description:"Collects the number of work items from an entity's project.",disabled:t,FactDetailsComponent:T,multipleCollectors:{enable:!0,defaultConfig:V()}})]})})}),e("div",{className:p.section,children:e(w,{onCancel:y,saveButtonText:"Save",isLoading:!1,onSave:c(f),disableSave:g})})]})};export{J as AzureDevOpsConfigurator};
1
+ import{jsxs as u,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as k}from"@hookform/resolvers/zod";import{makeStyles as B,Paper as A,Divider as n}from"@material-ui/core";import{useCallback as F}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 I}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as W}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useUpdateCollectorConfig as q}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as z}from"../../../../routes.esm.js";import{FooterButtons as w}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as x}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{defaultCollectorOption as l}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as j,confirmationModalContent as M}from"../Common/utils.esm.js";import{NumberOfDaysComponent as b}from"./NumberOfDaysComponent.esm.js";import{NumberOfWorkItemsComponent as T}from"./NumberOfWorkItemsComponent.esm.js";import{mapConfigToAzureDevOpsCollectorConfig as H,defaultAzureDevOpsConfig as U,numberOfDaysCollectorConfig as d,numberOfWorkItemsCollectorConfig as V,mapAzureDevOpsCollectorConfigToConfig as L}from"./utils.esm.js";import{azureDevOpsCollectorFormSchema as E}from"./validation.esm.js";const G=B(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),J=({disabled:t,selectedCollector:i})=>{const C=F(async(o,...s)=>{const a={enabled:!1,collectors:[]},P={repositoryDetails:o.repositoryDetails.enabled?o.repositoryDetails:l(),branchPolicies:o.branchPolicies.enabled?o.branchPolicies:l(),branchStatus:o.branchStatus.enabled?o.branchStatus:l(),numberOfBranches:o.numberOfBranches.enabled?o.numberOfBranches:a,numberOfActivePullRequests:o.numberOfActivePullRequests.enabled?o.numberOfActivePullRequests:a,numberOfWorkItems:o.numberOfWorkItems.enabled?o.numberOfWorkItems:a};return k(E)(P,...s)},[]),m=N({defaultValues:i?H(i.config):U(),mode:"onChange",resolver:C}),{formState:{isValid:h},handleSubmit:c}=m,p=G(),g=!h,{mutateAsync:O}=q(),[y,v]=W(z),{showModal:D}=I(),f=async o=>{if(!await D(M(i)))return;const s=L(o);await O({collectorId:i.id,config:s})&&v()};return x(j(i)),u(S,{children:[e(A,{className:p.section,children:e(R,{...m,children:u("form",{onSubmit:c(f),children:[e(r,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"branchPolicies",label:"Branch Policies",description:"Collects branch policies information from an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"branchStatus",label:"Branch Status",description:"Collects the latest branch status information from an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"numberOfBranches",label:"Number Of Branches",description:"Collects the number of branches from an entity's repository.",disabled:t,FactDetailsComponent:b,multipleCollectors:{enable:!0,defaultConfig:d()}}),e(n,{}),e(r,{name:"numberOfActivePullRequests",label:"Number Of Active Pull Requests",description:"Collects the number of active pull requests from an entity's repository.",disabled:t,FactDetailsComponent:b,multipleCollectors:{enable:!0,defaultConfig:d()}}),e(n,{}),e(r,{name:"numberOfWorkItems",label:"Number Of Work Items",description:"Collects the number of work items from an entity's project.",disabled:t,FactDetailsComponent:T,multipleCollectors:{enable:!0,defaultConfig:V()}})]})})}),e("div",{className:p.section,children:e(w,{onCancel:y,saveButtonText:"Save",isLoading:!1,onSave:c(f),disableSave:g})})]})};export{J as AzureDevOpsConfigurator};
2
2
  //# sourceMappingURL=AzureDevOpsConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as h,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as B}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as F}from"@material-ui/core";import{useCallback as Q}from"react";import{useForm as S,FormProvider as q}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 N}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as k}from"../../../../routes.esm.js";import{FooterButtons as I}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as M}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as P}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as R}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as T,confirmationModalContent as U}from"../Common/utils.esm.js";import{QueryFactDetailsComponent as j}from"./QueryFactDetailsComponent.esm.js";import{mapConfigToBigQueryCollectorConfig as A,defaultBigQueryConfig as D,queryCollectorConfig as H,mapBigQueryCollectorConfigToConfig as V}from"./utils.esm.js";import{bigQueryCollectorFormSchema as z}from"./validation.esm.js";const L=v(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),O=({disabled:e,selectedCollector:r})=>{const c=Q(async(t,...i)=>{const C={enabled:!1,collectors:[]},y={query:t.query.enabled?t.query:C};return B(z)(y,...i)},[]),m=S({defaultValues:r?A(r.config):D(),mode:"onChange",resolver:c}),{formState:{isValid:s},handleSubmit:a}=m,n=L(),p=!s,{mutateAsync:f}=x(),[d,u]=w(k),{showModal:g}=N(),l=async t=>{if(!await g(U(r)))return;const i=V(t);await f({collectorId:r.id,config:i})&&u()};return M(T(r)),h(b,{children:[o(R,{collectorName:"Bigquery",collectorId:r.id,hasNonUIOptions:!0}),o(F,{className:n.section,children:o(q,{...m,children:o("form",{onSubmit:a(l),children:o(P,{name:"query",label:"Query",description:"Collects data from BigQuery.",disabled:e,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:H()}})})})}),o("div",{className:n.section,children:o(I,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:a(l),disableSave:p})})]})};export{O as BigQueryConfigurator};
1
+ import{jsxs as h,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as B}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as F}from"@material-ui/core";import{useCallback as Q}from"react";import{useForm as S,FormProvider as q}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 N}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as k}from"../../../../routes.esm.js";import{FooterButtons as I}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as M}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as P}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as R}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as T,confirmationModalContent as U}from"../Common/utils.esm.js";import{QueryFactDetailsComponent as j}from"./QueryFactDetailsComponent.esm.js";import{mapConfigToBigQueryCollectorConfig as A,defaultBigQueryConfig as D,queryCollectorConfig as H,mapBigQueryCollectorConfigToConfig as V}from"./utils.esm.js";import{bigQueryCollectorFormSchema as z}from"./validation.esm.js";const L=v(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),O=({disabled:t,selectedCollector:r})=>{const c=Q(async(e,...i)=>{const C={enabled:!1,collectors:[]},y={query:e.query.enabled?e.query:C};return B(z)(y,...i)},[]),m=S({defaultValues:r?A(r.config):D(),mode:"onChange",resolver:c}),{formState:{isValid:s},handleSubmit:a}=m,n=L(),p=!s,{mutateAsync:f}=x(),[d,u]=w(k),{showModal:g}=N(),l=async e=>{if(!await g(U(r)))return;const i=V(e);await f({collectorId:r.id,config:i})&&u()};return M(T(r)),h(b,{children:[o(R,{collectorName:"Bigquery",collectorId:r.id,hasNonUIOptions:!0}),o(F,{className:n.section,children:o(q,{...m,children:o("form",{onSubmit:a(l),children:o(P,{name:"query",label:"Query",description:"Collects data from BigQuery.",disabled:t,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:H()}})})})}),o("div",{className:n.section,children:o(I,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:a(l),disableSave:p})})]})};export{O as BigQueryConfigurator};
2
2
  //# sourceMappingURL=BigQueryConfigurator.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 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"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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(),[p,c]=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})&&c()};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:p,saveButtonText:"Save",isLoading:!1,onSave:e(a),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"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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(),[p,c]=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})&&c()};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:p,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"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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:p}=L(),[d,f]=F(O),{showModal:g}=N(),m=async C=>{if(!await g(I(o)))return;const u=T(C);await p({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:d,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"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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};
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"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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 i=y({defaultValues:r?M(r.config):P(),mode:"onChange"}),{formState:{errors:n},handleSubmit:e}=i,a=k(),s=!!n.datasetSchema,{mutateAsync:p}=D(),[c,l]=b(B),{showModal:f}=R(),m=async d=>{if(!await f(T(r)))return;const g=j(d);await p({collectorId:r.id,config:g})&&l()};return w(N(r)),C(u,{children:[o(S,{className:a.form,children:o(v,{...i,children:o("form",{onSubmit:e(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:c,saveButtonText:"Save",isLoading:!1,onSave:e(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"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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,m=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(),c=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:m.form,children:e(R,{...s,children:p("form",{onSubmit:l(c),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:m.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(c),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"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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,m=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(),c=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:m.form,children:e(R,{...s,children:p("form",{onSubmit:l(c),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:m.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(c),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"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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 e}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:i})=>{const a=P({defaultValues:i?N(i.config):T(),mode:"onChange"}),{formState:{errors:r},handleSubmit:n}=a,m=k(),p=!!r.branchProtections||!!r.projectDetails||!!r.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(i)))return;const b=M(C);await d({collectorId:i.id,config:b})&&g()};return D(G(i)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(e,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(e,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(e,{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"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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 e}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:i})=>{const a=P({defaultValues:i?N(i.config):T(),mode:"onChange"}),{formState:{errors:r},handleSubmit:n}=a,m=k(),p=!!r.branchProtections||!!r.projectDetails||!!r.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(i)))return;const b=M(C);await d({collectorId:i.id,config:b})&&g()};return D(G(i)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(e,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(e,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(e,{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"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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 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"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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};
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"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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:t})=>{const a=y({defaultValues:t?j(t.config):k(),mode:"onChange"}),{formState:{errors:e},handleSubmit:c}=a,n=H(),p=!!e.entity||!!e.entitySearch||!!e.policiesSearch,{mutateAsync:d}=F(),[f,g]=B(x),{showModal:C}=v(),l=async h=>{if(!await C(T(t)))return;const N=A(h);await d({collectorId:t.id,config:N})&&g()};E(M(t));const u=!t.config?.apiKey;return m(w,{children:[o(I,{collectorName:"NewRelic",collectorId:t.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};
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"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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:t})=>{const a=y({defaultValues:t?j(t.config):k(),mode:"onChange"}),{formState:{errors:e},handleSubmit:c}=a,n=H(),p=!!e.entity||!!e.entitySearch||!!e.policiesSearch,{mutateAsync:d}=F(),[f,g]=B(x),{showModal:C}=v(),l=async h=>{if(!await C(T(t)))return;const N=A(h);await d({collectorId:t.id,config:N})&&g()};E(M(t));const u=!t.config?.apiKey;return m(w,{children:[o(I,{collectorName:"NewRelic",collectorId:t.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"react-use/lib/useAsync";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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"react-use/lib/useAsync";import"../../../ChecksTable/utils.esm.js";import"../../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";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