import { existsSync, mkdirSync, readFileSync } from "node:fs"; import { writeCanonicalJson, writeCanonicalText } from "@govlab/canonical-write"; import { UTF8 } from "#configuration/constants/source.constants"; import { dirname } from "node:path"; const ensureFolder = function ensureFolder(target: string): void { mkdirSync(dirname(target), { recursive: true }); }; export const persistJson = async function persistJson(target: string, data: unknown): Promise { ensureFolder(target); await writeCanonicalJson(target, data); }; export const persistText = async function persistText(target: string, text: string): Promise { ensureFolder(target); await writeCanonicalText(target, text); }; export const readJsonOrNull = function readJsonOrNull(target: string): unknown { if (!existsSync(target)) { return null; } return JSON.parse(readFileSync(target, UTF8)); };