38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.build = void 0;
|
||
|
function pushDirectoryWithRelativePath(root) {
|
||
|
return function (directoryPath, paths) {
|
||
|
paths.push(directoryPath.substring(root.length) || ".");
|
||
|
};
|
||
|
}
|
||
|
function pushDirectoryFilterWithRelativePath(root) {
|
||
|
return function (directoryPath, paths, filters) {
|
||
|
const relativePath = directoryPath.substring(root.length) || ".";
|
||
|
if (filters.every((filter) => filter(relativePath, true))) {
|
||
|
paths.push(relativePath);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
const pushDirectory = (directoryPath, paths) => {
|
||
|
paths.push(directoryPath || ".");
|
||
|
};
|
||
|
const pushDirectoryFilter = (directoryPath, paths, filters) => {
|
||
|
const path = directoryPath || ".";
|
||
|
if (filters.every((filter) => filter(path, true))) {
|
||
|
paths.push(path);
|
||
|
}
|
||
|
};
|
||
|
const empty = () => { };
|
||
|
function build(root, options) {
|
||
|
const { includeDirs, filters, relativePaths } = options;
|
||
|
if (!includeDirs)
|
||
|
return empty;
|
||
|
if (relativePaths)
|
||
|
return filters && filters.length
|
||
|
? pushDirectoryFilterWithRelativePath(root)
|
||
|
: pushDirectoryWithRelativePath(root);
|
||
|
return filters && filters.length ? pushDirectoryFilter : pushDirectory;
|
||
|
}
|
||
|
exports.build = build;
|