| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | 
							- 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
 
 
  |