(inputVersion: string, requiredVersion: string)
| 101 | } |
| 102 | |
| 103 | export function pubVersionIsAtLeast(inputVersion: string, requiredVersion: string): boolean { |
| 104 | // Standard semver gt/lt |
| 105 | if (semver.gt(inputVersion, requiredVersion)) |
| 106 | return true; |
| 107 | else if (semver.lt(inputVersion, requiredVersion)) |
| 108 | return false; |
| 109 | |
| 110 | // If the versions are equal, we need to handle build metadata like pub does. |
| 111 | // https://github.com/dart-lang/pub_semver/ |
| 112 | |
| 113 | // If only one of them has build metadata, it's newest. |
| 114 | if (inputVersion.includes("+") && !requiredVersion.includes("+")) |
| 115 | return true; |
| 116 | if (!inputVersion.includes("+") && requiredVersion.includes("+")) |
| 117 | return false; |
| 118 | |
| 119 | // Otherwise, since they're both otherwise equal and both have build |
| 120 | // metadata we can treat the build metadata like pre-release by converting |
| 121 | // it to pre-release (with -) or appending it to existing pre-release. |
| 122 | inputVersion = inputVersion.replace("+", !inputVersion.includes("-") ? "-" : "."); |
| 123 | requiredVersion = requiredVersion.replace("+", !requiredVersion.includes("-") ? "-" : "."); |
| 124 | return versionIsAtLeast(inputVersion, requiredVersion); |
| 125 | } |
| 126 | |
| 127 | export function isStableSdk(sdkVersion?: string): boolean { |
| 128 | // We'll consider empty versions as dev; stable versions will likely always |
no test coverage detected