@nestjs/graphql
Version:
Nest - modern, fast, powerful node.js web framework (@graphql)
23 lines (22 loc) • 882 B
JavaScript
import { isAbsolute, win32 } from 'path';
import { glob } from 'tinyglobby';
export async function globPaths(patterns, options = {}) {
const patternsArray = Array.isArray(patterns) ? patterns : [patterns];
const negativePatterns = patternsArray.filter(isNegativePattern);
const positivePatterns = patternsArray.filter((pattern) => !isNegativePattern(pattern));
const globOptions = {
...options,
expandDirectories: false,
};
const matches = await Promise.all(positivePatterns.map((pattern) => glob([pattern, ...negativePatterns], {
...globOptions,
absolute: isAbsoluteGlob(pattern),
})));
return [...new Set(matches.flat())];
}
function isNegativePattern(pattern) {
return pattern[0] === '!' && pattern[1] !== '(';
}
function isAbsoluteGlob(pattern) {
return isAbsolute(pattern) || win32.isAbsolute(pattern);
}