-
Notifications
You must be signed in to change notification settings - Fork 66.8k
Expand file tree
/
Copy pathversion-satisfies-range.ts
More file actions
29 lines (24 loc) · 1.07 KB
/
version-satisfies-range.ts
File metadata and controls
29 lines (24 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import semver from 'semver'
// Where "release" is a release number, like `3.1` for Enterprise Server,
// and "range" is a semver range operator with another number, like `<=3.2`.
export default function versionSatisfiesRange(release: string | undefined, range: string): boolean {
// Handle undefined release
if (!release) {
return false
}
// workaround for Enterprise Server 11.10.340 because we can't use semver to
// compare it to 2.x like we can with 2.0+
if (release === '11.10.340') return range.startsWith('<')
// If the release is '*', we want it to evaluate to false against the range 'next'
// but to true against itself ('*'). Unfortunately by default it will evaluate to
// true against 'next'. So we have to do a hack here and replace it with a
// dummy value of '1.0', which will get the results we want.
if (release === '*') {
release = '1.0'
}
const coercedRelease = semver.coerce(release)
if (!coercedRelease) {
throw new Error(`Unable to coerce release version: ${release}`)
}
return semver.satisfies(coercedRelease, range)
}