7118d237bf5c413834462c58ea04e73d43543c37
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / semver / ranges / min-version.js
1 const SemVer = require('../classes/semver')
2 const Range = require('../classes/range')
3 const gt = require('../functions/gt')
4
5 const minVersion = (range, loose) => {
6   range = new Range(range, loose)
7
8   let minver = new SemVer('0.0.0')
9   if (range.test(minver)) {
10     return minver
11   }
12
13   minver = new SemVer('0.0.0-0')
14   if (range.test(minver)) {
15     return minver
16   }
17
18   minver = null
19   for (let i = 0; i < range.set.length; ++i) {
20     const comparators = range.set[i]
21
22     comparators.forEach((comparator) => {
23       // Clone to avoid manipulating the comparator's semver object.
24       const compver = new SemVer(comparator.semver.version)
25       switch (comparator.operator) {
26         case '>':
27           if (compver.prerelease.length === 0) {
28             compver.patch++
29           } else {
30             compver.prerelease.push(0)
31           }
32           compver.raw = compver.format()
33           /* fallthrough */
34         case '':
35         case '>=':
36           if (!minver || gt(minver, compver)) {
37             minver = compver
38           }
39           break
40         case '<':
41         case '<=':
42           /* Ignore maximum versions */
43           break
44         /* istanbul ignore next */
45         default:
46           throw new Error(`Unexpected operation: ${comparator.operator}`)
47       }
48     })
49   }
50
51   if (minver && range.test(minver)) {
52     return minver
53   }
54
55   return null
56 }
57 module.exports = minVersion