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