UNPKG

a2r

Version:
35 lines (34 loc) 1.43 kB
"use strict"; 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;