(a: string, b: string)
| 167 | |
| 168 | /** Returns >0 if a>b, <0 if a<b, 0 if equal. Throws on unparseable input. */ |
| 169 | export function compareVersions(a: string, b: string): number { |
| 170 | const sa = parseSemver(a); |
| 171 | const sb = parseSemver(b); |
| 172 | if (!sa || !sb) throw new Error(`cannot compare versions: "${a}" vs "${b}"`); |
| 173 | if (sa.major !== sb.major) return sa.major - sb.major; |
| 174 | if (sa.minor !== sb.minor) return sa.minor - sb.minor; |
| 175 | if (sa.patch !== sb.patch) return sa.patch - sb.patch; |
| 176 | // A prerelease is "less than" its release (1.0.0-rc < 1.0.0). |
| 177 | if (sa.pre && !sb.pre) return -1; |
| 178 | if (!sa.pre && sb.pre) return 1; |
| 179 | if (sa.pre && sb.pre) return sa.pre < sb.pre ? -1 : sa.pre > sb.pre ? 1 : 0; |
| 180 | return 0; |
| 181 | } |
| 182 | |
| 183 | export function isUpdateAvailable(current: string, latest: string): boolean { |
| 184 | try { |
no test coverage detected