Add MajorMinorVersion type and dedupe the game version regex

Address review feedback: introduce a MajorMinorVersion type with
isMajorMinorVersion, rename majorMinorVersion to normaliseMajorMinorVersion,
and type ModInfo.factorioVersion as MajorMinorVersion so already-reduced
values are not re-reduced (ModPackViewPage uses mod.info.factorioVersion
directly). Reuse the single gameVersionRegExp in both GameVersionSchema and
normaliseGameVersion instead of duplicating the pattern.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
bbassieandClaude Opus 4.8 committed 2026-06-29 22:12:36 +00:00
1 parent 97a6c32838
commit 7c2793752d
6 files changed
+47 -21

No files matched your search

@@ -82,7 +82,7 @@ function SearchModsTable(props: SearchModsTableProps) {
// Get a valid factorio version
useEffect(() => {
try {
setFactorioVersion(lib.majorMinorVersion(props.modPack.factorioVersion));
setFactorioVersion(lib.normaliseMajorMinorVersion(props.modPack.factorioVersion));
} catch (err) {
setFactorioVersion(null);
}
@@ -295,7 +295,7 @@ function DownloadDependenciesButton(props: DownloadDependenciesProps) {
// Get a valid factorio version
useEffect(() => {
try {
setFactorioVersion(lib.majorMinorVersion(props.modPack.factorioVersion));
setFactorioVersion(lib.normaliseMajorMinorVersion(props.modPack.factorioVersion));
} catch (err) {
setError(new Error(`Invalid factorio version: ${props.modPack.factorioVersion}`));
setFactorioVersion(null);
@@ -577,8 +577,9 @@ function ModsTable(props: ModsTableProps) {
if (mod.enabled && mod.info) {
mod.warning = mod.info.checkDependencySatisfaction(mods.filter(m => m.enabled));
try {
const packFactorioVersion = lib.majorMinorVersion(props.modPack.factorioVersion);
const modFactorioVersion = lib.majorMinorVersion(mod.info.factorioVersion);
const packFactorioVersion = lib.normaliseMajorMinorVersion(props.modPack.factorioVersion);
// mod.info.factorioVersion is already a MajorMinorVersion, no need to re-reduce it.
const modFactorioVersion = mod.info.factorioVersion;
if (packFactorioVersion !== modFactorioVersion) {
mod.warning = "wrong_factorio_version";
}