unpackRuns
The kept runs packRuns wrote; none from anything else (runs kept by an earlier tcm, another way), nor
runs recording what they ran another way than this tcm does (KEPT_RUN_FORMAT): they're dropped when
runs are next kept.
import { KEPT_RUN_FORMAT } from "#codebase/tcmts/cli/suites"; import type { SuiteRun } from "#codebase/tcmts/cli/suites"; export function unpackRuns(json: string | undefined): Record<string, SuiteRun[]> { let kept: { names?: unknown; runs?: unknown }; try { kept = JSON.parse(json ?? "{}") as { names?: unknown; runs?: unknown }; } catch { return {}; } if (!Array.isArray(kept.names) || typeof kept.runs !== "object" || kept.runs === null) return {}; const names = kept.names as string[]; const runs = kept.runs as Record<string, (Omit<SuiteRun, "ran"> & { ran: number[] })[]>; return Object.fromEntries( Object.entries(runs).map(([slot, rs]) => [ slot, rs .filter((r) => r.format === KEPT_RUN_FORMAT) .map((r) => ({ ...r, ran: r.ran.map((i) => names[i]!) })), ]), ); }