@stryke/fs
Version:
A package containing various file system utilities that expand the functionality of NodeJs's built-in `fs` module.
86 lines (84 loc) • 3.48 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
let _stryke_path = require("@stryke/path");
let _stryke_type_checks = require("@stryke/type-checks");
let defu = require("defu");
defu = require_runtime.__toESM(defu, 1);
let glob = require("glob");
//#region src/list-files.ts
const DEFAULT_OPTIONS = { dot: true };
/**
* A files and directories listing helper function
*
* @param filesGlob - A glob pattern to match files
* @returns A list of file paths
*/
async function list(filesGlob, options) {
return (0, glob.glob)((0, _stryke_type_checks.isString)(filesGlob) ? filesGlob.includes("*") ? filesGlob : (0, _stryke_path.joinPaths)(filesGlob, "**/*") : filesGlob.input ? (0, _stryke_path.joinPaths)(filesGlob.input, filesGlob.glob) : filesGlob.glob, (0, defu.default)((0, _stryke_type_checks.isString)(filesGlob) ? {} : {
dot: filesGlob.dot,
ignore: filesGlob.ignore
}, options ?? {}, DEFAULT_OPTIONS));
}
/**
* A synchronous files and directories listing helper function
*
* @param filesGlob - A glob pattern to match files
* @returns A list of file paths
*/
function listSync(filesGlob, options) {
return glob.glob.sync((0, _stryke_type_checks.isString)(filesGlob) ? filesGlob.includes("*") ? filesGlob : (0, _stryke_path.joinPaths)(filesGlob, "**/*") : filesGlob.input ? (0, _stryke_path.joinPaths)(filesGlob.input, filesGlob.glob) : filesGlob.glob, (0, defu.default)((0, _stryke_type_checks.isString)(filesGlob) ? {} : {
dot: filesGlob.dot,
ignore: filesGlob.ignore
}, options ?? {}, DEFAULT_OPTIONS));
}
/**
* A file listing helper function
*
* @param filesGlob - A glob pattern to match files
* @returns A list of file paths
*/
async function listFiles(filesGlob, options) {
const result = (await list(filesGlob, (0, defu.default)({ withFileTypes: true }, options ?? {}))).filter((ret) => ret.isFile());
if (!options?.withFileTypes) return result.map((file) => file.fullpath());
return result;
}
/**
* A synchronous file listing helper function
*
* @param filesGlob - A glob pattern to match files
* @returns A list of file paths
*/
function listFilesSync(filesGlob, options) {
const result = listSync(filesGlob, (0, defu.default)({ withFileTypes: true }, options ?? {})).filter((ret) => ret.isFile());
if (!options?.withFileTypes) return result.map((file) => file.fullpath());
return result;
}
/**
* A directories listing helper function
*
* @param filesGlob - A glob pattern to match files
* @returns A list of file paths
*/
async function listDirectories(filesGlob, options) {
const result = (await list(filesGlob, (0, defu.default)({ withFileTypes: true }, options ?? {}))).filter((ret) => ret.isDirectory());
if (!options?.withFileTypes) return result.map((file) => file.fullpath());
return result;
}
/**
* A synchronous directories listing helper function
*
* @param filesGlob - A glob pattern to match files
* @returns A list of file paths
*/
function listDirectoriesSync(filesGlob, options) {
const result = listSync(filesGlob, (0, defu.default)({ withFileTypes: true }, options ?? {})).filter((ret) => ret.isDirectory());
if (!options?.withFileTypes) return result.map((file) => file.fullpath());
return result;
}
//#endregion
exports.list = list;
exports.listDirectories = listDirectories;
exports.listDirectoriesSync = listDirectoriesSync;
exports.listFiles = listFiles;
exports.listFilesSync = listFilesSync;
exports.listSync = listSync;