diff --git a/Cargo.lock b/Cargo.lock index 2cfa5fdd2..db809158b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -150,7 +150,7 @@ dependencies = [ "objc2-core-foundation", "objc2-core-graphics", "objc2-foundation", - "parking_lot", + "parking_lot 0.12.5", "percent-encoding", "windows-sys 0.60.2", "wl-clipboard-rs", @@ -159,9 +159,9 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" +checksum = "380962b3d93b99642e50b9febf72c071e97e8b32d86eae9cf4ef582bb960ae6e" dependencies = [ "rustversion", ] @@ -1118,12 +1118,12 @@ dependencies = [ "objc2-app-kit", "objc2-foundation", "open", - "parking_lot", + "parking_lot 0.13.0", "percent-encoding", "regex", "reqwest 0.13.5", "reqwest_dav", - "rfd", + "rfd 0.17.2", "runas", "rustls", "scopeguard", @@ -1176,7 +1176,7 @@ version = "0.1.0" dependencies = [ "anyhow", "criterion", - "parking_lot", + "parking_lot 0.13.0", "tokio", ] @@ -1199,7 +1199,7 @@ dependencies = [ "anyhow", "flexi_logger", "log", - "parking_lot", + "parking_lot 0.13.0", "tracing-estuary", ] @@ -1229,8 +1229,8 @@ dependencies = [ [[package]] name = "clash_verge_service_ipc" -version = "2.7.6" -source = "git+https://github.com/clash-verge-rev/clash-verge-service-ipc.git?tag=v2.7.6#b2a7427d6681c8d3780ab83a73f4dc21da2f22d6" +version = "2.7.7" +source = "git+https://github.com/clash-verge-rev/clash-verge-service-ipc.git?tag=v2.7.7#3ed29700b093190b5e7addcaa892e77f172af544" dependencies = [ "anyhow", "kode-bridge", @@ -1256,8 +1256,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "facfbc410a385e0b0cbca8179dd9e363ed70e8455960bf7545137e90ca753b66" dependencies = [ "crossbeam-utils", - "lock_api", - "parking_lot_core", + "lock_api 0.4.14", + "parking_lot_core 0.9.12", "polonius-the-crab", ] @@ -1334,7 +1334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ "lazy_static", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1768,8 +1768,18 @@ version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + +[[package]] +name = "darling" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec" +dependencies = [ + "darling_core 0.24.1", + "darling_macro 0.24.1", ] [[package]] @@ -1785,17 +1795,41 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "darling_core" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 3.0.5", +] + [[package]] name = "darling_macro" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core", + "darling_core 0.23.0", "quote", "syn 2.0.119", ] +[[package]] +name = "darling_macro" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785" +dependencies = [ + "darling_core 0.24.1", + "quote", + "syn 3.0.5", +] + [[package]] name = "dashmap" version = "6.2.1" @@ -1805,9 +1839,9 @@ dependencies = [ "cfg-if", "crossbeam-utils", "hashbrown 0.14.5", - "lock_api", + "lock_api 0.4.14", "once_cell", - "parking_lot_core", + "parking_lot_core 0.9.12", ] [[package]] @@ -2015,7 +2049,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -3344,7 +3378,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.61.2", + "windows-core 0.62.2", ] [[package]] @@ -3858,7 +3892,7 @@ dependencies = [ "http", "httparse", "libc", - "parking_lot", + "parking_lot 0.12.5", "path-tree", "pin-project-lite", "rand 0.10.2", @@ -4019,10 +4053,19 @@ dependencies = [ ] [[package]] -name = "log" -version = "0.4.34" +name = "lock_api" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" +checksum = "65d91b22da179613dcf4d6ec8349563f52a363f6849e03b00dd0a185ec4a59af" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d15f86d12da44cd8d4ec3c73984537eb7f4cadcb9776a575a0a8a05ca11005c" [[package]] name = "lru-slab" @@ -4032,9 +4075,9 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "lzma-rust2" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c46f3fcd2e888afdb01a07efc071cb21300e07c68d32c3e8b01b5c8cb1fcaa" +checksum = "490750560fa7851fbbf5d3ab1a8750f09350ed361ed8aed85b1e1e40587812ee" dependencies = [ "sha2 0.11.1", ] @@ -4382,7 +4425,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -4764,7 +4807,7 @@ version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" dependencies = [ - "parking_lot_core", + "parking_lot_core 0.9.12", ] [[package]] @@ -4787,9 +4830,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "open" -version = "5.4.4" +version = "5.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa576c76302b7b808eecc68061e67336c47833ef9d22caa74dda10fa9675eebc" +checksum = "8d8c8b8e725ad26404d6896eb2f064294a0a7b4f1d9120210d85544684c4ca95" dependencies = [ "dunce", "is-wsl", @@ -4859,7 +4902,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.45.0", ] [[package]] @@ -4923,8 +4966,18 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ - "lock_api", - "parking_lot_core", + "lock_api 0.4.14", + "parking_lot_core 0.9.12", +] + +[[package]] +name = "parking_lot" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9cf937ca4e1d0b7578784559063422fc39ae7c5a00f02471f2614d5486fd226" +dependencies = [ + "lock_api 0.5.0", + "parking_lot_core 0.10.0", ] [[package]] @@ -4935,7 +4988,19 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.18", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "parking_lot_core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cfff060068cc18aa7815010fcaf80c68c7fb9e85fc7f5c0f9bf142c21d19826" +dependencies = [ + "libc", + "redox_syscall 0.9.5", "smallvec", "windows-link 0.2.1", ] @@ -5266,6 +5331,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "pollster" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" + [[package]] name = "polonius-the-crab" version = "0.5.0" @@ -5668,6 +5739,15 @@ dependencies = [ "bitflags 2.13.2", ] +[[package]] +name = "redox_syscall" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "580c875845b41ecb1564ad1ae4703044cef774145e3d7a94dc2b3fa7c97868fd" +dependencies = [ + "bitflags 2.13.2", +] + [[package]] name = "redox_users" version = "0.4.6" @@ -5887,6 +5967,30 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "rfd" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20dafead71c16a34e1ff357ddefc8afc11e7d51d6d2b9fbd07eaa48e3e540220" +dependencies = [ + "block2", + "dispatch2", + "js-sys", + "libc", + "log", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "percent-encoding", + "pollster", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.61.2", +] + [[package]] name = "ring" version = "0.17.14" @@ -6028,7 +6132,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6478,7 +6582,7 @@ version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" dependencies = [ - "darling", + "darling 0.23.0", "proc-macro2", "quote", "syn 2.0.119", @@ -6738,7 +6842,7 @@ dependencies = [ "objc2-foundation", "objc2-quartz-core", "raw-window-handle", - "redox_syscall", + "redox_syscall 0.5.18", "tracing", "wasm-bindgen", "web-sys", @@ -6773,9 +6877,9 @@ dependencies = [ [[package]] name = "specta" -version = "2.0.0-rc.25" +version = "2.0.0-rc.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f9a30cbcbb7011f1da7d73483983bf838af123883e45f2b36ed76328df9c50" +checksum = "ed155e448f42fc4be7a5cbc12bd43f6c549981f7c32fcba429ff6bc57cc4f30c" dependencies = [ "paste", "rustc_version 0.4.1", @@ -6785,9 +6889,9 @@ dependencies = [ [[package]] name = "specta-macros" -version = "2.0.0-rc.25" +version = "2.0.0-rc.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ce14957ecc2897f1f848b8255b6531d13ddf49cbcf506b7c2c9fb1d005593bb" +checksum = "b34b2516e16a9ddd3dc4e73cd6454cfe21fe209f8cb5a6f37346fe3774d759b3" dependencies = [ "Inflector", "proc-macro2", @@ -6797,9 +6901,9 @@ dependencies = [ [[package]] name = "specta-serde" -version = "0.0.12" +version = "0.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8a72b755ddb8949fd8f17c5db43f0e8a806ea587d9bc602ee3f73240c00029" +checksum = "4983177ed0eb28235080261953de5f9ebae8a2d107851b5852420bd2ab246245" dependencies = [ "specta", "specta-macros", @@ -6807,18 +6911,18 @@ dependencies = [ [[package]] name = "specta-typescript" -version = "0.0.12" +version = "0.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "639404ee95557f2f8b7e4cb773ffefd45304c7ab8ba21ac83b69051595e083c0" +checksum = "3ecbe75dc1d27b36141b50b02b7c73bed00945710cee6edffa86d296a159a6f9" dependencies = [ "specta", ] [[package]] name = "specta-util" -version = "0.0.12" +version = "0.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29b1fc02b446f7244a92924fe68c0555921209f1d342990cd1539e9138e69502" +checksum = "d9bf531215ea70fba8264edecf98f12600462cf359f2038602a47aeda5ecd5b8" dependencies = [ "specta", ] @@ -6848,7 +6952,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" dependencies = [ "new_debug_unreachable", - "parking_lot", + "parking_lot 0.12.5", "phf_shared 0.13.1", "precomputed-hash", ] @@ -6984,9 +7088,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.39.6" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2071df9448915b71c4fe6d25deaf1c22f12bd234f01540b77312bb8e41361e6" +checksum = "0e8a3edbe0394ce115f3917a00349dd242be09eb5a091ed509eaf67b55cfb8a8" dependencies = [ "libc", "memchr", @@ -7095,7 +7199,7 @@ dependencies = [ "objc2-app-kit", "objc2-foundation", "objc2-ui-kit", - "parking_lot", + "parking_lot 0.12.5", "percent-encoding", "raw-window-handle", "tao-macros", @@ -7302,7 +7406,7 @@ version = "0.1.0" dependencies = [ "deelevate", "libc", - "parking_lot", + "parking_lot 0.13.0", "serde", "specta", "sysinfo", @@ -7381,7 +7485,7 @@ checksum = "b7461aaacf1901915ea7b9f5cd74f8224a351ed96af0a62c07fce934003cb34b" dependencies = [ "log", "raw-window-handle", - "rfd", + "rfd 0.16.0", "serde", "serde_json", "tauri", @@ -7690,11 +7794,12 @@ dependencies = [ [[package]] name = "tauri-specta" -version = "2.0.0-rc.25" +version = "2.0.0-rc.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee080f36d2ac17ce2f3a82fb53f02d664e8345457de51b56dad3c394dacc41a2" +checksum = "fe71fc209fa4c49f959644f1ae2d70f72d5675bcb3d3ad8518122fa7b330994e" dependencies = [ "heck 0.5.0", + "paste", "serde", "serde_json", "specta", @@ -7708,15 +7813,15 @@ dependencies = [ [[package]] name = "tauri-specta-macros" -version = "2.0.0-rc.25" +version = "2.0.0-rc.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a59dfdce06c98d8d211619bea5fdb39486d8a8c558e12b2d2ce255972320012" +checksum = "dbf5689a1dbf2611e2351b79ba042ca089d0a3ce45274695e79084cd732a5aec" dependencies = [ - "darling", + "darling 0.24.1", "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.5", ] [[package]] @@ -8042,9 +8147,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.53.3" +version = "1.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce3335fa71841cda333a58d7615b03901380ecf09d59b3296d21f8bbac0dde4e" +checksum = "b52fd3255258d26fac7264ab5a76b53c13367136dc011d3d6ad4f8ed070396a3" dependencies = [ "bytes", "libc", @@ -8400,7 +8505,7 @@ dependencies = [ "flexi_logger", "log", "nu-ansi-term", - "parking_lot", + "parking_lot 0.12.5", "tokio", "tracing", "tracing-log", @@ -9010,9 +9115,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a" +checksum = "f5f280bbb2b287bc8e7de7e3852945a0ff50d1bbcb5ed42b6c7a568c546df171" dependencies = [ "rustls-pki-types", ] @@ -9106,7 +9211,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -9702,7 +9807,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d6f32a0ff4a9f6f01231eb2059cc85479330739333e0e58cadf03b6af2cca10" dependencies = [ "cfg-if", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -10034,9 +10139,9 @@ dependencies = [ [[package]] name = "zip" -version = "9.1.3" +version = "9.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1156b39d142a34b999c2310a50455e0cb3760bf7efad0122f796d813bee26ccb" +checksum = "eaeb7f16d2605b49aef586996ded29e65642fab7259a3077e537351df6d80426" dependencies = [ "aes", "bzip2", @@ -10047,6 +10152,7 @@ dependencies = [ "getrandom 0.4.3", "hmac", "indexmap 2.14.0", + "libc", "lzma-rust2", "memchr", "nix", diff --git a/Cargo.toml b/Cargo.toml index 151c17b9c..e8a69f83a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,7 +63,7 @@ tracing = "0.1.44" tauri = { version = "2.12.4" } tauri-plugin-clipboard-manager = "2.5.0" -parking_lot = { version = "0.13.0", features = ["hardware-lock-elision"] } +parking_lot = "0.13.0" anyhow = "1.0.104" chrono = "0.4.45" criterion = { version = "0.8.2", features = ["async_tokio"] } diff --git a/crates/clash-verge-media-unlock/Cargo.toml b/crates/clash-verge-media-unlock/Cargo.toml index eac9f147b..3603b522d 100644 --- a/crates/clash-verge-media-unlock/Cargo.toml +++ b/crates/clash-verge-media-unlock/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] -specta = { version = "=2.0.0-rc.27", features = ["derive", "function"] } +specta = { version = "=2.0.0-rc.26", features = ["derive", "function"] } clash-verge-logging = { workspace = true } chrono = { workspace = true } log = { workspace = true } diff --git a/crates/tauri-plugin-clash-verge-sysinfo/Cargo.toml b/crates/tauri-plugin-clash-verge-sysinfo/Cargo.toml index e333fae98..fd7fd27a1 100644 --- a/crates/tauri-plugin-clash-verge-sysinfo/Cargo.toml +++ b/crates/tauri-plugin-clash-verge-sysinfo/Cargo.toml @@ -5,7 +5,7 @@ edition = "2024" rust-version = "1.91" [dependencies] -specta = { version = "=2.0.0-rc.27", features = ["derive", "function"] } +specta = { version = "=2.0.0-rc.26", features = ["derive", "function"] } tauri = { workspace = true } tauri-plugin-clipboard-manager = { workspace = true } parking_lot = { workspace = true } diff --git a/crates/tauri-plugin-clash-verge-sysinfo/src/lib.rs b/crates/tauri-plugin-clash-verge-sysinfo/src/lib.rs index 7e2fdd5dc..0417b707b 100644 --- a/crates/tauri-plugin-clash-verge-sysinfo/src/lib.rs +++ b/crates/tauri-plugin-clash-verge-sysinfo/src/lib.rs @@ -27,9 +27,9 @@ pub struct SysInfo { impl Default for SysInfo { #[inline] fn default() -> Self { - let system_name = System::name().unwrap_or_else(|| "Null".into()); - let system_version = System::long_os_version().unwrap_or_else(|| "Null".into()); - let system_kernel_version = System::kernel_version().unwrap_or_else(|| "Null".into()); + let system_name = System::name().unwrap_or_else(|_| "Null".into()); + let system_version = System::long_os_version().unwrap_or_else(|_| "Null".into()); + let system_kernel_version = System::kernel_version().unwrap_or_else(|_| "Null".into()); let system_arch = System::cpu_arch(); Self { system_name, @@ -130,9 +130,14 @@ pub fn current_gid() -> u32 { #[inline] pub fn list_network_interfaces() -> Vec { - let mut networks = Networks::new(); + let Ok(mut networks) = Networks::new() else { + return Vec::new(); + }; networks.refresh(false); - networks.keys().map(|name| name.to_owned()).collect() + networks + .keys() + .map(|name| name.to_string_lossy().into_owned()) + .collect() } #[inline] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index bd5384ece..882d4243a 100755 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -59,7 +59,7 @@ bitflags = { workspace = true } socket2 = { workspace = true } warp = { version = "0.4.3", features = ["server"] } open = "5.4.5" -rfd = { version = "0.17.2", default-features = false, features = ["common-controls-v6"] } +rfd = { version = "0.17.2", default-features = false, features = ["common-controls-v6", "xdg-portal"] } dirs = "7.0.0" dunce = "1.0.5" nanoid = "0.5" @@ -108,9 +108,9 @@ webpki-roots = "1.0.11" dark-light = "3.0.0" bytes = "1.12.1" tokio-util = { version = "0.7.20", features = ["time"] } -specta = { version = "=2.0.0-rc.27", features = ["derive", "function", "serde_json"] } -tauri-specta = { version = "=2.0.0-rc.25", features = ["derive", "typescript"] } -specta-typescript = "=0.0.14" +specta = { version = "=2.0.0-rc.26", features = ["derive", "function", "serde_json"] } +tauri-specta = { version = "=2.0.0-rc.26", features = ["derive", "typescript"] } +specta-typescript = "=0.0.13" [target.'cfg(unix)'.dependencies] libc = "0.2.191" diff --git a/src/components/test/test-viewer.tsx b/src/components/test/test-viewer.tsx index 07f7d742d..1359b46f0 100644 --- a/src/components/test/test-viewer.tsx +++ b/src/components/test/test-viewer.tsx @@ -7,6 +7,10 @@ import { useTranslation } from 'react-i18next' import { BaseDialog } from '@/components/base' import { useVerge } from '@/hooks/use-verge' +import type { + IVergeTestItem_Deserialize, + IVergeTestItem_Serialize, +} from '@/services/bindings' import { showNotice } from '@/services/notice-service' interface Props { @@ -27,7 +31,7 @@ export const TestViewer = forwardRef( const [loading, setLoading] = useState(false) const { verge, patchVerge } = useVerge() const testList = verge?.test_list ?? [] - const { control, ...formIns } = useForm({ + const { control, ...formIns } = useForm({ defaultValues: { name: '', icon: '', @@ -37,11 +41,16 @@ export const TestViewer = forwardRef( const patchTestList = async ( uid: string, - patch: Partial, + patch: Partial, ) => { const newList = testList.map((x) => { if (x.uid === uid) { - return { ...x, ...patch } + return { + uid: x.uid, + name: patch.name === undefined ? x.name : patch.name, + icon: patch.icon === undefined ? x.icon : patch.icon, + url: patch.url === undefined ? x.url : patch.url, + } } return x }) @@ -77,7 +86,12 @@ export const TestViewer = forwardRef( if (openType === 'new') { const uid = nanoid() - const item = { ...form, uid } + const item: IVergeTestItem_Serialize = { + uid, + name: form.name ?? null, + icon: form.icon ?? null, + url: form.url ?? null, + } const newList = [...testList, item] await patchVerge({ test_list: newList }) onChange(uid) diff --git a/src/services/bindings.ts b/src/services/bindings.ts index 4a1623bdc..c594a5d13 100644 --- a/src/services/bindings.ts +++ b/src/services/bindings.ts @@ -23,19 +23,22 @@ export const commands = { __TAURI_INVOKE('get_network_interfaces'), getSystemHostname: () => __TAURI_INVOKE('get_system_hostname'), restartApp: () => __TAURI_INVOKE('restart_app'), - installUpdate: (version: string, onEvent: Channel) => - __TAURI_INVOKE('install_update', { version, onEvent }), + installUpdate: ( + version: string, + onEvent: Channel, + ) => __TAURI_INVOKE('install_update', { version, onEvent }), cancelUpdateDownload: () => __TAURI_INVOKE('cancel_update_download'), restartCore: () => __TAURI_INVOKE('restart_core'), /** Replaces the managed core binary atomically instead of letting mihomo overwrite itself. */ upgradeClashCore: (force: boolean) => __TAURI_INVOKE('upgrade_clash_core', { force }), /** Returns one coherent core/service snapshot instead of independently refreshed state. */ - getRuntimeState: () => __TAURI_INVOKE('get_runtime_state'), + getRuntimeState: () => + __TAURI_INVOKE('get_runtime_state'), getPendingFailures: () => __TAURI_INVOKE('get_pending_failures'), getSidecarFailure: () => - __TAURI_INVOKE('get_sidecar_failure'), + __TAURI_INVOKE('get_sidecar_failure'), entryLightweightMode: () => __TAURI_INVOKE('entry_lightweight_mode'), installService: () => __TAURI_INVOKE('install_service'), @@ -45,7 +48,7 @@ export const commands = { repairService: () => __TAURI_INVOKE('repair_service'), continueWithSidecar: () => __TAURI_INVOKE('continue_with_sidecar'), syncRuntimeProviders: () => __TAURI_INVOKE('sync_runtime_providers'), - getClashInfo: () => __TAURI_INVOKE('get_clash_info'), + getClashInfo: () => __TAURI_INVOKE('get_clash_info'), patchClashConfig: (payload: YamlMapping) => __TAURI_INVOKE('patch_clash_config', { payload }), patchClashMode: (payload: string) => @@ -53,16 +56,11 @@ export const commands = { /** Reads the saved mode without depending on strict mihomo `/configs` deserialization. */ getClashMode: () => __TAURI_INVOKE('get_clash_mode'), changeClashCore: (clashCore: string) => - __TAURI_INVOKE<{ - /** Stable frontend identifier, when classified. */ - code?: string | null - /** Human-readable diagnostic detail. */ - detail: string - /** Requested operation when known by the command. */ - operation?: FailedOperation | null - } | null>('change_clash_core', { clashCore }), + __TAURI_INVOKE('change_clash_core', { + clashCore, + }), getRuntimeConfig: () => - __TAURI_INVOKE<{ [key in string]: JsonValue } | null>('get_runtime_config'), + __TAURI_INVOKE('get_runtime_config'), getProxyView: () => __TAURI_INVOKE('get_proxy_view'), getRuntimeYaml: () => __TAURI_INVOKE('get_runtime_yaml'), getRuntimeLogs: () => __TAURI_INVOKE('get_runtime_logs'), @@ -70,7 +68,7 @@ export const commands = { __TAURI_INVOKE('get_runtime_proxy_chain_config', { proxyChainExitNode, }), - updateProxyChainConfigInRuntime: (proxyChainConfig: JsonValue | null) => + updateProxyChainConfigInRuntime: (proxyChainConfig: YamlValue | null) => __TAURI_INVOKE('update_proxy_chain_config_in_runtime', { proxyChainConfig, }), @@ -100,18 +98,11 @@ export const commands = { takeDnsOverrideNotice: () => __TAURI_INVOKE('take_dns_override_notice'), takeServiceFallbackNotice: () => - __TAURI_INVOKE< - | { kind: 'unavailable' } - | { kind: 'coreRejected'; reason: string } - | { kind: 'notAutoStarted' } - | null - >('take_service_fallback_notice'), + __TAURI_INVOKE( + 'take_service_fallback_notice', + ), getCoreStartupError: () => - __TAURI_INVOKE< - | { kind: 'startFailed'; detail: string } - | { kind: 'serviceCoreStopped'; detail: string } - | null - >('get_core_startup_error'), + __TAURI_INVOKE('get_core_startup_error'), takeServiceRepairNotice: () => __TAURI_INVOKE('take_service_repair_notice'), takeServiceOwnerNotice: () => @@ -137,10 +128,12 @@ export const commands = { openDevtools: () => __TAURI_INVOKE('open_devtools'), exitApp: () => __TAURI_INVOKE('exit_app'), getNetworkInterfacesInfo: () => - __TAURI_INVOKE('get_network_interfaces_info'), + __TAURI_INVOKE( + 'get_network_interfaces_info', + ), getProfiles: () => __TAURI_INVOKE('get_profiles'), enhanceProfiles: () => __TAURI_INVOKE('enhance_profiles'), - patchProfilesConfig: (profiles: ProfileSelection) => + patchProfilesConfig: (profiles: ProfileSelection_Deserialize) => __TAURI_INVOKE('patch_profiles_config', { profiles }), viewProfile: (index: string) => __TAURI_INVOKE('view_profile', { index }), @@ -148,52 +141,12 @@ export const commands = { __TAURI_INVOKE('patch_profile', { index, profile }), createProfile: (item: ProfileCreate_Deserialize, fileData: string | null) => __TAURI_INVOKE('create_profile', { item, fileData }), - importProfile: ( - url: string, - option: { - user_agent?: string | null - with_proxy?: boolean | null - self_proxy?: boolean | null - update_interval?: number | null - /** - * HTTP request timeout in seconds - * default is 60 seconds - */ - timeout_seconds?: number | null - /** default is `false` */ - danger_accept_invalid_certs?: boolean | null - allow_auto_update?: boolean | null - merge?: string | null - script?: string | null - rules?: string | null - proxies?: string | null - groups?: string | null - } | null, - ) => __TAURI_INVOKE('import_profile', { url, option }), + importProfile: (url: string, option: PrfOption_Deserialize | null) => + __TAURI_INVOKE('import_profile', { url, option }), reorderProfile: (activeId: string, overId: string) => __TAURI_INVOKE('reorder_profile', { activeId, overId }), - updateProfile: ( - index: string, - option: { - user_agent?: string | null - with_proxy?: boolean | null - self_proxy?: boolean | null - update_interval?: number | null - /** - * HTTP request timeout in seconds - * default is 60 seconds - */ - timeout_seconds?: number | null - /** default is `false` */ - danger_accept_invalid_certs?: boolean | null - allow_auto_update?: boolean | null - merge?: string | null - script?: string | null - rules?: string | null - proxies?: string | null - groups?: string | null - } | null, - ) => __TAURI_INVOKE('update_profile', { index, option }), + updateProfile: (index: string, option: PrfOption_Deserialize | null) => + __TAURI_INVOKE('update_profile', { index, option }), deleteProfile: (index: string) => __TAURI_INVOKE('delete_profile', { index }), readProfileFile: (index: string) => @@ -221,11 +174,14 @@ export const commands = { __TAURI_INVOKE('delete_webdav_backup', { filename }), restoreWebdavBackup: (filename: string) => __TAURI_INVOKE('restore_webdav_backup', { filename }), - getUnlockItems: () => __TAURI_INVOKE('get_unlock_items'), - checkMediaUnlock: (onComplete: Channel) => - __TAURI_INVOKE('check_media_unlock', { onComplete }), + getUnlockItems: () => + __TAURI_INVOKE('get_unlock_items'), + checkMediaUnlock: (onComplete: Channel) => + __TAURI_INVOKE('check_media_unlock', { + onComplete, + }), checkMediaUnlockItem: (name: string) => - __TAURI_INVOKE('check_media_unlock_item', { name }), + __TAURI_INVOKE('check_media_unlock_item', { name }), } /* Types */ @@ -234,7 +190,20 @@ export type AutoProxy = { url: string } -export type ClashInfo = { +export type ClashInfo = ClashInfo_Serialize | ClashInfo_Deserialize + +export type ClashInfo_Deserialize = { + /** clash core port */ + mixed_port: number + socks_port: number + port: number + /** same as `external-controller` */ + server: string + /** clash secret */ + secret?: string | null +} + +export type ClashInfo_Serialize = { /** clash core port */ mixed_port: number socks_port: number @@ -252,16 +221,6 @@ export type CommandFailure = /** Structured command failure returned to the frontend. */ export type CommandFailure_Deserialize = { - /** Stable frontend identifier, when classified. */ - code: string | null - /** Human-readable diagnostic detail. */ - detail: string - /** Requested operation when known by the command. */ - operation: FailedOperation | null -} - -/** Structured command failure returned to the frontend. */ -export type CommandFailure_Serialize = { /** Stable frontend identifier, when classified. */ code?: string | null /** Human-readable diagnostic detail. */ @@ -270,6 +229,16 @@ export type CommandFailure_Serialize = { operation?: FailedOperation | null } +/** Structured command failure returned to the frontend. */ +export type CommandFailure_Serialize = { + /** Stable frontend identifier, when classified. */ + code?: string + /** Human-readable diagnostic detail. */ + detail: string + /** Requested operation when known by the command. */ + operation?: FailedOperation +} + /** Why the Core is not running, kept until a Core starts again. */ export type CoreFailure = | { kind: 'startFailed'; detail: string } @@ -290,7 +259,26 @@ export type DnsOverrideOutcome = | { status: 'confirmation_required'; source: string } /** Same wire shape as the updater plugin's JS `DownloadEvent`. */ -export type DownloadEvent = +export type DownloadEvent = DownloadEvent_Serialize | DownloadEvent_Deserialize + +/** Same wire shape as the updater plugin's JS `DownloadEvent`. */ +export type DownloadEvent_Deserialize = + | { + event: 'Started' + data: { + contentLength?: number | null + } + } + | { + event: 'Progress' + data: { + chunkLength: number + } + } + | { event: 'Finished' } + +/** Same wire shape as the updater plugin's JS `DownloadEvent`. */ +export type DownloadEvent_Serialize = | { event: 'Started' data: { @@ -330,14 +318,27 @@ export type IProfiles_Serialize = { /** ### `verge.yaml` schema */ export type IVerge = IVerge_Serialize | IVerge_Deserialize -export type IVergeTestItem = { +export type IVergeTestItem = + | IVergeTestItem_Serialize + | IVergeTestItem_Deserialize + +export type IVergeTestItem_Deserialize = { uid?: string | null name?: string | null icon?: string | null url?: string | null } -export type IVergeTheme = { +export type IVergeTestItem_Serialize = { + uid: string | null + name: string | null + icon: string | null + url: string | null +} + +export type IVergeTheme = IVergeTheme_Serialize | IVergeTheme_Deserialize + +export type IVergeTheme_Deserialize = { primary_color?: string | null secondary_color?: string | null primary_text?: string | null @@ -350,6 +351,19 @@ export type IVergeTheme = { css_injection?: string | null } +export type IVergeTheme_Serialize = { + primary_color: string | null + secondary_color: string | null + primary_text: string | null + secondary_text: string | null + info_color: string | null + error_color: string | null + warning_color: string | null + success_color: string | null + font_family: string | null + css_injection: string | null +} + /** ### `verge.yaml` schema */ export type IVerge_Deserialize = { /** silent | error | warn | info | debug | trace */ @@ -392,7 +406,7 @@ export type IVerge_Deserialize = { proxy_auto_config?: boolean | null pac_file_content?: string | null proxy_host?: string | null - theme_setting?: IVergeTheme | null + theme_setting?: IVergeTheme_Deserialize | null web_ui_list?: string[] | null clash_core?: string | null /** format: {func},{key} */ @@ -408,7 +422,7 @@ export type IVerge_Deserialize = { auto_delay_detection_interval_minutes?: number | null enable_builtin_enhanced?: boolean | null proxy_layout_column?: number | null - test_list?: IVergeTestItem[] | null + test_list?: IVergeTestItem_Deserialize[] | null /** 0: 不清理; 1: 1天;2: 7天; 3: 30天; 4: 90天 */ auto_log_clean?: number | null enable_auto_backup_schedule?: boolean | null @@ -457,13 +471,13 @@ export type IVerge_Serialize = { traffic_graph: boolean | null /** show memory info (only for Clash Meta) */ enable_memory_usage: boolean | null - enable_group_icon?: boolean | null + enable_group_icon?: boolean pause_render_traffic_stats_on_blur: boolean | null - common_tray_icon?: boolean | null - menu_icon?: string | null - menu_order?: string[] | null - proxy_group_tools_position?: string | null - notice_position?: string | null + common_tray_icon?: boolean + menu_icon?: string + menu_order?: string[] + proxy_group_tools_position?: string + notice_position?: string collapse_navbar: boolean | null sysproxy_tray_icon: boolean | null tun_tray_icon: boolean | null @@ -482,11 +496,11 @@ export type IVerge_Serialize = { proxy_auto_config: boolean | null pac_file_content: string | null proxy_host: string | null - theme_setting: IVergeTheme | null + theme_setting: IVergeTheme_Serialize | null web_ui_list: string[] | null - clash_core?: string | null + clash_core?: string /** format: {func},{key} */ - hotkeys?: string[] | null + hotkeys?: string[] enable_global_hotkey: boolean | null home_cards: JsonValue | null auto_close_connection: boolean | null @@ -498,7 +512,7 @@ export type IVerge_Serialize = { auto_delay_detection_interval_minutes: number | null enable_builtin_enhanced: boolean | null proxy_layout_column: number | null - test_list: IVergeTestItem[] | null + test_list: IVergeTestItem_Serialize[] | null /** 0: 不清理; 1: 1天;2: 7天; 3: 30天; 4: 90天 */ auto_log_clean: number | null enable_auto_backup_schedule: boolean | null @@ -510,10 +524,10 @@ export type IVerge_Serialize = { verge_socks_enabled: boolean | null verge_port: number | null verge_http_enabled: boolean | null - webdav_url?: string | null - webdav_username?: string | null - webdav_password?: string | null - tray_proxy_groups_display_mode?: string | null + webdav_url?: string + webdav_username?: string + webdav_password?: string + tray_proxy_groups_display_mode?: string tray_inline_outbound_modes: boolean | null enable_auto_light_weight_mode: boolean | null /** 自动进入轻量模式的延迟(分钟) */ @@ -573,7 +587,17 @@ export type LocalBackupFile = { content_length: number } -export type NetworkInterfaceView = { +export type NetworkInterfaceView = + | NetworkInterfaceView_Serialize + | NetworkInterfaceView_Deserialize + +export type NetworkInterfaceView_Deserialize = { + name: string + addr: InterfaceAddress[] + mac_addr?: string | null +} + +export type NetworkInterfaceView_Serialize = { name: string addr: InterfaceAddress[] mac_addr: string | null @@ -632,7 +656,20 @@ export type PendingFailure = { sequence: number } -export type PlatformVergeFields = { +export type PlatformVergeFields = + | PlatformVergeFields_Serialize + | PlatformVergeFields_Deserialize + +export type PlatformVergeFields_Deserialize = { + tray_icon?: string | null + verge_redir_port?: number | null + verge_redir_enabled?: boolean | null + verge_tproxy_port?: number | null + verge_tproxy_enabled?: boolean | null + enable_tray_speed?: boolean | null +} + +export type PlatformVergeFields_Serialize = { tray_icon?: string | null verge_redir_port?: number | null verge_redir_enabled?: boolean | null @@ -658,7 +695,7 @@ export type PrfItem_Deserialize = { file?: string | null desc?: string | null url?: string | null - selected?: PrfSelected[] | null + selected?: PrfSelected_Deserialize[] | null extra?: PrfExtra | null updated?: number | null option?: PrfOption_Deserialize | null @@ -671,13 +708,13 @@ export type PrfItem_Serialize = { type: string | null name: string | null file: string | null - desc?: string | null - url?: string | null - selected?: PrfSelected[] | null - extra?: PrfExtra | null + desc?: string + url?: string + selected?: PrfSelected_Serialize[] + extra?: PrfExtra updated: number | null - option?: PrfOption_Serialize | null - home?: string | null + option?: PrfOption_Serialize + home?: string } export type PrfOption = PrfOption_Serialize | PrfOption_Deserialize @@ -703,18 +740,18 @@ export type PrfOption_Deserialize = { } export type PrfOption_Serialize = { - user_agent?: string | null - with_proxy?: boolean | null - self_proxy?: boolean | null - update_interval?: number | null + user_agent?: string + with_proxy?: boolean + self_proxy?: boolean + update_interval?: number /** * HTTP request timeout in seconds * default is 60 seconds */ - timeout_seconds?: number | null + timeout_seconds?: number /** default is `false` */ - danger_accept_invalid_certs?: boolean | null - allow_auto_update?: boolean | null + danger_accept_invalid_certs?: boolean + allow_auto_update?: boolean merge: string | null script: string | null rules: string | null @@ -722,11 +759,18 @@ export type PrfOption_Serialize = { groups: string | null } -export type PrfSelected = { +export type PrfSelected = PrfSelected_Serialize | PrfSelected_Deserialize + +export type PrfSelected_Deserialize = { name?: string | null now?: string | null } +export type PrfSelected_Serialize = { + name: string | null + now: string | null +} + export type ProfileCreate = ProfileCreate_Serialize | ProfileCreate_Deserialize export type ProfileCreate_Deserialize = { @@ -756,7 +800,7 @@ export type ProfileDnsSettings_Deserialize = { export type ProfileDnsSettings_Serialize = { enabled: boolean - confirmation?: string | null + confirmation?: string } export type ProfilePatch = ProfilePatch_Serialize | ProfilePatch_Deserialize @@ -767,7 +811,7 @@ export type ProfilePatch_Deserialize = { desc?: string | null file?: string | null url?: string | null - selected?: PrfSelected[] | null + selected?: PrfSelected_Deserialize[] | null extra?: PrfExtra | null updated?: number | null option?: PrfOption_Deserialize | null @@ -779,16 +823,24 @@ export type ProfilePatch_Serialize = { desc: string | null file: string | null url: string | null - selected: PrfSelected[] | null + selected: PrfSelected_Serialize[] | null extra: PrfExtra | null updated: number | null option: PrfOption_Serialize | null } -export type ProfileSelection = { +export type ProfileSelection = + | ProfileSelection_Serialize + | ProfileSelection_Deserialize + +export type ProfileSelection_Deserialize = { current?: string | null } +export type ProfileSelection_Serialize = { + current: string | null +} + export type ProfileUpdatePayload = { uid: string } @@ -808,11 +860,11 @@ export type ProxyGroupView = export type ProxyGroupView_Deserialize = { name: string type: string - now: string | null - fixed: string | null - hidden: boolean | null - icon: string | null - testUrl: string | null + now?: string | null + fixed?: string | null + hidden?: boolean | null + icon?: string | null + testUrl?: string | null history: DelayHistory[] members: ProxyMemberRef[] } & ProxyCapabilities @@ -820,11 +872,11 @@ export type ProxyGroupView_Deserialize = { export type ProxyGroupView_Serialize = { name: string type: string - now?: string | null - fixed?: string | null - hidden?: boolean | null - icon?: string | null - testUrl?: string | null + now?: string + fixed?: string + hidden?: boolean + icon?: string + testUrl?: string history: DelayHistory[] members: ProxyMemberRef[] } & ProxyCapabilities @@ -850,10 +902,10 @@ export type ProxyNodeView_Deserialize = { name: string type: string history: DelayHistory[] - id: string | null - hidden: boolean | null - icon: string | null - testUrl: string | null + id?: string | null + hidden?: boolean | null + icon?: string | null + testUrl?: string | null source: ProxyNodeSource } & ProxyCapabilities @@ -862,10 +914,10 @@ export type ProxyNodeView_Serialize = { name: string type: string history: DelayHistory[] - id?: string | null - hidden?: boolean | null - icon?: string | null - testUrl?: string | null + id?: string + hidden?: boolean + icon?: string + testUrl?: string source: ProxyNodeSource } & ProxyCapabilities @@ -886,16 +938,16 @@ export type ProxyProviderView = export type ProxyProviderView_Deserialize = { name: string vehicleType: ProxyProviderVehicleType - updatedAt: string | null - subscriptionInfo: ProxySubscriptionInfo | null + updatedAt?: string | null + subscriptionInfo?: ProxySubscriptionInfo | null proxyRecordIds: string[] } export type ProxyProviderView_Serialize = { name: string vehicleType: ProxyProviderVehicleType - updatedAt?: string | null - subscriptionInfo?: ProxySubscriptionInfo | null + updatedAt?: string + subscriptionInfo?: ProxySubscriptionInfo proxyRecordIds: string[] } @@ -916,8 +968,8 @@ export type ProxyViewV1_Deserialize = { schemaVersion: number orderSource: ProxyViewOrderSource providerState: ProxyViewProviderState - global: ProxyGroupView_Deserialize | null - direct: string | null + global?: ProxyGroupView_Deserialize | null + direct?: string | null groups: ProxyGroupView_Deserialize[] records: { [key in string]: ProxyNodeView_Deserialize } standalone: string[] @@ -936,7 +988,22 @@ export type ProxyViewV1_Serialize = { providers: ProxyProviderView_Serialize[] } -export type RunStateView = { +export type RunStateView = RunStateView_Serialize | RunStateView_Deserialize + +export type RunStateView_Deserialize = { + mode: RunningMode + service: ServiceHealthKind + serviceUnavailableReason?: string | null + pendingAction?: PendingAction | null + sidecarAllowed: boolean + isAdmin: boolean + opInFlight: boolean + serviceUsable: boolean + tunCapable: boolean + serviceNeedsAttention: boolean +} + +export type RunStateView_Serialize = { mode: RunningMode service: ServiceHealthKind serviceUnavailableReason: string | null @@ -975,7 +1042,18 @@ export type ServiceInstallOutcome = | { status: 'sidecar'; reason: string } /** A removal has a revision too, so a delayed read cannot restore a resolved failure. */ -export type SidecarFailureSnapshot = { +export type SidecarFailureSnapshot = + | SidecarFailureSnapshot_Serialize + | SidecarFailureSnapshot_Deserialize + +/** A removal has a revision too, so a delayed read cannot restore a resolved failure. */ +export type SidecarFailureSnapshot_Deserialize = { + revision: number + detail?: string | null +} + +/** A removal has a revision too, so a delayed read cannot restore a resolved failure. */ +export type SidecarFailureSnapshot_Serialize = { revision: number detail: string | null } @@ -996,7 +1074,16 @@ export type ToggleableProxyPort = { port: number } -export type UnlockItem = { +export type UnlockItem = UnlockItem_Serialize | UnlockItem_Deserialize + +export type UnlockItem_Deserialize = { + name: string + status: string + region?: string | null + check_time?: string | null +} + +export type UnlockItem_Serialize = { name: string status: string region: string | null @@ -1022,7 +1109,11 @@ export type ValidationOutcome = export type ValidationSkipReason = 'exiting' | 'debounced' -export type VergeEventPayloads = { +export type VergeEventPayloads = + | VergeEventPayloads_Serialize + | VergeEventPayloads_Deserialize + +export type VergeEventPayloads_Deserialize = { 'verge://refresh-clash-config': null 'verge://refresh-verge-config': null 'verge://refresh-profiles': null @@ -1032,7 +1123,21 @@ export type VergeEventPayloads = { 'verge://timer-updated': string 'profile-update-started': ProfileUpdatePayload 'profile-update-completed': ProfileUpdatePayload - 'verge://run-state-changed': RunStateView + 'verge://run-state-changed': RunStateView_Deserialize + 'verge://pending-failures-changed': null +} + +export type VergeEventPayloads_Serialize = { + 'verge://refresh-clash-config': null + 'verge://refresh-verge-config': null + 'verge://refresh-profiles': null + 'verge://refresh-proxy-config': null + 'verge://notice-message': [NoticeStatus, string] + 'profile-changed': string + 'verge://timer-updated': string + 'profile-update-started': ProfileUpdatePayload + 'profile-update-completed': ProfileUpdatePayload + 'verge://run-state-changed': RunStateView_Serialize 'verge://pending-failures-changed': null } diff --git a/src/services/cmds.ts b/src/services/cmds.ts index f46377335..6b118d34a 100644 --- a/src/services/cmds.ts +++ b/src/services/cmds.ts @@ -19,7 +19,7 @@ import type { export type { RunningMode, - RunStateView as RunState, + RunStateView_Serialize as RunState, FailedOperation, PendingFailure, SidecarFailureSnapshot, diff --git a/src/services/contract.ts b/src/services/contract.ts index 5c1b83957..e2e09f630 100644 --- a/src/services/contract.ts +++ b/src/services/contract.ts @@ -1 +1,4 @@ -export type { NoticeStatus, VergeEventPayloads } from './bindings' +export type { + NoticeStatus, + VergeEventPayloads_Serialize as VergeEventPayloads, +} from './bindings'