aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri/src/core/fabric.rs
diff options
context:
space:
mode:
authorNtskwK <natsukawa247@outlook.com>2026-02-28 09:03:19 +0800
committerNtskwK <natsukawa247@outlook.com>2026-02-28 09:03:19 +0800
commitcc53b1cf260e1c67939e50608ef18764da616d55 (patch)
tree119109c62331d4d26612e2df7726cee82d1871f5 /src-tauri/src/core/fabric.rs
parentee37d044e473217daadd9ce26c7e2e2ad39a0490 (diff)
parent81a62402ef6f8900ff092366121a9b7a4263ba52 (diff)
downloadDropOut-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.rs45
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?