@contextjs/io
Version:
File system utilities for reading, writing, and inspecting files, directories, and paths.
35 lines (34 loc) • 1.27 kB
JavaScript
import { Throw } from "@contextjs/system";
import fs from "node:fs";
import * as nodePath from 'node:path';
import { PathNotFoundException } from "../exceptions/path-not-found.exception.js";
export class Path {
static exists(path) {
return fs.existsSync(path);
}
static isDirectory(path) {
return Path.exists(path) && fs.statSync(path).isDirectory();
}
static isFile(path) {
return Path.exists(path) && fs.statSync(path).isFile();
}
static normalize(path) {
Throw.ifNullOrWhitespace(path);
return nodePath.normalize(path).replace(/^(\.\.[\/\\])+/, '');
}
static join(...paths) {
return nodePath.join(...paths.map(p => Path.normalize(p)));
}
static listDirectories(directory) {
Throw.ifNullOrWhitespace(directory);
if (!Path.isDirectory(directory))
throw new PathNotFoundException(`The directory "${directory}" does not exist or is not a directory.`);
return fs.readdirSync(directory, { withFileTypes: true })
.filter(dirent => dirent.isDirectory())
.map(dirent => dirent.name);
}
static resolve(...paths) {
paths.forEach(Throw.ifNullOrWhitespace);
return nodePath.resolve(...paths);
}
}