15815213711
2024-08-26 67b8b6731811983447e053d4396b3708c14dfe3c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
'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 [];
    }
 
    let result = [];
    for (const item of list) {
        for (let pattern of patterns) {
            let process = arrayUnion;
 
            if (pattern[0] === '!') {
                pattern = pattern.slice(1);
                process = arrayDiffer;
            }
 
            result = process(result, minimatch.match([item], pattern, options));
        }
    }
 
    return result;
};