Files
portfolio/node_modules/.cache/babel-loader/33679a3315cdccf510910f2c888930d5.json
2021-09-20 16:54:47 -04:00

1 line
74 KiB
JSON

{"ast":null,"code":"module.exports = minimatch;\nminimatch.Minimatch = Minimatch;\nvar path = {\n sep: '/'\n};\n\ntry {\n path = require('path');\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {};\n\nvar expand = require('brace-expansion');\n\nvar plTypes = {\n '!': {\n open: '(?:(?!(?:',\n close: '))[^/]*?)'\n },\n '?': {\n open: '(?:',\n close: ')?'\n },\n '+': {\n open: '(?:',\n close: ')+'\n },\n '*': {\n open: '(?:',\n close: ')*'\n },\n '@': {\n open: '(?:',\n close: ')'\n }\n}; // any single thing other than /\n// don't need to escape / when using new RegExp()\n\nvar qmark = '[^/]'; // * => any number of characters\n\nvar star = qmark + '*?'; // ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\n\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'; // not a ^ or / followed by a dot,\n// followed by anything, any number of times.\n\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'; // characters that need to be escaped in RegExp.\n\nvar reSpecials = charSet('().*{}+?[]^$\\\\!'); // \"abc\" -> { a:true, b:true, c:true }\n\nfunction charSet(s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true;\n return set;\n }, {});\n} // normalizes slashes.\n\n\nvar slashSplit = /\\/+/;\nminimatch.filter = filter;\n\nfunction filter(pattern, options) {\n options = options || {};\n return function (p, i, list) {\n return minimatch(p, pattern, options);\n };\n}\n\nfunction ext(a, b) {\n a = a || {};\n b = b || {};\n var t = {};\n Object.keys(b).forEach(function (k) {\n t[k] = b[k];\n });\n Object.keys(a).forEach(function (k) {\n t[k] = a[k];\n });\n return t;\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch;\n var orig = minimatch;\n\n var m = function minimatch(p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options));\n };\n\n m.Minimatch = function Minimatch(pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options));\n };\n\n return m;\n};\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch;\n return minimatch.defaults(def).Minimatch;\n};\n\nfunction minimatch(p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required');\n }\n\n if (!options) options = {}; // shortcut: comments match nothing.\n\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false;\n } // \"\" only matches \"\"\n\n\n if (pattern.trim() === '') return p === '';\n return new Minimatch(pattern, options).match(p);\n}\n\nfunction Minimatch(pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options);\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required');\n }\n\n if (!options) options = {};\n pattern = pattern.trim(); // windows support: need to use /, not \\\n\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/');\n }\n\n this.options = options;\n this.set = [];\n this.pattern = pattern;\n this.regexp = null;\n this.negate = false;\n this.comment = false;\n this.empty = false; // make the set of regexps etc.\n\n this.make();\n}\n\nMinimatch.prototype.debug = function () {};\n\nMinimatch.prototype.make = make;\n\nfunction make() {\n // don't do it more than once.\n if (this._made) return;\n var pattern = this.pattern;\n var options = this.options; // empty patterns and comments match nothing.\n\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true;\n return;\n }\n\n if (!pattern) {\n this.empty = true;\n return;\n } // step 1: figure out negation, etc.\n\n\n this.parseNegate(); // step 2: expand braces\n\n var set = this.globSet = this.braceExpand();\n if (options.debug) this.debug = console.error;\n this.debug(this.pattern, set); // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit);\n });\n this.debug(this.pattern, set); // glob --> regexps\n\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this);\n }, this);\n this.debug(this.pattern, set); // filter out everything that didn't compile properly.\n\n set = set.filter(function (s) {\n return s.indexOf(false) === -1;\n });\n this.debug(this.pattern, set);\n this.set = set;\n}\n\nMinimatch.prototype.parseNegate = parseNegate;\n\nfunction parseNegate() {\n var pattern = this.pattern;\n var negate = false;\n var options = this.options;\n var negateOffset = 0;\n if (options.nonegate) return;\n\n for (var i = 0, l = pattern.length; i < l && pattern.charAt(i) === '!'; i++) {\n negate = !negate;\n negateOffset++;\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset);\n this.negate = negate;\n} // Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\n\n\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options);\n};\n\nMinimatch.prototype.braceExpand = braceExpand;\n\nfunction braceExpand(pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options;\n } else {\n options = {};\n }\n }\n\n pattern = typeof pattern === 'undefined' ? this.pattern : pattern;\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern');\n }\n\n if (options.nobrace || !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern];\n }\n\n return expand(pattern);\n} // parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\n\nMinimatch.prototype.parse = parse;\nvar SUBPARSE = {};\n\nfunction parse(pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long');\n }\n\n var options = this.options; // shortcuts\n\n if (!options.noglobstar && pattern === '**') return GLOBSTAR;\n if (pattern === '') return '';\n var re = '';\n var hasMagic = !!options.nocase;\n var escaping = false; // ? => one single character\n\n var patternListStack = [];\n var negativeLists = [];\n var stateChar;\n var inClass = false;\n var reClassStart = -1;\n var classStart = -1; // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))' : '(?!\\\\.)';\n var self = this;\n\n function clearStateChar() {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star;\n hasMagic = true;\n break;\n\n case '?':\n re += qmark;\n hasMagic = true;\n break;\n\n default:\n re += '\\\\' + stateChar;\n break;\n }\n\n self.debug('clearStateChar %j %j', stateChar, re);\n stateChar = false;\n }\n }\n\n for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c); // skip over any that are escaped.\n\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c;\n escaping = false;\n continue;\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false;\n\n case '\\\\':\n clearStateChar();\n escaping = true;\n continue;\n // the various stateChar values\n // for the \"extglob\" stuff.\n\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c); // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n\n if (inClass) {\n this.debug(' in class');\n if (c === '!' && i === classStart + 1) c = '^';\n re += c;\n continue;\n } // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n\n\n self.debug('call clearStateChar %j', stateChar);\n clearStateChar();\n stateChar = c; // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n\n if (options.noext) clearStateChar();\n continue;\n\n case '(':\n if (inClass) {\n re += '(';\n continue;\n }\n\n if (!stateChar) {\n re += '\\\\(';\n continue;\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n }); // negation is (?:(?!js)[^/]*)\n\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:';\n this.debug('plType %j %j', stateChar, re);\n stateChar = false;\n continue;\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)';\n continue;\n }\n\n clearStateChar();\n hasMagic = true;\n var pl = patternListStack.pop(); // negation is (?:(?!js)[^/]*)\n // The others are (?:<pattern>)<type>\n\n re += pl.close;\n\n if (pl.type === '!') {\n negativeLists.push(pl);\n }\n\n pl.reEnd = re.length;\n continue;\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|';\n escaping = false;\n continue;\n }\n\n clearStateChar();\n re += '|';\n continue;\n // these are mostly the same in regexp and glob\n\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar();\n\n if (inClass) {\n re += '\\\\' + c;\n continue;\n }\n\n inClass = true;\n classStart = i;\n reClassStart = re.length;\n re += c;\n continue;\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c;\n escaping = false;\n continue;\n } // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n\n\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i);\n\n try {\n RegExp('[' + cs + ']');\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE);\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]';\n hasMagic = hasMagic || sp[1];\n inClass = false;\n continue;\n }\n } // finish up the class.\n\n\n hasMagic = true;\n inClass = false;\n re += c;\n continue;\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar();\n\n if (escaping) {\n // no need\n escaping = false;\n } else if (reSpecials[c] && !(c === '^' && inClass)) {\n re += '\\\\';\n }\n\n re += c;\n } // switch\n\n } // for\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n\n\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1);\n sp = this.parse(cs, SUBPARSE);\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0];\n hasMagic = hasMagic || sp[1];\n } // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n\n\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length);\n this.debug('setting tail', re, pl); // maybe some even number of \\, then maybe 1 \\, followed by a |\n\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\';\n } // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n\n\n return $1 + $1 + $2 + '|';\n });\n this.debug('tail=%j\\n %s', tail, tail, pl, re);\n var t = pl.type === '*' ? star : pl.type === '?' ? qmark : '\\\\' + pl.type;\n hasMagic = true;\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail;\n } // handle trailing things that only matter at the very end.\n\n\n clearStateChar();\n\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\';\n } // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n\n\n var addPatternStart = false;\n\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(':\n addPatternStart = true;\n } // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n\n\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n];\n var nlBefore = re.slice(0, nl.reStart);\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8);\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd);\n var nlAfter = re.slice(nl.reEnd);\n nlLast += nlAfter; // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n\n var openParensBefore = nlBefore.split('(').length - 1;\n var cleanAfter = nlAfter;\n\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '');\n }\n\n nlAfter = cleanAfter;\n var dollar = '';\n\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$';\n }\n\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast;\n re = newRe;\n } // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n\n\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re;\n }\n\n if (addPatternStart) {\n re = patternStart + re;\n } // parsing just a piece of a larger pattern.\n\n\n if (isSub === SUBPARSE) {\n return [re, hasMagic];\n } // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n\n\n if (!hasMagic) {\n return globUnescape(pattern);\n }\n\n var flags = options.nocase ? 'i' : '';\n\n try {\n var regExp = new RegExp('^' + re + '$', flags);\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.');\n }\n\n regExp._glob = pattern;\n regExp._src = re;\n return regExp;\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe();\n};\n\nMinimatch.prototype.makeRe = makeRe;\n\nfunction makeRe() {\n if (this.regexp || this.regexp === false) return this.regexp; // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n\n var set = this.set;\n\n if (!set.length) {\n this.regexp = false;\n return this.regexp;\n }\n\n var options = this.options;\n var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot;\n var flags = options.nocase ? 'i' : '';\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return p === GLOBSTAR ? twoStar : typeof p === 'string' ? regExpEscape(p) : p._src;\n }).join('\\\\\\/');\n }).join('|'); // must match entire pattern\n // ending in a * or ** will make it less strict.\n\n re = '^(?:' + re + ')$'; // can match anything, as long as it's not this.\n\n if (this.negate) re = '^(?!' + re + ').*$';\n\n try {\n this.regexp = new RegExp(re, flags);\n } catch (ex) {\n this.regexp = false;\n }\n\n return this.regexp;\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {};\n var mm = new Minimatch(pattern, options);\n list = list.filter(function (f) {\n return mm.match(f);\n });\n\n if (mm.options.nonull && !list.length) {\n list.push(pattern);\n }\n\n return list;\n};\n\nMinimatch.prototype.match = match;\n\nfunction match(f, partial) {\n this.debug('match', f, this.pattern); // short-circuit in the case of busted things.\n // comments, etc.\n\n if (this.comment) return false;\n if (this.empty) return f === '';\n if (f === '/' && partial) return true;\n var options = this.options; // windows: need to use /, not \\\n\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/');\n } // treat the test path as a set of pathparts.\n\n\n f = f.split(slashSplit);\n this.debug(this.pattern, 'split', f); // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set;\n this.debug(this.pattern, 'set', set); // Find the basename of the path by looking for the last non-empty segment\n\n var filename;\n var i;\n\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i];\n if (filename) break;\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i];\n var file = f;\n\n if (options.matchBase && pattern.length === 1) {\n file = [filename];\n }\n\n var hit = this.matchOne(file, pattern, partial);\n\n if (hit) {\n if (options.flipNegate) return true;\n return !this.negate;\n }\n } // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n\n\n if (options.flipNegate) return false;\n return this.negate;\n} // set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\n\n\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options;\n this.debug('matchOne', {\n 'this': this,\n file: file,\n pattern: pattern\n });\n this.debug('matchOne', file.length, pattern.length);\n\n for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n this.debug('matchOne loop');\n var p = pattern[pi];\n var f = file[fi];\n this.debug(pattern, p, f); // should be impossible.\n // some invalid regexp stuff in the set.\n\n if (p === false) return false;\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f]); // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n\n var fr = fi;\n var pr = pi + 1;\n\n if (pr === pl) {\n this.debug('** at the end'); // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' || !options.dot && file[fi].charAt(0) === '.') return false;\n }\n\n return true;\n } // ok, let's see if we can swallow whatever we can.\n\n\n while (fr < fl) {\n var swallowee = file[fr];\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee); // XXX remove this slice. Just pass the start index.\n\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee); // found a match.\n\n return true;\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' || !options.dot && swallowee.charAt(0) === '.') {\n this.debug('dot detected!', file, fr, pattern, pr);\n break;\n } // ** swallows a segment, and continue.\n\n\n this.debug('globstar swallow a segment, and continue');\n fr++;\n }\n } // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n\n\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr);\n if (fr === fl) return true;\n }\n\n return false;\n } // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n\n\n var hit;\n\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase();\n } else {\n hit = f === p;\n }\n\n this.debug('string match', p, f, hit);\n } else {\n hit = f.match(p);\n this.debug('pattern match', p, f, hit);\n }\n\n if (!hit) return false;\n } // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n // now either we fell off the end of the pattern, or we're done.\n\n\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true;\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial;\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = fi === fl - 1 && file[fi] === '';\n return emptyFileEnd;\n } // should be unreachable.\n\n\n throw new Error('wtf?');\n}; // replace stuff like \\* with *\n\n\nfunction globUnescape(s) {\n return s.replace(/\\\\(.)/g, '$1');\n}\n\nfunction regExpEscape(s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/minimatch/minimatch.js"],"names":["module","exports","minimatch","Minimatch","path","sep","require","er","GLOBSTAR","expand","plTypes","open","close","qmark","star","twoStarDot","twoStarNoDot","reSpecials","charSet","s","split","reduce","set","c","slashSplit","filter","pattern","options","p","i","list","ext","a","b","t","Object","keys","forEach","k","defaults","def","length","orig","m","TypeError","nocomment","charAt","trim","match","join","regexp","negate","comment","empty","make","prototype","debug","_made","parseNegate","globSet","braceExpand","console","error","globParts","map","si","parse","indexOf","negateOffset","nonegate","l","substr","nobrace","SUBPARSE","isSub","noglobstar","re","hasMagic","nocase","escaping","patternListStack","negativeLists","stateChar","inClass","reClassStart","classStart","patternStart","dot","self","clearStateChar","len","noext","push","type","start","reStart","pl","pop","reEnd","cs","substring","RegExp","sp","tail","slice","replace","_","$1","$2","addPatternStart","n","nl","nlBefore","nlFirst","nlLast","nlAfter","openParensBefore","cleanAfter","dollar","newRe","globUnescape","flags","regExp","_glob","_src","makeRe","twoStar","regExpEscape","ex","mm","f","nonull","partial","filename","file","matchBase","hit","matchOne","flipNegate","fi","pi","fl","fr","pr","swallowee","toLowerCase","emptyFileEnd","Error"],"mappings":"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","sourcesContent":["module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:<pattern>)<type>\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n"]},"metadata":{},"sourceType":"script"}