aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri/src/main.rs
diff options
context:
space:
mode:
authorHsiangNianian <i@jyunko.cn>2026-01-21 10:47:56 +0800
committerHsiangNianian <i@jyunko.cn>2026-01-21 10:47:56 +0800
commit5cffcfe457d1b15d201647a5775268378c6018c6 (patch)
tree562160c25373acc968c7c7abafaf018cd1a21261 /src-tauri/src/main.rs
parentb27f30bfbdd05a53caaf6fe63fd9354b3689623c (diff)
downloadDropOut-5cffcfe457d1b15d201647a5775268378c6018c6.tar.gz
DropOut-5cffcfe457d1b15d201647a5775268378c6018c6.zip
feat: Add TypeScript support to data structures using ts-rs for type generation
Diffstat (limited to 'src-tauri/src/main.rs')
-rw-r--r--src-tauri/src/main.rs36
1 files changed, 29 insertions, 7 deletions
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index 0f1d7a1..e9a24fb 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -6,7 +6,8 @@ use std::process::Stdio;
use std::sync::Mutex;
use tauri::{Emitter, Manager, State, Window}; // Added Emitter
use tokio::io::{AsyncBufReadExt, BufReader};
-use tokio::process::Command; // Added Serialize
+use tokio::process::Command;
+use ts_rs::TS; // Added Serialize
#[cfg(target_os = "windows")]
use std::os::windows::process::CommandExt;
@@ -1749,7 +1750,11 @@ async fn get_version_java_version(
}
/// Version metadata for display in the UI
-#[derive(serde::Serialize)]
+#[derive(serde::Serialize, TS)]
+#[ts(
+ export,
+ export_to = "../packages/ui/src/types/generated/VersionMetadata.ts"
+)]
struct VersionMetadata {
id: String,
#[serde(rename = "javaVersion")]
@@ -1899,7 +1904,11 @@ async fn get_version_metadata(
}
/// Installed version info
-#[derive(serde::Serialize)]
+#[derive(serde::Serialize, TS)]
+#[ts(
+ export,
+ export_to = "../packages/ui/src/types/generated/InstalledVersion.ts"
+)]
struct InstalledVersion {
id: String,
#[serde(rename = "type")]
@@ -2128,7 +2137,11 @@ async fn install_forge(
Ok(result)
}
-#[derive(serde::Serialize)]
+#[derive(serde::Serialize, TS)]
+#[ts(
+ export,
+ export_to = "../packages/ui/src/types/generated/GithubRelease.ts"
+)]
struct GithubRelease {
tag_name: String,
name: String,
@@ -2174,7 +2187,11 @@ async fn get_github_releases() -> Result<Vec<GithubRelease>, String> {
Ok(result)
}
-#[derive(Serialize)]
+#[derive(Serialize, TS)]
+#[ts(
+ export,
+ export_to = "../packages/ui/src/types/generated/PastebinResponse.ts"
+)]
struct PastebinResponse {
url: String,
}
@@ -2382,7 +2399,11 @@ async fn assistant_chat_stream(
}
/// Migrate instance caches to shared global caches
-#[derive(Serialize)]
+#[derive(Serialize, TS)]
+#[ts(
+ export,
+ export_to = "../packages/ui/src/types/generated/MigrationResult.ts"
+)]
struct MigrationResult {
moved_files: usize,
hardlinks: usize,
@@ -2431,7 +2452,8 @@ async fn migrate_shared_caches(
}
/// File information for instance file browser
-#[derive(Debug, Clone, Serialize, Deserialize)]
+#[derive(Debug, Clone, Serialize, Deserialize, TS)]
+#[ts(export, export_to = "../packages/ui/src/types/generated/FileInfo.ts")]
struct FileInfo {
name: String,
path: String,