diff options
| author | 2026-02-28 09:03:19 +0800 | |
|---|---|---|
| committer | 2026-02-28 09:03:19 +0800 | |
| commit | cc53b1cf260e1c67939e50608ef18764da616d55 (patch) | |
| tree | 119109c62331d4d26612e2df7726cee82d1871f5 /src-tauri/src/core/fabric.rs | |
| parent | ee37d044e473217daadd9ce26c7e2e2ad39a0490 (diff) | |
| parent | 81a62402ef6f8900ff092366121a9b7a4263ba52 (diff) | |
| download | DropOut-cc53b1cf260e1c67939e50608ef18764da616d55.tar.gz DropOut-cc53b1cf260e1c67939e50608ef18764da616d55.zip | |
Merge remote-tracking branch 'upstream/main'
Diffstat (limited to 'src-tauri/src/core/fabric.rs')
| -rw-r--r-- | src-tauri/src/core/fabric.rs | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/src-tauri/src/core/fabric.rs b/src-tauri/src/core/fabric.rs index 32790c7..a6ef236 100644 --- a/src-tauri/src/core/fabric.rs +++ b/src-tauri/src/core/fabric.rs @@ -8,11 +8,14 @@ use serde::{Deserialize, Serialize}; use std::error::Error; use std::path::PathBuf; +use ts_rs::TS; const FABRIC_META_URL: &str = "https://meta.fabricmc.net/v2"; /// Represents a Fabric loader version from the Meta API. -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export, export_to = "fabric.ts")] pub struct FabricLoaderVersion { pub separator: String, pub build: i32, @@ -22,7 +25,9 @@ pub struct FabricLoaderVersion { } /// Represents a Fabric intermediary mapping version. -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export, export_to = "fabric.ts")] pub struct FabricIntermediaryVersion { pub maven: String, pub version: String, @@ -30,7 +35,9 @@ pub struct FabricIntermediaryVersion { } /// Represents a combined loader + intermediary version entry. -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export, export_to = "fabric.ts")] pub struct FabricLoaderEntry { pub loader: FabricLoaderVersion, pub intermediary: FabricIntermediaryVersion, @@ -39,7 +46,9 @@ pub struct FabricLoaderEntry { } /// Launcher metadata from Fabric Meta API. -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export, export_to = "fabric.ts")] pub struct FabricLauncherMeta { pub version: i32, pub libraries: FabricLibraries, @@ -48,7 +57,9 @@ pub struct FabricLauncherMeta { } /// Libraries required by Fabric loader. -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export, export_to = "fabric.ts")] pub struct FabricLibraries { pub client: Vec<FabricLibrary>, pub common: Vec<FabricLibrary>, @@ -56,7 +67,9 @@ pub struct FabricLibraries { } /// A single Fabric library dependency. -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export, export_to = "fabric.ts")] pub struct FabricLibrary { pub name: String, pub url: Option<String>, @@ -64,7 +77,9 @@ pub struct FabricLibrary { /// Main class configuration for Fabric. /// Can be either a struct with client/server fields or a simple string. -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export, export_to = "fabric.ts", untagged)] #[serde(untagged)] pub enum FabricMainClass { Structured { client: String, server: String }, @@ -89,14 +104,18 @@ impl FabricMainClass { } /// Represents a Minecraft version supported by Fabric. -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export, export_to = "fabric.ts")] pub struct FabricGameVersion { pub version: String, pub stable: bool, } /// Information about an installed Fabric version. -#[derive(Debug, Serialize, Clone)] +#[derive(Debug, Serialize, Clone, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export, export_to = "fabric.ts")] pub struct InstalledFabricVersion { pub id: String, pub minecraft_version: String, @@ -108,8 +127,8 @@ pub struct InstalledFabricVersion { /// /// # Returns /// A list of game versions that have Fabric intermediary mappings available. -pub async fn fetch_supported_game_versions( -) -> Result<Vec<FabricGameVersion>, Box<dyn Error + Send + Sync>> { +pub async fn fetch_supported_game_versions() +-> Result<Vec<FabricGameVersion>, Box<dyn Error + Send + Sync>> { let url = format!("{}/versions/game", FABRIC_META_URL); let resp = reqwest::get(&url) .await? @@ -122,8 +141,8 @@ pub async fn fetch_supported_game_versions( /// /// # Returns /// A list of all Fabric loader versions, ordered by build number (newest first). -pub async fn fetch_loader_versions( -) -> Result<Vec<FabricLoaderVersion>, Box<dyn Error + Send + Sync>> { +pub async fn fetch_loader_versions() +-> Result<Vec<FabricLoaderVersion>, Box<dyn Error + Send + Sync>> { let url = format!("{}/versions/loader", FABRIC_META_URL); let resp = reqwest::get(&url) .await? |