diff options
Diffstat (limited to 'src-tauri/src/core/game_version.rs')
| -rw-r--r-- | src-tauri/src/core/game_version.rs | 48 |
1 files changed, 38 insertions, 10 deletions
diff --git a/src-tauri/src/core/game_version.rs b/src-tauri/src/core/game_version.rs index c62e232..52c7da3 100644 --- a/src-tauri/src/core/game_version.rs +++ b/src-tauri/src/core/game_version.rs @@ -1,8 +1,13 @@ use serde::{Deserialize, Serialize}; +use ts_rs::TS; /// Represents a Minecraft version JSON, supporting both vanilla and modded (Fabric/Forge) formats. /// Modded versions use `inheritsFrom` to reference a parent vanilla version. -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[ts( + export, + export_to = "../packages/ui/src/types/generated/GameVersion.ts" +)] pub struct GameVersion { pub id: String, /// Optional for mod loaders that inherit from vanilla @@ -28,13 +33,18 @@ pub struct GameVersion { pub version_type: Option<String>, } -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[ts(export, export_to = "../packages/ui/src/types/generated/Downloads.ts")] pub struct Downloads { pub client: DownloadArtifact, pub server: Option<DownloadArtifact>, } -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[ts( + export, + export_to = "../packages/ui/src/types/generated/DownloadArtifact.ts" +)] pub struct DownloadArtifact { pub sha1: Option<String>, pub size: Option<u64>, @@ -42,7 +52,8 @@ pub struct DownloadArtifact { pub path: Option<String>, } -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[ts(export, export_to = "../packages/ui/src/types/generated/AssetIndex.ts")] pub struct AssetIndex { pub id: String, pub sha1: String, @@ -52,43 +63,60 @@ pub struct AssetIndex { pub total_size: Option<u64>, } -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[ts(export, export_to = "../packages/ui/src/types/generated/Library.ts")] pub struct Library { pub downloads: Option<LibraryDownloads>, pub name: String, pub rules: Option<Vec<Rule>>, + #[ts(type = "Record<string, unknown>")] pub natives: Option<serde_json::Value>, /// Maven repository URL for mod loader libraries pub url: Option<String>, } -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[ts(export, export_to = "../packages/ui/src/types/generated/Rule.ts")] pub struct Rule { pub action: String, // "allow" or "disallow" pub os: Option<OsRule>, + #[ts(type = "Record<string, unknown>")] pub features: Option<serde_json::Value>, // Feature-based rules (e.g., is_demo_user, has_quick_plays_support) } -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[ts(export, export_to = "../packages/ui/src/types/generated/OsRule.ts")] pub struct OsRule { pub name: Option<String>, // "linux", "osx", "windows" pub version: Option<String>, // Regex pub arch: Option<String>, // "x86" } -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[ts( + export, + export_to = "../packages/ui/src/types/generated/LibraryDownloads.ts" +)] pub struct LibraryDownloads { pub artifact: Option<DownloadArtifact>, + #[ts(type = "Record<string, unknown>")] pub classifiers: Option<serde_json::Value>, // Complex, simplifying for now } -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[ts(export, export_to = "../packages/ui/src/types/generated/Arguments.ts")] pub struct Arguments { + #[ts(type = "Record<string, unknown>")] pub game: Option<serde_json::Value>, + #[ts(type = "Record<string, unknown>")] pub jvm: Option<serde_json::Value>, } -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[ts( + export, + export_to = "../packages/ui/src/types/generated/JavaVersion.ts" +)] pub struct JavaVersion { pub component: String, #[serde(rename = "majorVersion")] |