Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
fisker committed Jan 19, 2022
1 parent f33e336 commit 3af4794
Showing 1 changed file with 37 additions and 40 deletions.
77 changes: 37 additions & 40 deletions index.js
Expand Up @@ -49,6 +49,8 @@ const normalizeOptions = (options = {}) => {
return options;
};

const normalizeArguments = fn => (patterns, options) => fn(toPatternsArray(patterns), normalizeOptions(options));

const getFilter = async options => createFilterFunction(
options.gitignore && await isGitIgnored({cwd: options.cwd, ignore: options.ignore}),
);
Expand All @@ -69,10 +71,7 @@ const createFilterFunction = isIgnored => {
const unionFastGlobResults = (results, filter) => results.flat().filter(fastGlobResult => filter(fastGlobResult));
const unionFastGlobStreams = (streams, filter) => merge2(streams).pipe(new FilterStream(fastGlobResult => filter(fastGlobResult)));

export const generateGlobTasks = (patterns, taskOptions) => {
patterns = toPatternsArray(patterns);
taskOptions = normalizeOptions(taskOptions);

const generateGlobTasksInternal = (patterns, taskOptions) => {
const globTasks = [];
for (const [index, pattern] of patterns.entries()) {
if (isNegative(pattern)) {
Expand Down Expand Up @@ -116,13 +115,15 @@ const globDirectories = (task, fn) => {
return fn(task.pattern, options);
};

const expendTasks = async (tasks, options) => {
const generateTasks = async (patterns, options) => {
const globTasks = generateGlobTasksInternal(patterns, options);

if (!options.expandDirectories) {
return tasks;
return globTasks;
}

tasks = await Promise.all(
tasks.map(async task => {
const tasks = await Promise.all(
globTasks.map(async task => {
const {options} = task;

const [
Expand All @@ -141,62 +142,58 @@ const expendTasks = async (tasks, options) => {
return tasks.flat();
};

const expandTasksSync = (tasks, options) =>
options.expandDirectories
? tasks.flatMap(task => {
const {options} = task;
const patterns = globDirectories(task, dirGlob.sync);
options.ignore = dirGlob.sync(options.ignore);
return patterns.map(pattern => ({pattern, options}));
})
: tasks;
const generateTasksSync = (patterns, options) => {
const globTasks = generateGlobTasksInternal(patterns, options);

if (!options.expandDirectories) {
return globTasks;
}

return globTasks.flatMap(task => {
const {options} = task;
const patterns = globDirectories(task, dirGlob.sync);
options.ignore = dirGlob.sync(options.ignore);
return patterns.map(pattern => ({pattern, options}));
});
};

export const globby = async (patterns, options) => {
const globTasks = generateGlobTasks(patterns, options);
patterns = toPatternsArray(patterns)
options = normalizeOptions(options)

options = normalizeOptions(options);
const [
filter,
tasks,
filter,
] = await Promise.all([
generateTasks(patterns, options),
getFilter(options),
expendTasks(globTasks, options),
]);
const results = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options)));

return unionFastGlobResults(results, filter);
};

export const globbySync = (patterns, options) => {
const globTasks = generateGlobTasks(patterns, options);

options = normalizeOptions(options);
const tasks = expandTasksSync(globTasks, options);

export const globbySync = normalizeArguments((patterns, options) => {
const tasks = generateTasksSync(patterns, options);
const filter = getFilterSync(options);
const results = tasks.map(task => fastGlob.sync(task.pattern, task.options));

return unionFastGlobResults(results, filter);
};

export const globbyStream = (patterns, options) => {
const globTasks = generateGlobTasks(patterns, options);

options = normalizeOptions(options);
const tasks = expandTasksSync(globTasks, options);
});

export const globbyStream = normalizeArguments((patterns, options) => {
const tasks = generateTasksSync(patterns, options);
const filter = getFilterSync(options);
const streams = tasks.map(task => fastGlob.stream(task.pattern, task.options));

return unionFastGlobStreams(streams, filter);
};
});

export const isDynamicPattern = (patterns, options) => {
patterns = toPatternsArray(patterns);
options = normalizeOptions(options);
export const isDynamicPattern = normalizeArguments(
(patterns, options) => patterns.some(pattern => fastGlob.isDynamicPattern(pattern, options)),
);

return patterns.some(pattern => fastGlob.isDynamicPattern(pattern, options));
};
export const generateGlobTasks = normalizeArguments(generateGlobTasksInternal);

export {
isGitIgnored,
Expand Down

0 comments on commit 3af4794

Please sign in to comment.