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

1 line
62 KiB
JSON

{"ast":null,"code":"// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\nmodule.exports = glob;\n\nvar fs = require('fs');\n\nvar rp = require('fs.realpath');\n\nvar minimatch = require('minimatch');\n\nvar Minimatch = minimatch.Minimatch;\n\nvar inherits = require('inherits');\n\nvar EE = require('events').EventEmitter;\n\nvar path = require('path');\n\nvar assert = require('assert');\n\nvar isAbsolute = require('path-is-absolute');\n\nvar globSync = require('./sync.js');\n\nvar common = require('./common.js');\n\nvar setopts = common.setopts;\nvar ownProp = common.ownProp;\n\nvar inflight = require('inflight');\n\nvar util = require('util');\n\nvar childrenIgnored = common.childrenIgnored;\nvar isIgnored = common.isIgnored;\n\nvar once = require('once');\n\nfunction glob(pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {};\n if (!options) options = {};\n\n if (options.sync) {\n if (cb) throw new TypeError('callback provided to sync glob');\n return globSync(pattern, options);\n }\n\n return new Glob(pattern, options, cb);\n}\n\nglob.sync = globSync;\nvar GlobSync = glob.GlobSync = globSync.GlobSync; // old api surface\n\nglob.glob = glob;\n\nfunction extend(origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin;\n }\n\n var keys = Object.keys(add);\n var i = keys.length;\n\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n\n return origin;\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_);\n options.noprocess = true;\n var g = new Glob(pattern, options);\n var set = g.minimatch.set;\n if (!pattern) return false;\n if (set.length > 1) return true;\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string') return true;\n }\n\n return false;\n};\n\nglob.Glob = Glob;\ninherits(Glob, EE);\n\nfunction Glob(pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = null;\n }\n\n if (options && options.sync) {\n if (cb) throw new TypeError('callback provided to sync glob');\n return new GlobSync(pattern, options);\n }\n\n if (!(this instanceof Glob)) return new Glob(pattern, options, cb);\n setopts(this, pattern, options);\n this._didRealPath = false; // process each pattern in the minimatch set\n\n var n = this.minimatch.set.length; // The matches are stored as {<filename>: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n\n this.matches = new Array(n);\n\n if (typeof cb === 'function') {\n cb = once(cb);\n this.on('error', cb);\n this.on('end', function (matches) {\n cb(null, matches);\n });\n }\n\n var self = this;\n this._processing = 0;\n this._emitQueue = [];\n this._processQueue = [];\n this.paused = false;\n if (this.noprocess) return this;\n if (n === 0) return done();\n var sync = true;\n\n for (var i = 0; i < n; i++) {\n this._process(this.minimatch.set[i], i, false, done);\n }\n\n sync = false;\n\n function done() {\n --self._processing;\n\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish();\n });\n } else {\n self._finish();\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob);\n if (this.aborted) return;\n if (this.realpath && !this._didRealpath) return this._realpath();\n common.finish(this);\n this.emit('end', this.found);\n};\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath) return;\n this._didRealpath = true;\n var n = this.matches.length;\n if (n === 0) return this._finish();\n var self = this;\n\n for (var i = 0; i < this.matches.length; i++) this._realpathSet(i, next);\n\n function next() {\n if (--n === 0) self._finish();\n }\n};\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index];\n if (!matchset) return cb();\n var found = Object.keys(matchset);\n var self = this;\n var n = found.length;\n if (n === 0) return cb();\n var set = this.matches[index] = Object.create(null);\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p);\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er) set[real] = true;else if (er.syscall === 'stat') set[p] = true;else self.emit('error', er); // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set;\n cb();\n }\n });\n });\n};\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p);\n};\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f);\n};\n\nGlob.prototype.abort = function () {\n this.aborted = true;\n this.emit('abort');\n};\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true;\n this.emit('pause');\n }\n};\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume');\n this.paused = false;\n\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0);\n\n this._emitQueue.length = 0;\n\n for (var i = 0; i < eq.length; i++) {\n var e = eq[i];\n\n this._emitMatch(e[0], e[1]);\n }\n }\n\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0);\n\n this._processQueue.length = 0;\n\n for (var i = 0; i < pq.length; i++) {\n var p = pq[i];\n this._processing--;\n\n this._process(p[0], p[1], p[2], p[3]);\n }\n }\n }\n};\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob);\n assert(typeof cb === 'function');\n if (this.aborted) return;\n this._processing++;\n\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb]);\n\n return;\n } //console.error('PROCESS %d', this._processing, pattern)\n // Get the first [n] parts of pattern that are all strings.\n\n\n var n = 0;\n\n while (typeof pattern[n] === 'string') {\n n++;\n } // now n is the index of the first one that is *not* a string.\n // see if there's anything else\n\n\n var prefix;\n\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb);\n\n return;\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null;\n break;\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/');\n break;\n }\n\n var remain = pattern.slice(n); // get the list of entries.\n\n var read;\n if (prefix === null) read = '.';else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix)) prefix = '/' + prefix;\n read = prefix;\n } else read = prefix;\n\n var abs = this._makeAbs(read); //if ignored, skip _processing\n\n\n if (childrenIgnored(this, read)) return cb();\n var isGlobStar = remain[0] === minimatch.GLOBSTAR;\n if (isGlobStar) this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb);else this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb);\n};\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this;\n\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb);\n });\n};\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n // if the abs isn't a dir, then nothing can match!\n if (!entries) return cb(); // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n\n var pn = remain[0];\n var negate = !!this.minimatch.negate;\n var rawGlob = pn._glob;\n var dotOk = this.dot || rawGlob.charAt(0) === '.';\n var matchedEntries = [];\n\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i];\n\n if (e.charAt(0) !== '.' || dotOk) {\n var m;\n\n if (negate && !prefix) {\n m = !e.match(pn);\n } else {\n m = e.match(pn);\n }\n\n if (m) matchedEntries.push(e);\n }\n } //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n\n var len = matchedEntries.length; // If there are no matched entries, then nothing matches.\n\n if (len === 0) return cb(); // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index]) this.matches[index] = Object.create(null);\n\n for (var i = 0; i < len; i++) {\n var e = matchedEntries[i];\n\n if (prefix) {\n if (prefix !== '/') e = prefix + '/' + e;else e = prefix + e;\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e);\n }\n\n this._emitMatch(index, e);\n } // This was the last one, and no stats were needed\n\n\n return cb();\n } // now test all matched entries as stand-ins for that part\n // of the pattern.\n\n\n remain.shift();\n\n for (var i = 0; i < len; i++) {\n var e = matchedEntries[i];\n var newPattern;\n\n if (prefix) {\n if (prefix !== '/') e = prefix + '/' + e;else e = prefix + e;\n }\n\n this._process([e].concat(remain), index, inGlobStar, cb);\n }\n\n cb();\n};\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted) return;\n if (isIgnored(this, e)) return;\n\n if (this.paused) {\n this._emitQueue.push([index, e]);\n\n return;\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e);\n if (this.mark) e = this._mark(e);\n if (this.absolute) e = abs;\n if (this.matches[index][e]) return;\n\n if (this.nodir) {\n var c = this.cache[abs];\n if (c === 'DIR' || Array.isArray(c)) return;\n }\n\n this.matches[index][e] = true;\n var st = this.statCache[abs];\n if (st) this.emit('stat', e, st);\n this.emit('match', e);\n};\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted) return; // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n\n if (this.follow) return this._readdir(abs, false, cb);\n var lstatkey = 'lstat\\0' + abs;\n var self = this;\n var lstatcb = inflight(lstatkey, lstatcb_);\n if (lstatcb) fs.lstat(abs, lstatcb);\n\n function lstatcb_(er, lstat) {\n if (er && er.code === 'ENOENT') return cb();\n var isSym = lstat && lstat.isSymbolicLink();\n self.symlinks[abs] = isSym; // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE';\n cb();\n } else self._readdir(abs, false, cb);\n }\n};\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted) return;\n cb = inflight('readdir\\0' + abs + '\\0' + inGlobStar, cb);\n if (!cb) return; //console.error('RD %j %j', +inGlobStar, abs)\n\n if (inGlobStar && !ownProp(this.symlinks, abs)) return this._readdirInGlobStar(abs, cb);\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs];\n if (!c || c === 'FILE') return cb();\n if (Array.isArray(c)) return cb(null, c);\n }\n\n var self = this;\n fs.readdir(abs, readdirCb(this, abs, cb));\n};\n\nfunction readdirCb(self, abs, cb) {\n return function (er, entries) {\n if (er) self._readdirError(abs, er, cb);else self._readdirEntries(abs, entries, cb);\n };\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted) return; // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i];\n if (abs === '/') e = abs + e;else e = abs + '/' + e;\n this.cache[e] = true;\n }\n }\n\n this.cache[abs] = entries;\n return cb(null, entries);\n};\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted) return; // handle errors, and cache the information\n\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n\n case 'ENOTDIR':\n // totally normal. means it *does* exist.\n var abs = this._makeAbs(f);\n\n this.cache[abs] = 'FILE';\n\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd);\n error.path = this.cwd;\n error.code = er.code;\n this.emit('error', error);\n this.abort();\n }\n\n break;\n\n case 'ENOENT': // not terribly unusual\n\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false;\n break;\n\n default:\n // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false;\n\n if (this.strict) {\n this.emit('error', er); // If the error is handled, then we abort\n // if not, we threw out of here\n\n this.abort();\n }\n\n if (!this.silent) console.error('glob error', er);\n break;\n }\n\n return cb();\n};\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this;\n\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb);\n });\n};\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries) return cb(); // test without the globstar, and with every child both below\n // and replacing the globstar.\n\n var remainWithoutGlobStar = remain.slice(1);\n var gspref = prefix ? [prefix] : [];\n var noGlobStar = gspref.concat(remainWithoutGlobStar); // the noGlobStar pattern exits the inGlobStar state\n\n this._process(noGlobStar, index, false, cb);\n\n var isSym = this.symlinks[abs];\n var len = entries.length; // If it's a symlink, and we're in a globstar, then stop\n\n if (isSym && inGlobStar) return cb();\n\n for (var i = 0; i < len; i++) {\n var e = entries[i];\n if (e.charAt(0) === '.' && !this.dot) continue; // these two cases enter the inGlobStar state\n\n var instead = gspref.concat(entries[i], remainWithoutGlobStar);\n\n this._process(instead, index, true, cb);\n\n var below = gspref.concat(entries[i], remain);\n\n this._process(below, index, true, cb);\n }\n\n cb();\n};\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this;\n\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb);\n });\n};\n\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n //console.error('ps2', prefix, exists)\n if (!this.matches[index]) this.matches[index] = Object.create(null); // If it doesn't exist, then just mark the lack of results\n\n if (!exists) return cb();\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix);\n\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix);\n } else {\n prefix = path.resolve(this.root, prefix);\n if (trail) prefix += '/';\n }\n }\n\n if (process.platform === 'win32') prefix = prefix.replace(/\\\\/g, '/'); // Mark this as a match\n\n this._emitMatch(index, prefix);\n\n cb();\n}; // Returns either 'DIR', 'FILE', or false\n\n\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f);\n\n var needDir = f.slice(-1) === '/';\n if (f.length > this.maxLength) return cb();\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs];\n if (Array.isArray(c)) c = 'DIR'; // It exists, but maybe not how we need it\n\n if (!needDir || c === 'DIR') return cb(null, c);\n if (needDir && c === 'FILE') return cb(); // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists;\n var stat = this.statCache[abs];\n\n if (stat !== undefined) {\n if (stat === false) return cb(null, stat);else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE';\n if (needDir && type === 'FILE') return cb();else return cb(null, type, stat);\n }\n }\n\n var self = this;\n var statcb = inflight('stat\\0' + abs, lstatcb_);\n if (statcb) fs.lstat(abs, statcb);\n\n function lstatcb_(er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er) self._stat2(f, abs, null, lstat, cb);else self._stat2(f, abs, er, stat, cb);\n });\n } else {\n self._stat2(f, abs, er, lstat, cb);\n }\n }\n};\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false;\n return cb();\n }\n\n var needDir = f.slice(-1) === '/';\n this.statCache[abs] = stat;\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory()) return cb(null, false, stat);\n var c = true;\n if (stat) c = stat.isDirectory() ? 'DIR' : 'FILE';\n this.cache[abs] = this.cache[abs] || c;\n if (needDir && c === 'FILE') return cb();\n return cb(null, c, stat);\n};","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/glob/glob.js"],"names":["module","exports","glob","fs","require","rp","minimatch","Minimatch","inherits","EE","EventEmitter","path","assert","isAbsolute","globSync","common","setopts","ownProp","inflight","util","childrenIgnored","isIgnored","once","pattern","options","cb","sync","TypeError","Glob","GlobSync","extend","origin","add","keys","Object","i","length","hasMagic","options_","noprocess","g","set","j","_didRealPath","n","matches","Array","on","self","_processing","_emitQueue","_processQueue","paused","done","_process","process","nextTick","_finish","prototype","aborted","realpath","_didRealpath","_realpath","finish","emit","found","_realpathSet","next","index","matchset","create","forEach","p","_makeAbs","realpathCache","er","real","syscall","_mark","mark","f","makeAbs","abort","pause","resume","eq","slice","e","_emitMatch","pq","inGlobStar","push","prefix","_processSimple","join","remain","read","abs","isGlobStar","GLOBSTAR","_processGlobStar","_processReaddir","_readdir","entries","_processReaddir2","pn","negate","rawGlob","_glob","dotOk","dot","charAt","matchedEntries","m","match","len","stat","nomount","root","shift","newPattern","concat","absolute","nodir","c","cache","isArray","st","statCache","_readdirInGlobStar","follow","lstatkey","lstatcb","lstatcb_","lstat","code","isSym","isSymbolicLink","symlinks","isDirectory","readdir","readdirCb","_readdirError","_readdirEntries","cwdAbs","error","Error","cwd","strict","silent","console","_processGlobStar2","remainWithoutGlobStar","gspref","noGlobStar","instead","below","_stat","exists","_processSimple2","trail","test","resolve","platform","replace","needDir","maxLength","undefined","type","statcb","_stat2"],"mappings":"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","sourcesContent":["// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {<filename>: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n"]},"metadata":{},"sourceType":"script"}