| "use strict"; | 
| Object.defineProperty(exports, "__esModule", { value: true }); | 
| var path = require("path"); | 
| var globParent = require("glob-parent"); | 
| var isGlob = require("is-glob"); | 
| var micromatch = require("micromatch"); | 
| var GLOBSTAR = '**'; | 
| /** | 
|  * Return true for static pattern. | 
|  */ | 
| function isStaticPattern(pattern) { | 
|     return !isDynamicPattern(pattern); | 
| } | 
| exports.isStaticPattern = isStaticPattern; | 
| /** | 
|  * Return true for pattern that looks like glob. | 
|  */ | 
| function isDynamicPattern(pattern) { | 
|     return isGlob(pattern, { strict: false }); | 
| } | 
| exports.isDynamicPattern = isDynamicPattern; | 
| /** | 
|  * Convert a windows «path» to a unix-style «path». | 
|  */ | 
| function unixifyPattern(pattern) { | 
|     return pattern.replace(/\\/g, '/'); | 
| } | 
| exports.unixifyPattern = unixifyPattern; | 
| /** | 
|  * Returns negative pattern as positive pattern. | 
|  */ | 
| function convertToPositivePattern(pattern) { | 
|     return isNegativePattern(pattern) ? pattern.slice(1) : pattern; | 
| } | 
| exports.convertToPositivePattern = convertToPositivePattern; | 
| /** | 
|  * Returns positive pattern as negative pattern. | 
|  */ | 
| function convertToNegativePattern(pattern) { | 
|     return '!' + pattern; | 
| } | 
| exports.convertToNegativePattern = convertToNegativePattern; | 
| /** | 
|  * Return true if provided pattern is negative pattern. | 
|  */ | 
| function isNegativePattern(pattern) { | 
|     return pattern.startsWith('!') && pattern[1] !== '('; | 
| } | 
| exports.isNegativePattern = isNegativePattern; | 
| /** | 
|  * Return true if provided pattern is positive pattern. | 
|  */ | 
| function isPositivePattern(pattern) { | 
|     return !isNegativePattern(pattern); | 
| } | 
| exports.isPositivePattern = isPositivePattern; | 
| /** | 
|  * Extracts negative patterns from array of patterns. | 
|  */ | 
| function getNegativePatterns(patterns) { | 
|     return patterns.filter(isNegativePattern); | 
| } | 
| exports.getNegativePatterns = getNegativePatterns; | 
| /** | 
|  * Extracts positive patterns from array of patterns. | 
|  */ | 
| function getPositivePatterns(patterns) { | 
|     return patterns.filter(isPositivePattern); | 
| } | 
| exports.getPositivePatterns = getPositivePatterns; | 
| /** | 
|  * Extract base directory from provided pattern. | 
|  */ | 
| function getBaseDirectory(pattern) { | 
|     return globParent(pattern); | 
| } | 
| exports.getBaseDirectory = getBaseDirectory; | 
| /** | 
|  * Return true if provided pattern has globstar. | 
|  */ | 
| function hasGlobStar(pattern) { | 
|     return pattern.indexOf(GLOBSTAR) !== -1; | 
| } | 
| exports.hasGlobStar = hasGlobStar; | 
| /** | 
|  * Return true if provided pattern ends with slash and globstar. | 
|  */ | 
| function endsWithSlashGlobStar(pattern) { | 
|     return pattern.endsWith('/' + GLOBSTAR); | 
| } | 
| exports.endsWithSlashGlobStar = endsWithSlashGlobStar; | 
| /** | 
|  * Returns «true» when pattern ends with a slash and globstar or the last partial of the pattern is static pattern. | 
|  */ | 
| function isAffectDepthOfReadingPattern(pattern) { | 
|     var basename = path.basename(pattern); | 
|     return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); | 
| } | 
| exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; | 
| /** | 
|  * Return naive depth of provided pattern without depth of the base directory. | 
|  */ | 
| function getNaiveDepth(pattern) { | 
|     var base = getBaseDirectory(pattern); | 
|     var patternDepth = pattern.split('/').length; | 
|     var patternBaseDepth = base.split('/').length; | 
|     /** | 
|      * This is a hack for pattern that has no base directory. | 
|      * | 
|      * This is related to the `*\something\*` pattern. | 
|      */ | 
|     if (base === '.') { | 
|         return patternDepth - patternBaseDepth; | 
|     } | 
|     return patternDepth - patternBaseDepth - 1; | 
| } | 
| exports.getNaiveDepth = getNaiveDepth; | 
| /** | 
|  * Return max naive depth of provided patterns without depth of the base directory. | 
|  */ | 
| function getMaxNaivePatternsDepth(patterns) { | 
|     return patterns.reduce(function (max, pattern) { | 
|         var depth = getNaiveDepth(pattern); | 
|         return depth > max ? depth : max; | 
|     }, 0); | 
| } | 
| exports.getMaxNaivePatternsDepth = getMaxNaivePatternsDepth; | 
| /** | 
|  * Make RegExp for provided pattern. | 
|  */ | 
| function makeRe(pattern, options) { | 
|     return micromatch.makeRe(pattern, options); | 
| } | 
| exports.makeRe = makeRe; | 
| /** | 
|  * Convert patterns to regexps. | 
|  */ | 
| function convertPatternsToRe(patterns, options) { | 
|     return patterns.map(function (pattern) { return makeRe(pattern, options); }); | 
| } | 
| exports.convertPatternsToRe = convertPatternsToRe; | 
| /** | 
|  * Returns true if the entry match any of the given RegExp's. | 
|  */ | 
| function matchAny(entry, patternsRe) { | 
|     return patternsRe.some(function (patternRe) { return patternRe.test(entry); }); | 
| } | 
| exports.matchAny = matchAny; |