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