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