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