UNPKG

@grafana/alerting

Version:

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

73 lines (68 loc) 2.37 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var react = require('react'); var v0alpha1 = require('@grafana/api-clients/rtkq/notifications.alerting/v0alpha1'); var consts = require('../consts.cjs'); var utils = require('../utils.cjs'); "use strict"; function useMatchInstancesToRouteTrees() { const { data, ...rest } = v0alpha1.generatedAPI.endpoints.listRoutingTree.useQuery( {}, { refetchOnFocus: true, refetchOnReconnect: true } ); const memoizedFunction = react.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 useMatchInstancesToSpecificRouteTree(routingTree, instances) { return react.useMemo(() => { if (!routingTree) { return null; } const rootRoute = utils.convertRoutingTreeToRoute(routingTree); return utils.matchInstancesToRoute(rootRoute, instances); }, [routingTree, instances]); } function matchInstancesToRouteTrees(trees, instances) { const treeMatches = trees.map((tree) => { const rootRoute = utils.convertRoutingTreeToRoute(tree); return utils.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 : consts.USER_DEFINED_TREE_NAME }, expandedSpec: expandedTree }, matchDetails }; }) ); }); return { labels, matchedRoutes: allMatchedRoutes }; }); } exports.matchInstancesToRouteTrees = matchInstancesToRouteTrees; exports.useMatchInstancesToRouteTrees = useMatchInstancesToRouteTrees; exports.useMatchInstancesToSpecificRouteTree = useMatchInstancesToSpecificRouteTree; //# sourceMappingURL=useMatchPolicies.cjs.map