38 lines · 814 B
export type WebhookEvent =
  | "ping"
  | "push"
  | "create"
  | "delete"
  | "issues"
  | "issue_comment"
  | "pull_request"
  | "pull_request_review"
  | "pull_request_review_comment"
  | "release"
  | "workflow_run"
  | "star"
  | "fork";

export const WEBHOOK_EVENTS: WebhookEvent[] = [
  "push",
  "create",
  "delete",
  "issues",
  "issue_comment",
  "pull_request",
  "pull_request_review",
  "pull_request_review_comment",
  "release",
  "workflow_run",
  "star",
  "fork",
];

/** Narrows a stored event name; anything unrecognised can't be replayed. */
export function webhookEventOf(value: string): WebhookEvent {
  if (value === "ping") return value;
  const known = WEBHOOK_EVENTS.find((event) => event === value);
  if (!known) throw new Error(`Unknown webhook event: ${value}`);
  return known;
}