erp-web/node-jiti/globby-index.js.3099c3b4.js

224 lines
7.1 KiB
JavaScript

"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.isDynamicPattern = exports.globbySync = exports.globbyStream = exports.globby = exports.generateGlobTasksSync = exports.generateGlobTasks = void 0;Object.defineProperty(exports, "isGitIgnored", { enumerable: true, get: function () {return _ignore.isGitIgnored;} });Object.defineProperty(exports, "isGitIgnoredSync", { enumerable: true, get: function () {return _ignore.isGitIgnoredSync;} });var _nodeFs = _interopRequireDefault(require("node:fs"));
var _nodePath = _interopRequireDefault(require("node:path"));
var _merge = _interopRequireDefault(require("merge2"));
var _fastGlob = _interopRequireDefault(require("fast-glob"));
var _dirGlob = _interopRequireDefault(require("dir-glob"));
var _ignore = require("./ignore.js");
var _utilities = require("./utilities.js");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
const assertPatternsInput = (patterns) => {
if (patterns.some((pattern) => typeof pattern !== 'string')) {
throw new TypeError('Patterns must be a string or an array of strings');
}
};
const toPatternsArray = (patterns) => {
patterns = [...new Set([patterns].flat())];
assertPatternsInput(patterns);
return patterns;
};
const checkCwdOption = (options) => {
if (!options.cwd) {
return;
}
let stat;
try {
stat = _nodeFs.default.statSync(options.cwd);
} catch {
return;
}
if (!stat.isDirectory()) {
throw new Error('The `cwd` option must be a path to a directory');
}
};
const normalizeOptions = (options = {}) => {
options = {
...options,
ignore: options.ignore || [],
expandDirectories: options.expandDirectories === undefined ?
true :
options.expandDirectories,
cwd: (0, _utilities.toPath)(options.cwd)
};
checkCwdOption(options);
return options;
};
const normalizeArguments = (fn) => async (patterns, options) => fn(toPatternsArray(patterns), normalizeOptions(options));
const normalizeArgumentsSync = (fn) => (patterns, options) => fn(toPatternsArray(patterns), normalizeOptions(options));
const getIgnoreFilesPatterns = (options) => {
const { ignoreFiles, gitignore } = options;
const patterns = ignoreFiles ? toPatternsArray(ignoreFiles) : [];
if (gitignore) {
patterns.push(_ignore.GITIGNORE_FILES_PATTERN);
}
return patterns;
};
const getFilter = async (options) => {
const ignoreFilesPatterns = getIgnoreFilesPatterns(options);
return createFilterFunction(
ignoreFilesPatterns.length > 0 && (await (0, _ignore.isIgnoredByIgnoreFiles)(ignoreFilesPatterns, options))
);
};
const getFilterSync = (options) => {
const ignoreFilesPatterns = getIgnoreFilesPatterns(options);
return createFilterFunction(
ignoreFilesPatterns.length > 0 && (0, _ignore.isIgnoredByIgnoreFilesSync)(ignoreFilesPatterns, options)
);
};
const createFilterFunction = (isIgnored) => {
const seen = new Set();
return (fastGlobResult) => {
const path = fastGlobResult.path || fastGlobResult;
const pathKey = _nodePath.default.normalize(path);
const seenOrIgnored = seen.has(pathKey) || isIgnored && isIgnored(path);
seen.add(pathKey);
return !seenOrIgnored;
};
};
const unionFastGlobResults = (results, filter) => results.flat().filter((fastGlobResult) => filter(fastGlobResult));
const unionFastGlobStreams = (streams, filter) => (0, _merge.default)(streams).pipe(new _utilities.FilterStream((fastGlobResult) => filter(fastGlobResult)));
const convertNegativePatterns = (patterns, options) => {
const tasks = [];
while (patterns.length > 0) {
const index = patterns.findIndex((pattern) => (0, _utilities.isNegativePattern)(pattern));
if (index === -1) {
tasks.push({ patterns, options });
break;
}
const ignorePattern = patterns[index].slice(1);
for (const task of tasks) {
task.options.ignore.push(ignorePattern);
}
if (index !== 0) {
tasks.push({
patterns: patterns.slice(0, index),
options: {
...options,
ignore: [
...options.ignore,
ignorePattern]
}
});
}
patterns = patterns.slice(index + 1);
}
return tasks;
};
const getDirGlobOptions = (options, cwd) => ({
...(cwd ? { cwd } : {}),
...(Array.isArray(options) ? { files: options } : options)
});
const generateTasks = async (patterns, options) => {
const globTasks = convertNegativePatterns(patterns, options);
const { cwd, expandDirectories } = options;
if (!expandDirectories) {
return globTasks;
}
const patternExpandOptions = getDirGlobOptions(expandDirectories, cwd);
const ignoreExpandOptions = cwd ? { cwd } : undefined;
return Promise.all(
globTasks.map(async (task) => {
let { patterns, options } = task;
[
patterns,
options.ignore] =
await Promise.all([
(0, _dirGlob.default)(patterns, patternExpandOptions),
(0, _dirGlob.default)(options.ignore, ignoreExpandOptions)]
);
return { patterns, options };
})
);
};
const generateTasksSync = (patterns, options) => {
const globTasks = convertNegativePatterns(patterns, options);
const { cwd, expandDirectories } = options;
if (!expandDirectories) {
return globTasks;
}
const patternExpandOptions = getDirGlobOptions(expandDirectories, cwd);
const ignoreExpandOptions = cwd ? { cwd } : undefined;
return globTasks.map((task) => {
let { patterns, options } = task;
patterns = _dirGlob.default.sync(patterns, patternExpandOptions);
options.ignore = _dirGlob.default.sync(options.ignore, ignoreExpandOptions);
return { patterns, options };
});
};
const globby = normalizeArguments(async (patterns, options) => {
const [
tasks,
filter] =
await Promise.all([
generateTasks(patterns, options),
getFilter(options)]
);
const results = await Promise.all(tasks.map((task) => (0, _fastGlob.default)(task.patterns, task.options)));
return unionFastGlobResults(results, filter);
});exports.globby = globby;
const globbySync = normalizeArgumentsSync((patterns, options) => {
const tasks = generateTasksSync(patterns, options);
const filter = getFilterSync(options);
const results = tasks.map((task) => _fastGlob.default.sync(task.patterns, task.options));
return unionFastGlobResults(results, filter);
});exports.globbySync = globbySync;
const globbyStream = normalizeArgumentsSync((patterns, options) => {
const tasks = generateTasksSync(patterns, options);
const filter = getFilterSync(options);
const streams = tasks.map((task) => _fastGlob.default.stream(task.patterns, task.options));
return unionFastGlobStreams(streams, filter);
});exports.globbyStream = globbyStream;
const isDynamicPattern = normalizeArgumentsSync(
(patterns, options) => patterns.some((pattern) => _fastGlob.default.isDynamicPattern(pattern, options))
);exports.isDynamicPattern = isDynamicPattern;
const generateGlobTasks = normalizeArguments(generateTasks);exports.generateGlobTasks = generateGlobTasks;
const generateGlobTasksSync = normalizeArgumentsSync(generateTasksSync);exports.generateGlobTasksSync = generateGlobTasksSync; /* v7-5fbae7b710226867 */