Files

27 lines
713 B
TypeScript

export type IncidentSeverity = "maintenance" | "degraded" | "outage";
export type ServiceStatusLevel =
| "operational"
| "maintenance"
| "degraded"
| "outage";
const severityRank: Record<IncidentSeverity, number> = {
maintenance: 1,
degraded: 2,
outage: 3,
};
export function deriveServiceStatus(
incidents: ReadonlyArray<{ severity: IncidentSeverity; status: string }>,
): ServiceStatusLevel {
let selected: IncidentSeverity | null = null;
for (const incident of incidents) {
if (incident.status !== "active") continue;
if (!selected || severityRank[incident.severity] > severityRank[selected]) {
selected = incident.severity;
}
}
return selected ?? "operational";
}