27 lines · 838 B · TypeScript
RawDownload
import { parsePatchFiles } from "@pierre/diffs/utils/parsePatchFiles"; export interface TurnDiffFileSummary {  readonly path: string;  readonly additions: number;  readonly deletions: number;} export function parseTurnDiffFilesFromUnifiedDiff(  diff: string,): ReadonlyArray<TurnDiffFileSummary> {  const normalized = diff.replace(/\r\n/g, "\n").trim();  if (normalized.length === 0) {    return [];  }   const parsedPatches = parsePatchFiles(normalized);  const files = parsedPatches.flatMap((patch) =>    patch.files.map((file) => ({      path: file.name,      additions: file.hunks.reduce((total, hunk) => total + hunk.additionLines, 0),      deletions: file.hunks.reduce((total, hunk) => total + hunk.deletionLines, 0),    })),  );   return files.toSorted((left, right) => left.path.localeCompare(right.path));}