marmar-context / web / context / server / clarifications.ts
clarifications.ts
Raw
import type { Source } from "../src/types";

export function validateClarifications(sources: Source[]): void {
  for (const source of sources) {
    const link = source.clarification;
    if (!link) continue;
    const original = sources.find((s) => s.id === link.sourceId);
    if (
      !original ||
      original.id === source.id ||
      original.clarification ||
      !Number.isInteger(link.line) ||
      link.line < 1 ||
      original.text.split("\n")[link.line - 1]?.trim() !== link.quote ||
      !link.quote.trim() ||
      !link.confirmedBy.trim() ||
      !link.reason.trim()
    ) {
      throw new Error(
        "A clarification must link to an unchanged original source line and identify who confirmed it.",
      );
    }
  }
}