CoolFace
Apppublic

strong-tie/inbound-calls

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
outside.js81 linesDownload Raw Back to ranges
1const SemVer = require('../classes/semver')2const Comparator = require('../classes/comparator')3const { ANY } = Comparator4const Range = require('../classes/range')5const satisfies = require('../functions/satisfies')6const gt = require('../functions/gt')7const lt = require('../functions/lt')8const lte = require('../functions/lte')9const gte = require('../functions/gte')10 11const outside = (version, range, hilo, options) => {12  version = new SemVer(version, options)13  range = new Range(range, options)14 15  let gtfn, ltefn, ltfn, comp, ecomp16  switch (hilo) {17    case '>':18      gtfn = gt19      ltefn = lte20      ltfn = lt21      comp = '>'22      ecomp = '>='23      break24    case '<':25      gtfn = lt26      ltefn = gte27      ltfn = gt28      comp = '<'29      ecomp = '<='30      break31    default:32      throw new TypeError('Must provide a hilo val of "<" or ">"')33  }34 35  // If it satisfies the range it is not outside36  if (satisfies(version, range, options)) {37    return false38  }39 40  // From now on, variable terms are as if we're in "gtr" mode.41  // but note that everything is flipped for the "ltr" function.42 43  for (let i = 0; i < range.set.length; ++i) {44    const comparators = range.set[i]45 46    let high = null47    let low = null48 49    comparators.forEach((comparator) => {50      if (comparator.semver === ANY) {51        comparator = new Comparator('>=0.0.0')52      }53      high = high || comparator54      low = low || comparator55      if (gtfn(comparator.semver, high.semver, options)) {56        high = comparator57      } else if (ltfn(comparator.semver, low.semver, options)) {58        low = comparator59      }60    })61 62    // If the edge version comparator has a operator then our version63    // isn't outside it64    if (high.operator === comp || high.operator === ecomp) {65      return false66    }67 68    // If the lowest version comparator has an operator and our version69    // is less than it then it isn't higher than the range70    if ((!low.operator || low.operator === comp) &&71        ltefn(version, low.semver)) {72      return false73    } else if (low.operator === ecomp && ltfn(version, low.semver)) {74      return false75    }76  }77  return true78}79 80module.exports = outside81