@spotify/backstage-plugin-soundcheck 0.12.9 → 0.12.10
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 +16 -0
- package/alpha/package.json +2 -2
- package/dist/api.esm.js +1 -1
- package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
- package/dist/components/CacheConfig/utils.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignChecks.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignDetailsPage.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignResultsTable.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignListPage/CampaignListPage.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignListPage/useArchiveConfirmationModal.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/CampaignForm.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/EditCampaignView.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignScheduleField/CampaignScheduleField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignSupportChannelField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignMilestonesStep.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignTrackStep.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/hooks/utils.esm.js +1 -1
- package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
- package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
- package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
- package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
- package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
- package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
- package/dist/components/CheckCard/CheckCard.esm.js +1 -1
- package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
- package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
- package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +2 -0
- package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +2 -0
- package/dist/components/CheckPage/CheckEntitiesTable/utils.esm.js +2 -0
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +2 -0
- package/dist/components/CheckPage/CheckPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusBar.esm.js +2 -0
- package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +2 -0
- package/dist/components/CheckPage/CheckStatusTable.esm.js +2 -0
- package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +2 -0
- package/dist/components/CheckPage/StatusRow.esm.js +2 -0
- package/dist/components/CheckPage/utils.esm.js +2 -0
- package/dist/components/ChecksErrors/ChecksErrors.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/ControlledAutocomplete.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/useRuleInputHandlers.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/utils/checkFormUtils.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/FactCollectionConfig.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
- package/dist/components/DraggableChip/DraggableChip.esm.js +1 -1
- package/dist/components/DroppableInput/DroppableInput.esm.js +1 -1
- package/dist/components/EditTrackPage/EditTrackPage.esm.js +1 -1
- package/dist/components/EmptyState/EmptyState.esm.js +1 -1
- package/dist/components/EntityContent/EntityContent.esm.js +1 -1
- package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
- package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
- package/dist/components/Filter/FilterComponent.esm.js +1 -1
- package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
- package/dist/components/Filter/utils.esm.js +1 -1
- package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
- package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
- package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
- package/dist/components/Frequency/util.esm.js +1 -1
- package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
- package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
- package/dist/components/LevelCard/LevelCard.esm.js +1 -1
- package/dist/components/LevelCard/LevelTooltip.esm.js +1 -1
- package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
- package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
- package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
- package/dist/components/OverviewPage/CampaignRow/CampaignRow.esm.js +1 -1
- package/dist/components/OverviewPage/CampaignRow/utils.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewTabs.esm.js +1 -1
- package/dist/components/OverviewPage/TableContent/TableContent.esm.js +1 -1
- package/dist/components/OverviewPage/TableContent/VirtualTableContent.esm.js +1 -1
- package/dist/components/Pagination/CursorPagination.esm.js +1 -1
- package/dist/components/Pagination/Pagination.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
- package/dist/components/ResultsTable/CheckCell/CheckCell.esm.js +1 -1
- package/dist/components/ResultsTable/HighestLevelBadge.esm.js +1 -1
- package/dist/components/ResultsTable/ProgramCheckIndicator.esm.js +1 -1
- package/dist/components/ResultsTable/ProgramCheckRow.esm.js +1 -1
- package/dist/components/ResultsTable/ProgramTitleRow.esm.js +1 -1
- package/dist/components/ResultsTable/ResultsTableFooter.esm.js +1 -1
- package/dist/components/ResultsTable/skeletons/ResultsTableSkeleton.esm.js +1 -1
- package/dist/components/ResultsTable/virtualized/Row.esm.js +1 -1
- package/dist/components/ResultsTable/virtualized/VirtualizedResultsTable.esm.js +1 -1
- package/dist/components/Router.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/SearchBar/SearchBar.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/TechHealth/Filters/FacetFilter.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
- package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
- package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
- package/dist/components/TechHealth/Filters/utils.esm.js +1 -1
- package/dist/components/TechHealth/TechHealth.esm.js +1 -1
- package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
- package/dist/components/TechHealthTabs/TechHealthExportFunctions.esm.js +1 -1
- package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
- package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
- package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
- package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
- package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackLevelsChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +47 -27
- package/dist/hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js +1 -1
- package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
- package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
- package/dist/hooks/certifications/useProgramOverviewForOwner.esm.js +1 -1
- package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
- package/dist/hooks/checks/useExecuteCheck.esm.js +2 -0
- package/dist/hooks/entities/useCheckEntities.esm.js +2 -0
- package/dist/hooks/entities/useEntityRefsForUser.esm.js +1 -1
- package/dist/hooks/facets/useFacetFilters.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/useUsersGroupClaims.esm.js +1 -1
- package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
- package/dist/hooks/tracks/useGetChecksMap.esm.js +1 -1
- package/dist/images/k8s_blue.svg +108 -0
- package/dist/images/k8s_white.svg +108 -0
- package/dist/routes.esm.js +1 -1
- package/dist/text.esm.js +1 -1
- package/package.json +26 -19
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import t from"react";import{ResponsiveContainer as o}from"recharts";import{MIN_CHART_HEIGHT as i}from"../ChartTypes.esm.js";const m=({children:r,height:e})=>t.createElement(o,{height:e,minHeight:e??i,debounce:1},r);export{m as ChartWrapper};
|
|
2
2
|
//# sourceMappingURL=ChartWrapper.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as
|
|
1
|
+
import{parseEntityRef as c}from"@backstage/catalog-model";import{DateTime as d}from"luxon";import f from"react";import{useSummaryAggregationsContext as l}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{formatDate as u}from"../chartUtils.esm.js";import{LineChart as y}from"./LineChart.esm.js";const R=t=>{const e=t?.overallEntityPassRates||[];if(!e.length)return[];const a=d.utc();return e.reduce((r,{trendPassRates:o,id:i},p)=>{const m=o?.map((n,s)=>({name:u(a,o.length-s-1),[i]:n}))??[];return p===0?m:r.map((n,s)=>({...n,...m[s]}))},[])},g=()=>{const{entityPassRatesOverviewTrends:{data:t}}=l(),e=t?.overallEntityPassRates?.map(({id:r})=>({dataKey:r,name:c(r).name}))??[],a=R(t);return f.createElement(y,{data:a,lines:e})};export{g as EntityPassRateHistoryLineChart};
|
|
2
2
|
//# sourceMappingURL=EntityPassRateHistoryLineChart.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Typography as
|
|
1
|
+
import{Typography as d}from"@material-ui/core";import{DateTime as f}from"luxon";import l from"react";import{useSummaryAggregationsContext as u}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{formatDate as v}from"../chartUtils.esm.js";import{LineChart as g}from"./LineChart.esm.js";const i=r=>{const t=r?.overallTrackPassRate||[];if(!t.length)return[];const a=f.utc();return t.reduce((o,{trendPassRates:e,levelOrdinal:c},p)=>{const s=e?.map((n,m)=>({name:v(a,e.length-m-1),[`Level${c}`]:n}))??[];return p===0?s:o.map((n,m)=>({...n,...s[m]}))},[])},h=()=>{const{trackPassRateOverviewTrend:{data:r,isError:t}}=u();if(t)return l.createElement(d,{color:"error"},"Failed to load track data.");const a=i(r),o=r?.overallTrackPassRate?.map(({levelOrdinal:e})=>({dataKey:`Level${e}`,name:`Level ${e}`}))??[];return l.createElement(g,{data:a,lines:o})};export{h as TrackPassRateHistoryLineChart,i as formatLineChartData};
|
|
2
2
|
//# sourceMappingURL=TrackPassRateHistoryLineChart.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as O,useTheme as R,Box as a,Paper as B,Typography as $,Tooltip as P}from"@material-ui/core";import E from"@material-ui/lab/Skeleton";import{DateTime as I}from"luxon";import t from"react";import{CircularProgressbar as T,buildStyles as W}from"react-circular-progressbar";import{useCheckStatus as M}from"../../hooks/aggregations/useCheckStatus.esm.js";import{useCheckStatusHistory as j}from"../../hooks/aggregations/useCheckStatusHistory.esm.js";import{getChartFontColor as w,formatDate as z}from"../Charts/chartUtils.esm.js";import{getProgressColor as C}from"../TrackPage/utils.esm.js";import{CheckHistoryChart as G}from"./CheckHistoryChart.esm.js";import{getCheckName as H}from"./utils.esm.js";const S=O(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"0.9rem",cursor:"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},headerRow:{display:"flex",padding:e.spacing(1,1),borderBottom:`1px solid ${e.palette.divider}`,width:"100%"},headerSection:{display:"flex",flexDirection:"column",gap:e.spacing(.5),flexGrow:1,width:"100%"},contentRow:{padding:e.spacing(1,1,0),display:"flex"},leftSection:{width:"75px",minWidth:"75px"},summaryCard:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},chartSection:{flex:1,width:"100%",minWidth:"150px"},chartSkeletonSection:{flex:1,width:"100%",minWidth:"150px",padding:e.spacing(0,0,1,1)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:w(e),textAlign:"center",gap:e.spacing(2)}})),K=()=>{const e=S();return t.createElement(a,{className:e.contentRow},t.createElement(a,{className:e.leftSection},t.createElement(a,{className:e.summaryCard},t.createElement(E,{variant:"circle",height:75}))),t.createElement(a,{className:e.chartSkeletonSection},t.createElement(E,{variant:"rect",height:92})))};function L(e){if(!e)return[];const{history:r,numberOfEntities:i}=e,l=I.utc();return r.map((s,c)=>({name:z(l,r.length-c-1),passRate:i?Math.round(s.passed/i*100):100}))}function A(e){if(!e)return 0;const{passed:r,numberOfEntities:i}=e;return i?Math.round(r/i*100):100}function F(e){if(!e)return{numerator:0,denominator:0};const{passed:r,numberOfEntities:i}=e;return{numerator:r,denominator:i}}const Q=({check:e,track:r,lifecycles:i,owners:l,types:s,systems:c})=>{const n=S(),m=R();let o={};i?.length&&(o["spec.lifecycle"]=i),l?.length&&(o["relations.ownedBy"]=l),s?.length&&(o["spec.type"]=s),c?.length&&(o["relations.partOf"]=c),Object.keys(o).length===0&&(o=void 0);const{data:d,isLoading:N}=M({checkId:e.id,trackId:r.id,filter:o}),{data:u,isLoading:k}=j({checkId:e.id,trackId:r.id,numberOfDays:30,filter:o}),v={dataKey:"passRate",name:"Pass rate"},b=u?.history?.length??0,D=L(u),p=A(d);let h;d?h=`${p}%`:h="No Data";let f;if(!d)f="No Data";else{const{numerator:y,denominator:x}=F(d);x>0?f=`${y} of ${x} entities passing`:f=`${y} entities passing`}const g=t.createElement(a,{className:n.overallSummaryBox},t.createElement(T,{value:p,text:h,styles:W({textColor:w(m),pathColor:C(m,p),trailColor:m.palette.divider,textSize:b?void 0:10})}));return t.createElement(B,{className:n.card,elevation:0},t.createElement(a,{className:n.headerRow},t.createElement(a,{className:n.headerSection},t.createElement($,{className:n.title},H(r,e)))),k||N?t.createElement(K,null):t.createElement(P,{title:f},t.createElement(a,{className:n.contentRow},g&&t.createElement(a,{className:n.leftSection},t.createElement(a,{className:n.summaryCard},g)),t.createElement(a,{className:n.chartSection},t.createElement(G,{data:D,lineConfig:v,color:C(m,p)})))))};export{Q as CheckCard};
|
|
2
2
|
//# sourceMappingURL=CheckCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{MarkdownContent as
|
|
1
|
+
import{MarkdownContent as p}from"@backstage/core-components";import{makeStyles as m,useTheme as s,Paper as c,Typography as d}from"@material-ui/core";import g from"@material-ui/icons/CheckCircleOutlined";import f from"@material-ui/icons/ErrorOutline";import n from"@material-ui/icons/InfoOutlined";import u from"@material-ui/icons/RemoveCircleOutline";import C from"@material-ui/icons/WarningOutlined";import a from"react";import{ResultState as e}from"../../graphql/generated/index.esm.js";const N=m(t=>({markdownContent:{"& :last-child":{marginBottom:0}},root:{padding:t.spacing(2),display:"flex",gap:t.spacing(1.5)},iconContainer:{marginTop:1},passed:{},failed:{},warning:{},notReported:{},notApplicable:{},error:{},icon:{}}),{name:"CheckResultStateBox"}),k={[e.Passed]:g,[e.Failed]:f,[e.Warning]:C,[e.NotReported]:n,[e.NotApplicable]:n,[e.Error]:u},h={[e.Passed]:"Check passed",[e.Failed]:"Check did not pass",[e.Warning]:"Check produced warning(s)",[e.NotReported]:"Check not reported",[e.NotApplicable]:"Check not applicable",[e.Error]:"Check encountered an error."},E={[e.Passed]:"passed",[e.Failed]:"failed",[e.Warning]:"warning",[e.NotReported]:"notReported",[e.NotApplicable]:"notApplicable",[e.Error]:"error"},b=(t,o)=>({[e.Passed]:o.palette.success.main,[e.Failed]:o.palette.error.main,[e.Warning]:o.palette.warning.main,[e.NotReported]:o.palette.info.main,[e.NotApplicable]:o.palette.info.main,[e.Error]:o.palette.error.main})[t],R=({state:t,notes:o})=>{const r=N(),i=s(),l=k[t]??n;return a.createElement(c,{variant:"outlined",className:`${r.root} ${r[E[t]]}`},a.createElement("div",{className:r.iconContainer},a.createElement(l,{className:r.icon,htmlColor:b(t,i)})),a.createElement("div",null,a.createElement(d,{variant:"subtitle1"},h[t]),o?a.createElement(p,{className:r.markdownContent,content:o}):null))};export{R as ResultStateBox};
|
|
2
2
|
//# sourceMappingURL=ResultStateBox.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as C,useTheme as g,Box as y,Typography as x}from"@material-ui/core";import r from"react";import{CircularProgressbar as v,buildStyles as f}from"react-circular-progressbar";import{checkPassRatesSummaryCsvFilename as u}from"../../utils/charts.esm.js";import"recharts";import{convertPassRateToDataPoints as d}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import{getChartFontColor as i,getChartColors as R}from"../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as k}from"../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import{useSummaryAggregationsContext as P}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{OverviewChartCard as T}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import"react-circular-progressbar/dist/styles.css";import{overallCheckPassRateToCsv as S}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const D=C(e=>({chartHeader:{marginBottom:e.spacing(2)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:i(e),textAlign:"center",gap:e.spacing(2)},percentage:{fontSize:e.typography.pxToRem(65),lineHeight:`${e.typography.pxToRem(88)}px`,fontWeight:"bold"},summaryText:{fontSize:e.typography.pxToRem(14),lineHeight:`${e.typography.pxToRem(14)}px`}})),E=()=>{const e=g(),m=D(),{checkPassRateTrend:{data:t,isLoading:l,isError:p}}=P(),a=t?.overallCheckPassRates?.length??0,c=d(t?.overallCheckPassRates??[]),o=a?t?.overallCheckPassRates?.[a-1]:void 0;let s;o?s=`${o}%`:s="No Data";const n=r.createElement(y,{className:m.overallSummaryBox},r.createElement(v,{value:o??0,text:s,styles:f({textColor:i(e),pathColor:R(e)[0],trailColor:e.palette.divider,textSize:a?void 0:8})}),r.createElement(x,{className:m.summaryText},"Current check pass rate")),h=!t?.overallCheckPassRates||!a||l||p;return r.createElement(T,{title:"Check pass rate",subtitle:"Aggregate pass rate for checks",summaryCardContent:n,chartSectionContent:r.createElement(k,{chartData:c}),disableDataExport:h,csvFilename:u,csvData:S(t)})};export{E as CheckHistoryChartCard};
|
|
2
2
|
//# sourceMappingURL=CheckHistoryChartCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{withStyles as r}from"@material-ui/core";import
|
|
1
|
+
import{withStyles as r}from"@material-ui/core";import i from"@material-ui/icons/Check";import c from"@material-ui/icons/Close";import n from"@material-ui/icons/HelpOutline";import l from"@material-ui/icons/RemoveCircleOutline";import p from"@material-ui/icons/ReportProblemOutlined";import o from"react";import{ResultState as a}from"../../graphql/generated/index.esm.js";import{resultToText as s}from"../../text.esm.js";const f=r(e=>({root:{color:e.palette.success.main}}))(i),d=r(e=>({root:{color:e.palette.error.main}}))(c),u=r(e=>({root:{color:e.palette.warning.main}}))(p),E=r(e=>({root:{color:e.palette.info.main}}))(n),N=r(e=>({root:{color:e.palette.text.disabled}}))(l),b=r(e=>({root:{color:e.palette.error.main}}))(l),h=({result:e,className:m})=>{const t={className:m,"aria-label":s(e),"aria-hidden":!1};return e===a.Passed?o.createElement(f,{...t}):e===a.NotReported?o.createElement(E,{...t}):e===a.Failed?o.createElement(d,{...t}):e===a.Warning?o.createElement(u,{...t}):e===a.NotApplicable?o.createElement(N,{...t}):e===a.Error?o.createElement(b,{...t}):null};export{h as CheckIcon};
|
|
2
2
|
//# sourceMappingURL=CheckIcon.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{stringifyEntityRef as R}from"@backstage/catalog-model";import{Table as v}from"@backstage/core-components";import{makeStyles as x}from"@material-ui/core";import L from"lodash";import d,{useState as z,useEffect as B,useCallback as p}from"react";import{CheckEntityField as a,Direction as f}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as T}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useCheckEntities as D}from"../../../hooks/entities/useCheckEntities.esm.js";import{toResultState as m}from"../utils.esm.js";import{columnFactories as n}from"./columns.esm.js";import{toCheckEntityRow as P}from"./utils.esm.js";const N=[n.createStateColumn(),n.createNameColumn(),n.createSystemColumn(),n.createOwnerColumn(),n.createSpecTypeColumn(),n.createSpecLifecycleColumn()],O=[a.State,a.Name,a.CheckPassRate,a.System,a.Owner,a.Type,a.Lifecycle],F=x({tableContainer:{display:"flex",flexDirection:"column",width:"100%",overflowX:"auto","& table":{boxSizing:"border-box","& th:first-child, & td:first-child":{paddingLeft:"6px"},"& th:last-child, & td:last-child":{paddingRight:"6px !important"}}}}),$=({checkId:g,trackId:u,filter:s,states:c})=>{const h=F(),[e,l]=z({orderBy:void 0,filter:s,states:c?.map(m).filter(t=>t!==void 0),pageInfo:{page:0,pageSize:10,direction:"forward",cursor:null}});B(()=>{l(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:s,states:c?.map(m).filter(i=>i!==void 0)}))},[s,c]);const{data:r,isLoading:y}=D({checkId:g,trackId:u,orderBy:e.orderBy,filter:e.filter,states:e.states?.length?e.states:void 0,[e.pageInfo.direction==="forward"?"first":"last"]:e.pageInfo.pageSize,[e.pageInfo.direction==="forward"?"after":"before"]:e.pageInfo.cursor}),C=p((t,i)=>{let o;t===-1?o=void 0:o={field:O[t],direction:i==="asc"?f.Asc:f.Desc},l({...e,orderBy:o,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),k=p((t,i)=>{const o=t>e.pageInfo.page?"forward":"backward",b=o==="forward"?r?.checkEntities.pageInfo.endCursor??null:r?.checkEntities.pageInfo.startCursor??null;l({...e,pageInfo:{page:t,pageSize:i,direction:o,cursor:b}})},[r,e]),I=r?.checkEntities.edges.map(t=>t.node.entityRef)??[],{data:w,isLoading:E}=T({entityRefs:I}),S=L.compact(r?.checkEntities.edges.map(t=>{const i=w?.items.find(o=>!!o&&R(o)===t.node.entityRef);return i?P({checkDetails:t.node,entity:i}):void 0}))??[];return d.createElement("div",{className:h.tableContainer},d.createElement(v,{title:"Entities",style:{width:"100%",border:"none",margin:0},columns:N,data:S,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"bottom",emptyRowsWhenPaging:!0,pageSizeOptions:[10,25,50],pageSize:10,search:!1,showTitle:!0,padding:"dense"},onOrderChange:C,onPageChange:k,page:e.pageInfo.page,totalCount:r?.checkEntities.totalCount??0,isLoading:y||E,components:{Toolbar:()=>null}}))};export{$ as CheckEntitiesTable};
|
|
2
|
+
//# sourceMappingURL=CheckEntitiesTable.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{OverflowTooltip as s}from"@backstage/core-components";import{EntityRefLink as c,EntityRefLinks as o}from"@backstage/plugin-catalog-react";import{makeStyles as u,Chip as m}from"@material-ui/core";import r from"react";import{CheckIcon as d}from"../../CheckIcon/CheckIcon.esm.js";const i=u(()=>({linkHover:{"& span":{"&:hover":{textDecoration:"underline"}}}})),p=Object.freeze({createStateColumn(){return{title:"",field:"state",render:({state:e})=>r.createElement(d,{result:e}),width:"auto",align:"center",sorting:!1}},createNameColumn(e){return{title:"Name",field:"resolved.entityRef",highlight:!0,customSort(t,n){return 0},render:({entity:t})=>{const n=i();return r.createElement(c,{entityRef:t,defaultKind:e?.defaultKind||"Component",className:n.linkHover})}}},createSystemColumn(){return{title:"System",field:"resolved.partOfSystemRelationTitle",customSort(e,t){return 0},render:({resolved:e})=>{const t=i();return r.createElement(o,{entityRefs:e.partOfSystemRelations,defaultKind:"system",className:t.linkHover})}}},createOwnerColumn(){return{title:"Owner",field:"resolved.ownedByRelationsTitle",customSort(e,t){return 0},render:({resolved:e})=>{const t=i();return r.createElement(o,{entityRefs:e.ownedByRelations,defaultKind:"group",className:t.linkHover})}}},createSpecTypeColumn(){return{title:"Type",field:"entity.spec.type",customSort(e,t){return 0}}},createSpecLifecycleColumn(){return{title:"Lifecycle",field:"entity.spec.lifecycle",customSort(e,t){return 0},width:"auto"}},createMetadataDescriptionColumn(){return{title:"Description",field:"entity.metadata.description",customSort(e,t){return 0},render:({entity:e})=>r.createElement(s,{text:e.metadata.description,placement:"bottom-start"}),width:"auto"}},createTagsColumn(){return{title:"Tags",field:"entity.metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:e})=>r.createElement(r.Fragment,null,e.metadata.tags&&e.metadata.tags.map(t=>r.createElement(m,{key:t,label:t,size:"small",variant:"outlined",style:{marginBottom:"0px"}}))),width:"auto",sorting:!1}},createTitleColumn(e){return{title:"Title",field:"entity.metadata.title",customSort(t,n){return 0},hidden:e?.hidden,searchable:!0}},createLabelColumn(e,t){return{title:t?.title||"Label",field:"entity.metadata.labels",customSort(n,a){return 0},cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:n})=>{const a=n.metadata?.labels,l=a&&a[e]||t?.defaultValue;return r.createElement(r.Fragment,null,l&&r.createElement(m,{key:l,label:l,size:"small",variant:"outlined"}))},width:"auto",sorting:!1}},createNamespaceColumn(){return{title:"Namespace",field:"entity.metadata.namespace",customSort(e,t){return 0},width:"auto"}}});export{p as columnFactories};
|
|
2
|
+
//# sourceMappingURL=columns.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{RELATION_PART_OF as d,RELATION_OWNED_BY as f,stringifyEntityRef as l}from"@backstage/catalog-model";import{getEntityRelations as s,humanizeEntityRef as i}from"@backstage/plugin-catalog-react";function r(m){const{checkDetails:y,entity:t}=m,n=s(t,d,{kind:"system"}),o=s(t,f),a=l(t);return{id:a,entity:t,state:y.state??void 0,resolved:{name:i(t,{defaultKind:"Component"}),entityRef:a,ownedByRelationsTitle:o.map(e=>i(e,{defaultKind:"group"})).join(", "),ownedByRelations:o,partOfSystemRelationTitle:n.map(e=>i(e,{defaultKind:"system"})).join(", "),partOfSystemRelations:n}}}export{r as toCheckEntityRow};
|
|
2
|
+
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{MarkdownContent as U}from"@backstage/core-components";import{useRouteRef as V}from"@backstage/core-plugin-api";import{EntityRefLink as W}from"@backstage/plugin-catalog-react";import{usePermission as R}from"@backstage/plugin-permission-react";import{makeStyles as j,useTheme as q,Typography as z,Button as J,Grid as y,Card as E,CardHeader as g,CardContent as k}from"@material-ui/core";import{soundcheckCheckReadPermission as K,soundcheckCheckUpdatePermission as X,toEntityFilterQuery as C,combineEntityFilterQueries as Y}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{useParams as Z,useNavigate as _}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useGetChecks as $}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as ee}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCheckStatus as te}from"../../hooks/aggregations/useCheckStatus.esm.js";import{useSearchParam as l}from"../../hooks/useSearchParam.esm.js";import{checkEditRouteRef as re}from"../../routes.esm.js";import{LoadingIndicator as ie}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as b}from"../PageWarningMessage/PageWarningMessage.esm.js";import{CheckEntitiesTable as ne}from"./CheckEntitiesTable/CheckEntitiesTable.esm.js";import{CheckStatusBar as ae}from"./CheckStatusBar.esm.js";import{CheckStatusHistoryChart as se}from"./CheckStatusHistoryChart.esm.js";import{CheckStatusTable as oe}from"./CheckStatusTable.esm.js";import{FilterBar as ce}from"./FilterBar/FilterBar.esm.js";const le=r=>{const{lifecycles:i,owners:t,types:n,systems:m}=r,s=i?.length?{"spec.lifecycle":i}:void 0,d=t?.length?{"relations.ownedBy":t}:void 0,o=n?.length?{"spec.type":n}:void 0,f=m?.length?{"relations.partOf":m}:void 0;if(s||d||o||f)return{...s,...d,...o,...f}};function me(r,i){for(const t of r.levels)for(const n of t.checks)if(n.id===i)return n;return null}const de=j(r=>({root:{height:"100%",background:r.palette.background.default,margin:r.spacing(3)},header:{background:r.palette.background.default,borderRadius:0},content:{display:"flex",flexDirection:"column",gap:r.spacing(3)},editButton:{marginLeft:"auto"}})),fe=()=>{const r=de(),{trackId:i,checkId:t}=Z(),[n,m]=l("states"),[s,d]=l("owners"),[o,f]=l("lifecycles"),[v,N]=l("types"),[w,x]=l("systems"),u=le({lifecycles:o,owners:s,types:v,systems:w}),{data:L,isLoading:I}=ee({ids:[i??""],first:1},{enabled:!!i}),c=L?.edges?.[0]?.node,{data:P,isLoading:S}=$({ids:[t??""],first:1}),a=P?.edges?.[0]?.node,{loading:B,allowed:T}=R({permission:K,resourceRef:t}),{loading:F,allowed:G}=R({permission:X,resourceRef:t}),H=_(),M=V(re),O=q();let h;if(t)if(c){const A=C(c.filter),D=C(me(c,t)?.filter);h=Y(A,D,!0)}else a&&(h=C(a.filter));const{data:p,isLoading:Q}=te({checkId:t,trackId:i,filter:u,states:n?.length?n:void 0},!!t);return e.createElement("div",null,e.createElement(b,{entityName:"track",entityId:i,showNotFound:!!i&&!I&&!c}),e.createElement(b,{entityName:"check",entityId:t,showNotFound:!S&&!a&&!Q&&!p,showCannotView:!B&&!T}),!!i&&I||S&&e.createElement(ie,null),a&&e.createElement("div",{className:r.root},e.createElement("div",{className:r.header},e.createElement("div",{style:{display:"flex",alignItems:"center"}},e.createElement("div",null,e.createElement(z,{variant:"h5"},a.name),a?.ownerEntityRef&&e.createElement(W,{entityRef:a.ownerEntityRef})),!F&&G&&a.isEditable&&e.createElement(J,{className:r.editButton,variant:"contained",color:"primary",onClick:()=>{H(M({checkId:a.id}))}},"Edit Check")),e.createElement(U,{content:a.description??""})),e.createElement("div",{className:r.content},e.createElement(ce,{filter:h,states:n,setStates:m,owners:s,setOwners:d,lifecycles:o,setLifecycles:f,types:v,setTypes:N,systems:w,setSystems:x}),e.createElement(y,{container:!0,spacing:3},e.createElement(y,{item:!0,xs:4},e.createElement(E,{style:{height:"100%"}},e.createElement(g,{title:"Current Status"}),e.createElement(k,null,e.createElement("div",{style:{width:"100%",height:30,display:"flex",alignItems:"flex-start"}},e.createElement(ae,{checkStatus:p})),e.createElement("div",{style:{paddingTop:O.spacing(1)}},e.createElement(oe,{checkStatus:p}))))),e.createElement(y,{item:!0,xs:8},e.createElement(E,{style:{height:"100%"}},e.createElement(g,{title:"Historical Status"}),e.createElement(k,{style:{height:"100%"}},e.createElement(se,{checkId:t,trackId:i,checkStatus:p,filter:u,states:n}))))),e.createElement(E,null,e.createElement(g,{title:"Entities"}),e.createElement(k,null,e.createElement(ne,{checkId:a.id,trackId:c?.id,filter:u,states:n}))))))};export{fe as CheckInsightsPage};
|
|
2
|
+
//# sourceMappingURL=CheckInsightsPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{usePermission as
|
|
1
|
+
import{usePermission as n}from"@backstage/plugin-permission-react";import{soundcheckCheckUpdatePermission as d,soundcheckCheckReadPermission as h}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{useParams as f}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as k}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useGetChecks as u}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as g}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as E}from"../PageWarningMessage/PageWarningMessage.esm.js";import{CheckDetailsView as C}from"./CheckDetailsView.esm.js";import{CheckEditView as w}from"./CheckEditView.esm.js";const P=()=>{const{checkId:o}=f(),{data:s,isLoading:a}=u({ids:[o??""],first:1}),r=s?.edges?.[0]?.node,{loading:c,allowed:p}=n({permission:d,resourceRef:o}),{loading:l,allowed:i}=n({permission:h,resourceRef:o}),t=c||l||a,m=p&&r?.isEditable;return e.createElement(e.Fragment,null,e.createElement(E,{entityName:"check",entityId:o,showCannotView:!t&&!i,showNotFound:!t&&!r}),t&&e.createElement(g,null),e.createElement(k,null,!t&&!!r&&e.createElement(e.Fragment,null,m&&i&&e.createElement(w,{check:r}),!m&&i&&e.createElement(C,{check:r}))))};export{P as CheckPage};
|
|
2
2
|
//# sourceMappingURL=CheckPage.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useTheme as l}from"@material-ui/core";import s from"@material-ui/lab/Skeleton";import e from"react";import{ResponsiveContainer as i,BarChart as n,XAxis as c,YAxis as m,Bar as a}from"recharts";const o=({checkStatus:r})=>{const t=l();return e.createElement(i,{height:"100%",width:"100%"},r?e.createElement(n,{layout:"vertical",data:[r],stackOffset:"expand",margin:{top:0,right:0,left:0,bottom:0}},e.createElement(c,{hide:!0,type:"number"}),e.createElement(m,{hide:!0,type:"category"}),e.createElement(a,{fill:t.palette.success.main,dataKey:"passed",stackId:"status"}),e.createElement(a,{fill:t.palette.error.main,dataKey:"failed",stackId:"status"}),e.createElement(a,{fill:t.palette.warning.main,dataKey:"warning",stackId:"status"}),e.createElement(a,{fill:t.palette.text.disabled,dataKey:"notApplicable",stackId:"status"}),e.createElement(a,{fill:t.palette.info.main,dataKey:"notReported",stackId:"status"}),e.createElement(a,{fill:t.palette.error.light,dataKey:"error",stackId:"status"})):e.createElement(s,{variant:"rect"}))};export{o as CheckStatusBar};
|
|
2
|
+
//# sourceMappingURL=CheckStatusBar.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useTheme as h}from"@material-ui/core";import k from"@material-ui/lab/Skeleton";import e from"react";import{ResponsiveContainer as u,LineChart as E,CartesianGrid as f,XAxis as g,YAxis as i,Label as s,Line as o}from"recharts";import{useCheckStatusHistory as x}from"../../hooks/aggregations/useCheckStatusHistory.esm.js";const I=({checkId:a,trackId:d,checkStatus:r,filter:c,states:m})=>{const t=h(),{data:n,isLoading:l}=x({checkId:a,trackId:d,filter:c,states:m,numberOfDays:30},!!a&&!!r);if(!r||l)return e.createElement(k,{variant:"rect",width:"100%",height:"100%"});const p=n?.history.every(({notReported:y})=>y>=0);return e.createElement(u,{width:"100%",height:"100%"},e.createElement(E,{data:n?.history??[],margin:{top:0,right:0,left:0,bottom:0}},e.createElement(f,{stroke:t.palette.divider,verticalPoints:[]}),e.createElement(g,{dataKey:"name"}),e.createElement(i,{yAxisId:"percentage",orientation:"right",domain:[0,100]},e.createElement(s,{value:"Percentage",position:"center",angle:90})),e.createElement(i,{yAxisId:"count",domain:[0,r?.numberOfEntities??0]},e.createElement(s,{value:"Count",position:"center",angle:270,offset:2})),e.createElement(o,{type:"monotone",dataKey:"passed",stroke:t.palette.success.main,yAxisId:"count",strokeWidth:2,dot:!1}),e.createElement(o,{type:"monotone",dataKey:"failed",stroke:t.palette.error.main,yAxisId:"count",strokeWidth:2,dot:!1}),e.createElement(o,{type:"monotone",dataKey:"warning",stroke:t.palette.warning.main,yAxisId:"count",strokeWidth:2,dot:!1}),e.createElement(o,{type:"monotone",dataKey:"notApplicable",stroke:t.palette.text.disabled,yAxisId:"count",strokeWidth:2,dot:!1}),e.createElement(o,{type:"monotone",dataKey:"error",stroke:t.palette.error.light,yAxisId:"count",strokeWidth:2,dot:!1}),p&&e.createElement(o,{type:"monotone",dataKey:"notReported",stroke:t.palette.info.main,yAxisId:"count",strokeWidth:2,dot:!1})))};export{I as CheckStatusHistoryChart};
|
|
2
|
+
//# sourceMappingURL=CheckStatusHistoryChart.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useTheme as o,Table as m,TableBody as n}from"@material-ui/core";import e from"react";import{StatusRow as r}from"./StatusRow.esm.js";const s=({checkStatus:t,padding:l})=>{const a=o();return e.createElement(m,{size:"small",padding:l},e.createElement(n,null,e.createElement(r,{statusName:"passed",data:t,color:a.palette.success.main}),e.createElement(r,{statusName:"failed",data:t,color:a.palette.error.main}),e.createElement(r,{statusName:"warning",data:t,color:a.palette.warning.main}),e.createElement(r,{statusName:"notApplicable",data:t,color:a.palette.text.disabled}),e.createElement(r,{statusName:"error",data:t,color:a.palette.error.light}),t?.notReported!==-1&&e.createElement(r,{statusName:"notReported",data:t,color:a.palette.info.main})))};export{s as CheckStatusTable};
|
|
2
|
+
//# sourceMappingURL=CheckStatusTable.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{parseEntityRef as x}from"@backstage/catalog-model";import{EntityDisplayName as N}from"@backstage/plugin-catalog-react";import{makeStyles as T,Checkbox as m,Box as v,Typography as B}from"@material-ui/core";import D from"@material-ui/icons/Category";import P from"@material-ui/icons/Class";import G from"@material-ui/icons/Group";import M from"@material-ui/icons/Loop";import U from"@material-ui/icons/PlaylistAddCheckRounded";import e,{useMemo as _}from"react";import{useGetEntityFacets as n}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import{CheckIcon as j}from"../../CheckIcon/CheckIcon.esm.js";import l from"../../MultiSelectFilter/MultiSelectFilter.esm.js";function q(t){return t.toLowerCase().split("_").map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" ")}const c=(t,{selected:r})=>e.createElement(e.Fragment,null,e.createElement(m,{value:t,checked:r,color:"primary"}),e.createElement(N,{entityRef:t,hideIcon:!0})),z=(t,{selected:r})=>e.createElement(e.Fragment,null,e.createElement(m,{value:t,checked:r,color:"primary"}),e.createElement(j,{result:t}),e.createElement(v,{mr:1}),e.createElement(B,null,q(t))),Q=T(t=>({root:{display:"flex",flexDirection:"row",alignItems:"center",gap:t.spacing(2)}})),W=({filter:t,states:r,setStates:p,owners:f,setOwners:d,lifecycles:y,setLifecycles:E,types:u,setTypes:g,systems:h,setSystems:b})=>{const L=Q(),{data:F,isLoading:w}=n("relations.ownedBy",t),{data:o,isLoading:O}=n("spec.lifecycle",t),{data:s,isLoading:S}=n("spec.type",t),{data:a,isLoading:C}=n("relations.partOf",t),i=_(()=>a?.filter(R=>{try{return x(R).kind.toLowerCase()==="system"}catch{return!1}}),[a]),I=(o||[]).length<=1,k=(s||[]).length<=1,A=(i||[]).length<=1;return e.createElement("div",{className:L.root},e.createElement(l,{name:"state",label:"State",icon:e.createElement(U,null),options:["PASSED","FAILED","WARNING","NOT_APPLICABLE"],filters:r,setFilters:p,customRenderOption:z}),e.createElement(l,{name:"system",label:"System",icon:e.createElement(D,null),filters:h,setFilters:b,options:i??[],disabled:C||A,customRenderOption:c}),e.createElement(l,{name:"owner",label:"Owner",icon:e.createElement(G,null),filters:f,setFilters:d,options:F??[],disabled:w,customRenderOption:c}),e.createElement(l,{name:"type",label:"Type",icon:e.createElement(P,null),filters:u,setFilters:g,options:s??[],disabled:S||k}),e.createElement(l,{name:"lifecycle",label:"Lifecycle",icon:e.createElement(M,null),filters:y,setFilters:E,options:o??[],disabled:O||I}))};export{W as FilterBar};
|
|
2
|
+
//# sourceMappingURL=FilterBar.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{makeStyles as m,TableRow as o,TableCell as a,Box as c}from"@material-ui/core";import s from"@material-ui/icons/FiberManualRecord";import l from"@material-ui/lab/Skeleton";import e from"react";const g=(t,r)=>{const n=t.numberOfEntities;if(n===0)return 0;const i=t[r]??0;return parseFloat((i/n*100).toFixed(1))},E=t=>{const r=t.replace(/([A-Z])/g," $1");return r.charAt(0).toUpperCase()+r.slice(1)},f=m({skeleton:{marginRight:6}}),p=({statusName:t,color:r,data:n})=>{const i=f();return n?e.createElement(o,null,e.createElement(a,{align:"center"},e.createElement("div",{style:{display:"flex",alignItems:"center",gap:"6px"}},e.createElement(s,{htmlColor:r,fontSize:"small"}),E(t))),e.createElement(a,{align:"right"},`${n[t]?.toLocaleString()??0} of ${n.numberOfEntities.toLocaleString()}`),e.createElement(a,{align:"right"},`${g(n,t).toLocaleString()}%`)):e.createElement(o,null,e.createElement(a,{align:"center"},e.createElement(c,{display:"flex",alignItems:"center"},e.createElement(l,{className:i.skeleton,variant:"circle",width:16,height:16}),e.createElement(l,{variant:"text",width:100}))),e.createElement(a,{align:"right"},e.createElement(c,{display:"flex",justifyContent:"flex-end"},e.createElement(l,{variant:"text",width:175}))),e.createElement(a,{align:"right"},e.createElement(c,{display:"flex",justifyContent:"flex-end"},e.createElement(l,{variant:"text",width:65}))))};export{p as StatusRow};
|
|
2
|
+
//# sourceMappingURL=StatusRow.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ResultState as e}from"../../graphql/generated/index.esm.js";const t=r=>{switch(r){case"PASSED":return e.Passed;case"FAILED":return e.Failed;case"WARNING":return e.Warning;case"NOT_APPLICABLE":return e.NotApplicable;case"NOT_REPORTED":return e.NotReported;case"ERROR":return e.Error;default:return}};export{t as toResultState};
|
|
2
|
+
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{FormHelperText as s}from"@material-ui/core";import
|
|
1
|
+
import{FormHelperText as s}from"@material-ui/core";import n from"react";const c=e=>{let r,t;return e?.name?(r="Check name",t=e?.name?.message):e?.description?(r="Check description",t=e?.description?.message):e?.id&&(r="Check ID",t=e?.id?.message),`${r}: ${t}`},l=({checksErrors:e})=>{let r=null;return e?.message?r=n.createElement(s,{error:!0},e.message):e?.length&&e.length>0&&(r=n.createElement(n.Fragment,null,e.map?.((t,m)=>{if(t){const o=c(t);return n.createElement(s,{key:m,error:!0},o)}return null}))),r};export{l as ChecksErrors};
|
|
2
2
|
//# sourceMappingURL=ChecksErrors.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as Q,featureFlagsApiRef as
|
|
1
|
+
import{useApi as Q,featureFlagsApiRef as U}from"@backstage/core-plugin-api";import{usePermission as W}from"@backstage/plugin-permission-react";import{makeStyles as Z,Button as v,Grid as i}from"@material-ui/core";import{soundcheckCheckCreatePermission as $}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as a,useEffect as q}from"react";import z from"react-use/lib/useDebounce";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as J}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useGetChecks as K}from"../../../hooks/checks/useGetChecks.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetCheckOwners as V}from"../../../hooks/checks/useGetCheckOwners.esm.js";import X from"../../../images/no-results.svg";import{FilterDefault as b}from"../../../utils/filters.esm.js";import{EmptyState as w}from"../../EmptyState/EmptyState.esm.js";import{Pagination as Y}from"../../Pagination/Pagination.esm.js";import{SearchFilters as _}from"../../SearchFilters/SearchFilters.esm.js";import"react-hook-form";import"../../../utils/formStyles.esm.js";import"../../Filter/FilterComponent.esm.js";import"../../FormStepper/FormStepper.esm.js";import"../../FullScreenDialog/FullScreenDialog.esm.js";import"../MutateCheckViews/FormFields/CheckNameInput/CheckNameInput.esm.js";import"../MutateCheckViews/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../../FormMarkdownInput/FormMarkdownInput.esm.js";import"../MutateCheckViews/utils/checkFormUtils.esm.js";import"../MutateCheckViews/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../MutateCheckViews/FormFields/RuleInput/AddMenuButton.esm.js";import"../MutateCheckViews/FormFields/RuleInput/RuleInputBox.esm.js";import"../MutateCheckViews/FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../MutateCheckViews/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Delete";import"../../FormControlledSelect/FormControlledSelect.esm.js";import"../MutateCheckViews/FormFields/RuleInput/Conditions/ControlledAutocomplete.esm.js";import"../MutateCheckViews/FormFields/RuleInput/Conditions/styles.esm.js";import"../MutateCheckViews/FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../MutateCheckViews/FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"@hookform/resolvers/zod";import"../MutateCheckViews/utils/validation.esm.js";import"../MutateCheckViews/types/ExpressionType.esm.js";import{CheckEmptyState as d,CheckNoResults as x}from"../MutateCheckViews/types/CheckFormTypes.esm.js";import"../../Frequency/types.esm.js";import"../../Frequency/util.esm.js";import"../../Frequency/FrequencyComponent.esm.js";import"../MutateCheckViews/types/Path.esm.js";import"../MutateCheckViews/CheckForm/Steps/CheckDetailsStep.esm.js";import"../MutateCheckViews/CheckForm/Steps/CheckRulesStep.esm.js";import{ChecksOverviewSkeleton as ee}from"../skeletons/ChecksOverviewSkeleton.esm.js";import{CheckSummaryCard as te}from"./CheckSummaryCard.esm.js";const re=Z(r=>({headerButtons:{display:"flex",gap:r.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:r.spacing(0,0,1)},container:{padding:r.spacing(3),gap:r.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:r.spacing(1.5),paddingBottom:r.spacing(1.5)}})),oe=({checksPerPage:r,currentCursor:y})=>{const m=re(),[g,S]=a(y),[s,A]=a(""),[h,N]=a(b.Alpha),[u,B]=a(b.Owner),[F,I]=a(""),{data:O,isLoading:L}=V();z(()=>{I(s)},500,[s]);const{loading:f,allowed:T}=W({permission:$}),{data:o,isLoading:c}=K({ids:void 0,first:r,after:g,orderAlphabetical:h,searchByOwner:u,searchByName:F}),[p,G]=a(o),l=p?.edges?.map(t=>t.node),[C,R]=a([]),k=Q(U),D=!k.getRegisteredFlags().find(t=>t.name==="soundcheck-enable-check-creation")||k.isActive("soundcheck-enable-check-creation"),P=!T||!D,j=t=>{N(t.target.value)},H=t=>{B(t.target.value)};q(()=>{o&&G(()=>({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{setShowAddModal:E}=J();if(!c&&!l)return e.createElement(w,{title:d.title,description:d.description,imgSrc:X,action:!f&&e.createElement(v,{disabled:P,variant:"contained",color:"primary",onClick:()=>E(!0)},d.callToAction)});let n;c?n=e.createElement(ee,null):l?.length?n=l?.map(t=>e.createElement(i,{key:t.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`check card ${t.id}`},e.createElement(te,{check:t}))):n=e.createElement(i,{xs:12,item:!0,role:"listitem","aria-label":"result"},e.createElement(w,{title:x.title,description:x.description}));const M=p?.pageInfo.hasNextPage||C?.length>0;return e.createElement(i,{container:!0,direction:"row",className:m.container},e.createElement(i,{container:!0,className:m.header},e.createElement(_,{searchPlaceholder:"Search Available Checks",isLoading:c||L,searchTerm:s,setSearchTerm:A,filterAlpha:h,handleAlphabeticalFilterChange:j,filterOwner:u,handleOwnerFilterChange:H,owners:O}),e.createElement(i,{item:!0,xs:2,className:m.headerButtons},!f&&e.createElement(v,{disabled:P,variant:"contained",color:"primary",onClick:()=>E(!0),className:m.createButton},"Create Check"))),e.createElement(i,{container:!0,spacing:4,role:"list","aria-label":"checks"},n),M&&e.createElement(i,{item:!0,xs:12},e.createElement(Y,{response:p,listingsPerPage:r,cursor:g,setCursor:S,prevCursors:C,setPrevCursors:R,labelPerPageDropdown:"Checks Per Page:",urlRoute:"checks?checksPerPage="})))};export{oe as CheckListPage};
|
|
2
2
|
//# sourceMappingURL=CheckListPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{EntityRefLink as
|
|
1
|
+
import{EntityRefLink as i}from"@backstage/plugin-catalog-react";import{makeStyles as a,List as r,Typography as o,ListItem as c,Tooltip as m,ListItemIcon as s,ListItemText as l}from"@material-ui/core";import d from"@material-ui/icons/Group";import e from"react";const p=a(n=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:n.spacing(2)},listItem:{padding:0},listItemText:{margin:0},iconContainer:{minWidth:"auto",paddingRight:n.spacing(1)},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),h=({check:n})=>{const t=p();return e.createElement(r,{dense:!0,disablePadding:!0,className:t.cardSection},e.createElement(o,{variant:"overline",color:"textSecondary"},"Check Details"),e.createElement(c,{disableGutters:!0,className:t.listItem},e.createElement(m,{title:"Owner"},e.createElement(s,{className:t.iconContainer},e.createElement(d,{color:"inherit",fontSize:"small"}))),e.createElement(l,{className:t.listItemText,primary:e.createElement(i,{entityRef:n.ownerEntityRef??"No Owner",hideIcon:!0,className:t.ownerLink})})))};export{h as CheckMetadata};
|
|
2
2
|
//# sourceMappingURL=CheckMetadata.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useRouteRef as
|
|
1
|
+
import{useRouteRef as d,useApi as A,configApiRef as P}from"@backstage/core-plugin-api";import{usePermission as l}from"@backstage/plugin-permission-react";import{soundcheckCheckUpdatePermission as v,soundcheckCheckDeletePermission as S}from"@spotify/backstage-plugin-soundcheck-common";import p,{useCallback as i}from"react";import{useNavigate as b}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as x}from"../../../hooks/useConfirmationModal.esm.js";import{useDeleteCheck as I}from"../../../hooks/checks/useDeleteCheck.esm.js";import{checkDetailsRouteRef as M,checkEditRouteRef as $}from"../../../routes.esm.js";import{exportCheck as N}from"../../../utils/export.esm.js";import{SummaryCard as O}from"../../SummaryCard/SummaryCard.esm.js";import{CheckMetadata as U}from"./CheckMetadata.esm.js";const V=({check:t})=>{const{id:e,name:r,description:h,isEditable:c,ownerEntityRef:u}=t,o=b(),m=d(M),a=d($),{loading:f,allowed:k}=l({permission:v,resourceRef:e}),{loading:C,allowed:R}=l({permission:S,resourceRef:e}),g=A(P).getOptionalStringArray("soundcheck.flags")?.includes("enable-check-insights"),{showModal:s}=x(),{mutate:n}=I(),y=i(async()=>{await s({title:"Delete Check",message:`Are you sure you want to delete the check '${r??e}'?`})&&n(e)},[s,r,n,e]),w=i(()=>{o(m({checkId:e}))},[m,e,o]),E=i(()=>{o(a({checkId:e}))},[a,e,o]),D=i(()=>{N(t)},[t]);return p.createElement(O,{title:r??e,description:h,children:u&&p.createElement(U,{check:t}),handleView:w,handleEdit:c&&!f&&k?E:void 0,handleDelete:c&&!C&&R?y:void 0,handleExport:D,viewIsPrimaryAction:g})};export{V as CheckSummaryCard};
|
|
2
2
|
//# sourceMappingURL=CheckSummaryCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as p}from"@material-ui/core/styles";import t from"react";import{useFormContext as n}from"react-hook-form";import"../../../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as a}from"../../../../../contexts/CheckFormContext.esm.js";import"../../../../../contexts/CampaignFormContext.esm.js";import"../../../../../contexts/UserProvider.esm.js";import{CheckNameInput as s}from"../../FormFields/CheckNameInput/CheckNameInput.esm.js";import"../../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import{CheckDescriptionInput as c}from"../../FormFields/CheckDescriptionInput/CheckDescriptionInput.esm.js";import{TeamDetailsInput as l}from"../../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../../FormFields/RuleInput/AddMenuButton.esm.js";import"../../FormFields/RuleInput/RuleInputBox.esm.js";import"../../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/core";import"@material-ui/icons/Delete";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../../api.esm.js";import"../../../../FormControlledSelect/FormControlledSelect.esm.js";import"../../FormFields/RuleInput/Conditions/ControlledAutocomplete.esm.js";import"../../FormFields/RuleInput/Conditions/styles.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../../hooks/graphqlKeys.esm.js";import"../../utils/checkFormUtils.esm.js";import"../../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../../FormFields/CheckScheduleSection/ScheduleSection.esm.js";const d=p(r=>({container:{display:"flex",flexDirection:"column",gap:r.spacing(1)}})),f=()=>{const r=d(),{isLoading:m,isReadOnly:o}=a(),{control:e,formState:{errors:i}}=n();return t.createElement("div",{className:r.container},t.createElement(s,{control:e,error:i?.detailsStep?.name,isLoading:m,disabled:o}),t.createElement(c,{control:e,error:i?.detailsStep?.description,isLoading:m,disabled:o}),t.createElement(l,{control:e,disabled:o,error:i?.detailsStep?.ownerEntityRef}))};export{f as CheckDetailsStep};
|
|
2
2
|
//# sourceMappingURL=CheckDetailsStep.esm.js.map
|
package/dist/components/ChecksPage/MutateCheckViews/FormFields/CheckNameInput/CheckNameInput.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Typography as
|
|
1
|
+
import{Typography as n,TextField as p}from"@material-ui/core";import{makeStyles as c}from"@material-ui/core/styles";import e from"react";import{Controller as s}from"react-hook-form";import{CHECK_FIELDS as d}from"../../utils/checkFormUtils.esm.js";const f=c(r=>({container:{display:"flex",flexDirection:"column",gap:r.spacing(1)},helperText:{marginLeft:0}})),h=({control:r,error:a,isLoading:o,disabled:i})=>{const l=f(),{name:t}=d.details;return e.createElement("div",{className:l.container},e.createElement("div",null,e.createElement(n,{variant:"subtitle2"},t.name),e.createElement(n,{variant:"caption"},t.description)),e.createElement(s,{name:"detailsStep.name",control:r,defaultValue:"",render:({field:m})=>e.createElement(p,{...m,FormHelperTextProps:{className:l.helperText},variant:"outlined",fullWidth:!0,placeholder:t.placeholder,disabled:o||i,type:"text",margin:"dense",error:!!a,helperText:a?.message??t.helperText})}))};export{h as CheckNameInput};
|
|
2
2
|
//# sourceMappingURL=CheckNameInput.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as x,TextField as C}from"@material-ui/core";import{Autocomplete as I}from"@material-ui/lab";import
|
|
1
|
+
import{makeStyles as x,TextField as C}from"@material-ui/core";import{Autocomplete as I}from"@material-ui/lab";import i from"react";import{Controller as S}from"react-hook-form";const c=x(t=>({clearIndicator:{marginRight:t.spacing(1)},helperText:{marginLeft:0},noMargin:{margin:0}})),T=({name:t,rules:p,label:d,control:g,options:u,getOptionLabel:h,getOptionValue:o,onChange:s,disabled:f,placeholder:b})=>{const n=c();return i.createElement(S,{name:t,control:g,rules:p,render:({field:m,fieldState:l})=>i.createElement(I,{...m,freeSolo:!0,autoSelect:!0,"data-testid":`${t}-autocomplete`,style:{minWidth:250},disabled:f,options:u,getOptionLabel:h,classes:{clearIndicator:n.clearIndicator},renderInput:a=>i.createElement(C,{...a,variant:"outlined",label:d,error:l.invalid,placeholder:b,FormHelperTextProps:{className:n.helperText},margin:"dense",className:n.noMargin,helperText:l.error?l.error.message:null}),onChange:(a,e)=>{const r=o?o(e):e;s?.(r),m.onChange(r)},onInputChange:(a,e)=>{const r=o?o(e):e;s?.(r)}})})};export{T as ControlledAutocomplete,c as useStyles};
|
|
2
2
|
//# sourceMappingURL=ControlledAutocomplete.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Box as
|
|
1
|
+
import{Box as n,TextField as $,IconButton as O}from"@material-ui/core";import F from"@material-ui/icons/Delete";import t,{useMemo as u}from"react";import{useFormContext as R,Controller as B}from"react-hook-form";import{useOperators as S}from"../../../../../../hooks/operators/useOperators.esm.js";import{FormControlledSelect as T}from"../../../../../FormControlledSelect/FormControlledSelect.esm.js";import{ControlledAutocomplete as f}from"./ControlledAutocomplete.esm.js";import{useRuleConditionStyles as V}from"./styles.esm.js";import{useRuleOptions as I}from"./useRuleOptions.esm.js";const L=({name:l,handleDelete:E,disabled:r,disableDelete:b})=>{const a=V(),{control:m,getValues:h,setValue:c}=R(),{data:s,isLoading:C}=S(),p=u(()=>s?.map(e=>({value:e.name,label:e.title}))??[],[s]),{pathOptions:g,factRefOptions:i,isLoading:d}=I(l,m),v=u(()=>i?.map(e=>e.value)??[],[i]),x=h("rulesStep.expressions.conditions")?.map(({factRef:e})=>e),N=e=>{e&&!x?.includes(e)&&(c(`${l}.path`,""),c(`${l}.operator`,""),c(`${l}.value`,""))};return t.createElement(n,{className:a.container},t.createElement(n,{className:a.connector}),t.createElement(n,{className:a.innerContainer},t.createElement(n,{className:a.inputsContainer},i&&t.createElement(n,null,t.createElement(f,{name:`${l}.factRef`,control:m,placeholder:"Fact",options:v,getOptionLabel:e=>i?.find(o=>e===o.value)?.label??e,getOptionValue:e=>i?.find(o=>e===o.label)?.value??e??"",disabled:r||d,onChange:N})),t.createElement(n,null,t.createElement(f,{name:`${l}.path`,placeholder:"Path",control:m,disabled:r||d,options:g})),p&&t.createElement(n,null,t.createElement(T,{name:`${l}.operator`,control:m,placeholder:"Operator",options:p,disabled:C||r})),t.createElement(n,null,t.createElement(B,{name:`${l}.value`,control:m,defaultValue:"",render:({field:e,fieldState:o})=>t.createElement($,{...e,variant:"outlined",placeholder:"Enter a value",FormHelperTextProps:{className:a.helperText},error:o.invalid,helperText:o.error?o.error.message:null,margin:"dense",disabled:r,className:a.noMargin})})))),!r&&!b&&t.createElement(O,{onClick:E,className:a.deleteButton,"data-test-id":`${l}-delete-button`},t.createElement(F,{className:a.deleteIcon})))};export{L as RuleConditionInput};
|
|
2
2
|
//# sourceMappingURL=RuleConditionInput.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseFactRef as
|
|
1
|
+
import{parseFactRef as f,stringifyFactRef as S}from"@spotify/backstage-plugin-soundcheck-common";import{useState as R,useEffect as g,useMemo as s}from"react";import{useWatch as F}from"react-hook-form";import{useGetCollectors as O}from"../../../../../../hooks/collectors/useGetCollectors.esm.js";import{useGetFactSchema as y}from"../../../../../../hooks/collectors/useGetFactSchema.esm.js";import{generateJsonPaths as G}from"../../../utils/checkFormUtils.esm.js";const L=(e,m)=>{const{data:o,isLoading:i}=O(),t=F({control:m,name:`${e}.factRef`}),[r,l]=R(()=>c(t));g(()=>{l(c(t))},[t]);const{data:a}=y(r?.source,r?.name),p=s(()=>a?G(a.schema):[],[a]),d=s(()=>o?.flatMap(n=>n.factNames.map(h=>{const u=f(h,{defaultSource:n.id,defaultScope:"default"});return{label:u.name,value:S(u)}})),[o]);return{isLoading:i,pathOptions:p,factRefOptions:d}};function c(e){if(e)try{return f(e,{defaultSource:"unknown",defaultScope:"default"})}catch{return null}return null}export{L as useRuleOptions};
|
|
2
2
|
//# sourceMappingURL=useRuleOptions.esm.js.map
|
package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/RuleInputBox.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Box as
|
|
1
|
+
import{Box as p,Grid as r}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import t from"react";import{useFormContext as B}from"react-hook-form";import{AddMenuButton as N}from"./AddMenuButton.esm.js";import"@material-ui/icons/Delete";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../../api.esm.js";import"../../../../FormControlledSelect/FormControlledSelect.esm.js";import"./Conditions/ControlledAutocomplete.esm.js";import"./Conditions/styles.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../../hooks/graphqlKeys.esm.js";import"../../utils/checkFormUtils.esm.js";import{ConditionList as y}from"./Conditions/ConditionList.esm.js";import{ExpressionBox as A}from"./Expressions/ExpressionBox.esm.js";import{ExpressionTypeToggle as C}from"./Expressions/ExpressionTypeToggle.esm.js";import{useRuleInputHandlers as P}from"./useRuleInputHandlers.esm.js";const $=b(e=>({root:{padding:0},inner:{marginLeft:e.spacing(2),paddingBottom:e.spacing(2),borderLeft:`1px solid ${e.palette.border}`,display:"flex",flexDirection:"row",gap:0},connector:{borderBottom:`1px solid ${e.palette.border}`,padding:e.spacing(0),width:"15px",height:"20px"},noPadding:{padding:0}})),k=({name:e,depth:o,disabled:i})=>{const n=$(),{getValues:m,setValue:l,trigger:c}=B(),{handleAddCondition:g,handleAddExpression:x,handleDeleteCondition:f}=P(e,m,l,c),u=`${e}`,a=m(u),E=a?.conditions||[],h=a?.expressions;return t.createElement(p,{className:o>0?n.inner:n.root},o>0&&t.createElement(p,{className:n.connector}),t.createElement(r,{container:!0,spacing:0,direction:"column",className:n.noPadding},t.createElement(r,{item:!0,className:n.noPadding},t.createElement(C,{disabled:i,name:`${e}.expressionType`})),t.createElement(r,{item:!0,container:!0,spacing:0,direction:"column",className:n.noPadding},t.createElement(y,{depth:o,handleDelete:d=>f(d,e),disabled:i,conditions:E,name:e}),h?.map((d,s)=>t.createElement(A,{key:s,expression:d,name:`${e}.expressions[${s}]`,depth:o,disabled:i}))),!i&&t.createElement(r,{item:!0,className:n.noPadding},t.createElement(N,{onAddCondition:g,onAddExpression:x}))))};export{k as RuleInputBox};
|
|
2
2
|
//# sourceMappingURL=RuleInputBox.esm.js.map
|
package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/useRuleInputHandlers.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ExpressionType as
|
|
1
|
+
import{ExpressionType as l}from"../../types/ExpressionType.esm.js";import"../../types/CheckFormTypes.esm.js";import"../../../../Frequency/types.esm.js";import"../../../../Frequency/util.esm.js";import"../../../../Frequency/FrequencyComponent.esm.js";import"../../types/Path.esm.js";const x=(a,e,s,t)=>({handleAddCondition:async()=>{const i=`${a}`,o=[...e(i)?.conditions||[],{factRef:"",path:"",operator:"",value:""}],n=`${a}.conditions`;s(n,o),await t(n)},handleAddExpression:async()=>{const i=`${a}.expressions`,o=e(i)||[];o.push({expressionType:l.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:""}]}),s(i,o),await t(i)},handleDeleteCondition:async(i,o)=>{const n=o.match(/(.*\.expressions)(?=\[\d+])/)?.[0]||o,p=`${o}.conditions`,r=e(p);if(r.splice(i,1),r.length===0){s(p,void 0);const c=parseInt(o.slice(o.lastIndexOf("[")+1,o.lastIndexOf("]")),10),d=e(n);d[c]?.expressions?.splice(c,1),s(n,d[c]?.expressions?d:void 0),await t(n)}else s(p,r),await t(p)}});export{x as useRuleInputHandlers};
|
|
2
2
|
//# sourceMappingURL=useRuleInputHandlers.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Typography as
|
|
1
|
+
import{Typography as r}from"@material-ui/core";import{makeStyles as f}from"@material-ui/core/styles";import{uniqBy as u}from"lodash";import e from"react";import{FormControlledSelect as E}from"../../../../FormControlledSelect/FormControlledSelect.esm.js";import{useOptions as v}from"../../../../GroupSelector/useOptions.esm.js";import{CHECK_FIELDS as y}from"../../utils/checkFormUtils.esm.js";const b=f(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(1)}})),g=({control:t,disabled:a,error:n})=>{const l=b(),{options:i,isLoading:m}=v(),p=u(i.map(o=>({value:o.ref,label:o.name})),"value"),{owner:{name:s,description:c,selectLabel:d}}=y.details;return e.createElement("div",{className:l.container},e.createElement("div",null,e.createElement(r,{variant:"subtitle2"},s),e.createElement(r,{variant:"caption"},c)),e.createElement("div",null,e.createElement(E,{name:"detailsStep.ownerEntityRef",control:t,options:p,placeholder:d,disabled:a||m,helperText:n?.message??void 0})))};export{g as TeamDetailsInput};
|
|
2
2
|
//# sourceMappingURL=TeamDetailsInput.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{FrequencySchema as
|
|
1
|
+
import{FrequencySchema as g}from"@spotify/backstage-plugin-soundcheck-common";import{isObject as w}from"lodash";import{v4 as k}from"uuid";import{mapInputFilterToFormFilters as v,mapFiltersToInputFilter as x,mapFiltersToCatalogFilter as E}from"../../../Filter/utils.esm.js";import"../../../Filter/FilterComponent.esm.js";import{emptyFilters as b}from"../../../Filter/types.esm.js";import{TimeUnit as d}from"../../../Frequency/types.esm.js";import{isTimeUnit as T}from"../../../Frequency/util.esm.js";import"../../../Frequency/FrequencyComponent.esm.js";import{ExpressionType as c}from"../types/ExpressionType.esm.js";import"../types/CheckFormTypes.esm.js";import{defaultSchedule as S}from"../types/Schedule.esm.js";import"../types/Path.esm.js";import{CHECK_NAME_MAX_LENGTH as C}from"./validation.esm.js";const h=e=>{if(w(e)&&"frequency"in e){const s=g.safeParse(e.frequency);if(s.success){const t=s.data;if("cron"in t)return{enabled:!0,frequency:{type:"cron",unit:d.Hours,value:1,cron:t.cron}};const r=Object.keys(t);if(r.length){const n=r[0];if(T(n))return{enabled:!0,frequency:{type:"HumanDuration",unit:n,value:t[n]??1,cron:""}}}}}return{enabled:!1,frequency:{type:"HumanDuration",unit:d.Hours,value:1,cron:""}}},m=(e,s)=>{const{enabled:t,frequency:r}=e;if(t){const{cron:n,type:i,unit:a,value:o}=r;return i==="HumanDuration"?{frequency:{[a]:o},filter:E(s)}:{frequency:{cron:n}}}},y=e=>{if(typeof e=="string"){if(e==="true")return!0;if(e==="false")return!1;const s=Number(e);if(!isNaN(s))return s}return e},p=e=>{if(!e)return{};if(e.expressionType){const s={[e.expressionType]:e.conditions?.map(t=>({factRef:t.factRef,path:t.path,operator:t.operator,value:y(t.value)}))};return e.expressions&&e.expressions.forEach(t=>{s[e.expressionType]?.push(p(t))}),s}if(e.expressions)return e.expressions.map(p);if(e.conditions&&e.conditions.length===1){const s=e.conditions[0];return{factRef:s.factRef,path:s.path,operator:s.operator,value:y(s.value)}}return{}},l=(e,s=!0)=>{if(!e)return{conditions:[]};const t=Object.keys(e),r=t.includes("all")||s&&!t.includes("any")?c.AllOf:c.AnyOf;if(t.includes(r)||s){const n=e[r]||[e],i=[],a=[];return n.forEach(o=>{const f=Object.keys(o);f.includes("all")||f.includes("any")?a.push(l(o,!1)):i.push({factRef:o.factRef,path:o.path,operator:o.operator,value:o.value})}),{expressions:a.length>0?a:void 0,conditions:i,expressionType:r}}return{expressionType:c.AllOf,conditions:[{factRef:e.factRef,path:e.path,operator:e.operator,value:e.value}]}},R=e=>({detailsStep:{name:e.name??"",description:e.description??"",ownerEntityRef:e.ownerEntityRef??""},rulesStep:{expressions:l(e.rule),passedMessage:e.passedMessage??void 0,failedMessage:e.failedMessage??void 0,warning:e.warning??!1},filtersStep:{filter:v(e.filter)},scheduleStep:{schedule:h(e.schedule)}}),M=(e,s)=>{const{detailsStep:t,rulesStep:r,filtersStep:n,scheduleStep:i}=e;return{id:s?s.id:k(),ownerEntityRef:t.ownerEntityRef??void 0,name:t.name,description:t.description,passedMessage:r.passedMessage??void 0,failedMessage:r.failedMessage??void 0,rule:p(r.expressions),warning:r.warning??!1,filter:n.filter?x(n.filter):void 0,schedule:m(i.schedule,n.filter)}},u=(e,s="$")=>{const t=[];if(e.type==="object"&&e.properties){const r=e.properties;for(const n in r)if(r.hasOwnProperty(n)){const i=`${s}.${n}`;t.push(i);const a=r[n];t.push(...u(a,i))}}if(e.type==="array"&&e.items){const r=`${s}[*]`;t.push(r);const n=Array.isArray(e.items)?e.items:[e.items];for(const i of n)t.push(...u(i,r))}return t},A={detailsStep:{name:"",description:"",ownerEntityRef:""},rulesStep:{expressions:{expressionType:c.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:"",conditions:[]}]},warning:!1},filtersStep:{filter:b()},scheduleStep:{schedule:S()}},F={details:{name:{name:"Check name",description:"Give your check a meaningful name so it's easy to remember",helperText:`Max ${C} characters`,placeholder:"Example: Code Coverage Check"},description:{name:"Check description",description:"Give your check a meaningful description so others know what it's for",placeholder:"Example: Ensure code coverage meets the minimum threshold"},owner:{name:"Check owner",description:"Add yourself, or a team, as the owner of this check",selectLabel:"Owner"}},rulesStep:{rules:{name:"Check rules",description:"Add the rules you want your check to enforce"},messages:{name:"Pass/Fail messages (Optional)",description:"Add the messages that will appear to you when checks either pass or fail",passMessagePlaceholder:"Enter pass message...",failMessagePlaceholder:"Enter fail message...",passedTabName:"Passed Message",failedTabName:"Failed Message"},warnings:{name:"Enable warnings",description:"Enable if the check should emit warning check results if it fails",label:"Warning"}},filter:{description:'Setting the filters below will limit the scope of the Check so that only those Entities that match the filter will be monitored by the Check. As an example, choosing a "Kind" of "Component" will make this Check only apply to Entities whose Kind is indeed set to "Component". This would exclude Entities like Groups, Users, APIs, etc. from being impacted by the Check.'},schedule:{description:"By default, checks are executed when any fact they depend on is updated. However, you may also schedule a check to run on a schedule.",checkboxLabel:"Schedule check"}};export{F as CHECK_FIELDS,A as DEFAULT_FORM_VALUES,u as generateJsonPaths,R as mapCheckerToFormValues,p as mapExpressionToRule,h as mapInputScheduleToSchedule,l as mapRuleToExpression,m as mapScheduleToInputSchedule,M as mapToCheckerInput};
|
|
2
2
|
//# sourceMappingURL=checkFormUtils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{usePermission as
|
|
1
|
+
import{usePermission as p}from"@backstage/plugin-permission-react";import{soundcheckCollectorUpdatePermission as c}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{useParams as d}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as f}from"../../hooks/useNavigateBack.esm.js";import{useGetCollectors as u}from"../../hooks/collectors/useGetCollectors.esm.js";import{collectorsPageRouteRef as g}from"../../routes.esm.js";import{LoadingIndicator as C}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as E}from"../PageWarningMessage/PageWarningMessage.esm.js";import{Configurator as P}from"./Configurators/Configurator.esm.js";const h=()=>{const{collectorId:r}=d(),{data:m,isLoading:l}=u([r??""]),{loading:a,allowed:n}=p({permission:c}),[s]=f(g),o=m?.[0],t=l||a,i=n&&o?.isEditable;return e.createElement("div",null,t&&e.createElement(C,null),e.createElement(E,{entityName:"Collector",entityId:r,showNotFound:!t&&!o,showCannotEdit:!t&&!i}),o&&i&&e.createElement(P,{title:o?o.name??o.id:"",open:!0,handleClose:s,selectedCollector:o}))};export{h as CollectorPage};
|
|
2
2
|
//# sourceMappingURL=CollectorPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import t from"react";import{FullScreenDialog as i}from"../../FullScreenDialog/FullScreenDialog.esm.js";import{GithubConfigurator as n}from"./Github/GithubConfigurator.esm.js";const c=({title:o,open:l,handleClose:r,selectedCollector:e})=>t.createElement(i,{handleClose:r,title:o,open:l},e?.id==="github"&&t.createElement(n,{selectedCollector:e}));export{c as Configurator};
|
|
2
2
|
//# sourceMappingURL=Configurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as b,FormControlLabel as h,Switch as f,Box as E,Typography as
|
|
1
|
+
import{makeStyles as b,FormControlLabel as h,Switch as f,Box as E,Typography as s,Tabs as y,Tab as i}from"@material-ui/core";import e,{useState as x}from"react";import{useWatch as F,Controller as o}from"react-hook-form";import{validateCacheConfig as k}from"../../../../utils/collectors.esm.js";import{validateFrequency as N}from"../../../../utils/frequency.esm.js";import"lodash";import"../../../Frequency/types.esm.js";import"../../../Frequency/util.esm.js";import{FrequencyComponent as T}from"../../../Frequency/FrequencyComponent.esm.js";import{CacheConfigComponent as q}from"../../../CacheConfig/CacheConfigComponent.esm.js";import{FilterComponent as w}from"../../../Filter/FilterComponent.esm.js";const S=b(a=>({root:{padding:a.spacing(1)},tabsContainer:{marginRight:16},tab:{height:"64px",textAlign:"left"},contentContainer:{width:"100%",padding:a.spacing(1)},divider:{marginTop:a.spacing(8),marginBottom:a.spacing(8)},switchTrack:{backgroundColor:`${a.palette.primary.main} !important`}})),$=({name:a,label:d,description:p,control:l,disabled:c,errors:m})=>{const[r,g]=x(0),C=F({control:l,name:`${a}.enabled`}),u=(t,v)=>{g(v)},n=S();return e.createElement("div",{className:n.root},e.createElement(o,{name:`${a}.enabled`,control:l,render:({field:t})=>e.createElement(h,{control:e.createElement(f,{...t,checked:t.value,"data-testid":`${a}-switch`,classes:{track:t.value?n.switchTrack:void 0}}),label:e.createElement(E,{display:"flex",flexDirection:"column"},e.createElement(s,{variant:"body1",component:"span"},e.createElement("b",null,`${d}`)),e.createElement(s,{variant:"caption",color:"textSecondary",component:"p"},`${p}`))})}),C&&e.createElement("div",null,e.createElement(y,{orientation:"horizontal",variant:"scrollable",value:r,onChange:u,className:n.tabsContainer},e.createElement(i,{label:"Frequency",className:n.tab}),e.createElement(i,{label:"Filters",className:n.tab}),e.createElement(i,{label:"Caching",className:n.tab})),e.createElement("div",{className:n.contentContainer},r===0&&e.createElement("div",null,e.createElement(o,{name:`${a}.frequency`,control:l,rules:{validate:N},render:({field:t})=>e.createElement(T,{disabled:c,value:t.value,onChange:t.onChange,errors:m?.frequency})})),r===1&&e.createElement("div",null,e.createElement(o,{name:`${a}.filters`,control:l,render:({field:t})=>e.createElement(w,{disabled:c,value:t.value,onChange:t.onChange})})),r===2&&e.createElement("div",null,e.createElement(o,{name:`${a}.cacheConfig`,control:l,rules:{validate:k},render:({field:t})=>e.createElement(q,{disabled:c,value:t.value,onChange:t.onChange,errors:m?.cacheConfig})})))))};export{$ as FactCollectionConfig};
|
|
2
2
|
//# sourceMappingURL=FactCollectionConfig.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{asArray as
|
|
1
|
+
import{asArray as C}from"@spotify/backstage-plugin-soundcheck-common";import{mapToCacheConfig as s,defaultCacheConfig as q,mapCacheConfigToHumanDurationOrBoolean as l}from"../../../CacheConfig/utils.esm.js";import"../../../CacheConfig/CacheConfigComponent.esm.js";import{mapCatalogFilterToFilters as u,mapFiltersToCatalogFilter as p}from"../../../Filter/utils.esm.js";import"../../../Filter/FilterComponent.esm.js";import{emptyFilters as b}from"../../../Filter/types.esm.js";import"../../../Frequency/types.esm.js";import{mapHumanDurationOrCronToFrequency as y,defaultFrequency as d,mapFrequencyToHumanDurationOrCron as m}from"../../../Frequency/util.esm.js";import"../../../Frequency/FrequencyComponent.esm.js";const g=()=>({enabled:!1,filters:{...b(),selectedKinds:["Component"]},frequency:d(),cacheConfig:q()}),h=()=>({branchProtections:g(),repositoryDetails:g(),repositoryLanguages:g()});function D(o){const{branchProtections:r,repositoryDetails:t,repositoryLanguages:e}=o;if(r.enabled||t.enabled||e.enabled){const n={},f=[];if(n.collects=f,r.enabled){const{cacheConfig:i,frequency:c,filters:a}=r;f.push({factName:"branch_protections",type:"BranchProtections",frequency:m(c),filter:p(a),cache:l(i)})}if(t.enabled){const{cacheConfig:i,frequency:c,filters:a}=t;f.push({factName:"repository_details",type:"RepositoryDetails",frequency:m(c),filter:p(a),cache:l(i)})}if(e.enabled){const{cacheConfig:i,frequency:c,filters:a}=e;f.push({factName:"repository_languages",type:"RepositoryLanguages",frequency:m(c),filter:p(a),cache:l(i)})}return n}return[]}function F(o){const r=h();if(o){const t=o.collects;if(t)for(const e of C(t)){const n=e.type;n==="BranchProtections"&&(r.branchProtections={enabled:!0,frequency:y(e.frequency??o.frequency),filters:u(e.filter??o.filter),cacheConfig:s(e.cache)}),n==="RepositoryDetails"&&(r.repositoryDetails={enabled:!0,frequency:y(e.frequency??o.frequency),filters:u(e.filter??o.filter),cacheConfig:s(e.cache)}),n==="RepositoryLanguages"&&(r.repositoryLanguages={enabled:!0,frequency:y(e.frequency??o.frequency),filters:u(e.filter??o.filter),cacheConfig:s(e.cache)})}}return r}export{h as defaultGithubConfig,F as mapConfigToGithubCollectorConfig,D as mapGithubCollectorConfigToConfig};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Grid as
|
|
1
|
+
import{Grid as r}from"@material-ui/core";import t from"react";import{useGetCollectors as a}from"../../../hooks/collectors/useGetCollectors.esm.js";import{CollectorListSkeleton as m}from"./CollectorListSkeleton.esm.js";import{ConfigurableCollectorIds as o,CollectorSummaryCard as n}from"./CollectorSummaryCard.esm.js";const d=()=>{const{data:i,isLoading:c}=a();return t.createElement(r,{container:!0,direction:"row"},t.createElement(r,{container:!0,spacing:4,role:"list","aria-label":"checks"},c?t.createElement(m,null):i?.sort((e,l)=>!o.includes(e.id)&&o.includes(l.id)?1:o.includes(e.id)&&!o.includes(l.id)?-1:(e.name??e.id).localeCompare(l.name??l.id)).map(e=>t.createElement(r,{key:e.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`collector card ${e.id}`},t.createElement(n,{collector:e})))))};export{d as CollectorListPage};
|
|
2
2
|
//# sourceMappingURL=CollectorListPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as a,useTheme as c}from"@material-ui/core";import
|
|
1
|
+
import{makeStyles as a,useTheme as c}from"@material-ui/core";import s from"react";import g from"../../../images/cat-blk.svg";import p from"../../../images/cat-wht.svg";import n from"../../../images/dd_logo_h_rgb.svg";import h from"../../../images/dd_logo_h_white.svg";import f from"../../../images/GitHub_Logo.svg";import l from"../../../images/GitHub_Logo_White.svg";import u from"../../../images/k8s_blue.svg";import d from"../../../images/k8s_white.svg";import k from"../../../images/pd-black.svg";import b from"../../../images/pd-white.svg";import y from"../../../images/SCM_DARK.svg";import I from"../../../images/SCM_LIGHT.svg";import L from"../../../images/soundcheck-black.svg";import S from"../../../images/soundcheck-white.svg";import T from"../../../images/tech-black.svg";import w from"../../../images/tech-white.svg";import{isDarkTheme as x}from"../../Charts/chartUtils.esm.js";const t={github:f,datadog:n,scm:I,pagerduty:k,catalog:g,soundcheck:L,techinsights:T,kubernetes:u},i={github:l,datadog:h,scm:y,pagerduty:b,catalog:p,soundcheck:S,techinsights:w,kubernetes:d},B=new Set(["catalog","soundcheck","techinsights"]),D=a(o=>({image:{objectFit:"contain",color:"white",height:o.spacing(5)-4,maxWidth:"100%",marginBottom:o.spacing(1.5)},tallImage:{height:o.spacing(6.5),marginBottom:o.spacing(0)}})),$=o=>!!t[o]&&!!i[o],j=({collectorId:o})=>{const m=D(),e=c(),r=x(e)?i[o]:t[o];return r?s.createElement("img",{src:r,alt:o,className:`${m.image} ${B.has(o)?m.tallImage:""}`}):null};export{j as CollectorLogo,$ as hasLogo};
|
|
2
2
|
//# sourceMappingURL=CollectorLogo.esm.js.map
|