PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` let path = require('path'); let glob = require('glob'); let File = require('../File'); let { promisify } = require('util'); let { concat } = require('lodash'); let globAsync = promisify(glob); /** @internal */ module.exports.FileGlob = class FileGlob { /** * Find all relevant files matching the given source path. * * @param {string|string[]} src * @param {{ ignore?: string[] }} options * @returns {Promise} */ static async expand(src, { ignore = [] } = {}) { const paths = concat([], src); const results = await Promise.all( paths.map(async srcPath => { const result = await this.find(srcPath); if (!result.isDir && result.matches.length === 0) { return [srcPath]; } return result.matches; }) ); const filepaths = results.flatMap(files => files); return filepaths.filter(filepath => { return !ignore.includes(filepath); }); } /** * * @internal * @param {string} src * @returns {Promise<{isDir: boolean, matches: string[]}>} */ static async find(src) { const isDir = File.find(src).isDirectory(); const pattern = isDir ? path.join(src, '**/*') : src; const matches = await globAsync(pattern, { nodir: true }); return { isDir, matches }; } };