122 lines
3.2 KiB
JavaScript
122 lines
3.2 KiB
JavaScript
"use strict";
|
|
|
|
require("core-js/modules/es.symbol");
|
|
|
|
require("core-js/modules/es.symbol.description");
|
|
|
|
require("core-js/modules/es.symbol.iterator");
|
|
|
|
require("core-js/modules/es.array.for-each");
|
|
|
|
require("core-js/modules/es.array.iterator");
|
|
|
|
require("core-js/modules/es.object.to-string");
|
|
|
|
require("core-js/modules/es.string.iterator");
|
|
|
|
require("core-js/modules/web.dom-collections.for-each");
|
|
|
|
require("core-js/modules/web.dom-collections.iterator");
|
|
|
|
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
|
|
var SemVer = require('../classes/semver');
|
|
|
|
var Comparator = require('../classes/comparator');
|
|
|
|
var ANY = Comparator.ANY;
|
|
|
|
var Range = require('../classes/range');
|
|
|
|
var satisfies = require('../functions/satisfies');
|
|
|
|
var gt = require('../functions/gt');
|
|
|
|
var lt = require('../functions/lt');
|
|
|
|
var lte = require('../functions/lte');
|
|
|
|
var gte = require('../functions/gte');
|
|
|
|
var outside = function outside(version, range, hilo, options) {
|
|
version = new SemVer(version, options);
|
|
range = new Range(range, options);
|
|
var gtfn, ltefn, ltfn, comp, ecomp;
|
|
|
|
switch (hilo) {
|
|
case '>':
|
|
gtfn = gt;
|
|
ltefn = lte;
|
|
ltfn = lt;
|
|
comp = '>';
|
|
ecomp = '>=';
|
|
break;
|
|
|
|
case '<':
|
|
gtfn = lt;
|
|
ltefn = gte;
|
|
ltfn = gt;
|
|
comp = '<';
|
|
ecomp = '<=';
|
|
break;
|
|
|
|
default:
|
|
throw new TypeError('Must provide a hilo val of "<" or ">"');
|
|
} // If it satisifes the range it is not outside
|
|
|
|
|
|
if (satisfies(version, range, options)) {
|
|
return false;
|
|
} // From now on, variable terms are as if we're in "gtr" mode.
|
|
// but note that everything is flipped for the "ltr" function.
|
|
|
|
|
|
var _loop = function _loop(i) {
|
|
var comparators = range.set[i];
|
|
var high = null;
|
|
var low = null;
|
|
comparators.forEach(function (comparator) {
|
|
if (comparator.semver === ANY) {
|
|
comparator = new Comparator('>=0.0.0');
|
|
}
|
|
|
|
high = high || comparator;
|
|
low = low || comparator;
|
|
|
|
if (gtfn(comparator.semver, high.semver, options)) {
|
|
high = comparator;
|
|
} else if (ltfn(comparator.semver, low.semver, options)) {
|
|
low = comparator;
|
|
}
|
|
}); // If the edge version comparator has a operator then our version
|
|
// isn't outside it
|
|
|
|
if (high.operator === comp || high.operator === ecomp) {
|
|
return {
|
|
v: false
|
|
};
|
|
} // If the lowest version comparator has an operator and our version
|
|
// is less than it then it isn't higher than the range
|
|
|
|
|
|
if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
|
|
return {
|
|
v: false
|
|
};
|
|
} else if (low.operator === ecomp && ltfn(version, low.semver)) {
|
|
return {
|
|
v: false
|
|
};
|
|
}
|
|
};
|
|
|
|
for (var i = 0; i < range.set.length; ++i) {
|
|
var _ret = _loop(i);
|
|
|
|
if (_typeof(_ret) === "object") return _ret.v;
|
|
}
|
|
|
|
return true;
|
|
};
|
|
|
|
module.exports = outside; |