UNPKG

@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
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;