From 13d496f832d2f90bed177a6748a0790fe8de7a5a Mon Sep 17 00:00:00 2001 From: "github-action[bot]" Date: Sat, 26 Oct 2024 20:32:52 +0200 Subject: [PATCH] Update On Sat Oct 26 20:32:51 CEST 2024 --- .github/update.log | 1 + clash-nyanpasu/backend/Cargo.lock | 286 ++++++++-------- clash-nyanpasu/backend/tauri/Cargo.toml | 10 +- .../tauri/gen/schemas/desktop-schema.json | 2 +- .../tauri/gen/schemas/windows-schema.json | 2 +- .../tauri/src/enhance/builtin/config_fixer.js | 6 + .../src/enhance/builtin/config_fixer.lua | 5 - .../backend/tauri/src/enhance/chain.rs | 2 +- .../tauri/src/enhance/script/lua/mod.rs | 93 +++++- clash-nyanpasu/frontend/nyanpasu/package.json | 8 +- .../src/components/proxies/group-list.tsx | 24 +- .../frontend/nyanpasu/src/routeTree.gen.ts | 9 + clash-nyanpasu/package.json | 4 +- clash-nyanpasu/pnpm-lock.yaml | 234 ++++++------- clash-verge-rev/README.md | 8 +- clash-verge-rev/UPDATELOG.md | 2 + clash-verge-rev/package.json | 4 +- clash-verge-rev/pnpm-lock.yaml | 90 ++--- clash-verge-rev/scripts/check.mjs | 46 ++- clash-verge-rev/scripts/set_dns.sh | 58 ++++ clash-verge-rev/scripts/unset_dns.sh | 22 ++ clash-verge-rev/src-tauri/Cargo.lock | 256 ++++++++------- clash-verge-rev/src-tauri/src/enhance/tun.rs | 77 +++++ clash-verge-rev/src-tauri/tauri.conf.json | 2 +- .../src-tauri/tauri.macos.conf.json | 1 + lede/package/firmware/linux-firmware/Makefile | 4 +- .../files/zzz-default-settings | 6 +- shadowsocks-rust/Cargo.lock | 75 ++--- .../crates/shadowsocks/Cargo.toml | 2 +- small/luci-app-mihomo/Makefile | 2 +- small/mihomo/Makefile | 2 +- small/mihomo/files/mihomo.init | 4 + small/v2raya/Makefile | 6 +- v2raya/gui/src/components/modalServer.vue | 6 +- v2rayn/v2rayN/AmazTool/UpgradeApp.cs | 23 +- .../ServiceLib/Handler/ClashApiHandler.cs | 2 +- .../ServiceLib/Handler/CoreConfigHandler.cs | 16 +- .../v2rayN/ServiceLib/Handler/CoreHandler.cs | 4 + v2rayn/v2rayN/ServiceLib/ServiceLib.csproj | 2 +- .../ViewModels/CheckUpdateViewModel.cs | 14 +- .../ViewModels/ClashProxiesViewModel.cs | 42 +-- .../Views/ClashProxiesView.axaml | 5 +- .../v2rayN.Desktop/v2rayN.Desktop.csproj | 1 + v2rayn/v2rayN/v2rayN/Views/MainWindow.xaml.cs | 2 + yass/CMakeLists.txt | 4 +- yt-dlp/yt_dlp/extractor/_extractors.py | 2 - yt-dlp/yt_dlp/extractor/cnn.py | 310 +++++++++++------- yt-dlp/yt_dlp/extractor/common.py | 7 +- yt-dlp/yt_dlp/extractor/niconico.py | 9 +- yt-dlp/yt_dlp/extractor/vimeo.py | 5 +- 50 files changed, 1099 insertions(+), 708 deletions(-) create mode 100644 clash-nyanpasu/backend/tauri/src/enhance/builtin/config_fixer.js delete mode 100644 clash-nyanpasu/backend/tauri/src/enhance/builtin/config_fixer.lua create mode 100644 clash-verge-rev/scripts/set_dns.sh create mode 100644 clash-verge-rev/scripts/unset_dns.sh diff --git a/.github/update.log b/.github/update.log index df6a50055a..1ecfe8ef01 100644 --- a/.github/update.log +++ b/.github/update.log @@ -805,3 +805,4 @@ Update On Tue Oct 22 20:35:01 CEST 2024 Update On Wed Oct 23 20:36:27 CEST 2024 Update On Thu Oct 24 20:36:15 CEST 2024 Update On Fri Oct 25 20:37:13 CEST 2024 +Update On Sat Oct 26 20:32:41 CEST 2024 diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock index 86e619c76f..8708ff1aa0 100644 --- a/clash-nyanpasu/backend/Cargo.lock +++ b/clash-nyanpasu/backend/Cargo.lock @@ -50,9 +50,9 @@ dependencies = [ [[package]] name = "accesskit_macos" -version = "0.17.3" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49509c722e8da39e6c569f7d13ec51620208988913e738abbc67e3c65f06e6d5" +checksum = "bfc6c1ecd82053d127961ad80a8beaa6004fb851a3a5b96506d7a6bd462403f6" dependencies = [ "accesskit", "accesskit_consumer", @@ -96,9 +96,9 @@ dependencies = [ [[package]] name = "accesskit_winit" -version = "0.22.3" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9987e852fe7e4e5a493f8c8af0b729b47da2750f0dea10a4c8984fe1117ebaec" +checksum = "aea3522719f1c44564d03e9469a8e2f3a98b3a8a880bd66d0789c6b9c4a669dd" dependencies = [ "accesskit", "accesskit_macos", @@ -264,9 +264,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" dependencies = [ "anstyle", "anstyle-parse", @@ -279,36 +279,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -411,7 +411,7 @@ dependencies = [ "url", "wayland-backend", "wayland-client", - "wayland-protocols 0.32.4", + "wayland-protocols 0.32.5", "zbus", ] @@ -709,9 +709,9 @@ dependencies = [ [[package]] name = "avif-serialize" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2" +checksum = "e335041290c43101ca215eed6f43ec437eb5a42125573f600fc3fa42b9bddd62" dependencies = [ "arrayvec 0.7.6", ] @@ -1137,9 +1137,9 @@ dependencies = [ [[package]] name = "built" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4" +checksum = "c360505aed52b7ec96a3636c3f039d99103c37d1d9b4f7a8c743d3ea9ffcd03b" [[package]] name = "bumpalo" @@ -1322,9 +1322,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.30" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "jobserver", "libc", @@ -1653,9 +1653,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" @@ -2318,7 +2318,7 @@ dependencies = [ [[package]] name = "dirs-utils" version = "0.1.0" -source = "git+https://github.com/LibNyanpasu/nyanpasu-utils.git#317a4b454ffd924c9deaaf84ed8ed9b831d84ee9" +source = "git+https://github.com/LibNyanpasu/nyanpasu-utils.git#f1b93fe1cd57b2fd2b07ea2af6c4a4da9034514b" dependencies = [ "dirs 5.0.1", "thiserror", @@ -2628,9 +2628,9 @@ checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -2873,7 +2873,7 @@ checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", - "libredox 0.1.3", + "libredox", "windows-sys 0.59.0", ] @@ -2898,6 +2898,12 @@ name = "float-cmp" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" + +[[package]] +name = "float-cmp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" dependencies = [ "num-traits", ] @@ -2913,9 +2919,9 @@ dependencies = [ [[package]] name = "flume" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" dependencies = [ "spin", ] @@ -3902,9 +3908,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", @@ -4214,15 +4220,15 @@ checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" [[package]] name = "imgref" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44feda355f4159a7c757171a77de25daf6411e217b4cabd03bd6650690468126" +checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" [[package]] name = "immutable-chunkmap" -version = "2.0.5" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4419f022e55cc63d5bbd6b44b71e1d226b9c9480a47824c706e9d54e5c40c5eb" +checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" dependencies = [ "arrayvec 0.7.6", ] @@ -4690,9 +4696,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libfuzzer-sys" @@ -4722,7 +4728,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -4741,17 +4747,6 @@ dependencies = [ "libc", ] -[[package]] -name = "libredox" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" -dependencies = [ - "bitflags 2.6.0", - "libc", - "redox_syscall 0.4.1", -] - [[package]] name = "libredox" version = "0.1.3" @@ -5500,7 +5495,7 @@ dependencies = [ [[package]] name = "nyanpasu-ipc" version = "1.0.7" -source = "git+https://github.com/LibNyanpasu/nyanpasu-service.git#e9c3d35cd357421804c40e5bb87d9abce81607b5" +source = "git+https://github.com/LibNyanpasu/nyanpasu-service.git#560746f9101d15d30985224d84646d25284d2524" dependencies = [ "anyhow", "axum", @@ -5534,7 +5529,7 @@ dependencies = [ [[package]] name = "nyanpasu-utils" version = "0.1.0" -source = "git+https://github.com/LibNyanpasu/nyanpasu-utils.git#317a4b454ffd924c9deaaf84ed8ed9b831d84ee9" +source = "git+https://github.com/LibNyanpasu/nyanpasu-utils.git#f1b93fe1cd57b2fd2b07ea2af6c4a4da9034514b" dependencies = [ "constcat", "derive_builder", @@ -5868,9 +5863,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.3.2+3.3.2" +version = "300.4.0+3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" +checksum = "a709e02f2b4aca747929cca5ed248880847c650233cf8b8cdc48f40aaf4898a6" dependencies = [ "cc", ] @@ -5896,11 +5891,11 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orbclient" -version = "0.3.47" +version = "0.3.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" +checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" dependencies = [ - "libredox 0.0.2", + "libredox", ] [[package]] @@ -5925,7 +5920,7 @@ dependencies = [ [[package]] name = "os-utils" version = "0.1.0" -source = "git+https://github.com/LibNyanpasu/nyanpasu-utils.git#317a4b454ffd924c9deaaf84ed8ed9b831d84ee9" +source = "git+https://github.com/LibNyanpasu/nyanpasu-utils.git#f1b93fe1cd57b2fd2b07ea2af6c4a4da9034514b" dependencies = [ "nix 0.29.0", "shared_child", @@ -5976,9 +5971,9 @@ checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56" [[package]] name = "oxc_allocator" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b951072744cf013eb767d9f61d29b6605e0ae747b05d3da4778a010f3ffa260d" +checksum = "b5c86018e4c158687698514494cb02b48b0367fd63e463c7b3846e565df53f46" dependencies = [ "allocator-api2", "bumpalo", @@ -5986,9 +5981,9 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bccf1b681ed1f6babc3a72241823599ba78ac07b60d31d0ec029182b6bf72cde" +checksum = "761ab257d19f07de7f91bab40fd7b232e6e0c68164b9086434f416e960f28149" dependencies = [ "bitflags 2.6.0", "num-bigint", @@ -6002,9 +5997,9 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830a9d68d1378023bdaca765a636e3f5608751949ed6f6b2d20708a13412cf21" +checksum = "a58d52ec144ec10c6c890a5356f7859510aa37e3e2839abd91e419969628302e" dependencies = [ "proc-macro2", "quote", @@ -6013,9 +6008,9 @@ dependencies = [ [[package]] name = "oxc_diagnostics" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5739c0992540324c4b9f9e7e9c3e3f1263e07e16f26dfaae566a2a9c4492e16" +checksum = "980c673834c9b2fa15eb2692d418df45c84294771fd364ab53f9abdf4d3e874b" dependencies = [ "miette", "owo-colors", @@ -6026,9 +6021,9 @@ dependencies = [ [[package]] name = "oxc_ecmascript" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a6cf3633dd508c3f864e7723a2db4087f2467702081aca2095821b5b4648b8" +checksum = "20243d6de6301a5265c85d9d8007bf3044be5311906ba1686570de67743904a3" dependencies = [ "num-bigint", "num-traits", @@ -6039,21 +6034,21 @@ dependencies = [ [[package]] name = "oxc_estree" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e473cefef347ff5e4774a297d55fd84c405e5a457a6a48cdc0289b50637a0d" +checksum = "7c30428989d3af8c8d868ec5fdd3e227865bbf7bc875e47785de368968282234" [[package]] name = "oxc_index" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74ac390082ad5964110a384e117f8d61bde137d5a1548d9a3f30abbbbfd38700" +checksum = "2c33b9c780ed9ea47548248450b04da65b1e4e8023157403c37407a3210b675a" [[package]] name = "oxc_parser" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09157972bc9a1c13be84a676409b8716b5d4659a54d34e519eae733fd7321529" +checksum = "22251ed2d64a743481450f64e5d279193165b637dc3dce6f5eaa3eeb494d470b" dependencies = [ "assert-unchecked", "bitflags 2.6.0", @@ -6074,9 +6069,9 @@ dependencies = [ [[package]] name = "oxc_regular_expression" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b0e9930f3a3042866b93e69c5718aeba59259cd6bcbae8631a452f417ca14f4" +checksum = "fbd944dbd4a2b479bda4e29472e1489bb3abd9efbf8a84397fbe3259944b39b4" dependencies = [ "oxc_allocator", "oxc_ast_macros", @@ -6090,9 +6085,9 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "517f9a331c761341bc9279a3aa83e963c7e340a3790ad1b841b17d356e24580c" +checksum = "74ea8734bdf818608fe5b92322ef1ad56c56896d83052b5d477f0197d09e7f15" dependencies = [ "compact_str", "miette", @@ -6103,9 +6098,9 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f10879bd61d0af333b0dacf9746355e0cd82a6fd579695436c4640e54b6891a" +checksum = "14ecf5a5134b738088f1a56fbae78aa4e478b07f27b5f4db3c07734e0c9e005a" dependencies = [ "assert-unchecked", "bitflags 2.6.0", @@ -6219,9 +6214,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", "thiserror", @@ -6230,9 +6225,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" dependencies = [ "pest", "pest_generator", @@ -6240,9 +6235,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" dependencies = [ "pest", "pest_meta", @@ -6253,9 +6248,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" dependencies = [ "once_cell", "pest", @@ -6424,18 +6419,18 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", @@ -6444,9 +6439,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -6585,9 +6580,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", "syn 2.0.85", @@ -6662,18 +6657,18 @@ dependencies = [ [[package]] name = "profiling" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" +checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" dependencies = [ "profiling-procmacros", ] [[package]] name = "profiling-procmacros" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" +checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" dependencies = [ "quote", "syn 2.0.85", @@ -6906,9 +6901,9 @@ dependencies = [ [[package]] name = "ravif" -version = "0.11.10" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f0bfd976333248de2078d350bfdf182ff96e168a24d23d2436cef320dd4bdd" +checksum = "2413fd96bd0ea5cdeeb37eaf446a22e6ed7b981d792828721e74ded1980a45c6" dependencies = [ "avif-serialize", "imgref", @@ -6990,7 +6985,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", - "libredox 0.1.3", + "libredox", "thiserror", ] @@ -7016,9 +7011,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -7327,9 +7322,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.14" +version = "0.23.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" +checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" dependencies = [ "log", "once_cell", @@ -7351,9 +7346,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustls-webpki" @@ -7368,9 +7363,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "rustybuzz" @@ -7687,7 +7682,7 @@ dependencies = [ [[package]] name = "serde_yaml_ng" version = "0.10.0" -source = "git+https://github.com/libnyanpasu/serde-yaml-ng.git#a5e8dac340d5e4f1275fa7869a5eee2abd6b518c" +source = "git+https://github.com/libnyanpasu/serde-yaml-ng.git#35bb2380acd886667df58b057406cd565e54212d" dependencies = [ "indexmap 2.6.0", "itoa 1.0.11", @@ -7987,8 +7982,8 @@ dependencies = [ "wayland-client", "wayland-csd-frame", "wayland-cursor", - "wayland-protocols 0.32.4", - "wayland-protocols-wlr 0.3.4", + "wayland-protocols 0.32.5", + "wayland-protocols-wlr 0.3.5", "wayland-scanner", "xkeysym", ] @@ -8130,7 +8125,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" dependencies = [ - "float-cmp", + "float-cmp 0.9.0", ] [[package]] @@ -8532,9 +8527,9 @@ dependencies = [ [[package]] name = "tauri-plugin" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e6660a409963e4d57b9bfab4addd141eeff41bd3a7fb14e13004a832cf7ef6" +checksum = "6fa4e6c94cb1d635f65a770c69e23de1bc054b0e4c554fa037a7cc7676333d39" dependencies = [ "anyhow", "glob", @@ -9395,9 +9390,9 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533fc2d4105e0e3d96ce1c71f2d308c9fbbe2ef9c587cab63dd627ab5bde218f" +checksum = "7c92af36a182b46206723bdf8a7942e20838cde1cf062e5b97854d57eb01763b" dependencies = [ "core-graphics 0.24.0", "crossbeam-channel", @@ -9545,12 +9540,9 @@ dependencies = [ [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-bidi" @@ -9572,9 +9564,9 @@ checksum = "260bc6647b3893a9a90668360803a15f96b85a5257b1c3a0c3daf6ae2496de42" [[package]] name = "unicode-id-start" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97e2a3c5fc9de285c0e805d98eba666adb4b2d9e1049ce44821ff7707cc34e91" +checksum = "2f322b60f6b9736017344fa0635d64be2f458fbc04eef65f6be22976dd1ffd5b" [[package]] name = "unicode-ident" @@ -9815,11 +9807,11 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-trait" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcaa56177466248ba59d693a048c0959ddb67f1151b963f904306312548cf392" +checksum = "9170e001f458781e92711d2ad666110f153e4e50bfd5cbd02db6547625714187" dependencies = [ - "float-cmp", + "float-cmp 0.10.0", "halfbrown", "itoa 1.0.11", "ryu", @@ -10005,9 +9997,9 @@ checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-streams" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -10032,9 +10024,9 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.6" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3f45d1222915ef1fd2057220c1d9d9624b7654443ea35c3877f7a52bd0a5a2d" +checksum = "b66249d3fc69f76fd74c82cc319300faa554e9d865dab1f7cd66cc20db10b280" dependencies = [ "bitflags 2.6.0", "rustix", @@ -10055,9 +10047,9 @@ dependencies = [ [[package]] name = "wayland-cursor" -version = "0.31.6" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a94697e66e76c85923b0d28a0c251e8f0666f58fc47d316c0f4da6da75d37cb" +checksum = "32b08bc3aafdb0035e7fe0fdf17ba0c09c268732707dca4ae098f60cb28c9e4c" dependencies = [ "rustix", "wayland-client", @@ -10078,9 +10070,9 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.32.4" +version = "0.32.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b5755d77ae9040bb872a25026555ce4cb0ae75fd923e90d25fba07d81057de0" +checksum = "7cd0ade57c4e6e9a8952741325c30bf82f4246885dca8bf561898b86d0c1f58e" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -10090,14 +10082,14 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0a41a6875e585172495f7a96dfa42ca7e0213868f4f15c313f7c33221a7eff" +checksum = "9b31cab548ee68c7eb155517f2212049dc151f7cd7910c2b66abfd31c3ee12bd" dependencies = [ "bitflags 2.6.0", "wayland-backend", "wayland-client", - "wayland-protocols 0.32.4", + "wayland-protocols 0.32.5", "wayland-scanner", ] @@ -10116,14 +10108,14 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad87b5fd1b1d3ca2f792df8f686a2a11e3fe1077b71096f7a175ab699f89109" +checksum = "782e12f6cd923c3c316130d56205ebab53f55d6666b7faddfad36cecaeeb4022" dependencies = [ "bitflags 2.6.0", "wayland-backend", "wayland-client", - "wayland-protocols 0.32.4", + "wayland-protocols 0.32.5", "wayland-scanner", ] @@ -10952,7 +10944,7 @@ dependencies = [ "wasm-bindgen-futures", "wayland-backend", "wayland-client", - "wayland-protocols 0.32.4", + "wayland-protocols 0.32.5", "wayland-protocols-plasma", "web-sys", "web-time", @@ -11010,9 +11002,9 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "wry" -version = "0.46.1" +version = "0.46.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f8c948dc5f7c23bd93ba03b85b7f679852589bb78e150424d993171e4ef7b73" +checksum = "cd5cdf57c66813d97601181349c63b96994b3074fc3d7a31a8cce96e968e3bbd" dependencies = [ "base64 0.22.1", "block2", diff --git a/clash-nyanpasu/backend/tauri/Cargo.toml b/clash-nyanpasu/backend/tauri/Cargo.toml index 8752035664..3eb4dc47d3 100644 --- a/clash-nyanpasu/backend/tauri/Cargo.toml +++ b/clash-nyanpasu/backend/tauri/Cargo.toml @@ -149,11 +149,11 @@ display-info = "0.5.0" # should be removed after upgrading to tauri v2 # OXC (The Oxidation Compiler) # We use it to parse and transpile the old script profile to esm based script profile -oxc_parser = "0.33" -oxc_allocator = "0.33" -oxc_span = "0.33" -oxc_ast = "0.33" -oxc_syntax = "0.33" +oxc_parser = "0.34" +oxc_allocator = "0.34" +oxc_span = "0.34" +oxc_ast = "0.34" +oxc_syntax = "0.34" # Lua Integration mlua = { version = "0.9", features = [ diff --git a/clash-nyanpasu/backend/tauri/gen/schemas/desktop-schema.json b/clash-nyanpasu/backend/tauri/gen/schemas/desktop-schema.json index 633cff4c10..78d8749916 100644 --- a/clash-nyanpasu/backend/tauri/gen/schemas/desktop-schema.json +++ b/clash-nyanpasu/backend/tauri/gen/schemas/desktop-schema.json @@ -37,7 +37,7 @@ ], "definitions": { "Capability": { - "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", "type": "object", "required": [ "identifier", diff --git a/clash-nyanpasu/backend/tauri/gen/schemas/windows-schema.json b/clash-nyanpasu/backend/tauri/gen/schemas/windows-schema.json index 633cff4c10..78d8749916 100644 --- a/clash-nyanpasu/backend/tauri/gen/schemas/windows-schema.json +++ b/clash-nyanpasu/backend/tauri/gen/schemas/windows-schema.json @@ -37,7 +37,7 @@ ], "definitions": { "Capability": { - "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", "type": "object", "required": [ "identifier", diff --git a/clash-nyanpasu/backend/tauri/src/enhance/builtin/config_fixer.js b/clash-nyanpasu/backend/tauri/src/enhance/builtin/config_fixer.js new file mode 100644 index 0000000000..b62760c167 --- /dev/null +++ b/clash-nyanpasu/backend/tauri/src/enhance/builtin/config_fixer.js @@ -0,0 +1,6 @@ +export default function main(params) { + if (typeof params["log-level"] === "boolean") { + params["log-level"] = "debug"; + } + return params; +} diff --git a/clash-nyanpasu/backend/tauri/src/enhance/builtin/config_fixer.lua b/clash-nyanpasu/backend/tauri/src/enhance/builtin/config_fixer.lua deleted file mode 100644 index ccb4c535d1..0000000000 --- a/clash-nyanpasu/backend/tauri/src/enhance/builtin/config_fixer.lua +++ /dev/null @@ -1,5 +0,0 @@ -if type(config['log-level']) == 'boolean' then - config['log-level'] = 'debug' -end - -return config diff --git a/clash-nyanpasu/backend/tauri/src/enhance/chain.rs b/clash-nyanpasu/backend/tauri/src/enhance/chain.rs index 9684450dd5..0c1cceaba7 100644 --- a/clash-nyanpasu/backend/tauri/src/enhance/chain.rs +++ b/clash-nyanpasu/backend/tauri/src/enhance/chain.rs @@ -146,7 +146,7 @@ impl ChainItem { // 修复配置的一些问题 let config_fixer = ChainItem::to_script( "config_fixer", - ChainTypeWrapper::new_lua(include_str!("./builtin/config_fixer.lua").to_string()), + ChainTypeWrapper::new_js(include_str!("./builtin/config_fixer.js").to_string()), ); // 移除或转换 Clash Rs 不支持的字段 diff --git a/clash-nyanpasu/backend/tauri/src/enhance/script/lua/mod.rs b/clash-nyanpasu/backend/tauri/src/enhance/script/lua/mod.rs index 115ef5cd35..7d40cf1438 100644 --- a/clash-nyanpasu/backend/tauri/src/enhance/script/lua/mod.rs +++ b/clash-nyanpasu/backend/tauri/src/enhance/script/lua/mod.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use anyhow::Error; use mlua::prelude::*; use parking_lot::Mutex; -use serde_yaml::Mapping; +use serde_yaml::{Mapping, Value}; use crate::enhance::{runner::wrap_result, utils::take_logs, Logs, LogsExt}; @@ -48,6 +48,48 @@ fn create_console(lua: &Lua, logger: Arc>>) -> Result<(), any Ok(()) } +/// This is a workaround for mihomo's yaml config based on the index of the map. +/// We compare the keys of the index order of the original mapping with the target mapping, +/// and then we correct the order of the target mapping. +/// This is a recursive call, so it will correct the order of the nested mapping. +fn correct_original_mapping_order(target: &mut Value, original: &Value) { + if !target.is_mapping() && !target.is_sequence() { + return; + } + + match (target, original) { + (Value::Mapping(target_mapping), Value::Mapping(original_mapping)) => { + let original_keys: Vec<_> = original_mapping.keys().collect(); + let mut new_mapping = serde_yaml::Mapping::new(); + + for key in original_keys { + if let Some(mut value) = target_mapping.remove(key) { + if let Some(original_value) = original_mapping.get(key) { + correct_original_mapping_order(&mut value, original_value); + } + new_mapping.insert(key.clone(), value); + } + } + + let remaining_keys = target_mapping.keys().cloned().collect::>(); + for key in remaining_keys { + if let Some(value) = target_mapping.remove(&key) { + new_mapping.insert(key, value); + } + } + + *target_mapping = new_mapping; + } + (Value::Sequence(target), Value::Sequence(original)) if target.len() == original.len() => { + for (target_value, original_value) in target.iter_mut().zip(original.iter()) { + // TODO: Maybe here exist a bug when the mappings was not in the same order + correct_original_mapping_order(target_value, original_value); + } + } + _ => {} + } +} + pub struct LuaRunner; #[async_trait::async_trait] @@ -60,7 +102,7 @@ impl Runner for LuaRunner { let file = wrap_result!(tokio::fs::read_to_string(path).await); self.process_honey(mapping, &file).await } - + // TODO: Keep the order of the dictionary structure in the configuration when processing lua. Because mihomo needs ordered dictionaries for dns policy. async fn process_honey(&self, mapping: Mapping, script: &str) -> ProcessOutput { let lua = wrap_result!(create_lua_context()); let logger = Arc::new(Mutex::new(Some(Logs::new()))); @@ -96,6 +138,13 @@ impl Runner for LuaRunner { .context("Failed to convert output to config"), take_logs(logger) ); + + // Correct the order of the mapping + correct_original_mapping_order( + &mut Value::Mapping(config.clone()), + &Value::Mapping(mapping), + ); + (Ok(config), take_logs(logger)) } } @@ -141,4 +190,44 @@ mod tests { let expected = serde_yaml::from_str::(expected).unwrap(); assert_eq!(expected, result.unwrap()); } + + #[test] + // TODO: use more common test case + fn test_correct_original_mapping_order() { + use super::*; + use serde_yaml::Mapping; + + let mut target = serde_yaml::from_str::( + r#" + proxies: + - 123 + - 12312 + - asdxxx + shoud_remove: 123 + "#, + ) + .unwrap(); + let original = serde_yaml::from_str::( + r#" + shoud_remove: 123 + proxies: + - 123 + - 12312 + - asdxxx + "#, + ) + .unwrap(); + correct_original_mapping_order(&mut target, &original); + let expected = serde_yaml::from_str::( + r#" + shoud_remove: 123 + proxies: + - 123 + - 12312 + - asdxxx + "#, + ) + .unwrap(); + assert_eq!(expected, target); + } } diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index 2f3e13841e..d0997959a3 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -21,7 +21,7 @@ "@mui/material": "6.1.5", "@nyanpasu/interface": "workspace:^", "@nyanpasu/ui": "workspace:^", - "@tanstack/router-zod-adapter": "1.76.1", + "@tanstack/router-zod-adapter": "1.76.3", "@tauri-apps/api": "2.0.3", "@types/json-schema": "7.0.15", "ahooks": "3.8.1", @@ -52,10 +52,10 @@ "@csstools/normalize.css": "12.1.1", "@emotion/babel-plugin": "11.12.0", "@emotion/react": "11.13.3", - "@iconify/json": "2.2.263", + "@iconify/json": "2.2.264", "@monaco-editor/react": "4.6.0", - "@tanstack/react-router": "1.76.1", - "@tanstack/router-devtools": "1.76.1", + "@tanstack/react-router": "1.76.3", + "@tanstack/router-devtools": "1.76.3", "@tanstack/router-plugin": "1.76.0", "@tauri-apps/plugin-clipboard-manager": "2.0.0", "@tauri-apps/plugin-dialog": "2.0.1", diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/proxies/group-list.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/proxies/group-list.tsx index 8a1231145b..bd038a006b 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/proxies/group-list.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/proxies/group-list.tsx @@ -69,22 +69,20 @@ export const GroupList = ({ if (!data?.groups) { return []; } - if (!deferredProxiesFilter) { - return data.groups; - } + return data.groups.filter((group) => { - return ( - !(group.hidden ?? false) && - (group.name + const filterMatches = + !deferredProxiesFilter || + group.name .toLowerCase() .includes(deferredProxiesFilter.toLowerCase()) || - group.all?.some((proxy) => { - return proxy.name - .toLowerCase() - .includes(deferredProxiesFilter.toLowerCase()); - }) || - false) - ); + group.all?.some((proxy) => { + return proxy.name + .toLowerCase() + .includes(deferredProxiesFilter.toLowerCase()); + }) || + false; + return !(group.hidden ?? false) && filterMatches; }); }, [data?.groups, deferredProxiesFilter]); diff --git a/clash-nyanpasu/frontend/nyanpasu/src/routeTree.gen.ts b/clash-nyanpasu/frontend/nyanpasu/src/routeTree.gen.ts index 07de3b686c..1cce0fa4b1 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/routeTree.gen.ts +++ b/clash-nyanpasu/frontend/nyanpasu/src/routeTree.gen.ts @@ -25,41 +25,49 @@ import { Route as IndexImport } from './pages/index' // Create/Update Routes const SettingsRoute = SettingsImport.update({ + id: '/settings', path: '/settings', getParentRoute: () => rootRoute, } as any) const RulesRoute = RulesImport.update({ + id: '/rules', path: '/rules', getParentRoute: () => rootRoute, } as any) const ProxiesRoute = ProxiesImport.update({ + id: '/proxies', path: '/proxies', getParentRoute: () => rootRoute, } as any) const ProvidersRoute = ProvidersImport.update({ + id: '/providers', path: '/providers', getParentRoute: () => rootRoute, } as any) const ProfilesRoute = ProfilesImport.update({ + id: '/profiles', path: '/profiles', getParentRoute: () => rootRoute, } as any) const LogsRoute = LogsImport.update({ + id: '/logs', path: '/logs', getParentRoute: () => rootRoute, } as any) const DashboardRoute = DashboardImport.update({ + id: '/dashboard', path: '/dashboard', getParentRoute: () => rootRoute, } as any) const ConnectionsRoute = ConnectionsImport.update({ + id: '/connections', path: '/connections', getParentRoute: () => rootRoute, } as any) @@ -70,6 +78,7 @@ const LayoutRoute = LayoutImport.update({ } as any) const IndexRoute = IndexImport.update({ + id: '/', path: '/', getParentRoute: () => rootRoute, } as any) diff --git a/clash-nyanpasu/package.json b/clash-nyanpasu/package.json index 7ad00af8f2..c9d810933c 100644 --- a/clash-nyanpasu/package.json +++ b/clash-nyanpasu/package.json @@ -63,7 +63,7 @@ "@tauri-apps/cli": "2.0.4", "@types/fs-extra": "11.0.4", "@types/lodash-es": "4.17.12", - "@types/node": "22.8.0", + "@types/node": "22.8.1", "@typescript-eslint/eslint-plugin": "8.11.0", "@typescript-eslint/parser": "8.11.0", "autoprefixer": "10.4.20", @@ -84,7 +84,7 @@ "eslint-plugin-react-hooks": "4.6.2", "knip": "5.34.0", "lint-staged": "15.2.10", - "npm-run-all2": "6.2.6", + "npm-run-all2": "7.0.1", "postcss": "8.4.47", "postcss-html": "1.7.0", "postcss-import": "16.1.0", diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml index 5273f2c082..3d57d28bf3 100644 --- a/clash-nyanpasu/pnpm-lock.yaml +++ b/clash-nyanpasu/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: devDependencies: '@commitlint/cli': specifier: 19.5.0 - version: 19.5.0(@types/node@22.8.0)(typescript@5.6.3) + version: 19.5.0(@types/node@22.8.1)(typescript@5.6.3) '@commitlint/config-conventional': specifier: 19.5.0 version: 19.5.0 @@ -39,8 +39,8 @@ importers: specifier: 4.17.12 version: 4.17.12 '@types/node': - specifier: 22.8.0 - version: 22.8.0 + specifier: 22.8.1 + version: 22.8.1 '@typescript-eslint/eslint-plugin': specifier: 8.11.0 version: 8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) @@ -97,13 +97,13 @@ importers: version: 4.6.2(eslint@8.57.1) knip: specifier: 5.34.0 - version: 5.34.0(@types/node@22.8.0)(typescript@5.6.3) + version: 5.34.0(@types/node@22.8.1)(typescript@5.6.3) lint-staged: specifier: 15.2.10 version: 15.2.10 npm-run-all2: - specifier: 6.2.6 - version: 6.2.6 + specifier: 7.0.1 + version: 7.0.1 postcss: specifier: 8.4.47 version: 8.4.47 @@ -217,8 +217,8 @@ importers: specifier: workspace:^ version: link:../ui '@tanstack/router-zod-adapter': - specifier: 1.76.1 - version: 1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(zod@3.23.8) + specifier: 1.76.3 + version: 1.76.3(@tanstack/react-router@1.76.3(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(zod@3.23.8) '@tauri-apps/api': specifier: 2.0.3 version: 2.0.3 @@ -305,20 +305,20 @@ importers: specifier: 11.13.3 version: 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@iconify/json': - specifier: 2.2.263 - version: 2.2.263 + specifier: 2.2.264 + version: 2.2.264 '@monaco-editor/react': specifier: 4.6.0 version: 4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) '@tanstack/react-router': - specifier: 1.76.1 - version: 1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) + specifier: 1.76.3 + version: 1.76.3(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) '@tanstack/router-devtools': - specifier: 1.76.1 - version: 1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(csstype@3.1.3)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) + specifier: 1.76.3 + version: 1.76.3(@tanstack/react-router@1.76.3(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(csstype@3.1.3)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) '@tanstack/router-plugin': specifier: 1.76.0 - version: 1.76.0(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3) + version: 1.76.0(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3) '@tauri-apps/plugin-clipboard-manager': specifier: 2.0.0 version: 2.0.0 @@ -354,10 +354,10 @@ importers: version: 13.12.2 '@vitejs/plugin-react': specifier: 4.3.3 - version: 4.3.3(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 4.3.3(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) '@vitejs/plugin-react-swc': specifier: 3.7.1 - version: 3.7.1(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 3.7.1(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) change-case: specifier: 5.4.4 version: 5.4.4 @@ -396,16 +396,16 @@ importers: version: 13.12.0 vite: specifier: 5.4.10 - version: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + version: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) vite-plugin-sass-dts: specifier: 1.3.29 - version: 1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) vite-plugin-svgr: specifier: 4.2.0 - version: 4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) vite-tsconfig-paths: specifier: 5.0.1 - version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) zod: specifier: 3.23.8 version: 3.23.8 @@ -441,7 +441,7 @@ importers: version: types-react@19.0.0-rc.1 '@vitejs/plugin-react': specifier: 4.3.3 - version: 4.3.3(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 4.3.3(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) ahooks: specifier: 3.8.1 version: 3.8.1(react@19.0.0-rc-cae764ce-20241025) @@ -468,10 +468,10 @@ importers: version: 17.5.1(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) vite: specifier: 5.4.10 - version: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + version: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) vite-tsconfig-paths: specifier: 5.0.1 - version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) devDependencies: '@emotion/react': specifier: 11.13.3 @@ -496,7 +496,7 @@ importers: version: 5.1.0(typescript@5.6.3) vite-plugin-dts: specifier: 4.3.0 - version: 4.3.0(@types/node@22.8.0)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 4.3.0(@types/node@22.8.1)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) scripts: dependencies: @@ -1373,8 +1373,8 @@ packages: '@vue/compiler-sfc': optional: true - '@iconify/json@2.2.263': - resolution: {integrity: sha512-pY6Jpfz76F+OURDt5+J9njuQSzOLKECA3ah8C210T9VfXdtkpkYWA6+l6ZCHOvhABjcoGjBvcTub8HV9QNacrw==} + '@iconify/json@2.2.264': + resolution: {integrity: sha512-yT8LqVC+WiOaE+UGQAy7Big7On+oCImkcQTIgrocvDezGOtispxfyg1bpT3gUedIsPwMW+Onwhj1awOl+sWrxw==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -2303,8 +2303,8 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/react-router@1.76.1': - resolution: {integrity: sha512-d8W1Uszni3kecOSseg2CSm+8X4RuhIzoJ14YYtJ6KtjQRkM/t44GSzt8DglVldo3v3xeh4FiVRvtCQ41hZ1MZw==} + '@tanstack/react-router@1.76.3': + resolution: {integrity: sha512-1ORoGN2crarV6blPBQ8tbf2YTwGX7Gw2eRwTLHY/8zKPwxZQb+TCIUu47ABoUjqw0lVUIrFUDPav+pdQJBF4lg==} engines: {node: '>=12'} peerDependencies: '@tanstack/router-generator': 1.74.2 @@ -2333,11 +2333,11 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@tanstack/router-devtools@1.76.1': - resolution: {integrity: sha512-baN1DzE6sVaYivOIBNHxmPEUvGm57RZ6T/5VR9tx19A3K7n3rnmybnpuUsdzqJzWWT2WAO7J8NIH6wvHuWZLgA==} + '@tanstack/router-devtools@1.76.3': + resolution: {integrity: sha512-r0meAw47MBnjmTBd7kwqQsOhFAvWjCHCjy1U9hoiC/pU/gCwJEHgtMkb0A7cQ1ByNWf8V7wr7US/BRF0mCqgRg==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.76.1 + '@tanstack/react-router': ^1.76.3 react: '>=18' react-dom: '>=18' @@ -2360,8 +2360,8 @@ packages: webpack: optional: true - '@tanstack/router-zod-adapter@1.76.1': - resolution: {integrity: sha512-+PYKW7kV91ZATJcMaaCSR5tZUKlBmiVo1cRA7taAJfn/aDmUqzUCp5PVCtlOu0Myp+txmO78oKJyULLH36ovWw==} + '@tanstack/router-zod-adapter@1.76.3': + resolution: {integrity: sha512-hw1wGgHdwoYFwgZpOnUR69SBvRUiagJAz+swRDfq3sMUvBBiG/433TDllGKLjDVjv65CG+BT8Y6w18oneWc+Dg==} engines: {node: '>=12'} peerDependencies: '@tanstack/react-router': '>=1.43.2' @@ -2668,8 +2668,8 @@ packages: '@types/node@22.5.0': resolution: {integrity: sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==} - '@types/node@22.8.0': - resolution: {integrity: sha512-84rafSBHC/z1i1E3p0cJwKA+CfYDNSXX9WSZBRopjIzLET8oNt6ht2tei4C7izwDeEiLLfdeSVBv1egOH916hg==} + '@types/node@22.8.1': + resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -4752,6 +4752,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + iterator.prototype@1.1.3: resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} engines: {node: '>= 0.4'} @@ -4821,9 +4825,9 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@3.0.2: - resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + json-parse-even-better-errors@4.0.0: + resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} + engines: {node: ^18.17.0 || >=20.5.0} json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -5353,13 +5357,13 @@ packages: normalize.css@8.0.1: resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} - npm-normalize-package-bin@3.0.1: - resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + npm-normalize-package-bin@4.0.0: + resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} + engines: {node: ^18.17.0 || >=20.5.0} - npm-run-all2@6.2.6: - resolution: {integrity: sha512-tkyb4pc0Zb0oOswCb5tORPk9MvVL6gcDq1cMItQHmsbVk1skk7YF6cH+UU2GxeNLHMuk6wFEOSmEmJ2cnAK1jg==} - engines: {node: ^14.18.0 || ^16.13.0 || >=18.0.0, npm: '>= 8'} + npm-run-all2@7.0.1: + resolution: {integrity: sha512-Adbv+bJQ8UTAM03rRODqrO5cx0YU5KCG2CvHtSURiadvdTjjgGJXdbc1oQ9CXBh9dnGfHSoSB1Web/0Dzp6kOQ==} + engines: {node: ^18.17.0 || >=20.5.0, npm: '>= 9'} hasBin: true npm-run-path@2.0.2: @@ -5983,9 +5987,9 @@ packages: read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-package-json-fast@3.0.2: - resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + read-package-json-fast@4.0.0: + resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==} + engines: {node: ^18.17.0 || >=20.5.0} readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -7153,9 +7157,9 @@ packages: engines: {node: '>= 8'} hasBin: true - which@3.0.1: - resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + engines: {node: ^18.17.0 || >=20.5.0} hasBin: true widest-line@2.0.1: @@ -7672,11 +7676,11 @@ snapshots: '@bufbuild/protobuf@1.10.0': {} - '@commitlint/cli@19.5.0(@types/node@22.8.0)(typescript@5.6.3)': + '@commitlint/cli@19.5.0(@types/node@22.8.1)(typescript@5.6.3)': dependencies: '@commitlint/format': 19.5.0 '@commitlint/lint': 19.5.0 - '@commitlint/load': 19.5.0(@types/node@22.8.0)(typescript@5.6.3) + '@commitlint/load': 19.5.0(@types/node@22.8.1)(typescript@5.6.3) '@commitlint/read': 19.5.0 '@commitlint/types': 19.5.0 tinyexec: 0.3.0 @@ -7723,7 +7727,7 @@ snapshots: '@commitlint/rules': 19.5.0 '@commitlint/types': 19.5.0 - '@commitlint/load@19.5.0(@types/node@22.8.0)(typescript@5.6.3)': + '@commitlint/load@19.5.0(@types/node@22.8.1)(typescript@5.6.3)': dependencies: '@commitlint/config-validator': 19.5.0 '@commitlint/execute-rule': 19.5.0 @@ -7731,7 +7735,7 @@ snapshots: '@commitlint/types': 19.5.0 chalk: 5.3.0 cosmiconfig: 9.0.0(typescript@5.6.3) - cosmiconfig-typescript-loader: 5.0.0(@types/node@22.8.0)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@22.8.1)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -8153,7 +8157,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@iconify/json@2.2.263': + '@iconify/json@2.2.264': dependencies: '@iconify/types': 2.0.0 pathe: 1.1.2 @@ -8206,23 +8210,23 @@ snapshots: '@material/material-color-utilities@0.3.0': {} - '@microsoft/api-extractor-model@7.29.8(@types/node@22.8.0)': + '@microsoft/api-extractor-model@7.29.8(@types/node@22.8.1)': dependencies: '@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.9.0(@types/node@22.8.0) + '@rushstack/node-core-library': 5.9.0(@types/node@22.8.1) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.47.11(@types/node@22.8.0)': + '@microsoft/api-extractor@7.47.11(@types/node@22.8.1)': dependencies: - '@microsoft/api-extractor-model': 7.29.8(@types/node@22.8.0) + '@microsoft/api-extractor-model': 7.29.8(@types/node@22.8.1) '@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.9.0(@types/node@22.8.0) + '@rushstack/node-core-library': 5.9.0(@types/node@22.8.1) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.2(@types/node@22.8.0) - '@rushstack/ts-command-line': 4.23.0(@types/node@22.8.0) + '@rushstack/terminal': 0.14.2(@types/node@22.8.1) + '@rushstack/ts-command-line': 4.23.0(@types/node@22.8.1) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -8856,7 +8860,7 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@rushstack/node-core-library@5.9.0(@types/node@22.8.0)': + '@rushstack/node-core-library@5.9.0(@types/node@22.8.1)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -8867,23 +8871,23 @@ snapshots: resolve: 1.22.8 semver: 7.5.4 optionalDependencies: - '@types/node': 22.8.0 + '@types/node': 22.8.1 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.14.2(@types/node@22.8.0)': + '@rushstack/terminal@0.14.2(@types/node@22.8.1)': dependencies: - '@rushstack/node-core-library': 5.9.0(@types/node@22.8.0) + '@rushstack/node-core-library': 5.9.0(@types/node@22.8.1) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.8.0 + '@types/node': 22.8.1 - '@rushstack/ts-command-line@4.23.0(@types/node@22.8.0)': + '@rushstack/ts-command-line@4.23.0(@types/node@22.8.1)': dependencies: - '@rushstack/terminal': 0.14.2(@types/node@22.8.0) + '@rushstack/terminal': 0.14.2(@types/node@22.8.1) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -9057,7 +9061,7 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': + '@tanstack/react-router@1.76.3(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: '@tanstack/history': 1.61.1 '@tanstack/react-store': 0.5.6(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) @@ -9087,9 +9091,9 @@ snapshots: react: 19.0.0-rc-cae764ce-20241025 react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) - '@tanstack/router-devtools@1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(csstype@3.1.3)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': + '@tanstack/router-devtools@1.76.3(@tanstack/react-router@1.76.3(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(csstype@3.1.3)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: - '@tanstack/react-router': 1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) + '@tanstack/react-router': 1.76.3(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) react: 19.0.0-rc-cae764ce-20241025 @@ -9104,7 +9108,7 @@ snapshots: tsx: 4.19.1 zod: 3.23.8 - '@tanstack/router-plugin@1.76.0(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3)': + '@tanstack/router-plugin@1.76.0(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3)': dependencies: '@babel/core': 7.25.8 '@babel/generator': 7.25.7 @@ -9125,14 +9129,14 @@ snapshots: unplugin: 1.14.1(webpack-sources@3.2.3) zod: 3.23.8 optionalDependencies: - vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - supports-color - webpack-sources - '@tanstack/router-zod-adapter@1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(zod@3.23.8)': + '@tanstack/router-zod-adapter@1.76.3(@tanstack/react-router@1.76.3(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(zod@3.23.8)': dependencies: - '@tanstack/react-router': 1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) + '@tanstack/react-router': 1.76.3(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) zod: 3.23.8 '@tanstack/store@0.5.5': {} @@ -9272,12 +9276,12 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.8.0 + '@types/node': 22.8.1 '@types/responselike': 1.0.3 '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 22.8.0 + '@types/node': 22.8.1 '@types/d3-array@3.2.1': {} @@ -9413,7 +9417,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.8.0 + '@types/node': 22.8.1 '@types/geojson@7946.0.14': {} @@ -9431,11 +9435,11 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.8.0 + '@types/node': 22.8.1 '@types/keyv@3.1.4': dependencies: - '@types/node': 22.8.0 + '@types/node': 22.8.1 '@types/lodash-es@4.17.12': dependencies: @@ -9455,7 +9459,7 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@22.8.0': + '@types/node@22.8.1': dependencies: undici-types: 6.19.8 @@ -9477,7 +9481,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 22.8.0 + '@types/node': 22.8.1 '@types/retry@0.12.2': {} @@ -9489,7 +9493,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.8.0 + '@types/node': 22.8.1 optional: true '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': @@ -9575,21 +9579,21 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react-swc@3.7.1(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))': + '@vitejs/plugin-react-swc@3.7.1(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))': dependencies: '@swc/core': 1.7.26 - vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))': + '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))': dependencies: '@babel/core': 7.25.8 '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.25.8) '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.25.8) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - supports-color @@ -10182,9 +10186,9 @@ snapshots: dependencies: toggle-selection: 1.0.6 - cosmiconfig-typescript-loader@5.0.0(@types/node@22.8.0)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): + cosmiconfig-typescript-loader@5.0.0(@types/node@22.8.1)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): dependencies: - '@types/node': 22.8.0 + '@types/node': 22.8.1 cosmiconfig: 9.0.0(typescript@5.6.3) jiti: 1.21.6 typescript: 5.6.3 @@ -11808,6 +11812,8 @@ snapshots: isexe@2.0.0: {} + isexe@3.1.1: {} + iterator.prototype@1.1.3: dependencies: define-properties: 1.2.1 @@ -11858,7 +11864,7 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@3.0.2: {} + json-parse-even-better-errors@4.0.0: {} json-schema-traverse@0.4.1: {} @@ -11904,11 +11910,11 @@ snapshots: kind-of@6.0.3: {} - knip@5.34.0(@types/node@22.8.0)(typescript@5.6.3): + knip@5.34.0(@types/node@22.8.1)(typescript@5.6.3): dependencies: '@nodelib/fs.walk': 1.2.8 '@snyk/github-codeowners': 1.1.0 - '@types/node': 22.8.0 + '@types/node': 22.8.1 easy-table: 1.2.0 enhanced-resolve: 5.17.1 fast-glob: 3.3.2 @@ -12513,18 +12519,18 @@ snapshots: normalize.css@8.0.1: {} - npm-normalize-package-bin@3.0.1: {} + npm-normalize-package-bin@4.0.0: {} - npm-run-all2@6.2.6: + npm-run-all2@7.0.1: dependencies: ansi-styles: 6.2.1 cross-spawn: 7.0.3 memorystream: 0.3.1 minimatch: 9.0.5 pidtree: 0.6.0 - read-package-json-fast: 3.0.2 + read-package-json-fast: 4.0.0 shell-quote: 1.8.1 - which: 3.0.1 + which: 5.0.0 npm-run-path@2.0.2: dependencies: @@ -13103,10 +13109,10 @@ snapshots: dependencies: pify: 2.3.0 - read-package-json-fast@3.0.2: + read-package-json-fast@4.0.0: dependencies: - json-parse-even-better-errors: 3.0.2 - npm-normalize-package-bin: 3.0.1 + json-parse-even-better-errors: 4.0.0 + npm-normalize-package-bin: 4.0.0 readdirp@3.6.0: dependencies: @@ -14287,9 +14293,9 @@ snapshots: - rollup - supports-color - vite-plugin-dts@4.3.0(@types/node@22.8.0)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): + vite-plugin-dts@4.3.0(@types/node@22.8.1)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): dependencies: - '@microsoft/api-extractor': 7.47.11(@types/node@22.8.0) + '@microsoft/api-extractor': 7.47.11(@types/node@22.8.1) '@rollup/pluginutils': 5.1.0(rollup@4.21.0) '@volar/typescript': 2.4.5 '@vue/language-core': 2.1.6(typescript@5.6.3) @@ -14300,49 +14306,49 @@ snapshots: magic-string: 0.30.11 typescript: 5.6.3 optionalDependencies: - vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-sass-dts@1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): + vite-plugin-sass-dts@1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): dependencies: postcss: 8.4.47 postcss-js: 4.0.1(postcss@8.4.47) prettier: 3.3.3 sass-embedded: 1.78.0 - vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) - vite-plugin-svgr@4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): + vite-plugin-svgr@4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.21.0) '@svgr/core': 8.1.0(typescript@5.6.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3)) - vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite-tsconfig-paths@5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): + vite-tsconfig-paths@5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.6.3) optionalDependencies: - vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0): + vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.0 optionalDependencies: - '@types/node': 22.8.0 + '@types/node': 22.8.1 fsevents: 2.3.3 less: 4.2.0 sass: 1.80.4 @@ -14433,9 +14439,9 @@ snapshots: dependencies: isexe: 2.0.0 - which@3.0.1: + which@5.0.0: dependencies: - isexe: 2.0.0 + isexe: 3.1.1 widest-line@2.0.1: dependencies: diff --git a/clash-verge-rev/README.md b/clash-verge-rev/README.md index 23395a6ba5..091c12db4d 100644 --- a/clash-verge-rev/README.md +++ b/clash-verge-rev/README.md @@ -25,21 +25,21 @@ Supports Windows (x64/x86), Linux (x64/arm64) and macOS 10.15+ (intel/apple). --- -### TG Group: [@clash_verge_rev](https://t.me/clash_verge_rev) +### TG 频道: [@clash_verge_rev](https://t.me/clash_verge_re) ## Promotion -[狗狗加速 —— 技术流机场 Doggygo VPN](https://狗狗加速.com) +[狗狗加速 —— 技术流机场 Doggygo VPN](https://verge.dginv.click/#/register?code=oaxsAGo6) - 高性能海外机场,免费试用,优惠套餐,解锁流媒体,全球首家支持 Hysteria 协议。 -- 使用 Clash Verge 专属邀请链接注册送 3 天,每天 1G 流量免费试用:https://verge.狗狗加速.com/#/register?code=oaxsAGo6 +- 使用 Clash Verge 专属邀请链接注册送 3 天,每天 1G 流量免费试用:https://verge.dginv.click/#/register?code=oaxsAGo6 - Clash Verge 专属 8 折优惠码: verge20 (仅有 500 份) - 优惠套餐每月仅需 15.8 元,160G 流量,年付 8 折 - 海外团队,无跑路风险,高达 50% 返佣 - 集群负载均衡设计,高速专线(兼容老客户端),极低延迟,无视晚高峰,4K 秒开 - 全球首家 Hysteria 协议机场,现已上线更快的 `Hysteria2` 协议(Clash Verge 客户端最佳搭配) - 解锁流媒体及 ChatGPT -- 官网:https://狗狗加速.com +- 官网:[https://狗狗加速.com](https://verge.dginv.click/#/register?code=oaxsAGo6) ## Features diff --git a/clash-verge-rev/UPDATELOG.md b/clash-verge-rev/UPDATELOG.md index 2b8e84008d..7b6598bdcb 100644 --- a/clash-verge-rev/UPDATELOG.md +++ b/clash-verge-rev/UPDATELOG.md @@ -23,6 +23,7 @@ - 改进多处文本表述 - 加入图标 svg 格式检测 - 增加更多 app 调试日志 +- 添加 MacOS 下白色桌面的 tray 黑色配色(但会代理系统代理、tun 模式图标失效的问题) ### Performance @@ -40,6 +41,7 @@ - 移除多余退出变量和钩子 - 修复 MacOS 下 tray 菜单重启 app 失效的问题 - 修复某些特定配置文件载入失败的问题 +- 修复 MacOS 下 tun 模式 fakeip 不生效的问题 --- diff --git a/clash-verge-rev/package.json b/clash-verge-rev/package.json index 26e4b9e343..f90cb4a561 100644 --- a/clash-verge-rev/package.json +++ b/clash-verge-rev/package.json @@ -1,6 +1,6 @@ { "name": "clash-verge", - "version": "2.0.0-rc.3", + "version": "2.0.0-rc.4", "license": "GPL-3.0-only", "scripts": { "dev": "cross-env RUST_BACKTRACE=1 tauri dev", @@ -70,7 +70,7 @@ }, "devDependencies": { "@actions/github": "^5.1.1", - "@tauri-apps/cli": "2.0.3", + "@tauri-apps/cli": "2.0.4", "@types/js-cookie": "^3.0.6", "@types/js-yaml": "^4.0.9", "@types/lodash-es": "^4.17.12", diff --git a/clash-verge-rev/pnpm-lock.yaml b/clash-verge-rev/pnpm-lock.yaml index baec87c380..aacba8391a 100644 --- a/clash-verge-rev/pnpm-lock.yaml +++ b/clash-verge-rev/pnpm-lock.yaml @@ -159,8 +159,8 @@ importers: specifier: ^5.1.1 version: 5.1.1 "@tauri-apps/cli": - specifier: 2.0.3 - version: 2.0.3 + specifier: 2.0.4 + version: 2.0.4 "@types/js-cookie": specifier: ^3.0.6 version: 3.0.6 @@ -2113,100 +2113,100 @@ packages: integrity: sha512-UNiIhhKG08j4ooss2oEEVexffmWkgkYlC2M3GcX3VPtNsqFgVNL8Mcw/4Y7rO9M9S+ffAMnLOF5ypzyuyb8tyg==, } - "@tauri-apps/cli-darwin-arm64@2.0.3": + "@tauri-apps/cli-darwin-arm64@2.0.4": resolution: { - integrity: sha512-jIsbxGWS+As1ZN7umo90nkql/ZAbrDK0GBT6UsgHSz5zSwwArICsZFFwE1pLZip5yoiV5mn3TGG2c1+v+0puzQ==, + integrity: sha512-siH7rOHobb16rPbc11k64p1mxIpiRCkWmzs2qmL5IX21Gx9K5onI3Tk67Oqpf2uNupbYzItrOttaDT4NHFC7tw==, } engines: { node: ">= 10" } cpu: [arm64] os: [darwin] - "@tauri-apps/cli-darwin-x64@2.0.3": + "@tauri-apps/cli-darwin-x64@2.0.4": resolution: { - integrity: sha512-ROITHtLTA1muyrwgyuwyasmaLCGtT4as/Kd1kerXaSDtFcYrnxiM984ZD0+FDUEDl5BgXtYa/sKKkKQFjgmM0A==, + integrity: sha512-zIccfbCoZMfmUpnk6PFCV0keFyfVj1A9XV3Oiiitj/dkTZ9CQvzjhX3XC0XcK4rsTWegfr2PjSrK06aiPAROAw==, } engines: { node: ">= 10" } cpu: [x64] os: [darwin] - "@tauri-apps/cli-linux-arm-gnueabihf@2.0.3": + "@tauri-apps/cli-linux-arm-gnueabihf@2.0.4": resolution: { - integrity: sha512-bQ3EZwCFfrLg/ZQ2I8sLuifSxESz4TP56SleTkKsPtTIZgNnKpM88PRDz4neiRroHVOq8NK0X276qi9LjGcXPw==, + integrity: sha512-fgQqJzefOGWCBNg4yrVA82Rg4s1XQr5K0dc2rCxBhJfa696e8dQ1LDrnWq/AiO5r+uHfVaoQTIUvxxpFicYRSA==, } engines: { node: ">= 10" } cpu: [arm] os: [linux] - "@tauri-apps/cli-linux-arm64-gnu@2.0.3": + "@tauri-apps/cli-linux-arm64-gnu@2.0.4": resolution: { - integrity: sha512-aLfAA8P9OTErVUk3sATxtXqpAtlfDPMPp4fGjDysEELG/MyekGhmh2k/kG/i32OdPeCfO+Nr37wJksARJKubGw==, + integrity: sha512-u8wbt5tPA9pI6j+d7jGrfOz9UVCiTp+IYzKNiIqlrDsAjqAUFaNXYHKqOUboeFWEmI4zoCWj6LgpS2OJTQ5FKg==, } engines: { node: ">= 10" } cpu: [arm64] os: [linux] - "@tauri-apps/cli-linux-arm64-musl@2.0.3": + "@tauri-apps/cli-linux-arm64-musl@2.0.4": resolution: { - integrity: sha512-I4MVD7nf6lLLRmNQPpe5beEIFM6q7Zkmh77ROA5BNu/+vHNL5kiTMD+bmd10ZL2r753A6pO7AvqkIxcBuIl0tg==, + integrity: sha512-hntF1V8e3V1hlrESm93PsghDhf3lA5pbvFrRfYxU1c+fVD/jRXGVw8BH3O1lW8MWwhEg1YdhKk01oAgsuHLuig==, } engines: { node: ">= 10" } cpu: [arm64] os: [linux] - "@tauri-apps/cli-linux-x64-gnu@2.0.3": + "@tauri-apps/cli-linux-x64-gnu@2.0.4": resolution: { - integrity: sha512-C6Jkx2zZGKkoi+sg5FK9GoH/0EvAaOgrZfF5azV5EALGba46g7VpWcZgp9zFUd7K2IzTi+0OOY8TQ2OVfKZgew==, + integrity: sha512-Iq1GGJb+oT1T0ZV8izrgf0cBtlzPCJaWcNueRbf1ZXquMf+FSTyQv+/Lo8rq5T6buOIJOH7cAOTuEWWqiCZteg==, } engines: { node: ">= 10" } cpu: [x64] os: [linux] - "@tauri-apps/cli-linux-x64-musl@2.0.3": + "@tauri-apps/cli-linux-x64-musl@2.0.4": resolution: { - integrity: sha512-qi4ghmTfSAl+EEUDwmwI9AJUiOLNSmU1RgiGgcPRE+7A/W+Am9UnxYySAiRbB/gJgTl9sj/pqH5Y9duP1/sqHg==, + integrity: sha512-9NTk6Pf0bSwXqCBdAA+PDYts9HeHebZzIo8mbRzRyUbER6QngG5HZb9Ka36Z1QWtJjdRy6uxSb4zb/9NuTeHfA==, } engines: { node: ">= 10" } cpu: [x64] os: [linux] - "@tauri-apps/cli-win32-arm64-msvc@2.0.3": + "@tauri-apps/cli-win32-arm64-msvc@2.0.4": resolution: { - integrity: sha512-UXxHkYmFesC97qVmZre4vY7oDxRDtC2OeKNv0bH+iSnuUp/ROxzJYGyaelnv9Ybvgl4YVqDCnxgB28qMM938TA==, + integrity: sha512-OF2e9oxiBFR8A8wVMOhUx9QGN/I1ZkquWC7gVQBnA56nx9PabJlDT08QBy5UD8USqZFVznnfNr2ehlheQahb3g==, } engines: { node: ">= 10" } cpu: [arm64] os: [win32] - "@tauri-apps/cli-win32-ia32-msvc@2.0.3": + "@tauri-apps/cli-win32-ia32-msvc@2.0.4": resolution: { - integrity: sha512-D+xoaa35RGlkXDpnL5uDTpj29untuC5Wp6bN9snfgFDagD0wnFfC8+2ZQGu16bD0IteWqDI0OSoIXhNvy+F+wg==, + integrity: sha512-T+hCKB3rFP6q0saHHtR02hm6wr1ZPJ0Mkii3oRTxjPG6BBXoVzHNCYzvdgEGJPTA2sFuAQtJH764NRtNlDMifw==, } engines: { node: ">= 10" } cpu: [ia32] os: [win32] - "@tauri-apps/cli-win32-x64-msvc@2.0.3": + "@tauri-apps/cli-win32-x64-msvc@2.0.4": resolution: { - integrity: sha512-eWV9XWb4dSYHXl13OtYWLjX1JHphUEkHkkGwJrhr8qFBm7RbxXxQvrsUEprSi51ug/dwJenjJgM4zR8By4htfw==, + integrity: sha512-GVaiI3KWRFLomjJmApHqihhYlkJ+7FqhumhVfBO6Z2tWzZjQyVQgTdNp0kYEuW2WoAYEj0dKY6qd4YM33xYcUA==, } engines: { node: ">= 10" } cpu: [x64] os: [win32] - "@tauri-apps/cli@2.0.3": + "@tauri-apps/cli@2.0.4": resolution: { - integrity: sha512-JwEyhc5BAVpn4E8kxzY/h7+bVOiXQdudR1r3ODMfyyumZBfgIWqpD/WuTcPq6Yjchju1BSS+80jAE/oYwI/RKg==, + integrity: sha512-Hl9eFXz+O366+6su9PfaSzu2EJdFe1p8K8ghkWmi40dz8VmSE7vsMTaOStD0I71ckSOkh2ICDX7FQTBgjlpjWw==, } engines: { node: ">= 10" } hasBin: true @@ -6296,48 +6296,48 @@ snapshots: "@tauri-apps/api@2.0.0-rc.4": {} - "@tauri-apps/cli-darwin-arm64@2.0.3": + "@tauri-apps/cli-darwin-arm64@2.0.4": optional: true - "@tauri-apps/cli-darwin-x64@2.0.3": + "@tauri-apps/cli-darwin-x64@2.0.4": optional: true - "@tauri-apps/cli-linux-arm-gnueabihf@2.0.3": + "@tauri-apps/cli-linux-arm-gnueabihf@2.0.4": optional: true - "@tauri-apps/cli-linux-arm64-gnu@2.0.3": + "@tauri-apps/cli-linux-arm64-gnu@2.0.4": optional: true - "@tauri-apps/cli-linux-arm64-musl@2.0.3": + "@tauri-apps/cli-linux-arm64-musl@2.0.4": optional: true - "@tauri-apps/cli-linux-x64-gnu@2.0.3": + "@tauri-apps/cli-linux-x64-gnu@2.0.4": optional: true - "@tauri-apps/cli-linux-x64-musl@2.0.3": + "@tauri-apps/cli-linux-x64-musl@2.0.4": optional: true - "@tauri-apps/cli-win32-arm64-msvc@2.0.3": + "@tauri-apps/cli-win32-arm64-msvc@2.0.4": optional: true - "@tauri-apps/cli-win32-ia32-msvc@2.0.3": + "@tauri-apps/cli-win32-ia32-msvc@2.0.4": optional: true - "@tauri-apps/cli-win32-x64-msvc@2.0.3": + "@tauri-apps/cli-win32-x64-msvc@2.0.4": optional: true - "@tauri-apps/cli@2.0.3": + "@tauri-apps/cli@2.0.4": optionalDependencies: - "@tauri-apps/cli-darwin-arm64": 2.0.3 - "@tauri-apps/cli-darwin-x64": 2.0.3 - "@tauri-apps/cli-linux-arm-gnueabihf": 2.0.3 - "@tauri-apps/cli-linux-arm64-gnu": 2.0.3 - "@tauri-apps/cli-linux-arm64-musl": 2.0.3 - "@tauri-apps/cli-linux-x64-gnu": 2.0.3 - "@tauri-apps/cli-linux-x64-musl": 2.0.3 - "@tauri-apps/cli-win32-arm64-msvc": 2.0.3 - "@tauri-apps/cli-win32-ia32-msvc": 2.0.3 - "@tauri-apps/cli-win32-x64-msvc": 2.0.3 + "@tauri-apps/cli-darwin-arm64": 2.0.4 + "@tauri-apps/cli-darwin-x64": 2.0.4 + "@tauri-apps/cli-linux-arm-gnueabihf": 2.0.4 + "@tauri-apps/cli-linux-arm64-gnu": 2.0.4 + "@tauri-apps/cli-linux-arm64-musl": 2.0.4 + "@tauri-apps/cli-linux-x64-gnu": 2.0.4 + "@tauri-apps/cli-linux-x64-musl": 2.0.4 + "@tauri-apps/cli-win32-arm64-msvc": 2.0.4 + "@tauri-apps/cli-win32-ia32-msvc": 2.0.4 + "@tauri-apps/cli-win32-x64-msvc": 2.0.4 "@tauri-apps/plugin-clipboard-manager@2.0.0-rc.0": dependencies: diff --git a/clash-verge-rev/scripts/check.mjs b/clash-verge-rev/scripts/check.mjs index bf75cbacd4..a2e4cd709d 100644 --- a/clash-verge-rev/scripts/check.mjs +++ b/clash-verge-rev/scripts/check.mjs @@ -279,27 +279,50 @@ async function resolveSidecar(binInfo) { } } +const resolveSetDnsScript = () => + resolveResource({ + file: "set_dns.sh", + localPath: path.join(cwd, "scripts/set_dns.sh"), + }); +const resolveUnSetDnsScript = () => + resolveResource({ + file: "unset_dns.sh", + localPath: path.join(cwd, "scripts/unset_dns.sh"), + }); + /** * download the file to the resources dir */ async function resolveResource(binInfo) { - const { file, downloadURL } = binInfo; + const { file, downloadURL, localPath } = binInfo; const resDir = path.join(cwd, "src-tauri/resources"); const targetPath = path.join(resDir, file); if (!FORCE && fs.existsSync(targetPath)) return; - await fsp.mkdir(resDir, { recursive: true }); - await downloadFile(downloadURL, targetPath); + if (downloadURL) { + await fsp.mkdir(resDir, { recursive: true }); + await downloadFile(downloadURL, targetPath); + } + + if (localPath) { + await fs.copyFile(localPath, targetPath, (err) => { + if (err) { + console.error("Error copying file:", err); + } else { + console.log("File was copied successfully"); + } + }); + log_debug(`copy file finished: "${localPath}"`); + } log_success(`${file} finished`); } /** * download file and save to `path` - */ -async function downloadFile(url, path) { + */ async function downloadFile(url, path) { const options = {}; const httpProxy = @@ -474,6 +497,18 @@ const tasks = [ retry: 5, winOnly: true, }, + { + name: "set_dns_script", + func: resolveSetDnsScript, + retry: 5, + macosOnly: true, + }, + { + name: "unset_dns_script", + func: resolveUnSetDnsScript, + retry: 5, + macosOnly: true, + }, ]; async function runTask() { @@ -482,6 +517,7 @@ async function runTask() { if (task.winOnly && platform !== "win32") return runTask(); if (task.linuxOnly && platform !== "linux") return runTask(); if (task.unixOnly && platform === "win32") return runTask(); + if (task.macosOnly && platform !== "darwin") return runTask(); for (let i = 0; i < task.retry; i++) { try { diff --git a/clash-verge-rev/scripts/set_dns.sh b/clash-verge-rev/scripts/set_dns.sh new file mode 100644 index 0000000000..011adf7595 --- /dev/null +++ b/clash-verge-rev/scripts/set_dns.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +function is_valid_ip() { + local ip=$1 + local IFS='.' + local -a octets + + if [[ ! $ip =~ ^([0-9]+\.){3}[0-9]+$ ]]; then + return 1 + fi + + read -r -a octets <<<"$ip" + + if [ "${#octets[@]}" -ne 4 ]; then + return 1 + fi + + for octet in "${octets[@]}"; do + if ! [[ "$octet" =~ ^[0-9]+$ ]] || ((octet < 0 || octet > 255)); then + return 1 + fi + done + + return 0 +} + +if [ $# -lt 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +if ! is_valid_ip "$1"; then + echo "$1 is not a valid IP address." + exit 1 +fi + +nic=$(route -n get default | grep "interface" | awk '{print $2}') +hardware_port=$(networksetup -listallhardwareports | awk -v dev="$nic" ' + /Hardware Port:/{ + port=$0; gsub("Hardware Port: ", "", port) + } + /Device: /{ + if ($2 == dev) { + print port; + exit + } + } +') + +original_dns=$(networksetup -getdnsservers "$hardware_port") + +if [ ${#original_dns} -gt 15 ]; then + echo "Empty" >original_dns.txt +else + echo $original_dns >original_dns.txt +fi + +networksetup -setdnsservers "$hardware_port" "$1" diff --git a/clash-verge-rev/scripts/unset_dns.sh b/clash-verge-rev/scripts/unset_dns.sh new file mode 100644 index 0000000000..9d98aff147 --- /dev/null +++ b/clash-verge-rev/scripts/unset_dns.sh @@ -0,0 +1,22 @@ +#!/bin/bash +nic=$(route -n get default | grep "interface" | awk '{print $2}') + +hardware_port=$(networksetup -listallhardwareports | awk -v dev="$nic" ' + /Hardware Port:/{ + port=$0; gsub("Hardware Port: ", "", port) + } + /Device: /{ + if ($2 == dev) { + print port; + exit + } + } +') + +if [ -f original_dns.txt ]; then + original_dns=$(cat original_dns.txt) +else + original_dns=$(networksetup -getdnsservers "$hardware_port") +fi + +networksetup -setdnsservers "$hardware_port" $original_dns diff --git a/clash-verge-rev/src-tauri/Cargo.lock b/clash-verge-rev/src-tauri/Cargo.lock index 39c76f2d4a..7346320b10 100644 --- a/clash-verge-rev/src-tauri/Cargo.lock +++ b/clash-verge-rev/src-tauri/Cargo.lock @@ -89,9 +89,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.90" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" [[package]] name = "arbitrary" @@ -134,7 +134,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -349,7 +349,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -389,7 +389,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -406,7 +406,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -725,7 +725,7 @@ checksum = "240f4126219a83519bad05c9a40bfc0303921eeb571fc2d7e44c17ffac99d3f1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", "synstructure", ] @@ -769,9 +769,9 @@ dependencies = [ [[package]] name = "brotli" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -817,7 +817,7 @@ checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -834,9 +834,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" dependencies = [ "serde", ] @@ -1123,7 +1123,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f76990911f2267d837d9d0ad060aa63aaad170af40904b29461734c339030d4d" dependencies = [ "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -1338,7 +1338,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -1348,7 +1348,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -1372,7 +1372,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -1383,7 +1383,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -1473,7 +1473,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -1486,7 +1486,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -1632,7 +1632,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -1664,7 +1664,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -1746,9 +1746,9 @@ checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1777,7 +1777,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -1996,7 +1996,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -2114,7 +2114,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -2379,7 +2379,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -2475,7 +2475,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -2987,7 +2987,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -3109,7 +3109,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -3273,7 +3273,19 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" dependencies = [ - "jsonptr", + "jsonptr 0.4.7", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr 0.6.3", "serde", "serde_json", "thiserror", @@ -3290,6 +3302,16 @@ dependencies = [ "serde_json", ] +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "keyboard-types" version = "0.7.0" @@ -3923,7 +3945,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -3973,7 +3995,7 @@ dependencies = [ "proc-macro-crate 2.0.2", "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -4288,7 +4310,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -4473,7 +4495,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -4601,7 +4623,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -4633,29 +4655,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -4828,9 +4850,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.88" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -4851,7 +4873,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" dependencies = [ "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -4874,7 +4896,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -5169,9 +5191,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -5511,7 +5533,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -5613,9 +5635,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" dependencies = [ "serde_derive", ] @@ -5643,13 +5665,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -5660,7 +5682,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -5683,7 +5705,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -5734,7 +5756,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -6081,9 +6103,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.81" +version = "2.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "198514704ca887dd5a1e408c6c6cdcba43672f9b4062e1b24aa34e74e6d7faae" +checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" dependencies = [ "proc-macro2", "quote", @@ -6113,7 +6135,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -6225,7 +6247,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -6253,9 +6275,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tauri" -version = "2.0.5" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce2818e803ce3097987296623ed8c0d9f65ed93b4137ff9a83e168bdbf62932" +checksum = "d3889b392db6d32a105d3757230ea0220090b8f94c90d3e60b6c5eb91178ab1b" dependencies = [ "anyhow", "bytes", @@ -6306,16 +6328,16 @@ dependencies = [ [[package]] name = "tauri-build" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "935f9b3c49b22b3e2e485a57f46d61cd1ae07b1cbb2ba87387a387caf2d8c4e7" +checksum = "9f96827ccfb1aa40d55d0ded79562d18ba18566657a553f992a982d755148376" dependencies = [ "anyhow", "cargo_toml", "dirs 5.0.1", "glob", "heck 0.5.0", - "json-patch", + "json-patch 3.0.1", "schemars", "semver 1.0.23", "serde", @@ -6328,14 +6350,14 @@ dependencies = [ [[package]] name = "tauri-codegen" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95d7443dd4f0b597704b6a14b964ee2ed16e99928d8e6292ae9825f09fbcd30e" +checksum = "8947f16f47becd9e9cd39b74ee337fd1981574d78819be18e4384d85e5a0b82f" dependencies = [ "base64 0.22.1", "brotli", "ico", - "json-patch", + "json-patch 2.0.0", "plist", "png", "proc-macro2", @@ -6344,7 +6366,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "syn 2.0.81", + "syn 2.0.85", "tauri-utils", "thiserror", "time", @@ -6355,23 +6377,23 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d2c0963ccfc3f5194415f2cce7acc975942a8797fbabfb0aa1ed6f59326ae7f" +checksum = "8bd1c8d4a66799d3438747c3a79705cd665a95d6f24cb5f315413ff7a981fe2a" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", "tauri-codegen", "tauri-utils", ] [[package]] name = "tauri-plugin" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e6660a409963e4d57b9bfab4addd141eeff41bd3a7fb14e13004a832cf7ef6" +checksum = "6fa4e6c94cb1d635f65a770c69e23de1bc054b0e4c554fa037a7cc7676333d39" dependencies = [ "anyhow", "glob", @@ -6449,9 +6471,9 @@ dependencies = [ [[package]] name = "tauri-plugin-dialog" -version = "2.0.2" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff33d09331cc22bf4771a2633b62afc1038e36273eef22bff12f53d33decd91" +checksum = "4307310e1d2c09ab110235834722e7c2b85099b683e1eb7342ab351b0be5ada3" dependencies = [ "log", "raw-window-handle 0.6.2", @@ -6467,9 +6489,9 @@ dependencies = [ [[package]] name = "tauri-plugin-fs" -version = "2.0.2" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d0816b27207c29aaff632c73b702785140cf16fe6150c201a2720245b8ea88" +checksum = "96ba7d46e86db8c830d143ef90ab5a453328365b0cc834c24edea4267b16aba0" dependencies = [ "anyhow", "dunce", @@ -6583,9 +6605,9 @@ dependencies = [ [[package]] name = "tauri-runtime" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f437293d6f5e5dce829250f4dbdce4e0b52905e297a6689cc2963eb53ac728" +checksum = "a1ef7363e7229ac8d04e8a5d405670dbd43dde8fc4bc3bc56105c35452d03784" dependencies = [ "dpi", "gtk", @@ -6602,9 +6624,9 @@ dependencies = [ [[package]] name = "tauri-runtime-wry" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1431602bcc71f2f840ad623915c9842ecc32999b867c4a787d975a17a9625cc6" +checksum = "62fa2068e8498ad007b54d5773d03d57c3ff6dd96f8c8ce58beff44d0d5e0d30" dependencies = [ "gtk", "http 1.1.0", @@ -6629,9 +6651,9 @@ dependencies = [ [[package]] name = "tauri-utils" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c38b0230d6880cf6dd07b6d7dd7789a0869f98ac12146e0d18d1c1049215a045" +checksum = "1fc65d6f5c54e56b66258948a6d9e47a82ea41f4b5a7612bfbdd1634c2913ed0" dependencies = [ "brotli", "cargo_metadata", @@ -6640,7 +6662,7 @@ dependencies = [ "glob", "html5ever", "infer", - "json-patch", + "json-patch 2.0.0", "kuchikiki", "log", "memchr", @@ -6776,22 +6798,22 @@ checksum = "a38c90d48152c236a3ab59271da4f4ae63d678c5d7ad6b7714d7cb9760be5e4b" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -6895,9 +6917,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -6930,7 +6952,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -7179,7 +7201,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -7626,7 +7648,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", "wasm-bindgen-shared", ] @@ -7660,7 +7682,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -7673,9 +7695,9 @@ checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-streams" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -7700,9 +7722,9 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.6" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3f45d1222915ef1fd2057220c1d9d9624b7654443ea35c3877f7a52bd0a5a2d" +checksum = "b66249d3fc69f76fd74c82cc319300faa554e9d865dab1f7cd66cc20db10b280" dependencies = [ "bitflags 2.6.0", "rustix 0.38.37", @@ -7712,9 +7734,9 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.32.4" +version = "0.32.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b5755d77ae9040bb872a25026555ce4cb0ae75fd923e90d25fba07d81057de0" +checksum = "7cd0ade57c4e6e9a8952741325c30bf82f4246885dca8bf561898b86d0c1f58e" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -7829,7 +7851,7 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -8002,7 +8024,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -8013,7 +8035,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -8024,7 +8046,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -8035,7 +8057,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -8046,7 +8068,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -8057,7 +8079,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -8384,9 +8406,9 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "wry" -version = "0.46.2" +version = "0.46.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa1c8c760041c64ce6be99f83d6cb55fe3fcd85a1ad46d32895f6e65cee87ba" +checksum = "cd5cdf57c66813d97601181349c63b96994b3074fc3d7a31a8cce96e968e3bbd" dependencies = [ "base64 0.22.1", "block2", @@ -8509,7 +8531,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", "synstructure", ] @@ -8596,7 +8618,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] @@ -8616,7 +8638,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", "synstructure", ] @@ -8645,7 +8667,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.81", + "syn 2.0.85", ] [[package]] diff --git a/clash-verge-rev/src-tauri/src/enhance/tun.rs b/clash-verge-rev/src-tauri/src/enhance/tun.rs index 9e7446df4d..87c78efada 100644 --- a/clash-verge-rev/src-tauri/src/enhance/tun.rs +++ b/clash-verge-rev/src-tauri/src/enhance/tun.rs @@ -35,8 +35,12 @@ pub async fn use_tun(mut config: Mapping, enable: bool) -> Mapping { revise!(dns_val, "ip-v6", true); revise!(dns_val, "enhanced-mode", "fake-ip"); revise!(dns_val, "fake-ip-range", "10.96.0.0/16"); + #[cfg(target_os = "macos")] + set_public_dns("10.96.0.2".to_string()).await; } else { revise!(dns_val, "enhanced-mode", "redir-host"); + #[cfg(target_os = "macos")] + restore_public_dns().await; } revise!(tun_val, "enable", enable); @@ -44,3 +48,76 @@ pub async fn use_tun(mut config: Mapping, enable: bool) -> Mapping { revise!(config, "dns", dns_val); config } + +#[cfg(target_os = "macos")] +async fn set_public_dns(dns_server: String) { + use crate::core::handle; + use crate::utils::dirs; + use tauri_plugin_shell::ShellExt; + let app_handle = handle::Handle::global().app_handle().unwrap(); + + log::info!(target: "app", "try to set system dns"); + let resource_dir = dirs::app_resources_dir().unwrap(); + let script = resource_dir.join("set_dns.sh"); + if !script.exists() { + log::error!(target: "app", "set_dns.sh not found"); + return; + } + let script = script.to_string_lossy().into_owned(); + match app_handle + .shell() + .command("bash") + .args([script, dns_server]) + .current_dir(resource_dir) + .status() + .await + { + Ok(status) => { + if status.success() { + log::info!(target: "app", "set system dns successfully"); + } else { + let code = status.code().unwrap_or(-1); + log::error!(target: "app", "set system dns failed: {code}"); + } + } + Err(err) => { + log::error!(target: "app", "set system dns failed: {err}"); + } + } +} + +#[cfg(target_os = "macos")] +async fn restore_public_dns() { + use crate::core::handle; + use crate::utils::dirs; + use tauri_plugin_shell::ShellExt; + let app_handle = handle::Handle::global().app_handle().unwrap(); + log::info!(target: "app", "try to unset system dns"); + let resource_dir = dirs::app_resources_dir().unwrap(); + let script = resource_dir.join("unset_dns.sh"); + if !script.exists() { + log::error!(target: "app", "unset_dns.sh not found"); + return; + } + let script = script.to_string_lossy().into_owned(); + match app_handle + .shell() + .command("bash") + .args([script]) + .current_dir(resource_dir) + .status() + .await + { + Ok(status) => { + if status.success() { + log::info!(target: "app", "unset system dns successfully"); + } else { + let code = status.code().unwrap_or(-1); + log::error!(target: "app", "unset system dns failed: {code}"); + } + } + Err(err) => { + log::error!(target: "app", "unset system dns failed: {err}"); + } + } +} diff --git a/clash-verge-rev/src-tauri/tauri.conf.json b/clash-verge-rev/src-tauri/tauri.conf.json index 55114d574d..8d8896f329 100755 --- a/clash-verge-rev/src-tauri/tauri.conf.json +++ b/clash-verge-rev/src-tauri/tauri.conf.json @@ -25,7 +25,7 @@ "devUrl": "http://localhost:3000/" }, "productName": "Clash Verge", - "version": "2.0.0-rc.3", + "version": "2.0.0-rc.4", "identifier": "io.github.clash-verge-rev.clash-verge-rev", "plugins": { "updater": { diff --git a/clash-verge-rev/src-tauri/tauri.macos.conf.json b/clash-verge-rev/src-tauri/tauri.macos.conf.json index 95dc299afc..1b1fd1a511 100644 --- a/clash-verge-rev/src-tauri/tauri.macos.conf.json +++ b/clash-verge-rev/src-tauri/tauri.macos.conf.json @@ -3,6 +3,7 @@ "identifier": "io.github.clash-verge-rev.clash-verge-rev", "bundle": { "targets": ["app", "dmg"], + "resources": ["resources"], "macOS": { "frameworks": [], "minimumSystemVersion": "10.15", diff --git a/lede/package/firmware/linux-firmware/Makefile b/lede/package/firmware/linux-firmware/Makefile index 9905685600..235f523447 100644 --- a/lede/package/firmware/linux-firmware/Makefile +++ b/lede/package/firmware/linux-firmware/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=linux-firmware -PKG_VERSION:=20240909 +PKG_VERSION:=20241017 PKG_RELEASE:=1 PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_HASH:=943fbd19883cf8eadf89e0b22422549db056557b1ecd30a56400615971369671 +PKG_HASH:=a26c38ef5a83272f2b98ce8bf8ca1865a852a3deea49ce5a8dd804b914351273 PKG_MAINTAINER:=Felix Fietkau diff --git a/lede/package/lean/default-settings/files/zzz-default-settings b/lede/package/lean/default-settings/files/zzz-default-settings index 98c29871d4..b34101a6d9 100755 --- a/lede/package/lean/default-settings/files/zzz-default-settings +++ b/lede/package/lean/default-settings/files/zzz-default-settings @@ -11,7 +11,7 @@ uci -q batch <<-EOF add_list system.ntp.server='ntp1.aliyun.com' add_list system.ntp.server='ntp.tencent.com' add_list system.ntp.server='ntp.ntsc.ac.cn' - add_list system.ntp.server='time.ustc.edu.cn' + add_list system.ntp.server='time.apple.com' EOF uci commit system @@ -51,15 +51,13 @@ sed -i '/option disabled/d' /etc/config/wireless sed -i '/set wireless.radio${devidx}.disabled/d' /lib/wifi/mac80211.sh sed -i '/DISTRIB_REVISION/d' /etc/openwrt_release -echo "DISTRIB_REVISION='R24.9.18'" >> /etc/openwrt_release +echo "DISTRIB_REVISION='R24.10.1'" >> /etc/openwrt_release sed -i '/DISTRIB_DESCRIPTION/d' /etc/openwrt_release echo "DISTRIB_DESCRIPTION='OpenWrt '" >> /etc/openwrt_release sed -i '/log-facility/d' /etc/dnsmasq.conf echo "log-facility=/dev/null" >> /etc/dnsmasq.conf -#ln -sf /sbin/ip /usr/bin/ip - rm -rf /tmp/luci-modulecache/ rm -f /tmp/luci-indexcache diff --git a/shadowsocks-rust/Cargo.lock b/shadowsocks-rust/Cargo.lock index 342d58f05d..e7e5861799 100644 --- a/shadowsocks-rust/Cargo.lock +++ b/shadowsocks-rust/Cargo.lock @@ -121,9 +121,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" dependencies = [ "anstyle", "anstyle-parse", @@ -136,36 +136,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -584,9 +584,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "concurrent-queue" @@ -643,15 +643,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-channel" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-epoch" version = "0.9.18" @@ -1741,9 +1732,9 @@ dependencies = [ [[package]] name = "inotify" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" dependencies = [ "bitflags 1.3.2", "inotify-sys", @@ -2075,18 +2066,6 @@ dependencies = [ "adler2", ] -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.48.0", -] - [[package]] name = "mio" version = "1.0.2" @@ -2095,6 +2074,7 @@ checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi", "libc", + "log", "wasi", "windows-sys 0.52.0", ] @@ -2130,21 +2110,30 @@ dependencies = [ [[package]] name = "notify" -version = "6.1.1" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" +checksum = "c533b4c39709f9ba5005d8002048266593c1cfaf3c5f0739d5b8ab0c6c504009" dependencies = [ "bitflags 2.6.0", - "crossbeam-channel", "filetime", "fsevent-sys", "inotify", "kqueue", "libc", "log", - "mio 0.8.11", + "mio", + "notify-types", "walkdir", - "windows-sys 0.48.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "notify-types" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7393c226621f817964ffb3dc5704f9509e107a8b024b489cc2c1b217378785df" +dependencies = [ + "instant", ] [[package]] @@ -3774,7 +3763,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.2", + "mio", "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", diff --git a/shadowsocks-rust/crates/shadowsocks/Cargo.toml b/shadowsocks-rust/crates/shadowsocks/Cargo.toml index a63c4f211c..7d0cedf4de 100644 --- a/shadowsocks-rust/crates/shadowsocks/Cargo.toml +++ b/shadowsocks-rust/crates/shadowsocks/Cargo.toml @@ -84,7 +84,7 @@ tokio = { version = "1.9.0", features = [ hickory-resolver = { version = "0.24", optional = true } arc-swap = { version = "1.7", optional = true } -notify = { version = "6.0", optional = true } +notify = { version = "7.0", optional = true } aes = { version = "0.8", optional = true } blake3 = "1.5" diff --git a/small/luci-app-mihomo/Makefile b/small/luci-app-mihomo/Makefile index 92c028b061..20fd6c8899 100644 --- a/small/luci-app-mihomo/Makefile +++ b/small/luci-app-mihomo/Makefile @@ -1,6 +1,6 @@ include $(TOPDIR)/rules.mk -PKG_VERSION:=1.9.0 +PKG_VERSION:=1.9.1 LUCI_TITLE:=LuCI Support for mihomo LUCI_DEPENDS:=+luci-base +mihomo diff --git a/small/mihomo/Makefile b/small/mihomo/Makefile index 5373f1f9fb..30f7898995 100644 --- a/small/mihomo/Makefile +++ b/small/mihomo/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mihomo -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git diff --git a/small/mihomo/files/mihomo.init b/small/mihomo/files/mihomo.init index 54d6a715b7..2a8e1913c8 100644 --- a/small/mihomo/files/mihomo.init +++ b/small/mihomo/files/mihomo.init @@ -302,6 +302,10 @@ start_service() { nft -f "$HIJACK_NFT" -D FW_MARK="$FW_MARK" -D FW_MARK_MASK="$FW_MARK_MASK" -D TUN_DEVICE="$TUN_DEVICE" -D DNS_PORT="$dns_port" -D REDIR_PORT="$redir_port" -D TPROXY_PORT="$tproxy_port" nft -f "$RESERVED_IP_NFT" nft -f "$RESERVED_IP6_NFT" + if [ "$tcp_transparent_proxy_mode" != "redirect" ]; then + nft flush chain inet "$FW_TABLE" nat_output + nft flush chain inet "$FW_TABLE" dstnat + fi nft add element inet "$FW_TABLE" bypass_group \{ "$MIHOMO_GROUP" \} nft add element inet "$FW_TABLE" fake_ip \{ "$fake_ip_range" \} # dns hijack diff --git a/small/v2raya/Makefile b/small/v2raya/Makefile index 15b2f68ba8..66bf94ae8c 100644 --- a/small/v2raya/Makefile +++ b/small/v2raya/Makefile @@ -5,12 +5,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=v2rayA -PKG_VERSION:=2.2.6 +PKG_VERSION:=2.2.6.1 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/v2rayA/v2rayA/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=2d52b8cc6fbd7264e53704684dd8ee56955852dbff324a45360d6ed1c923d8ba +PKG_HASH:=ead5bcac505b4ef8ab872c6b34c6592e6c4f9f9e57477660800f5fcf629d6e28 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/service PKG_LICENSE:=AGPL-3.0-only @@ -60,7 +60,7 @@ define Download/v2raya-web URL:=https://github.com/v2rayA/v2rayA/releases/download/v$(PKG_VERSION)/ URL_FILE:=web.tar.gz FILE:=$(WEB_FILE) - HASH:=123123d3d6d393c065348355b47db45aa6c6af10c60d6320f564883cd93c556a + HASH:=0d1a0242c8b9bd92f288c6c21b88631fd9e46f8b3987ddde93c4ea946ba6c97f endef define Build/Prepare diff --git a/v2raya/gui/src/components/modalServer.vue b/v2raya/gui/src/components/modalServer.vue index a9126e7f9d..bd434b509e 100644 --- a/v2raya/gui/src/components/modalServer.vue +++ b/v2raya/gui/src/components/modalServer.vue @@ -707,8 +707,7 @@ size="is-small" icon=" iconfont icon-help-circle-outline" style=" @@ -726,8 +725,7 @@ v-show="trojan.net === 'ws' || diff --git a/v2rayn/v2rayN/AmazTool/UpgradeApp.cs b/v2rayn/v2rayN/AmazTool/UpgradeApp.cs index 92c4b1531e..a6acf64b59 100644 --- a/v2rayn/v2rayN/AmazTool/UpgradeApp.cs +++ b/v2rayn/v2rayN/AmazTool/UpgradeApp.cs @@ -19,18 +19,15 @@ namespace AmazTool return; } + Console.WriteLine("Try to end the process(尝试结束进程)."); try { - Process[] existing = Process.GetProcessesByName(V2rayN); - foreach (Process p in existing) - { - var path = p.MainModule?.FileName ?? ""; - if (path.StartsWith(GetPath(V2rayN))) - { - p.Kill(); - p.WaitForExit(100); - } - } + var path = GetPath(V2rayN); + Console.WriteLine(path); + var existing = Process.GetProcessesByName(V2rayN); + var pp = existing.FirstOrDefault(p => p.MainModule?.FileName != null && p.MainModule?.FileName == path); + pp?.Kill(); + pp?.WaitForExit(1000); } catch (Exception ex) { @@ -39,6 +36,7 @@ namespace AmazTool "Close it manually, or the upgrade may fail.(请手动关闭正在运行的v2rayN,否则可能升级失败。\n\n" + ex.StackTrace); } + Console.WriteLine("Start extracting files(开始解压文件)."); StringBuilder sb = new(); try { @@ -84,13 +82,12 @@ namespace AmazTool } if (sb.Length > 0) { - Console.WriteLine("Upgrade Failed.\n" + - "(升级失败)." + sb.ToString()); + Console.WriteLine("Upgrade Failed(升级失败)." + sb.ToString()); return; } Console.WriteLine("Start v2rayN, please wait...(正在重启,请等待)"); - Thread.Sleep(3000); + Thread.Sleep(9000); Process process = new() { StartInfo = new() diff --git a/v2rayn/v2rayN/ServiceLib/Handler/ClashApiHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/ClashApiHandler.cs index dbc98b2784..cae3c035f3 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/ClashApiHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/ClashApiHandler.cs @@ -28,7 +28,7 @@ namespace ServiceLib.Handler return new Tuple(clashProxies, clashProviders); } - await Task.Delay(5000); + await Task.Delay(2000); } return null; diff --git a/v2rayn/v2rayN/ServiceLib/Handler/CoreConfigHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/CoreConfigHandler.cs index cfe0536084..84c694c6b1 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/CoreConfigHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/CoreConfigHandler.cs @@ -12,18 +12,12 @@ if (node.ConfigType == EConfigType.Custom) { - if (node.CoreType is ECoreType.mihomo) + result = node.CoreType switch { - result = await new CoreConfigClashService(config).GenerateClientCustomConfig(node, fileName); - } - if (node.CoreType is ECoreType.sing_box) - { - result = await new CoreConfigSingboxService(config).GenerateClientCustomConfig(node, fileName); - } - else - { - result = await GenerateClientCustomConfig(node, fileName); - } + ECoreType.mihomo => await new CoreConfigClashService(config).GenerateClientCustomConfig(node, fileName), + ECoreType.sing_box => await new CoreConfigSingboxService(config).GenerateClientCustomConfig(node, fileName), + _ => await GenerateClientCustomConfig(node, fileName) + }; } else if (AppHandler.Instance.GetCoreType(node, node.ConfigType) == ECoreType.sing_box) { diff --git a/v2rayn/v2rayN/ServiceLib/Handler/CoreHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/CoreHandler.cs index 33d78f740d..c4b803812e 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/CoreHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/CoreHandler.cs @@ -30,6 +30,10 @@ namespace ServiceLib.Handler { if (it.CoreType == ECoreType.v2rayN) { + if (Utils.UpgradeAppExists(out var fileName)) + { + await Utils.SetLinuxChmod(fileName); + } continue; } diff --git a/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj b/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj index 6c48805569..a4f549a002 100644 --- a/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj +++ b/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 7.0.1 + 7.0.2 diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs index 741bde64e7..04fc910a18 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs @@ -45,12 +45,16 @@ namespace ServiceLib.ViewModels if (RuntimeInformation.ProcessArchitecture != Architecture.X86) { - _checkUpdateItem.Add(new CheckUpdateItem() + if (Utils.IsWindows()) { - IsSelected = false, - CoreType = _v2rayN, - Remarks = ResUI.menuCheckUpdate, - }); + _checkUpdateItem.Add(new CheckUpdateItem() + { + IsSelected = false, + CoreType = _v2rayN, + Remarks = ResUI.menuCheckUpdate, + }); + } + _checkUpdateItem.Add(new CheckUpdateItem() { IsSelected = true, diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs index 293be33511..316e066d25 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs @@ -96,7 +96,7 @@ namespace ServiceLib.ViewModels private async Task Init() { await ProxiesReload(); - await DelayTestTask(); + DelayTestTask(); } private async Task DoRulemodeSelected(bool c) @@ -434,25 +434,29 @@ namespace ServiceLib.ViewModels public async Task DelayTestTask() { var lastTime = DateTime.Now; + Task.Run(async () => + { + while (true) + { + await Task.Delay(1000 * 60); - Observable.Interval(TimeSpan.FromSeconds(60)) - .Subscribe(async x => - { - if (!(AutoRefresh && _config.UiItem.ShowInTaskbar && _config.IsRunningCore(ECoreType.sing_box))) - { - return; - } - var dtNow = DateTime.Now; - if (_config.ClashUIItem.ProxiesAutoDelayTestInterval > 0) - { - if ((dtNow - lastTime).Minutes % _config.ClashUIItem.ProxiesAutoDelayTestInterval == 0) - { - await ProxiesDelayTest(); - lastTime = dtNow; - } - Task.Delay(1000).Wait(); - } - }); + if (!(AutoRefresh && _config.UiItem.ShowInTaskbar && _config.IsRunningCore(ECoreType.sing_box))) + { + continue; + } + if (_config.ClashUIItem.ProxiesAutoDelayTestInterval <= 0) + { + continue; + } + var dtNow = DateTime.Now; + if ((dtNow - lastTime).Minutes % _config.ClashUIItem.ProxiesAutoDelayTestInterval != 0) + { + continue; + } + await ProxiesDelayTest(); + lastTime = dtNow; + } + }); } #endregion task diff --git a/v2rayn/v2rayN/v2rayN.Desktop/Views/ClashProxiesView.axaml b/v2rayn/v2rayN/v2rayN.Desktop/Views/ClashProxiesView.axaml index dd410dba89..ed2f3c7a5c 100644 --- a/v2rayn/v2rayN/v2rayN.Desktop/Views/ClashProxiesView.axaml +++ b/v2rayn/v2rayN/v2rayN.Desktop/Views/ClashProxiesView.axaml @@ -161,10 +161,7 @@ - + true Copyright © 2017-2024 (GPLv3) true + v2rayN diff --git a/v2rayn/v2rayN/v2rayN/Views/MainWindow.xaml.cs b/v2rayn/v2rayN/v2rayN/Views/MainWindow.xaml.cs index aab6877d1c..c323486bec 100644 --- a/v2rayn/v2rayN/v2rayN/Views/MainWindow.xaml.cs +++ b/v2rayn/v2rayN/v2rayN/Views/MainWindow.xaml.cs @@ -284,6 +284,8 @@ namespace v2rayN.Views switch (e.Key) { case Key.V: + if (_backupAndRestoreView?.IsVisible == true) return; + var clipboardData = WindowsUtils.GetClipboardData(); ViewModel?.AddServerViaClipboardAsync(clipboardData); break; diff --git a/yass/CMakeLists.txt b/yass/CMakeLists.txt index 02178bb708..3838706f1c 100644 --- a/yass/CMakeLists.txt +++ b/yass/CMakeLists.txt @@ -2044,9 +2044,9 @@ if (WIN32) set(CMAKE_CXX_STANDARD_LIBRARIES "" CACHE STRING "" FORCE) if (MSVC) - set(SYSTEM_LIBS ${SYSTEM_LIBS} Crypt32 WS2_32 bcrypt User32 shell32 kernel32) + set(SYSTEM_LIBS ${SYSTEM_LIBS} iphlpapi Crypt32 WS2_32 bcrypt User32 shell32 kernel32) else() - set(SYSTEM_LIBS ${SYSTEM_LIBS} crypt32 ws2_32 mswsock bcrypt user32 shell32 kernel32) + set(SYSTEM_LIBS ${SYSTEM_LIBS} iphlpapi crypt32 ws2_32 mswsock bcrypt user32 shell32 kernel32) endif() # Don't use it even if we are compiling with gnu extensions diff --git a/yt-dlp/yt_dlp/extractor/_extractors.py b/yt-dlp/yt_dlp/extractor/_extractors.py index 8d59360949..13b5633d46 100644 --- a/yt-dlp/yt_dlp/extractor/_extractors.py +++ b/yt-dlp/yt_dlp/extractor/_extractors.py @@ -401,8 +401,6 @@ from .cmt import CMTIE from .cnbc import CNBCVideoIE from .cnn import ( CNNIE, - CNNArticleIE, - CNNBlogsIE, CNNIndonesiaIE, ) from .comedycentral import ( diff --git a/yt-dlp/yt_dlp/extractor/cnn.py b/yt-dlp/yt_dlp/extractor/cnn.py index fe7615a891..cfcec9d1fd 100644 --- a/yt-dlp/yt_dlp/extractor/cnn.py +++ b/yt-dlp/yt_dlp/extractor/cnn.py @@ -1,146 +1,226 @@ +import functools +import json +import re + from .common import InfoExtractor -from .turner import TurnerBaseIE -from ..utils import merge_dicts, try_call, url_basename +from ..utils import ( + clean_html, + extract_attributes, + int_or_none, + merge_dicts, + parse_duration, + parse_iso8601, + parse_resolution, + try_call, + update_url, + url_or_none, +) +from ..utils.traversal import find_elements, traverse_obj -class CNNIE(TurnerBaseIE): - _VALID_URL = r'''(?x)https?://(?:(?Pedition|www|money)\.)?cnn\.com/(?:video/(?:data/.+?|\?)/)?videos?/ - (?P.+?/(?P[^/]+?)(?:\.(?:[a-z\-]+)|(?=&)))''' +class CNNIE(InfoExtractor): + _VALID_URL = r'https?://(?:(?:edition|www|money|cnnespanol)\.)?cnn\.com/(?!audio/)(?P<display_id>[^?#]+?)(?:[?#]|$|/index\.html)' _TESTS = [{ - 'url': 'http://edition.cnn.com/video/?/video/sports/2013/06/09/nadal-1-on-1.cnn', - 'md5': '3e6121ea48df7e2259fe73a0628605c4', + 'url': 'https://www.cnn.com/2024/05/31/sport/video/jadon-sancho-borussia-dortmund-champions-league-exclusive-spt-intl', 'info_dict': { - 'id': 'sports/2013/06/09/nadal-1-on-1.cnn', + 'id': 'med0e97ad0d154f56e29aa96e57192a14226734b6b', + 'display_id': '2024/05/31/sport/video/jadon-sancho-borussia-dortmund-champions-league-exclusive-spt-intl', 'ext': 'mp4', - 'title': 'Nadal wins 8th French Open title', - 'description': 'World Sport\'s Amanda Davies chats with 2013 French Open champion Rafael Nadal.', - 'duration': 135, - 'upload_date': '20130609', + 'upload_date': '20240531', + 'description': 'md5:844bcdb0629e1877a7a466c913f4c19c', + 'thumbnail': 'https://media.cnn.com/api/v1/images/stellar/prod/gettyimages-2151936122.jpg?c=original', + 'duration': 373.0, + 'timestamp': 1717148586, + 'title': 'Borussia Dortmund star Jadon Sancho seeks Wembley redemption after 2020 Euros hurt', + 'modified_date': '20240531', + 'modified_timestamp': 1717150140, }, - 'expected_warnings': ['Failed to download m3u8 information'], }, { - 'url': 'http://edition.cnn.com/video/?/video/us/2013/08/21/sot-student-gives-epic-speech.georgia-institute-of-technology&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+rss%2Fcnn_topstories+%28RSS%3A+Top+Stories%29', - 'md5': 'b5cc60c60a3477d185af8f19a2a26f4e', + 'url': 'https://edition.cnn.com/2024/06/11/politics/video/inmates-vote-jail-nevada-murray-dnt-ac360-digvid', 'info_dict': { - 'id': 'us/2013/08/21/sot-student-gives-epic-speech.georgia-institute-of-technology', + 'id': 'me522945c4709b299e5cb8657900a7a21ad3b559f9', + 'display_id': '2024/06/11/politics/video/inmates-vote-jail-nevada-murray-dnt-ac360-digvid', 'ext': 'mp4', - 'title': "Student's epic speech stuns new freshmen", - 'description': 'A Georgia Tech student welcomes the incoming freshmen with an epic speech backed by music from "2001: A Space Odyssey."', - 'upload_date': '20130821', + 'description': 'md5:e0120fe5da9ad8259fd707c1cbb64a60', + 'title': 'Here’s how some inmates in closely divided state are now able to vote from jail', + 'timestamp': 1718158269, + 'upload_date': '20240612', + 'thumbnail': 'https://media.cnn.com/api/v1/images/stellar/prod/still-20701554-13565-571-still.jpg?c=original', + 'duration': 202.0, + 'modified_date': '20240612', + 'modified_timestamp': 1718158509, }, - 'expected_warnings': ['Failed to download m3u8 information'], }, { - 'url': 'http://www.cnn.com/video/data/2.0/video/living/2014/12/22/growing-america-nashville-salemtown-board-episode-1.hln.html', - 'md5': 'f14d02ebd264df951feb2400e2c25a1b', + 'url': 'https://edition.cnn.com/2024/06/11/style/king-charles-portrait-vandalized/index.html', 'info_dict': { - 'id': 'living/2014/12/22/growing-america-nashville-salemtown-board-episode-1.hln', + 'id': 'mef5f52b9e1fe28b1ad192afcbc9206ae984894b68', + 'display_id': '2024/06/11/style/king-charles-portrait-vandalized', 'ext': 'mp4', - 'title': 'Nashville Ep. 1: Hand crafted skateboards', - 'description': 'md5:e7223a503315c9f150acac52e76de086', - 'upload_date': '20141222', + 'thumbnail': 'https://media.cnn.com/api/v1/images/stellar/prod/still-20701257-8846-816-still.jpg?c=original', + 'description': 'md5:19f78338ccec533db0fa8a4511012dae', + 'title': 'Video shows King Charles\' portrait being vandalized by activists', + 'timestamp': 1718113852, + 'upload_date': '20240611', + 'duration': 51.0, + 'modified_timestamp': 1718116193, + 'modified_date': '20240611', }, - 'expected_warnings': ['Failed to download m3u8 information'], }, { - 'url': 'http://money.cnn.com/video/news/2016/08/19/netflix-stunning-stats.cnnmoney/index.html', - 'md5': '52a515dc1b0f001cd82e4ceda32be9d1', + 'url': 'https://edition.cnn.com/videos/media/2022/12/05/robin-meade-final-sign-off-broadcast-hln-mxp-contd-vpx.hln', 'info_dict': { - 'id': '/video/news/2016/08/19/netflix-stunning-stats.cnnmoney', + 'id': 'mefba13799201b084ea3b1d0f7ca820ae94d4bb5b2', + 'display_id': 'videos/media/2022/12/05/robin-meade-final-sign-off-broadcast-hln-mxp-contd-vpx.hln', 'ext': 'mp4', - 'title': '5 stunning stats about Netflix', - 'description': 'Did you know that Netflix has more than 80 million members? Here are five facts about the online video distributor that you probably didn\'t know.', - 'upload_date': '20160819', + 'thumbnail': 'https://media.cnn.com/api/v1/images/stellar/prod/221205163510-robin-meade-sign-off.jpg?c=original', + 'duration': 158.0, + 'title': 'Robin Meade signs off after HLN\'s last broadcast', + 'description': 'md5:cff3c62d18d2fbc6c5c75cb029b7353b', + 'upload_date': '20221205', + 'timestamp': 1670284296, + 'modified_timestamp': 1670332404, + 'modified_date': '20221206', }, - 'params': { - # m3u8 download - 'skip_download': True, + 'params': {'format': 'direct'}, + }, { + 'url': 'https://cnnespanol.cnn.com/video/ataque-misil-israel-beirut-libano-octubre-trax', + 'info_dict': { + 'id': 'me484a43722642aa00627b812fe928f2e99c6e2997', + 'ext': 'mp4', + 'display_id': 'video/ataque-misil-israel-beirut-libano-octubre-trax', + 'timestamp': 1729501452, + 'thumbnail': 'https://media.cnn.com/api/v1/images/stellar/prod/ataqeubeirut-1.jpg?c=original', + 'description': 'md5:256ee7137d161f776cda429654135e52', + 'upload_date': '20241021', + 'duration': 31.0, + 'title': 'VIDEO | Israel lanza un nuevo ataque sobre Beirut', + 'modified_date': '20241021', + 'modified_timestamp': 1729501530, }, }, { - 'url': 'http://cnn.com/video/?/video/politics/2015/03/27/pkg-arizona-senator-church-attendance-mandatory.ktvk', - 'only_matching': True, - }, { - 'url': 'http://cnn.com/video/?/video/us/2015/04/06/dnt-baker-refuses-anti-gay-order.wkmg', - 'only_matching': True, - }, { - 'url': 'http://edition.cnn.com/videos/arts/2016/04/21/olympic-games-cultural-a-z-brazil.cnn', - 'only_matching': True, + 'url': 'https://edition.cnn.com/2024/10/16/politics/kamala-harris-fox-news-interview/index.html', + 'info_dict': { + 'id': '2024/10/16/politics/kamala-harris-fox-news-interview', + }, + 'playlist_count': 2, + 'playlist': [{ + 'md5': '073ffab87b8bef97c9913e71cc18ef9e', + 'info_dict': { + 'id': 'me19d548fdd54df0924087039283128ef473ab397d', + 'ext': 'mp4', + 'title': '\'I\'m not finished\': Harris interview with Fox News gets heated', + 'display_id': 'kamala-harris-fox-news-interview-ebof-digvid', + 'description': 'md5:e7dd3d1a04df916062230b60ca419a0a', + 'thumbnail': 'https://media.cnn.com/api/v1/images/stellar/prod/harris-20241016234916617.jpg?c=original', + 'duration': 173.0, + 'timestamp': 1729122182, + 'upload_date': '20241016', + 'modified_timestamp': 1729194706, + 'modified_date': '20241017', + }, + 'params': {'format': 'direct'}, + }, { + 'md5': '11604ab4af83b650826753f1ccb8ecff', + 'info_dict': { + 'id': 'med04507d8ca3da827001f63d22af321ec29c7d97b', + 'ext': 'mp4', + 'title': '\'Wise\': Buttigieg on Harris\' handling of interview question about gender transition surgery', + 'display_id': 'pete-buttigieg-harris-fox-newssrc-digvid', + 'description': 'md5:602a8a7e853ed5e574acd3159428c98e', + 'thumbnail': 'https://media.cnn.com/api/v1/images/stellar/prod/buttigieg-20241017040412074.jpg?c=original', + 'duration': 145.0, + 'timestamp': 1729137765, + 'upload_date': '20241017', + 'modified_timestamp': 1729138184, + 'modified_date': '20241017', + }, + 'params': {'format': 'direct'}, + }], }] - _CONFIG = { - # http://edition.cnn.com/.element/apps/cvp/3.0/cfg/spider/cnn/expansion/config.xml - 'edition': { - 'data_src': 'http://edition.cnn.com/video/data/3.0/video/%s/index.xml', - 'media_src': 'http://pmd.cdn.turner.com/cnn/big', - }, - # http://money.cnn.com/.element/apps/cvp2/cfg/config.xml - 'money': { - 'data_src': 'http://money.cnn.com/video/data/4.0/video/%s.xml', - 'media_src': 'http://ht3.cdn.turner.com/money/big', - }, - } - - def _extract_timestamp(self, video_data): - # TODO: fix timestamp extraction - return None - def _real_extract(self, url): - sub_domain, path, page_title = self._match_valid_url(url).groups() - if sub_domain not in ('money', 'edition'): - sub_domain = 'edition' - config = self._CONFIG[sub_domain] - return self._extract_cvp_info( - config['data_src'] % path, page_title, { - 'default': { - 'media_src': config['media_src'], - }, - 'f4m': { - 'host': 'cnn-vh.akamaihd.net', - }, + display_id = self._match_valid_url(url).group('display_id') + webpage = self._download_webpage(url, display_id) + app_id = traverse_obj( + self._search_json(r'window\.env\s*=', webpage, 'window env', display_id, default={}), + ('TOP_AUTH_SERVICE_APP_ID', {str})) + + entries = [] + for player_data in traverse_obj(webpage, ( + {find_elements(tag='div', attr='data-component-name', value='video-player', html=True)}, + ..., {extract_attributes}, all, lambda _, v: v['data-media-id'])): + media_id = player_data['data-media-id'] + parent_uri = player_data.get('data-video-resource-parent-uri') + formats, subtitles = [], {} + + video_data = {} + if parent_uri: + video_data = self._download_json( + 'https://fave.api.cnn.io/v1/video', media_id, fatal=False, + query={ + 'id': media_id, + 'stellarUri': parent_uri, + }) + for direct_url in traverse_obj(video_data, ('files', ..., 'fileUri', {url_or_none})): + resolution, bitrate = None, None + if mobj := re.search(r'-(?P<res>\d+x\d+)_(?P<tbr>\d+)k\.mp4', direct_url): + resolution, bitrate = mobj.group('res', 'tbr') + formats.append({ + 'url': direct_url, + 'format_id': 'direct', + 'quality': 1, + 'tbr': int_or_none(bitrate), + **parse_resolution(resolution), + }) + for sub_data in traverse_obj(video_data, ( + 'closedCaptions', 'types', lambda _, v: url_or_none(v['track']['url']), 'track')): + subtitles.setdefault(sub_data.get('lang') or 'en', []).append({ + 'url': sub_data['url'], + 'name': sub_data.get('label'), + }) + + if app_id: + media_data = self._download_json( + f'https://medium.ngtv.io/v2/media/{media_id}/desktop', media_id, fatal=False, + query={'appId': app_id}) + m3u8_url = traverse_obj(media_data, ( + 'media', 'desktop', 'unprotected', 'unencrypted', 'url', {url_or_none})) + if m3u8_url: + fmts, subs = self._extract_m3u8_formats_and_subtitles( + m3u8_url, media_id, 'mp4', m3u8_id='hls', fatal=False) + formats.extend(fmts) + self._merge_subtitles(subs, target=subtitles) + + entries.append({ + **traverse_obj(player_data, { + 'title': ('data-headline', {clean_html}), + 'description': ('data-description', {clean_html}), + 'duration': ('data-duration', {parse_duration}), + 'timestamp': ('data-publish-date', {parse_iso8601}), + 'thumbnail': ( + 'data-poster-image-override', {json.loads}, 'big', 'uri', {url_or_none}, + {functools.partial(update_url, query='c=original')}), + 'display_id': 'data-video-slug', + }), + **traverse_obj(video_data, { + 'timestamp': ('dateCreated', 'uts', {int_or_none(scale=1000)}), + 'description': ('description', {clean_html}), + 'title': ('headline', {str}), + 'modified_timestamp': ('lastModified', 'uts', {int_or_none(scale=1000)}), + 'duration': ('trt', {int_or_none}), + }), + 'id': media_id, + 'formats': formats, + 'subtitles': subtitles, }) + if len(entries) == 1: + return { + **entries[0], + 'display_id': display_id, + } -class CNNBlogsIE(InfoExtractor): - _VALID_URL = r'https?://[^\.]+\.blogs\.cnn\.com/.+' - _TEST = { - 'url': 'http://reliablesources.blogs.cnn.com/2014/02/09/criminalizing-journalism/', - 'md5': '3e56f97b0b6ffb4b79f4ea0749551084', - 'info_dict': { - 'id': 'bestoftv/2014/02/09/criminalizing-journalism.cnn', - 'ext': 'mp4', - 'title': 'Criminalizing journalism?', - 'description': 'Glenn Greenwald responds to comments made this week on Capitol Hill that journalists could be criminal accessories.', - 'upload_date': '20140209', - }, - 'expected_warnings': ['Failed to download m3u8 information'], - 'add_ie': ['CNN'], - } - - def _real_extract(self, url): - webpage = self._download_webpage(url, url_basename(url)) - cnn_url = self._html_search_regex(r'data-url="(.+?)"', webpage, 'cnn url') - return self.url_result(cnn_url, CNNIE.ie_key()) - - -class CNNArticleIE(InfoExtractor): - _VALID_URL = r'https?://(?:(?:edition|www)\.)?cnn\.com/(?!videos?/)' - _TEST = { - 'url': 'http://www.cnn.com/2014/12/21/politics/obama-north-koreas-hack-not-war-but-cyber-vandalism/', - 'md5': '689034c2a3d9c6dc4aa72d65a81efd01', - 'info_dict': { - 'id': 'bestoftv/2014/12/21/ip-north-korea-obama.cnn', - 'ext': 'mp4', - 'title': 'Obama: Cyberattack not an act of war', - 'description': 'md5:0a802a40d2376f60e6b04c8d5bcebc4b', - 'upload_date': '20141221', - }, - 'expected_warnings': ['Failed to download m3u8 information'], - 'add_ie': ['CNN'], - } - - def _real_extract(self, url): - webpage = self._download_webpage(url, url_basename(url)) - cnn_url = self._html_search_regex(r"video:\s*'([^']+)'", webpage, 'cnn url') - return self.url_result('http://cnn.com/video/?/video/' + cnn_url, CNNIE.ie_key()) + return self.playlist_result(entries, display_id) class CNNIndonesiaIE(InfoExtractor): diff --git a/yt-dlp/yt_dlp/extractor/common.py b/yt-dlp/yt_dlp/extractor/common.py index 795105b7d8..ecece85f5f 100644 --- a/yt-dlp/yt_dlp/extractor/common.py +++ b/yt-dlp/yt_dlp/extractor/common.py @@ -47,6 +47,7 @@ from ..utils import ( FormatSorter, GeoRestrictedError, GeoUtils, + ISO639Utils, LenientJSONDecoder, Popen, RegexNotFoundError, @@ -3071,7 +3072,11 @@ class InfoExtractor: url_pattern = stream.attrib['Url'] stream_timescale = int_or_none(stream.get('TimeScale')) or timescale stream_name = stream.get('Name') - stream_language = stream.get('Language', 'und') + # IsmFD expects ISO 639 Set 2 language codes (3-character length) + # See: https://github.com/yt-dlp/yt-dlp/issues/11356 + stream_language = stream.get('Language') or 'und' + if len(stream_language) != 3: + stream_language = ISO639Utils.short2long(stream_language) or 'und' for track in stream.findall('QualityLevel'): KNOWN_TAGS = {'255': 'AACL', '65534': 'EC-3'} fourcc = track.get('FourCC') or KNOWN_TAGS.get(track.get('AudioTag')) diff --git a/yt-dlp/yt_dlp/extractor/niconico.py b/yt-dlp/yt_dlp/extractor/niconico.py index e06740d62e..961dd0c5e9 100644 --- a/yt-dlp/yt_dlp/extractor/niconico.py +++ b/yt-dlp/yt_dlp/extractor/niconico.py @@ -869,7 +869,7 @@ class NicovideoTagURLIE(NicovideoSearchBaseIE): class NiconicoUserIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?nicovideo\.jp/user/(?P<id>\d+)/?(?:$|[#?])' + _VALID_URL = r'https?://(?:www\.)?nicovideo\.jp/user/(?P<id>\d+)(?:/video)?/?(?:$|[#?])' _TEST = { 'url': 'https://www.nicovideo.jp/user/419948', 'info_dict': { @@ -877,7 +877,7 @@ class NiconicoUserIE(InfoExtractor): }, 'playlist_mincount': 101, } - _API_URL = 'https://nvapi.nicovideo.jp/v1/users/%s/videos?sortKey=registeredAt&sortOrder=desc&pageSize=%s&page=%s' + _API_URL = 'https://nvapi.nicovideo.jp/v2/users/%s/videos?sortKey=registeredAt&sortOrder=desc&pageSize=%s&page=%s' _PAGE_SIZE = 100 _API_HEADERS = { @@ -897,12 +897,13 @@ class NiconicoUserIE(InfoExtractor): total_count = int_or_none(json_parsed['data'].get('totalCount')) for entry in json_parsed['data']['items']: count += 1 - yield self.url_result('https://www.nicovideo.jp/watch/{}'.format(entry['id'])) + yield self.url_result( + f'https://www.nicovideo.jp/watch/{entry["essential"]["id"]}', ie=NiconicoIE) page_num += 1 def _real_extract(self, url): list_id = self._match_id(url) - return self.playlist_result(self._entries(list_id), list_id, ie=NiconicoIE.ie_key()) + return self.playlist_result(self._entries(list_id), list_id) class NiconicoLiveIE(InfoExtractor): diff --git a/yt-dlp/yt_dlp/extractor/vimeo.py b/yt-dlp/yt_dlp/extractor/vimeo.py index 367d5e5835..0ed7b9ec1f 100644 --- a/yt-dlp/yt_dlp/extractor/vimeo.py +++ b/yt-dlp/yt_dlp/extractor/vimeo.py @@ -869,11 +869,12 @@ class VimeoIE(VimeoBaseInfoExtractor): for retry in (False, True): try: video = self._call_videos_api(video_id, viewer['jwt'], unlisted_hash) + break except ExtractorError as e: if (not retry and isinstance(e.cause, HTTPError) and e.cause.status == 400 and 'password' in traverse_obj( - e.cause.response.read(), - ({bytes.decode}, {json.loads}, 'invalid_parameters', ..., 'field'), + self._webpage_read_content(e.cause.response, e.cause.response.url, video_id, fatal=False), + ({json.loads}, 'invalid_parameters', ..., 'field'), )): self._verify_video_password( video_id, self._get_video_password(), viewer['xsrft'])