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