UNPKG

sync-glob

Version:

Synchronize files and folders locally by glob patterns, watch option included.

62 lines (44 loc) 1.49 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _isGlob = require('./is-glob'); var _isGlob2 = _interopRequireDefault(_isGlob); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var reDir = /\/|\\/; var globBase = function globBase(glob) { if (!Array.isArray(glob)) { // eslint-disable-next-line no-param-reassign glob = [glob]; } return glob.reduce(function (base, pattern) { if (pattern.charAt(0) === '!') { return base; } var index = (0, _isGlob2.default)(pattern); var foundGlob = index > -1; var isDir = void 0; if (index > -1) { var charBeforeGlob = pattern.charAt(index - 1); isDir = reDir.test(charBeforeGlob); // eslint-disable-next-line no-param-reassign pattern = pattern.substring(0, index); } if (pattern) { if (foundGlob && !isDir || !foundGlob && _fs2.default.statSync(pattern).isFile()) { // eslint-disable-next-line no-param-reassign pattern = _path2.default.dirname(pattern); } else if (reDir.test(pattern.charAt(pattern.length - 1))) { // eslint-disable-next-line no-param-reassign pattern = pattern.slice(0, -1); } } base.push(pattern); return base; }, []); }; exports.default = globBase;