@spotify/backstage-plugin-soundcheck 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/dist/alpha/integrations.esm.js +1 -1
- package/dist/alpha/pages.esm.js +1 -1
- package/dist/alpha.d.ts +68 -23
- package/dist/api.esm.js +1 -1
- package/dist/blueprints/CampaignActionBlueprint.esm.js +2 -0
- package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
- package/dist/components/AccordionSection/AccordionSection.esm.js +2 -0
- package/dist/components/Alert/Alert.esm.js +2 -0
- package/dist/components/CampaignPage/CampaignActionsContext.esm.js +2 -0
- package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
- package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +1 -1
- package/dist/components/CheckPage/CheckPageBUI.esm.js +1 -1
- package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/TemplateCategoryBUI.esm.js +1 -1
- package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
- package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorFactTableBUI.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
- package/dist/components/CollectorsPage/IntegrationLogoBUI.esm.js +1 -1
- package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
- package/dist/components/CreateNewTrackPage/CreateNewTrackPage.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +1 -1
- package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorer.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/GroupSelectorBUI/GroupSelectorBUI.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +1 -1
- package/dist/components/Loading/Loading.esm.js +2 -0
- package/dist/components/Menus/useCampaignActions.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPageBUI.esm.js +1 -1
- package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +1 -1
- package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js +1 -1
- package/dist/components/Stepper/Stepper.esm.js +2 -0
- package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +1 -1
- package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
- package/dist/components/TimePeriodBar/TimePeriodBarBUI.esm.js +1 -1
- package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +1 -1
- package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
- package/dist/components/TrackBuilderPage/TrackBuilderPage.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/CheckItem/CheckItem.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/IntegrationTags/IntegrationTags.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/RunChecksStep/RunChecksStep.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/SelectProviderStep/SelectProviderStep.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/SelectTracksStep/SelectTracksStep.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/TrackAccordion/TrackAccordion.esm.js +2 -0
- package/dist/components/TrackBuilderPage/components/TrackBuilderStatus/TrackBuilderStatus.esm.js +2 -0
- package/dist/components/TrackBuilderPage/hooks/useTrackBuilderStatus.esm.js +2 -0
- package/dist/components/TrackBuilderPage/hooks/useTrackCheckExecutions.esm.js +2 -0
- package/dist/components/TrackBuilderPage/utils.esm.js +4 -0
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackHistoryChartBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
- package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +163 -84
- package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
- package/dist/hooks/filters/useFilters.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/tracks/useDeleteTrack.esm.js +1 -1
- package/dist/hooks/tracks/useOutOfBoxTracks.esm.js +2 -0
- package/dist/hooks/tracks/useSaveOutOfBoxTracks.esm.js +2 -0
- package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
- package/dist/index.d.ts +30 -2
- package/dist/index.esm.js +1 -1
- package/dist/routes.esm.js +1 -1
- package/dist/utils/facetFilters/utils.esm.js +2 -0
- package/package.json +25 -25
- package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +0 -2
- package/dist/components/TechHealth/Filters/FacetFilter.esm.js +0 -2
- package/dist/components/TechHealth/Filters/FilterProvider.esm.js +0 -2
- package/dist/components/TechHealth/Filters/Filters.esm.js +0 -2
- package/dist/components/TechHealth/Filters/FiltersHeader.esm.js +0 -2
- package/dist/components/TechHealth/Filters/FiltersSection.esm.js +0 -2
- package/dist/components/TechHealth/Filters/NumberOfDaysFilter.esm.js +0 -2
- package/dist/components/TechHealth/Filters/utils.esm.js +0 -2
- package/dist/components/TechHealth/Loading/Loading.esm.js +0 -2
- package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +0 -2
- /package/dist/{components/TechHealth/Filters → utils/facetFilters}/types.esm.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as C,jsx as e,Fragment as N}from"react/jsx-runtime";import{stringifyEntityRef as p}from"@backstage/catalog-model";import{useEntity as v}from"@backstage/plugin-catalog-react";import{makeStyles as E,Box as $,Typography as I,Tooltip as R,IconButton as S,CircularProgress as T}from"@material-ui/core";import z from"@material-ui/icons/Refresh";import A from"classnames";import{Link as L}from"react-router-dom";import{ResultState as h}from"../../graphql/generated/index.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as j}from"../../hooks/exemptions/useGetExemption.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useExecuteCheck as w}from"../../hooks/checks/useExecuteCheck.esm.js";import{CheckIcon as B}from"../CheckIcon/CheckIcon.esm.js";import{RelativeTime as F}from"../RelativeTime/RelativeTime.esm.js";const d=E(t=>({root:{display:"flex",width:"100%",gridTemplateColumns:"auto 1fr auto auto auto auto",gridColumnGap:t.spacing(.5),padding:t.spacing(1),alignItems:"center","&.selected":{backgroundColor:t.palette.action.hover},"&:hover, &:active, &:focus":{backgroundColor:t.palette.action.hover}},checkIcon:{height:20}})),G=({className:t,href:r,name:o,children:c})=>r?e(L,{"aria-label":`select check ${o}`,to:r,className:t,children:c}):e("div",{className:t,children:c}),P=({result:t,name:r,id:o,timestamp:c,isExecutable:l=!
|
|
1
|
+
import{jsxs as C,jsx as e,Fragment as N}from"react/jsx-runtime";import{stringifyEntityRef as p}from"@backstage/catalog-model";import{useEntity as v}from"@backstage/plugin-catalog-react";import{makeStyles as E,Box as $,Typography as I,Tooltip as R,IconButton as S,CircularProgress as T}from"@material-ui/core";import z from"@material-ui/icons/Refresh";import A from"classnames";import{Link as L}from"react-router-dom";import{ResultState as h}from"../../graphql/generated/index.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as j}from"../../hooks/exemptions/useGetExemption.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useExecuteCheck as w}from"../../hooks/checks/useExecuteCheck.esm.js";import{CheckIcon as B}from"../CheckIcon/CheckIcon.esm.js";import{RelativeTime as F}from"../RelativeTime/RelativeTime.esm.js";const d=E(t=>({root:{display:"flex",width:"100%",gridTemplateColumns:"auto 1fr auto auto auto auto",gridColumnGap:t.spacing(.5),padding:t.spacing(1),alignItems:"center","&.selected":{backgroundColor:t.palette.action.hover},"&:hover, &:active, &:focus":{backgroundColor:t.palette.action.hover}},checkIcon:{height:20}})),G=({className:t,href:r,name:o,children:c})=>r?e(L,{"aria-label":`select check ${o}`,to:r,className:t,children:c}):e("div",{className:t,children:c}),P=({result:t,name:r,id:o,timestamp:c,isExecutable:l=!0,selected:u=!1,href:f})=>{const m=d(),k=A(m.root,{selected:u}),{entity:a}=v(),{mutateAsync:y,isLoading:n}=w(),{data:s}=j(p(a),o),x=async()=>{if(!(!a||!o))try{await y({checkerId:o,entityRef:p(a),shouldRefreshFacts:!0})}catch{}},g=!a||!o||!l||n||!!s?.exemption||t===h.NotApplicable,b=()=>{const i="Cannot execute check";return a?o?l?n?`${i} - check is already executing.`:s?.exemption?`${i} - entity has been exempted from this check.`:t===h.NotApplicable?`${i} - check is not applicable to entity.`:"Execute Check":`${i} - check is not executable by Soundcheck`:`${i} - no check id.`:`${i} - no entity.`};return C(G,{href:f,className:k,name:r,children:[e(B,{className:m.checkIcon,result:t}),e($,{flex:1,children:e(I,{variant:"body2",children:r})}),c&&!n?e(F,{timestamp:c}):null,!n&&e(N,{children:e(R,{title:b(),children:e("span",{children:e(S,{size:"small",color:"inherit",onClick:x,disabled:g,"aria-label":"Execute Check",children:e(z,{fontSize:"small"})})})})}),n&&e(T,{color:"inherit",size:"1em"})]})};export{P as Check,d as useStyles};
|
|
2
2
|
//# sourceMappingURL=Check.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as i,jsx as e}from"react/jsx-runtime";import{makeStyles as m,Box as a,ButtonGroup as g,Button as b,Menu as h,MenuItem as l}from"@material-ui/core";import x from"@material-ui/icons/ArrowDropDown";import{useState as
|
|
1
|
+
import{jsxs as i,jsx as e}from"react/jsx-runtime";import{makeStyles as m,Box as a,ButtonGroup as g,Button as b,Menu as h,MenuItem as l}from"@material-ui/core";import x from"@material-ui/icons/ArrowDropDown";import{useState as C}from"react";const A=m(d=>({label:{padding:d.spacing(0,1.5,0,0)},icon:{borderLeft:`1px solid ${d.palette.divider}`,display:"flex",alignItems:"center",padding:0},menu:{margin:0,backgroundColor:d.palette.background.paper},button:{padding:d.spacing(.5,1.5),paddingRight:d.spacing(.5)}})),f=({onAddCondition:d,onAddExpression:p})=>{const n=A(),[r,s]=C(null),o=!!r,c=u=>{s(u.currentTarget)},t=()=>{s(null)};return i(a,{children:[e(g,{color:"primary",children:i(b,{className:n.button,"data-testid":"add-button",id:"add-button","aria-controls":o?"add-menu":void 0,"aria-haspopup":"true","aria-expanded":o?"true":void 0,onClick:c,size:"medium",children:[e(a,{className:n.label,children:"Add"}),e(a,{className:n.icon,children:e(x,{})})]})}),i(h,{id:"add-menu",anchorEl:r,open:o,onClose:t,classes:{paper:n.menu},MenuListProps:{"aria-labelledby":"add-button"},children:[e(l,{"data-testid":"add-condition",onClick:()=>{d(),t()},children:"Add Condition"}),e(l,{"data-testid":"add-expression",onClick:()=>{p(),t()},children:"Add Expression"})]})]})};export{f as AddMenuButton};
|
|
2
2
|
//# sourceMappingURL=AddMenuButton.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,jsxs as y,Fragment as
|
|
1
|
+
import{jsx as t,jsxs as y,Fragment as ie}from"react/jsx-runtime";import{stringifyEntityRef as C,parseEntityRef as oe,RELATION_OWNED_BY as ne,RELATION_PART_OF as re}from"@backstage/catalog-model";import{useRouteRef as ae}from"@backstage/core-plugin-api";import{entityRouteRef as se,useEntityPresentation as ce,getEntityRelations as F,humanizeEntityRef as j}from"@backstage/plugin-catalog-react";import{TableRoot as le,TableHeader as de,Column as d,TableBody as pe,TablePagination as fe,Row as ge,Flex as me,CellText as u,CellProfile as ye}from"@backstage/ui";import{RiCheckLine as ue,RiCloseLine as he,RiAlertLine as Ie,RiErrorWarningFill as Re,RiProhibitedLine as we,RiIndeterminateCircleLine as ke,RiInformationOffLine as Ee}from"@remixicon/react";import{compact as Se,uniq as Ce,startCase as be}from"lodash";import{useState as b,useEffect as W,useMemo as P,useCallback as v}from"react";import{useNavigate as Pe}from"react-router-dom";import{ResultState as l,CheckEntityField as p,Direction as s}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as ve}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useProfileImages as Le}from"../../../hooks/catalog/useProfileImages.esm.js";import{useCheckEntities as ze}from"../../../hooks/entities/useCheckEntities.esm.js";import{useSortSearchParams as Ne}from"../../../hooks/useSortSearchParams.esm.js";import{CustomCell as Te}from"../../CustomCell/CustomCell.esm.js";import"../../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as Ae}from"../../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../routes.esm.js";import{LoadingTableSkeleton as Be}from"../../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{toResultState as _}from"../utils.esm.js";import{toCheckEntityRow as De}from"./utils.esm.js";const K=10,Oe=["kind","metadata.name","metadata.namespace","spec.profile.displayName","metadata.title","relations","spec.lifecycle","spec.type"],xe={[l.Passed]:t(ue,{style:{color:"var(--bui-fg-success)"}}),[l.Failed]:t(he,{style:{color:"var(--bui-fg-danger)"}}),[l.Warning]:t(Ie,{}),[l.Error]:t(Re,{}),[l.Exempt]:t(we,{style:{color:"var(--bui-fg-disabled)"}}),[l.NotReported]:t(ke,{style:{color:"var(--bui-fg-disabled)"}}),[l.NotApplicable]:t(Ee,{style:{color:"var(--bui-fg-disabled)"}})},L={name:p.Name,owner:p.Owner,system:p.System,type:p.Type,lifecycle:p.Lifecycle},Fe=({checkId:M,trackId:q,filter:h,states:I})=>{const{updateSortParams:z,searchParams:f}=Ne(),[R,N]=b(()=>{const e=f.get("sortDirection");return e==="ascending"?s.Asc:e==="descending"?s.Desc:s.Asc}),[m,T]=b(()=>{const e=f.get("sort");return e&&L[e]?e:"name"}),H=R===s.Asc?"ascending":"descending",[i,A]=b({orderBy:void 0,filter:h,states:I?.map(_).filter(e=>e!==void 0),pageInfo:{page:0,pageSize:K,direction:"forward",cursor:null}});W(()=>{const e=f.get("sortDirection");(e==="ascending"||e==="descending")&&N(e==="ascending"?s.Asc:s.Desc);const o=f.get("sort");o&&L[o]&&T(o)},[f]),W(()=>{let e;m?e={field:L[m]??p.Name,direction:R}:e=void 0,A(o=>({...o,orderBy:e,pageInfo:{...o.pageInfo,page:0,cursor:null},filter:h,states:I?.map(_).filter(a=>a!==void 0)}))},[h,I,m,R]);const{data:r,isLoading:U}=ze({checkId:M,trackId:q,orderBy:i.orderBy,filter:i.filter,states:i.states?.length?i.states:void 0,[i.pageInfo.direction==="forward"?"first":"last"]:i.pageInfo.pageSize,[i.pageInfo.direction==="forward"?"after":"before"]:i.pageInfo.cursor}),Y=r?.checkEntities.edges.map(e=>e.node.entityRef)??[],{data:w,isLoading:$}=ve({entityRefs:Y,fields:Oe}),G=P(()=>r?.checkEntities.edges??[],[r]),k=P(()=>r?.checkEntities.totalCount??0,[r]),J=k>K,E=v((e,o)=>{const a=e>i.pageInfo.page?"forward":"backward",S=a==="forward"?r?.checkEntities.pageInfo.endCursor??null:r?.checkEntities.pageInfo.startCursor??null;A({...i,pageInfo:{page:e,pageSize:o,direction:a,cursor:S}})},[r,i]),V=v(({direction:e,column:o})=>{T(String(o)),N(e==="ascending"?s.Desc:s.Asc),z({sort:String(o),sortDirection:e})},[z]),B=P(()=>!r?.checkEntities.edges?.length||!w?.items?.length?[]:Se(r.checkEntities.edges.map(e=>{const o=w.items.find(a=>!!a&&C(a)===e.node.entityRef);return o?De({checkDetails:e.node,entity:o}):void 0})),[r?.checkEntities.edges,w?.items]),X=({row:e})=>{const o=Pe(),a=ae(se),S=v(n=>{const c=oe(C(n)),g=a(c);o(`${g}/soundcheck`)},[o,a]),{primaryTitle:D}=ce(C(e.entity)),Z=F(e.entity,ne).map(n=>j(n,{defaultKind:n.kind})).join(", "),Q=F(e.entity,re,{kind:"system"}).map(n=>j(n,{defaultKind:"system"})).join(", "),ee=Ce(B.flatMap(n=>n.entity.relations?.filter(({type:c,targetRef:g})=>c==="ownedBy"&&g).map(c=>c.targetRef)||[])),{profileImageMap:te}=Le(ee),O=e.entity.relations?.find(({type:n})=>n==="ownedBy")?.targetRef;let x;return O&&(x=te?.[O]),y(ge,{onAction:()=>S(e.entity),children:[t(Te,{children:t(me,{children:(n=>{const c=xe[n],g=be(n.toLowerCase());return t("span",{title:g,children:c})})(e.state)})}),t(u,{title:D}),t(u,{title:Q}),t(ye,{name:Z,src:x??D}),t(u,{title:e.entity.spec?.type}),t(u,{title:e.entity.spec?.lifecycle})]},e.id)};return U||$?t(Be,{}):G.length?y(ie,{children:[y(le,{onSortChange:V,sortDescriptor:{direction:H,column:m},children:[y(de,{children:[t(d,{id:"state",style:{width:"5%"}}),t(d,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Name"}),t(d,{id:"system",allowsSorting:!0,style:{width:"20%"},children:"System"}),t(d,{id:"owner",allowsSorting:!0,style:{width:"20%"},children:"Owner"}),t(d,{id:"type",allowsSorting:!0,style:{width:"10%"},children:"Type"}),t(d,{id:"lifecycle",allowsSorting:!0,style:{width:"10%"},children:"Lifecycle"})]}),t(pe,{children:B.map(e=>t(X,{row:e},e.id))})]}),J&&t(fe,{showPageSizeOptions:!0,totalCount:k,pageSize:i.pageInfo.pageSize,offset:i.pageInfo.page*i.pageInfo.pageSize,onPreviousPage:()=>{const e=i.pageInfo.page-1;E(e,i.pageInfo.pageSize)},onNextPage:()=>{const e=i.pageInfo.page+1;E(e,i.pageInfo.pageSize)},onPageSizeChange:e=>{E(i.pageInfo.page,e)},hasNextPage:(i.pageInfo.page+1)*i.pageInfo.pageSize<k,hasPreviousPage:i.pageInfo.page>0})]}):t(Ae,{title:"No check entities found",body:"There are no check entities found."})};export{Fe as CheckEntitiesTableBUI};
|
|
2
2
|
//# sourceMappingURL=CheckEntitiesTableBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as i,jsxs as h,Fragment as me}from"react/jsx-runtime";import{parseEntityRef as pe}from"@backstage/catalog-model";import{useRouteRef as R}from"@backstage/core-plugin-api";import{usePermission as de}from"@backstage/plugin-permission-react";import{Container as H,HeaderPage as fe,Flex as W,Box as P}from"@backstage/ui";import{makeStyles as he}from"@material-ui/core";import{toEntityFilterQuery as w,combineEntityFilterQueries as ue,soundcheckCheckReadPermission as ke}from"@spotify/backstage-plugin-soundcheck-common";import{useState as F,useMemo as a,useEffect as ge}from"react";import{useSearchParams as Ee,useParams as Ie}from"react-router-dom";import Se from"react-use/lib/useDebounce";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useCheck as Te}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useTrack as be}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCheckStatus as ye}from"../../hooks/aggregations/useCheckStatus.esm.js";import"react-use/lib/useLocalStorage";import{useFilters as Ce}from"../../hooks/filters/useFilters.esm.js";import{useLCPReporting as ve}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Ne}from"../../hooks/useLoadTimeReporting.esm.js";import{trackDetailsRouteRef as Re,checksPageRouteRef as Pe,tracksPageRouteRef as we}from"../../routes.esm.js";import"../../utils/facetFilters/types.esm.js";import{parseNumberOfDays as Fe}from"../../utils/facetFilters/utils.esm.js";import{DescriptionCard as Le}from"../Cards/DescriptionCard/DescriptionCard.esm.js";import"../Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js";import"../Cards/TrackStatusCard/TrackStatusCard.esm.js";import{CheckStatusCard as xe}from"../Cards/CheckStatusCard/CheckStatusCard.esm.js";import{HistoricalCheckStatusCard as Ae}from"../Cards/HistoricalCheckStatusCard/HistoricalCheckStatusCard.esm.js";import{ChipSelector as je}from"../ChipSelector/ChipSelector.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as L}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import"lodash";import{toFilter as Me}from"../FilterSidebar/util.esm.js";import{LoadingTableSkeleton as Oe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as Be}from"../Menus/SimpleMenu.esm.js";import{useCheckActions as De}from"../Menus/useCheckActions.esm.js";import{PageCustomActions as Ue}from"../PageCustomActions/PageCustomActions.esm.js";import{CheckEntitiesTableBUI as Xe}from"./CheckEntitiesTable/CheckEntitiesTableBUI.esm.js";import{ExemptionsTableBUI as qe}from"./ExemptionsTableBUI.esm.js";const Ve=he(()=>({container:{marginBottom:"var(--bui-space-12)"},tables:{margin:"var(--bui-space-12) 0 0"},tableContent:{margin:"var(--bui-space-3) 0 0"}})),s={ENTITIES:"Entities",EXEMPTIONS:"Exemptions"},Qe={entities:s.ENTITIES,exemptions:s.EXEMPTIONS},$e={[s.ENTITIES]:"entities",[s.EXEMPTIONS]:"exemptions"},He=(p,e)=>p.levels.flatMap(({checks:l})=>l).find(({id:l})=>l===e)||null,We=()=>{const p=Ve(),[e,l]=Ee(),{trackId:o,checkId:r}=Ie(),{data:c,isLoading:k,isError:_}=be(o),{data:g,isLoading:u,isError:z}=Te(r),x=g?.ownerEntityRef,G=x?pe(x).name:void 0,A=De(g??void 0),J=R(Re),K=R(Pe),Y=R(we),[j,Z]=F(()=>{const t=e.get("section"),f=t?Qe[t]:null;return new Set([f??s.ENTITIES])}),b=j.values().next().value??s.ENTITIES,[d,M]=F(e.get("search")||""),[O,ee]=F(""),te=t=>{Z(t),M("");const f=t.values().next().value,$=f?$e[f]:void 0;$?l({section:$},{replace:!0}):l({},{replace:!0})},n=a(()=>e.getAll("states"),[e]),E=a(()=>e.getAll("owners"),[e]),I=a(()=>e.getAll("lifecycles"),[e]),S=a(()=>e.getAll("types"),[e]),T=a(()=>e.getAll("systems"),[e]),y=a(()=>Fe(e.get("numberOfDays")),[e]);Se(()=>{ee(d);const t=new URLSearchParams(e.toString());d?t.set("search",d):t.delete("search"),l(t,{replace:!0})},300,[d]);const B=a(()=>({routeName:"soundcheck-check-insights",additionalAttributes:{checkId:r||"",trackId:o||"",filtersApplied:E.length+I.length+S.length+T.length+n.length,ownersFilter:E.join(",")||"",lifecyclesFilter:I.join(",")||"",typesFilter:S.join(",")||"",systemsFilter:T.join(",")||"",statesFilter:n.join(",")||"",numberOfDays:y,checkSearch:O}}),[r,o,E,I,S,T,n,y,O]),{reportContentLoaded:D}=Ne(B),{reporter:re}=ve(B),m=a(()=>g??c?.levels.flatMap(t=>t.checks).find(t=>t.id===r),[g,r,c?.levels]),C=Me({lifecycles:I,owners:E,types:S,systems:T}),{data:U,isLoading:v,isError:ie}=ye({checkId:r,trackId:o,filter:C,states:n?.length?n:void 0},!!r);let N;if(r)if(c){const t=w(c.filter),f=w(He(c,r)?.filter);N=ue(t,f)}else m?.filter&&(N=w(m.filter));const{loading:X,allowed:q}=de({permission:ke,resourceRef:r}),oe=a(()=>!!m&&!X&&!q,[q,m,X]),{filters:se,selected:ae,setSelected:ce,onRemoveTag:ne,selectedTags:le}=Ce({entityFilterQuery:N,hasStatusFilters:!0}),V=_||z||ie,Q=re?.getLCPValue();return ge(()=>{!u&&!v&&(!o||!k)&&D({lcp:Q})},[u,v,k,o,D,Q]),u||o&&k?i(Oe,{}):!u&&!m?i(H,{className:p.container,children:i(L,{title:"Check not found",body:`There is no check with the requested id: ${r}.`})}):oe?i(L,{title:"Cannot view check",body:`No permission to view check with the requested id: ${r}.`}):o&&!k&&!c?i(L,{title:"No track found",body:`There is no track with the requested id: ${o}.`}):h(me,{children:[i(fe,{title:m?.name??"",breadcrumbs:o?[{label:"Tracks",href:Y()},{label:c?.name??"Track",href:J({trackId:o})}]:[{label:"Checks",href:K()}],customActions:i(Be,{label:"Check Actions",disabled:!A.length,placement:"left top",menuActions:A})}),h(H,{className:p.container,children:[h(W,{children:[i(Le,{description:m?.description??void 0,owner:G,isError:V,isLoading:u}),i(xe,{states:n,status:U,isLoading:v,isError:V}),i(Ae,{checkId:r,trackId:o,filter:C,states:n,checkStatus:U,numberOfDays:y})]}),h(P,{className:p.tables,children:[h(W,{justify:"between",children:[i(P,{minWidth:"12rem",children:i(je,{options:Object.values(s),selected:j,ariaLabel:"Sections",onSelectionChange:te})}),i(Ue,{searchValue:d,setSearchValue:t=>M(t),filters:se,selected:ae,setSelected:ce,onRemoveTag:ne,selectedTags:le,showSearch:b!==s.ENTITIES})]}),h(P,{className:p.tableContent,children:[b===s.ENTITIES&&i(Xe,{checkId:r,trackId:c?.id,filter:C,states:n}),b===s.EXEMPTIONS&&i(qe,{checkId:r,searchValue:d})]})]})]})]})};export{We as CheckPageBUI};
|
|
2
2
|
//# sourceMappingURL=CheckPageBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i,jsxs as
|
|
1
|
+
import{jsx as i,jsxs as l,Fragment as I}from"react/jsx-runtime";import{parseEntityRef as n}from"@backstage/catalog-model";import{useRouteRef as W,useApi as U}from"@backstage/core-plugin-api";import{entityRouteRef as $,entityPresentationApiRef as D}from"@backstage/plugin-catalog-react";import{TableRoot as F,TableHeader as H,Column as f,TableBody as M,Row as O,CellText as P,TooltipTrigger as J,Button as V,Tooltip as q,TablePagination as G}from"@backstage/ui";import{makeStyles as K}from"@material-ui/core";import{useState as T,useMemo as p,useCallback as Q}from"react";import{useNavigate as X}from"react-router-dom";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as Y}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useExemptions as Z}from"../../hooks/exemptions/useExemptions.esm.js";import{formatTimestamp as ee}from"../../utils/time.esm.js";import{CustomCell as te}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as _}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"../../routes.esm.js";import{LoadingTableSkeleton as ie}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";const j=10,oe=K(u=>({justificationCell:{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",whiteSpace:"pre-line",wordBreak:"break-word",fontWeight:"normal",textAlign:"left",background:"none !important",padding:0},emptyStateWrapper:{padding:u.spacing(2)}})),re=({checkId:u,searchValue:g})=>{const v=oe(),x=X(),S=W($),[c,R]=T("ascending"),[h,E]=T("entity"),{data:d,isLoading:z,error:B}=Z(u),y=p(()=>d?.totalCount??0,[d]),w=p(()=>d?.edges??[],[d]),N=Q(t=>{const e=n(t),o=S(e);x(`${o}/soundcheck`)},[x,S]),m=p(()=>{const t=(e,o)=>e<o?c==="ascending"?-1:1:e>o?c==="ascending"?1:-1:0;return[...w].sort((e,o)=>{const a=e.node,s=o.node;switch(h){case"entity":return t(n(a.entity_ref).name,n(s.entity_ref).name);case"justification":return t(a.justification??"",s.justification??"");case"user":return t(n(a.user_ref).name,n(s.user_ref).name);case"date":return t(a.timestamp,s.timestamp);default:return 0}})},[w,h,c]),b=U(D),C=p(()=>{const t=new Map;for(const{node:e}of m){const o=b.forEntity(e.entity_ref)?.snapshot?.primaryTitle;o&&t.set(e.entity_ref,o)}return t},[m,b]),k=p(()=>{if(!g?.length)return m;const t=g.toLowerCase().trim();return m.filter(({node:e})=>C.get(e.entity_ref)?.toLowerCase().includes(t))},[m,g,C]),L=y>j,{paginatedItems:A,paginationProps:r}=Y({pageParam:"perPage",defaultPageSize:j,items:k});return z?i(ie,{}):B?i(_,{title:"Exemptions failed",body:"Failed to load exemptions."}):!w.length||!k.length?i(_,{title:"No check exemptions found",body:"There are no check exemptions found."}):l(I,{children:[l(F,{onSortChange:({direction:t,column:e})=>{E(e),R(t)},sortDescriptor:{direction:c,column:h},children:[l(H,{children:[i(f,{id:"entity",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Entity"}),i(f,{id:"justification",style:{width:"40%"},children:"Justification"}),i(f,{id:"user",allowsSorting:!0,style:{width:"15%"},children:"User"}),i(f,{id:"date",allowsSorting:!0,style:{width:"10%"},children:"Date"})]}),i(M,{children:A.map(t=>{const e=t.node,o=ee(e.timestamp),a=n(e.user_ref),s=n(e.entity_ref);return l(O,{onAction:()=>N(e.entity_ref),children:[i(P,{title:s.name}),i(te,{children:l(J,{children:[i(V,{variant:"tertiary",className:v.justificationCell,children:e.justification}),i(q,{children:e.justification})]})}),i(P,{title:a.name}),i(P,{title:o})]},`${e.entity_ref}-${e.check_id}`)})})]}),L&&i(G,{totalCount:y,offset:r.offset,hasNextPage:r.offset+r.pageSize<y,hasPreviousPage:r.offset>0,onNextPage:r.onNextPage,onPreviousPage:r.onPreviousPage,onPageSizeChange:r.onPageSizeChange,pageSize:r.pageSize})]})};export{re as ExemptionsTableBUI};
|
|
2
2
|
//# sourceMappingURL=ExemptionsTableBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o,Fragment as m}from"react/jsx-runtime";import{useRouteRef as h}from"@backstage/core-plugin-api";import{Grid as u,Link as b,Card as y,CardHeader as R,Text as n,CardBody as x,Box as B,HeaderPage as L,Container as N}from"@backstage/ui";import{makeStyles as T}from"@material-ui/core/styles";import{groupBy as P}from"lodash";import{useMemo as f,useEffect as
|
|
1
|
+
import{jsx as e,jsxs as o,Fragment as m}from"react/jsx-runtime";import{useRouteRef as h}from"@backstage/core-plugin-api";import{Grid as u,Link as b,Card as y,CardHeader as R,Text as n,CardBody as x,Box as B,HeaderPage as L,Container as N}from"@backstage/ui";import{makeStyles as T}from"@material-ui/core/styles";import{groupBy as P}from"lodash";import{useMemo as f,useEffect as H}from"react";import{useCheckTemplates as I}from"../../hooks/checks/useCheckTemplates.esm.js";import{useLCPReporting as j}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as v}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as D,checksPageRouteRef as U}from"../../routes.esm.js";import{DocLinkButton as A}from"../DocLinkButton/DocLinkButton.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as E}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"react-router-dom";import{LoadingIndicator as M}from"../LoadingIndicator/LoadingIndicator.esm.js";import{TemplateCategoryBUI as S}from"./TemplateCategoryBUI.esm.js";const F=T(()=>({container:{marginBottom:"var(--bui-space-12)"},link:{textDecoration:"none"},fullHeightCard:{height:"100%",display:"flex",flexDirection:"column"}})),G=()=>{const r=F(),l=f(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:s}=v(l),{reporter:g}=j(l),k=h(D),{data:c,isLoading:i}=I(),p=f(()=>P(c??[],"category"),[c]),d=g?.getLCPValue();H(()=>{i||s({lcp:d})},[i,s,d]);const C=h(U);let t;return i?t=e(M,{}):c?.length?t=o(m,{children:[e(u.Root,{columns:"5",gap:"3",mb:"6",children:e(b,{href:k(),className:r.link,children:o(y,{className:r.fullHeightCard,children:[e(R,{children:e(n,{variant:"body-large",style:{fontWeight:"bold"},children:"Custom Check"})}),e(x,{children:e(n,{children:"Create a custom check using the facts collected about your entities."})})]})})}),Object.keys(p).sort().map(a=>o(m,{children:[e(B,{mb:"3",children:e(n,{variant:"title-x-small",children:a})}),e(u.Root,{columns:"5",gap:"3",mb:"6",children:e(S,{templates:p[a]},a)})]}))]}):t=e(E,{title:"No check templates",body:"No check templates found."}),o(m,{children:[e(L,{title:"Check Templates",breadcrumbs:[{label:"All Checks",href:C()}],customActions:e(A,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})}),e(N,{className:r.container,children:t})]})};export{G as CheckTemplatesPageBUI};
|
|
2
2
|
//# sourceMappingURL=CheckTemplatesPageBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,Fragment as a,jsxs as m}from"react/jsx-runtime";import{useRouteRef as n}from"@backstage/core-plugin-api";import{Link as d,Card as c,CardHeader as s,Text as i,CardBody as
|
|
1
|
+
import{jsx as e,Fragment as a,jsxs as m}from"react/jsx-runtime";import{useRouteRef as n}from"@backstage/core-plugin-api";import{Link as d,Card as c,CardHeader as s,Text as i,CardBody as f}from"@backstage/ui";import{makeStyles as h}from"@material-ui/core/styles";import{sortBy as p}from"lodash";import{checkCreateRouteRef as u}from"../../routes.esm.js";const y=h(()=>({link:{textDecoration:"none"},fullHeightCard:{height:"100%",display:"flex",flexDirection:"column"}})),g=({templates:o})=>{const t=y(),l=n(u);return e(a,{children:p(o,"title").map(r=>e(d,{href:`${l()}?template=${r.id}`,className:t.link,children:m(c,{className:t.fullHeightCard,children:[e(s,{children:e(i,{variant:"body-large",style:{fontWeight:"bold"},children:r.title})}),e(f,{children:e(i,{children:r.summary})})]})},r.id))})};export{g as TemplateCategoryBUI};
|
|
2
2
|
//# sourceMappingURL=TemplateCategoryBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,jsxs as m,Fragment as
|
|
1
|
+
import{jsx as t,jsxs as m,Fragment as W}from"react/jsx-runtime";import{useRouteRef as T,useApi as A}from"@backstage/core-plugin-api";import{entityPresentationApiRef as Y}from"@backstage/plugin-catalog-react";import{usePermission as _}from"@backstage/plugin-permission-react";import{HeaderPage as q,Flex as K,Container as Q,TableRoot as X,TableHeader as Z,Column as y,TableBody as $,TablePagination as ee}from"@backstage/ui";import{makeStyles as te}from"@material-ui/core";import{soundcheckCheckCreatePermission as re}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as oe,isEmpty as P}from"lodash";import{useState as k,useMemo as N}from"react";import{useSearchParams as ie}from"react-router-dom";import ne from"react-use/lib/useDebounce";import{soundcheckApiRef as ae}from"../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../hooks/graphqlKeys.esm.js";import{useGetChecks as se}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as me}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useProfileImages as ce}from"../../hooks/catalog/useProfileImages.esm.js";import{useImportChecks as pe}from"../../hooks/checks/useImportChecks.esm.js";import{useSearchNameOwner as le}from"../../hooks/useSearchNameOwner.esm.js";import{checkTemplatesRouteRef as fe,checkDetailsRouteRef as de}from"../../routes.esm.js";import{exportChecks as ge}from"../../utils/export.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as he}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import{EmptyStateNoChecks as ue}from"../EmptyState/EmptyStateNoChecks.esm.js";import{ImportExportPanelBUI as we}from"../ImportExportPanel/ImportExportPanelBUI.esm.js";import"../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{ListPageCustomActions as ye}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as Pe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import{useCheckActions as ke}from"../Menus/useCheckActions.esm.js";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"uuid";import"../CampaignPage/CampaignActionsContext.esm.js";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TableRowWithOwner as Ce}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const L=10,Re=["name","owner"],Se=({check:o,profileImageMap:a})=>{const c=T(de),i=ke(o);return t(Ce,{ownerEntityRef:o.ownerEntityRef??"",href:c({checkId:o.id}),profileImageSrc:a[o.ownerEntityRef??""],menuActions:i,name:o.name??o.id,description:o.description??"",cells:[]})},Ee=te(()=>({container:{marginBottom:"var(--bui-space-12)"}})),Ie=()=>{const o=Ee(),[a,c]=ie(),[i,z]=k(()=>a.get("search")??""),[d,B]=k(()=>a.get("sortDirection")==="descending"?"descending":"ascending"),[s,v]=k(()=>{const e=a.get("sort");return e&&Re.includes(e)?e:""}),{isLoading:p,data:C}=se({}),g=N(()=>C?.edges?.map(e=>e.node)??[],[C?.edges]),{loading:R,allowed:S}=_({permission:re}),U=T(fe),{profileImageMap:D}=ce(g.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef)),E=A(Y),h=le(g,i),l=N(()=>{if(!s)return h;const e=oe(h,r=>s==="owner"?r.ownerEntityRef?E.forEntity(r.ownerEntityRef).snapshot.primaryTitle:-1:s==="type"?r.type?r.type:"default":r?.name?.toLowerCase()??r.id.toLowerCase());return d==="descending"&&e.reverse(),e},[s,h,d,E]),{mutateAsync:H}=pe(),M=async e=>H(e),O=A(ae),F=async()=>{const e=await O.getChecks({orderAlphabetical:"asc"});return ge(e.edges.map(r=>r.node))},{paginatedItems:u,reset:I,paginationProps:n}=me({pageParam:"perPage",defaultPageSize:L,items:l});ne(()=>{I();const e=new URLSearchParams(a.toString());i?e.set("search",i):e.delete("search"),c(e,{replace:!0})},300,[i]);const V=({direction:e,column:r})=>{const w=String(r);v(w),B(e),I();const f=new URLSearchParams(a);w?f.set("sort",w):f.delete("sort"),f.set("sortDirection",e),c(f,{replace:!0})},j=p,b=!p&&P(u),G=!p&&!P(u),J=l.length>L;let x=null;return b&&(x=i?t(he,{title:"No checks found",body:"Your current search term did not return any checks. Please try a different search term."}):t(ue,{})),m(W,{children:[t(q,{customActions:m(K,{gap:"2",align:"center",children:[t(we,{resourceType:"check",disableImport:!R&&!S,disableExport:p||P(g),onImport:M,onExport:F}),t(ye,{searchValue:i,setSearchValue:z,canCreate:!R&&S,createHref:U()})]}),title:"Checks"}),m(Q,{className:o.container,children:[j&&t(Pe,{rowCount:10}),b&&x,G&&m(X,{onSortChange:V,sortDescriptor:{direction:d,column:s},children:[m(Z,{children:[t(y,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"82%"},children:"Name"}),t(y,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Check Owner"}),t(y,{id:"actions",style:{width:"3%"}})]}),t($,{children:u.map(e=>t(Se,{check:e,profileImageMap:D??{}},e.id))})]}),J&&t(ee,{totalCount:l.length,offset:n.offset,hasNextPage:n.offset+n.pageSize<(l.length??0),hasPreviousPage:n.offset>0,onNextPage:n.onNextPage,onPreviousPage:n.onPreviousPage,onPageSizeChange:n.onPageSizeChange,pageSize:n.pageSize})]})]})};export{Ie as ChecksListPageBUI};
|
|
2
2
|
//# sourceMappingURL=ChecksListPageBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as t,jsxs as p,Fragment as j}from"react/jsx-runtime";import{useRouteRef as A}from"@backstage/core-plugin-api";import{Row as U,CellText as y,Flex as F,Box as x,Text as H,TableRoot as O,TableHeader as M,Column as C,TableBody as V,TablePagination as W}from"@backstage/ui";import{makeStyles as q}from"@material-ui/core";import{sortBy as J}from"lodash";import{memo as I,useMemo as S,useState as N,useEffect as K,useCallback as Q}from"react";import{CircularProgressbar as X}from"react-circular-progressbar";import{useNavigate as Y}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as Z}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useSortSearchParams as _}from"../../hooks/useSortSearchParams.esm.js";import{trackCheckDetailsRouteRef as ee}from"../../routes.esm.js";import{getPercentage as B}from"../../utils/formatters.esm.js";import"../CheckStatusBar/CheckStatusBar.esm.js";import{CheckStatusBarBUI as te}from"../CheckStatusBar/CheckStatusBarBUI.esm.js";import{CustomCell as re}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as oe}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";const ie=q(()=>({statusBar:{width:"45%"},customCell:{padding:"0 var(--bui-space-3)"},circularProgressbar:{width:"var(--bui-space-7)"}})),R=10,se=["compliance","name","checks"],b=o=>se.includes(o),ae=I(()=>t("svg",{width:"0",height:"0",style:{position:"absolute",visibility:"hidden"},children:t("defs",{children:p("linearGradient",{id:"progressGradient",x1:"1",y1:"0",x2:"0",y2:"1",children:[t("stop",{offset:"0%",stopColor:"var(--bui-fg-warning)"}),t("stop",{offset:"100%",stopColor:"var(--bui-fg-success)"})]})})})),T=(o,i)=>i?.find(g=>g.id===o),z=o=>o?o.numberOfEntities-o.notApplicable-o.exempt:0,ne=I(({trackId:o,check:i,checkStatuses:g,searchParams:u})=>{const s=ie(),P=A(ee),a=Y(),n=T(i.id,g),{passPercent:c,applicableChecks:h}=S(()=>{const l=z(n);return{passPercent:B(n?.passed,l),applicableChecks:l}},[n]);return p(U,{onAction:()=>{const l=P({trackId:o,checkId:i.id});a(u?`${l}${u}`:l)},children:[t(y,{leadingIcon:p("div",{className:s.circularProgressbar,title:`${c}%`,children:[t(ae,{}),t(X,{value:c,strokeWidth:12,styles:{path:{stroke:"url(#progressGradient)"},trail:{stroke:'rgba(var("--bui-fg-secondary"), 0.25)'}}})]}),title:`${c}%`}),t(y,{title:i.name}),t(re,{children:p(F,{align:"center",gap:"3",justify:"between",children:[t(x,{children:p(H,{color:"secondary",children:[n?.passed??0," of ",h," checks passing"]})}),t(x,{className:s.statusBar,children:t(te,{status:n})})]})})]},i.id)}),ce=({trackId:o,checks:i,checkStatuses:g,searchValue:u,levelOrdinal:s})=>{const{updateSortParams:P,searchParams:a}=_(),n=a.get("level"),c=s===void 0||n!==null&&String(s)===n,[h,l]=N(()=>{if(c){const e=a.get("sortDirection");if(e==="ascending"||e==="descending")return e}return"descending"}),[f,v]=N(()=>{if(c){const e=a.get("sort");if(e&&b(e))return e}return"compliance"}),D=S(()=>{const e=new URLSearchParams(a.toString());e.set("sort",f),e.set("sortDirection",h),typeof s=="number"?e.set("level",String(s)):e.delete("level");const r=e.toString();return r?`?${r}`:""},[s,a,f,h]);K(()=>{if(!c)return;const e=a.get("sortDirection");(e==="ascending"||e==="descending")&&l(e);const r=a.get("sort");r&&b(r)&&v(r)},[c,a]);const L=Q(({direction:e,column:r})=>{const m=String(r);b(m)&&v(m),l(e),P({sort:b(m)?m:"compliance",sortDirection:e,level:s})},[s,P]),w=S(()=>{if(!u?.length)return i??[];const e=u.toLowerCase();return i?.filter(({name:r})=>r.toLowerCase().includes(e))??[]},[i,u]),k=S(()=>{const e=J([...w],r=>{const m=T(r.id,g);if(f==="compliance"){const G=z(m);return B(m?.passed,G)}return f==="checks"?m?.passed:r.name.toLowerCase()});return h==="descending"&&e.reverse(),e},[w,g,f,h]),{paginatedItems:$,paginationProps:d}=Z({pageParam:"perPage",defaultPageSize:R,items:k}),E=k.length>R;return k?.length?p(j,{children:[p(O,{onSortChange:L,sortDescriptor:{direction:h,column:f},children:[p(M,{children:[t(C,{id:"compliance",allowsSorting:!0,style:{width:"8%"},children:"Compliance"}),t(C,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"67%"},children:"Name"}),t(C,{id:"checks",allowsSorting:!0,style:{width:"25%"},children:"Checks"})]}),t(V,{children:$.map(e=>t(ne,{trackId:o,check:e,checkStatuses:g,searchParams:D},e.id))})]}),E&&t(W,{totalCount:k.length,offset:d.offset,hasNextPage:d.offset+d.pageSize<(k.length??0),hasPreviousPage:d.offset>0,onNextPage:d.onNextPage,onPreviousPage:d.onPreviousPage,onPageSizeChange:d.onPageSizeChange,pageSize:d.pageSize})]}):t(oe,{title:"No checks",body:"There are no checks found."})};export{ce as ChecksTable};
|
|
2
2
|
//# sourceMappingURL=ChecksTable.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as i}from"react/jsx-runtime";import{
|
|
1
|
+
import{jsx as r,jsxs as i}from"react/jsx-runtime";import{TableRoot as b,TableHeader as C,Row as s,Column as n,TableBody as g,CellText as f,Box as a,Text as d}from"@backstage/ui";import{makeStyles as v}from"@material-ui/core";import{isEmpty as x}from"lodash";import{getCronDescription as N}from"../../utils/cron.esm.js";import{CustomCell as p}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as T}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"react-router-dom";import"../../routes.esm.js";import{FactExplorerDialogButtonBUI as F}from"../FactExplorer/FactExplorerDialogBUI.esm.js";const S=v(()=>({noConfig:{color:"var(--bui-fg-disabled)"}})),B=({frequency:o})=>{if(o){let e;return o.cron?e=r(a,{children:i(d,{variant:"body-small",children:["cron(",o.cron,") ",N(o.cron)]})}):e=r(a,{children:i(d,{variant:"body-small",color:"secondary",children:["Every ",Object.values(o)[0]," ",Object.keys(o)[0]]})}),r(a,{pt:"1",pb:"1",children:e})}return r(d,{color:"secondary",children:"No Schedule Configured"})},q=({facts:o})=>{const e=S(),u=(l,t)=>l?t?"UI":"YAML":"No Config";return x(o)?r(T,{title:"No Available Facts Found",body:"No Available Facts Found for Integration."}):i(b,{children:[r(C,{children:i(s,{children:[r(n,{id:"fact-name",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Fact Name"}),r(n,{children:"Source"}),r(n,{children:"Schedule"}),r(n,{children:"Test"})]})}),r(g,{children:o.map(({factName:l,config:t,uiConfig:h,factRef:m,parentConfig:c})=>{const y=t?.frequency??(Array.isArray(c)?c[0]?.frequency:c?.frequency);return i(s,{children:[r(f,{title:l}),r(f,{className:t?void 0:e.noConfig,title:u(t,h)}),r(p,{children:r(B,{frequency:y})}),r(p,{children:r(F,{factRef:m,size:"small",text:"Test",variant:"secondary"})})]},m)})})]})};export{q as CollectorFactTableBUI};
|
|
2
2
|
//# sourceMappingURL=CollectorFactTableBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as r,jsx as t,Fragment as ie}from"react/jsx-runtime";import{makeStyles as re,FormControlLabel as ce,Checkbox as se,Box as de,Typography as j,IconButton as w,Collapse as E,Divider as me,Tabs as pe,Tab as $,Grid as F,Button as L}from"@material-ui/core";import fe from"@material-ui/icons/Add";import ge from"@material-ui/icons/ChevronRight";import he from"@material-ui/icons/ExpandLess";import ue from"@material-ui/icons/ExpandMore";import be from"@material-ui/icons/KeyboardArrowDown";import Ce from"@material-ui/icons/Remove";import{useState as B,useRef as G,useEffect as H}from"react";import{useFormContext as ve,useFieldArray as $e,useWatch as O,Controller as P}from"react-hook-form";import{validateCacheConfig as xe}from"../../../../utils/collectors.esm.js";import"lodash";import"../../../Frequency/types.esm.js";import"../../../Frequency/util.esm.js";import"../../../Frequency/FrequencyComponent.esm.js";import{CacheConfigComponent as Ne}from"../../../CacheConfig/CacheConfigComponent.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import{FilterComponent as ye}from"../../../Filter/FilterComponent.esm.js";import{CollectorSchedulingOptions as Fe}from"./CollectorSchedulingOptions.esm.js";const Be=re(e=>({root:{padding:e.spacing(1.5,6)},headerContainer:{display:"flex",alignItems:"center",justifyContent:"space-between"},collapseButton:{marginLeft:e.spacing(1),padding:e.spacing(.5),backgroundColor:e.palette.grey[200],"&:hover":{backgroundColor:e.palette.grey[300]}},factCollapseButton:{marginLeft:e.spacing(1),padding:e.spacing(.25),border:`1px solid ${e.palette.grey[400]}`,borderRadius:4,"&:hover":{backgroundColor:e.palette.grey[100]}},factHeader:{display:"flex",alignItems:"center",justifyContent:"space-between"},tabsContainer:{marginRight:16},tab:{height:"64px",textAlign:"left"},contentContainer:{width:"100%",padding:e.spacing(1)},divider:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},checkBox:{marginRight:e.spacing(1)},buttonsContainer:{marginTop:e.spacing(1),marginBottom:e.spacing(2)}})),k="FactDetails",D="Schedule",W="Filters",q="Caching",J=(e,i,p)=>[...e.slice(0,i),p,...e.slice(i+1)],K=(e,i,p)=>[...e.slice(0,i),p,...e.slice(i)],M=(e,i)=>[...e.slice(0,i),...e.slice(i+1)],ke=({name:e,label:i,description:p,disabled:s,FactDetailsComponent:b,multipleCollectors:n,collapsed:S,onCollapsedChange:x,allFactsCollapsed:f})=>{const{control:g,formState:Q}=ve(),A=Q.errors?.[e],{fields:U,insert:X,remove:Y}=$e({control:g,name:n?.enable?`${e}.collectors`:e}),h=n?.enable?U:[{id:e}],R=b?k:D,[c,N]=B(Array(h.length).fill(R)),[y,u]=B(Array(h.length).fill(!0)),Z=a=>{u(l=>J(l,a,!l[a]))},T=G(void 0);H(()=>{f!==void 0&&f!==T.current&&u(a=>a.map(()=>f)),T.current=f},[f]);const[V,z]=B(!1),C=S!==void 0,v=C?S:V,_=()=>{const a=!v;C||z(a),x?.(a)},ee=(a,l,m)=>{N(J(c,m,l))},le=a=>{X(a+1,n?.defaultConfig),N(K(c,a+1,R)),u(l=>K(l,a+1,!1))},te=a=>{Y(a),N(M(c,a)),u(l=>M(l,a))},d=O({control:g,name:`${e}.enabled`}),ae=O({control:g,name:n?.enable?h.map((a,l)=>`${e}.collectors.${l}.factDetails.factName`):[`${e}.factDetails.factName`]}),oe=a=>ae?.[a]||"Fact Details",I=G(d);H(()=>{!I.current&&d&&(C?x?.(!1):z(!1),u(a=>a.map(()=>!1))),I.current=d},[d,C,x]);const o=Be();return r("div",{className:o.root,children:[r("div",{className:o.headerContainer,children:[t(P,{name:`${e}.enabled`,control:g,render:({field:a})=>t(ce,{control:t(se,{...a,checked:a.value,"data-testid":`${e}-switch`,disabled:s,className:o.checkBox}),label:r(de,{display:"flex",flexDirection:"column",children:[t(j,{variant:"body1",component:"span",children:t("b",{children:`${i}`})}),t(j,{variant:"caption",color:"textSecondary",component:"p",children:`${p}`})]})})}),d&&t(w,{className:o.collapseButton,onClick:_,"aria-label":v?"Expand":"Collapse","data-testid":`${e}-collapse-button`,size:"small",children:v?t(ue,{}):t(he,{})})]}),d&&t(E,{in:!v,children:t("div",{children:h.map((a,l)=>r("div",{children:[l!==0&&t(me,{className:o.divider}),r("div",{className:o.factHeader,children:[r(pe,{orientation:"horizontal",variant:"scrollable",value:c[l],onChange:(m,ne)=>ee(m,ne,l),className:o.tabsContainer,children:[b&&t($,{label:oe(l),value:k,className:o.tab}),t($,{label:"Schedule",value:D,className:o.tab}),t($,{label:"Filters",value:W,className:o.tab}),t($,{label:"Caching",value:q,className:o.tab})]}),t(w,{className:o.factCollapseButton,onClick:()=>Z(l),"aria-label":y[l]?"Expand fact":"Collapse fact","data-testid":`${e}-fact-${l}-collapse-button`,size:"small",children:y[l]?t(ge,{}):t(be,{})})]}),r(E,{in:!y[l],children:[r("div",{className:o.contentContainer,children:[c[l]===k&&b&&t(b,{name:n?.enable?`${e}.collectors.${l}.factDetails`:`${e}.factDetails`,disabled:s}),c[l]===D&&t(ie,{children:t(Fe,{name:n?.enable?`${e}.collectors.${l}`:e})}),c[l]===W&&t(ye,{disabled:s,includeFilterName:n?.enable?`${e}.collectors.${l}.filters.include`:`${e}.filters.include`,excludeFilterName:n?.enable?`${e}.collectors.${l}.filters.exclude`:`${e}.filters.exclude`,errorPath:n?.enable?`${e}.collectors.${l}.filters`:`${e}.filters`}),c[l]===q&&t(P,{name:n?.enable?`${e}.collectors.${l}.cacheConfig`:`${e}.cacheConfig`,control:g,rules:{validate:xe},render:({field:m})=>t(Ne,{disabled:s,value:m.value,onChange:m.onChange,errors:n?.enable?A?.collectors?.[l]?.cacheConfig:A?.cacheConfig})})]}),n?.enable&&r(F,{container:!0,spacing:1,className:o.buttonsContainer,children:[h.length>1&&t(F,{item:!0,children:t(L,{startIcon:t(Ce,{}),onClick:()=>te(l),disabled:s,variant:"outlined",size:"small",color:"secondary",children:"Remove"})}),t(F,{item:!0,children:r(L,{startIcon:t(fe,{}),onClick:()=>le(l),disabled:s,variant:"outlined",size:"small",color:"primary",children:["Add ",i]})})]})]})]},a.id))})})]})};export{ke as FactCollectionConfig};
|
|
2
2
|
//# sourceMappingURL=FactCollectionConfig.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t}from"react/jsx-runtime";import{
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{PageWarningMessage as i}from"../../PageWarningMessage/PageWarningMessage.esm.js";import{AzureDevOpsConfigurator as a}from"./AzureDevOps/AzureDevOpsConfigurator.esm.js";import{BigQueryConfigurator as e}from"./BigQuery/BigQueryConfigurator.esm.js";import{CatalogConfigurator as m}from"./Catalog/CatalogConfigurator.esm.js";import{DataDogConfigurator as n}from"./DataDog/DataDogConfigurator.esm.js";import{DataRegistryConfigurator as f}from"./DataRegistry/DataRegistryConfigurator.esm.js";import{GithubConfigurator as g}from"./Github/GithubConfigurator.esm.js";import{GitlabConfigurator as u}from"./Gitlab/GitlabConfigurator.esm.js";import{HttpConfigurator as p}from"./HTTP/HttpConfigurator.esm.js";import{JiraConfigurator as C}from"./Jira/JiraConfigurator.esm.js";import{KubernetesConfigurator as s}from"./Kubernetes/KubernetesConfigurator.esm.js";import{NewRelicConfigurator as c}from"./NewRelic/NewRelicConfigurator.esm.js";import{PagerDutyConfigurator as l}from"./PagerDuty/PagerDutyConfigurator.esm.js";import{ScmConfigurator as d}from"./SCM/ScmConfigurator.esm.js";import{SonarQubeConfigurator as b}from"./SonarQube/SonarQubeConfigurator.esm.js";const y={github:g,gitlab:u,scm:d,pagerduty:l,datadog:n,kubernetes:s,jira:C,sonarqube:b,newrelic:c,bigquery:e,catalog:m,azure:a,http:p,"data-registry":f},D=({selectedCollector:r})=>{const o=y[r?.id];return o?t(o,{selectedCollector:r}):t(i,{entityName:"Integration",entityId:r.id,showCannotEdit:!0})};export{D as Configurator};
|
|
2
2
|
//# sourceMappingURL=Configurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as C,Fragment as j,jsx as o}from"react/jsx-runtime";import{zodResolver as P}from"@hookform/resolvers/zod";import{makeStyles as w,Paper as _,Box as J,Button as Y,Divider as y}from"@material-ui/core";import k from"@material-ui/icons/UnfoldLess";import I from"@material-ui/icons/UnfoldMore";import{useCallback as z,useMemo as H,useState as l}from"react";import{useForm as V,FormProvider as X}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as G}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as U}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as $}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as q}from"../../../../routes.esm.js";import{FooterButtons as K}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Q}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as g}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as W,confirmationModalContent as Z}from"../Common/utils.esm.js";import{ExistsFactDetailsComponent as oo}from"./ExistsFactDetailsComponent.esm.js";import{JsonFactDetailsComponent as eo}from"./JsonFactDetailsComponent.esm.js";import{RegexFactDetailsComponent as to}from"./RegexFactDetailsComponent.esm.js";import{mapConfigToScmCollectorConfig as io,defaultScmCollectorConfig as v,EXISTS_COLLECTOR_TYPE as lo,REGEX_COLLECTOR_TYPE as ao,JSON_COLLECTOR_TYPE as ro,mapScmCollectorConfigToConfig as no}from"./utils.esm.js";import{scmCollectorFormSchema as so}from"./validation.esm.js";const mo=w(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)},collapseAllContainer:{display:"flex",justifyContent:"flex-end",padding:e.spacing(1.5,6),borderBottom:`1px solid ${e.palette.divider}`}})),co=({disabled:e,selectedCollector:i})=>{const O=z(async(t,...d)=>{const f={enabled:!1,collectors:[]},M={exists:t.exists.enabled?t.exists:f,json:t.json.enabled?t.json:f,regex:t.regex.enabled?t.regex:f};return P(so)(M,...d)},[]),u=V({defaultValues:i?io(i.config):v(),mode:"onChange",resolver:O}),a=H(()=>v(i.config),[i]),{formState:{isValid:T},handleSubmit:x}=u,r=mo(),L=!T,{mutateAsync:N}=$(),[R,A]=U(q),{showModal:B}=G(),b=async t=>{if(!await B(Z(i)))return;const d=no(t);await N({collectorId:i.id,config:d})&&A()};Q(W(i));const[h,n]=l(!0),[S,s]=l(!0),[F,m]=l(!0),[c,E]=l(!0),p=h&&S&&F,D=()=>{p?(n(!1),s(!1),m(!1),E(!1)):(n(!0),s(!0),m(!0),E(!0))};return C(j,{children:[C(_,{className:r.section,children:[o(J,{className:r.collapseAllContainer,children:o(Y,{startIcon:p?o(I,{}):o(k,{}),onClick:D,variant:"outlined",size:"small",children:p?"Expand All":"Collapse All"})}),o(X,{...u,children:C("form",{onSubmit:x(b),children:[o(g,{name:lo,label:"Exists",description:"Collects information on the existence of files within an entity's repository.",disabled:e,multipleCollectors:{enable:!0,defaultConfig:a.exists.collectors[0]},FactDetailsComponent:oo,collapsed:h,onCollapsedChange:n,allFactsCollapsed:c}),o(y,{}),o(g,{name:ao,label:"Regex",description:"Executes regular expressions against a specified file in an entity's repository and collects its capture groups.",disabled:e,multipleCollectors:{enable:!0,defaultConfig:a.regex.collectors[0]},FactDetailsComponent:to,collapsed:S,onCollapsedChange:s,allFactsCollapsed:c}),o(y,{}),o(g,{name:ro,label:"JSON / YAML",description:"Collects data from a JSON/YAML file at specified JSON paths in an entity's repository.",disabled:e,multipleCollectors:{enable:!0,defaultConfig:a.json.collectors[0]},FactDetailsComponent:eo,collapsed:F,onCollapsedChange:m,allFactsCollapsed:c})]})})]}),o("div",{className:r.section,children:o(K,{onCancel:R,saveButtonText:"Save",isLoading:!1,onSave:x(b),disableSave:L,noMargin:!0})})]})};export{co as ScmConfigurator};
|
|
2
2
|
//# sourceMappingURL=ScmConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{asArray as
|
|
1
|
+
import{asArray as g}from"@spotify/backstage-plugin-soundcheck-common";import{defaultBaseCollectorOption as u,defaultCollectorOption as O}from"../Common/CollectorOption.esm.js";import{mapBackendConfigToFormIntegrationConfig as p,mapFormIntegrationConfigToBackendConfig as m}from"../Common/utils.esm.js";const C="projects",E="project-tags",r="issues",f="measures",D=["OPEN","CONFIRMED","REOPENED","RESOLVED","CLOSED"],y=["BLOCKER","CRITICAL","MAJOR","MINOR","INFO"],L=["VULNERABILITY","BUG","CODE_SMELL"],T=["OPEN"],d=["ncloc","complexity","violations","open_issues"],I={factDetails:{factName:{name:"Fact Name",helperText:"Fact name must be unique",placeholder:"Fact Name"},metrics:{name:"Metrics",helperText:"Add more metrics to collect",placeholder:"Example: code_smells"}}},S=(t,o,c,s,i)=>({...u(t),factDetails:{factName:o??"",statuses:c??T,severities:s,types:i}}),N=(t,o,c)=>({...u(t),factDetails:{factName:o??"",metrics:c??d}}),_=t=>({projects:O(t),projectTags:O(t),issues:{enabled:!1,collectors:[S(t,r,T)]},measures:{enabled:!1,collectors:[N(t,f,d)]}});function R(t){const{projects:o,projectTags:c,issues:s,measures:i}=t;if(o.enabled||c.enabled||s.enabled||i.enabled){const l={},n=[];return l.collects=n,o.enabled&&n.push(m({factType:C,configOption:o})),c.enabled&&n.push(m({factType:E,configOption:c})),s.enabled&&s.collectors.forEach(a=>{n.push(m({factType:r,configOption:a,additionalParams:{factName:a.factDetails.factName,statuses:a.factDetails.statuses?.length?a.factDetails.statuses:void 0,severities:a.factDetails.severities?.length?a.factDetails.severities:void 0,types:a.factDetails.types?.length?a.factDetails.types:void 0}}))}),i.enabled&&i.collectors.forEach(a=>{n.push(m({factType:f,configOption:a,additionalParams:{factName:a.factDetails.factName,metrics:a.factDetails.metrics}}))}),l}return{collects:[]}}function b(t){const o=_(t);if(t){const c=g(t).flatMap(s=>s.collects).filter(s=>s!==void 0);if(c){const s=g(c),i=s.find(e=>e.type===C);i&&(o.projects={...p({parentConfig:t,factTypeConfig:i}),enabled:!0});const l=s.find(e=>e.type===E);l&&(o.projectTags={...p({parentConfig:t,factTypeConfig:l}),enabled:!0});const n=s.filter(e=>e.type===r);n.length&&(o.issues={enabled:!0,collectors:n.map(e=>({...p({parentConfig:t,factTypeConfig:e}),factDetails:{factName:e.factName??r,statuses:e.statuses?.length?e.statuses:void 0,severities:e.severities?.length?e.severities:void 0,types:e.types?.length?e.types:void 0}}))});const a=s.filter(e=>e.type===f);a.length&&(o.measures={enabled:!0,collectors:a.map(e=>({...p({parentConfig:t,factTypeConfig:e}),factDetails:{factName:e.factName??f,metrics:e.metrics}}))})}}return o}export{T as DEFAULT_ISSUE_STATUSES,d as DEFAULT_METRICS,r as ISSUES_COLLECTOR_TYPE,y as ISSUE_SEVERITY_OPTIONS,D as ISSUE_STATUS_OPTIONS,L as ISSUE_TYPE_OPTIONS,f as MEASURES_COLLECTOR_TYPE,C as PROJECTS_COLLECTOR_TYPE,E as PROJECT_TAGS_COLLECTOR_TYPE,I as SONARQUBE_COLLECTOR_FIELDS,_ as defaultSonarQubeConfig,S as issuesCollectorConfig,b as mapConfigToSonarQubeCollectorConfig,R as mapSonarQubeCollectorConfigToConfig,N as measuresCollectorConfig};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as p}from"react/jsx-runtime";import{makeStyles as
|
|
1
|
+
import{jsx as p}from"react/jsx-runtime";import{makeStyles as f,useTheme as s}from"@material-ui/core";import g from"../../images/integrations-bui/azure-rgb.svg";import c from"../../images/integrations-bui/azure-wht.svg";import n from"../../images/integrations-bui/bigquery-rgb.svg";import u from"../../images/integrations-bui/bigquery-wht.svg";import h from"../../images/integrations-bui/catalog-rgb.svg";import l from"../../images/integrations-bui/catalog-wht.svg";import b from"../../images/integrations-bui/data-registry-rgb.svg";import d from"../../images/integrations-bui/data-registry-wht.svg";import y from"../../images/integrations-bui/datadog-rgb.svg";import k from"../../images/integrations-bui/datadog-wht.svg";import v from"../../images/integrations-bui/default-logo-rgb.svg";import j from"../../images/integrations-bui/default-logo-wht.svg";import q from"../../images/integrations-bui/github-rgb.svg";import w from"../../images/integrations-bui/github-wht.svg";import x from"../../images/integrations-bui/gitlab-rgb.svg";import z from"../../images/integrations-bui/gitlab-wht.svg";import I from"../../images/integrations-bui/http-rgb.svg";import B from"../../images/integrations-bui/http-wht.svg";import T from"../../images/integrations-bui/jira-rgb.svg";import D from"../../images/integrations-bui/jira-wht.svg";import F from"../../images/integrations-bui/kubernetes-rgb.svg";import L from"../../images/integrations-bui/kubernetes-wht.svg";import M from"../../images/integrations-bui/newrelic-rgb.svg";import S from"../../images/integrations-bui/newrelic-wht.svg";import U from"../../images/integrations-bui/pagerduty-rgb.svg";import W from"../../images/integrations-bui/pagerduty-wht.svg";import A from"../../images/integrations-bui/scm-rgb.svg";import C from"../../images/integrations-bui/scm-wht.svg";import E from"../../images/integrations-bui/sonarqube-rgb.svg";import G from"../../images/integrations-bui/sonarqube-wht.svg";import H from"../../images/integrations-bui/soundcheck-rgb.svg";import K from"../../images/integrations-bui/soundcheck-wht.svg";import N from"../../images/integrations-bui/techinsights-rgb.svg";import O from"../../images/integrations-bui/techinsights-wht.svg";import{isDarkTheme as Q}from"../Charts/chartUtils.esm.js";const R={github:q,gitlab:x,datadog:y,scm:A,pagerduty:U,catalog:h,soundcheck:H,techinsights:N,kubernetes:F,jira:T,sonarqube:E,newrelic:M,bigquery:n,azure:g,http:I,"data-registry":b},Z={github:w,gitlab:z,datadog:k,scm:C,pagerduty:W,catalog:l,soundcheck:K,techinsights:O,kubernetes:L,jira:D,sonarqube:G,newrelic:S,bigquery:u,azure:c,http:B,"data-registry":d},_={small:"var(--bui-space-4)",medium:"var(--bui-space-6)",large:"var(--bui-space-8)"},J=f(()=>({image:{objectFit:"contain",color:"white",height:"var(--bui-space-4)",maxWidth:"100%"}})),P=({integrationId:r,noMargin:t,size:i="small"})=>{const e=J(),a=s(),m=Q(a);let o=m?Z[r]:R[r];return o||(o=m?j:v),p("img",{src:o,alt:r,style:{height:_[i],marginBottom:t?0:void 0},className:e.image})};export{P as IntegrationLogoBUI};
|
|
2
2
|
//# sourceMappingURL=IntegrationLogoBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as r,Fragment as
|
|
1
|
+
import{jsx as e,jsxs as r,Fragment as M}from"react/jsx-runtime";import{useRouteRef as w}from"@backstage/core-plugin-api";import{usePermission as Y}from"@backstage/plugin-permission-react";import{HeaderPage as $,SearchField as O,Container as V,TableRoot as W,TableHeader as q,Column as g,TableBody as z,Row as J,Flex as K,Text as Q,TooltipTrigger as X,ButtonIcon as Z,Tooltip as _,Box as ee,CellText as y,Button as te}from"@backstage/ui";import{makeStyles as oe}from"@material-ui/core";import{RiInformationLine as ie}from"@remixicon/react";import{soundcheckCollectorUpdatePermission as re}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as ne,isEmpty as p}from"lodash";import{useState as f,useMemo as P,useEffect as ae,useCallback as se}from"react";import{useNavigate as ce}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useSearchName as de}from"../../hooks/useSearchName.esm.js";import"react-use/lib/useLocalStorage";import{useSortSearchParams as le}from"../../hooks/useSortSearchParams.esm.js";import{useGetCollectors as me}from"../../hooks/collectors/useGetCollectors.esm.js";import{useLCPReporting as ge}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as pe}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationDetailsRouteRef as he,integrationEditRouteRef as ue}from"../../routes.esm.js";import{CustomCell as x}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as fe}from"../EmptyState/EmptyStateBUI.esm.js";import{LoadingTableSkeleton as Ce}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{IntegrationLogoBUI as Se}from"./IntegrationLogoBUI.esm.js";const R=t=>{const s=t.hasUIConfig?"UI":"YAML";return p(t.config)&&p(t.collectionConfigs)?"None":s},B=oe(()=>({container:{marginBottom:"var(--bui-space-12)"},button:{boxShadow:"none !important",backgroundColor:"inherit !important"},tooltip:{maxWidth:"50rem",padding:0},scrollBox:{maxHeight:"30rem",overflow:"auto",padding:"0 var(--bui-space-3)"}})),N=({integration:t,hasConfigPage:s})=>{const n=B(),c=w(he),a=ce(),h=w(ue);return r(J,{onAction:()=>a(c({integrationId:t.id})),children:[e(x,{children:r(K,{gap:"2",align:"center",children:[e(Se,{integrationId:t.id}),e(Q,{children:t.name??t.id}),t.description&&r(X,{children:[e(Z,{className:n.button,variant:"secondary",icon:e(ie,{}),onClick:()=>a(c({integrationId:t.id}))}),e(_,{className:n.tooltip,children:e(ee,{className:n.scrollBox,children:e("p",{children:t.description})})})]})]})}),e(y,{title:`${String(t.dependentChecks?.length??0)} checks`}),e(y,{title:R(t)}),e(x,{onClick:d=>d.stopPropagation(),children:e(te,{onClick:()=>a(h({integrationId:t.id})),isDisabled:!s,variant:"tertiary","aria-label":`${t.id} configure`,children:"Configure"})})]})},be=["name","dependent-checks","config-source"],ke=({integrations:t})=>{const s=B(),{updateSortParams:n,searchParams:c}=le(),[a,h]=f(""),[d,T]=f(()=>c.get("sortDirection")==="descending"?"descending":"ascending"),[l,L]=f(()=>{const o=c.get("sort");return o&&be.includes(o)?o:""}),C=P(()=>({routeName:"soundcheck-integrations",additionalAttributes:{integrationsPerPage:t?.length}}),[t?.length]),{reportContentLoaded:S}=pe(C),{reporter:v}=ge(C),{loading:D,allowed:E}=Y({permission:re}),{data:U,isLoading:m}=me(),b=de({items:U??[],searchTerm:a}),u=P(()=>{const o=ne(b,i=>l==="name"?i.name??i.id:l==="dependent-checks"?i.dependentChecks?.length??0:l==="config-source"?R(i):i.isEditable?1:2);return d==="descending"&&o.reverse(),o},[b,l,d]),k=v?.getLCPValue();ae(()=>{m||S({lcp:k})},[m,S,k]);const H=se(({direction:o,column:i})=>{const I=String(i);L(I),T(o),n({sort:I,sortDirection:o})},[n]),A=!m&&!p(u),F=m,j=!m&&p(u),G=e(fe,{title:"No integrations found",body:"Your current search term did not return any integrations. Please try a different search term."});return r(M,{children:[e($,{customActions:e(O,{value:a,onChange:h,"aria-label":"Search Name"}),title:"Integrations"}),r(V,{className:s.container,children:[F&&e(Ce,{rowCount:10,rowHeight:36}),j&&G,A&&r(W,{onSortChange:H,sortDescriptor:{direction:d,column:l},children:[r(q,{children:[e(g,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"63%"},children:"Name"}),e(g,{id:"dependent-checks",allowsSorting:!0,style:{width:"15%"},children:"Dependent Checks"}),e(g,{id:"config-source",allowsSorting:!0,style:{width:"15%"},children:"Config Source"}),e(g,{style:{width:"7%"}})]}),e(z,{children:u.map(o=>e(N,{integration:o,hasConfigPage:!D&&E&&o.isEditable},o.id))})]})]})]})};export{N as IntegrationRow,ke as IntegrationsListPageBUI};
|
|
2
2
|
//# sourceMappingURL=IntegrationsListPageBUI.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as t,Fragment as y,jsx as e}from"react/jsx-runtime";import{useRouteRef as n}from"@backstage/core-plugin-api";import{HeaderPage as b,Container as C,Box as a,Text as o,Flex as i,Card as d,CardBody as m,Link as u}from"@backstage/ui";import{makeStyles as R}from"@material-ui/core/styles";import{RiAddLine as v,RiLayoutGridFill as N}from"@remixicon/react";import{useNavigate as x}from"react-router-dom";import B from"react-use/lib/useLocalStorage";import{trackCreateRouteRef as T,tracksPageRouteRef as w,trackBuilderRouteRef as P}from"../../routes.esm.js";import{PROVIDER_STORAGE_KEY as S}from"../TrackBuilderPage/utils.esm.js";const E=R(()=>({container:{marginBottom:"var(--bui-space-12)"},icon:{width:"64px",height:"64px",background:"var(--bui-bg-neutral-2)",borderRadius:"var(--bui-radius-full)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--bui-fg-success)"},cardBody:{padding:"var(--bui-space-10)"},card:{width:"30%",cursor:"pointer"}})),_=()=>{const r=E(),p=n(T),h=n(w),f=n(P),s=x(),g="Create a custom track or use Spotify templates.",[l]=B(S,null),k=()=>{const c=f();return l?`${c}?step=2&provider=${l}`:c};return t(y,{children:[e(b,{title:"Create New Track",breadcrumbs:[{label:"All Tracks",href:h()}]}),t(C,{className:r.container,children:[e(a,{mb:"8",children:e(o,{color:"secondary",variant:"body-large",children:g})}),t(i,{children:[e(d,{className:r.card,onClick:()=>s(p()),children:t(m,{className:r.cardBody,children:[e(i,{direction:"column",align:"center",mb:"2",children:e(a,{className:r.icon,children:e(v,{size:64})})}),t(i,{direction:"column",align:"center",gap:"1",children:[e(o,{variant:"title-small",children:"Create Custom Track"}),e(o,{color:"secondary",children:"Create a custom track with your own checks. Ensure that checks are created first."}),e(a,{mt:"4",children:e(u,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks#creating-a-custom-track",target:"_blank",rel:"noopener noreferrer",onClick:c=>c.stopPropagation(),children:"Documentation"})})]})]})}),e(d,{className:r.card,onClick:()=>s(k()),children:t(m,{className:r.cardBody,children:[e(i,{direction:"column",align:"center",mb:"2",children:e(a,{className:r.icon,children:e(N,{size:36})})}),t(i,{direction:"column",align:"center",gap:"1",children:[e(o,{variant:"title-small",children:"Use Spotify Templates"}),e(o,{color:"secondary",children:"Ready-to-use tracks and checks recommended by Spotify. You can modify this configuration at any time."}),e(a,{mt:"4",children:e(u,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks#creating-tracks-using-spotify-templates",target:"_blank",rel:"noopener noreferrer",onClick:c=>c.stopPropagation(),children:"Documentation"})})]})]})})]})]})]})};export{_ as CreateNewTrackPage};
|
|
2
|
+
//# sourceMappingURL=CreateNewTrackPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import{useRouteRef as s}from"@backstage/core-plugin-api";import{usePermission as n}from"@backstage/plugin-permission-react";import{RiAddLine as m}from"@remixicon/react";import{soundcheckTrackCreatePermission as p}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as d}from"react-router-dom";import{
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{useRouteRef as s}from"@backstage/core-plugin-api";import{usePermission as n}from"@backstage/plugin-permission-react";import{RiAddLine as m}from"@remixicon/react";import{soundcheckTrackCreatePermission as p}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as d}from"react-router-dom";import{newTrackRouteRef as u}from"../../routes.esm.js";import{EmptyStateBUI as f}from"./EmptyStateBUI.esm.js";const k=({title:r})=>{const e=s(u),a=d(),{loading:i,allowed:c}=n({permission:p}),t=!i&&c;return o(f,{title:r??(t?"Create your first track":"No tracks found"),body:"Tracks encourage alignment to architectural best practices and standards.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks/",actionButtonIcon:o(m,{}),actionOnClick:t?()=>a(e()):()=>{},actionText:"Create a track",actionDisabled:!t})};export{k as EmptyStateNoTracks};
|
|
2
2
|
//# sourceMappingURL=EmptyStateNoTracks.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as a,jsx as e}from"react/jsx-runtime";import{Paper as d,Grid as n,IconButton as f,Typography as h,Collapse as g}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import u from"@material-ui/icons/ArrowDropDown";import y from"@material-ui/icons/ArrowRight";import{useState as S}from"react";const
|
|
1
|
+
import{jsxs as a,jsx as e}from"react/jsx-runtime";import{Paper as d,Grid as n,IconButton as f,Typography as h,Collapse as g}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import u from"@material-ui/icons/ArrowDropDown";import y from"@material-ui/icons/ArrowRight";import{useState as S}from"react";const C=x(t=>({root:{display:"flex",flexDirection:"column",gap:0},button:{marginLeft:-t.spacing(1)},title:{fontWeight:700,color:t.palette.text.primary,cursor:"pointer"}})),N=({title:t,alwaysExpanded:o=!1,children:c,className:m,elevation:s=1})=>{const[r,p]=S(o),i=C(),l=()=>{o||p(!r)};return a(d,{elevation:s,className:`${i.root} ${m??""}`,children:[a(n,{container:!0,alignItems:"center",spacing:0,children:[e(n,{item:!0,children:!o&&e(f,{onClick:l,className:i.button,children:r?e(u,{fontSize:"large"}):e(y,{fontSize:"large"})})}),e(n,{item:!0,children:e(h,{onClick:l,className:i.title,children:t})})]}),e(g,{in:r,children:c})]})};export{N as ExpandableSection};
|
|
2
2
|
//# sourceMappingURL=ExpandableSection.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as a,Fragment as v}from"react/jsx-runtime";import{stringifyEntityRef as ee}from"@backstage/catalog-model";import{makeStyles as te,Box as o,Typography as
|
|
1
|
+
import{jsx as e,jsxs as a,Fragment as v}from"react/jsx-runtime";import{stringifyEntityRef as ee}from"@backstage/catalog-model";import{makeStyles as te,Box as o,Typography as r,TextField as ae,Button as W}from"@material-ui/core";import{Alert as ie}from"@material-ui/lab";import{parseFactRef as oe}from"@spotify/backstage-plugin-soundcheck-common";import re from"lodash";import{useMemo as g,useState as F,useEffect as ne,useCallback as le}from"react";import{useGetEntityRefs as ce}from"../../hooks/catalog/useGetEntityRefs.esm.js";import{useGetLimitedEntityRefs as se}from"../../hooks/catalog/useGetLimitedEntityRefs.esm.js";import{useGetCollectors as de}from"../../hooks/collectors/useGetCollectors.esm.js";import{useGetFactSchema as he}from"../../hooks/collectors/useGetFactSchema.esm.js";import{useGetFact as pe}from"../../hooks/useGetFact.esm.js";import{useGetPathResolvers as me}from"../../hooks/useGetPathResolvers.esm.js";import{generateJsonPaths as fe}from"../CheckForm/utils/checkFormUtils.esm.js";import{hasLogo as ue,CollectorLogo as ve}from"../CollectorsPage/CollectorListPage/CollectorLogo.esm.js";import{ExpandableSection as G}from"../ExpandableSection/ExpandableSection.esm.js";import{mapFiltersToCatalogFilter as ge}from"../Filter/utils.esm.js";import"../Filter/FilterComponent.esm.js";import{emptyFilters as ye}from"../Filter/types.esm.js";import{FormattedPreview as w}from"../FormattedPreview/FormattedPreview.esm.js";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"react-hook-form";import"../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as be}from"../FormControlledAutocomplete/useLabelOptions.esm.js";import{ControlledAutocomplete as y}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{LoadingIndicator as Se}from"../LoadingIndicator/LoadingIndicator.esm.js";import{useFactOptions as Fe}from"./useFactOptions.esm.js";const Ne=800,Re=te(t=>({content:{padding:t.spacing(2,3),width:Ne},section:{margin:t.spacing(2,0)},expandedSection:{borderTop:`1px solid ${t.palette.divider}`,padding:t.spacing(0,2)},loading:{margin:t.spacing(2)},preview:{maxHeight:500,overflow:"auto",border:`1px solid ${t.palette.divider}`},pathSection:{display:"flex",alignItems:"center",margin:t.spacing(1,0)},testPathButton:{margin:t.spacing(1,1,.5,0)},collectorName:{fontSize:24}})),xe=t=>{const p=!t?.length||t.every(h=>Object.values(h).every(N=>!N?.length))?[{...ye(),selectedKinds:["Component","System"]}]:t;return ge(p)},Ee=({factRef:t,updateFactRef:p,path:h,updatePath:N,entityRef:m,updateEntityRef:k,pathResolver:s,filters:R,onSave:P,hidePath:O})=>{const i=Re(),d=g(()=>{if(t)try{return oe(t)}catch{return}},[t]),[x,j]=F(d?.source??null);ne(()=>{d?.source&&j(d.source)},[d?.source]);const[b,V]=F("jsonpath"),[E,B]=F(),[C,M]=F(),{data:I}=me(),A=g(()=>I?.map(n=>n.id)??[],[I]),{data:f}=he(d?.source,d?.name,!0),D=g(()=>f?fe(f.schema):[],[f]),{data:L,isLoading:J}=de(),$=L?.map(n=>n.id)?.sort()??[],S=!R?.length||R.every(n=>Object.values(n).every(Z=>!Z?.length)),{data:z,isLoading:H}=ce(xe(R),1e3,!S),K=z?.items.map(n=>ee(n)),{entityRefs:U,allLoading:q}=se(500,S),l=g(()=>L?.find(n=>n.id===x),[L,x]),{factOptions:Q}=Fe({selectedCollector:l}),{options:X,getOptionLabel:T}=be(Q),{data:c,isLoading:u}=pe({factRef:t||"",entityRef:C||"",path:E,pathResolver:s??b??void 0,refresh:!0},!!t&&!!C),Y=le(()=>{B(h),M(m)},[m,h]),_=g(()=>!!l?.config?.cache,[l]);return e(o,{className:i.content,"data-testid":"fact-explorer",children:a(o,{children:[a(o,{children:[e(r,{variant:"subtitle1",children:"Select an Integration"}),e(y,{options:$,onChange:n=>{j(n),p("")},value:x,placeholder:"Integration",disabled:J,fullWidth:!0,freeSolo:!0})]}),!l&&e(v,{children:a(o,{children:[e(r,{variant:"subtitle1",children:"Enter a Fact Ref Directly"}),e(ae,{value:t,onChange:n=>p(n.currentTarget.value),variant:"outlined",margin:"dense",placeholder:"Enter the full fact ref, i.e. custom:default/custom-fact",fullWidth:!0})]})}),!!l&&e(v,{children:a(o,{className:i.section,children:[ue(l.id)?e(ve,{noMargin:!0,collectorId:l.id}):a(r,{variant:"h5",className:i.collectorName,component:"div",children:[l.name??l.id," "]}),!!l.description&&e(r,{variant:"body2",children:l.description}),e(y,{options:X,onChange:p,value:t??null,placeholder:"Select Fact",getOptionLabel:T,noOptionsText:"No Facts",fullWidth:!0})]})}),!!t&&!!d&&a(v,{children:[!!f?.schema&&e(o,{className:i.section,children:e(G,{elevation:1,title:"JSON Schema",children:e("div",{className:i.preview,children:e(w,{data:f.schema})})})}),!O&&a(v,{children:[a(o,{className:i.section,children:[e(r,{variant:"subtitle1",children:"Path Resolver"}),!s&&e(r,{variant:"caption",children:"Defaults to jsonpath"}),s?e(r,{variant:"body1",children:s}):e(y,{options:A,onChange:V,value:s??b,placeholder:"Path Resolver (Optional)",getOptionLabel:T,fullWidth:!0,disabled:!!s,freeSolo:!0})]}),a(o,{className:i.section,children:[e(r,{variant:"subtitle1",children:"Path"}),e(y,{options:(s??b)==="jsonpath"?D:[],onChange:n=>{E&&B(void 0),N(n)},value:h??null,placeholder:"Path",fullWidth:!0,freeSolo:!0}),e("div",{className:i.pathSection,children:!!P&&e(W,{className:i.testPathButton,variant:"contained",onClick:()=>P({factRef:t,path:h??"",pathResolver:b??s??""}),disabled:!h,color:"primary",children:"Save"})})]})]})]}),!!t&&!!d&&e(G,{alwaysExpanded:O,elevation:0,title:"Sample Fact and Test Path",children:a(o,{className:i.expandedSection,children:[a(o,{marginBottom:1,children:[e(r,{variant:"subtitle1",children:"Select an Entity"}),a(r,{variant:"caption",children:["Fact will be sampled from this entity.",e("br",{}),"If you don't see the entity in the drop-down list, you can type its reference in the format ","<kind>:<namespace>/<name>","."]}),e(y,{options:S?U??[]:K??[],onChange:k,value:m??null,placeholder:"Entity Selection",isLoading:S?q:H,freeSolo:!0,fullWidth:!0})]}),e(o,{children:e(W,{className:i.testPathButton,variant:"contained",onClick:Y,disabled:!m,color:"primary",children:"Sample Fact"})}),a(v,{children:[!!E&&!u&&a(o,{className:i.section,children:[e(r,{variant:"subtitle1",children:"Resolved Value"}),c?.resolvedValue!==null&&c?.resolvedValue!==void 0?e(o,{className:i.preview,children:e(w,{data:c?.resolvedValue})}):e(r,{color:"textSecondary",variant:"body2",children:"Could not resolve path"})]}),!!C&&a(o,{className:i.section,children:[e(r,{variant:"subtitle1",children:"Fact Data"}),_&&e(r,{variant:"caption",children:"Uses cache when available."}),!!u&&e("div",{className:i.loading,children:e(Se,{})}),!u&&!!c?.fact&&e(o,{className:i.preview,children:c?.fact?.sensitive&&re.isEmpty(c?.fact?.data)?e(o,{children:e(ie,{severity:"info",children:"The associated fact contains potentially sensitive information and has been redacted."})}):e(w,{data:c?.fact?.data})}),!u&&!!c?.collectionError&&a(r,{color:"textSecondary",variant:"body2",children:["Failed to collect:"," ",c?.collectionError?.errorMessage]}),!u&&!c?.fact&&!c?.collectionError&&a(r,{color:"textSecondary",variant:"body2",children:["Fact ",t," unavailable for entity ",m]})]})]})]})})]})})};export{Ee as FactExplorer};
|
|
2
2
|
//# sourceMappingURL=FactExplorer.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isEqual as
|
|
1
|
+
import{isEqual as m}from"lodash";import{useMemo as y,useCallback as P,useState as S,useEffect as v}from"react";import{useSearchParams as T}from"react-router-dom";import{getSearchParamValues as u}from"./util.esm.js";const k=()=>{const[t,h]=T(),a=y(()=>u(t,"owners"),[t]),c=y(()=>u(t,"lifecycles"),[t]),r=y(()=>u(t,"types"),[t]),l=y(()=>u(t,"systems"),[t]),i=y(()=>u(t,"certificationStatuses"),[t]),g=P(()=>a.map(e=>({label:e,value:e})),[a]),[n,w]=S(c),[o,E]=S(g()),[d,C]=S(r),[f,b]=S(l),[p,L]=S(i);v(()=>{E(g()),w(c??[]),C(r??[]),b(l??[]),L(i??[])},[a,c,r,l,g,i]);const F=y(()=>{const e={owners:!m(o,a??[]),lifecycles:!m(n,c??[]),types:!m(d,r??[]),systems:!m(f,l??[]),certificationStatus:!m(p,i??[])};return Object.values(e).some(Boolean)},[o,a,n,c,d,r,f,l,p,i]),O=P(()=>{const e=new URLSearchParams(t);e.delete("lifecycles"),e.delete("owners"),e.delete("types"),e.delete("systems"),e.delete("certificationStatuses"),n.length>0&&n.forEach(s=>e.append("lifecycles",s)),o.length>0&&o.forEach(({value:s})=>e.append("owners",s)),d.length>0&&d.forEach(s=>e.append("types",s)),f.length>0&&f.forEach(s=>e.append("systems",s)),p.length>0&&p.forEach(s=>e.append("certificationStatuses",s)),h(e)},[t,n,o,d,f,p,h]);return{handleClearFilters:P(()=>{w([]),E([]),C([]),b([]),L([]);const e=new URLSearchParams(t);e.delete("lifecycles"),e.delete("owners"),e.delete("types"),e.delete("systems"),e.delete("certificationStatuses"),h(e)},[t,h]),handleApplyFilters:O,hasFilterChanges:F,stagedTypes:d,stagedLifecycles:n,stagedSystems:f,stagedOwners:o,stagedCertificationStatuses:p,setStagedTypes:C,setStagedLifecycles:w,setStagedOwners:E,setStagedSystems:b,setStagedCertificationStatuses:L,owners:a,lifecycles:c,types:r,systems:l,certificationStatuses:i}};export{k as useTrackFilterSidebar};
|
|
2
2
|
//# sourceMappingURL=useTrackFilterSidebar.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{TrackCertificationState as
|
|
1
|
+
import{TrackCertificationState as l}from"../../graphql/generated/index.esm.js";const p=o=>{const{lifecycles:t,owners:e,types:i,systems:a}=o,s=t?.length?{"spec.lifecycle":t}:void 0,r=e?.length?{"relations.ownedBy":e}:void 0,n=i?.length?{"spec.type":i}:void 0,c=a?.length?{"relations.partOf":a}:void 0;if(s||r||n||c)return{...s,...r,...n,...c}},d={Passed:l.Passed,Failed:l.Failed,"Not Reported":l.NotReported},f=(o,t)=>o.getAll(t).flatMap(e=>e.split(",")).map(e=>e.trim()).filter(Boolean);export{d as CERTIFICATION_STATUS_MAP,f as getSearchParamValues,p as toFilter};
|
|
2
2
|
//# sourceMappingURL=util.esm.js.map
|