import { readFileSync, writeFileSync, existsSync, mkdirSync, renameSync } from 'node:fs'; import { dirname, join } from 'node:path'; const DATA_DIR = join(process.cwd(), 'data'); if (!existsSync(DATA_DIR)) mkdirSync(DATA_DIR, { recursive: true }); export function dataPath(name: string): string { return join(DATA_DIR, name); } export function readJson(name: string, fallback: T): T { const p = dataPath(name); if (!existsSync(p)) return fallback; try { return JSON.parse(readFileSync(p, 'utf8')) as T; } catch { return fallback; } } export function writeJson(name: string, value: T): void { const p = dataPath(name); const dir = dirname(p); if (!existsSync(dir)) mkdirSync(dir, { recursive: true }); const tmp = `${p}.tmp`; writeFileSync(tmp, JSON.stringify(value, null, 2), 'utf8'); renameSync(tmp, p); }