(sourceHome: string)
| 18 | } |
| 19 | |
| 20 | export async function readMarker(sourceHome: string): Promise<MarkerData | undefined> { |
| 21 | try { |
| 22 | const text = await readFile(migratedMarker(sourceHome), 'utf-8'); |
| 23 | const parsed = JSON.parse(text) as Partial<MarkerData>; |
| 24 | if (parsed.version !== 1) return undefined; |
| 25 | // A partially-written or hand-edited marker may keep `version` but lack a |
| 26 | // valid `runs` array; treating it as absent avoids `appendMarkerRun` |
| 27 | // throwing on `[...existing.runs, run]` and aborting a healthy rerun. |
| 28 | if (!Array.isArray(parsed.runs)) return undefined; |
| 29 | return parsed as MarkerData; |
| 30 | } catch { |
| 31 | return undefined; |
| 32 | } |
| 33 | } |
| 34 | |
| 35 | export async function writeMarker( |
| 36 | sourceHome: string, |
no test coverage detected