12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.readdirRecursive = void 0;
- const path_1 = require("path");
- const fs_extra_1 = require("fs-extra");
- const _ = require("lodash");
- const minimatch = require("minimatch");
- async function readdirRecursiveHelper(options) {
- const dirContents = (0, fs_extra_1.readdirSync)(options.path);
- const fullPaths = dirContents.map((n) => (0, path_1.join)(options.path, n));
- const filteredPaths = fullPaths.filter((p) => !options.filter(p));
- const filePromises = [];
- for (const p of filteredPaths) {
- const fstat = (0, fs_extra_1.statSync)(p);
- if (fstat.isFile()) {
- filePromises.push(Promise.resolve({ name: p, mode: fstat.mode }));
- }
- if (!fstat.isDirectory()) {
- continue;
- }
- filePromises.push(readdirRecursiveHelper({ path: p, filter: options.filter }));
- }
- const files = await Promise.all(filePromises);
- let flatFiles = _.flattenDeep(files);
- flatFiles = flatFiles.filter((f) => f !== null);
- return flatFiles;
- }
- async function readdirRecursive(options) {
- const mmopts = { matchBase: true, dot: true };
- const rules = (options.ignore || []).map((glob) => {
- return (p) => minimatch(p, glob, mmopts);
- });
- const filter = (t) => {
- return rules.some((rule) => {
- return rule(t);
- });
- };
- return readdirRecursiveHelper({
- path: options.path,
- filter: filter,
- });
- }
- exports.readdirRecursive = readdirRecursive;
|