Urara-Blog/node_modules/.pnpm-store/v3/files/d6/cc871980f82af1aa13394f9eb8e9a9e7dec00757c0594ccd3af33e4755bacb99c4203fa0ecbf49bc4bb2f27220041b42b1437a414a144cc4ecfb038367e301
2022-08-14 01:14:53 +08:00

52 lines
1.4 KiB
Text

import mm from 'micromatch';
import { resolve, sep } from 'path';
import { CreateFilter } from './pluginutils';
import ensureArray from './utils/ensureArray';
function getMatcherString(id: string, resolutionBase: string | false | null | undefined) {
if (resolutionBase === false) {
return id;
}
return resolve(...(typeof resolutionBase === 'string' ? [resolutionBase, id] : [id]));
}
const createFilter: CreateFilter = function createFilter(include?, exclude?, options?) {
const resolutionBase = options && options.resolve;
const getMatcher = (id: string | RegExp) => {
return id instanceof RegExp
? id
: {
test: mm.matcher(
getMatcherString(id, resolutionBase)
.split(sep)
.join('/'),
{ dot: true }
)
};
};
const includeMatchers = ensureArray(include).map(getMatcher);
const excludeMatchers = ensureArray(exclude).map(getMatcher);
return function(id: string | any): boolean {
if (typeof id !== 'string') return false;
if (/\0/.test(id)) return false;
id = id.split(sep).join('/');
for (let i = 0; i < excludeMatchers.length; ++i) {
const matcher = excludeMatchers[i];
if (matcher.test(id)) return false;
}
for (let i = 0; i < includeMatchers.length; ++i) {
const matcher = includeMatchers[i];
if (matcher.test(id)) return true;
}
return !includeMatchers.length;
};
};
export { createFilter as default };