Openstatus www.openstatus.dev
at 9be204e034f14c8ae07952d17c8200c256b2dd61 125 lines 3.3 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 sendNtfyAlert, 19 sendDegraded as sendNtfyDegraded, 20 sendRecovery as sendNtfyRecovery, 21} from "@openstatus/notification-ntfy"; 22import { 23 sendAlert as sendOpsGenieAlert, 24 sendDegraded as sendOpsGenieDegraded, 25 sendRecovery as sendOpsGenieRecovery, 26} from "@openstatus/notification-opsgenie"; 27import { 28 sendDegraded as sendPagerDutyDegraded, 29 sendRecovery as sendPagerDutyRecovery, 30 sendAlert as sendPagerdutyAlert, 31} from "@openstatus/notification-pagerduty"; 32import { 33 sendAlert as sendSlackAlert, 34 sendDegraded as sendSlackDegraded, 35 sendRecovery as sendSlackRecovery, 36} from "@openstatus/notification-slack"; 37import { 38 sendAlert as sendTelegramAlert, 39 sendDegraded as sendTelegramDegraded, 40 sendRecovery as sendTelegramRecovery, 41} from "@openstatus/notification-telegram"; 42import { 43 sendAlert as sendSmsAlert, 44 sendDegraded as sendSmsDegraded, 45 sendRecovery as sendSmsRecovery, 46} from "@openstatus/notification-twillio-sms"; 47import { 48 sendAlert as sendWebhookAlert, 49 sendDegraded as sendWebhookDegraded, 50 sendRecovery as sendWebhookRecovery, 51} from "@openstatus/notification-webhook"; 52 53type SendNotification = ({ 54 monitor, 55 notification, 56 statusCode, 57 message, 58 incidentId, 59 cronTimestamp, 60 latency, 61 region, 62}: { 63 monitor: Monitor; 64 notification: Notification; 65 statusCode?: number; 66 message?: string; 67 incidentId?: string; 68 cronTimestamp: number; 69 latency?: number; 70 region?: Region; 71}) => Promise<void>; 72 73type Notif = { 74 sendAlert: SendNotification; 75 sendRecovery: SendNotification; 76 sendDegraded: SendNotification; 77}; 78 79export const providerToFunction = { 80 discord: { 81 sendAlert: sendDiscordAlert, 82 sendRecovery: sendDiscordRecovery, 83 sendDegraded: sendDiscordDegraded, 84 }, 85 email: { 86 sendAlert: sendEmailAlert, 87 sendRecovery: sendEmailRecovery, 88 sendDegraded: sendEmailDegraded, 89 }, 90 ntfy: { 91 sendAlert: sendNtfyAlert, 92 sendRecovery: sendNtfyRecovery, 93 sendDegraded: sendNtfyDegraded, 94 }, 95 opsgenie: { 96 sendAlert: sendOpsGenieAlert, 97 sendRecovery: sendOpsGenieRecovery, 98 sendDegraded: sendOpsGenieDegraded, 99 }, 100 pagerduty: { 101 sendAlert: sendPagerdutyAlert, 102 sendRecovery: sendPagerDutyRecovery, 103 sendDegraded: sendPagerDutyDegraded, 104 }, 105 slack: { 106 sendAlert: sendSlackAlert, 107 sendRecovery: sendSlackRecovery, 108 sendDegraded: sendSlackDegraded, 109 }, 110 sms: { 111 sendAlert: sendSmsAlert, 112 sendRecovery: sendSmsRecovery, 113 sendDegraded: sendSmsDegraded, 114 }, 115 webhook: { 116 sendAlert: sendWebhookAlert, 117 sendRecovery: sendWebhookRecovery, 118 sendDegraded: sendWebhookDegraded, 119 }, 120 telegram: { 121 sendAlert: sendTelegramAlert, 122 sendRecovery: sendTelegramRecovery, 123 sendDegraded: sendTelegramDegraded, 124 }, 125} satisfies Record<NotificationProvider, Notif>;