Functional Weave
Code in Python

monitor.component-state@1.0.0

impl/typescript.ts

1,094 bytes · the TypeScript implementation · view raw

Imports name this capability’s declared dependencies, which fune builds next to it in your project; each one links to its page.

import { type CheckStatus } from "./monitor_check_status.ts";  ← from monitor.check-status ^1.0.0 · built alongside by fune
import { type ComponentState } from "./monitor_component_state_types.ts";

/**
 * One component's state in Atlassian Statuspage's vocabulary. Maintenance
 * wins, so planned work never pages anyone as an outage; the statuses are
 * still checked, so a bad feed fails loudly even during maintenance.
 */
export function componentState(statuses: readonly CheckStatus[], underMaintenance: boolean): ComponentState {
  if (statuses.length === 0) throw new RangeError("statuses must not be empty");
  if (typeof underMaintenance !== "boolean") throw new TypeError("underMaintenance must be true or false");
  let down = 0;
  let degraded = 0;
  for (const s of statuses) {
    if (s === "down") down += 1;
    else if (s === "degraded") degraded += 1;
    else if (s !== "up") throw new RangeError(`unknown check status: ${String(s)}`);
  }
  if (underMaintenance) return "maintenance";
  if (down === statuses.length) return "major-outage";
  if (down > 0) return "partial-outage";
  return degraded > 0 ? "degraded" : "operational";
}