@spotify/backstage-plugin-soundcheck 0.19.2 → 0.19.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/config.d.ts +54 -1
- package/dist/api.esm.js +1 -1
- package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignPage.esm.js +2 -0
- package/dist/components/CampaignPage/CampaignPageBUI.esm.js +2 -0
- package/dist/components/CampaignPage/CampaignPageDeprecated.esm.js +2 -0
- package/dist/components/{CampaignInsightsPage → CampaignPage}/CampaignStatusTile.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/CampaignListPageDeprecated.esm.js +2 -0
- package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +2 -0
- package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
- package/dist/components/Cards/CurrentStatusCard/CurrentStatusCard.esm.js +2 -0
- package/dist/components/Cards/CurrentStatusCard/CurrentStatusCardRow.esm.js +2 -0
- package/dist/components/Cards/DescriptionCard/DescriptionCard.esm.js +2 -0
- package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistComponent.esm.js +1 -1
- package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
- package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
- package/dist/components/CheckPage/utils.esm.js +1 -1
- package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +1 -1
- package/dist/components/CheckStatusBar/CheckStatusBarBUI.esm.js +2 -0
- package/dist/components/CheckStatusBar/CheckStatusBarCell.esm.js +2 -0
- package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js +2 -0
- package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +2 -0
- package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
- package/dist/components/ChecksTable/ChecksTable.esm.js +2 -0
- package/dist/components/ChipSelector/ChipSelector.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorFactTable.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/IssuesFactDetailsComponent.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/validation.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
- package/dist/components/CustomCell/CustomCell.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateBUI.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateNoCampaigns.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateNoChecks.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +2 -0
- package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
- package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
- package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
- package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
- package/dist/components/FilterSidebar/FilterSidebar.esm.js +1 -1
- package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
- package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +1 -1
- package/dist/components/FilterSidebar/util.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/useLabelValueOptions.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +1 -1
- package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
- package/dist/components/LevelsTable/CheckRowContent.esm.js +1 -1
- package/dist/components/LevelsTable/LevelsTable.esm.js +1 -1
- package/dist/components/ListPageCustomActions/ListPageCustomActions.esm.js +2 -0
- package/dist/components/LoadingTableSkeleton/LoadingTableSkeleton.esm.js +2 -0
- package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
- package/dist/components/PageCustomActions/PageCustomActions.esm.js +2 -0
- package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -2
- package/dist/components/Router.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
- package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
- package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
- package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +2 -0
- package/dist/components/TeamStatusBar/TeamStatusBar.esm.js +1 -1
- package/dist/components/TechInsights/FilterControls.esm.js +1 -1
- package/dist/components/TechInsights/SummaryTiles.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsPage.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsTableView.esm.js +1 -1
- package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +1 -1
- package/dist/components/TimePeriodBar/TimePeriodBar.esm.js +1 -1
- package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +2 -0
- package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
- package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +2 -0
- package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TrackPage/TrackPageBUI.esm.js +2 -0
- package/dist/components/TrackPage/TrackPageDeprecated.esm.js +2 -0
- package/dist/components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js +2 -0
- package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
- package/dist/components/TracksPage/TracksListPageBUI.esm.js +2 -0
- package/dist/components/TracksPage/TracksPage.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +125 -117
- package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
- package/dist/hooks/catalog/useGetLimitedEntityRefs.esm.js +1 -1
- package/dist/hooks/catalog/useProfileImages.esm.js +2 -0
- package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
- package/dist/hooks/checks/useCheckStatusTotals.esm.js +2 -0
- package/dist/hooks/entities/useTrackEntities.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/groups/useAllGroups.esm.js +1 -1
- package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
- package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
- package/dist/hooks/heirarchy/useBatchedHierarchicalTrackStatuses.esm.js +1 -1
- package/dist/hooks/tracks/useRecertifyTrack.esm.js +2 -0
- package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
- package/dist/hooks/useConfirmationModal.esm.js +1 -1
- package/dist/hooks/useLoadTimeReporting.esm.js +2 -0
- package/dist/hooks/usePagination.esm.js +2 -0
- package/dist/hooks/useSearchName.esm.js +2 -0
- package/dist/utils/checks.esm.js +2 -0
- package/dist/utils/formatters.esm.js +1 -1
- package/dist/utils/helpers.esm.js +1 -1
- package/dist/utils/lcpReporting.esm.js +1 -1
- package/package.json +18 -27
- package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +0 -2
- package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +0 -2
- package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +0 -2
- package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsCardsView.esm.js +0 -2
- package/dist/components/TechInsights/TrackStatusCard.esm.js +0 -2
- package/dist/components/TechInsights/ViewModeControls.esm.js +0 -2
- package/dist/components/TechInsights/convertToCommonTrackStatus.esm.js +0 -2
- package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +0 -2
- /package/dist/components/{CampaignInsightsPage → CampaignPage}/CampaignStatusHistoryTile.esm.js +0 -0
- /package/dist/components/{CampaignInsightsPage → CampaignPage}/DaysRemainingTile.esm.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i,jsxs as u}from"react/jsx-runtime";import{useRouteRef as
|
|
1
|
+
import{jsx as i,jsxs as u}from"react/jsx-runtime";import{useRouteRef as pe}from"@backstage/core-plugin-api";import{EntityRefLink as he}from"@backstage/plugin-catalog-react";import{usePermission as K}from"@backstage/plugin-permission-react";import{makeStyles as fe,useTheme as ue,Button as ge,Typography as X,Tabs as ye,Tab as Y,Box as Z}from"@material-ui/core";import{soundcheckCheckReadPermission as ke,soundcheckCheckUpdatePermission as Ce,toEntityFilterQuery as M,combineEntityFilterQueries as Se}from"@spotify/backstage-plugin-soundcheck-common";import w from"lodash/isEqual";import{useMemo as a,useCallback as W,useState as v,useEffect as ee}from"react";import{useSearchParams as xe,useParams as be,useNavigate as ve}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCheck as we}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useTrack as Ee}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCheckStatus as Ne}from"../../hooks/aggregations/useCheckStatus.esm.js";import{useLCPReporting as Ie}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Le}from"../../hooks/useLoadTimeReporting.esm.js";import{checkEditRouteRef as Re}from"../../routes.esm.js";import{toFilter as Te}from"../../utils/helpers.esm.js";import{CheckStatusBar as Fe}from"../CheckStatusBar/CheckStatusBar.esm.js";import"../CheckStatusBar/CheckStatusBarBUI.esm.js";import"@backstage/ui";import"lodash";import"../CustomCell/CustomCell.esm.js";import{FilterSidebar as De}from"../FilterSidebar/FilterSidebar.esm.js";import{StateFilter as Be}from"../FilterSidebar/StateFilter.esm.js";import{LoadingIndicator as Pe}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as te}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Ae}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContent as je}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{parseNumberOfDays as Oe}from"../TechHealth/Filters/utils.esm.js";import{CheckEntitiesTable as Me}from"./CheckEntitiesTable/CheckEntitiesTable.esm.js";import{CheckStatusHistoryChart as We}from"./CheckStatusHistoryChart.esm.js";import{CheckStatusTable as ze}from"./CheckStatusTable.esm.js";import{ExemptionsTable as He}from"./ExemptionsTable.esm.js";function $e(t,y){for(const l of t.levels)for(const r of l.checks)if(r.id===y)return r;return null}const Qe=fe(t=>({root:{height:"100%"},pageContent:{display:"flex",minHeight:`calc(100vh - ${t.spacing(15)}px)`,borderTop:`1px solid ${t.palette.divider}`,height:"100%"},mainContentArea:{flex:1,display:"flex",flexDirection:"column",minWidth:0},editButton:{marginLeft:"auto"},statusContainer:{borderBottom:`1px solid ${t.palette.divider}`,padding:t.spacing(3,0,2,3)},statusCards:{display:"flex",gap:t.spacing(2)},currentStatusSection:{width:"325px",minWidth:"325px",flex:0,display:"flex",flexDirection:"column"},historicalStatusSection:{flex:1,flexShrink:1,flexGrow:1,flexBasis:"auto",minWidth:"150px",display:"flex",flexDirection:"column"},statusTitle:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${t.typography.h5.fontSize}px`,cursor:"default",marginBottom:t.spacing(2)},headerDescription:{fontSize:t.typography.body2.fontSize,margin:t.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},entitiesContainer:{padding:t.spacing(2,3,3,3)},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}}})),Ue=()=>{const[t,y]=xe(),{trackId:l,checkId:r}=be(),s=a(()=>t.getAll("states"),[t]),c=a(()=>t.getAll("owners"),[t]),m=a(()=>t.getAll("lifecycles"),[t]),d=a(()=>t.getAll("types"),[t]),p=a(()=>t.getAll("systems"),[t]),I=a(()=>Oe(t.get("numberOfDays")),[t]),z=a(()=>({routeName:"soundcheck-check-insights",additionalAttributes:{checkId:r||"",trackId:l||"",filtersApplied:c.length+m.length+d.length+p.length+s.length,ownersFilter:c.join(",")||"",lifecyclesFilter:m.join(",")||"",typesFilter:d.join(",")||"",systemsFilter:p.join(",")||"",statesFilter:s.join(",")||"",numberOfDays:I}}),[r,l,c,m,d,p,s,I]),{reportContentLoaded:H}=Le(z),{reporter:ie}=Ie(z),o=Qe(),L=W(()=>c.map(e=>({label:e,value:e})),[c]),[k,R]=v(m),[C,T]=v(L()),[S,F]=v(d),[x,D]=v(p),[b,B]=v(s);ee(()=>{T(L()),R(m),F(d),D(p),B(s)},[c,m,d,p,s,L]);const re=a(()=>{const e={owners:!w(C,c),lifecycles:!w(k,m),types:!w(S,d),systems:!w(x,p),states:!w(b,s)};return Object.values(e).some(Boolean)},[C,c,k,m,S,d,x,p,b,s]),oe=W(()=>{const e=new URLSearchParams(t);e.delete("lifecycles"),e.delete("owners"),e.delete("types"),e.delete("systems"),e.delete("states"),k.length>0&&k.forEach(n=>e.append("lifecycles",n)),C.length>0&&C.forEach(n=>e.append("owners",typeof n=="string"?n:n.value)),S.length>0&&S.forEach(n=>e.append("types",n)),x.length>0&&x.forEach(n=>e.append("systems",n)),b.length>0&&b.forEach(n=>e.append("states",n)),y(e)},[t,k,C,S,x,b,y]),se=W(()=>{R([]),T([]),F([]),D([]),B([]);const e=new URLSearchParams(t);e.delete("lifecycles"),e.delete("owners"),e.delete("types"),e.delete("systems"),e.delete("states"),y(e)},[t,y]),P=Te({lifecycles:m,owners:c,types:d,systems:p}),{data:g,isLoading:E}=Ee(l),{data:h,isLoading:N}=we(r),{loading:$,allowed:A}=K({permission:ke,resourceRef:r}),f=a(()=>h??g?.levels.flatMap(e=>e.checks).find(e=>e.id===r),[h,r,g?.levels]),{loading:Q,allowed:U}=K({permission:Ce,resourceRef:r}),V=ve(),G=pe(Re),ne=ue();let j;if(r)if(g){const e=M(g.filter),n=M($e(g,r)?.filter);j=Se(e,n)}else f?.filter&&(j=M(f.filter));const{data:q,isLoading:J}=Ne({checkId:r,trackId:l,filter:P,states:s?.length?s:void 0},!!r),ae=a(()=>h?.ownerEntityRef?i(he,{color:"inherit",entityRef:h.ownerEntityRef,className:o.ownerLink}):null,[h?.ownerEntityRef,o.ownerLink]),le=a(()=>!Q&&U&&h?.isEditable?i(ge,{className:o.editButton,variant:"contained",color:"primary",onClick:()=>{V(G({checkId:h.id}))},children:"Edit Check"}):null,[U,h?.id,h?.isEditable,o.editButton,G,Q,V]),ce=a(()=>f?.description?i(je,{className:o.headerDescription,content:f.description}):null,[o.headerDescription,f?.description]);Ae({title:f?.name??r??"Soundcheck",description:ce,customSubtitle:ae,sectionRight:le});const me=a(()=>!!f&&!$&&!A,[A,f,$]),[O,de]=v(0),_=ie?.getLCPValue();return ee(()=>{!N&&!J&&(!l||!E)&&H({lcp:_})},[N,J,E,l,H,_]),u("div",{children:[i(te,{entityName:"track",entityId:l,showNotFound:!!l&&!E&&!g}),i(te,{entityName:"check",entityId:r,showCannotView:me}),(N||!!l&&E)&&i(Pe,{}),!N&&A&&i("div",{className:o.root,children:u("div",{className:o.pageContent,children:[i(De,{trackFilter:j,stagedTypes:S,stagedLifecycles:k,stagedOwners:C,stagedSystems:x,onTypesChange:F,onLifecyclesChange:R,onOwnersChange:T,onSystemsChange:D,onApplyFilters:oe,onClearFilters:se,hasFilterChanges:re,children:i(Be,{states:s,stagedStates:b,onStagedStatesChange:B})}),u("div",{className:o.mainContentArea,children:[i("div",{className:o.statusContainer,children:u("div",{className:o.statusCards,children:[u("div",{className:o.currentStatusSection,children:[i(X,{className:o.statusTitle,children:"Current Status"}),i("div",{style:{width:"100%",height:30,display:"flex",alignItems:"flex-start",marginBottom:ne.spacing(2)},children:i(Fe,{status:q,states:s})}),i("div",{children:i(ze,{checkStatus:q,states:s})})]}),u("div",{className:o.historicalStatusSection,children:[i(X,{className:o.statusTitle,children:"Historical Status"}),i("div",{style:{height:"100%"},children:i(We,{checkId:r,trackId:l,filter:P,states:s,numberOfDays:I})})]})]})}),u("div",{className:o.entitiesContainer,children:[u(ye,{value:O,onChange:(e,n)=>de(n),indicatorColor:"primary",textColor:"primary","aria-label":"Entities and Exemptions Tabs",children:[i(Y,{label:"Entities"}),i(Y,{label:"Exemptions"})]}),i(Z,{hidden:O!==0,children:i(Me,{checkId:r,trackId:g?.id,filter:P,states:s})}),i(Z,{hidden:O!==1,children:i(He,{checkId:r})})]})]})]})})]})};export{Ue as CheckInsightsPage};
|
|
2
2
|
//# sourceMappingURL=CheckInsightsPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as m}from"react/jsx-runtime";import{makeStyles as
|
|
1
|
+
import{jsx as e,jsxs as m}from"react/jsx-runtime";import{useApi as A,configApiRef as v}from"@backstage/core-plugin-api";import{makeStyles as g,useTheme as I}from"@material-ui/core";import{DateTime as b}from"luxon";import{ResponsiveContainer as D,LineChart as L,CartesianGrid as C,XAxis as W,YAxis as c,Tooltip as K,Line as n}from"recharts";import{useCheckStatusHistory as O}from"../../hooks/aggregations/useCheckStatusHistory.esm.js";import{getCheckStatusColor as o}from"../../utils/colors.esm.js";import{compactNumberFormatter as S}from"../../utils/formatters.esm.js";import{LoadingChart as w}from"../Charts/LoadingChart.esm.js";import{TimePeriodBar as F}from"../TimePeriodBar/TimePeriodBar.esm.js";const R=g({root:{height:290,width:"100%",position:"relative",borderRadius:"4px"}}),T=({checkId:d,trackId:p,filter:l,states:k,numberOfDays:h})=>{const t=I(),y=R(),f=A(v).getOptionalNumber("soundcheck.results.history.retentionTimeInDays"),{data:s,isLoading:u}=O({checkId:d,trackId:p,filter:l,states:k,numberOfDays:h},!!d);if(u)return e(w,{type:"line",numLines:3});const r=i=>s?.history.some(x=>x[i]>0)??!1,a={stroke:t.palette.background.paper,strokeWidth:1,r:5};return m("div",{className:y.root,children:[e(F,{maxNumberOfDays:f}),e(D,{height:250,debounce:1,children:m(L,{data:s?.history??[],margin:{top:0,right:0,bottom:0,left:0},children:[e(C,{stroke:t.palette.divider,strokeWidth:1,horizontal:!0,vertical:!1}),e(W,{dataKey:"date",tickFormatter:i=>b.fromISO(i).toFormat("MMM d"),tickLine:!1,axisLine:!1}),e(c,{yAxisId:"percentage",domain:[0,100],axisLine:!1,tickLine:!1,tickFormatter:i=>`${i}%`,ticks:[0,25,50,75,100]}),e(c,{yAxisId:"count",orientation:"right",domain:[0,s?.numberOfEntities??0],axisLine:!1,tickLine:!1,tickFormatter:i=>S(i)}),e(K,{contentStyle:{backgroundColor:t.palette.background.paper,color:t.palette.text.primary,border:`1px solid ${t.palette.divider}`},cursor:{stroke:t.palette.divider,strokeWidth:1}}),r("passed")&&e(n,{type:"monotone",dataKey:"passed",stroke:o(t,"passed"),yAxisId:"count",strokeWidth:2,dot:!1,isAnimationActive:!1,activeDot:{fill:o(t,"passed"),...a}}),r("failed")&&e(n,{type:"monotone",dataKey:"failed",stroke:o(t,"failed"),yAxisId:"count",strokeWidth:2,dot:!1,isAnimationActive:!1,activeDot:{fill:o(t,"failed"),...a}}),r("warning")&&e(n,{type:"monotone",dataKey:"warning",stroke:o(t,"warning"),yAxisId:"count",strokeWidth:2,dot:!1,isAnimationActive:!1,activeDot:{fill:o(t,"warning"),...a}}),r("error")&&e(n,{type:"monotone",dataKey:"error",stroke:o(t,"error"),yAxisId:"count",strokeWidth:2,dot:!1,isAnimationActive:!1,activeDot:{fill:o(t,"error"),...a}}),r("exempt")&&e(n,{type:"monotone",dataKey:"exempt",stroke:o(t,"exempt"),yAxisId:"count",strokeWidth:2,dot:!1,isAnimationActive:!1,activeDot:{fill:o(t,"exempt"),...a}}),r("notReported")&&e(n,{type:"monotone",dataKey:"notReported",stroke:o(t,"not-reported"),yAxisId:"count",strokeWidth:2,dot:!1,isAnimationActive:!1,activeDot:{fill:o(t,"not-reported"),...a}})]})})]})};export{T as CheckStatusHistoryChart};
|
|
2
2
|
//# sourceMappingURL=CheckStatusHistoryChart.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as o,jsxs as m}from"react/jsx-runtime";import{useTheme as y,Typography as p}from"@material-ui/core";import{makeStyles as k,createStyles as x}from"@material-ui/core/styles";import{Skeleton as N}from"@material-ui/lab";import{memo as S,useMemo as C,Fragment as v}from"react";import{getCheckStatusColor as n}from"../../utils/colors.esm.js";import{compactNumberFormatter as d}from"../../utils/formatters.esm.js";import{CheckStateCategories as w,CheckState as T}from"./utils.esm.js";const b=k(e=>x({container:{display:"grid",gridTemplateColumns:"3fr 2fr",gap:e.spacing(1),minWidth:0},item:{display:"flex",alignItems:"center",fontSize:"0.875rem",minWidth:0},legendDash:{width:e.spacing(2),height:e.spacing(.75),borderRadius:e.spacing(.375),marginRight:e.spacing(1)},category:{display:"flex",alignItems:"center",fontSize:"0.875rem",minWidth:0,flex:1},categoryText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontSize:"0.875rem",minWidth:0,flex:1},value:{fontSize:"0.875rem",color:e.palette.text.primary},valueCell:{justifyContent:"flex-end",whiteSpace:"nowrap"},percentage:{color:e.palette.text.secondary,marginLeft:e.spacing(1)},skeleton:{backgroundColor:e.palette.action.hover}})),R=S(({checkStatus:e,states:l})=>{const r=y(),t=b(),g=C(()=>[{name:"Passed",key:"passed",color:n(r,"passed")},{name:"Failed",key:"failed",color:n(r,"failed")},{name:"Warning",key:"warning",color:n(r,"warning")},{name:"Exempt",key:"exempt",color:n(r,"exempt")},{name:"Error",key:"error",color:n(r,"error")},{name:"Not Reported",key:"notReported",color:n(r,"not-reported")}],[r]),s=e?e.numberOfEntities-e.notApplicable-e.exempt:-1,h=i=>{let a=!1;return l?.length&&(i===w.NOT_REPORTED?a=l.includes(T.NOT_REPORTED):a=l.includes(i.toUpperCase())),!l?.length||a?Number(e?.[i]??0)??0:0};return o("div",{className:t.container,children:g.map(({name:i,key:a,color:f})=>{const c=h(a),u=s>0?Math.round(c/s*100):0;return m(v,{children:[o("div",{className:t.item,children:m("div",{className:t.category,children:[o("span",{className:t.legendDash,style:{backgroundColor:f}}),o(p,{className:t.categoryText,children:i})]})}),o("div",{className:`${t.item} ${t.valueCell}`,children:e?m(p,{className:t.value,children:[d(c)," of"," ",d(s),m("span",{className:t.percentage,children:["(",u,"%)"]})]}):o(N,{width:120,height:20,className:t.skeleton})})]},a)})})});export{R as CheckStatusTable};
|
|
2
2
|
//# sourceMappingURL=CheckStatusTable.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ResultState as
|
|
1
|
+
import{ResultState as E}from"../../graphql/generated/index.esm.js";const e={PASSED:"PASSED",FAILED:"FAILED",WARNING:"WARNING",EXEMPT:"EXEMPT",NOT_APPLICABLE:"NOT_APPLICABLE",NOT_REPORTED:"NOT_REPORTED",ERROR:"ERROR"},r={PASSED:"passed",FAILED:"failed",WARNING:"warning",EXEMPT:"exempt",ERROR:"error",NOT_APPLICABLE:"notApplicable",NOT_REPORTED:"notReported"},R={PASSED:"passed",FAILED:"failed",WARNING:"warning",EXEMPT:"exempt",ERROR:"error",NOT_REPORTED:"not-reported"},a=t=>{switch(t){case e.PASSED:return E.Passed;case e.FAILED:return E.Failed;case e.WARNING:return E.Warning;case e.NOT_APPLICABLE:return E.NotApplicable;case e.NOT_REPORTED:return E.NotReported;case e.EXEMPT:return E.Exempt;case e.ERROR:return E.Error;default:return}};export{e as CheckState,r as CheckStateCategories,R as CheckStateColors,a as toResultState};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as n}from"react/jsx-runtime";import{useTheme as g,Box as h}from"@material-ui/core";import{makeStyles as u}from"@material-ui/core/styles";import{useMemo as i,useCallback as N}from"react";import{getCheckStatusColor as a}from"../../utils/colors.esm.js";import{CategoryBar as T}from"../CategoryBar/CategoryBar.esm.js";import{CheckState as s,CheckStateCategories as r,CheckStateColors as l}from"../CheckPage/utils.esm.js";const A=u(e=>({categoryBar:{"& .MuiBox-root > div":{height:"8px"}}})),C=({status:e,className:m,states:t})=>{const E=A(),o=g(),p=i(()=>({passed:!t?.length||t.includes(s.PASSED)?e?.passed??0:0,failed:!t?.length||t.includes(s.FAILED)?e?.failed??0:0,warning:!t?.length||t.includes(s.WARNING)?e?.warning??0:0,error:!t?.length||t.includes(s.ERROR)?e?.error??0:0,exempt:!t?.length||t.includes(s.EXEMPT)?e?.exempt??0:0,notReported:!t?.length||t.includes(s.NOT_REPORTED)?e?.notReported??0:0}),[e,t]),R=N(c=>{switch(c){case r.NOT_APPLICABLE:return"Not Applicable";case r.NOT_REPORTED:return"Not Reported";default:return c.charAt(0).toUpperCase()+c.slice(1)}},[]),d=i(()=>({passed:a(o,l.PASSED),failed:a(o,l.FAILED),warning:a(o,l.WARNING),error:a(o,l.ERROR),exempt:a(o,l.EXEMPT),notReported:a(o,l.NOT_REPORTED)}),[o]);return n(h,{className:m,style:{width:"100%"},children:n(T,{className:E.categoryBar,data:p,categories:[r.PASSED,r.FAILED,r.WARNING,r.ERROR,r.EXEMPT,r.NOT_REPORTED],categoryColors:d,showTooltip:!0,valueFormatter:c=>c.toString(),categoryFormatter:R})})};export{C as CheckStatusBar};
|
|
2
2
|
//# sourceMappingURL=CheckStatusBar.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as r,jsxs as u}from"react/jsx-runtime";import{Box as e,Flex as n}from"@backstage/ui";import{makeStyles as t}from"@material-ui/core";const g=t(()=>({container:{gap:"var(--bui-space-1)",width:"100%"},passedBar:{height:"var(--bui-space-1_5)",background:"var(--bui-fg-success)",border:"var(--bui-space-0_5) solid var(--bui-fg-success)",borderRadius:"var(--bui-space-1)"},failedBar:{height:"var(--bui-space-1_5)",background:"var(--bui-fg-danger)",border:"var(--bui-space-0_5) solid var(--bui-fg-danger)",borderRadius:"var(--bui-space-1)"},warningBar:{height:"var(--bui-space-1_5)",background:"var(--bui-fg-warning)",border:"var(--bui-space-0_5) solid var(--bui-fg-warning)",borderRadius:"var(--bui-space-1)"},noneBar:{height:"var(--bui-space-1_5)",background:"var(--bui-fg-disabled)",border:"var(--bui-space-0_5) solid var(--bui-fg-disabled)",borderRadius:"var(--bui-space-1)"}})),l=({passedPercent:i,failedPercent:s,warningPercent:d})=>{const a=g(),c=[i,s,d].filter(b=>!!b),o=c.length===1;return c.every(b=>b===0)?r(e,{width:"100%",className:a.noneBar}):u(n,{className:a.container,children:[!!i&&r(e,{className:a.passedBar,style:{flexGrow:i,width:o?"100%":void 0}}),!!s&&r(e,{className:a.failedBar,style:{flexGrow:s,width:o?"100%":void 0}}),!!d&&r(e,{className:a.warningBar,style:{flexGrow:d,width:o?"100%":void 0}})]})};export{l as CheckStatusBarBUI};
|
|
2
|
+
//# sourceMappingURL=CheckStatusBarBUI.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Flex as n,Text as s}from"@backstage/ui";import{isNumber as c}from"lodash";import{CustomCell as i}from"../CustomCell/CustomCell.esm.js";import{CheckStatusBarBUI as m}from"./CheckStatusBarBUI.esm.js";const a=({passPercentage:r})=>{const o=c(r)?100-r:0;return e(i,{children:t(n,{align:"center",gap:"3",children:[t(s,{children:[r,"%"]}),e(m,{passedPercent:r,failedPercent:o,warningPercent:0})]})})};export{a as CheckStatusBarCell};
|
|
2
|
+
//# sourceMappingURL=CheckStatusBarCell.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as n,jsx as e}from"react/jsx-runtime";import{Content as f,ItemCardGrid as g}from"@backstage/core-components";import{useRouteRef as k}from"@backstage/core-plugin-api";import{Typography as a,Box as l,Card as C,CardContent as y}from"@material-ui/core";import{makeStyles as L}from"@material-ui/core/styles";import b from"lodash";import{useMemo as d,useEffect as x}from"react";import{Link as v}from"react-router-dom";import{useCheckTemplates as N}from"../../hooks/checks/useCheckTemplates.esm.js";import{useLCPReporting as R}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as T}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as j}from"../../routes.esm.js";import{LoadingIndicator as P}from"../LoadingIndicator/LoadingIndicator.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as B}from"../SoundcheckHeader/useHeader.esm.js";import{TemplateCategory as D}from"./TemplateCategory.esm.js";const G=L(t=>({content:{display:"flex",flexDirection:"column",gap:t.spacing(2)},grid:{marginLeft:t.spacing(2)},cardContent:{"&:hover":{backgroundColor:t.palette.action.hover}},docsLink:{color:t.palette.text.primary},link:{textDecoration:"none"}})),I=()=>{const t=d(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:m}=T(t),{reporter:h}=R(t),r=G(),u=k(j),{data:o,isLoading:c}=N(),s=d(()=>b.groupBy(o??[],"category"),[o]);B({title:"What would you like to check?",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"});const p=h?.getLCPValue();return x(()=>{c||m({lcp:p})},[c,m,p]),n("div",{children:[c&&e(P,{}),o&&o.length===0&&e(a,{children:"No check templates."}),o&&o.length&&n(f,{className:r.content,children:[e(l,{className:r.grid,children:e(g,{children:e(v,{to:u(),className:r.link,children:e(C,{children:n(y,{className:r.cardContent,children:[e(l,{mb:1,children:e(a,{variant:"subtitle1",style:{fontWeight:"bold"},component:"div",children:"Custom Check"})}),e(a,{variant:"body1",children:"Create a custom check using the facts collected about your entities."})]})})})})}),Object.keys(s).sort().map(i=>e(D,{name:i,templates:s[i]},i))]})]})};export{I as CheckTemplatesPage};
|
|
2
2
|
//# sourceMappingURL=CheckTemplatesPage.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t,jsxs as C}from"react/jsx-runtime";import{useApi as I,featureFlagsApiRef as re,useRouteRef as te}from"@backstage/core-plugin-api";import{usePermission as oe}from"@backstage/plugin-permission-react";import{makeStyles as ae,Button as B,Grid as a}from"@material-ui/core";import{soundcheckCheckCreatePermission as ie}from"@spotify/backstage-plugin-soundcheck-common";import{useState as i,useMemo as se,useEffect as P}from"react";import{useNavigate as ce}from"react-router-dom";import ne from"react-use/lib/useDebounce";import{soundcheckApiRef as me}from"../../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useGetChecks as le}from"../../../hooks/checks/useGetChecks.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGetCheckOwners as pe}from"../../../hooks/checks/useGetCheckOwners.esm.js";import{useImportChecks as de}from"../../../hooks/checks/useImportChecks.esm.js";import{useLCPReporting as he}from"../../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as ge}from"../../../hooks/useLoadTimeReporting.esm.js";import ue from"../../../images/no-results.svg";import{checkTemplatesRouteRef as fe}from"../../../routes.esm.js";import{exportChecks as ke}from"../../../utils/export.esm.js";import{FilterDefault as L}from"../../../utils/filters.esm.js";import{EmptyState as O}from"../../EmptyState/EmptyState.esm.js";import"../../EmptyState/EmptyStateBUI.esm.js";import"@backstage/ui";import{ImportExportPanel as Ce}from"../../ImportExportPanel/ImportExportPanel.esm.js";import{Pagination as Pe}from"../../Pagination/Pagination.esm.js";import{SearchFilters as be}from"../../SearchFilters/SearchFilters.esm.js";import{ChecksOverviewSkeleton as ve}from"../skeletons/ChecksOverviewSkeleton.esm.js";import{CheckSummaryCard as xe}from"./CheckSummaryCard.esm.js";var T=(e=>(e.title="Create a check",e.description="A check is a comparison between a defined acceptable outcome and the actual outcome of a given process.",e.callToAction="Get started",e))(T||{}),F=(e=>(e.title="No checks found",e.description="No checks matched your search. Consider changing search term and filters.",e))(F||{});const ye=ae(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:e.spacing(0,0,1)},container:{padding:e.spacing(3),gap:e.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:e.spacing(1.5),paddingBottom:e.spacing(1.5)}})),Ae=({checksPerPage:e,currentCursor:E})=>{const[m,b]=i(E),[g,G]=i(""),[c,j]=i(L.Alpha),[n,D]=i(L.Owner),[l,H]=i(""),v=se(()=>({routeName:"soundcheck-checks",additionalAttributes:{checksPerPage:e,pageCursor:m||"",sortOrder:c||"",ownerFilter:n||"",nameSearch:l||""}}),[e,m,c,n,l]),{reportContentLoaded:x}=ge(v),{reporter:M}=he(v),p=ye(),{data:V,isLoading:u}=pe();ne(()=>{H(g)},500,[g]);const{loading:y,allowed:W}=oe({permission:ie}),{data:o,isLoading:s}=le({ids:void 0,first:e,after:m,orderAlphabetical:c,searchByOwner:n,searchByName:l}),[f,$]=i(o),d=f?.edges?.map(r=>r.node),[A,w]=i([]);P(()=>{b(void 0),w([])},[l,c,n]);const N=I(re),q=!N.getRegisteredFlags().find(r=>r.name==="soundcheck-enable-check-creation")||N.isActive("soundcheck-enable-check-creation"),k=!W||!q,z=r=>{j(r.target.value)},J=r=>{D(r.target.value)};P(()=>{o&&$(()=>({totalCount:o.totalCount,edges:o.edges,pageInfo:{startCursor:o.pageInfo.startCursor,endCursor:o.pageInfo.endCursor,hasNextPage:o?.pageInfo.hasNextPage??!1,hasPreviousPage:o?.pageInfo.hasPreviousPage??!1}}))},[o]);const K=ce(),Q=te(fe),R=()=>K(Q()),U=I(me),{mutateAsync:X}=de(),Y=async r=>X(r),Z=async()=>{const r=await U.getChecks({orderAlphabetical:"asc"});return ke(r.edges.map(ee=>ee.node))},S=M?.getLCPValue();if(P(()=>{!s&&!u&&x({lcp:S})},[s,u,x,S]),!s&&!d)return t(O,{title:"Create a check",description:"A check is a comparison between a defined acceptable outcome and the actual outcome of a given process.",imgSrc:ue,action:!y&&t(B,{disabled:k,variant:"contained",color:"primary",onClick:R,children:"Get started"})});let h;s?h=t(ve,{}):d?.length?h=d?.map(r=>t(a,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`check card ${r.id}`,children:t(xe,{check:r})},r.id)):h=t(a,{xs:12,item:!0,role:"listitem","aria-label":"result",children:t(O,{title:"No checks found",description:"No checks matched your search. Consider changing search term and filters."})});const _=f?.pageInfo.hasNextPage||A?.length>0;return C(a,{container:!0,direction:"row",className:p.container,children:[C(a,{container:!0,className:p.header,children:[t(be,{searchPlaceholder:"Search Available Checks",isLoading:s||u,searchTerm:g,setSearchTerm:G,filterAlpha:c,handleAlphabeticalFilterChange:z,filterOwner:n,handleOwnerFilterChange:J,owners:V}),C(a,{item:!0,xs:4,className:p.headerButtons,children:[t(Ce,{resourceType:"check",disableImport:k,disableExport:s||!d?.length,onImport:Y,onExport:Z}),!y&&t(B,{disabled:k,variant:"contained",color:"primary",onClick:R,className:p.createButton,children:"Create Check"})]})]}),t(a,{container:!0,spacing:4,role:"list","aria-label":"checks",children:h}),_&&t(a,{item:!0,xs:12,children:t(Pe,{response:f,listingsPerPage:e,cursor:m,setCursor:b,prevCursors:A,setPrevCursors:w,labelPerPageDropdown:"Checks Per Page:",urlRoute:"checks?checksPerPage="})})]})};export{T as CheckEmptyState,Ae as CheckListPage,F as CheckNoResults};
|
|
2
|
+
//# sourceMappingURL=CheckListPageDeprecated.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as a,Fragment as B,jsx as t}from"react/jsx-runtime";import{useRouteRef as w,useApi as N}from"@backstage/core-plugin-api";import{entityPresentationApiRef as v}from"@backstage/plugin-catalog-react";import{usePermission as A}from"@backstage/plugin-permission-react";import{Box as k,HeaderPage as H,Table as M,TableHeader as D,Column as m,TableBody as j,TablePagination as F}from"@backstage/ui";import{makeStyles as O}from"@material-ui/core";import{soundcheckCheckCreatePermission as U}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as V,isEmpty as z,upperFirst as G}from"lodash";import{useState as l,useMemo as R}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useGetChecks as W}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSearchName as Y}from"../../hooks/useSearchName.esm.js";import{usePagination as q}from"../../hooks/usePagination.esm.js";import{useProfileImages as J}from"../../hooks/catalog/useProfileImages.esm.js";import{checkTemplatesRouteRef as K,checkDetailsRouteRef as Q}from"../../routes.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as X}from"../EmptyState/EmptyStateBUI.esm.js";import{EmptyStateNoChecks as Z}from"../EmptyState/EmptyStateNoChecks.esm.js";import{ListPageCustomActions as _}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as $}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{TableRowWithOwner as ee}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const P=10,te=O(()=>({container:{padding:"0 var(--bui-space-3)"},emptySpacing:{margin:"var(--bui-space-3) 0"}})),re=({check:r,profileImageMap:o})=>{const s=w(Q);return t(ee,{ownerEntityRef:r.ownerEntityRef??"",href:s({checkId:r.id}),profileImageSrc:o[r.ownerEntityRef??""],actions:["edit","export","delete"],cells:[{title:r.name??r.id},{title:G(r.type??"Default")}]})},ie=()=>{const r=te(),[o,s]=l(""),[c,S]=l("ascending"),[n,C]=l(""),{isLoading:d,data:f}=W({}),h=R(()=>f?.edges?.map(e=>e.node)??[],[f?.edges]),{loading:E,allowed:T}=A({permission:U}),b=w(K),{profileImageMap:I}=J(h.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef)),p=Y({items:h,searchTerm:o}),u=N(v),g=R(()=>{if(!n)return p;const e=V(p,i=>n==="owner"?i.ownerEntityRef?u.forEntity(i.ownerEntityRef).snapshot.primaryTitle:-1:n==="type"?i.type?i.type:"default":i?.name?.toLowerCase()??i.id.toLowerCase());return c==="descending"&&e.reverse(),e},[n,p,c,u]),{paginatedItems:y,reset:x,paginationProps:L}=q({pageParam:"checksPerPage",defaultPageSize:P,items:g});return a(B,{children:[t(k,{children:t(H,{customActions:t(_,{searchValue:o,setSearchValue:e=>{x(),s(e)},canCreate:!E&&T,createHref:b()}),title:"Checks"})}),a(k,{className:r.container,children:[a(M,{onSortChange:({direction:e,column:i})=>{C(String(i)),S(e)},sortDescriptor:{direction:c,column:n},children:[a(D,{children:[t(m,{id:"name",allowsSorting:!0,isRowHeader:!0,children:"Name"}),t(m,{id:"type",style:{width:"120px"},allowsSorting:!0,children:"Type"}),t(m,{id:"owner",allowsSorting:!0,children:"Check Owner"}),t(m,{id:"actions",style:{width:"30px"}})]}),t(j,{children:y.map(e=>t(re,{check:e,profileImageMap:I??{}},e.id))})]}),g.length>P&&t(F,{...L}),d&&t($,{rowCount:10}),!d&&z(y)&&t("div",{className:r.emptySpacing,children:o?t(X,{title:"No checks found",body:"Your current search term did not return any checks. Please try a different search term."}):t(Z,{})})]})]})};export{ie as ChecksListPageBUI};
|
|
2
|
+
//# sourceMappingURL=ChecksListPageBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{useSearchParams as a}from"react-router-dom";import{useFeatureFlag as c}from"../../hooks/useFeatureFlag.esm.js";import{RESULTS_PER_PAGE as m}from"../../utils/filters.esm.js";import{CheckListPage as i}from"./CheckListPage/CheckListPageDeprecated.esm.js";import{ChecksListPageBUI as P}from"./ChecksListPageBUI.esm.js";const g=()=>{const[t]=a(),r=t.get("checksPerPage"),o=r?parseInt(r,10):m,s=c("backstage-ui");return e("div",{children:s?e(P,{}):e(i,{checksPerPage:o})})};export{g as ChecksPage};
|
|
2
2
|
//# sourceMappingURL=ChecksPage.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as o,jsx as e,Fragment as w}from"react/jsx-runtime";import{useRouteRef as y}from"@backstage/core-plugin-api";import{Row as S,Cell as g,Flex as v,Box as f,Text as x,Table as B,TableHeader as R,Column as u,TableBody as T}from"@backstage/ui";import{makeStyles as N}from"@material-ui/core";import{memo as F,useMemo as k,useState as b}from"react";import{CircularProgressbar as I}from"react-circular-progressbar";import{useNavigate as j}from"react-router-dom";import{TrackEntityField as A}from"../../graphql/generated/index.esm.js";import{checkDetailsRouteRef as D}from"../../routes.esm.js";import{getCheckStatusPercentages as E}from"../../utils/checks.esm.js";import"../CheckStatusBar/CheckStatusBar.esm.js";import{CheckStatusBarBUI as H}from"../CheckStatusBar/CheckStatusBarBUI.esm.js";import"lodash";import{CustomCell as L}from"../CustomCell/CustomCell.esm.js";const M=N(()=>({statusBar:{width:"30%"},customCell:{padding:"0 var(--bui-space-3)"},circularProgressbar:{width:"60%"}}));A.Name;const O=F(({check:a,checkStatuses:m})=>{const i=M(),d=y(D),p=j(),r=m?.find(n=>n.id===a.id),{passPercent:c,failPercent:t,warningPercent:s,applicableChecks:h}=k(()=>{const n=r?r.numberOfEntities-r.notApplicable-r.exempt:0,{passPercentage:l,failPercentage:C,warningPercentage:P}=E(r?.passed??0,r?.failed??0,r?.warning??0,n);return{passPercent:l,failPercent:C,warningPercent:P,applicableChecks:n}},[r]);return o(S,{onAction:()=>p(d({checkId:a.id})),children:[e(g,{leadingIcon:e("div",{className:i.circularProgressbar,children:e(I,{value:c,strokeWidth:12,styles:{path:{stroke:c===100?"var(--bui-fg-success)":"var(--bui-fg-danger)"},trail:{stroke:'rgba(var("--bui-fg-secondary"), 0.25)'}}})}),title:`${c}%`}),e(g,{title:a.name}),e(L,{children:o(v,{align:"center",gap:"3",children:[e(f,{children:o(x,{color:"secondary",children:[r?.passed??0," of ",h," checks passing"]})}),e(f,{className:i.statusBar,children:e(H,{passedPercent:c,failedPercent:t,warningPercent:s})})]})})]},a.id)}),U=({checks:a,checkStatuses:m})=>{const[i,d]=b("ascending"),[p,r]=b("name"),c=k(()=>[...a??[]].sort((t,s)=>{const h=t.name.toLowerCase().trim(),n=s.name.toLowerCase().trim(),l=h.localeCompare(n,void 0,{sensitivity:"base"});return i==="ascending"?l:-l}),[a,i]);return e(w,{children:o(B,{onSortChange:({direction:t,column:s})=>{r(String(s)),d(t)},sortDescriptor:{direction:i,column:p},children:[o(R,{children:[e(u,{id:"compliance",style:{width:"5%"},children:"Compliance"}),e(u,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"75%"},children:"Name"}),e(u,{id:"checks",style:{width:"20%"},children:"Checks"})]}),e(T,{children:c.map(t=>e(O,{check:t,checkStatuses:m},t.id))})]})})};export{U as ChecksTable};
|
|
2
|
+
//# sourceMappingURL=ChecksTable.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{TagGroup as t,Tag as a}from"@backstage/ui";function c({options:i,selected:n,ariaLabel:r,onSelectionChange:l}){return o(t,{"aria-label":r,selectionMode:"single",selectedKeys:n,onSelectionChange:l,children:i.map(e=>o(a,{id:e,children:e},e))})}export{c as ChipSelector};
|
|
2
|
+
//# sourceMappingURL=ChipSelector.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as n,jsx as e}from"react/jsx-runtime";import{Content as $,LinkButton as O}from"@backstage/core-components";import{useRouteRef as b}from"@backstage/core-plugin-api";import{usePermission as F}from"@backstage/plugin-permission-react";import{makeStyles as W,Box as r,Button as x,Typography as l,Card as q,CardHeader as z,CardContent as Y,Tooltip as _,CardActions as J}from"@material-ui/core";import{Alert as K}from"@material-ui/lab";import{soundcheckCollectorReadPermission as Q,soundcheckCollectorUpdatePermission as X,parseFactRef as M,asArray as Z}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as U,uniq as ee}from"lodash";import{useMemo as N,useCallback as te,useEffect as oe}from"react";import{useParams as ie,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"../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as ne}from"../../hooks/useConfirmationModal.esm.js";import{useGetCollectors as ae}from"../../hooks/collectors/useGetCollectors.esm.js";import{useDeleteCollectorConfig as ce}from"../../hooks/collectors/useDeleteCollectorConfig.esm.js";import{useLCPReporting as se}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as de}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationEditRouteRef as le,integrationsPageRouteRef as me,checkDetailsRouteRef as pe}from"../../routes.esm.js";import{mapRuleToExpression as fe}from"../CheckForm/utils/checkFormUtils.esm.js";import{ConfigurableCollectorIds as he}from"../CollectorsPage/CollectorListPage/CollectorListPage.esm.js";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import{FactExplorerProvider as ge}from"../FactExplorer/FactExplorerContext.esm.js";import{LoadingIndicator as ue}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as Ce}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as ye}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContent as ve}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"react-markdown";import"rehype-raw";import"remark-gfm";import{CollectorFactTable as Re}from"./CollectorFactTable.esm.js";const ke=W(d=>({card:{width:360},cardDescription:{"& p":{marginTop:d.spacing(.5),marginBottom:d.spacing(.5)}},cardContent:{flexGrow:1}})),Ie=({id:d,title:g,description:u,rules:t,integrationId:m,hasSchedule:C})=>{const p=ke(),k=b(pe),y=N(()=>{const c=[],v=s=>{for(const a of s.conditions??[])c.push(a.factRef),typeof a.value=="object"&&Object.hasOwn(a.value,"factRef")&&c.push(a.value.factRef);for(const a of s.expressions??[])v(a)};return t&&v(t),ee(c).filter(s=>{try{return M(s).source===m}catch{return!1}})},[m,t]);return n(q,{className:p.card,children:[e(z,{title:g}),n(Y,{className:p.cardContent,children:[u&&e(r,{overflow:"auto",maxHeight:200,children:e(ve,{className:p.cardDescription,content:u})}),!U(y)&&n(r,{marginTop:1,overflow:"auto",maxHeight:120,children:[e(l,{variant:"subtitle2",children:"Used Fact Refs"}),y.map(c=>e(r,{children:c},"factRef"))]}),C&&e(r,{marginTop:1,children:e(_,{title:"Configure this integration's collection schedule instead.",children:e(K,{severity:"warning",children:"Check Schedule Detected"})})})]}),e(J,{children:e(O,{variant:"outlined",to:k({checkId:d}),target:"_blank",children:"View"})})]})},we=({id:d,integrations:g})=>{const u=ie(),t=d??u.integrationId,m=N(()=>({routeName:"soundcheck-integration-details",additionalAttributes:{integrationId:t||""}}),[t]),{reportContentLoaded:C}=de(m),{reporter:p}=se(m),{data:k,isLoading:y}=ae([t??""]),{loading:c,allowed:v}=F({permission:Q}),{loading:s,allowed:a}=F({permission:X}),{showModal:P}=ne(),{mutate:B,isPending:I}=ce(t??""),G=te(async()=>{!await P({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."})||I||B()},[B,I,P]),o=k?.[0],f=y||s||c,S=g?.map(i=>i.integrationId)??he,T=g?.find(i=>i.integrationId===t)?.routePath,A=!s&&a&&o?.isEditable&&o?.isConfigurable&&S.includes(t??""),w=re(),L=b(le),E=b(me),H=o?.hasUIConfig,j=N(()=>n(r,{display:"flex",gridGap:12,children:[e(x,{variant:"contained",color:"primary",onClick:()=>{w(E())},children:"All Integrations"}),t&&A&&e(x,{variant:"contained",color:"primary",onClick:()=>{w(T??L({integrationId:t}))},children:"Edit Integration"})]}),[E,T,L,t,A,w]);ye({title:o?.name??t,description:o?o.description??"":"",docLink:o?`https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/${o.id}`:"",sectionRight:j});const D=p?.getLCPValue();return oe(()=>{f||C({lcp:D})},[f,C,D]),e(ge,{hidePath:!0,children:n($,{children:[f&&e(ue,{}),e(Ce,{entityName:"Integration",entityId:t,showNotFound:!f&&!o,showCannotView:!f&&!v}),o&&n(r,{children:[n(r,{marginBottom:2,children:[e(l,{variant:"h6",children:"Facts"}),e(r,{marginBottom:2,children:e(Re,{facts:o.factNames.map(i=>{const R=(h=>{try{return M(h).name}catch{return h}})(i),V=Z(o.config?.collects).find(h=>h?.type===R||h?.factName===R);return{factRef:`${t}:default/${R}`,factName:R,config:V,uiConfig:!!o.hasUIConfig,parentConfig:o.config}})})})]}),n(r,{marginBottom:2,children:[e(l,{variant:"h6",children:"Dependant Checks"}),U(o.dependentChecks)?e(l,{variant:"body2",children:"No dependant checks"}):e(r,{display:"flex",gridGap:12,flexWrap:"wrap",children:o.dependentChecks.map(i=>e(Ie,{id:i.id,title:i.name??i.id,description:i.description??void 0,rules:fe(i.rule),integrationId:t,hasSchedule:i.schedule},i.id))})]}),a&&H&&n(r,{marginBottom:2,children:[e(l,{variant:"h6",children:"Admin Actions"}),o.hasUIConfig&&n(r,{marginTop:1,display:"flex",alignItems:"center",gridGap:16,children:[e(x,{disabled:I,size:"small",variant:"contained",color:"secondary",onClick:G,children:"Remove Config"}),e(l,{variant:"body2",color:"textSecondary",children:"Revert to using YAML to config this integration by deleting the stored UI config from the database."})]})]})]})]})})};export{we as CollectorDetailsPage};
|
|
2
2
|
//# sourceMappingURL=CollectorDetailsPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as
|
|
1
|
+
import{jsx as e,jsxs as r}from"react/jsx-runtime";import{makeStyles as m,TableContainer as g,Paper as p,Table as u,TableHead as b,TableRow as l,TableCell as n,TableBody as C,Box as t}from"@material-ui/core";import{isEmpty as T}from"lodash";import{getCronDescription as x}from"../../utils/cron.esm.js";import{FactExplorerDialogButton as y}from"../FactExplorer/FactExplorerDialog.esm.js";import"../FactExplorer/FactExplorerContext.esm.js";const N=m(c=>({noConfig:{color:c.palette.action.disabled}})),F=({facts:c})=>{const a=N();return e(g,{component:p,children:r(u,{size:"small",children:[e(b,{children:r(l,{children:[e(n,{children:"Fact Name"}),e(n,{align:"center",width:120,children:"Source"}),e(n,{children:"Schedule"}),e(n,{align:"center",width:150,children:"Test"})]})}),r(C,{children:[T(c)&&e(l,{children:e(n,{colSpan:10,children:"No Available Facts Found for Integration"})}),c.map(({factName:s,config:i,uiConfig:h,factRef:d,parentConfig:f})=>{const o=i?.frequency??f?.frequency;return r(l,{children:[e(n,{children:e("strong",{children:s})}),r(n,{className:i?void 0:a.noConfig,align:"center",children:[!i&&"No Config",i&&(h?"UI":"YAML")]}),r(n,{children:[o&&(o.cron?r(t,{children:["cron(",o.cron,")"," ",x(o.cron)]}):r(t,{children:["Every ",Object.values(o)[0]," ",Object.keys(o)[0]]})),!o&&e(t,{className:a.noConfig,children:"No Schedule Configured"})]}),e(n,{align:"center",children:e(y,{variant:"text",factRef:d,size:"small",text:"Test"})})]},d)})]})]})})};export{F as CollectorFactTable};
|
|
2
2
|
//# sourceMappingURL=CollectorFactTable.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as c,jsx as
|
|
1
|
+
import{jsxs as c,jsx as r}from"react/jsx-runtime";import{Content as p}from"@backstage/core-components";import{usePermission as f}from"@backstage/plugin-permission-react";import{soundcheckCollectorUpdatePermission as g}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as u}from"react-router-dom";import{useGetCollectors as C}from"../../hooks/collectors/useGetCollectors.esm.js";import{LoadingIndicator as I}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as P}from"../PageWarningMessage/PageWarningMessage.esm.js";import{Configurator as h}from"./Configurators/Configurator.esm.js";const w=({collectorId:n})=>{const s=u(),e=n??s.integrationId,{data:m,isLoading:a}=C([e??""]),{loading:d,allowed:l}=f({permission:g}),o=m?.[0],t=a||d,i=l&&o?.isEditable;return c(p,{children:[t&&r(I,{}),r(P,{entityName:"Integration",entityId:e,showNotFound:!t&&!o,showCannotEdit:!t&&!i}),o&&i&&r(h,{selectedCollector:o})]})};export{w as CollectorPage};
|
|
2
2
|
//# sourceMappingURL=CollectorPage.esm.js.map
|
package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
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{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,f=G(),g=!h,{mutateAsync:O}=q(),[y,v]=W(z),{showModal:D}=I(),p=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:f.section,children:e(R,{...m,children:u("form",{onSubmit:c(p),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:f.section,children:e(w,{onCancel:y,saveButtonText:"Save",isLoading:!1,onSave:c(p),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{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)},[]),
|
|
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{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};
|
|
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{useUpdateCollectorConfig as w}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as N}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as D,confirmationModalContent as M}from"../Common/utils.esm.js";import{mapConfigToCatalogCollectorConfig as P,defaultCatalogConfig as T,mapCatalogCollectorConfigToConfig as j}from"./utils.esm.js";const H=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),R=({disabled:t,selectedCollector:r})=>{const i=v({defaultValues:r?P(r.config):T(),mode:"onChange"}),{formState:{errors:n},handleSubmit:e}=i,a=H(),s=!!n.entityDescriptor,{mutateAsync:l}=w(),[c,p]=B(x),{showModal:f}=y(),m=async g=>{if(!await f(M(r)))return;const d=j(g);await l({collectorId:r.id,config:d})&&p()};return N(D(r)),C(u,{children:[o(S,{className:a.form,children:o(b,{...i,children:o("form",{onSubmit:e(m),children:o(k,{name:"entityDescriptor",label:"Entity Descriptor",description:"Collects entities from Backstage's Software Catalog.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:c,saveButtonText:"Save",isLoading:!1,onSave:e(m),disableSave:s})})]})};export{R as CatalogConfigurator};
|
|
1
|
+
import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as v,FormProvider as b}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as w}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as N}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as D,confirmationModalContent as M}from"../Common/utils.esm.js";import{mapConfigToCatalogCollectorConfig as P,defaultCatalogConfig as T,mapCatalogCollectorConfigToConfig as j}from"./utils.esm.js";const H=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),R=({disabled:t,selectedCollector:r})=>{const i=v({defaultValues:r?P(r.config):T(),mode:"onChange"}),{formState:{errors:n},handleSubmit:e}=i,a=H(),s=!!n.entityDescriptor,{mutateAsync:l}=w(),[c,p]=B(x),{showModal:f}=y(),m=async g=>{if(!await f(M(r)))return;const d=j(g);await l({collectorId:r.id,config:d})&&p()};return N(D(r)),C(u,{children:[o(S,{className:a.form,children:o(b,{...i,children:o("form",{onSubmit:e(m),children:o(k,{name:"entityDescriptor",label:"Entity Descriptor",description:"Collects entities from Backstage's Software Catalog.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:c,saveButtonText:"Save",isLoading:!1,onSave:e(m),disableSave:s})})]})};export{R as CatalogConfigurator};
|
|
2
2
|
//# sourceMappingURL=CatalogConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
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{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(),[f,p]=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})&&p()};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:f,saveButtonText:"Save",isLoading:!1,onSave:a(m),disableSave:s})})]})};export{H as DataDogConfigurator};
|
|
2
2
|
//# sourceMappingURL=DataDogConfigurator.esm.js.map
|
package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js
CHANGED
|
@@ -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{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:e})=>{const r=y({defaultValues:e?M(e.config):P(),mode:"onChange"}),{formState:{errors:n},handleSubmit:i}=r,a=k(),s=!!n.datasetSchema,{mutateAsync:c}=D(),[l,p]=b(B),{showModal:f}=R(),m=async d=>{if(!await f(T(e)))return;const g=j(d);await c({collectorId:e.id,config:g})&&p()};return w(N(e)),C(u,{children:[o(S,{className:a.form,children:o(v,{...r,children:o("form",{onSubmit:i(m),children:o(x,{name:"datasetSchema",label:"Dataset Schema",description:"Collects fields (name, type, description) from a dataset in Data Registry.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:l,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:s})})]})};export{H as DataRegistryConfigurator};
|
|
1
|
+
import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as y,FormProvider as v}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as R}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as b}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{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:e})=>{const r=y({defaultValues:e?M(e.config):P(),mode:"onChange"}),{formState:{errors:n},handleSubmit:i}=r,a=k(),s=!!n.datasetSchema,{mutateAsync:c}=D(),[l,p]=b(B),{showModal:f}=R(),m=async d=>{if(!await f(T(e)))return;const g=j(d);await c({collectorId:e.id,config:g})&&p()};return w(N(e)),C(u,{children:[o(S,{className:a.form,children:o(v,{...r,children:o("form",{onSubmit:i(m),children:o(x,{name:"datasetSchema",label:"Dataset Schema",description:"Collects fields (name, type, description) from a dataset in Data Registry.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:l,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:s})})]})};export{H as DataRegistryConfigurator};
|
|
2
2
|
//# sourceMappingURL=DataRegistryConfigurator.esm.js.map
|
package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as u,jsx as e}from"react/jsx-runtime";import{Typography as n,Box as m,TextField as c}from"@material-ui/core";import{useFormContext as S,Controller as s}from"react-hook-form";import{FormControlledAutocomplete as p}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{
|
|
1
|
+
import{jsxs as u,jsx as e}from"react/jsx-runtime";import{Typography as n,Box as m,TextField as c}from"@material-ui/core";import{useFormContext as S,Controller as s}from"react-hook-form";import{FormControlledAutocomplete as p}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import"react";import{useLabelValueOptions as f}from"../../../FormControlledAutocomplete/useLabelValueOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as d}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as x}from"./GithubConfigurator.esm.js";import{CODE_SCANNING_ALERTS_STATE_OPTIONS as T,CODE_SCANNING_ALERTS_SEVERITY_OPTIONS as v}from"./types.esm.js";const b=({name:r,disabled:a})=>{const l=x(),{control:i}=S(),h=f(T.map(t=>({label:t,value:t}))),N=f(v.map(t=>({label:t,value:t})));return u("div",{className:l.root,children:[e(d,{title:"Fact Name"}),e(n,{variant:"caption",children:"Fact name must be unique"}),e(m,{children:e(s,{name:`${r}.factName`,control:i,render:({field:t,fieldState:{error:o}})=>e(c,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:l.formInput,disabled:a,error:!!o,helperText:o?.message,FormHelperTextProps:{className:l.helperText}})})}),e(d,{title:"Code Scanning Tool Name"}),e(n,{variant:"caption",children:"Optional, if not provided results by all code scanning tools will be collected"}),e(m,{children:e(s,{name:`${r}.toolName`,control:i,render:({field:t,fieldState:{error:o}})=>e(c,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Example: CodeQL",className:l.formInput,disabled:a,error:!!o,helperText:o?.message,FormHelperTextProps:{className:l.helperText}})})}),e(d,{title:"Code Scanning Alert State"}),e(n,{variant:"caption",children:"Optional, if not provided code scanning alerts with all states will be collected"}),e(m,{className:l.formInput,children:e(p,{name:`${r}.state`,control:i,fullWidth:!0,freeSolo:!1,disabled:a,placeholder:"Example: open",...h})}),e(d,{title:"Code Scanning Alert Severity"}),e(n,{variant:"caption",children:"Optional, if not provided code scanning alerts with all severities will be collected"}),e(m,{className:l.formInput,children:e(p,{name:`${r}.severity`,control:i,fullWidth:!0,freeSolo:!1,disabled:a,placeholder:"Example: critical",...N})})]})};export{b as CodeScanningAlertsFactDetails};
|
|
2
2
|
//# sourceMappingURL=CodeScanningAlertsFactDetails.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as d,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{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 p=F(o=>({spacer:{height:o.spacing(8),width:"100%"},section:{marginBottom:o.spacing(2)},form:{marginBottom:o.spacing(2)},root:{paddingTop:o.spacing(1)},formInput:{marginTop:0,marginBottom:o.spacing(2),width:"500px"},helperText:{marginLeft:0}})),U=({disabled:o,selectedCollector:a})=>{const s=D({defaultValues:a?_(a.config):j(),mode:"onChange",resolver:A(H)}),{formState:{errors:t},handleSubmit:l}=s,c=p(),f=!!t.branchProtections||!!t.branchRules||!!t.codeScanningAlerts||!!t.dependabotAlerts||!!t.repositoryDetails||!!t.repositoryLanguages||!!t.secretScanningAlerts||!!t.securityAdvisories,{mutateAsync:u}=T(),[g,b]=L(x),{showModal:C}=B(),m=async y=>{if(!await C(G(a)))return;const h=k(y);await u({collectorId:a.id,config:h})&&b()};return P(w(a)),d(S,{children:[e(v,{className:c.form,children:e(R,{...s,children:d("form",{onSubmit:l(m),children:[e(i,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"branchRules",label:"Branch Rules",description:"Collects branch rules information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"codeScanningAlerts",label:"Code Scanning Alerts",description:"Collects details about code scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:E,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"dependabotAlerts",label:"Dependabot Alerts",description:"Collects details about dependabot alerts for an entity's repository.",disabled:o,FactDetailsComponent:I,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"repositoryLanguages",label:"Repository Languages",description:"Collects details about the languages used in an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"secretScanningAlerts",label:"Secret Scanning Alerts",description:"Collects details about secret scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:M,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"securityAdvisories",label:"Security Advisories",description:"Collects details about security advisories for an entity's repository.",disabled:o,FactDetailsComponent:O,multipleCollectors:{enable:!0,defaultConfig:n}})]})})}),e("div",{className:c.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(m),disableSave:f})})]})};export{U as GithubConfigurator,p as useStyles};
|
|
1
|
+
import{jsxs as d,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{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 p=F(o=>({spacer:{height:o.spacing(8),width:"100%"},section:{marginBottom:o.spacing(2)},form:{marginBottom:o.spacing(2)},root:{paddingTop:o.spacing(1)},formInput:{marginTop:0,marginBottom:o.spacing(2),width:"500px"},helperText:{marginLeft:0}})),U=({disabled:o,selectedCollector:a})=>{const s=D({defaultValues:a?_(a.config):j(),mode:"onChange",resolver:A(H)}),{formState:{errors:t},handleSubmit:l}=s,c=p(),f=!!t.branchProtections||!!t.branchRules||!!t.codeScanningAlerts||!!t.dependabotAlerts||!!t.repositoryDetails||!!t.repositoryLanguages||!!t.secretScanningAlerts||!!t.securityAdvisories,{mutateAsync:u}=T(),[g,b]=L(x),{showModal:C}=B(),m=async y=>{if(!await C(G(a)))return;const h=k(y);await u({collectorId:a.id,config:h})&&b()};return P(w(a)),d(S,{children:[e(v,{className:c.form,children:e(R,{...s,children:d("form",{onSubmit:l(m),children:[e(i,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"branchRules",label:"Branch Rules",description:"Collects branch rules information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"codeScanningAlerts",label:"Code Scanning Alerts",description:"Collects details about code scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:E,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"dependabotAlerts",label:"Dependabot Alerts",description:"Collects details about dependabot alerts for an entity's repository.",disabled:o,FactDetailsComponent:I,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"repositoryLanguages",label:"Repository Languages",description:"Collects details about the languages used in an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"secretScanningAlerts",label:"Secret Scanning Alerts",description:"Collects details about secret scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:M,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"securityAdvisories",label:"Security Advisories",description:"Collects details about security advisories for an entity's repository.",disabled:o,FactDetailsComponent:O,multipleCollectors:{enable:!0,defaultConfig:n}})]})})}),e("div",{className:c.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(m),disableSave:f})})]})};export{U as GithubConfigurator,p as useStyles};
|
|
2
2
|
//# sourceMappingURL=GithubConfigurator.esm.js.map
|
package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as d,jsx as e}from"react/jsx-runtime";import{Typography as i,Box as n,TextField as f}from"@material-ui/core";import{useFormContext as u,Controller as S}from"react-hook-form";import{FormControlledAutocomplete as h}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{FormControlledMultipleAutocomplete as N}from"../../../FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js";import{useLabelOptions as T}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import{useLabelValueOptions as b}from"../../../FormControlledAutocomplete/useLabelValueOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as m}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as v}from"./GithubConfigurator.esm.js";import{SECRET_SCANNING_ALERTS_STATE_OPTIONS as x,SECRET_SCANNING_ALERTS_VALIDITY_OPTIONS as A}from"./types.esm.js";const F=({name:r,disabled:o})=>{const l=v(),{control:a}=u(),s=b(x.map(t=>({label:t,value:t}))),p=T(A.map(t=>({label:t,value:t})));return d("div",{className:l.root,children:[e(m,{title:"Fact Name"}),e(i,{variant:"caption",children:"Fact name must be unique"}),e(n,{children:e(S,{name:`${r}.factName`,control:a,render:({field:t,fieldState:{error:c}})=>e(f,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:l.formInput,disabled:o,error:!!c,helperText:c?.message,FormHelperTextProps:{className:l.helperText}})})}),e(m,{title:"Secret Scanning Alert State"}),e(i,{variant:"caption",children:"Optional, if not provided secret scanning alerts with all states will be collected"}),e(n,{className:l.formInput,children:e(h,{name:`${r}.state`,control:a,fullWidth:!0,freeSolo:!1,disabled:o,placeholder:"Example: open",...s})}),e(m,{title:"Secret Scanning Alert Validities"}),e(i,{variant:"caption",children:"Optional, if not provided secret scanning alerts with all validities will be collected"}),e(n,{className:l.formInput,children:e(N,{name:`${r}.validities`,control:a,fullWidth:!0,freeSolo:!1,disabled:o,placeholder:"Example: active",...p})})]})};export{F as SecretScanningAlertsFactDetails};
|
|
2
2
|
//# sourceMappingURL=SecretScanningAlertsFactDetails.esm.js.map
|
package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as d,jsx as e}from"react/jsx-runtime";import{Typography as m,Box as s,TextField as c}from"@material-ui/core";import{useFormContext as u,Controller as f}from"react-hook-form";import{FormControlledAutocomplete as h}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{
|
|
1
|
+
import{jsxs as d,jsx as e}from"react/jsx-runtime";import{Typography as m,Box as s,TextField as c}from"@material-ui/core";import{useFormContext as u,Controller as f}from"react-hook-form";import{FormControlledAutocomplete as h}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import"react";import{useLabelValueOptions as x}from"../../../FormControlledAutocomplete/useLabelValueOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as p}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as S}from"./GithubConfigurator.esm.js";import{SECURITY_ADVISORIES_STATE_OPTIONS as F}from"./types.esm.js";const b=({name:o,disabled:l})=>{const t=S(),{control:i}=u(),n=x(F.map(r=>({label:r,value:r})));return d("div",{className:t.root,children:[e(p,{title:"Fact Name"}),e(m,{variant:"caption",children:"Fact name must be unique"}),e(s,{children:e(f,{name:`${o}.factName`,control:i,render:({field:r,fieldState:{error:a}})=>e(c,{...r,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:t.formInput,disabled:l,error:!!a,helperText:a?.message,FormHelperTextProps:{className:t.helperText}})})}),e(p,{title:"Security Advisory State"}),e(m,{variant:"caption",children:"Optional, if not provided security advisories with all states will be collected"}),e(s,{className:t.formInput,children:e(h,{name:`${o}.state`,control:i,fullWidth:!0,freeSolo:!1,disabled:l,placeholder:"Example: published",...n})})]})};export{b as SecurityAdvisoriesFactDetails};
|
|
2
2
|
//# sourceMappingURL=SecurityAdvisoriesFactDetails.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{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as D}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as G,confirmationModalContent as L}from"../Common/utils.esm.js";import{mapConfigToGitlabCollectorConfig as N,defaultGitlabConfig as T,mapGitlabCollectorConfigToConfig as M}from"./utils.esm.js";const k=j(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const a=P({defaultValues:e?N(e.config):T(),mode:"onChange"}),{formState:{errors:i},handleSubmit:n}=a,m=k(),p=!!i.branchProtections||!!i.projectDetails||!!i.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(e)))return;const b=M(C);await d({collectorId:e.id,config:b})&&g()};return D(G(e)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(r,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectLanguages",label:"Project Languages",description:"Collects details about the languages used in an entity's project.",disabled:t})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:p})})]})};export{H as GitlabConfigurator};
|
|
1
|
+
import{jsxs as l,Fragment as h,jsx as o}from"react/jsx-runtime";import{makeStyles as j,Paper as v,Divider as c}from"@material-ui/core";import{useForm as P,FormProvider as S}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as D}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as G,confirmationModalContent as L}from"../Common/utils.esm.js";import{mapConfigToGitlabCollectorConfig as N,defaultGitlabConfig as T,mapGitlabCollectorConfigToConfig as M}from"./utils.esm.js";const k=j(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const a=P({defaultValues:e?N(e.config):T(),mode:"onChange"}),{formState:{errors:i},handleSubmit:n}=a,m=k(),p=!!i.branchProtections||!!i.projectDetails||!!i.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(e)))return;const b=M(C);await d({collectorId:e.id,config:b})&&g()};return D(G(e)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(r,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectLanguages",label:"Project Languages",description:"Collects details about the languages used in an entity's project.",disabled:t})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:p})})]})};export{H as GitlabConfigurator};
|
|
2
2
|
//# sourceMappingURL=GitlabConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as b,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as H,Paper as S}from"@material-ui/core";import{useCallback as q}from"react";import{useForm as N,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import{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)},[]),n=N({defaultValues:t?A(t.config):D(),mode:"onChange",resolver:s}),{formState:{isValid:c},handleSubmit:a}=n,m=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:m.section,children:o(R,{...n,children:o("form",{onSubmit:a(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:m.section,children:o(B,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:a(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{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)},[]),n=N({defaultValues:t?A(t.config):D(),mode:"onChange",resolver:s}),{formState:{isValid:c},handleSubmit:a}=n,m=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:m.section,children:o(R,{...n,children:o("form",{onSubmit:a(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:m.section,children:o(B,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:a(l),disableSave:p})})]})};export{E as HttpConfigurator};
|
|
2
2
|
//# sourceMappingURL=HttpConfigurator.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as o,jsx as e}from"react/jsx-runtime";import{makeStyles as x,Grid as l,Typography as m,Box as c,TextField as d}from"@material-ui/core";import{useFormContext as u,Controller as p}from"react-hook-form";import{FormFieldLabel as h}from"../../../FormFieldLabel/FormFieldLabel.esm.js";const g=x(a=>({root:{paddingTop:a.spacing(1)},textInput:{marginTop:0,width:"500px"},helperText:{marginLeft:0}})),T=({name:a,disabled:i})=>{const t=g(),{control:s}=u();return o(l,{container:!0,spacing:1,direction:"column",className:t.root,children:[o(l,{item:!0,children:[e(h,{title:"Fact Name"}),e(m,{variant:"caption",children:"Fact name must be unique"}),e(c,{children:e(p,{name:`${a}.factName`,control:s,render:({field:n,fieldState:{error:r}})=>e(d,{...n,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:t.textInput,disabled:i,error:!!r,helperText:r?.message,FormHelperTextProps:{className:t.helperText}})})})]}),o(l,{item:!0,children:[e(h,{title:"Jira Query Language (Optional)",docLink:"https://www.atlassian.com/software/jira/guides/jql/cheat-sheet"}),e(m,{variant:"caption",children:"The value will be concatenated with JQL from 'atlassian.net/jql' annotation."}),e(c,{children:e(p,{name:`${a}.jql`,control:s,render:({field:n,fieldState:{error:r}})=>e(d,{...n,type:"text",variant:"outlined",margin:"dense",placeholder:'Example: status = "To Do" AND created >= -30d',className:t.textInput,disabled:i,error:!!r,helperText:r?.message,FormHelperTextProps:{className:t.helperText}})})})]})]})};export{T as IssuesFactDetailsComponent};
|
|
2
|
+
//# sourceMappingURL=IssuesFactDetailsComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
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{useUpdateCollectorConfig as B}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as M}from"../../../../routes.esm.js";import{FooterButtons as R}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as U}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as m}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as q}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as H,confirmationModalContent as O}from"../Common/utils.esm.js";import{IssuesFactDetailsComponent as p}from"./IssuesFactDetailsComponent.esm.js";import{mapConfigToJiraCollectorConfig as Q,defaultJiraConfig as _,issuesCollectorConfig as d,mapJiraCollectorConfigToConfig as z}from"./utils.esm.js";import{jiraCollectorFormSchema as V}from"./validation.esm.js";const E=D(r=>({spacer:{height:r.spacing(8),width:"100%"},section:{marginBottom:r.spacing(2)},apiLink:{color:r.palette.text.primary}})),G=({disabled:r,selectedCollector:e})=>{const t=A({defaultValues:e?Q(e.config):_(),mode:"onChange",resolver:y(V)}),{formState:{errors:u},handleSubmit:n}=t,a=E(),f=!!u.issuesSearch,{mutateAsync:h}=B(),[g,C]=x(M),{showModal:S}=T(),c=async k=>{if(!await S(O(e)))return;const I=z(k);await h({collectorId:e.id,config:I})&&C()};U(H(e));const b=!e.config?.apiToken||!e.config?.username,v=!e.config?.personalAccessToken,J=!e.config?.baseUrl||b&&v,s={issuesSearchDeprecated:{name:"Search for issues using JQL",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-search/#api-rest-api-2-search-get"},issuesSearchNew:{name:"Search for issues using JQL enhanced search",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-post"}};return i(N,{children:[o(q,{collectorName:"Jira",collectorId:e.id,invalidConfig:J,hasNonUIOptions:!0}),o(w,{message:i(F,{variant:"body2",children:["Issues Search fact collector now uses the updated",o(l,{href:s.issuesSearchNew.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",s.issuesSearchNew.name," "]})}),"API, as the previous",o(l,{href:s.issuesSearchDeprecated.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",s.issuesSearchDeprecated.name," "]})}),"API was deprecated and removed for Jira Cloud instances. Jira Cloud users may be required to update their dependent checks due to this minor API schema change."]}),variant:"warning",id:"jiraDeprecatedIssuesSearch"}),o(j,{className:a.section,children:o(P,{...t,children:i("form",{onSubmit:n(c),children:[o(m,{name:"issuesSearch",label:"Issues Search",description:"Collects details about Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}}),o(L,{}),o(m,{name:"issuesCount",label:"Issues Count",description:"Collects details about a total number of Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}})]})})}),o("div",{className:a.section,children:o(R,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:n(c),disableSave:f})})]})};export{G as JiraConfigurator};
|
|
2
2
|
//# sourceMappingURL=JiraConfigurator.esm.js.map
|