@visulima/fs
Version:
Human friendly file system utilities for Node.js
17 lines (14 loc) • 736 B
JavaScript
const globToRegExp = (glob) => {
const reString = glob.replace(/\.\*/g, ".([^/]*)").replace(/\*\*/g, "(.*)").replace(/(?<!\.)\*(?!\*)/g, "([^/]*)").replace(/\?/g, "[^/]").replace(/\.(?!\*)/g, String.raw`\.`).replace(/\{/g, "(").replace(/\}/g, ")").replace(/,/g, "|").replace(/\[!(.*?)\]/g, "[^$1]");
return new RegExp(`^${reString}$`);
};
const walkInclude = (path, extensions, match, skip) => {
if (Array.isArray(extensions) && extensions.length > 0 && !extensions.some((extension) => path.endsWith(extension))) {
return false;
}
if (match && !match.some((pattern) => pattern.test(path))) {
return false;
}
return !skip?.some((pattern) => pattern.test(path));
};
export { globToRegExp as g, walkInclude as w };