UNPKG

@grafana/alerting

Version:

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

529 lines (518 loc) • 18.6 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var react = require('@reduxjs/toolkit/query/react'); var runtime = require('@grafana/runtime'); var jsxRuntime = require('react/jsx-runtime'); var lodash = require('lodash'); var ui = require('@grafana/ui'); const getAPINamespace = () => runtime.config.namespace; const getAPIBaseURL = (group, version) => `/apis/${group}/${version}/namespaces/${getAPINamespace()}`; const getAPIReducerPath = (group, version) => `${group}/${version}`; const VERSION = "v0alpha1"; const GROUP = "notifications.alerting.grafana.app"; const baseUrl = getAPIBaseURL(GROUP, VERSION); const reducerPath = getAPIReducerPath(GROUP, VERSION); const api = react.createApi({ reducerPath, baseQuery: react.fetchBaseQuery({ // Set URL correctly so MSW can intercept requests // https://mswjs.io/docs/runbook#rtk-query-requests-are-not-intercepted baseUrl: new URL(baseUrl, globalThis.location.origin).href }), endpoints: () => ({}) }); const addTagTypes = ["API Discovery", "Receiver", "RoutingTree", "TemplateGroup", "TimeInterval"]; const injectedRtkApi = api.enhanceEndpoints({ addTagTypes }).injectEndpoints({ endpoints: (build) => ({ getApiResources: build.query({ query: () => ({ url: `/apis/notifications.alerting.grafana.app/v0alpha1/` }), providesTags: ["API Discovery"] }), listReceiver: build.query({ query: (queryArg) => ({ url: `/receivers`, params: { pretty: queryArg.pretty, allowWatchBookmarks: queryArg.allowWatchBookmarks, continue: queryArg["continue"], fieldSelector: queryArg.fieldSelector, labelSelector: queryArg.labelSelector, limit: queryArg.limit, resourceVersion: queryArg.resourceVersion, resourceVersionMatch: queryArg.resourceVersionMatch, sendInitialEvents: queryArg.sendInitialEvents, timeoutSeconds: queryArg.timeoutSeconds, watch: queryArg.watch } }), providesTags: ["Receiver"] }), createReceiver: build.mutation({ query: (queryArg) => ({ url: `/receivers`, method: "POST", body: queryArg.receiver, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation } }), invalidatesTags: ["Receiver"] }), deletecollectionReceiver: build.mutation({ query: (queryArg) => ({ url: `/receivers`, method: "DELETE", params: { pretty: queryArg.pretty, continue: queryArg["continue"], dryRun: queryArg.dryRun, fieldSelector: queryArg.fieldSelector, gracePeriodSeconds: queryArg.gracePeriodSeconds, ignoreStoreReadErrorWithClusterBreakingPotential: queryArg.ignoreStoreReadErrorWithClusterBreakingPotential, labelSelector: queryArg.labelSelector, limit: queryArg.limit, orphanDependents: queryArg.orphanDependents, propagationPolicy: queryArg.propagationPolicy, resourceVersion: queryArg.resourceVersion, resourceVersionMatch: queryArg.resourceVersionMatch, sendInitialEvents: queryArg.sendInitialEvents, timeoutSeconds: queryArg.timeoutSeconds } }), invalidatesTags: ["Receiver"] }), getReceiver: build.query({ query: (queryArg) => ({ url: `/receivers/${queryArg.name}`, params: { pretty: queryArg.pretty } }), providesTags: ["Receiver"] }), replaceReceiver: build.mutation({ query: (queryArg) => ({ url: `/receivers/${queryArg.name}`, method: "PUT", body: queryArg.receiver, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation } }), invalidatesTags: ["Receiver"] }), deleteReceiver: build.mutation({ query: (queryArg) => ({ url: `/receivers/${queryArg.name}`, method: "DELETE", params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, gracePeriodSeconds: queryArg.gracePeriodSeconds, ignoreStoreReadErrorWithClusterBreakingPotential: queryArg.ignoreStoreReadErrorWithClusterBreakingPotential, orphanDependents: queryArg.orphanDependents, propagationPolicy: queryArg.propagationPolicy } }), invalidatesTags: ["Receiver"] }), updateReceiver: build.mutation({ query: (queryArg) => ({ url: `/receivers/${queryArg.name}`, method: "PATCH", body: queryArg.patch, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation, force: queryArg.force } }), invalidatesTags: ["Receiver"] }), listRoutingTree: build.query({ query: (queryArg) => ({ url: `/routingtrees`, params: { pretty: queryArg.pretty, allowWatchBookmarks: queryArg.allowWatchBookmarks, continue: queryArg["continue"], fieldSelector: queryArg.fieldSelector, labelSelector: queryArg.labelSelector, limit: queryArg.limit, resourceVersion: queryArg.resourceVersion, resourceVersionMatch: queryArg.resourceVersionMatch, sendInitialEvents: queryArg.sendInitialEvents, timeoutSeconds: queryArg.timeoutSeconds, watch: queryArg.watch } }), providesTags: ["RoutingTree"] }), createRoutingTree: build.mutation({ query: (queryArg) => ({ url: `/routingtrees`, method: "POST", body: queryArg.routingTree, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation } }), invalidatesTags: ["RoutingTree"] }), deletecollectionRoutingTree: build.mutation({ query: (queryArg) => ({ url: `/routingtrees`, method: "DELETE", params: { pretty: queryArg.pretty, continue: queryArg["continue"], dryRun: queryArg.dryRun, fieldSelector: queryArg.fieldSelector, gracePeriodSeconds: queryArg.gracePeriodSeconds, ignoreStoreReadErrorWithClusterBreakingPotential: queryArg.ignoreStoreReadErrorWithClusterBreakingPotential, labelSelector: queryArg.labelSelector, limit: queryArg.limit, orphanDependents: queryArg.orphanDependents, propagationPolicy: queryArg.propagationPolicy, resourceVersion: queryArg.resourceVersion, resourceVersionMatch: queryArg.resourceVersionMatch, sendInitialEvents: queryArg.sendInitialEvents, timeoutSeconds: queryArg.timeoutSeconds } }), invalidatesTags: ["RoutingTree"] }), getRoutingTree: build.query({ query: (queryArg) => ({ url: `/routingtrees/${queryArg.name}`, params: { pretty: queryArg.pretty } }), providesTags: ["RoutingTree"] }), replaceRoutingTree: build.mutation({ query: (queryArg) => ({ url: `/routingtrees/${queryArg.name}`, method: "PUT", body: queryArg.routingTree, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation } }), invalidatesTags: ["RoutingTree"] }), deleteRoutingTree: build.mutation({ query: (queryArg) => ({ url: `/routingtrees/${queryArg.name}`, method: "DELETE", params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, gracePeriodSeconds: queryArg.gracePeriodSeconds, ignoreStoreReadErrorWithClusterBreakingPotential: queryArg.ignoreStoreReadErrorWithClusterBreakingPotential, orphanDependents: queryArg.orphanDependents, propagationPolicy: queryArg.propagationPolicy } }), invalidatesTags: ["RoutingTree"] }), updateRoutingTree: build.mutation({ query: (queryArg) => ({ url: `/routingtrees/${queryArg.name}`, method: "PATCH", body: queryArg.patch, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation, force: queryArg.force } }), invalidatesTags: ["RoutingTree"] }), listTemplateGroup: build.query({ query: (queryArg) => ({ url: `/templategroups`, params: { pretty: queryArg.pretty, allowWatchBookmarks: queryArg.allowWatchBookmarks, continue: queryArg["continue"], fieldSelector: queryArg.fieldSelector, labelSelector: queryArg.labelSelector, limit: queryArg.limit, resourceVersion: queryArg.resourceVersion, resourceVersionMatch: queryArg.resourceVersionMatch, sendInitialEvents: queryArg.sendInitialEvents, timeoutSeconds: queryArg.timeoutSeconds, watch: queryArg.watch } }), providesTags: ["TemplateGroup"] }), createTemplateGroup: build.mutation({ query: (queryArg) => ({ url: `/templategroups`, method: "POST", body: queryArg.templateGroup, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation } }), invalidatesTags: ["TemplateGroup"] }), deletecollectionTemplateGroup: build.mutation({ query: (queryArg) => ({ url: `/templategroups`, method: "DELETE", params: { pretty: queryArg.pretty, continue: queryArg["continue"], dryRun: queryArg.dryRun, fieldSelector: queryArg.fieldSelector, gracePeriodSeconds: queryArg.gracePeriodSeconds, ignoreStoreReadErrorWithClusterBreakingPotential: queryArg.ignoreStoreReadErrorWithClusterBreakingPotential, labelSelector: queryArg.labelSelector, limit: queryArg.limit, orphanDependents: queryArg.orphanDependents, propagationPolicy: queryArg.propagationPolicy, resourceVersion: queryArg.resourceVersion, resourceVersionMatch: queryArg.resourceVersionMatch, sendInitialEvents: queryArg.sendInitialEvents, timeoutSeconds: queryArg.timeoutSeconds } }), invalidatesTags: ["TemplateGroup"] }), getTemplateGroup: build.query({ query: (queryArg) => ({ url: `/templategroups/${queryArg.name}`, params: { pretty: queryArg.pretty } }), providesTags: ["TemplateGroup"] }), replaceTemplateGroup: build.mutation({ query: (queryArg) => ({ url: `/templategroups/${queryArg.name}`, method: "PUT", body: queryArg.templateGroup, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation } }), invalidatesTags: ["TemplateGroup"] }), deleteTemplateGroup: build.mutation({ query: (queryArg) => ({ url: `/templategroups/${queryArg.name}`, method: "DELETE", params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, gracePeriodSeconds: queryArg.gracePeriodSeconds, ignoreStoreReadErrorWithClusterBreakingPotential: queryArg.ignoreStoreReadErrorWithClusterBreakingPotential, orphanDependents: queryArg.orphanDependents, propagationPolicy: queryArg.propagationPolicy } }), invalidatesTags: ["TemplateGroup"] }), updateTemplateGroup: build.mutation({ query: (queryArg) => ({ url: `/templategroups/${queryArg.name}`, method: "PATCH", body: queryArg.patch, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation, force: queryArg.force } }), invalidatesTags: ["TemplateGroup"] }), listTimeInterval: build.query({ query: (queryArg) => ({ url: `/timeintervals`, params: { pretty: queryArg.pretty, allowWatchBookmarks: queryArg.allowWatchBookmarks, continue: queryArg["continue"], fieldSelector: queryArg.fieldSelector, labelSelector: queryArg.labelSelector, limit: queryArg.limit, resourceVersion: queryArg.resourceVersion, resourceVersionMatch: queryArg.resourceVersionMatch, sendInitialEvents: queryArg.sendInitialEvents, timeoutSeconds: queryArg.timeoutSeconds, watch: queryArg.watch } }), providesTags: ["TimeInterval"] }), createTimeInterval: build.mutation({ query: (queryArg) => ({ url: `/timeintervals`, method: "POST", body: queryArg.timeInterval, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation } }), invalidatesTags: ["TimeInterval"] }), deletecollectionTimeInterval: build.mutation({ query: (queryArg) => ({ url: `/timeintervals`, method: "DELETE", params: { pretty: queryArg.pretty, continue: queryArg["continue"], dryRun: queryArg.dryRun, fieldSelector: queryArg.fieldSelector, gracePeriodSeconds: queryArg.gracePeriodSeconds, ignoreStoreReadErrorWithClusterBreakingPotential: queryArg.ignoreStoreReadErrorWithClusterBreakingPotential, labelSelector: queryArg.labelSelector, limit: queryArg.limit, orphanDependents: queryArg.orphanDependents, propagationPolicy: queryArg.propagationPolicy, resourceVersion: queryArg.resourceVersion, resourceVersionMatch: queryArg.resourceVersionMatch, sendInitialEvents: queryArg.sendInitialEvents, timeoutSeconds: queryArg.timeoutSeconds } }), invalidatesTags: ["TimeInterval"] }), getTimeInterval: build.query({ query: (queryArg) => ({ url: `/timeintervals/${queryArg.name}`, params: { pretty: queryArg.pretty } }), providesTags: ["TimeInterval"] }), replaceTimeInterval: build.mutation({ query: (queryArg) => ({ url: `/timeintervals/${queryArg.name}`, method: "PUT", body: queryArg.timeInterval, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation } }), invalidatesTags: ["TimeInterval"] }), deleteTimeInterval: build.mutation({ query: (queryArg) => ({ url: `/timeintervals/${queryArg.name}`, method: "DELETE", params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, gracePeriodSeconds: queryArg.gracePeriodSeconds, ignoreStoreReadErrorWithClusterBreakingPotential: queryArg.ignoreStoreReadErrorWithClusterBreakingPotential, orphanDependents: queryArg.orphanDependents, propagationPolicy: queryArg.propagationPolicy } }), invalidatesTags: ["TimeInterval"] }), updateTimeInterval: build.mutation({ query: (queryArg) => ({ url: `/timeintervals/${queryArg.name}`, method: "PATCH", body: queryArg.patch, params: { pretty: queryArg.pretty, dryRun: queryArg.dryRun, fieldManager: queryArg.fieldManager, fieldValidation: queryArg.fieldValidation, force: queryArg.force } }), invalidatesTags: ["TimeInterval"] }) }), overrideExisting: false }); function useListContactPoints() { return injectedRtkApi.useListReceiverQuery({}); } function getContactPointDescription(contactPoint) { if (lodash.isEmpty(contactPoint.spec.integrations)) { return "<empty contact point>"; } const integrationCounts = lodash.countBy(contactPoint.spec.integrations, (integration) => integration.type); const description = Object.entries(integrationCounts).map(([type, count]) => { return count > 1 ? `${type} (${count})` : type; }).join(", "); return description; } const collator = new Intl.Collator("en", { sensitivity: "accent" }); function ContactPointSelector(props) { const { currentData: contactPoints, isLoading } = useListContactPoints(); const contactPointOptions = lodash.chain(contactPoints == null ? void 0 : contactPoints.items).toArray().map((contactPoint) => { var _a; return { option: { label: contactPoint.spec.title, value: (_a = contactPoint.metadata.uid) != null ? _a : contactPoint.spec.title, description: getContactPointDescription(contactPoint) }, contactPoint }; }).value().sort((a, b) => collator.compare(a.option.label, b.option.label)); const options = contactPointOptions.map((item) => item.option); const handleChange = (selectedOption) => { if (selectedOption == null && props.isClearable) { props.onChange(null); return; } if (selectedOption) { const matchedOption = contactPointOptions.find(({ option }) => option.value === selectedOption.value); if (!matchedOption) { return; } props.onChange(matchedOption.contactPoint); } }; return /* @__PURE__ */ jsxRuntime.jsx(ui.Combobox, { ...props, loading: isLoading, options, onChange: handleChange }); } exports.ContactPointSelector = ContactPointSelector; exports.alertingAPI = injectedRtkApi; exports.useListContactPoints = useListContactPoints; //# sourceMappingURL=unstable.cjs.map