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