sitegen/framework/lib/fs.ts

70 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-06-07 02:25:06 -07:00
// File System APIs. Some custom APIs, but mostly a re-export a mix of built-in
// Node.js sync+promise fs methods. For convenince.
export {
2025-06-07 02:25:06 -07:00
existsSync,
readdir,
readdirSync,
readFile,
readFileSync,
rm,
rmSync,
stat,
statSync,
writeFile,
writeFileSync,
};
export function mkdir(dir: string) {
return nodeMkdir(dir, { recursive: true });
}
export function mkdirSync(dir: string) {
return nodeMkdirSync(dir, { recursive: true });
}
export async function writeMkdir(file: string, contents: Buffer | string) {
await mkdir(path.dirname(file));
return writeFile(file, contents);
}
2025-06-07 02:25:06 -07:00
export function writeMkdirSync(file: string, contents: Buffer | string) {
mkdirSync(path.dirname(file));
return writeFileSync(file, contents);
}
export function readDirRecOptionalSync(dir: string) {
try {
2025-06-09 00:12:41 -07:00
return readdirSync(dir, { recursive: true, encoding: "utf8" });
2025-06-07 02:25:06 -07:00
} catch (err: any) {
if (err.code === "ENOENT") return [];
throw err;
}
}
2025-06-10 01:13:59 -07:00
export async function readJson<T>(file: string) {
return JSON.parse(await readFile(file, "utf-8")) as T;
}
export function readJsonSync<T>(file: string) {
return JSON.parse(readFileSync(file, "utf-8")) as T;
}
2025-06-07 02:25:06 -07:00
import * as path from "node:path";
import {
existsSync,
mkdirSync as nodeMkdirSync,
readdirSync,
readFileSync,
rmSync,
statSync,
writeFileSync,
} from "node:fs";
import {
mkdir as nodeMkdir,
readdir,
readFile,
rm,
stat,
writeFile,
} from "node:fs/promises";