import { mkdir, rename, writeFile } from "node:fs/promises"; import { dirname } from "node:path"; import { randomBytes } from "node:crypto"; export async function writeTextAtomic(path: string, content: string): Promise { await mkdir(dirname(path), { recursive: true }); const temporary = `${path}.${process.pid}.${randomBytes(6).toString("hex")}.tmp`; await writeFile(temporary, content, { encoding: "utf8", mode: 0o600 }); await rename(temporary, path); } export async function writeJsonAtomic(path: string, value: unknown): Promise { await writeTextAtomic(path, `${JSON.stringify(value, null, 2)}\n`); }