Modules | @vltpkg/semver
Classes
Comparator
Class used to parse the ||
separated portions
of a range, and evaluate versions against it.
This does most of the heavy lifting of range testing, and provides little affordance for improperly formatted strings. It should be considered an internal class, and usually not accessed directly.
Constructors
new Comparator()
Parameters
• comp: string
• includePrerelease: boolean
= false
Returns
Defined in
comparator.ts:160
Properties
includePrerelease
does this range include prereleases, even when they do not match the tuple in the comparator?
Defined in
comparator.ts:128
isAny
true if this comparator is a '*'
type of range.
Note that it still will not match versions with a prerelease value,
unless the tuple in the version matches the tuple provided to the
comparator, and the comparator version also has a prerelease value,
unless includePrerelease
is set.
Defined in
comparator.ts:148
isNone
true if this comparator can not match anything
Defined in
comparator.ts:139
raw
raw string used to create this comparator
Defined in
comparator.ts:130
tokens
tokens extracted from the raw string input
Defined in
comparator.ts:132
tuples
Either the any
comparator, the none
comparator, or an operator
and a ParsedXRange
Defined in
comparator.ts:137
Methods
test()
return true if the version is a match for this comparator
Parameters
• v: Version
Returns
boolean
Defined in
comparator.ts:634
toString()
the canonical strict simplified parsed form of this constructor
Returns
string
Defined in
comparator.ts:151
Range
A representation of a semver range, used to test versions.
Includes a set of comparators representing the ||
-separated
sections of the range string
Constructors
new Range()
Parameters
• range: string
• includePrerelease: boolean
= false
Returns
Defined in
range.ts:36
Properties
includePrerelease
true if all prerelease versions should be included
Defined in
range.ts:31
isAny
true if the range is *
Defined in
range.ts:16
isSingle
true if the range is a single semver version
Defined in
range.ts:19
raw
raw string used to create this Range
Defined in
range.ts:13
set
set of Comparator objects representing the ||
-separated sections
of the range. If at least one of these matches, then the version is a
match.
Defined in
range.ts:28
Methods
test()
test a Version against the range
Parameters
• v: Version
Returns
boolean
Defined in
range.ts:67
toString()
return the simplified canonical form of this range
Returns
string
Defined in
range.ts:72
Version
A parsed object representation of a SemVer version string
This is a bit less forgiving than node-semver, in that prerelease versions MUST start with ’-’. Otherwise, the allowed syntax is identical.
Constructors
new Version()
Parameters
• version: string
• major: number
• minor: number
• patch: number
• prerelease: undefined
| string
• build: undefined
| string
Returns
Defined in
version.ts:143
Properties
build?
List of '.'
-separated strings in the build
section.
This is undefined if the version does not have a build.
Defined in
version.ts:87
major
major version number
Defined in
version.ts:70
minor
minor version number
Defined in
version.ts:72
patch
patch version number
Defined in
version.ts:74
prerelease?
List of '.'
-separated strings and numbers indicating that this
version is a prerelease.
This is undefined if the version does not have a prerelease section.
Defined in
version.ts:81
raw
raw string provided to create this Version
Defined in
version.ts:67
Methods
compare()
Return 1 if this is > the provided version, -1 if we’re less, or 0 if they are equal.
No special handling for prerelease versions, this is just a precedence comparison.
This can be used to sort a list of versions by precedence:
Parameters
• v: Version
Returns
-1
| 0
| 1
Defined in
version.ts:194
equals()
true if these two versions have equal SemVer precedence
Parameters
• v: Version
Returns
boolean
Defined in
version.ts:255
greaterThan()
true if this version is > the argument
Parameters
• v: Version
Returns
boolean
Defined in
version.ts:235
greaterThanEqual()
true if this version is >= the argument
Parameters
• v: Version
Returns
boolean
Defined in
version.ts:240
inc()
Increment the version in place, in the manner specified.
Part behaviors:
-
'major'
If the version is aM.0.0-...
version with a prerelease, then simply drop the prerelease. Otherwise, set the minor and patch to 0, and increment the major. So1.0.0-beta
becomes1.0.0
, and1.2.3
becomes2.0.0
-
'minor'
If the version is aM.m.0-...
version with a prerelease, then simply drop the prerelease. Otherwise, set the patch to 0, and increment the minor. So1.2.0-beta
becomes1.2.0
, and1.2.3
becomes1.3.0
. -
'patch'
If the version has a prerelease, then simply drop the prerelease. Otherwise, increment the patch value. So1.2.3-beta
becomes1.2.3
and1.2.3
becomes1.2.4
. -
'premajor'
Set the patch and minor versions to0
, increment the major version, and add a prerelease, using the optional identifier. -
'preminor'
Set the patch version to0
, increment the minor version, and add a prerelease, using the optional identifier. -
'prepatch'
If a prerelease is already present, increment the patch version, otherwise leave it untouched, and add a prerelease, using the optional identifier. -
'prerelease'
If a prerelease version is present, then behave the same as'prepatch'
. Otherwise, add a prerelease, using the optional identifier. -
'pre'
This is mostly for use by the other prerelease incrementers.-
If a prerelease identifier is provided:
Update that named portion of the prerelease. For example,
inc('1.2.3-beta.4', 'pre', 'beta')
would result in1.2.3-beta.5
.If there is no prerelease identifier by that name, then replace the prerelease with
[name]
. Soinc('1.2.3-alpha.4', 'pre', 'beta')
would result in1.2.3-beta
.If the prerelease identifer is present, but has no numeric value following it, then add
0
. Soinc('1.2.3-beta', 'pre', 'beta')
would result in1.2.3-beta.0
. -
If no prerelease identifier is provided:
If there is no current prerelease, then set the prerelease to
0
. So,inc('1.2.3', 'pre')
becomes1.2.3-0
.If the last item in the prerelease is numeric, then increment it. So,
inc('1.2.3-beta.3', 'pre')
becomes1.2.3-beta.4
.
-
Parameters
• part: IncrementType
• prereleaseIdentifier?: string
Returns
Defined in
version.ts:327
lessThan()
true if this version is < the argument
Parameters
• v: Version
Returns
boolean
Defined in
version.ts:245
lessThanEqual()
true if this version is <= the argument
Parameters
• v: Version
Returns
boolean
Defined in
version.ts:250
rcompare()
The inverse of compare, for sorting version lists in reverse order
Parameters
• v: Version
Returns
number
Defined in
version.ts:230
satisfies()
true if this version satisfies the range
Parameters
• r: Range
Returns
boolean
Defined in
version.ts:269
toString()
Canonical strict form of this version
Returns
string
Defined in
version.ts:90
tupleEquals()
just compare the M.m.p parts of the version
Parameters
• v: Version
Returns
boolean
Defined in
version.ts:260
parse()
Generate a Version
object from a SemVer string
Parameters
• version: string
Returns
Defined in
version.ts:97
Type Aliases
ComplexOperator
operators that are expanded to simpler forms
Defined in
comparator.ts:10
IncrementType
Types of incrementing supported by Version#inc
Defined in
version.ts:49
OVTuple
comparator expressed as a [operator,version] tuple
Defined in
comparator.ts:26
ParsedXMajor
a ParsedXRange that is just a *
Defined in
comparator.ts:85
ParsedXMinor
a ParsedXRange that is just a major version
Defined in
comparator.ts:89
ParsedXPatch
a ParsedXRange that is just a major and minor version
Defined in
comparator.ts:93
ParsedXRange
The result of parsing a version value that might be either a full
version like 1.2.3
or an X-Range like 1.2.x
Defined in
comparator.ts:77
ParsedXVersion
a ParsedXRange that is a full version
Defined in
comparator.ts:97
SimpleOperator
all comparators are expressed in terms of these operators
Defined in
comparator.ts:8
Functions
build()
extract the list of build identifiers, or undefined if the version
is invalid. If no build identifiers are present, returns []
.
Parameters
• version: string
| Version
Returns
undefined
| string
[]
Defined in
index.ts:415
compare()
Same as sortMethod, but throws if either version is not valid. 1 if versionA is higher precedence than versionB -1 if versionA is lower precedence than versionB 0 if they have equal precedence
Parameters
• versionA: string
| Version
• versionB: string
| Version
Returns
-1
| 0
| 1
Defined in
index.ts:333
eq()
true if versionA is equal to versionB. throws on invalid values
Parameters
• versionA: string
| Version
• versionB: string
| Version
Returns
boolean
Defined in
index.ts:388
filter()
Filter a list of versions to find all that match a given range.
Type Parameters
• T extends string
| Version
= string
| Version
Parameters
• list: T
[]
• range: string
| Range
• includePrerelease: boolean
= false
Returns
T
[]
Defined in
index.ts:200
filterMethod()
Method used by filter, for use in Array.filter
directly.
Usage:
Parameters
• range: string
| Range
• includePrerelease: boolean
= false
Returns
Function
Parameters
• version: string
| Version
Returns
boolean
Defined in
index.ts:187
gt()
true if versionA is > versionB. throws on invalid values
Parameters
• versionA: string
| Version
• versionB: string
| Version
Returns
boolean
Defined in
index.ts:363
gte()
true if versionA is >= versionB. throws on invalid values
Parameters
• versionA: string
| Version
• versionB: string
| Version
Returns
boolean
Defined in
index.ts:368
highest()
Find the highest-precedence match for a range within a list of versions
Returns undefined
if no match was found.
Parameters
• list: (string
| Version
)[]
• range: string
| Range
• includePrerelease: boolean
= false
Returns
undefined
| Version
Defined in
index.ts:211
inc()
Increment the specified part of the version, and return the resulting object. If a Version object is provided, it will be modified in-place.
See Version.inc for full description.
Parameters
• version: string
| Version
• part: IncrementType
• prereleaseIdentifier?: string
Returns
Defined in
index.ts:81
lowest()
Find the lowest-precedence match for a range within a list of versions
Returns undefined
if no match was found.
Parameters
• list: (string
| Version
)[]
• range: string
| Range
• includePrerelease: boolean
= false
Returns
undefined
| Version
Defined in
index.ts:281
lt()
true if versionA is < versionB. throws on invalid values
Parameters
• versionA: string
| Version
• versionB: string
| Version
Returns
boolean
Defined in
index.ts:373
lte()
true if versionA is <= versionB. throws on invalid values
Parameters
• versionA: string
| Version
• versionB: string
| Version
Returns
boolean
Defined in
index.ts:378
major()
extract the major version number, or undefined if invalid
Parameters
• version: string
| Version
Returns
undefined
| number
Defined in
index.ts:394
minor()
extract the minor version number, or undefined if invalid
Parameters
• version: string
| Version
Returns
undefined
| number
Defined in
index.ts:397
neq()
true if versionA is not equal to versionB. throws on invalid values
Parameters
• versionA: string
| Version
• versionB: string
| Version
Returns
boolean
Defined in
index.ts:383
parse()
Return the parsed version string, or undefined
if invalid
Parameters
• version: string
| Version
Returns
undefined
| Version
Defined in
index.ts:10
parseRange()
Return the parsed version range, or undefined
if invalid
Parameters
• range: string
| Range
• includePrerelease: boolean
= false
Returns
undefined
| Range
Defined in
index.ts:20
patch()
extract the patch version number, or undefined if invalid
Parameters
• version: string
| Version
Returns
undefined
| number
Defined in
index.ts:400
prerelease()
extract the list of prerelease identifiers, or undefined if the version
is invalid. If no prerelease identifiers are present, returns []
.
Parameters
• version: string
| Version
Returns
undefined
| (string
| number
)[]
Defined in
index.ts:406
rcompare()
Inverse of compare
Same as rsortMethod, but throws if either version is not valid.
-1 if versionA is higher precedence than versionB 1 if versionA is lower precedence than versionB 0 if they have equal precedence
Parameters
• versionA: string
| Version
• versionB: string
| Version
Returns
-1
| 0
| 1
Defined in
index.ts:357
rsort()
Sort an array of version strings or objects in descending SemVer precedence order (ie, highest versions first).
Invalid version strings are sorted to the end of the array in ascending alphabetical order.
Note: when using this method, the list is cloned prior to sorting, to prevent surprising mutation. To sort the list in place, see rsortMethod.
Type Parameters
• T extends string
| Version
= string
| Version
Parameters
• list: T
[]
Returns
T
[]
Defined in
index.ts:144
rsortedHighest()
Faster form of highest, for use when the list is sorted in reverse precedence order (higher-precedence versions first).
Note: This stops at the first match, and will produce incorrect results when the list is not properly sorted!
Parameters
• list: (string
| Version
)[]
• range: string
| Range
• includePrerelease: boolean
= false
Returns
undefined
| Version
Defined in
index.ts:261
rsortedLowest()
Faster form of lowest, for use when the list is sorted in reverse precedence order (higher-precedence versions first).
Note: This stops at the first match, and will produce incorrect results when the list is not properly sorted!
Parameters
• list: (string
| Version
)[]
• range: string
| Range
• includePrerelease: boolean
= false
Returns
undefined
| Version
Defined in
index.ts:320
rsortMethod()
The method used by rsort, exported for passing directly to
Array.sort
.
Usage:
Parameters
• a: string
| Version
• b: string
| Version
Returns
number
Defined in
index.ts:161
satisfies()
Return true if the version satisfies the range.
Parameters
• version: string
| Version
• range: string
| Range
• includePrerelease: boolean
= false
Returns
boolean
Defined in
index.ts:57
sort()
Sort an array of version strings or objects in ascending SemVer precedence order (ie, lowest versions first).
Invalid version strings are sorted to the end of the array in ascending alphabetical order.
Note: when using this method, the list is cloned prior to sorting, to prevent surprising mutation. To sort the list in place, see sortMethod.
Type Parameters
• T extends string
| Version
= string
| Version
Parameters
• list: T
[]
Returns
T
[]
Defined in
index.ts:129
sortedHighest()
Faster form of highest, for use when the list is sorted in precedence order (lower-precedence versions first).
Note: This stops at the first match, and will produce incorrect results when the list is not properly sorted!
Parameters
• list: (string
| Version
)[]
• range: string
| Range
• includePrerelease: boolean
= false
Returns
undefined
| Version
Defined in
index.ts:236
sortedLowest()
Faster form of lowest, for use when the list is sorted in precedence order (lower-precedence versions first).
Note: This stops at the first match, and will produce incorrect results when the list is not properly sorted!
Parameters
• list: (string
| Version
)[]
• range: string
| Range
• includePrerelease: boolean
= false
Returns
undefined
| Version
Defined in
index.ts:306
sortMethod()
The method used by sort, exported for passing directly to
Array.sort
.
Usage:
Parameters
• a: string
| Version
• b: string
| Version
Returns
number
Defined in
index.ts:104
stable()
return all versions that do not have any prerelease identifiers
Type Parameters
• T extends string
| Version
= string
| Version
Parameters
• versions: T
[]
Returns
T
[]
Defined in
index.ts:422
valid()
return true if the version is valid
Note: do not use this if you intend to immediately parse the version if it’s
valid. Just use parse, and guard the possible undefined value, or
use Version.parse(..)
to throw on invalid values.
Parameters
• version: string
| Version
Returns
boolean
Defined in
index.ts:42
validRange()
return true if the range is valid
Note: do not use this if you intend to immediately parse the range if it’s
valid. Just use parseRange, and guard the possible undefined value,
or use new Range(..)
to throw on invalid values.
Parameters
• range: string
| Range
Returns
boolean
Defined in
index.ts:51