From 5b1f7d796df3e23340cb900f7ce88b72ff9cb312 Mon Sep 17 00:00:00 2001 From: bbassie <17990055+bbassie@users.noreply.github.com> Date: Mon, 29 Jun 2026 22:49:59 +0000 Subject: [PATCH] Make ModInfo.jsonSchema strict about the major.minor factorio_version The stored ModInfo always normalises factorio_version to a major.minor (see fromJSON), so the serialised schema can use the strict MajorMinorVersionSchema while infoJsonSchema keeps the lenient GameVersionSchema for raw info.json. Co-Authored-By: Claude Opus 4.8 (1M context) --- packages/lib/src/data/ModInfo.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/lib/src/data/ModInfo.ts b/packages/lib/src/data/ModInfo.ts index 458459c7..7f65b50c 100644 --- a/packages/lib/src/data/ModInfo.ts +++ b/packages/lib/src/data/ModInfo.ts @@ -11,7 +11,7 @@ import { FullVersion, integerFullVersion, integerPartialVersion, GameVersionSchema, normaliseGameVersion, normaliseMajorMinorVersion, - MajorMinorVersion, + MajorMinorVersion, MajorMinorVersionSchema, ModVersionEquality, } from "./version"; @@ -266,6 +266,9 @@ export default class ModInfo { static jsonSchema = Type.Object({ ...this.infoJsonSchema.properties, + // The stored value is always normalised to a strict major.minor (see fromJSON), + // unlike the lenient info.json schema above. + "factorio_version": Type.Optional(MajorMinorVersionSchema), "size": Type.Optional(Type.Integer()), "mtime_ms": Type.Optional(Type.Number()), "sha1": Type.Optional(Type.String()),