source: frontend/node_modules/semver/ranges/outside.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.2 KB
Line 
1'use strict'
2
3const SemVer = require('../classes/semver')
4const Comparator = require('../classes/comparator')
5const { ANY } = Comparator
6const Range = require('../classes/range')
7const satisfies = require('../functions/satisfies')
8const gt = require('../functions/gt')
9const lt = require('../functions/lt')
10const lte = require('../functions/lte')
11const gte = require('../functions/gte')
12
13const outside = (version, range, hilo, options) => {
14 version = new SemVer(version, options)
15 range = new Range(range, options)
16
17 let gtfn, ltefn, ltfn, comp, ecomp
18 switch (hilo) {
19 case '>':
20 gtfn = gt
21 ltefn = lte
22 ltfn = lt
23 comp = '>'
24 ecomp = '>='
25 break
26 case '<':
27 gtfn = lt
28 ltefn = gte
29 ltfn = gt
30 comp = '<'
31 ecomp = '<='
32 break
33 default:
34 throw new TypeError('Must provide a hilo val of "<" or ">"')
35 }
36
37 // If it satisfies the range it is not outside
38 if (satisfies(version, range, options)) {
39 return false
40 }
41
42 // From now on, variable terms are as if we're in "gtr" mode.
43 // but note that everything is flipped for the "ltr" function.
44
45 for (let i = 0; i < range.set.length; ++i) {
46 const comparators = range.set[i]
47
48 let high = null
49 let low = null
50
51 comparators.forEach((comparator) => {
52 if (comparator.semver === ANY) {
53 comparator = new Comparator('>=0.0.0')
54 }
55 high = high || comparator
56 low = low || comparator
57 if (gtfn(comparator.semver, high.semver, options)) {
58 high = comparator
59 } else if (ltfn(comparator.semver, low.semver, options)) {
60 low = comparator
61 }
62 })
63
64 // If the edge version comparator has a operator then our version
65 // isn't outside it
66 if (high.operator === comp || high.operator === ecomp) {
67 return false
68 }
69
70 // If the lowest version comparator has an operator and our version
71 // is less than it then it isn't higher than the range
72 if ((!low.operator || low.operator === comp) &&
73 ltefn(version, low.semver)) {
74 return false
75 } else if (low.operator === ecomp && ltfn(version, low.semver)) {
76 return false
77 }
78 }
79 return true
80}
81
82module.exports = outside
Note: See TracBrowser for help on using the repository browser.