import {type Opt} from "../pure/deep.ts";
export async function jsonRead<T extends Opt<T>>(path:string):Promise<T>{ return JSON.parse(await Deno.readTextFile(path));}
export async function jsonWrite<T extends Opt<T>>(path:string, data:T):Promise<void>{ await Deno.writeTextFile(path, JSON.stringify(data, undefined, 4));}
export async function jsonLoad<T extends Opt<T>>(path:string, def:T):Promise<T>{ try{ return await jsonRead<T>(path); } catch(e){ if(e instanceof Deno.errors.NotFound){ await jsonWrite(path, def); } else{ throw e; } }
return def;}