Comparing versions with winget's version comparator.
See https://github.com/microsoft/winget-cli/blob/ae566c7bf21cfcc75be7ec30e4036a30eede8396/src/AppInstallerSharedLib/Versions.cpp for original implementation.
- Source:
Methods
(inner) compareVersion(v1, v2) → {number}
Compares two strings representing version numbers lexicographically and returns an integer value.
Parameters:
Name | Type | Description |
---|---|---|
v1 |
string | The first version to compare |
v2 |
string | The second version to compare |
- Source:
Returns:
-1 if v1 is smaller than v2, 1 if v1 is larger than v2, 0 if v1 and v2 are equal
- Type
- number
Example
compareVersion('1.2.3', '1.2.4') // returns -1 because numeric part of first version is smaller than the numeric part of second version.
(inner) compareVersionPart(part1, part2) → {number}
Compares two strings representing version number parts lexicographically and returns an integer value.
Parameters:
Name | Type | Description |
---|---|---|
part1 |
string | The first version part to compare |
part2 |
string | The second version part to compare |
- Source:
Returns:
-1 if part1 is smaller than part2, 1 if part1 is larger than part2, 0 if part1 and part2 are equal
- Type
- number
Example
compareVersionPart('3', '4') // returns -1 because numeric part of first part is smaller than the numeric part of second part.
(inner) latest(versions) → {string|undefined}
Finds the largest version number lexicographically from an array of strings representing version numbers and returns it as a string.
Parameters:
Name | Type | Description |
---|---|---|
versions |
Array.<string> | The array of version numbers to compare |
- Source:
Returns:
The largest version number as a string, or undefined if the array is empty
- Type
- string | undefined
Example
latest(['1.2.3', '1.2.4', '1.3', '2.0']) // returns '2.0' because it is the largest version number.
latest(['1.2.3', '1.2.4', '1.3-alpha', '2.0-beta']) // returns '2.0-beta'. there is no special handling for pre-release versions.
(inner) trimLastZeros(parts)
Removes all trailing zeros from a version number part array.
Parameters:
Name | Type | Description |
---|---|---|
parts |
Array.<string> | parts |
- Source:
(inner) trimPrefix(version) → {string}
Removes all leading non-digit characters from a version number string if there is a digit before the split character, or no split characters exist.
Parameters:
Name | Type | Description |
---|---|---|
version |
string | The version number string to trim |
- Source:
Returns:
The version number string with all leading non-digit characters removed
- Type
- string