the reminder not showing content on the card at dashboard view and the quizes are hardcoded must move to the db make api's for it
62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
const SemVer = require('../classes/semver')
|
|
const Range = require('../classes/range')
|
|
const gt = require('../functions/gt')
|
|
|
|
const minVersion = (range, loose) => {
|
|
range = new Range(range, loose)
|
|
|
|
let minver = new SemVer('0.0.0')
|
|
if (range.test(minver)) {
|
|
return minver
|
|
}
|
|
|
|
minver = new SemVer('0.0.0-0')
|
|
if (range.test(minver)) {
|
|
return minver
|
|
}
|
|
|
|
minver = null
|
|
for (let i = 0; i < range.set.length; ++i) {
|
|
const comparators = range.set[i]
|
|
|
|
let setMin = null
|
|
comparators.forEach((comparator) => {
|
|
// Clone to avoid manipulating the comparator's semver object.
|
|
const compver = new SemVer(comparator.semver.version)
|
|
switch (comparator.operator) {
|
|
case '>':
|
|
if (compver.prerelease.length === 0) {
|
|
compver.patch++
|
|
} else {
|
|
compver.prerelease.push(0)
|
|
}
|
|
compver.raw = compver.format()
|
|
/* fallthrough */
|
|
case '':
|
|
case '>=':
|
|
if (!setMin || gt(compver, setMin)) {
|
|
setMin = compver
|
|
}
|
|
break
|
|
case '<':
|
|
case '<=':
|
|
/* Ignore maximum versions */
|
|
break
|
|
/* istanbul ignore next */
|
|
default:
|
|
throw new Error(`Unexpected operation: ${comparator.operator}`)
|
|
}
|
|
})
|
|
if (setMin && (!minver || gt(minver, setMin))) {
|
|
minver = setMin
|
|
}
|
|
}
|
|
|
|
if (minver && range.test(minver)) {
|
|
return minver
|
|
}
|
|
|
|
return null
|
|
}
|
|
module.exports = minVersion
|