Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
min-version.js64 linesDownload Raw Back to ranges
1'use strict'
2
3const SemVer = require('../classes/semver')
4const Range = require('../classes/range')
5const gt = require('../functions/gt')
6
7const minVersion = (range, loose) => {
8  range = new Range(range, loose)
9
10  let minver = new SemVer('0.0.0')
11  if (range.test(minver)) {
12    return minver
13  }
14
15  minver = new SemVer('0.0.0-0')
16  if (range.test(minver)) {
17    return minver
18  }
19
20  minver = null
21  for (let i = 0; i < range.set.length; ++i) {
22    const comparators = range.set[i]
23
24    let setMin = null
25    comparators.forEach((comparator) => {
26      // Clone to avoid manipulating the comparator's semver object.
27      const compver = new SemVer(comparator.semver.version)
28      switch (comparator.operator) {
29        case '>':
30          if (compver.prerelease.length === 0) {
31            compver.patch++
32          } else {
33            compver.prerelease.push(0)
34          }
35          compver.raw = compver.format()
36          /* fallthrough */
37        case '':
38        case '>=':
39          if (!setMin || gt(compver, setMin)) {
40            setMin = compver
41          }
42          break
43        case '<':
44        case '<=':
45          /* Ignore maximum versions */
46          break
47        /* istanbul ignore next */
48        default:
49          throw new Error(`Unexpected operation: ${comparator.operator}`)
50      }
51    })
52    if (setMin && (!minver || gt(minver, setMin))) {
53      minver = setMin
54    }
55  }
56
57  if (minver && range.test(minver)) {
58    return minver
59  }
60
61  return null
62}
63module.exports = minVersion
64 
codekingpro/portable-devtools · Team Ai