* Parse a "X.Y.Z" semver-ish string into a [major, minor, patch] tuple. * Non-numeric parts are treated as 0. Good enough for v0.x compat gates.
(v: string)
| 39 | * Non-numeric parts are treated as 0. Good enough for v0.x compat gates. |
| 40 | */ |
| 41 | function parseVersion(v: string): [number, number, number] { |
| 42 | const parts = v.split(".").map((p) => Number.parseInt(p, 10)); |
| 43 | return [ |
| 44 | Number.isFinite(parts[0]) ? (parts[0] as number) : 0, |
| 45 | Number.isFinite(parts[1]) ? (parts[1] as number) : 0, |
| 46 | Number.isFinite(parts[2]) ? (parts[2] as number) : 0, |
| 47 | ]; |
| 48 | } |
| 49 | |
| 50 | function versionGte(candidate: string, baseline: string): boolean { |
| 51 | const [a1, a2, a3] = parseVersion(candidate); |