| 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));	}, []);};
 |