Openstatus
www.openstatus.dev
1import type { NotificationProvider } from "@openstatus/db/src/schema";
2import type { NotificationContext } from "@openstatus/notification-base";
3import {
4 sendAlert as sendDiscordAlert,
5 sendDegraded as sendDiscordDegraded,
6 sendRecovery as sendDiscordRecovery,
7} from "@openstatus/notification-discord";
8import {
9 sendAlert as sendEmailAlert,
10 sendDegraded as sendEmailDegraded,
11 sendRecovery as sendEmailRecovery,
12} from "@openstatus/notification-emails";
13import {
14 sendAlert as sendGoogleChatAlert,
15 sendDegraded as sendGoogleChatDegraded,
16 sendRecovery as sendGoogleChatRecovery,
17} from "@openstatus/notification-google-chat";
18import {
19 sendAlert as sendNtfyAlert,
20 sendDegraded as sendNtfyDegraded,
21 sendRecovery as sendNtfyRecovery,
22} from "@openstatus/notification-ntfy";
23import {
24 sendAlert as sendOpsGenieAlert,
25 sendDegraded as sendOpsGenieDegraded,
26 sendRecovery as sendOpsGenieRecovery,
27} from "@openstatus/notification-opsgenie";
28import {
29 sendDegraded as sendPagerDutyDegraded,
30 sendRecovery as sendPagerDutyRecovery,
31 sendAlert as sendPagerdutyAlert,
32} from "@openstatus/notification-pagerduty";
33import {
34 sendAlert as sendSlackAlert,
35 sendDegraded as sendSlackDegraded,
36 sendRecovery as sendSlackRecovery,
37} from "@openstatus/notification-slack";
38import {
39 sendAlert as sendTelegramAlert,
40 sendDegraded as sendTelegramDegraded,
41 sendRecovery as sendTelegramRecovery,
42} from "@openstatus/notification-telegram";
43import {
44 sendAlert as sendSmsAlert,
45 sendDegraded as sendSmsDegraded,
46 sendRecovery as sendSmsRecovery,
47} from "@openstatus/notification-twillio-sms";
48import {
49 sendAlert as sendWhatsappAlert,
50 sendDegraded as sendWhatsappDegraded,
51 sendRecovery as sendWhatsappRecovery,
52} from "@openstatus/notification-twillio-whatsapp";
53import {
54 sendAlert as sendWebhookAlert,
55 sendDegraded as sendWebhookDegraded,
56 sendRecovery as sendWebhookRecovery,
57} from "@openstatus/notification-webhook";
58
59type SendNotification = (props: NotificationContext) => Promise<void>;
60
61type Notif = {
62 sendAlert: SendNotification;
63 sendRecovery: SendNotification;
64 sendDegraded: SendNotification;
65};
66
67export const providerToFunction: Record<NotificationProvider, Notif> = {
68 discord: {
69 sendAlert: sendDiscordAlert,
70 sendRecovery: sendDiscordRecovery,
71 sendDegraded: sendDiscordDegraded,
72 },
73 email: {
74 sendAlert: sendEmailAlert,
75 sendRecovery: sendEmailRecovery,
76 sendDegraded: sendEmailDegraded,
77 },
78 "google-chat": {
79 sendAlert: sendGoogleChatAlert,
80 sendRecovery: sendGoogleChatRecovery,
81 sendDegraded: sendGoogleChatDegraded,
82 },
83 ntfy: {
84 sendAlert: sendNtfyAlert,
85 sendRecovery: sendNtfyRecovery,
86 sendDegraded: sendNtfyDegraded,
87 },
88 opsgenie: {
89 sendAlert: sendOpsGenieAlert,
90 sendRecovery: sendOpsGenieRecovery,
91 sendDegraded: sendOpsGenieDegraded,
92 },
93 pagerduty: {
94 sendAlert: sendPagerdutyAlert,
95 sendRecovery: sendPagerDutyRecovery,
96 sendDegraded: sendPagerDutyDegraded,
97 },
98 slack: {
99 sendAlert: sendSlackAlert,
100 sendRecovery: sendSlackRecovery,
101 sendDegraded: sendSlackDegraded,
102 },
103 sms: {
104 sendAlert: sendSmsAlert,
105 sendRecovery: sendSmsRecovery,
106 sendDegraded: sendSmsDegraded,
107 },
108 webhook: {
109 sendAlert: sendWebhookAlert,
110 sendRecovery: sendWebhookRecovery,
111 sendDegraded: sendWebhookDegraded,
112 },
113 whatsapp: {
114 sendAlert: sendWhatsappAlert,
115 sendRecovery: sendWhatsappRecovery,
116 sendDegraded: sendWhatsappDegraded,
117 },
118 telegram: {
119 sendAlert: sendTelegramAlert,
120 sendRecovery: sendTelegramRecovery,
121 sendDegraded: sendTelegramDegraded,
122 },
123};