Disable the confirmation dialog when deleting files in the VS Code explorer to streamline the development workflow and reduce friction during file management operations.
83 lines
2.2 KiB
JavaScript
83 lines
2.2 KiB
JavaScript
'use strict'
|
|
|
|
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
|