@grafana/alerting
Version:
Grafana Alerting Library – Build vertical integrations on top of the industry-leading alerting solution
73 lines (68 loc) • 2.37 kB
JavaScript
;
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');
;
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