Buckets:
| const SemVer = require('../classes/semver') | |
| const Comparator = require('../classes/comparator') | |
| const { ANY } = Comparator | |
| const Range = require('../classes/range') | |
| const satisfies = require('../functions/satisfies') | |
| const gt = require('../functions/gt') | |
| const lt = require('../functions/lt') | |
| const lte = require('../functions/lte') | |
| const gte = require('../functions/gte') | |
| const outside = (version, range, hilo, options) => { | |
| version = new SemVer(version, options) | |
| range = new Range(range, options) | |
| let 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 satisfies 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. | |
| for (let i = 0; i < range.set.length; ++i) { | |
| const comparators = range.set[i] | |
| let high = null | |
| let low = null | |
| comparators.forEach((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 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 false | |
| } else if (low.operator === ecomp && ltfn(version, low.semver)) { | |
| return false | |
| } | |
| } | |
| return true | |
| } | |
| module.exports = outside | |
Xet Storage Details
- Size:
- 2.2 kB
- Xet hash:
- 7175519a7d038a619d193b93c4c9a8b3bc2d5859b68482da32b7f925e8ec6ece
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.