| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- 'use strict';
 
- var isGlob = require('is-glob');
 
- var pathPosixDirname = require('path').posix.dirname;
 
- var isWin32 = require('os').platform() === 'win32';
 
- var slash = '/';
 
- var backslash = /\\/g;
 
- var enclosure = /[\{\[].*[\}\]]$/;
 
- var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/;
 
- var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g;
 
- /**
 
-  * @param {string} str
 
-  * @param {Object} opts
 
-  * @param {boolean} [opts.flipBackslashes=true]
 
-  * @returns {string}
 
-  */
 
- module.exports = function globParent(str, opts) {
 
-   var options = Object.assign({ flipBackslashes: true }, opts);
 
-   // flip windows path separators
 
-   if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {
 
-     str = str.replace(backslash, slash);
 
-   }
 
-   // special case for strings ending in enclosure containing path separator
 
-   if (enclosure.test(str)) {
 
-     str += slash;
 
-   }
 
-   // preserves full path in case of trailing path separator
 
-   str += 'a';
 
-   // remove path parts that are globby
 
-   do {
 
-     str = pathPosixDirname(str);
 
-   } while (isGlob(str) || globby.test(str));
 
-   // remove escape chars and return result
 
-   return str.replace(escaped, '$1');
 
- };
 
 
  |