import { promises as fs } from "node:fs"; import path from "node:path"; export function serializeWrites(): (task: () => Promise) => Promise { let chain: Promise = Promise.resolve(); return (task) => { chain = chain.then(task).catch(() => {}); return chain; }; } export async function writeJsonAtomic(file: string, data: unknown): Promise { await fs.mkdir(path.dirname(file), { recursive: true }); const tmp = `${file}.tmp`; await fs.writeFile(tmp, JSON.stringify(data, null, 2), "utf8"); await fs.rename(tmp, file); }