a2r
Version:
A2R Framework
35 lines (34 loc) • 1.43 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const fs_1 = require("@a2r/fs");
/**
* Gets files recursively
* @param folderPath Path to get files from
* @param extName Extension names to filter files (including `.`)
*/
const getFilesRecursively = async (folderPath, pathsToIgnore, filesToIgnore) => {
const contents = await (0, fs_1.readDir)(folderPath, {
encoding: 'utf8',
withFileTypes: true,
});
const pathsToIgnoreSet = new Set(pathsToIgnore || []);
const filesToIgnoreSet = new Set(filesToIgnore || []);
const files = await Promise.all(contents.map(async (content) => {
if (content.isDirectory()) {
if (!pathsToIgnoreSet.has(content.name)) {
const folderFiles = await getFilesRecursively(path_1.default.resolve(folderPath, content.name), pathsToIgnore, filesToIgnore);
return folderFiles;
}
}
else if (!filesToIgnore || !filesToIgnore.length || !filesToIgnoreSet.has(content.name)) {
return [path_1.default.resolve(folderPath, content.name)];
}
return [];
}));
return files.reduce((t, f) => [...t, ...f], []);
};
exports.default = getFilesRecursively;