diff --git a/src/cron/store.ts b/src/cron/store.ts index 83d39f635e1..82b054f3dd5 100644 --- a/src/cron/store.ts +++ b/src/cron/store.ts @@ -84,6 +84,27 @@ type CronStateFile = { jobs: Record; }; +function parseCronStateFile(raw: string): CronStateFile | null { + try { + const parsed = parseJsonWithJson5Fallback(raw); + if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) { + return null; + } + const record = parsed as Record; + if ( + record.version !== 1 || + typeof record.jobs !== "object" || + record.jobs === null || + Array.isArray(record.jobs) + ) { + return null; + } + return { version: 1, jobs: record.jobs as Record }; + } catch { + return null; + } +} + function normalizeCronStoreFile(parsed: unknown): CronStoreFile { const rawJobs = getRawCronJobs(parsed); return { @@ -153,25 +174,7 @@ async function loadStateFile(statePath: string): Promise { }); } - try { - const parsed = parseJsonWithJson5Fallback(raw); - if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) { - return null; - } - const record = parsed as Record; - if ( - record.version !== 1 || - typeof record.jobs !== "object" || - record.jobs === null || - Array.isArray(record.jobs) - ) { - return null; - } - return { version: 1, jobs: record.jobs as Record }; - } catch { - // Best-effort: if state file is corrupt, treat as absent. - return null; - } + return parseCronStateFile(raw); } function loadStateFileSync(statePath: string): CronStateFile | null { @@ -187,24 +190,7 @@ function loadStateFileSync(statePath: string): CronStateFile | null { }); } - try { - const parsed = parseJsonWithJson5Fallback(raw); - if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) { - return null; - } - const record = parsed as Record; - if ( - record.version !== 1 || - typeof record.jobs !== "object" || - record.jobs === null || - Array.isArray(record.jobs) - ) { - return null; - } - return { version: 1, jobs: record.jobs as Record }; - } catch { - return null; - } + return parseCronStateFile(raw); } function hasInlineState(jobs: Array | null | undefined>): boolean {