|
12345678910111213141516171819202122232425 |
- 'use strict';
- const minimatch = require('minimatch');
- const arrayUnion = require('array-union');
- const arrayDiffer = require('array-differ');
- const arrify = require('arrify');
-
- module.exports = (list, patterns, options = {}) => {
- list = arrify(list);
- patterns = arrify(patterns);
-
- if (list.length === 0 || patterns.length === 0) {
- return [];
- }
-
- return patterns.reduce((result, pattern) => {
- let process = arrayUnion;
-
- if (pattern[0] === '!') {
- pattern = pattern.slice(1);
- process = arrayDiffer;
- }
-
- return process(result, minimatch.match(list, pattern, options));
- }, []);
- };
|