npm-upgrade
Version:
Interactive CLI utility to easily update outdated NPM dependencies
26 lines (25 loc) • 1.42 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.globToRegexp = globToRegexp;
exports.makeFilterFunction = makeFilterFunction;
var _partition2 = _interopRequireDefault(require("lodash/fp/partition"));
var _compact2 = _interopRequireDefault(require("lodash/fp/compact"));
var _split2 = _interopRequireDefault(require("lodash/fp/split"));
var _flow2 = _interopRequireDefault(require("lodash/fp/flow"));
var _escapeRegExp2 = _interopRequireDefault(require("lodash/escapeRegExp"));
function globToRegexp(glob, flags) {
const regexp = glob.split(/\*+/).map(_escapeRegExp2.default).join('.*?');
return new RegExp(`^${regexp}$`, flags);
}
function makeFilterFunction(filterStr = '') {
let [excludeFilters, includeFilters] = (0, _flow2.default)((0, _split2.default)(/\s+/), _compact2.default, (0, _partition2.default)(filter => filter[0] === '!'))(filterStr);
if (!includeFilters.length) {
includeFilters.push('*');
}
includeFilters = includeFilters.map(filter => globToRegexp(filter, 'i')).map(filterRegexp => str => filterRegexp.test(str));
excludeFilters = excludeFilters.map(filter => globToRegexp(filter.slice(1), 'i')).map(filterRegexp => str => filterRegexp.test(str));
return str => excludeFilters.every(filter => !filter(str)) && includeFilters.some(filter => filter(str));
}