UNPKG

@contextjs/io

Version:

File system utilities for reading, writing, and inspecting files, directories, and paths.

35 lines (34 loc) 1.27 kB
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); } }