| ... | ... | @@ -33,13 +33,11 @@ function versionCore(version: string): string { |
| 33 | 33 | * The skew a user can act on: the connected server runs an older T3 Code than |
| 34 | 34 | * this client, so the server is the side that needs updating. |
| 35 | 35 | * |
| 36 | | * Versions compare as semver on their core `major.minor.patch` only. Nightlies |
| 37 | | * are `<core>-nightly.<date>.<run>` builds of the release they precede, so a |
| 38 | | * stable client on a nightly server (or the reverse, at the same core) shares a |
| 39 | | * wire contract and is not skew. A server *ahead* of the client is not skew |
| 40 | | * either: the client is the stale side, and every consumer of this result tells |
| 41 | | * the user to update their server. Versions that do not parse as semver fall |
| 42 | | * back to plain string inequality. |
| 36 | * Two nightly builds compare their full versions, including the date and run. |
| 37 | * Other combinations compare their core `major.minor.patch` only, so a stable |
| 38 | * build and a nightly build with the same core do not cause an update warning. |
| 39 | * A server ahead of the client does not need an update. Versions that do not |
| 40 | * parse as semver fall back to plain string inequality. |
| 43 | 41 | */ |
| 44 | 42 | export function resolveVersionMismatch( |
| 45 | 43 | serverVersion: string | null | undefined, |
| ... | ... | @@ -52,9 +50,15 @@ export function resolveVersionMismatch( |
| 52 | 50 | |
| 53 | 51 | const clientCore = versionCore(normalizedClientVersion); |
| 54 | 52 | const serverCore = versionCore(normalizedServerVersion); |
| 53 | const compareNightlyBuilds = |
| 54 | parseSemver(normalizedClientVersion)?.prerelease[0] === "nightly" && |
| 55 | parseSemver(normalizedServerVersion)?.prerelease[0] === "nightly"; |
| 55 | 56 | const serverIsBehind = |
| 56 | 57 | parseSemver(clientCore) && parseSemver(serverCore) |
| 57 | | ? compareSemverVersions(serverCore, clientCore) < 0 |
| 58 | ? compareSemverVersions( |
| 59 | compareNightlyBuilds ? normalizedServerVersion : serverCore, |
| 60 | compareNightlyBuilds ? normalizedClientVersion : clientCore, |
| 61 | ) < 0 |
| 58 | 62 | : normalizedServerVersion !== normalizedClientVersion; |
| 59 | 63 | if (!serverIsBehind) { |
| 60 | 64 | return null; |