UNPKG

@grafana/alerting

Version:

Grafana Alerting Library – Build vertical integrations on top of the industry-leading alerting solution

58 lines (55 loc) 1.89 kB
import { useCallback } from 'react'; import { notificationsAPI as injectedRtkApi } from '../../api/notifications/v0alpha1/notifications.api.gen.mjs'; import { USER_DEFINED_TREE_NAME } from '../consts.mjs'; import { convertRoutingTreeToRoute, matchInstancesToRoute } from '../utils.mjs'; "use strict"; function useMatchInstancesToRouteTrees() { const { data, ...rest } = injectedRtkApi.endpoints.listRoutingTree.useQuery( {}, { refetchOnFocus: true, refetchOnReconnect: true } ); const memoizedFunction = useCallback( (instances) => { var _a; return matchInstancesToRouteTrees((_a = data == null ? void 0 : data.items) != null ? _a : [], instances); }, [data == null ? void 0 : data.items] ); return { matchInstancesToRouteTrees: memoizedFunction, ...rest }; } function matchInstancesToRouteTrees(trees, instances) { const treeMatches = trees.map((tree) => { const rootRoute = convertRoutingTreeToRoute(tree); return matchInstancesToRoute(rootRoute, instances); }); return instances.map((labels) => { const allMatchedRoutes = treeMatches.flatMap(({ expandedTree, matchedPolicies }, index) => { const tree = trees[index]; return Array.from(matchedPolicies.entries()).flatMap( ([route, results]) => results.filter((matchDetails) => matchDetails.labels === labels).map((matchDetails) => { var _a; return { route, routeTree: { metadata: { name: (_a = tree.metadata.name) != null ? _a : USER_DEFINED_TREE_NAME }, expandedSpec: expandedTree }, matchDetails }; }) ); }); return { labels, matchedRoutes: allMatchedRoutes }; }); } export { matchInstancesToRouteTrees, useMatchInstancesToRouteTrees }; //# sourceMappingURL=useMatchPolicies.mjs.map