| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 'use strict';var path = require('path');var isNegated = require('is-negated-glob');var isAbsolute = require('is-absolute');module.exports = function(glob, options) {  // default options  var opts = options || {};  // ensure cwd is absolute  var cwd = path.resolve(opts.cwd ? opts.cwd : process.cwd());  cwd = unixify(cwd);  var rootDir = opts.root;  // if `options.root` is defined, ensure it's absolute  if (rootDir) {    rootDir = unixify(rootDir);    if (process.platform === 'win32' || !isAbsolute(rootDir)) {      rootDir = unixify(path.resolve(rootDir));    }  }  // trim starting ./ from glob patterns  if (glob.slice(0, 2) === './') {    glob = glob.slice(2);  }  // when the glob pattern is only a . use an empty string  if (glob.length === 1 && glob === '.') {    glob = '';  }  // store last character before glob is modified  var suffix = glob.slice(-1);  // check to see if glob is negated (and not a leading negated-extglob)  var ing = isNegated(glob);  glob = ing.pattern;  // make glob absolute  if (rootDir && glob.charAt(0) === '/') {    glob = join(rootDir, glob);  } else if (!isAbsolute(glob) || glob.slice(0, 1) === '\\') {    glob = join(cwd, glob);  }  // if glob had a trailing `/`, re-add it now in case it was removed  if (suffix === '/' && glob.slice(-1) !== '/') {    glob += '/';  }  // re-add leading `!` if it was removed  return ing.negated ? '!' + glob : glob;};function unixify(filepath) {  return filepath.replace(/\\/g, '/');}function join(dir, glob) {  if (dir.charAt(dir.length - 1) === '/') {    dir = dir.slice(0, -1);  }  if (glob.charAt(0) === '/') {    glob = glob.slice(1);  }  if (!glob) return dir;  return dir + '/' + glob;}
 |