From 06607ce3dee37ebdb694a4dfb1c2622bdb3b1bea Mon Sep 17 00:00:00 2001 From: "github-action[bot]" Date: Wed, 15 Jan 2025 19:33:51 +0100 Subject: [PATCH] Update On Wed Jan 15 19:33:51 CET 2025 --- .github/update.log | 1 + clash-nyanpasu/backend/Cargo.lock | 4 +- .../frontend/interface/package.json | 2 +- clash-nyanpasu/frontend/nyanpasu/package.json | 6 +- clash-nyanpasu/frontend/ui/package.json | 4 +- clash-nyanpasu/package.json | 16 +- clash-nyanpasu/pnpm-lock.yaml | 1119 ++++++++--------- lede/package/boot/uboot-rockchip/Makefile | 4 +- .../patches/110-force-pylibfdt-build.patch | 2 +- .../200-radxa-e25-update-baudrate.patch | 2 +- ...01-rk3568-generic-remove-spi-support.patch | 11 +- ...3328-Add-FriendlyARM-NanoPi-R2S-Plus.patch | 242 ---- ...k3568-Add-support-for-fastrhino-r6xs.patch | 180 --- .../Auto compile with openwrt sdk.yml | 6 +- .../workflows/Close stale issues and PRs.yml | 2 +- openwrt-passwall/luci-app-passwall/Makefile | 2 +- .../share/passwall/helper_chinadns_add.lua | 4 +- .../share/passwall/helper_smartdns_add.lua | 4 +- .../Auto compile with openwrt sdk.yml | 6 +- .../workflows/Close stale issues and Prs.yml | 2 +- .../htdocs/luci-static/resources/fchomo.js | 186 +-- .../resources/view/fchomo/client.js | 178 ++- .../resources/view/fchomo/global.js | 49 +- .../resources/view/fchomo/hosts.js | 10 +- .../luci-static/resources/view/fchomo/log.js | 10 +- .../luci-static/resources/view/fchomo/node.js | 60 +- .../resources/view/fchomo/ruleset.js | 30 +- .../resources/view/fchomo/server.js | 28 +- small/luci-app-fchomo/po/templates/fchomo.pot | 4 +- small/luci-app-fchomo/po/zh_Hans/fchomo.po | 8 +- small/luci-app-fchomo/po/zh_Hant/fchomo.po | 12 +- small/luci-app-passwall/Makefile | 2 +- .../share/passwall/helper_chinadns_add.lua | 4 +- .../share/passwall/helper_smartdns_add.lua | 4 +- small/mihomo/files/mihomo.init | 6 +- .../v2rayN/ServiceLib/Handler/AppHandler.cs | 2 +- .../ServiceLib/Handler/AutoStartupHandler.cs | 4 + .../ServiceLib/Handler/ConfigHandler.cs | 13 +- .../ServiceLib/Handler/CoreConfigHandler.cs | 2 +- .../ServiceLib/Handler/CoreInfoHandler.cs | 256 ++-- .../ServiceLib/Handler/ProfileExHandler.cs | 4 +- .../ServiceLib/Handler/StatisticsHandler.cs | 16 +- .../ServiceLib/Models/ClashConnections.cs | 2 +- .../v2rayN/ServiceLib/Models/ConfigItems.cs | 10 +- .../v2rayN/ServiceLib/Resx/ResUI.Designer.cs | 20 +- .../v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx | 6 +- v2rayn/v2rayN/ServiceLib/Resx/ResUI.hu.resx | 4 +- v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx | 6 +- v2rayn/v2rayN/ServiceLib/Resx/ResUI.ru.resx | 4 +- .../v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx | 6 +- .../v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx | 6 +- .../ServiceLib/Sample/dns_singbox_normal | 4 +- .../v2rayN/ServiceLib/Sample/tun_singbox_dns | 4 +- v2rayn/v2rayN/ServiceLib/ServiceLib.csproj | 2 +- .../CoreConfig/CoreConfigSingboxService.cs | 14 +- .../CoreConfig/CoreConfigV2rayService.cs | 14 +- .../ViewModels/AddServer2ViewModel.cs | 2 + .../ViewModels/BackupAndRestoreViewModel.cs | 2 +- .../ViewModels/CheckUpdateViewModel.cs | 2 +- .../ViewModels/ClashConnectionsViewModel.cs | 3 +- .../ViewModels/ClashProxiesViewModel.cs | 12 +- .../ViewModels/DNSSettingViewModel.cs | 4 +- .../ViewModels/MainWindowViewModel.cs | 21 +- .../ServiceLib/ViewModels/MsgViewModel.cs | 1 + .../ViewModels/OptionSettingViewModel.cs | 11 +- .../ViewModels/ProfilesViewModel.cs | 2 +- .../ViewModels/RoutingRuleSettingViewModel.cs | 2 +- .../ViewModels/RoutingSettingViewModel.cs | 2 +- .../ViewModels/StatusBarViewModel.cs | 24 +- .../ViewModels/SubSettingViewModel.cs | 2 +- .../Views/OptionSettingWindow.axaml | 8 +- .../Views/OptionSettingWindow.axaml.cs | 2 +- .../v2rayN/Views/OptionSettingWindow.xaml | 8 +- .../v2rayN/Views/OptionSettingWindow.xaml.cs | 6 +- xray-core/go.mod | 2 +- xray-core/go.sum | 4 +- youtube-dl/youtube_dl/extractor/youtube.py | 121 +- yt-dlp/README.md | 2 +- yt-dlp/yt_dlp/extractor/youtube.py | 41 +- 79 files changed, 1220 insertions(+), 1673 deletions(-) delete mode 100644 lede/package/boot/uboot-rockchip/patches/303-rockchip-rk3328-Add-FriendlyARM-NanoPi-R2S-Plus.patch diff --git a/.github/update.log b/.github/update.log index 67397ed321..d3960bb52a 100644 --- a/.github/update.log +++ b/.github/update.log @@ -883,3 +883,4 @@ Update On Sat Jan 11 19:31:54 CET 2025 Update On Sun Jan 12 19:31:00 CET 2025 Update On Mon Jan 13 19:35:28 CET 2025 Update On Tue Jan 14 19:32:59 CET 2025 +Update On Wed Jan 15 19:33:42 CET 2025 diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock index 5e07cd1e2f..d6b1914157 100644 --- a/clash-nyanpasu/backend/Cargo.lock +++ b/clash-nyanpasu/backend/Cargo.lock @@ -2815,9 +2815,9 @@ checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55" [[package]] name = "fast_image_resize" -version = "5.1.0" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7890c03bc18abd95e18d972f6f8f19ecc792cc01f208f060b3764a672de9e2" +checksum = "3d6b088992b0c2db53860aa4b43f299fd45aa85b835c744dec53c3f40231330d" dependencies = [ "cfg-if", "document-features", diff --git a/clash-nyanpasu/frontend/interface/package.json b/clash-nyanpasu/frontend/interface/package.json index c697f82735..bb19b258d9 100644 --- a/clash-nyanpasu/frontend/interface/package.json +++ b/clash-nyanpasu/frontend/interface/package.json @@ -18,6 +18,6 @@ "swr": "2.3.0" }, "devDependencies": { - "@types/react": "19.0.6" + "@types/react": "19.0.7" } } diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index 115049fd1c..a9a5b711bd 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -52,7 +52,7 @@ "@csstools/normalize.css": "12.1.1", "@emotion/babel-plugin": "11.13.5", "@emotion/react": "11.14.0", - "@iconify/json": "2.2.294", + "@iconify/json": "2.2.295", "@monaco-editor/react": "4.6.0", "@tanstack/react-query": "5.64.1", "@tanstack/react-router": "1.89.2", @@ -66,7 +66,7 @@ "@tauri-apps/plugin-process": "2.2.0", "@tauri-apps/plugin-shell": "2.2.0", "@tauri-apps/plugin-updater": "2.3.1", - "@types/react": "19.0.6", + "@types/react": "19.0.7", "@types/react-dom": "19.0.3", "@types/validator": "13.12.2", "@vitejs/plugin-legacy": "6.0.0", @@ -79,7 +79,7 @@ "meta-json-schema": "1.19.1", "monaco-yaml": "5.2.3", "nanoid": "5.0.9", - "sass-embedded": "1.83.1", + "sass-embedded": "1.83.4", "shiki": "1.26.2", "tailwindcss-textshadow": "2.1.3", "unplugin-auto-import": "19.0.0", diff --git a/clash-nyanpasu/frontend/ui/package.json b/clash-nyanpasu/frontend/ui/package.json index 5182045e03..4f5bd1eb9f 100644 --- a/clash-nyanpasu/frontend/ui/package.json +++ b/clash-nyanpasu/frontend/ui/package.json @@ -24,7 +24,7 @@ "@radix-ui/react-scroll-area": "1.2.2", "@tauri-apps/api": "2.2.0", "@types/d3": "7.4.3", - "@types/react": "19.0.6", + "@types/react": "19.0.7", "@vitejs/plugin-react": "4.3.4", "ahooks": "3.8.4", "d3": "7.9.0", @@ -42,7 +42,7 @@ "@types/d3-interpolate-path": "2.0.3", "clsx": "2.1.1", "d3-interpolate-path": "2.3.0", - "sass-embedded": "1.83.1", + "sass-embedded": "1.83.4", "tailwind-merge": "2.6.0", "typescript-plugin-css-modules": "5.1.0", "vite-plugin-dts": "4.5.0" diff --git a/clash-nyanpasu/package.json b/clash-nyanpasu/package.json index 8c56669ce8..a274d98ad8 100644 --- a/clash-nyanpasu/package.json +++ b/clash-nyanpasu/package.json @@ -60,13 +60,13 @@ "@commitlint/cli": "19.6.1", "@commitlint/config-conventional": "19.6.0", "@eslint/compat": "1.2.5", - "@ianvs/prettier-plugin-sort-imports": "4.4.0", + "@ianvs/prettier-plugin-sort-imports": "4.4.1", "@tauri-apps/cli": "2.2.4", "@types/fs-extra": "11.0.4", "@types/lodash-es": "4.17.12", "@types/node": "22.10.6", - "@typescript-eslint/eslint-plugin": "8.19.1", - "@typescript-eslint/parser": "8.19.1", + "@typescript-eslint/eslint-plugin": "8.20.0", + "@typescript-eslint/parser": "8.20.0", "autoprefixer": "10.4.20", "conventional-changelog-conventionalcommits": "8.0.0", "cross-env": "7.0.3", @@ -78,10 +78,10 @@ "eslint-plugin-html": "8.1.2", "eslint-plugin-import": "2.31.0", "eslint-plugin-n": "17.15.1", - "eslint-plugin-prettier": "5.2.1", + "eslint-plugin-prettier": "5.2.2", "eslint-plugin-promise": "7.2.1", - "eslint-plugin-react": "7.37.3", - "eslint-plugin-react-compiler": "19.0.0-beta-df7b47d-20241124", + "eslint-plugin-react": "7.37.4", + "eslint-plugin-react-compiler": "19.0.0-beta-e552027-20250112", "eslint-plugin-react-hooks": "5.1.0", "globals": "15.14.0", "knip": "5.42.0", @@ -96,7 +96,7 @@ "prettier-plugin-tailwindcss": "0.6.9", "prettier-plugin-toml": "2.0.1", "react-devtools": "6.0.1", - "stylelint": "16.13.0", + "stylelint": "16.13.2", "stylelint-config-html": "1.1.0", "stylelint-config-recess-order": "5.1.1", "stylelint-config-standard": "36.0.1", @@ -106,7 +106,7 @@ "tailwindcss": "3.4.17", "tsx": "4.19.2", "typescript": "5.7.3", - "typescript-eslint": "8.19.1" + "typescript-eslint": "8.20.0" }, "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0", "engines": { diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml index 5ee68b8916..db8fbf3402 100644 --- a/clash-nyanpasu/pnpm-lock.yaml +++ b/clash-nyanpasu/pnpm-lock.yaml @@ -28,8 +28,8 @@ importers: specifier: 1.2.5 version: 1.2.5(eslint@9.18.0(jiti@2.4.2)) '@ianvs/prettier-plugin-sort-imports': - specifier: 4.4.0 - version: 4.4.0(prettier@3.4.2) + specifier: 4.4.1 + version: 4.4.1(prettier@3.4.2) '@tauri-apps/cli': specifier: 2.2.4 version: 2.2.4 @@ -43,11 +43,11 @@ importers: specifier: 22.10.6 version: 22.10.6 '@typescript-eslint/eslint-plugin': - specifier: 8.19.1 - version: 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: 8.20.0 + version: 8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/parser': - specifier: 8.19.1 - version: 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: 8.20.0 + version: 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) autoprefixer: specifier: 10.4.20 version: 10.4.20(postcss@8.4.49) @@ -68,31 +68,31 @@ importers: version: 9.1.0(eslint@9.18.0(jiti@2.4.2)) eslint-config-standard: specifier: 17.1.0 - version: 17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint-plugin-n@17.15.1(eslint@9.18.0(jiti@2.4.2)))(eslint-plugin-promise@7.2.1(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2)) + version: 17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint-plugin-n@17.15.1(eslint@9.18.0(jiti@2.4.2)))(eslint-plugin-promise@7.2.1(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2)) eslint-import-resolver-alias: specifier: 1.1.2 - version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))) + version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))) eslint-plugin-html: specifier: 8.1.2 version: 8.1.2 eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) + version: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-n: specifier: 17.15.1 version: 17.15.1(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-prettier: - specifier: 5.2.1 - version: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2))(prettier@3.4.2) + specifier: 5.2.2 + version: 5.2.2(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2))(prettier@3.4.2) eslint-plugin-promise: specifier: 7.2.1 version: 7.2.1(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-react: - specifier: 7.37.3 - version: 7.37.3(eslint@9.18.0(jiti@2.4.2)) + specifier: 7.37.4 + version: 7.37.4(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-react-compiler: - specifier: 19.0.0-beta-df7b47d-20241124 - version: 19.0.0-beta-df7b47d-20241124(eslint@9.18.0(jiti@2.4.2)) + specifier: 19.0.0-beta-e552027-20250112 + version: 19.0.0-beta-e552027-20250112(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-react-hooks: specifier: 5.1.0 version: 5.1.0(eslint@9.18.0(jiti@2.4.2)) @@ -107,7 +107,7 @@ importers: version: 15.3.0 neostandard: specifier: 0.12.0 - version: 0.12.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + version: 0.12.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) npm-run-all2: specifier: 7.0.2 version: 7.0.2 @@ -128,7 +128,7 @@ importers: version: 3.4.2 prettier-plugin-tailwindcss: specifier: 0.6.9 - version: 0.6.9(@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.4.2))(@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.4.2))(prettier@3.4.2) + version: 0.6.9(@ianvs/prettier-plugin-sort-imports@4.4.1(prettier@3.4.2))(@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.4.2))(prettier@3.4.2) prettier-plugin-toml: specifier: 2.0.1 version: 2.0.1(prettier@3.4.2) @@ -136,26 +136,26 @@ importers: specifier: 6.0.1 version: 6.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) stylelint: - specifier: 16.13.0 - version: 16.13.0(typescript@5.7.3) + specifier: 16.13.2 + version: 16.13.2(typescript@5.7.3) stylelint-config-html: specifier: 1.1.0 - version: 1.1.0(postcss-html@1.7.0)(stylelint@16.13.0(typescript@5.7.3)) + version: 1.1.0(postcss-html@1.7.0)(stylelint@16.13.2(typescript@5.7.3)) stylelint-config-recess-order: specifier: 5.1.1 - version: 5.1.1(stylelint@16.13.0(typescript@5.7.3)) + version: 5.1.1(stylelint@16.13.2(typescript@5.7.3)) stylelint-config-standard: specifier: 36.0.1 - version: 36.0.1(stylelint@16.13.0(typescript@5.7.3)) + version: 36.0.1(stylelint@16.13.2(typescript@5.7.3)) stylelint-declaration-block-no-ignored-properties: specifier: 2.8.0 - version: 2.8.0(stylelint@16.13.0(typescript@5.7.3)) + version: 2.8.0(stylelint@16.13.2(typescript@5.7.3)) stylelint-order: specifier: 6.0.4 - version: 6.0.4(stylelint@16.13.0(typescript@5.7.3)) + version: 6.0.4(stylelint@16.13.2(typescript@5.7.3)) stylelint-scss: specifier: 6.10.0 - version: 6.10.0(stylelint@16.13.0(typescript@5.7.3)) + version: 6.10.0(stylelint@16.13.2(typescript@5.7.3)) tailwindcss: specifier: 3.4.17 version: 3.4.17 @@ -166,8 +166,8 @@ importers: specifier: 5.7.3 version: 5.7.3 typescript-eslint: - specifier: 8.19.1 - version: 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: 8.20.0 + version: 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) frontend/interface: dependencies: @@ -188,8 +188,8 @@ importers: version: 2.3.0(react@19.0.0) devDependencies: '@types/react': - specifier: 19.0.6 - version: 19.0.6 + specifier: 19.0.7 + version: 19.0.7 frontend/nyanpasu: dependencies: @@ -204,7 +204,7 @@ importers: version: 3.2.2(react@19.0.0) '@emotion/styled': specifier: 11.14.0 - version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) + version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) '@juggle/resize-observer': specifier: 3.4.0 version: 3.4.0 @@ -213,13 +213,13 @@ importers: version: 0.3.0 '@mui/icons-material': specifier: 6.3.1 - version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) + version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) '@mui/lab': specifier: 6.0.0-beta.22 - version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mui/material': specifier: 6.3.1 - version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@nyanpasu/interface': specifier: workspace:^ version: link:../interface @@ -255,19 +255,19 @@ importers: version: 24.2.1(typescript@5.7.3) jotai: specifier: 2.11.0 - version: 2.11.0(@types/react@19.0.6)(react@19.0.0) + version: 2.11.0(@types/react@19.0.7)(react@19.0.0) json-schema: specifier: 0.4.0 version: 0.4.0 material-react-table: specifier: 3.1.0 - version: 3.1.0(sox3jot6azabg3ow7lasqhiq7u) + version: 3.1.0(33s4d6kci6eqbx5ooz6ackxg4m) monaco-editor: specifier: 0.52.2 version: 0.52.2 mui-color-input: specifier: 5.0.1 - version: 5.0.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 5.0.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -282,13 +282,13 @@ importers: version: 1.6.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-hook-form-mui: specifier: 7.4.1 - version: 7.4.1(6i4thao436u7e63mmd7zcsfvkq) + version: 7.4.1(25ummgs4mloo56jtt6hftm5izu) react-i18next: specifier: 15.4.0 version: 15.4.0(i18next@24.2.1(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-markdown: specifier: 9.0.1 - version: 9.0.1(@types/react@19.0.6)(react@19.0.0) + version: 9.0.1(@types/react@19.0.7)(react@19.0.0) react-split-grid: specifier: 1.0.4 version: 1.0.4(react@19.0.0) @@ -313,10 +313,10 @@ importers: version: 11.13.5 '@emotion/react': specifier: 11.14.0 - version: 11.14.0(@types/react@19.0.6)(react@19.0.0) + version: 11.14.0(@types/react@19.0.7)(react@19.0.0) '@iconify/json': - specifier: 2.2.294 - version: 2.2.294 + specifier: 2.2.295 + version: 2.2.295 '@monaco-editor/react': specifier: 4.6.0 version: 4.6.0(monaco-editor@0.52.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -331,7 +331,7 @@ importers: version: 1.89.2(@tanstack/react-router@1.89.2(@tanstack/router-generator@1.87.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/router-plugin': specifier: 1.87.13 - version: 1.87.13(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 1.87.13(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) '@tauri-apps/plugin-clipboard-manager': specifier: 2.2.0 version: 2.2.0 @@ -357,23 +357,23 @@ importers: specifier: 2.3.1 version: 2.3.1 '@types/react': - specifier: 19.0.6 - version: 19.0.6 + specifier: 19.0.7 + version: 19.0.7 '@types/react-dom': specifier: 19.0.3 - version: 19.0.3(@types/react@19.0.6) + version: 19.0.3(@types/react@19.0.7) '@types/validator': specifier: 13.12.2 version: 13.12.2 '@vitejs/plugin-legacy': specifier: 6.0.0 - version: 6.0.0(terser@5.36.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 6.0.0(terser@5.36.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) '@vitejs/plugin-react': specifier: 4.3.4 - version: 4.3.4(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 4.3.4(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) '@vitejs/plugin-react-swc': specifier: 3.7.2 - version: 3.7.2(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 3.7.2(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) change-case: specifier: 5.4.4 version: 5.4.4 @@ -396,8 +396,8 @@ importers: specifier: 5.0.9 version: 5.0.9 sass-embedded: - specifier: 1.83.1 - version: 1.83.1 + specifier: 1.83.4 + version: 1.83.4 shiki: specifier: 1.26.2 version: 1.26.2 @@ -415,19 +415,19 @@ importers: version: 13.12.0 vite: specifier: 6.0.7 - version: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + version: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) vite-plugin-html: specifier: 3.2.2 - version: 3.2.2(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 3.2.2(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) vite-plugin-sass-dts: specifier: 1.3.30 - version: 1.3.30(postcss@8.4.49)(prettier@3.4.2)(sass-embedded@1.83.1)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 1.3.30(postcss@8.4.49)(prettier@3.4.2)(sass-embedded@1.83.4)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) vite-plugin-svgr: specifier: 4.3.0 - version: 4.3.0(rollup@4.27.4)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 4.3.0(rollup@4.27.4)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) vite-tsconfig-paths: specifier: 5.1.4 - version: 5.1.4(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 5.1.4(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) zod: specifier: 3.24.1 version: 3.24.1 @@ -439,19 +439,19 @@ importers: version: 0.3.0 '@mui/icons-material': specifier: 6.3.1 - version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) + version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) '@mui/lab': specifier: 6.0.0-beta.22 - version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mui/material': specifier: 6.3.1 - version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-portal': specifier: 1.1.3 - version: 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-scroll-area': specifier: 1.2.2 - version: 1.2.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.2.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tauri-apps/api': specifier: 2.2.0 version: 2.2.0 @@ -459,11 +459,11 @@ importers: specifier: 7.4.3 version: 7.4.3 '@types/react': - specifier: 19.0.6 - version: 19.0.6 + specifier: 19.0.7 + version: 19.0.7 '@vitejs/plugin-react': specifier: 4.3.4 - version: 4.3.4(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 4.3.4(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) ahooks: specifier: 3.8.4 version: 3.8.4(react@19.0.0) @@ -490,14 +490,14 @@ importers: version: 17.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) vite: specifier: 6.0.7 - version: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + version: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) vite-tsconfig-paths: specifier: 5.1.4 - version: 5.1.4(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 5.1.4(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) devDependencies: '@emotion/react': specifier: 11.14.0 - version: 11.14.0(@types/react@19.0.6)(react@19.0.0) + version: 11.14.0(@types/react@19.0.7)(react@19.0.0) '@types/d3-interpolate-path': specifier: 2.0.3 version: 2.0.3 @@ -508,8 +508,8 @@ importers: specifier: 2.3.0 version: 2.3.0 sass-embedded: - specifier: 1.83.1 - version: 1.83.1 + specifier: 1.83.4 + version: 1.83.4 tailwind-merge: specifier: 2.6.0 version: 2.6.0 @@ -518,7 +518,7 @@ importers: version: 5.1.0(typescript@5.7.3) vite-plugin-dts: specifier: 4.5.0 - version: 4.5.0(@types/node@22.10.6)(rollup@4.27.4)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 4.5.0(@types/node@22.10.6)(rollup@4.27.4)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)) scripts: dependencies: @@ -626,10 +626,6 @@ packages: resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.2': - resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.26.3': resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} engines: {node: '>=6.9.0'} @@ -741,11 +737,6 @@ packages: resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.2': - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.26.3': resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} engines: {node: '>=6.0.0'} @@ -781,6 +772,13 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-proposal-private-methods@7.18.6': + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -1742,8 +1740,8 @@ packages: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} - '@ianvs/prettier-plugin-sort-imports@4.4.0': - resolution: {integrity: sha512-f4/e+/ANGk3tHuwRW0uh2YuBR50I4h1ZjGQ+5uD8sWfinHTivQsnieR5cz24t8M6Vx4rYvZ5v/IEKZhYpzQm9Q==} + '@ianvs/prettier-plugin-sort-imports@4.4.1': + resolution: {integrity: sha512-F0/Hrcfpy8WuxlQyAWJTEren/uxKhYonOGY4OyWmwRdeTvkh9mMSCxowZLjNkhwi/2ipqCgtXwwOk7tW0mWXkA==} peerDependencies: '@vue/compiler-sfc': 2.7.x || 3.x prettier: 2 || 3 @@ -1751,8 +1749,8 @@ packages: '@vue/compiler-sfc': optional: true - '@iconify/json@2.2.294': - resolution: {integrity: sha512-Vopidp3VQtscXYB6qUI8uJf15ihrzaJjwhvLnxHIMB3JYqvCKI1JHI+UMKaWkbOOJDsOg9b0rIXmRovShk8YrQ==} + '@iconify/json@2.2.295': + resolution: {integrity: sha512-VXR+Qn1G+yicPW71zxHEmNcCLVCTdqpfmwBS4Qc4ELnuXRb1a7lYLoZJKGs9MnjdWEj1VWJdKim4v9fCJin4JA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -3133,8 +3131,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@19.0.6': - resolution: {integrity: sha512-gIlMztcTeDgXCUj0vCBOqEuSEhX//63fW9SZtCJ+agxoQTOklwDfiEMlTWn4mR/C/UK5VHlpwsCsOyf7/hc4lw==} + '@types/react@19.0.7': + resolution: {integrity: sha512-MoFsEJKkAtZCrC1r6CM8U22GzhG7u2Wir8ons/aCKH6MBdD1ibV24zOSSkdZVUKqN5i396zG5VKLYZ3yaUZdLA==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -3154,49 +3152,43 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.19.1': - resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} + '@typescript-eslint/eslint-plugin@8.20.0': + resolution: {integrity: sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.19.1': - resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} + '@typescript-eslint/parser@8.20.0': + resolution: {integrity: sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.19.0': - resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.19.1': resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.19.1': - resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} + '@typescript-eslint/scope-manager@8.20.0': + resolution: {integrity: sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.20.0': + resolution: {integrity: sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.19.0': - resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.19.1': resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.19.0': - resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} + '@typescript-eslint/types@8.20.0': + resolution: {integrity: sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/typescript-estree@8.19.1': resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} @@ -3204,11 +3196,10 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.19.0': - resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} + '@typescript-eslint/typescript-estree@8.20.0': + resolution: {integrity: sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/utils@8.19.1': @@ -3218,14 +3209,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.19.0': - resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} + '@typescript-eslint/utils@8.20.0': + resolution: {integrity: sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/visitor-keys@8.19.1': resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.20.0': + resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -4562,8 +4560,8 @@ packages: peerDependencies: eslint: '>=8.23.0' - eslint-plugin-prettier@5.2.1: - resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + eslint-plugin-prettier@5.2.2: + resolution: {integrity: sha512-1yI3/hf35wmlq66C8yOyrujQnel+v5l1Vop5Cl2I6ylyNTT1JbuUUnV3/41PzwTzcyDp/oF0jWE3HXvcH5AQOQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -4582,8 +4580,8 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-react-compiler@19.0.0-beta-df7b47d-20241124: - resolution: {integrity: sha512-82PfnllC8jP/68KdLAbpWuYTcfmtGLzkqy2IW85WopKMTr+4rdQpp+lfliQ/QE79wWrv/dRoADrk3Pdhq25nTw==} + eslint-plugin-react-compiler@19.0.0-beta-e552027-20250112: + resolution: {integrity: sha512-VjkIXHouCYyJHgk5HmZ1LH+fAK5CX+ULRX9iNYtwYJ+ljbivFhIT+JJyxNT/USQpCeS2Dt5ahjFeeMv0RRwTww==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} peerDependencies: eslint: '>=7' @@ -4594,8 +4592,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react@7.37.3: - resolution: {integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==} + eslint-plugin-react@7.37.4: + resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -5132,8 +5130,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.0: - resolution: {integrity: sha512-lcX8PNQygAa22u/0BysEY8VhaFRzlOkvdlKczDPnJvrkJD1EuqzEky5VYYKM2iySIuaVIDv9N190DfSreSLw2A==} + ignore@7.0.3: + resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} engines: {node: '>= 4'} image-size@0.5.5: @@ -5308,9 +5306,6 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - is-finalizationregistry@1.1.1: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} @@ -6816,10 +6811,6 @@ packages: reduce-css-calc@2.1.8: resolution: {integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==} - reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} - reflect.getprototypeof@1.0.9: resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} engines: {node: '>= 0.4'} @@ -7000,128 +6991,128 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass-embedded-android-arm64@1.83.1: - resolution: {integrity: sha512-S63rlLPGCA9FCqYYOobDJrwcuBX0zbSOl7y0jT9DlfqeqNOkC6NIT1id6RpMFCs3uhd4gbBS2E/5WPv5J5qwbw==} + sass-embedded-android-arm64@1.83.4: + resolution: {integrity: sha512-tgX4FzmbVqnQmD67ZxQDvI+qFNABrboOQgwsG05E5bA/US42zGajW9AxpECJYiMXVOHmg+d81ICbjb0fsVHskw==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [android] - sass-embedded-android-arm@1.83.1: - resolution: {integrity: sha512-FKfrmwDG84L5cfn8fmIew47qnCFFUdcoOTCzOw8ROItkRhLLH0hnIm6gEpG5T6OFf6kxzUxvE9D0FvYQUznZrw==} + sass-embedded-android-arm@1.83.4: + resolution: {integrity: sha512-9Z4pJAOgEkXa3VDY/o+U6l5XvV0mZTJcSl0l/mSPHihjAHSpLYnOW6+KOWeM8dxqrsqTYcd6COzhanI/a++5Gw==} engines: {node: '>=14.0.0'} cpu: [arm] os: [android] - sass-embedded-android-ia32@1.83.1: - resolution: {integrity: sha512-AGlY2vFLJhF2hN0qOz12f4eDs6x0b5BUapOpgfRrqQLHIfJhxkvi39bInsiBgQ57U0jb4I7AaS2e2e+sj7+Rqw==} + sass-embedded-android-ia32@1.83.4: + resolution: {integrity: sha512-RsFOziFqPcfZXdFRULC4Ayzy9aK6R6FwQ411broCjlOBX+b0gurjRadkue3cfUEUR5mmy0KeCbp7zVKPLTK+5Q==} engines: {node: '>=14.0.0'} cpu: [ia32] os: [android] - sass-embedded-android-riscv64@1.83.1: - resolution: {integrity: sha512-OyU4AnfAUVd/wBaT60XvHidmQdaEsVUnxvI71oyPM/id1v97aWTZX3SmGkwGb7uA/q6Soo2uNalgvOSNJn7PwA==} + sass-embedded-android-riscv64@1.83.4: + resolution: {integrity: sha512-EHwh0nmQarBBrMRU928eTZkFGx19k/XW2YwbPR4gBVdWLkbTgCA5aGe8hTE6/1zStyx++3nDGvTZ78+b/VvvLg==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [android] - sass-embedded-android-x64@1.83.1: - resolution: {integrity: sha512-NY5rwffhF4TnhXVErZnfFIjHqU3MNoWxCuSHumRN3dDI8hp8+IF59W5+Qw9AARlTXvyb+D0u5653aLSea5F40w==} + sass-embedded-android-x64@1.83.4: + resolution: {integrity: sha512-0PgQNuPWYy1jEOEPDVsV89KfqOsMLIp9CSbjBY7jRcwRhyVAcigqrUG6bDeNtojHUYKA1kU+Eh/85WxOHUOgBw==} engines: {node: '>=14.0.0'} cpu: [x64] os: [android] - sass-embedded-darwin-arm64@1.83.1: - resolution: {integrity: sha512-w1SBcSkIgIWgUfB7IKcPoTbSwnS3Kag5PVv3e3xfW6ZCsDweYZLQntUd2WGgaoekdm1uIbVuvPxnDH2t880iGQ==} + sass-embedded-darwin-arm64@1.83.4: + resolution: {integrity: sha512-rp2ywymWc3nymnSnAFG5R/8hvxWCsuhK3wOnD10IDlmNB7o4rzKby1c+2ZfpQGowlYGWsWWTgz8FW2qzmZsQRw==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [darwin] - sass-embedded-darwin-x64@1.83.1: - resolution: {integrity: sha512-RWrmLtUhEP5kvcGOAFdr99/ebZ/eW9z3FAktLldvgl2k96WSTC1Zr2ctL0E+Y+H3uLahEZsshIFk6RkVIRKIsA==} + sass-embedded-darwin-x64@1.83.4: + resolution: {integrity: sha512-kLkN2lXz9PCgGfDS8Ev5YVcl/V2173L6379en/CaFuJJi7WiyPgBymW7hOmfCt4uO4R1y7CP2Uc08DRtZsBlAA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [darwin] - sass-embedded-linux-arm64@1.83.1: - resolution: {integrity: sha512-HVIytzj8OO18fmBY6SVRIYErcJ+Nd9a5RNF6uArav/CqvwPLATlUV8dwqSyWQIzSsQUhDF/vFIlJIoNLKKzD3A==} + sass-embedded-linux-arm64@1.83.4: + resolution: {integrity: sha512-E0zjsZX2HgESwyqw31EHtI39DKa7RgK7nvIhIRco1d0QEw227WnoR9pjH3M/ZQy4gQj3GKilOFHM5Krs/omeIA==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] - sass-embedded-linux-arm@1.83.1: - resolution: {integrity: sha512-y7rHuRgjg2YM284rin068PsEdthPljSGb653Slut5Wba4A2IP11UNVraSl6Je2AYTuoPRjQX0g7XdsrjXlzC3g==} + sass-embedded-linux-arm@1.83.4: + resolution: {integrity: sha512-nL90ryxX2lNmFucr9jYUyHHx21AoAgdCL1O5Ltx2rKg2xTdytAGHYo2MT5S0LIeKLa/yKP/hjuSvrbICYNDvtA==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] - sass-embedded-linux-ia32@1.83.1: - resolution: {integrity: sha512-/pc+jHllyvfaYYLTRCoXseRc4+V3Z7IDPqsviTcfVdICAoR9mgK2RtIuIZanhm1NP/lDylDOgvj1NtjcA2dNvg==} + sass-embedded-linux-ia32@1.83.4: + resolution: {integrity: sha512-ew5HpchSzgAYbQoriRh8QhlWn5Kw2nQ2jHoV9YLwGKe3fwwOWA0KDedssvDv7FWnY/FCqXyymhLd6Bxae4Xquw==} engines: {node: '>=14.0.0'} cpu: [ia32] os: [linux] - sass-embedded-linux-musl-arm64@1.83.1: - resolution: {integrity: sha512-wjSIYYqdIQp3DjliSTYNFg04TVqQf/3Up/Stahol0Qf/TTjLkjHHtT2jnDaZI5GclHi2PVJqQF3wEGB8bGJMzQ==} + sass-embedded-linux-musl-arm64@1.83.4: + resolution: {integrity: sha512-IzMgalf6MZOxgp4AVCgsaWAFDP/IVWOrgVXxkyhw29fyAEoSWBJH4k87wyPhEtxSuzVHLxKNbc8k3UzdWmlBFg==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] - sass-embedded-linux-musl-arm@1.83.1: - resolution: {integrity: sha512-sFM8GXOVoeR91j9MiwNRcFXRpTA7u4185SaGuvUjcRMb84mHvtWOJPGDvgZqbWdVClBRJp6J7+CShliWngy/og==} + sass-embedded-linux-musl-arm@1.83.4: + resolution: {integrity: sha512-0RrJRwMrmm+gG0VOB5b5Cjs7Sd+lhqpQJa6EJNEaZHljJokEfpE5GejZsGMRMIQLxEvVphZnnxl6sonCGFE/QQ==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] - sass-embedded-linux-musl-ia32@1.83.1: - resolution: {integrity: sha512-iwhTH5gwmoGt3VH6dn4WV8N6eWvthKAvUX5XPURq7e9KEsc7QP8YNHagwaAJh7TAPopb32buyEg6oaUmzxUI+Q==} + sass-embedded-linux-musl-ia32@1.83.4: + resolution: {integrity: sha512-LLb4lYbcxPzX4UaJymYXC+WwokxUlfTJEFUv5VF0OTuSsHAGNRs/rslPtzVBTvMeG9TtlOQDhku1F7G6iaDotA==} engines: {node: '>=14.0.0'} cpu: [ia32] os: [linux] - sass-embedded-linux-musl-riscv64@1.83.1: - resolution: {integrity: sha512-FjFNWHU1n0Q6GpK1lAHQL5WmzlPjL8DTVLkYW2A/dq8EsutAdi3GfpeyWZk9bte8kyWdmPUWG3BHlnQl22xdoA==} + sass-embedded-linux-musl-riscv64@1.83.4: + resolution: {integrity: sha512-zoKlPzD5Z13HKin1UGR74QkEy+kZEk2AkGX5RelRG494mi+IWwRuWCppXIovor9+BQb9eDWPYPoMVahwN5F7VA==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] - sass-embedded-linux-musl-x64@1.83.1: - resolution: {integrity: sha512-BUfYR5TIDvgGHWhxSIKwTJocXU88ECZ0BW89RJqtvr7m83fKdf5ylTFCOieU7BwcA7SORUeZzcQzVFIdPUM3BQ==} + sass-embedded-linux-musl-x64@1.83.4: + resolution: {integrity: sha512-hB8+/PYhfEf2zTIcidO5Bpof9trK6WJjZ4T8g2MrxQh8REVtdPcgIkoxczRynqybf9+fbqbUwzXtiUao2GV+vQ==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] - sass-embedded-linux-riscv64@1.83.1: - resolution: {integrity: sha512-KOBGSpMrJi8y+H+za3vAAVQImPUvQa5eUrvTbbOl+wkU7WAGhOu8xrxgmYYiz3pZVBBcfRjz4I2jBcDFKJmWSw==} + sass-embedded-linux-riscv64@1.83.4: + resolution: {integrity: sha512-83fL4n+oeDJ0Y4KjASmZ9jHS1Vl9ESVQYHMhJE0i4xDi/P3BNarm2rsKljq/QtrwGpbqwn8ujzOu7DsNCMDSHA==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] - sass-embedded-linux-x64@1.83.1: - resolution: {integrity: sha512-swUsMHKqlEU9dZQ/I5WADDaXz+QkmJS27x/Oeh+oz41YgZ0ppKd0l4Vwjn0LgOQn+rxH1zLFv6xXDycvj68F/w==} + sass-embedded-linux-x64@1.83.4: + resolution: {integrity: sha512-NlnGdvCmTD5PK+LKXlK3sAuxOgbRIEoZfnHvxd157imCm/s2SYF/R28D0DAAjEViyI8DovIWghgbcqwuertXsA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] - sass-embedded-win32-arm64@1.83.1: - resolution: {integrity: sha512-6lONEBN5TaFD5L/y68zUugryXqm4RAFuLdaOPeZQRu+7ay/AmfhtFYfE5gRssnIcIx1nlcoq7zA3UX+SN2jo1Q==} + sass-embedded-win32-arm64@1.83.4: + resolution: {integrity: sha512-J2BFKrEaeSrVazU2qTjyQdAk+MvbzJeTuCET0uAJEXSKtvQ3AzxvzndS7LqkDPbF32eXAHLw8GVpwcBwKbB3Uw==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [win32] - sass-embedded-win32-ia32@1.83.1: - resolution: {integrity: sha512-HxZDkAE9n6Gb8Rz6xd67VHuo5FkUSQ4xPb7cHKa4pE0ndwH5Oc0uEhbqjJobpgmnuTm1rQYNU2nof1sFhy2MFA==} + sass-embedded-win32-ia32@1.83.4: + resolution: {integrity: sha512-uPAe9T/5sANFhJS5dcfAOhOJy8/l2TRYG4r+UO3Wp4yhqbN7bggPvY9c7zMYS0OC8tU/bCvfYUDFHYMCl91FgA==} engines: {node: '>=14.0.0'} cpu: [ia32] os: [win32] - sass-embedded-win32-x64@1.83.1: - resolution: {integrity: sha512-5Q0aPfUaqRek8Ee1AqTUIC0o6yQSA8QwyhCgh7upsnHG3Ltm8pkJOYjzm+UgYPJeoMNppDjdDlRGQISE7qzd4g==} + sass-embedded-win32-x64@1.83.4: + resolution: {integrity: sha512-C9fkDY0jKITdJFij4UbfPFswxoXN9O/Dr79v17fJnstVwtUojzVJWKHUXvF0Zg2LIR7TCc4ju3adejKFxj7ueA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [win32] - sass-embedded@1.83.1: - resolution: {integrity: sha512-LdKG6nxLEzpXbMUt0if12PhUNonGvy91n7IWHOZRZjvA6AWm9oVdhpO+KEXN/Sc+jjGvQeQcav9+Z8DwmII/pA==} + sass-embedded@1.83.4: + resolution: {integrity: sha512-Hf2burRA/y5PGxsg6jB9UpoK/xZ6g/pgrkOcdl6j+rRg1Zj8XhGKZ1MTysZGtTPUUmiiErqzkP5+Kzp95yv9GQ==} engines: {node: '>=16.0.0'} hasBin: true @@ -7218,10 +7209,6 @@ packages: resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} engines: {node: '>= 0.4'} - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - side-channel@1.1.0: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} @@ -7466,8 +7453,8 @@ packages: peerDependencies: stylelint: ^16.0.2 - stylelint@16.13.0: - resolution: {integrity: sha512-muxVjMhZB8BrDFSKNva0dmvD2tM0o/szrvuZuXYcAnN9a8nQmbGLqNUOemSgumaCMCPQ+0USYyG3hA5vJjUC1Q==} + stylelint@16.13.2: + resolution: {integrity: sha512-wDlgh0mRO9RtSa3TdidqHd0nOG8MmUyVKl+dxA6C1j8aZRzpNeEgdhFmU5y4sZx4Fc6r46p0fI7p1vR5O2DZqA==} engines: {node: '>=18.12.0'} hasBin: true @@ -7639,12 +7626,6 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - ts-api-utils@2.0.0: resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} engines: {node: '>=18.12'} @@ -7736,8 +7717,8 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript-eslint@8.19.1: - resolution: {integrity: sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==} + typescript-eslint@8.20.0: + resolution: {integrity: sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -8102,10 +8083,6 @@ packages: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} - which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} - engines: {node: '>= 0.4'} - which-builtin-type@1.2.1: resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} engines: {node: '>= 0.4'} @@ -8331,14 +8308,6 @@ snapshots: source-map: 0.5.7 optional: true - '@babel/generator@7.26.2': - dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 - '@babel/generator@7.26.3': dependencies: '@babel/parser': 7.26.3 @@ -8498,10 +8467,6 @@ snapshots: '@babel/template': 7.25.9 '@babel/types': 7.26.3 - '@babel/parser@7.26.2': - dependencies: - '@babel/types': 7.26.3 - '@babel/parser@7.26.3': dependencies: '@babel/types': 7.26.3 @@ -8541,6 +8506,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9258,7 +9231,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0)': + '@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.13.5 @@ -9270,7 +9243,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 transitivePeerDependencies: - supports-color @@ -9284,18 +9257,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0)': + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.3.0 - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.0.0) '@emotion/utils': 1.4.2 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 transitivePeerDependencies: - supports-color @@ -9541,18 +9514,18 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} - '@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.4.2)': + '@ianvs/prettier-plugin-sort-imports@4.4.1(prettier@3.4.2)': dependencies: - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 prettier: 3.4.2 semver: 7.6.3 transitivePeerDependencies: - supports-color - '@iconify/json@2.2.294': + '@iconify/json@2.2.295': dependencies: '@iconify/types': 2.0.0 pathe: 1.1.2 @@ -9662,56 +9635,56 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mui/base@5.0.0-beta.68(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mui/base@5.0.0-beta.68(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mui/types': 7.2.21(@types/react@19.0.6) - '@mui/utils': 6.3.1(@types/react@19.0.6)(react@19.0.0) + '@mui/types': 7.2.21(@types/react@19.0.7) + '@mui/utils': 6.3.1(@types/react@19.0.7)(react@19.0.0) '@popperjs/core': 2.11.8 clsx: 2.1.1 prop-types: 15.8.1 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 '@mui/core-downloads-tracker@6.3.1': {} - '@mui/icons-material@6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(react@19.0.0)': + '@mui/icons-material@6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@mui/lab@6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mui/lab@6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/base': 5.0.0-beta.68(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@mui/types': 7.2.21(@types/react@19.0.6) - '@mui/utils': 6.3.1(@types/react@19.0.6)(react@19.0.0) + '@mui/base': 5.0.0-beta.68(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@mui/types': 7.2.21(@types/react@19.0.7) + '@mui/utils': 6.3.1(@types/react@19.0.7)(react@19.0.0) clsx: 2.1.1 prop-types: 15.8.1 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@types/react': 19.0.6 + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@types/react': 19.0.7 - '@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@mui/core-downloads-tracker': 6.3.1 - '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@mui/types': 7.2.21(@types/react@19.0.6) - '@mui/utils': 6.3.1(@types/react@19.0.6)(react@19.0.0) + '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@mui/types': 7.2.21(@types/react@19.0.7) + '@mui/utils': 6.3.1(@types/react@19.0.7)(react@19.0.0) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.0.6) + '@types/react-transition-group': 4.4.12(@types/react@19.0.7) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -9720,29 +9693,29 @@ snapshots: react-is: 19.0.0 react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@types/react': 19.0.6 + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@types/react': 19.0.7 - '@mui/private-theming@5.16.6(@types/react@19.0.6)(react@19.0.0)': + '@mui/private-theming@5.16.6(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/utils': 5.16.6(@types/react@19.0.6)(react@19.0.0) + '@mui/utils': 5.16.6(@types/react@19.0.7)(react@19.0.0) prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@mui/private-theming@6.3.1(@types/react@19.0.6)(react@19.0.0)': + '@mui/private-theming@6.3.1(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/utils': 6.3.1(@types/react@19.0.6)(react@19.0.0) + '@mui/utils': 6.3.1(@types/react@19.0.7)(react@19.0.0) prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@mui/styled-engine@5.16.6(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(react@19.0.0)': + '@mui/styled-engine@5.16.6(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/cache': 11.14.0 @@ -9750,10 +9723,10 @@ snapshots: prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) - '@mui/styled-engine@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(react@19.0.0)': + '@mui/styled-engine@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/cache': 11.14.0 @@ -9763,85 +9736,85 @@ snapshots: prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) - '@mui/system@5.16.7(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0)': + '@mui/system@5.16.7(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/private-theming': 5.16.6(@types/react@19.0.6)(react@19.0.0) - '@mui/styled-engine': 5.16.6(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(react@19.0.0) - '@mui/types': 7.2.21(@types/react@19.0.6) - '@mui/utils': 5.16.6(@types/react@19.0.6)(react@19.0.0) + '@mui/private-theming': 5.16.6(@types/react@19.0.7)(react@19.0.0) + '@mui/styled-engine': 5.16.6(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(react@19.0.0) + '@mui/types': 7.2.21(@types/react@19.0.7) + '@mui/utils': 5.16.6(@types/react@19.0.7)(react@19.0.0) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@types/react': 19.0.6 + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@types/react': 19.0.7 - '@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0)': + '@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/private-theming': 6.3.1(@types/react@19.0.6)(react@19.0.0) - '@mui/styled-engine': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(react@19.0.0) - '@mui/types': 7.2.21(@types/react@19.0.6) - '@mui/utils': 6.3.1(@types/react@19.0.6)(react@19.0.0) + '@mui/private-theming': 6.3.1(@types/react@19.0.7)(react@19.0.0) + '@mui/styled-engine': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(react@19.0.0) + '@mui/types': 7.2.21(@types/react@19.0.7) + '@mui/utils': 6.3.1(@types/react@19.0.7)(react@19.0.0) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@types/react': 19.0.6 + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@types/react': 19.0.7 - '@mui/types@7.2.21(@types/react@19.0.6)': + '@mui/types@7.2.21(@types/react@19.0.7)': optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@mui/utils@5.16.6(@types/react@19.0.6)(react@19.0.0)': + '@mui/utils@5.16.6(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/types': 7.2.21(@types/react@19.0.6) + '@mui/types': 7.2.21(@types/react@19.0.7) '@types/prop-types': 15.7.14 clsx: 2.1.1 prop-types: 15.8.1 react: 19.0.0 react-is: 18.3.1 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@mui/utils@6.3.1(@types/react@19.0.6)(react@19.0.0)': + '@mui/utils@6.3.1(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/types': 7.2.21(@types/react@19.0.6) + '@mui/types': 7.2.21(@types/react@19.0.7) '@types/prop-types': 15.7.14 clsx: 2.1.1 prop-types: 15.8.1 react: 19.0.0 react-is: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@mui/x-date-pickers@7.9.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mui/x-date-pickers@7.9.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/base': 5.0.0-beta.68(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mui/system': 5.16.7(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@mui/utils': 5.16.6(@types/react@19.0.6)(react@19.0.0) - '@types/react-transition-group': 4.4.12(@types/react@19.0.6) + '@mui/base': 5.0.0-beta.68(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mui/system': 5.16.7(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@mui/utils': 5.16.6(@types/react@19.0.7)(react@19.0.0) + '@types/react-transition-group': 4.4.12(@types/react@19.0.7) clsx: 2.1.1 prop-types: 15.8.1 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) dayjs: 1.11.13 transitivePeerDependencies: - '@types/react' @@ -10139,88 +10112,88 @@ snapshots: '@radix-ui/primitive@1.1.1': {} - '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-context@1.1.1(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-context@1.1.1(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-direction@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-direction@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-portal@1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-portal@1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-scroll-area@1.2.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-scroll-area@1.2.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/number': 1.1.0 '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-slot@1.1.1(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-slot@1.1.1(@types/react@19.0.7)(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 '@rollup/pluginutils@4.2.1': dependencies: @@ -10378,7 +10351,7 @@ snapshots: '@stylistic/eslint-plugin@2.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 8.19.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.18.0(jiti@2.4.2) eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -10575,7 +10548,7 @@ snapshots: tsx: 4.19.2 zod: 3.24.1 - '@tanstack/router-plugin@1.87.13(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1))': + '@tanstack/router-plugin@1.87.13(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: '@babel/core': 7.26.0 '@babel/generator': 7.26.3 @@ -10596,7 +10569,7 @@ snapshots: unplugin: 1.16.0 zod: 3.24.1 optionalDependencies: - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - supports-color @@ -10941,15 +10914,15 @@ snapshots: '@types/prop-types@15.7.14': {} - '@types/react-dom@19.0.3(@types/react@19.0.6)': + '@types/react-dom@19.0.3(@types/react@19.0.7)': dependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@types/react-transition-group@4.4.12(@types/react@19.0.6)': + '@types/react-transition-group@4.4.12(@types/react@19.0.7)': dependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@types/react@19.0.6': + '@types/react@19.0.7': dependencies: csstype: 3.1.3 @@ -10970,14 +10943,14 @@ snapshots: '@types/node': 22.10.6 optional: true - '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/type-utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.20.0 + '@typescript-eslint/type-utils': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.20.0 eslint: 9.18.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 @@ -10987,32 +10960,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/scope-manager': 8.20.0 + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.20.0 debug: 4.4.0 eslint: 9.18.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.19.0': - dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 - '@typescript-eslint/scope-manager@8.19.1': dependencies: '@typescript-eslint/types': 8.19.1 '@typescript-eslint/visitor-keys': 8.19.1 - '@typescript-eslint/type-utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/scope-manager@8.20.0': dependencies: - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/visitor-keys': 8.20.0 + + '@typescript-eslint/type-utils@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 eslint: 9.18.0(jiti@2.4.2) ts-api-utils: 2.0.0(typescript@5.7.3) @@ -11020,30 +10993,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.19.0': {} - '@typescript-eslint/types@8.19.1': {} - '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.3)': - dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.20.0': {} '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.3)': dependencies: '@typescript-eslint/types': 8.19.1 '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0 - fast-glob: 3.3.2 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -11052,13 +11011,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.19.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.20.0(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/visitor-keys': 8.20.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -11074,19 +11036,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.19.0': + '@typescript-eslint/utils@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.19.0 - eslint-visitor-keys: 4.2.0 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.20.0 + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) + eslint: 9.18.0(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color '@typescript-eslint/visitor-keys@8.19.1': dependencies: '@typescript-eslint/types': 8.19.1 eslint-visitor-keys: 4.2.0 + '@typescript-eslint/visitor-keys@8.20.0': + dependencies: + '@typescript-eslint/types': 8.20.0 + eslint-visitor-keys: 4.2.0 + '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-legacy@6.0.0(terser@5.36.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1))': + '@vitejs/plugin-legacy@6.0.0(terser@5.36.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: '@babel/core': 7.26.0 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) @@ -11097,25 +11070,25 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.36.0 - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react-swc@3.7.2(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1))': + '@vitejs/plugin-react-swc@3.7.2(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: '@swc/core': 1.7.26 - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.4(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1))': + '@vitejs/plugin-react@4.3.4(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - supports-color @@ -11303,7 +11276,7 @@ snapshots: array-buffer-byte-length@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 is-array-buffer: 3.0.4 array-buffer-byte-length@1.0.2: @@ -11326,9 +11299,9 @@ snapshots: array.prototype.findlast@1.2.5: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -11365,20 +11338,20 @@ snapshots: array.prototype.tosorted@1.1.4: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 @@ -11587,8 +11560,8 @@ snapshots: call-bind@1.0.8: dependencies: call-bind-apply-helpers: 1.0.1 - es-define-property: 1.0.0 - get-intrinsic: 1.2.4 + es-define-property: 1.0.1 + get-intrinsic: 1.2.6 set-function-length: 1.2.2 call-bound@1.0.3: @@ -12068,7 +12041,7 @@ snapshots: data-view-buffer@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 @@ -12080,7 +12053,7 @@ snapshots: data-view-byte-length@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 @@ -12092,7 +12065,7 @@ snapshots: data-view-byte-offset@1.0.0: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 @@ -12153,7 +12126,7 @@ snapshots: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 define-lazy-prop@2.0.0: {} @@ -12441,7 +12414,7 @@ snapshots: es-define-property@1.0.0: dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 es-define-property@1.0.1: {} @@ -12489,8 +12462,8 @@ snapshots: es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 + is-date-object: 1.1.0 + is-symbol: 1.1.1 es5-ext@0.10.64: dependencies: @@ -12585,16 +12558,16 @@ snapshots: dependencies: eslint: 9.18.0(jiti@2.4.2) - eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint-plugin-n@17.15.1(eslint@9.18.0(jiti@2.4.2)))(eslint-plugin-promise@7.2.1(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2)): + eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint-plugin-n@17.15.1(eslint@9.18.0(jiti@2.4.2)))(eslint-plugin-promise@7.2.1(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2)): dependencies: eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-n: 17.15.1(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-promise: 7.2.1(eslint@9.18.0(jiti@2.4.2)) - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))): dependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) eslint-import-resolver-node@0.3.9: dependencies: @@ -12604,7 +12577,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.7.0(eslint-plugin-import-x@4.5.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2)): + eslint-import-resolver-typescript@3.7.0(eslint-plugin-import-x@4.5.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 @@ -12616,16 +12589,16 @@ snapshots: is-glob: 4.0.3 stable-hash: 0.0.4 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-import-x: 4.5.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -12644,8 +12617,8 @@ snapshots: eslint-plugin-import-x@4.5.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/utils': 8.19.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 doctrine: 3.0.0 eslint: 9.18.0(jiti@2.4.2) @@ -12660,7 +12633,7 @@ snapshots: - supports-color - typescript - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -12671,7 +12644,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -12683,7 +12656,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -12701,7 +12674,7 @@ snapshots: minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2))(prettier@3.4.2): + eslint-plugin-prettier@5.2.2(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2))(prettier@3.4.2): dependencies: eslint: 9.18.0(jiti@2.4.2) prettier: 3.4.2 @@ -12715,11 +12688,11 @@ snapshots: '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-react-compiler@19.0.0-beta-df7b47d-20241124(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-react-compiler@19.0.0-beta-e552027-20250112(eslint@9.18.0(jiti@2.4.2)): dependencies: '@babel/core': 7.26.0 '@babel/parser': 7.26.3 - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.0) eslint: 9.18.0(jiti@2.4.2) hermes-parser: 0.25.1 zod: 3.24.1 @@ -12731,7 +12704,7 @@ snapshots: dependencies: eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-react@7.37.3(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-react@7.37.4(eslint@9.18.0(jiti@2.4.2)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -13044,9 +13017,9 @@ snapshots: function.prototype.name@1.1.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 functions-have-names: 1.2.3 function.prototype.name@1.1.8: @@ -13099,9 +13072,9 @@ snapshots: get-symbol-description@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 get-symbol-description@1.1.0: dependencies: @@ -13207,7 +13180,7 @@ snapshots: gopd@1.0.1: dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 gopd@1.2.0: {} @@ -13253,7 +13226,7 @@ snapshots: has-property-descriptors@1.0.2: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 has-proto@1.0.3: {} @@ -13267,7 +13240,7 @@ snapshots: has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 hasown@2.0.2: dependencies: @@ -13408,7 +13381,7 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.0: {} + ignore@7.0.3: {} image-size@0.5.5: optional: true @@ -13465,7 +13438,7 @@ snapshots: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 internal-slot@1.1.0: dependencies: @@ -13495,8 +13468,8 @@ snapshots: is-array-buffer@3.0.4: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + get-intrinsic: 1.2.6 is-array-buffer@3.0.5: dependencies: @@ -13526,7 +13499,7 @@ snapshots: is-boolean-object@1.1.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-tostringtag: 1.0.2 is-boolean-object@1.2.1: @@ -13573,10 +13546,6 @@ snapshots: is-extglob@2.1.1: {} - is-finalizationregistry@1.0.2: - dependencies: - call-bind: 1.0.8 - is-finalizationregistry@1.1.1: dependencies: call-bound: 1.0.3 @@ -13645,7 +13614,7 @@ snapshots: is-regex@1.1.4: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-tostringtag: 1.0.2 is-regex@1.2.1: @@ -13661,7 +13630,7 @@ snapshots: is-shared-array-buffer@1.0.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 is-shared-array-buffer@1.0.4: dependencies: @@ -13684,7 +13653,7 @@ snapshots: is-symbol@1.0.4: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 is-symbol@1.1.1: dependencies: @@ -13710,7 +13679,7 @@ snapshots: is-weakref@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 is-weakref@1.1.0: dependencies: @@ -13766,9 +13735,9 @@ snapshots: jju@1.4.0: {} - jotai@2.11.0(@types/react@19.0.6)(react@19.0.0): + jotai@2.11.0(@types/react@19.0.7)(react@19.0.0): optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 react: 19.0.0 js-cookie@2.2.1: {} @@ -13833,7 +13802,7 @@ snapshots: dependencies: array-includes: 3.1.8 array.prototype.flat: 1.3.2 - object.assign: 4.1.5 + object.assign: 4.1.7 object.values: 1.2.1 keyv@4.5.4: @@ -14027,13 +13996,13 @@ snapshots: escape-string-regexp: 4.0.0 optional: true - material-react-table@3.1.0(sox3jot6azabg3ow7lasqhiq7u): + material-react-table@3.1.0(33s4d6kci6eqbx5ooz6ackxg4m): dependencies: - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@mui/icons-material': 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mui/x-date-pickers': 7.9.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@mui/icons-material': 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mui/x-date-pickers': 7.9.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/react-virtual': 3.11.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -14378,16 +14347,16 @@ snapshots: muggle-string@0.4.1: {} - mui-color-input@5.0.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mui-color-input@5.0.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@ctrl/tinycolor': 4.1.0 - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 mz@2.7.0: dependencies: @@ -14420,20 +14389,20 @@ snapshots: sax: 1.3.0 optional: true - neostandard@0.12.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): + neostandard@0.12.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): dependencies: '@humanwhocodes/gitignore-to-minimatch': 1.0.2 '@stylistic/eslint-plugin': 2.11.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.18.0(jiti@2.4.2) - eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import-x@4.5.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import-x@4.5.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-import-x: 4.5.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) eslint-plugin-n: 17.15.1(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-promise: 7.2.1(eslint@9.18.0(jiti@2.4.2)) - eslint-plugin-react: 7.37.3(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-react: 7.37.4(eslint@9.18.0(jiti@2.4.2)) find-up: 5.0.0 globals: 15.14.0 peowly: 1.3.2 - typescript-eslint: 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + typescript-eslint: 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) transitivePeerDependencies: - eslint-plugin-import - supports-color @@ -14531,9 +14500,9 @@ snapshots: object.assign@4.1.5: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - has-symbols: 1.0.3 + has-symbols: 1.1.0 object-keys: 1.1.1 object.assign@4.1.7: @@ -14547,7 +14516,7 @@ snapshots: object.entries@1.1.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.0.0 @@ -14929,11 +14898,11 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-tailwindcss@0.6.9(@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.4.2))(@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.4.2))(prettier@3.4.2): + prettier-plugin-tailwindcss@0.6.9(@ianvs/prettier-plugin-sort-imports@4.4.1(prettier@3.4.2))(@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.4.2))(prettier@3.4.2): dependencies: prettier: 3.4.2 optionalDependencies: - '@ianvs/prettier-plugin-sort-imports': 4.4.0(prettier@3.4.2) + '@ianvs/prettier-plugin-sort-imports': 4.4.1(prettier@3.4.2) '@trivago/prettier-plugin-sort-imports': 4.3.0(prettier@3.4.2) prettier-plugin-toml@2.0.1(prettier@3.4.2): @@ -15029,14 +14998,14 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-hook-form-mui@7.4.1(6i4thao436u7e63mmd7zcsfvkq): + react-hook-form-mui@7.4.1(25ummgs4mloo56jtt6hftm5izu): dependencies: - '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-hook-form: 7.52.1(react@19.0.0) optionalDependencies: - '@mui/icons-material': 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) - '@mui/x-date-pickers': 7.9.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.6)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mui/icons-material': 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) + '@mui/x-date-pickers': 7.9.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.7)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-hook-form@7.52.1(react@19.0.0): dependencies: @@ -15057,10 +15026,10 @@ snapshots: react-is@19.0.0: {} - react-markdown@9.0.1(@types/react@19.0.6)(react@19.0.0): + react-markdown@9.0.1(@types/react@19.0.7)(react@19.0.0): dependencies: '@types/hast': 3.0.4 - '@types/react': 19.0.6 + '@types/react': 19.0.7 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 @@ -15139,16 +15108,6 @@ snapshots: css-unit-converter: 1.1.2 postcss-value-parser: 3.3.1 - reflect.getprototypeof@1.0.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.6 - globalthis: 1.0.4 - which-builtin-type: 1.1.4 - reflect.getprototypeof@1.0.9: dependencies: call-bind: 1.0.8 @@ -15185,7 +15144,7 @@ snapshots: regexp.prototype.flags@1.5.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 @@ -15350,9 +15309,9 @@ snapshots: safe-array-concat@1.1.2: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + call-bind: 1.0.8 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 isarray: 2.0.5 safe-array-concat@1.1.3: @@ -15367,7 +15326,7 @@ snapshots: safe-regex-test@1.0.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-regex: 1.1.4 @@ -15379,67 +15338,67 @@ snapshots: safer-buffer@2.1.2: {} - sass-embedded-android-arm64@1.83.1: + sass-embedded-android-arm64@1.83.4: optional: true - sass-embedded-android-arm@1.83.1: + sass-embedded-android-arm@1.83.4: optional: true - sass-embedded-android-ia32@1.83.1: + sass-embedded-android-ia32@1.83.4: optional: true - sass-embedded-android-riscv64@1.83.1: + sass-embedded-android-riscv64@1.83.4: optional: true - sass-embedded-android-x64@1.83.1: + sass-embedded-android-x64@1.83.4: optional: true - sass-embedded-darwin-arm64@1.83.1: + sass-embedded-darwin-arm64@1.83.4: optional: true - sass-embedded-darwin-x64@1.83.1: + sass-embedded-darwin-x64@1.83.4: optional: true - sass-embedded-linux-arm64@1.83.1: + sass-embedded-linux-arm64@1.83.4: optional: true - sass-embedded-linux-arm@1.83.1: + sass-embedded-linux-arm@1.83.4: optional: true - sass-embedded-linux-ia32@1.83.1: + sass-embedded-linux-ia32@1.83.4: optional: true - sass-embedded-linux-musl-arm64@1.83.1: + sass-embedded-linux-musl-arm64@1.83.4: optional: true - sass-embedded-linux-musl-arm@1.83.1: + sass-embedded-linux-musl-arm@1.83.4: optional: true - sass-embedded-linux-musl-ia32@1.83.1: + sass-embedded-linux-musl-ia32@1.83.4: optional: true - sass-embedded-linux-musl-riscv64@1.83.1: + sass-embedded-linux-musl-riscv64@1.83.4: optional: true - sass-embedded-linux-musl-x64@1.83.1: + sass-embedded-linux-musl-x64@1.83.4: optional: true - sass-embedded-linux-riscv64@1.83.1: + sass-embedded-linux-riscv64@1.83.4: optional: true - sass-embedded-linux-x64@1.83.1: + sass-embedded-linux-x64@1.83.4: optional: true - sass-embedded-win32-arm64@1.83.1: + sass-embedded-win32-arm64@1.83.4: optional: true - sass-embedded-win32-ia32@1.83.1: + sass-embedded-win32-ia32@1.83.4: optional: true - sass-embedded-win32-x64@1.83.1: + sass-embedded-win32-x64@1.83.4: optional: true - sass-embedded@1.83.1: + sass-embedded@1.83.4: dependencies: '@bufbuild/protobuf': 2.2.3 buffer-builder: 0.2.0 @@ -15450,26 +15409,26 @@ snapshots: sync-child-process: 1.0.2 varint: 6.0.0 optionalDependencies: - sass-embedded-android-arm: 1.83.1 - sass-embedded-android-arm64: 1.83.1 - sass-embedded-android-ia32: 1.83.1 - sass-embedded-android-riscv64: 1.83.1 - sass-embedded-android-x64: 1.83.1 - sass-embedded-darwin-arm64: 1.83.1 - sass-embedded-darwin-x64: 1.83.1 - sass-embedded-linux-arm: 1.83.1 - sass-embedded-linux-arm64: 1.83.1 - sass-embedded-linux-ia32: 1.83.1 - sass-embedded-linux-musl-arm: 1.83.1 - sass-embedded-linux-musl-arm64: 1.83.1 - sass-embedded-linux-musl-ia32: 1.83.1 - sass-embedded-linux-musl-riscv64: 1.83.1 - sass-embedded-linux-musl-x64: 1.83.1 - sass-embedded-linux-riscv64: 1.83.1 - sass-embedded-linux-x64: 1.83.1 - sass-embedded-win32-arm64: 1.83.1 - sass-embedded-win32-ia32: 1.83.1 - sass-embedded-win32-x64: 1.83.1 + sass-embedded-android-arm: 1.83.4 + sass-embedded-android-arm64: 1.83.4 + sass-embedded-android-ia32: 1.83.4 + sass-embedded-android-riscv64: 1.83.4 + sass-embedded-android-x64: 1.83.4 + sass-embedded-darwin-arm64: 1.83.4 + sass-embedded-darwin-x64: 1.83.4 + sass-embedded-linux-arm: 1.83.4 + sass-embedded-linux-arm64: 1.83.4 + sass-embedded-linux-ia32: 1.83.4 + sass-embedded-linux-musl-arm: 1.83.4 + sass-embedded-linux-musl-arm64: 1.83.4 + sass-embedded-linux-musl-ia32: 1.83.4 + sass-embedded-linux-musl-riscv64: 1.83.4 + sass-embedded-linux-musl-x64: 1.83.4 + sass-embedded-linux-riscv64: 1.83.4 + sass-embedded-linux-x64: 1.83.4 + sass-embedded-win32-arm64: 1.83.4 + sass-embedded-win32-ia32: 1.83.4 + sass-embedded-win32-x64: 1.83.4 sass@1.83.0: dependencies: @@ -15514,8 +15473,8 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 + get-intrinsic: 1.2.6 + gopd: 1.2.0 has-property-descriptors: 1.0.2 set-function-name@2.0.2: @@ -15572,13 +15531,6 @@ snapshots: object-inspect: 1.13.3 side-channel-map: 1.0.1 - side-channel@1.0.6: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 - side-channel@1.1.0: dependencies: es-errors: 1.3.0 @@ -15721,7 +15673,7 @@ snapshots: string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 string.prototype.trim@1.2.10: dependencies: @@ -15735,9 +15687,9 @@ snapshots: string.prototype.trim@1.2.9: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-object-atoms: 1.0.0 string.prototype.trimend@1.0.8: @@ -15755,7 +15707,7 @@ snapshots: string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.0.0 @@ -15798,36 +15750,36 @@ snapshots: dependencies: inline-style-parser: 0.2.3 - stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@16.13.0(typescript@5.7.3)): + stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@16.13.2(typescript@5.7.3)): dependencies: postcss-html: 1.7.0 - stylelint: 16.13.0(typescript@5.7.3) + stylelint: 16.13.2(typescript@5.7.3) - stylelint-config-recess-order@5.1.1(stylelint@16.13.0(typescript@5.7.3)): + stylelint-config-recess-order@5.1.1(stylelint@16.13.2(typescript@5.7.3)): dependencies: - stylelint: 16.13.0(typescript@5.7.3) - stylelint-order: 6.0.4(stylelint@16.13.0(typescript@5.7.3)) + stylelint: 16.13.2(typescript@5.7.3) + stylelint-order: 6.0.4(stylelint@16.13.2(typescript@5.7.3)) - stylelint-config-recommended@14.0.1(stylelint@16.13.0(typescript@5.7.3)): + stylelint-config-recommended@14.0.1(stylelint@16.13.2(typescript@5.7.3)): dependencies: - stylelint: 16.13.0(typescript@5.7.3) + stylelint: 16.13.2(typescript@5.7.3) - stylelint-config-standard@36.0.1(stylelint@16.13.0(typescript@5.7.3)): + stylelint-config-standard@36.0.1(stylelint@16.13.2(typescript@5.7.3)): dependencies: - stylelint: 16.13.0(typescript@5.7.3) - stylelint-config-recommended: 14.0.1(stylelint@16.13.0(typescript@5.7.3)) + stylelint: 16.13.2(typescript@5.7.3) + stylelint-config-recommended: 14.0.1(stylelint@16.13.2(typescript@5.7.3)) - stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.13.0(typescript@5.7.3)): + stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.13.2(typescript@5.7.3)): dependencies: - stylelint: 16.13.0(typescript@5.7.3) + stylelint: 16.13.2(typescript@5.7.3) - stylelint-order@6.0.4(stylelint@16.13.0(typescript@5.7.3)): + stylelint-order@6.0.4(stylelint@16.13.2(typescript@5.7.3)): dependencies: postcss: 8.4.49 postcss-sorting: 8.0.2(postcss@8.4.49) - stylelint: 16.13.0(typescript@5.7.3) + stylelint: 16.13.2(typescript@5.7.3) - stylelint-scss@6.10.0(stylelint@16.13.0(typescript@5.7.3)): + stylelint-scss@6.10.0(stylelint@16.13.2(typescript@5.7.3)): dependencies: css-tree: 3.0.1 is-plain-object: 5.0.0 @@ -15837,9 +15789,9 @@ snapshots: postcss-resolve-nested-selector: 0.1.6 postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - stylelint: 16.13.0(typescript@5.7.3) + stylelint: 16.13.2(typescript@5.7.3) - stylelint@16.13.0(typescript@5.7.3): + stylelint@16.13.2(typescript@5.7.3): dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 @@ -15859,7 +15811,7 @@ snapshots: globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 7.0.0 + ignore: 7.0.3 imurmurhash: 0.1.4 is-plain-object: 5.0.0 known-css-properties: 0.35.0 @@ -16110,10 +16062,6 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.3.0(typescript@5.7.3): - dependencies: - typescript: 5.7.3 - ts-api-utils@2.0.0(typescript@5.7.3): dependencies: typescript: 5.7.3 @@ -16163,7 +16111,7 @@ snapshots: typed-array-buffer@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-typed-array: 1.1.13 @@ -16175,10 +16123,10 @@ snapshots: typed-array-byte-length@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 + gopd: 1.2.0 + has-proto: 1.2.0 is-typed-array: 1.1.13 typed-array-byte-length@1.0.3: @@ -16192,10 +16140,10 @@ snapshots: typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 + gopd: 1.2.0 + has-proto: 1.2.0 is-typed-array: 1.1.13 typed-array-byte-offset@1.0.4: @@ -16210,10 +16158,10 @@ snapshots: typed-array-length@1.0.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 + gopd: 1.2.0 + has-proto: 1.2.0 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 @@ -16224,17 +16172,17 @@ snapshots: gopd: 1.2.0 is-typed-array: 1.1.15 possible-typed-array-names: 1.0.0 - reflect.getprototypeof: 1.0.6 + reflect.getprototypeof: 1.0.9 typedarray-to-buffer@3.1.5: dependencies: is-typedarray: 1.0.0 - typescript-eslint@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): + typescript-eslint@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.18.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: @@ -16271,9 +16219,9 @@ snapshots: unbox-primitive@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-bigints: 1.0.2 - has-symbols: 1.0.3 + has-symbols: 1.1.0 which-boxed-primitive: 1.0.2 unbox-primitive@1.1.0: @@ -16507,7 +16455,7 @@ snapshots: - rollup - supports-color - vite-plugin-dts@4.5.0(@types/node@22.10.6)(rollup@4.27.4)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)): + vite-plugin-dts@4.5.0(@types/node@22.10.6)(rollup@4.27.4)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: '@microsoft/api-extractor': 7.49.1(@types/node@22.10.6) '@rollup/pluginutils': 5.1.4(rollup@4.27.4) @@ -16520,13 +16468,13 @@ snapshots: magic-string: 0.30.17 typescript: 5.7.3 optionalDependencies: - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-html@3.2.2(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)): + vite-plugin-html@3.2.2(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: '@rollup/pluginutils': 4.2.1 colorette: 2.0.20 @@ -16540,39 +16488,39 @@ snapshots: html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) - vite-plugin-sass-dts@1.3.30(postcss@8.4.49)(prettier@3.4.2)(sass-embedded@1.83.1)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)): + vite-plugin-sass-dts@1.3.30(postcss@8.4.49)(prettier@3.4.2)(sass-embedded@1.83.4)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: postcss: 8.4.49 postcss-js: 4.0.1(postcss@8.4.49) prettier: 3.4.2 - sass-embedded: 1.83.1 - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + sass-embedded: 1.83.4 + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) - vite-plugin-svgr@4.3.0(rollup@4.27.4)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)): + vite-plugin-svgr@4.3.0(rollup@4.27.4)(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.27.4) '@svgr/core': 8.1.0(typescript@5.7.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.7.3)) - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - rollup - supports-color - typescript - vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)): + vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.7.3) optionalDependencies: - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - supports-color - typescript - vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.1)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1): + vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(less@4.2.0)(sass-embedded@1.83.4)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.1): dependencies: esbuild: 0.24.2 postcss: 8.4.49 @@ -16583,7 +16531,7 @@ snapshots: jiti: 2.4.2 less: 4.2.0 sass: 1.83.0 - sass-embedded: 1.83.1 + sass-embedded: 1.83.4 stylus: 0.62.0 terser: 5.36.0 tsx: 4.19.2 @@ -16629,8 +16577,8 @@ snapshots: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 + is-string: 1.1.1 + is-symbol: 1.1.1 which-boxed-primitive@1.1.1: dependencies: @@ -16640,32 +16588,17 @@ snapshots: is-string: 1.1.1 is-symbol: 1.1.1 - which-builtin-type@1.1.4: - dependencies: - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.2.1 - is-weakref: 1.1.0 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.18 - which-builtin-type@1.2.1: dependencies: call-bound: 1.0.3 - function.prototype.name: 1.1.6 + function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 is-generator-function: 1.0.10 is-regex: 1.2.1 - is-weakref: 1.0.2 + is-weakref: 1.1.0 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 @@ -16681,9 +16614,9 @@ snapshots: which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 which-typed-array@1.1.18: diff --git a/lede/package/boot/uboot-rockchip/Makefile b/lede/package/boot/uboot-rockchip/Makefile index 265ce79af6..d026290117 100644 --- a/lede/package/boot/uboot-rockchip/Makefile +++ b/lede/package/boot/uboot-rockchip/Makefile @@ -5,10 +5,10 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk -PKG_VERSION:=2024.10 +PKG_VERSION:=2025.01 PKG_RELEASE:=1 -PKG_HASH:=b28daf4ac17e43156363078bf510297584137f6df50fced9b12df34f61a92fb0 +PKG_HASH:=cdef7d507c93f1bbd9f015ea9bc21fa074268481405501945abc6f854d5b686f PKG_MAINTAINER:=Tobias Maedel diff --git a/lede/package/boot/uboot-rockchip/patches/110-force-pylibfdt-build.patch b/lede/package/boot/uboot-rockchip/patches/110-force-pylibfdt-build.patch index 9aeb495c13..39aa94a0ea 100644 --- a/lede/package/boot/uboot-rockchip/patches/110-force-pylibfdt-build.patch +++ b/lede/package/boot/uboot-rockchip/patches/110-force-pylibfdt-build.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -2052,26 +2052,7 @@ endif +@@ -2072,26 +2072,7 @@ endif # Check dtc and pylibfdt, if DTC is provided, else build them PHONY += scripts_dtc scripts_dtc: scripts_basic diff --git a/lede/package/boot/uboot-rockchip/patches/200-radxa-e25-update-baudrate.patch b/lede/package/boot/uboot-rockchip/patches/200-radxa-e25-update-baudrate.patch index b93e7ab06f..a51ddc78f1 100644 --- a/lede/package/boot/uboot-rockchip/patches/200-radxa-e25-update-baudrate.patch +++ b/lede/package/boot/uboot-rockchip/patches/200-radxa-e25-update-baudrate.patch @@ -1,6 +1,6 @@ --- a/configs/radxa-e25-rk3568_defconfig +++ b/configs/radxa-e25-rk3568_defconfig -@@ -62,6 +62,7 @@ CONFIG_REGULATOR_RK8XX=y +@@ -64,6 +64,7 @@ CONFIG_REGULATOR_RK8XX=y CONFIG_PWM_ROCKCHIP=y CONFIG_SPL_RAM=y CONFIG_SCSI=y diff --git a/lede/package/boot/uboot-rockchip/patches/201-rk3568-generic-remove-spi-support.patch b/lede/package/boot/uboot-rockchip/patches/201-rk3568-generic-remove-spi-support.patch index e6378214b4..813f8a0df3 100644 --- a/lede/package/boot/uboot-rockchip/patches/201-rk3568-generic-remove-spi-support.patch +++ b/lede/package/boot/uboot-rockchip/patches/201-rk3568-generic-remove-spi-support.patch @@ -34,20 +34,22 @@ }; --- a/configs/generic-rk3568_defconfig +++ b/configs/generic-rk3568_defconfig -@@ -5,12 +5,9 @@ CONFIG_ARCH_ROCKCHIP=y +@@ -5,14 +5,10 @@ CONFIG_ARCH_ROCKCHIP=y CONFIG_SF_DEFAULT_SPEED=24000000 CONFIG_DEFAULT_DEVICE_TREE="rk3568-generic" CONFIG_ROCKCHIP_RK3568=y -CONFIG_ROCKCHIP_SPI_IMAGE=y CONFIG_SPL_SERIAL=y + CONFIG_SYS_LOAD_ADDR=0xc00800 +-CONFIG_SF_DEFAULT_BUS=4 CONFIG_DEBUG_UART_BASE=0xFE660000 CONFIG_DEBUG_UART_CLOCK=24000000 -CONFIG_SPL_SPI_FLASH_SUPPORT=y -CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y CONFIG_FIT=y -@@ -25,8 +22,6 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_FIT_VERBOSE=y +@@ -25,8 +21,6 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3568 CONFIG_SPL_MAX_SIZE=0x40000 CONFIG_SPL_PAD_TO=0x7f8000 # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set @@ -56,11 +58,10 @@ CONFIG_SPL_ATF=y CONFIG_CMD_GPIO=y CONFIG_CMD_GPT=y -@@ -56,21 +51,12 @@ CONFIG_MMC_DW_ROCKCHIP=y +@@ -57,20 +51,12 @@ CONFIG_MMC_DW_ROCKCHIP=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_SDMA=y CONFIG_MMC_SDHCI_ROCKCHIP=y --CONFIG_SF_DEFAULT_BUS=4 -CONFIG_SPI_FLASH_SFDP_SUPPORT=y -CONFIG_SPI_FLASH_GIGADEVICE=y -CONFIG_SPI_FLASH_MACRONIX=y diff --git a/lede/package/boot/uboot-rockchip/patches/303-rockchip-rk3328-Add-FriendlyARM-NanoPi-R2S-Plus.patch b/lede/package/boot/uboot-rockchip/patches/303-rockchip-rk3328-Add-FriendlyARM-NanoPi-R2S-Plus.patch deleted file mode 100644 index be8f643e7d..0000000000 --- a/lede/package/boot/uboot-rockchip/patches/303-rockchip-rk3328-Add-FriendlyARM-NanoPi-R2S-Plus.patch +++ /dev/null @@ -1,242 +0,0 @@ -From d6a55cc9e7e7d44b4b357818a9690e05af5d87e2 Mon Sep 17 00:00:00 2001 -From: Sergey Bostandzhyan -Date: Fri, 1 Nov 2024 22:21:29 +0000 -Subject: [PATCH] arm64: dts: rockchip: Add DTS for FriendlyARM NanoPi R2S Plus - -The R2S Plus is basically an R2S with additional eMMC. - -The eMMC configuration for the DTS has been extracted and copied from -rk3328-nanopi-r2.dts, v2017.09 branch from the friendlyarm/uboot-rockchip -repository. - -Signed-off-by: Sergey Bostandzhyan -Link: https://lore.kernel.org/r/20240814170048.23816-2-jin@mediatomb.cc -Signed-off-by: Heiko Stuebner - -[ upstream commit: b8c02878292200ebb5b4a8cfc9dbf227327908bd ] - -(cherry picked from commit c9bf98827964441f4dd16faa45bd4046f472e693) -Signed-off-by: Jonas Karlman -Reviewed-by: Kever Yang ---- - .../arm64/rockchip/rk3328-nanopi-r2s-plus.dts | 32 +++++++++++++++++++ - 1 file changed, 32 insertions(+) - create mode 100644 dts/upstream/src/arm64/rockchip/rk3328-nanopi-r2s-plus.dts - -diff --git a/dts/upstream/src/arm64/rockchip/rk3328-nanopi-r2s-plus.dts b/dts/upstream/src/arm64/rockchip/rk3328-nanopi-r2s-plus.dts -new file mode 100644 -index 000000000000..cb81ba3f23ff ---- /dev/null -+++ b/dts/upstream/src/arm64/rockchip/rk3328-nanopi-r2s-plus.dts -@@ -0,0 +1,32 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * (C) Copyright 2018 FriendlyElec Computer Tech. Co., Ltd. -+ * (http://www.friendlyarm.com) -+ * -+ * (C) Copyright 2016 Rockchip Electronics Co., Ltd -+ */ -+ -+/dts-v1/; -+#include "rk3328-nanopi-r2s.dts" -+ -+/ { -+ compatible = "friendlyarm,nanopi-r2s-plus", "rockchip,rk3328"; -+ model = "FriendlyElec NanoPi R2S Plus"; -+ -+ aliases { -+ mmc1 = &emmc; -+ }; -+}; -+ -+&emmc { -+ bus-width = <8>; -+ cap-mmc-highspeed; -+ disable-wp; -+ mmc-hs200-1_8v; -+ non-removable; -+ num-slots = <1>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>; -+ supports-emmc; -+ status = "okay"; -+}; -From 3133b7c645157846590f6fc16e26f54d70f5e1d6 Mon Sep 17 00:00:00 2001 -From: Jonas Karlman -Date: Fri, 1 Nov 2024 22:21:30 +0000 -Subject: [PATCH] board: rockchip: Add FriendlyElec NanoPi R2S Plus - -The FriendlyElec NanoPi R2S Plus is a single-board computer based on -Rockchip RK3328 SoC. It features e.g. 1 GB DDR4 RAM, 32 GB eMMC, -SD-card, 2x GbE LAN, optional M.2 SDIO Wi-Fi and 2x USB 2.0 host. - -Features tested on a NanoPi R2S Plus 2309: -- SD-card boot -- eMMC boot -- Ethernet -- USB gadget -- USB host - -Signed-off-by: Jonas Karlman -Reviewed-by: Kever Yang ---- - .../dts/rk3328-nanopi-r2s-plus-u-boot.dtsi | 3 + - board/rockchip/evb_rk3328/MAINTAINERS | 6 + - configs/nanopi-r2s-plus-rk3328_defconfig | 108 ++++++++++++++++++ - doc/board/rockchip/rockchip.rst | 1 + - 4 files changed, 118 insertions(+) - create mode 100644 arch/arm/dts/rk3328-nanopi-r2s-plus-u-boot.dtsi - create mode 100644 configs/nanopi-r2s-plus-rk3328_defconfig - -diff --git a/arch/arm/dts/rk3328-nanopi-r2s-plus-u-boot.dtsi b/arch/arm/dts/rk3328-nanopi-r2s-plus-u-boot.dtsi -new file mode 100644 -index 000000000000..2ab32cf00a1d ---- /dev/null -+++ b/arch/arm/dts/rk3328-nanopi-r2s-plus-u-boot.dtsi -@@ -0,0 +1,3 @@ -+// SPDX-License-Identifier: GPL-2.0-or-later -+ -+#include "rk3328-nanopi-r2s-u-boot.dtsi" -diff --git a/board/rockchip/evb_rk3328/MAINTAINERS b/board/rockchip/evb_rk3328/MAINTAINERS -index 8f619e54e0e7..5f81be55b8e0 100644 ---- a/board/rockchip/evb_rk3328/MAINTAINERS -+++ b/board/rockchip/evb_rk3328/MAINTAINERS -@@ -28,6 +28,12 @@ F: configs/nanopi-r2s-rk3328_defconfig - F: arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi - F: arch/arm/dts/rk3328-nanopi-r2s.dts - -+NANOPI-R2S-PLUS-RK3328 -+M: Jonas Karlman -+S: Maintained -+F: configs/nanopi-r2s-plus-rk3328_defconfig -+F: arch/arm/dts/rk3328-nanopi-r2s-plus-u-boot.dtsi -+ - ORANGEPI-R1-PLUS-RK3328 - M: Tianling Shen - S: Maintained -diff --git a/configs/nanopi-r2s-plus-rk3328_defconfig b/configs/nanopi-r2s-plus-rk3328_defconfig -new file mode 100644 -index 000000000000..6e6785fcc882 ---- /dev/null -+++ b/configs/nanopi-r2s-plus-rk3328_defconfig -@@ -0,0 +1,108 @@ -+CONFIG_ARM=y -+CONFIG_SKIP_LOWLEVEL_INIT=y -+CONFIG_COUNTER_FREQUENCY=24000000 -+CONFIG_ARCH_ROCKCHIP=y -+CONFIG_SPL_GPIO=y -+CONFIG_NR_DRAM_BANKS=1 -+CONFIG_SF_DEFAULT_SPEED=20000000 -+CONFIG_ENV_OFFSET=0x3F8000 -+CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3328-nanopi-r2s-plus" -+CONFIG_DM_RESET=y -+CONFIG_ROCKCHIP_RK3328=y -+CONFIG_SYS_LOAD_ADDR=0x800800 -+CONFIG_DEBUG_UART_BASE=0xFF130000 -+CONFIG_DEBUG_UART_CLOCK=24000000 -+CONFIG_DEBUG_UART=y -+# CONFIG_ANDROID_BOOT_IMAGE is not set -+CONFIG_FIT=y -+CONFIG_FIT_VERBOSE=y -+CONFIG_SPL_FIT_SIGNATURE=y -+CONFIG_SPL_LOAD_FIT=y -+CONFIG_LEGACY_IMAGE_FORMAT=y -+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3328-nanopi-r2s-plus.dtb" -+# CONFIG_DISPLAY_CPUINFO is not set -+CONFIG_DISPLAY_BOARDINFO_LATE=y -+CONFIG_SPL_MAX_SIZE=0x40000 -+CONFIG_SPL_PAD_TO=0x7f8000 -+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set -+CONFIG_SPL_POWER=y -+CONFIG_SPL_ATF=y -+CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y -+CONFIG_CMD_BOOTZ=y -+CONFIG_CMD_GPIO=y -+CONFIG_CMD_GPT=y -+CONFIG_CMD_MMC=y -+CONFIG_CMD_USB=y -+CONFIG_CMD_ROCKUSB=y -+CONFIG_CMD_USB_MASS_STORAGE=y -+# CONFIG_CMD_SETEXPR is not set -+CONFIG_CMD_TIME=y -+CONFIG_CMD_REGULATOR=y -+CONFIG_SPL_OF_CONTROL=y -+CONFIG_TPL_OF_CONTROL=y -+CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" -+CONFIG_TPL_OF_PLATDATA=y -+CONFIG_ENV_IS_IN_MMC=y -+CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_SYS_MMC_ENV_DEV=0 -+CONFIG_TPL_DM=y -+CONFIG_SPL_DM_SEQ_ALIAS=y -+CONFIG_REGMAP=y -+CONFIG_SPL_REGMAP=y -+CONFIG_TPL_REGMAP=y -+CONFIG_SYSCON=y -+CONFIG_SPL_SYSCON=y -+CONFIG_TPL_SYSCON=y -+CONFIG_CLK=y -+CONFIG_SPL_CLK=y -+CONFIG_FASTBOOT_BUF_ADDR=0x800800 -+CONFIG_FASTBOOT_CMD_OEM_FORMAT=y -+CONFIG_ROCKCHIP_GPIO=y -+CONFIG_SYS_I2C_ROCKCHIP=y -+CONFIG_MMC_DW=y -+CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_PHY_MOTORCOMM=y -+CONFIG_PHY_REALTEK=y -+CONFIG_DM_MDIO=y -+CONFIG_DM_ETH_PHY=y -+CONFIG_PHY_GIGE=y -+CONFIG_ETH_DESIGNWARE=y -+CONFIG_GMAC_ROCKCHIP=y -+CONFIG_PHY_ROCKCHIP_INNO_USB2=y -+CONFIG_PINCTRL=y -+CONFIG_SPL_PINCTRL=y -+CONFIG_DM_PMIC=y -+CONFIG_PMIC_RK8XX=y -+CONFIG_SPL_DM_REGULATOR=y -+CONFIG_DM_REGULATOR_FIXED=y -+CONFIG_SPL_DM_REGULATOR_FIXED=y -+CONFIG_DM_REGULATOR_GPIO=y -+CONFIG_SPL_DM_REGULATOR_GPIO=y -+CONFIG_REGULATOR_RK8XX=y -+CONFIG_PWM_ROCKCHIP=y -+CONFIG_RAM=y -+CONFIG_SPL_RAM=y -+CONFIG_TPL_RAM=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y -+CONFIG_BAUDRATE=1500000 -+CONFIG_DEBUG_UART_SHIFT=2 -+CONFIG_SYS_NS16550_MEM32=y -+CONFIG_SYSINFO=y -+CONFIG_SYSRESET=y -+# CONFIG_TPL_SYSRESET is not set -+CONFIG_USB=y -+CONFIG_DM_USB_GADGET=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_EHCI_HCD=y -+CONFIG_USB_EHCI_GENERIC=y -+CONFIG_USB_OHCI_HCD=y -+CONFIG_USB_OHCI_GENERIC=y -+CONFIG_USB_DWC3=y -+CONFIG_USB_DWC3_GENERIC=y -+CONFIG_USB_GADGET=y -+CONFIG_USB_GADGET_DWC2_OTG=y -+CONFIG_USB_FUNCTION_ROCKUSB=y -+CONFIG_SPL_TINY_MEMSET=y -+CONFIG_TPL_TINY_MEMSET=y -+CONFIG_ERRNO_STR=y -diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst -index 3056e071f4ff..9bab86d23479 100644 ---- a/doc/board/rockchip/rockchip.rst -+++ b/doc/board/rockchip/rockchip.rst -@@ -65,6 +65,7 @@ List of mainline supported Rockchip boards: - - FriendlyElec NanoPi R2C (nanopi-r2c-rk3328) - - FriendlyElec NanoPi R2C Plus (nanopi-r2c-plus-rk3328) - - FriendlyElec NanoPi R2S (nanopi-r2s-rk3328) -+ - FriendlyElec NanoPi R2S Plus (nanopi-r2s-plus-rk3328) - - Pine64 Rock64 (rock64-rk3328) - - Radxa ROCK Pi E (rock-pi-e-rk3328) - - Xunlong Orange Pi R1 Plus (orangepi-r1-plus-rk3328) diff --git a/lede/package/boot/uboot-rockchip/patches/311-rockchip-rk3568-Add-support-for-fastrhino-r6xs.patch b/lede/package/boot/uboot-rockchip/patches/311-rockchip-rk3568-Add-support-for-fastrhino-r6xs.patch index 187bcfd2c1..68d89448b5 100644 --- a/lede/package/boot/uboot-rockchip/patches/311-rockchip-rk3568-Add-support-for-fastrhino-r6xs.patch +++ b/lede/package/boot/uboot-rockchip/patches/311-rockchip-rk3568-Add-support-for-fastrhino-r6xs.patch @@ -195,183 +195,3 @@ +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_USB_FUNCTION_ROCKUSB=y +CONFIG_ERRNO_STR=y ---- a/dts/upstream/src/arm64/rockchip/rk3568-fastrhino-r66s.dtsi -+++ b/dts/upstream/src/arm64/rockchip/rk3568-fastrhino-r66s.dtsi -@@ -39,9 +39,9 @@ - }; - }; - -- dc_12v: dc-12v-regulator { -+ vcc12v_dcin: vcc12v-dcin-regulator { - compatible = "regulator-fixed"; -- regulator-name = "dc_12v"; -+ regulator-name = "vcc12v_dcin"; - regulator-always-on; - regulator-boot-on; - regulator-min-microvolt = <12000000>; -@@ -65,7 +65,7 @@ - regulator-boot-on; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; -- vin-supply = <&dc_12v>; -+ vin-supply = <&vcc12v_dcin>; - }; - - vcc5v0_sys: vcc5v0-sys-regulator { -@@ -75,16 +75,7 @@ - regulator-boot-on; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; -- vin-supply = <&dc_12v>; -- }; -- -- vcc5v0_usb_host: vcc5v0-usb-host-regulator { -- compatible = "regulator-fixed"; -- regulator-name = "vcc5v0_usb_host"; -- regulator-always-on; -- regulator-boot-on; -- regulator-min-microvolt = <5000000>; -- regulator-max-microvolt = <5000000>; -+ vin-supply = <&vcc12v_dcin>; - }; - - vcc5v0_usb_otg: vcc5v0-usb-otg-regulator { -@@ -94,8 +85,9 @@ - pinctrl-names = "default"; - pinctrl-0 = <&vcc5v0_usb_otg_en>; - regulator-name = "vcc5v0_usb_otg"; -- regulator-always-on; -- regulator-boot-on; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ vin-supply = <&vcc5v0_sys>; - }; - }; - -@@ -123,6 +115,10 @@ - cpu-supply = <&vdd_cpu>; - }; - -+&display_subsystem { -+ status = "disabled"; -+}; -+ - &gpu { - mali-supply = <&vdd_gpu>; - status = "okay"; -@@ -405,8 +401,8 @@ - &pmu_io_domains { - pmuio1-supply = <&vcc3v3_pmu>; - pmuio2-supply = <&vcc3v3_pmu>; -- vccio1-supply = <&vccio_acodec>; -- vccio3-supply = <&vccio_sd>; -+ vccio1-supply = <&vcc_3v3>; -+ vccio2-supply = <&vcc_1v8>; - vccio4-supply = <&vcc_1v8>; - vccio5-supply = <&vcc_3v3>; - vccio6-supply = <&vcc_1v8>; -@@ -429,28 +425,12 @@ - status = "okay"; - }; - --&usb_host0_ehci { -- status = "okay"; --}; -- --&usb_host0_ohci { -- status = "okay"; --}; -- - &usb_host0_xhci { - dr_mode = "host"; - extcon = <&usb2phy0>; - status = "okay"; - }; - --&usb_host1_ehci { -- status = "okay"; --}; -- --&usb_host1_ohci { -- status = "okay"; --}; -- - &usb_host1_xhci { - status = "okay"; - }; -@@ -460,7 +440,7 @@ - }; - - &usb2phy0_host { -- phy-supply = <&vcc5v0_usb_host>; -+ phy-supply = <&vcc5v0_sys>; - status = "okay"; - }; - ---- a/dts/upstream/src/arm64/rockchip/rk3568-fastrhino-r66s.dts -+++ b/dts/upstream/src/arm64/rockchip/rk3568-fastrhino-r66s.dts -@@ -11,6 +11,10 @@ - }; - }; - -+&pmu_io_domains { -+ vccio3-supply = <&vccio_sd>; -+}; -+ - &sdmmc0 { - bus-width = <4>; - cap-mmc-highspeed; ---- a/dts/upstream/src/arm64/rockchip/rk3568-fastrhino-r68s.dts -+++ b/dts/upstream/src/arm64/rockchip/rk3568-fastrhino-r68s.dts -@@ -39,7 +39,7 @@ - &gmac0_rx_bus2 - &gmac0_rgmii_clk - &gmac0_rgmii_bus>; -- snps,reset-gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>; -+ snps,reset-gpio = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>; - snps,reset-active-low; - /* Reset time is 15ms, 50ms for rtl8211f */ - snps,reset-delays-us = <0 15000 50000>; -@@ -61,7 +61,7 @@ - &gmac1m1_rx_bus2 - &gmac1m1_rgmii_clk - &gmac1m1_rgmii_bus>; -- snps,reset-gpio = <&gpio0 RK_PB1 GPIO_ACTIVE_LOW>; -+ snps,reset-gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_LOW>; - snps,reset-active-low; - /* Reset time is 15ms, 50ms for rtl8211f */ - snps,reset-delays-us = <0 15000 50000>; -@@ -71,18 +71,18 @@ - }; - - &mdio0 { -- rgmii_phy0: ethernet-phy@0 { -+ rgmii_phy0: ethernet-phy@1 { - compatible = "ethernet-phy-ieee802.3-c22"; -- reg = <0>; -+ reg = <0x1>; - pinctrl-0 = <ð_phy0_reset_pin>; - pinctrl-names = "default"; - }; - }; - - &mdio1 { -- rgmii_phy1: ethernet-phy@0 { -+ rgmii_phy1: ethernet-phy@1 { - compatible = "ethernet-phy-ieee802.3-c22"; -- reg = <0>; -+ reg = <0x1>; - pinctrl-0 = <ð_phy1_reset_pin>; - pinctrl-names = "default"; - }; -@@ -102,6 +102,10 @@ - }; - }; - -+&pmu_io_domains { -+ vccio3-supply = <&vcc_3v3>; -+}; -+ - &sdhci { - bus-width = <8>; - max-frequency = <200000000>; diff --git a/openwrt-passwall/.github/workflows/Auto compile with openwrt sdk.yml b/openwrt-passwall/.github/workflows/Auto compile with openwrt sdk.yml index ef3d59257a..77dec61b0d 100644 --- a/openwrt-passwall/.github/workflows/Auto compile with openwrt sdk.yml +++ b/openwrt-passwall/.github/workflows/Auto compile with openwrt sdk.yml @@ -20,7 +20,7 @@ env: jobs: job_check: name: Check Version - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 outputs: passwall_version: ${{ steps.check_version.outputs.latest_version }} has_update: ${{ steps.check_version.outputs.has_update }} @@ -73,7 +73,7 @@ jobs: name: Build passwall [Luci ${{ matrix.luci_ver }}] needs: job_check if: needs.job_check.outputs.has_update == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: @@ -165,7 +165,7 @@ jobs: job_auto_compile: if: ${{ needs.job_check.outputs.has_update == 'true' && needs.job_check.outputs.prerelease == 'false' }} needs: job_check - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: build (${{ matrix.platform }}) strategy: fail-fast: false diff --git a/openwrt-passwall/.github/workflows/Close stale issues and PRs.yml b/openwrt-passwall/.github/workflows/Close stale issues and PRs.yml index 12cf3bb168..2508b9857c 100644 --- a/openwrt-passwall/.github/workflows/Close stale issues and PRs.yml +++ b/openwrt-passwall/.github/workflows/Close stale issues and PRs.yml @@ -5,7 +5,7 @@ on: jobs: stale: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/stale@v7.0.0 with: diff --git a/openwrt-passwall/luci-app-passwall/Makefile b/openwrt-passwall/luci-app-passwall/Makefile index f0c9835623..5bc28f0c62 100644 --- a/openwrt-passwall/luci-app-passwall/Makefile +++ b/openwrt-passwall/luci-app-passwall/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall -PKG_VERSION:=25.1.8 +PKG_VERSION:=25.1.15 PKG_RELEASE:=1 PKG_CONFIG_DEPENDS:= \ diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua index 061615370f..93384b0edd 100644 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua @@ -158,11 +158,13 @@ end local file_vpslist = TMP_ACL_PATH .. "/vpslist" if not is_file_nonzero(file_vpslist) then local f_out = io.open(file_vpslist, "w") + local written_domains = {} uci:foreach(appname, "nodes", function(t) local function process_address(address) if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) then + if datatypes.hostname(address) and not written_domains[address] then f_out:write(address .. "\n") + written_domains[address] = true end end process_address(t.address) diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua index bd06c07c9d..4c5f50d001 100644 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua @@ -274,11 +274,13 @@ end local file_vpslist = TMP_ACL_PATH .. "/vpslist" if not is_file_nonzero(file_vpslist) then local f_out = io.open(file_vpslist, "w") + local written_domains = {} uci:foreach(appname, "nodes", function(t) local function process_address(address) if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) then + if datatypes.hostname(address) and not written_domains[address] then f_out:write(address .. "\n") + written_domains[address] = true end end process_address(t.address) diff --git a/openwrt-passwall2/.github/workflows/Auto compile with openwrt sdk.yml b/openwrt-passwall2/.github/workflows/Auto compile with openwrt sdk.yml index 7112f0461d..c32bd83ec4 100644 --- a/openwrt-passwall2/.github/workflows/Auto compile with openwrt sdk.yml +++ b/openwrt-passwall2/.github/workflows/Auto compile with openwrt sdk.yml @@ -20,7 +20,7 @@ env: jobs: job_check: name: Check Version - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 outputs: passwall2_version: ${{ steps.check_version.outputs.latest_version }} has_update: ${{ steps.check_version.outputs.has_update }} @@ -73,7 +73,7 @@ jobs: name: Build passwall2 [Luci ${{ matrix.luci_ver }}] needs: job_check if: needs.job_check.outputs.has_update == 'true' - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: @@ -165,7 +165,7 @@ jobs: job_auto_compile: if: ${{ needs.job_check.outputs.has_update == 'true' && needs.job_check.outputs.prerelease == 'false' }} needs: job_check - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: build (${{ matrix.platform }}) strategy: fail-fast: false diff --git a/openwrt-passwall2/.github/workflows/Close stale issues and Prs.yml b/openwrt-passwall2/.github/workflows/Close stale issues and Prs.yml index 12cf3bb168..2508b9857c 100644 --- a/openwrt-passwall2/.github/workflows/Close stale issues and Prs.yml +++ b/openwrt-passwall2/.github/workflows/Close stale issues and Prs.yml @@ -5,7 +5,7 @@ on: jobs: stale: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/stale@v7.0.0 with: diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js b/small/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js index 7e74b639df..fb56e561d4 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js @@ -26,9 +26,9 @@ const monospacefonts = [ ]; return baseclass.extend({ - rulesetdoc: rulesetdoc, - sharktaikogif: sharktaikogif, - monospacefonts: monospacefonts, + rulesetdoc, + sharktaikogif, + monospacefonts, dashrepos: [ ['zephyruso/zashboard', _('zashboard')], @@ -231,8 +231,8 @@ return baseclass.extend({ ], CBIListValue: form.ListValue.extend({ - renderWidget: function(/* ... */) { - var frameEl = form.ListValue.prototype.renderWidget.apply(this, arguments); + renderWidget(/* ... */) { + let frameEl = form.ListValue.prototype.renderWidget.apply(this, arguments); frameEl.querySelector('select').style["min-width"] = '10em'; @@ -243,8 +243,8 @@ return baseclass.extend({ CBIStaticList: form.DynamicList.extend({ __name__: 'CBI.StaticList', - renderWidget: function(/* ... */) { - var El = form.DynamicList.prototype.renderWidget.apply(this, arguments); + renderWidget(/* ... */) { + let El = form.DynamicList.prototype.renderWidget.apply(this, arguments); El.querySelector('.add-item ul > li[data-value="-"]')?.remove(); @@ -253,8 +253,8 @@ return baseclass.extend({ }), CBITextValue: form.TextValue.extend({ - renderWidget: function(/* ... */) { - var frameEl = form.TextValue.prototype.renderWidget.apply(this, arguments); + renderWidget(/* ... */) { + let frameEl = form.TextValue.prototype.renderWidget.apply(this, arguments); frameEl.querySelector('textarea').style.fontFamily = monospacefonts.join(','); @@ -263,7 +263,7 @@ return baseclass.extend({ }), // thanks to homeproxy - calcStringMD5: function(e) { + calcStringMD5(e) { /* Thanks to https://stackoverflow.com/a/41602636 */ function h(a, b) { var c, d, e, f, g; @@ -345,13 +345,13 @@ return baseclass.extend({ }, // thanks to homeproxy - decodeBase64Str: function(str) { + decodeBase64Str(str) { if (!str) return null; /* Thanks to luci-app-ssr-plus */ str = str.replace(/-/g, '+').replace(/_/g, '/'); - var padding = (4 - (str.length % 4)) % 4; + let padding = (4 - (str.length % 4)) % 4; if (padding) str = str + Array(padding + 1).join('='); @@ -360,8 +360,8 @@ return baseclass.extend({ ).join('')); }, - generateRand: function(type, length) { - var byteArr; + generateRand(type, length) { + let byteArr; if (['base64', 'hex'].includes(type)) byteArr = crypto.getRandomValues(new Uint8Array(length)); switch (type) { @@ -393,7 +393,7 @@ return baseclass.extend({ return false; }, - removeBlankAttrs: function(self, res) { + removeBlankAttrs(self, res) { if (Array.isArray(res)) { return res .filter(item => !self.isEmpty(item)) @@ -411,7 +411,7 @@ return baseclass.extend({ return res; }, - getFeatures: function() { + getFeatures() { const callGetFeatures = rpc.declare({ object: 'luci.fchomo', method: 'get_features', @@ -421,7 +421,7 @@ return baseclass.extend({ return L.resolveDefault(callGetFeatures(), {}); }, - getServiceStatus: function(instance) { + getServiceStatus(instance) { var conf = 'fchomo'; const callServiceList = rpc.declare({ object: 'service', @@ -432,7 +432,7 @@ return baseclass.extend({ return L.resolveDefault(callServiceList(conf), {}) .then((res) => { - var isRunning = false; + let isRunning = false; try { isRunning = res[conf]['instances'][instance].running; } catch (e) {} @@ -440,7 +440,7 @@ return baseclass.extend({ }); }, - getClashAPI: function(instance) { + getClashAPI(instance) { const callGetClashAPI = rpc.declare({ object: 'luci.fchomo', method: 'get_clash_api', @@ -452,8 +452,8 @@ return baseclass.extend({ }, // thanks to homeproxy - loadDefaultLabel: function(section_id) { - var label = uci.get(this.config, section_id, 'label'); + loadDefaultLabel(section_id) { + const label = uci.get(this.config, section_id, 'label'); if (label) { return label; } else { @@ -463,12 +463,12 @@ return baseclass.extend({ }, // thanks to homeproxy - loadModalTitle: function(title, addtitle, section_id) { - var label = uci.get(this.config, section_id, 'label'); + loadModalTitle(title, addtitle, section_id) { + const label = uci.get(this.config, section_id, 'label'); return label ? title + ' » ' + label : addtitle; }, - loadProxyGroupLabel: function(preadds, section_id) { + loadProxyGroupLabel(preadds, section_id) { delete this.keylist; delete this.vallist; @@ -483,11 +483,13 @@ return baseclass.extend({ return this.super('load', section_id); }, - loadNodeLabel: function(section_id) { + loadNodeLabel(preadds, section_id) { delete this.keylist; delete this.vallist; - this.value('', _('-- Please choose --')); + preadds?.forEach((arr) => { + this.value.apply(this, arr); + }); uci.sections(this.config, 'node', (res) => { if (res.enabled !== '0') this.value(res['.name'], res.label); @@ -496,11 +498,13 @@ return baseclass.extend({ return this.super('load', section_id); }, - loadProviderLabel: function(section_id) { + loadProviderLabel(preadds, section_id) { delete this.keylist; delete this.vallist; - this.value('', _('-- Please choose --')); + preadds?.forEach((arr) => { + this.value.apply(this, arr); + }); uci.sections(this.config, 'provider', (res) => { if (res.enabled !== '0') this.value(res['.name'], res.label); @@ -509,11 +513,13 @@ return baseclass.extend({ return this.super('load', section_id); }, - loadRulesetLabel: function(behaviors, section_id) { + loadRulesetLabel(preadds, behaviors, section_id) { delete this.keylist; delete this.vallist; - this.value('', _('-- Please choose --')); + preadds?.forEach((arr) => { + this.value.apply(this, arr); + }); uci.sections(this.config, 'ruleset', (res) => { if (res.enabled !== '0') if (behaviors ? behaviors.includes(res.behavior) : true) @@ -523,11 +529,13 @@ return baseclass.extend({ return this.super('load', section_id); }, - loadSubRuleGroup: function(section_id) { + loadSubRuleGroup(preadds, section_id) { delete this.keylist; delete this.vallist; - this.value('', _('-- Please choose --')); + preadds?.forEach((arr) => { + this.value.apply(this, arr); + }); let groups = {}; uci.sections(this.config, 'subrules', (res) => { if (res.enabled !== '0') @@ -540,8 +548,8 @@ return baseclass.extend({ return this.super('load', section_id); }, - renderStatus: function(self, ElId, isRunning, instance, noGlobal) { - var visible = isRunning && (isRunning.http || isRunning.https); + renderStatus(self, ElId, isRunning, instance, noGlobal) { + const visible = isRunning && (isRunning.http || isRunning.https); return E([ E('button', { @@ -557,7 +565,7 @@ return baseclass.extend({ }, [ _('Open Dashboard') ]) ]); }, - updateStatus: function(self, El, isRunning, instance, noGlobal) { + updateStatus(self, El, isRunning, instance, noGlobal) { if (El) { El.style.color = isRunning ? 'green' : 'red'; El.innerHTML = ' %s%s '.format(noGlobal ? instance + ' ' : '', isRunning ? _('Running') : _('Not Running')); @@ -576,24 +584,24 @@ return baseclass.extend({ return El; }, - getDashURL: function(self, isRunning) { - var tls = isRunning.https ? 's' : '', - host = window.location.hostname, - port = isRunning.https ? isRunning.https.split(':').pop() : isRunning.http.split(':').pop(), - secret = isRunning.secret, - repo = isRunning.dashboard_repo; + getDashURL(self, isRunning) { + const tls = isRunning.https ? 's' : ''; + const host = window.location.hostname; + const port = isRunning.https ? isRunning.https.split(':').pop() : isRunning.http.split(':').pop(); + const secret = isRunning.secret; + const repo = isRunning.dashboard_repo; return 'http%s://%s:%s/ui/'.format(tls, host, port) + String.format(self.dashrepos_urlparams[repo] || '', host, port, secret) }, - renderResDownload: function(self, section_id) { - var section_type = this.section.sectiontype; - var type = uci.get(this.config, section_id, 'type'), - url = uci.get(this.config, section_id, 'url'), - header = uci.get(this.config, section_id, 'header'); + renderResDownload(self, section_id) { + const section_type = this.section.sectiontype; + const type = uci.get(this.config, section_id, 'type'); + const url = uci.get(this.config, section_id, 'url'); + const header = uci.get(this.config, section_id, 'header'); - var El = E([ + let El = E([ E('button', { class: 'cbi-button cbi-button-add', disabled: (type !== 'http') || null, @@ -613,13 +621,13 @@ return baseclass.extend({ return El; }, - renderSectionAdd: function(prefmt, LC, extra_class) { - var el = form.GridSection.prototype.renderSectionAdd.apply(this, [ extra_class ]), + renderSectionAdd(prefmt, LC, extra_class) { + let el = form.GridSection.prototype.renderSectionAdd.apply(this, [ extra_class ]), nameEl = el.querySelector('.cbi-section-create-name'); ui.addValidator(nameEl, 'uciname', true, (v) => { - var button = el.querySelector('.cbi-section-create > .cbi-button-add'); - var prefix = prefmt?.prefix ? prefmt.prefix : '', - suffix = prefmt?.suffix ? prefmt.suffix : ''; + let button = el.querySelector('.cbi-section-create > .cbi-button-add'); + const prefix = prefmt?.prefix ? prefmt.prefix : ''; + const suffix = prefmt?.suffix ? prefmt.suffix : ''; if (!v) { button.disabled = true; @@ -642,14 +650,14 @@ return baseclass.extend({ return el; }, - handleAdd: function(prefmt, ev, name) { - var prefix = prefmt?.prefix ? prefmt.prefix : '', - suffix = prefmt?.suffix ? prefmt.suffix : ''; + handleAdd(prefmt, ev, name) { + const prefix = prefmt?.prefix ? prefmt.prefix : ''; + const suffix = prefmt?.suffix ? prefmt.suffix : ''; return form.GridSection.prototype.handleAdd.apply(this, [ ev, prefix + name + suffix ]); }, - handleReload: function(instance, ev, section_id) { + handleReload(instance, ev, section_id) { instance = instance || ''; return fs.exec('/etc/init.d/fchomo', ['reload', instance]) .then((res) => { /* return window.location = window.location.href.split('#')[0] */ }) @@ -658,8 +666,8 @@ return baseclass.extend({ }) }, - handleRemoveIdles: function(self) { - var section_type = this.sectiontype; + handleRemoveIdles(self) { + const section_type = this.sectiontype; let loaded = []; uci.sections(this.config, section_type, (section, sid) => loaded.push(sid)); @@ -702,14 +710,14 @@ return baseclass.extend({ }); }, - textvalue2Value: function(section_id) { - var cval = this.cfgvalue(section_id); - var i = this.keylist.indexOf(cval); + textvalue2Value(section_id) { + let cval = this.cfgvalue(section_id); + let i = this.keylist.indexOf(cval); return this.vallist[i]; }, - validateAuth: function(section_id, value) { + validateAuth(section_id, value) { if (!value) return true; if (!value.match(/^[\w-]{3,}:[^:]+$/)) @@ -717,7 +725,7 @@ return baseclass.extend({ return true; }, - validateAuthUsername: function(section_id, value) { + validateAuthUsername(section_id, value) { if (!value) return true; if (!value.match(/^[\w-]{3,}$/)) @@ -725,7 +733,7 @@ return baseclass.extend({ return true; }, - validateAuthPassword: function(section_id, value) { + validateAuthPassword(section_id, value) { if (!value) return true; if (!value.match(/^[^:]+$/)) @@ -734,24 +742,24 @@ return baseclass.extend({ return true; }, - validateCommonPort: function(section_id, value) { + validateCommonPort(section_id, value) { // thanks to homeproxy - var stubValidator = { + let stubValidator = { factory: validation, - apply: function(type, value, args) { + apply(type, value, args) { if (value != null) this.value = value; return validation.types[type].apply(this, args); }, - assert: function(condition) { + assert(condition) { return !!condition; } }; if (value && !value.match(/common(_stun)?/)) { - var ports = []; - for (var i of value.split(',')) { + let ports = []; + for (let i of value.split(',')) { if (!stubValidator.apply('port', i) && !stubValidator.apply('portrange', i)) return _('Expecting: %s').format(_('valid port value')); if (ports.includes(i)) @@ -763,12 +771,12 @@ return baseclass.extend({ return true; }, - validateJson: function(section_id, value) { + validateJson(section_id, value) { if (!value) return true; try { - var obj = JSON.parse(value.trim()); + let obj = JSON.parse(value.trim()); if (!obj) return _('Expecting: %s').format(_('valid JSON format')); } @@ -779,7 +787,7 @@ return baseclass.extend({ return true; }, - validateBase64Key: function(length, section_id, value) { + validateBase64Key(length, section_id, value) { /* Thanks to luci-proto-wireguard */ if (value) if (value.length !== length || !value.match(/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/) || value[length-1] !== '=') @@ -788,8 +796,8 @@ return baseclass.extend({ return true; }, - validateShadowsocksPassword: function(self, encmode, section_id, value) { - var length = self.shadowsocks_cipher_length[encmode]; + validateShadowsocksPassword(self, encmode, section_id, value) { + let length = self.shadowsocks_cipher_length[encmode]; if (typeof length !== 'undefined') { length = Math.ceil(length/3)*4; if (encmode.match(/^2022-/)) { @@ -806,7 +814,7 @@ return baseclass.extend({ return true; }, - validateBytesize: function(section_id, value) { + validateBytesize(section_id, value) { if (!value) return true; @@ -815,7 +823,7 @@ return baseclass.extend({ return true; }, - validateTimeDuration: function(section_id, value) { + validateTimeDuration(section_id, value) { if (!value) return true; @@ -825,11 +833,11 @@ return baseclass.extend({ return true; }, - validateUniqueValue: function(section_id, value) { + validateUniqueValue(section_id, value) { if (!value) return _('Expecting: %s').format(_('non-empty value')); - var duplicate = false; + let duplicate = false; uci.sections(this.config, this.section.sectiontype, (res) => { if (res['.name'] !== section_id) if (res[this.option] === value) @@ -841,12 +849,12 @@ return baseclass.extend({ return true; }, - validateUrl: function(section_id, value) { + validateUrl(section_id, value) { if (!value) return true; try { - var url = new URL(value); + let url = new URL(value); if (!url.hostname) return _('Expecting: %s').format(_('valid URL')); } @@ -857,7 +865,7 @@ return baseclass.extend({ return true; }, - validateUUID: function(section_id, value) { + validateUUID(section_id, value) { if (!value) return true; else if (value.match('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$') === null) @@ -866,7 +874,7 @@ return baseclass.extend({ return true; }, - lsDir: function(type) { + lsDir(type) { const callLsDir = rpc.declare({ object: 'luci.fchomo', method: 'dir_ls', @@ -882,7 +890,7 @@ return baseclass.extend({ }); }, - readFile: function(type, filename) { + readFile(type, filename) { const callReadFile = rpc.declare({ object: 'luci.fchomo', method: 'file_read', @@ -898,7 +906,7 @@ return baseclass.extend({ }); }, - writeFile: function(type, filename, content) { + writeFile(type, filename, content) { const callWriteFile = rpc.declare({ object: 'luci.fchomo', method: 'file_write', @@ -914,7 +922,7 @@ return baseclass.extend({ }); }, - downloadFile: function(type, filename, url, header) { + downloadFile(type, filename, url, header) { const callDownloadFile = rpc.declare({ object: 'luci.fchomo', method: 'file_download', @@ -930,7 +938,7 @@ return baseclass.extend({ }); }, - removeFile: function(type, filename) { + removeFile(type, filename) { const callRemoveFile = rpc.declare({ object: 'luci.fchomo', method: 'file_remove', @@ -947,7 +955,7 @@ return baseclass.extend({ }, // thanks to homeproxy - uploadCertificate: function(type, filename, ev) { + uploadCertificate(type, filename, ev) { const callWriteCertificate = rpc.declare({ object: 'luci.fchomo', method: 'certificate_write', @@ -966,7 +974,7 @@ return baseclass.extend({ }, this, ev.target)) .catch((e) => { ui.addNotification(null, E('p', e.message)) }); }, - uploadInitialPack: function(ev, section_id) { + uploadInitialPack(ev, section_id) { const callWriteInitialPack = rpc.declare({ object: 'luci.fchomo', method: 'initialpack_write', diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js index 6e8c3fbee8..67dc290342 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js @@ -211,15 +211,15 @@ function flagToBool(flag) { function renderPayload(s, total, uciconfig) { // common payload - var initPayload = function(o, n, key, uciconfig) { + let initPayload = function(o, n, key, uciconfig) { o.load = L.bind(function(n, key, uciconfig, section_id) { return new RulesEntry(uci.get(uciconfig, section_id, 'entry')).getPayload(n)[key]; }, o, n, key, uciconfig); o.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'entry'); + let UIEl = this.section.getUIElement(section_id, 'entry'); let n = this.option.match(/^payload(\d+)_/)[1]; - var rule = new RulesEntry(UIEl.getValue()).setPayload(n, {factor: value}); + let rule = new RulesEntry(UIEl.getValue()).setPayload(n, {factor: value}); UIEl.node.previousSibling.innerText = rule.toString('mihomo'); UIEl.setValue(rule.toString('json')); @@ -228,14 +228,15 @@ function renderPayload(s, total, uciconfig) { o.rmempty = false; o.modalonly = true; } - var initDynamicPayload = function(o, n, key, uciconfig) { + let initDynamicPayload = function(o, n, key, uciconfig) { + o.allowduplicates = true; o.load = L.bind(function(n, key, uciconfig, section_id) { return new RulesEntry(uci.get(uciconfig, section_id, 'entry')).getPayloads().slice(n).map(e => e[key] ?? ''); }, o, n, key, uciconfig); o.validate = function(section_id, value) { value = this.formvalue(section_id); - var UIEl = this.section.getUIElement(section_id, 'entry'); - var rule = new RulesEntry(UIEl.getValue()); + let UIEl = this.section.getUIElement(section_id, 'entry'); + let rule = new RulesEntry(UIEl.getValue()); let n = this.option.match(/^payload(\d+)_/)[1]; let limit = rule.getPayloads().length; @@ -254,9 +255,9 @@ function renderPayload(s, total, uciconfig) { o.modalonly = true; } - var o, prefix; + let o, prefix; // StaticList payload - for (var n=0; n e[1].high === undefined).forEach((e) => { let low = e[1].low; let type = e[0]; @@ -366,7 +366,7 @@ function renderPayload(s, total, uciconfig) { Object.keys(extenbox).forEach((n) => { prefix = `payload${n}_`; - o = s.option(form.DynamicList, prefix + 'type', _('Type') + ' ++'); + o = s.option(hm.CBIStaticList, prefix + 'type', _('Type') + ' ++'); o.default = hm.rules_type[0][0]; hm.rules_type.forEach((res) => { o.value.apply(o, res); @@ -377,14 +377,14 @@ function renderPayload(s, total, uciconfig) { initDynamicPayload(o, n, 'type', uciconfig); o.validate = function(section_id, value) { value = this.formvalue(section_id); - var UIEl = this.section.getUIElement(section_id, 'entry'); - var rule = new RulesEntry(UIEl.getValue()); + let UIEl = this.section.getUIElement(section_id, 'entry'); + let rule = new RulesEntry(UIEl.getValue()); let n = this.option.match(/^payload(\d+)_/)[1]; value.forEach((val) => { rule.setPayload(n, {type: val}); n++; }); - rule.setPayload(n, {factor: null}, n); + rule.setPayload(n, {type: null}, n); UIEl.node.previousSibling.innerText = rule.toString('mihomo'); UIEl.setValue(rule.toString('json')); @@ -394,28 +394,24 @@ function renderPayload(s, total, uciconfig) { o = s.option(form.DynamicList, prefix + 'fused', _('Factor') + ' ++', _('Content will not be verified, Please make sure you enter it correctly.')); - o.value('', _('-- Please choose --')); extenbox[n].forEach((type) => { o.depends(Object.fromEntries([['type', type], [prefix + 'type', /.+/]])); }) initDynamicPayload(o, n, 'factor', uciconfig); o.load = L.bind(function(n, key, uciconfig, section_id) { let fusedval = [ - ['', _('-- Please choose --')], ['NETWORK', '-- NETWORK --'], ['udp', _('UDP')], ['tcp', _('TCP')], ['RULESET', '-- RULE-SET --'] ]; - hm.loadRulesetLabel.call(this, null, section_id); - this.keylist = [...fusedval.map(e => e[0]), ...this.keylist]; - this.vallist = [...fusedval.map(e => e[1]), ...this.vallist]; + hm.loadRulesetLabel.call(this, fusedval, null, section_id); this.super('load', section_id); - return new RulesEntry(uci.get(uciconfig, section_id, 'entry')).getPayloads().slice(n).map(e => e[key]); + return new RulesEntry(uci.get(uciconfig, section_id, 'entry')).getPayloads().slice(n).map(e => e[key] ?? ''); }, o, n, 'factor', uciconfig) - o = s.option(form.DynamicList, prefix + 'NOTs', _('NOT') + ' ++', + o = s.option(hm.CBIStaticList, prefix + 'NOTs', _('NOT') + ' ++', _('0 or 1 only.')); o.value('0'); o.value('1'); @@ -428,13 +424,13 @@ function renderPayload(s, total, uciconfig) { }, o, n, 'deny', uciconfig); o.validate = function(section_id, value) { value = this.formvalue(section_id); - var UIEl = this.section.getUIElement(section_id, 'entry'); - var rule = new RulesEntry(UIEl.getValue()); + let UIEl = this.section.getUIElement(section_id, 'entry'); + let rule = new RulesEntry(UIEl.getValue()); let n = this.option.match(/^payload(\d+)_/)[1]; let limit = rule.getPayloads().length; - value.forEach((val) => { - rule.setPayload(n, {deny: flagToBool(val) || null}); n++; + value.forEach((value) => { + rule.setPayload(n, {deny: flagToBool(value) || null}); n++; }); rule.setPayload(limit, {deny: null}, limit); @@ -447,11 +443,11 @@ function renderPayload(s, total, uciconfig) { } function renderRules(s, uciconfig) { - var o; + let o; o = s.option(form.DummyValue, 'entry', _('Entry')); o.renderWidget = function(/* ... */) { - var El = form.DummyValue.prototype.renderWidget.apply(this, arguments); + let El = form.DummyValue.prototype.renderWidget.apply(this, arguments); El.firstChild.innerText = new RulesEntry(El.querySelector('input').value).toString('mihomo'); @@ -488,9 +484,9 @@ function renderRules(s, uciconfig) { UIEl.node.querySelector('input').disabled = 'true'; }); - var UIEl = this.section.getUIElement(section_id, 'entry'); + let UIEl = this.section.getUIElement(section_id, 'entry'); - var rule = new RulesEntry(UIEl.getValue()).setParam('no-resolve').setParam('src'); + let rule = new RulesEntry(UIEl.getValue()).setParam('no-resolve').setParam('src'); UIEl.node.previousSibling.innerText = rule.toString('mihomo'); UIEl.setValue(rule.toString('json')); @@ -499,9 +495,9 @@ function renderRules(s, uciconfig) { return true; } o.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'entry'); + let UIEl = this.section.getUIElement(section_id, 'entry'); - var rule = new RulesEntry(UIEl.getValue()).setKey('type', value); + let rule = new RulesEntry(UIEl.getValue()).setKey('type', value); UIEl.node.previousSibling.innerText = rule.toString('mihomo'); UIEl.setValue(rule.toString('json')); @@ -519,61 +515,61 @@ function renderRules(s, uciconfig) { return new RulesEntry(uci.get(uciconfig, section_id, 'entry')).detour; } o.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'entry'); + let UIEl = this.section.getUIElement(section_id, 'entry'); - var rule = new RulesEntry(UIEl.getValue()).setKey('detour', value); + let rule = new RulesEntry(UIEl.getValue()).setKey('detour', value); UIEl.node.previousSibling.innerText = rule.toString('mihomo'); UIEl.setValue(rule.toString('json')); } o.write = function() {}; - //o.depends('SUB-RULE', '0'); + //o.depends('SUB-RULE', ''); o.editable = true; o = s.option(form.Flag, 'src', _('src')); o.default = o.disabled; o.load = function(section_id) { - return boolToFlag(new RulesEntry(uci.get(uciconfig, section_id, 'entry')).getParam('src')); + return boolToFlag(new RulesEntry(uci.get(uciconfig, section_id, 'entry')).getParam('src') ? true : false); } o.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'entry'); + let UIEl = this.section.getUIElement(section_id, 'entry'); - var rule = new RulesEntry(UIEl.getValue()).setParam('src', flagToBool(value) || null); + let rule = new RulesEntry(UIEl.getValue()).setParam('src', flagToBool(value) || null); UIEl.node.previousSibling.innerText = rule.toString('mihomo'); UIEl.setValue(rule.toString('json')); } o.write = function() {}; - o.depends('SUB-RULE', '0'); + o.depends('SUB-RULE', ''); o.modalonly = true; o = s.option(form.Flag, 'no-resolve', _('no-resolve')); o.default = o.disabled; o.load = function(section_id) { - return boolToFlag(new RulesEntry(uci.get(uciconfig, section_id, 'entry')).getParam('no-resolve')); + return boolToFlag(new RulesEntry(uci.get(uciconfig, section_id, 'entry')).getParam('no-resolve') ? true : false); } o.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'entry'); + let UIEl = this.section.getUIElement(section_id, 'entry'); - var rule = new RulesEntry(UIEl.getValue()).setParam('no-resolve', flagToBool(value) || null); + let rule = new RulesEntry(UIEl.getValue()).setParam('no-resolve', flagToBool(value) || null); UIEl.node.previousSibling.innerText = rule.toString('mihomo'); UIEl.setValue(rule.toString('json')); } o.write = function() {}; - o.depends('SUB-RULE', '0'); + o.depends('SUB-RULE', ''); o.modalonly = true; } return view.extend({ - load: function() { + load() { return Promise.all([ uci.load('fchomo') ]); }, - render: function(data) { - var dashboard_repo = uci.get(data[0], 'api', 'dashboard_repo'); + render(data) { + const dashboard_repo = uci.get(data[0], 'api', 'dashboard_repo'); let m, s, o, ss, so; @@ -655,7 +651,7 @@ return view.extend({ so = ss.taboption('field_general', form.MultiValue, 'proxies', _('Node')); so.value('', _('-- Please choose --')); - so.load = L.bind(hm.loadNodeLabel, so); + so.load = L.bind(hm.loadNodeLabel, so, [['', _('-- Please choose --')]]); so.validate = function(section_id, value) { if (this.section.getOption('include_all').formvalue(section_id) === '1' || this.section.getOption('include_all_proxies').formvalue(section_id) === '1') @@ -669,7 +665,7 @@ return view.extend({ so = ss.taboption('field_general', form.MultiValue, 'use', _('Provider')); so.value('', _('-- Please choose --')); - so.load = L.bind(hm.loadProviderLabel, so); + so.load = L.bind(hm.loadProviderLabel, so, [['', _('-- Please choose --')]]); so.validate = function(section_id, value) { if (this.section.getOption('include_all').formvalue(section_id) === '1' || this.section.getOption('include_all_providers').formvalue(section_id) === '1') @@ -823,47 +819,29 @@ return view.extend({ renderRules(ss, data[0]); - so = ss.option(form.Flag, 'SUB-RULE', _('SUB-RULE')); - so.default = so.disabled; + so = ss.option(form.ListValue, 'SUB-RULE', _('SUB-RULE')); so.load = function(section_id) { - return boolToFlag(new RulesEntry(uci.get(data[0], section_id, 'entry')).subrule ? 'true' : 'false'); + hm.loadSubRuleGroup.call(this, [['', _('-- Please choose --')]], section_id); + + return new RulesEntry(uci.get(data[0], section_id, 'entry')).subrule || ''; } so.validate = function(section_id, value) { value = this.formvalue(section_id); - this.section.getUIElement(section_id, 'detour').node.querySelector('select').disabled = (value === '1') ? 'true' : null; + this.section.getUIElement(section_id, 'detour').node.querySelector('select').disabled = value ? 'true' : null; return true; } so.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'entry'); + let UIEl = this.section.getUIElement(section_id, 'entry'); - var rule = new RulesEntry(UIEl.getValue()).setKey('subrule', value === '1' ? ' ' : false); + let rule = new RulesEntry(UIEl.getValue()).setKey('subrule', value); UIEl.node.previousSibling.innerText = rule.toString('mihomo'); UIEl.setValue(rule.toString('json')); } so.write = function() {}; so.modalonly = true; - - so = ss.option(form.ListValue, 'sub_rule', _('Sub rule')); - so.load = function(section_id) { - hm.loadSubRuleGroup.call(this, section_id); - - return new RulesEntry(uci.get(data[0], section_id, 'entry')).subrule || ''; - } - so.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'entry'); - - var rule = new RulesEntry(UIEl.getValue()).setKey('subrule', value); - - UIEl.node.previousSibling.innerText = rule.toString('mihomo'); - UIEl.setValue(rule.toString('json')); - } - so.rmempty = false; - so.write = function() {}; - so.depends('SUB-RULE', '1'); - so.modalonly = true; /* Routing rules END */ /* Sub rules START */ @@ -930,22 +908,22 @@ return view.extend({ so.rmempty = false; so = ss.option(form.MultiValue, 'default_server', _('Default DNS server')); - so.description = uci.get(data[0], so.section.section, 'fallback_server') ? _('Final DNS server (Used to Domestic-IP response)') : _('Final DNS server'); + so.description = uci.get(data[0], so.section.section, 'fallback_server') ? _('Final DNS server (For non-poisoned domains)') : _('Final DNS server'); so.default = 'default-dns'; so.load = L.bind(loadDNSServerLabel, so); so.validate = L.bind(validateNameserver, so); so.rmempty = false; so = ss.option(form.MultiValue, 'fallback_server', _('Fallback DNS server')); - so.description = uci.get(data[0], so.section.section, 'fallback_server') ? _('Final DNS server (Used to Overseas-IP response)') : _('Fallback DNS server'); + so.description = uci.get(data[0], so.section.section, 'fallback_server') ? _('Final DNS server (For poisoned domains)') : _('Fallback DNS server'); so.load = L.bind(loadDNSServerLabel, so); so.validate = L.bind(validateNameserver, so); so.onchange = function(ev, section_id, value) { - var ddesc = this.section.getUIElement(section_id, 'default_server').node.nextSibling; - var fdesc = ev.target.nextSibling; + let ddesc = this.section.getUIElement(section_id, 'default_server').node.nextSibling; + let fdesc = ev.target.nextSibling; if (value.length > 0) { - ddesc.innerHTML = _('Final DNS server (Used to Domestic-IP response)'); - fdesc.innerHTML = _('Final DNS server (Used to Overseas-IP response)'); + ddesc.innerHTML = _('Final DNS server (For non-poisoned domains)'); + fdesc.innerHTML = _('Final DNS server (For poisoned domains)'); } else { ddesc.innerHTML = _('Final DNS server'); fdesc.innerHTML = _('Fallback DNS server'); @@ -998,9 +976,9 @@ return view.extend({ this.section.getUIElement(section_id, 'ecs').node.querySelector('input').disabled = null; this.section.getUIElement(section_id, 'ecs-override').node.querySelector('input').disabled = null; } else { - var UIEl = this.section.getUIElement(section_id, 'address'); + let UIEl = this.section.getUIElement(section_id, 'address'); - var newvalue = new DNSAddress(UIEl.getValue()).setParam('h3').setParam('ecs').setParam('ecs-override').toString(); + let newvalue = new DNSAddress(UIEl.getValue()).setParam('h3').setParam('ecs').setParam('ecs-override').toString(); UIEl.node.previousSibling.innerText = newvalue; UIEl.setValue(newvalue); @@ -1015,9 +993,9 @@ return view.extend({ return true; } so.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'address'); + let UIEl = this.section.getUIElement(section_id, 'address'); - var newvalue = ('N' + UIEl.getValue()).replace(/^[^#]+/, value); + let newvalue = ('N' + UIEl.getValue()).replace(/^[^#]+/, value); UIEl.node.previousSibling.innerText = newvalue; UIEl.setValue(newvalue); @@ -1033,9 +1011,9 @@ return view.extend({ return new DNSAddress(uci.get(data[0], section_id, 'address')).parseParam('detour'); } so.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'address'); + let UIEl = this.section.getUIElement(section_id, 'address'); - var newvalue = new DNSAddress(UIEl.getValue()).setParam('detour', value).toString(); + let newvalue = new DNSAddress(UIEl.getValue()).setParam('detour', value).toString(); UIEl.node.previousSibling.innerText = newvalue; UIEl.setValue(newvalue); @@ -1046,12 +1024,12 @@ return view.extend({ so = ss.option(form.Flag, 'h3', _('HTTP/3')); so.default = so.disabled; so.load = function(section_id) { - return boolToFlag(new DNSAddress(uci.get(data[0], section_id, 'address')).parseParam('h3')); + return boolToFlag(new DNSAddress(uci.get(data[0], section_id, 'address')).parseParam('h3') ? true : false); } so.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'address'); + let UIEl = this.section.getUIElement(section_id, 'address'); - var newvalue = new DNSAddress(UIEl.getValue()).setParam('h3', flagToBool(value) || null).toString(); + let newvalue = new DNSAddress(UIEl.getValue()).setParam('h3', flagToBool(value) || null).toString(); UIEl.node.previousSibling.innerText = newvalue; UIEl.setValue(newvalue); @@ -1065,9 +1043,9 @@ return view.extend({ return new DNSAddress(uci.get(data[0], section_id, 'address')).parseParam('ecs'); } so.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'address'); + let UIEl = this.section.getUIElement(section_id, 'address'); - var newvalue = new DNSAddress(UIEl.getValue()).setParam('ecs', value).toString(); + let newvalue = new DNSAddress(UIEl.getValue()).setParam('ecs', value).toString(); UIEl.node.previousSibling.innerText = newvalue; UIEl.setValue(newvalue); @@ -1079,12 +1057,12 @@ return view.extend({ _('Override ECS in original request.')); so.default = so.disabled; so.load = function(section_id) { - return boolToFlag(new DNSAddress(uci.get(data[0], section_id, 'address')).parseParam('ecs-override')); + return boolToFlag(new DNSAddress(uci.get(data[0], section_id, 'address')).parseParam('ecs-override') ? true : false); } so.onchange = function(ev, section_id, value) { - var UIEl = this.section.getUIElement(section_id, 'address'); + let UIEl = this.section.getUIElement(section_id, 'address'); - var newvalue = new DNSAddress(UIEl.getValue()).setParam('ecs-override', flagToBool(value) || null).toString(); + let newvalue = new DNSAddress(UIEl.getValue()).setParam('ecs-override', flagToBool(value) || null).toString(); UIEl.node.previousSibling.innerText = newvalue; UIEl.setValue(newvalue); @@ -1138,13 +1116,13 @@ return view.extend({ so = ss.option(form.MultiValue, 'rule_set', _('Rule set'), _('Match rule set.')); so.value('', _('-- Please choose --')); - so.load = L.bind(hm.loadRulesetLabel, so, ['domain', 'classical']); + so.load = L.bind(hm.loadRulesetLabel, so, [['', _('-- Please choose --')]], ['domain', 'classical']); so.depends('type', 'rule_set'); so.modalonly = true; so = ss.option(form.DummyValue, '_entry', _('Entry')); so.load = function(section_id) { - var option = uci.get(data[0], section_id, 'type'); + const option = uci.get(data[0], section_id, 'type'); return uci.get(data[0], section_id, option)?.join(','); } diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js index aaab7b9d10..32a4e1a438 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js @@ -45,10 +45,10 @@ function handleResUpdate(type, repo) { }); // Dynamic repo - var label; + let label; if (repo) { - var section_id = this.section.section; - var weight = document.getElementById(this.cbid(section_id)); + const section_id = this.section.section; + let weight = document.getElementById(this.cbid(section_id)); if (weight) repo = weight.firstChild.value, label = weight.firstChild.selectedOptions[0].label; @@ -79,7 +79,7 @@ function handleResUpdate(type, repo) { function renderResVersion(El, type, repo) { return L.resolveDefault(callResVersion(type, repo), {}).then((res) => { - var resEl = E([ + let resEl = E([ E('button', { 'class': 'cbi-button cbi-button-apply', 'click': ui.createHandlerFn(this, handleResUpdate, type, repo) @@ -107,7 +107,7 @@ function updateResVersion(El, version) { } function renderNATBehaviorTest(El) { - var resEl = E('div', { 'class': 'control-group' }, [ + let resEl = E('div', { 'class': 'control-group' }, [ E('select', { 'id': '_status_nattest_l4proto', 'class': 'cbi-input-select', @@ -119,9 +119,9 @@ function renderNATBehaviorTest(El) { E('button', { 'class': 'cbi-button cbi-button-apply', 'click': ui.createHandlerFn(this, function() { - var stun = this.formvalue(this.section.section); - var l4proto = document.getElementById('_status_nattest_l4proto').value; - var l4proto_idx = document.getElementById('_status_nattest_l4proto').selectedIndex; + const stun = this.formvalue(this.section.section); + const l4proto = document.getElementById('_status_nattest_l4proto').value; + const l4proto_idx = document.getElementById('_status_nattest_l4proto').selectedIndex; return fs.exec_direct('/etc/fchomo/scripts/natcheck.sh', [stun, l4proto, getRandom(32768, 61000)]).then((stdout) => { this.description = '
' + _('Expand/Collapse result') + '' + stdout + '
'; @@ -144,7 +144,7 @@ function renderNATBehaviorTest(El) { } return view.extend({ - load: function() { + load() { return Promise.all([ uci.load('fchomo'), hm.getFeatures(), @@ -158,17 +158,17 @@ return view.extend({ ]); }, - render: function(data) { - var features = data[1], - hosts = data[2]?.hosts, - CisRunning = data[3], - CclashAPI = data[4], - SisRunning = data[5], - SclashAPI = data[6], - res_ver_geoip = data[7], - res_ver_geosite = data[8]; + render(data) { + const features = data[1]; + const hosts = data[2]?.hosts; + const CisRunning = data[3]; + const CclashAPI = data[4]; + const SisRunning = data[5]; + const SclashAPI = data[6]; + const res_ver_geoip = data[7]; + const res_ver_geosite = data[8]; - var dashboard_repo = uci.get(data[0], 'api', 'dashboard_repo'); + const dashboard_repo = uci.get(data[0], 'api', 'dashboard_repo'); let m, s, o, ss, so; @@ -224,13 +224,13 @@ return view.extend({ expect: { '': {} } }); - var ElId = '_connection_check_results'; + const ElId = '_connection_check_results'; return E([ E('button', { 'class': 'cbi-button cbi-button-apply', 'click': ui.createHandlerFn(this, function() { - var weight = document.getElementById(ElId); + let weight = document.getElementById(ElId); weight.innerHTML = ''; return hm.checkurls.forEach((site) => { @@ -258,7 +258,7 @@ return view.extend({ so.readonly = true; } else { so.renderWidget = function(/* ... */) { - var El = form.Value.prototype.renderWidget.apply(this, arguments); + let El = form.Value.prototype.renderWidget.apply(this, arguments); return renderNATBehaviorTest.call(this, El); } @@ -317,7 +317,7 @@ return view.extend({ so.value.apply(so, repo); }) so.renderWidget = function(/* ... */) { - var El = form.ListValue.prototype.renderWidget.apply(this, arguments); + let El = form.ListValue.prototype.renderWidget.apply(this, arguments); El.classList.add('control-group'); El.firstChild.style.width = '10em'; @@ -327,7 +327,7 @@ return view.extend({ so.onchange = function(ev, section_id, value) { this.default = value; - var weight = ev.target; + let weight = ev.target; if (weight) return L.resolveDefault(callResVersion('dashboard', value), {}).then((res) => { updateResVersion(weight.lastChild, res.version); @@ -529,7 +529,6 @@ return view.extend({ delete this.keylist; delete this.vallist; - this.value('', _('-- Please choose --')); hm.dashrepos.forEach((repo) => { L.resolveDefault(callResVersion('dashboard', repo[0]), {}).then((res) => { this.value(repo[0], repo[1] + ' - ' + (res.version || _('Not Installed'))); diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/hosts.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/hosts.js index 69500565be..5a5f322d9f 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/hosts.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/hosts.js @@ -4,15 +4,15 @@ 'require fchomo as hm'; -var isReadonlyView = !L.hasViewPermission() || null; +const isReadonlyView = !L.hasViewPermission() || null; return view.extend({ - load: function() { + load() { return L.resolveDefault(hm.readFile('templates', 'hosts.yaml'), ''); }, - handleSave: function(ev) { - var value = (document.querySelector('textarea').value || '').trim().replace(/\r\n/g, '\n') + '\n'; + handleSave(ev) { + let value = (document.querySelector('textarea').value || '').trim().replace(/\r\n/g, '\n') + '\n'; return hm.writeFile('templates', 'hosts.yaml', value).then(function(rc) { document.querySelector('textarea').value = value; @@ -22,7 +22,7 @@ return view.extend({ }); }, - render: function(content) { + render(content) { return E([ E('h2', _('Hosts')), E('p', { 'class': 'cbi-section-descr' }, _('Custom internal hosts. Support yaml or json format.')), diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/log.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/log.js index a2f181e28b..bceb08e871 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/log.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/log.js @@ -9,7 +9,7 @@ 'require view'; /* Thanks to luci-app-aria2 */ -var css = ' \ +const css = ' \ #log_textarea { \ padding: 10px; \ text-align: left; \ @@ -23,7 +23,7 @@ var css = ' \ background-color: #33ccff; \ }'; -var hm_dir = '/var/run/fchomo'; +const hm_dir = '/var/run/fchomo'; function getRuntimeLog(name, filename) { const callLogClean = rpc.declare({ @@ -33,13 +33,13 @@ function getRuntimeLog(name, filename) { expect: { '': {} } }); - var log_textarea = E('div', { 'id': 'log_textarea' }, + let log_textarea = E('div', { 'id': 'log_textarea' }, E('pre', { 'class': 'spinning' }, _('Collecting data...')) ); - var log; + let log; poll.add(L.bind(function() { return fs.read_direct(String.format('%s/%s.log', hm_dir, filename), 'text') .then(function(res) { @@ -86,7 +86,7 @@ function getRuntimeLog(name, filename) { } return view.extend({ - render: function(data) { + render(data) { let m, s, o, ss, so; m = new form.Map('fchomo'); diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js index 14d6fcbc9c..19bd17ca0d 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js @@ -8,13 +8,13 @@ 'require tools.widgets as widgets'; return view.extend({ - load: function() { + load() { return Promise.all([ uci.load('fchomo') ]); }, - render: function(data) { + render(data) { let m, s, o, ss, so; m = new form.Map('fchomo', _('Edit node')); @@ -151,7 +151,7 @@ return view.extend({ so = ss.taboption('field_general', form.Value, 'shadowsocks_password', _('Password')); so.password = true; so.validate = function(section_id, value) { - var encmode = this.section.getOption('shadowsocks_chipher').formvalue(section_id); + const encmode = this.section.getOption('shadowsocks_chipher').formvalue(section_id); return hm.validateShadowsocksPassword.call(this, hm, encmode, section_id, value); } so.depends({type: 'ss', shadowsocks_chipher: /.+/}); @@ -278,7 +278,7 @@ return view.extend({ so = ss.taboption('field_general', form.Value, 'trojan_ss_password', _('Shadowsocks password')); so.password = true; so.validate = function(section_id, value) { - var encmode = this.section.getOption('trojan_ss_chipher').formvalue(section_id); + const encmode = this.section.getOption('trojan_ss_chipher').formvalue(section_id); return hm.validateShadowsocksPassword.call(this, hm, encmode, section_id, value); } so.depends({type: 'trojan', trojan_ss_enabled: '1'}); @@ -470,9 +470,9 @@ return view.extend({ so = ss.taboption('field_general', form.Flag, 'tls', _('TLS')); so.default = so.disabled; so.validate = function(section_id, value) { - var type = this.section.getOption('type').formvalue(section_id); - var tls = this.section.getUIElement(section_id, 'tls').node.querySelector('input'); - var tls_alpn = this.section.getUIElement(section_id, 'tls_alpn'); + const type = this.section.getOption('type').formvalue(section_id); + let tls = this.section.getUIElement(section_id, 'tls').node.querySelector('input'); + let tls_alpn = this.section.getUIElement(section_id, 'tls_alpn'); // Force enabled if (['trojan', 'hysteria', 'hysteria2', 'tuic'].includes(type)) { @@ -585,7 +585,7 @@ return view.extend({ so.value('grpc', _('gRPC')); so.value('ws', _('WebSocket')); so.validate = function(section_id, value) { - var type = this.section.getOption('type').formvalue(section_id); + const type = this.section.getOption('type').formvalue(section_id); switch (type) { case 'vmess': @@ -793,7 +793,7 @@ return view.extend({ ss.sectiontitle = L.bind(hm.loadDefaultLabel, ss); /* Remove idle files start */ ss.renderSectionAdd = function(/* ... */) { - var el = hm.renderSectionAdd.apply(this, [prefmt, false].concat(Array.prototype.slice.call(arguments))); + let el = hm.renderSectionAdd.apply(this, [prefmt, false].concat(Array.prototype.slice.call(arguments))); el.appendChild(E('button', { 'class': 'cbi-button cbi-button-add', @@ -828,7 +828,7 @@ return view.extend({ so = ss.option(form.DummyValue, '_value', _('Value')); so.load = function(section_id) { - var option = uci.get(data[0], section_id, 'type'); + const option = uci.get(data[0], section_id, 'type'); switch (option) { case 'file': @@ -1079,8 +1079,8 @@ return view.extend({ so = ss.option(form.DummyValue, '_value', _('Value')); so.load = function(section_id) { - var type = uci.get(data[0], section_id, 'type'); - var detour = uci.get(data[0], section_id, 'chain_tail_group') || uci.get(data[0], section_id, 'chain_tail'); + const type = uci.get(data[0], section_id, 'type'); + const detour = uci.get(data[0], section_id, 'chain_tail_group') || uci.get(data[0], section_id, 'chain_tail'); switch (type) { case 'node': @@ -1100,7 +1100,7 @@ return view.extend({ so.modalonly = false; so = ss.option(form.ListValue, 'chain_head_sub', _('Chain head')); - so.load = L.bind(hm.loadProviderLabel, so); + so.load = L.bind(hm.loadProviderLabel, so, [['', _('-- Please choose --')]]); so.rmempty = false; so.depends('type', 'provider'); so.modalonly = true; @@ -1108,10 +1108,10 @@ return view.extend({ so = ss.option(form.ListValue, 'chain_head', _('Chain head'), _('Recommended to use UoT node.
such as %s.') .format('ss|ssr|vmess|vless|trojan|tuic')); - so.load = L.bind(hm.loadNodeLabel, so); + so.load = L.bind(hm.loadNodeLabel, so, [['', _('-- Please choose --')]]); so.rmempty = false; so.validate = function(section_id, value) { - var chain_tail = this.section.getUIElement(section_id, 'chain_tail').getValue(); + const chain_tail = this.section.getUIElement(section_id, 'chain_tail').getValue(); if (value === chain_tail) return _('Expecting: %s').format(_('Different chain head/tail')); @@ -1121,33 +1121,7 @@ return view.extend({ so.depends('type', 'node'); so.modalonly = true; - /* - so = ss.option(hm.CBIStaticList, 'chain_body', _('Chain body')); - so.value('', _('-- Please choose --')); - so.load = L.bind(hm.loadNodeLabel, so); - so.validate = function(section_id, value) { - var chain_head = this.section.getUIElement(section_id, 'chain_head').getValue(); - var chain_tail = this.section.getUIElement(section_id, 'chain_tail').getValue(); - value = this.getUIElement(section_id).getValue(); - - if (value.includes(chain_head) || value.includes(chain_tail)) - return _('Expecting: %s').format(_('Different with chain head/tail')); - - return true; - } - so.textvalue = function(section_id) { - var cvals = this.cfgvalue(section_id); - //alert(Array.prototype.join.call(cvals, ':')); - return cvals ? '» ' + cvals.map((cval) => { - var i = this.keylist.indexOf(cval); - - return this.vallist[i]; - }).join(' » ') + ' »' : '»'; - } - */ - so = ss.option(form.ListValue, 'chain_tail_group', _('Chain tail')); - so.value('', _('-- Please choose --')); so.load = L.bind(hm.loadProxyGroupLabel, so, [['', _('-- Please choose --')]]); so.rmempty = false; so.depends({chain_tail: /.+/, '!reverse': true}); @@ -1156,10 +1130,10 @@ return view.extend({ so = ss.option(form.ListValue, 'chain_tail', _('Chain tail'), _('Recommended to use UoT node.
such as %s.') .format('ss|ssr|vmess|vless|trojan|tuic')); - so.load = L.bind(hm.loadNodeLabel, so); + so.load = L.bind(hm.loadNodeLabel, so, [['', _('-- Please choose --')]]); so.rmempty = false; so.validate = function(section_id, value) { - var chain_head = this.section.getUIElement(section_id, 'chain_head').getValue(); + const chain_head = this.section.getUIElement(section_id, 'chain_head').getValue(); if (value === chain_head) return _('Expecting: %s').format(_('Different chain head/tail')); diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/ruleset.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/ruleset.js index e5c9fa0a8c..f71d23588c 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/ruleset.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/ruleset.js @@ -7,7 +7,7 @@ 'require fchomo as hm'; function parseRulesetLink(uri) { - var config, + let config, filefmt = new RegExp(/^(text|yaml|mrs)$/), filebehav = new RegExp(/^(domain|ipcidr|classical)$/), unuciname = new RegExp(/[^a-zA-Z0-9_]+/, "g"); @@ -26,7 +26,7 @@ function parseRulesetLink(uri) { .replace(/[\s\.-]/g, '_').replace(unuciname, ''); if (filefmt.test(format) && filebehav.test(behavior)) { - var fullpath = (url.username ? url.username + '@' : '') + url.host + url.pathname + (rawquery ? '?' + decodeURIComponent(rawquery) : ''); + let fullpath = (url.username ? url.username + '@' : '') + url.host + url.pathname + (rawquery ? '?' + decodeURIComponent(rawquery) : ''); config = { label: url.hash ? decodeURIComponent(url.hash.slice(1)) : name ? name : null, type: 'http', @@ -90,13 +90,13 @@ function parseRulesetLink(uri) { } return view.extend({ - load: function() { + load() { return Promise.all([ uci.load('fchomo') ]); }, - render: function(data) { + render(data) { let m, s, o; m = new form.Map('fchomo', _('Edit ruleset')); @@ -113,7 +113,7 @@ return view.extend({ s.sectiontitle = L.bind(hm.loadDefaultLabel, s); /* Import rule-set links and Remove idle files start */ s.handleLinkImport = function() { - var textarea = new ui.Textarea('', { + let textarea = new ui.Textarea('', { 'placeholder': 'http(s)://github.com/ACL4SSR/ACL4SSR/raw/refs/heads/master/Clash/Providers/BanAD.yaml?fmt=yaml&behav=classical&rawq=good%3Djob#BanAD\n' + 'file:///example.txt?fmt=text&behav=domain&fill=LmNuCg#CN%20TLD\n' + 'inline://LSAnLmhrJwoK?behav=domain#HK%20TLD\n' @@ -133,17 +133,17 @@ return view.extend({ E('button', { class: 'btn cbi-button-action', click: ui.createHandlerFn(this, function() { - var input_links = textarea.getValue().trim().split('\n'); + let input_links = textarea.getValue().trim().split('\n'); if (input_links && input_links[0]) { /* Remove duplicate lines */ input_links = input_links.reduce((pre, cur) => (!pre.includes(cur) && pre.push(cur), pre), []); - var imported_ruleset = 0; + let imported_ruleset = 0; input_links.forEach((l) => { - var config = parseRulesetLink(l); + let config = parseRulesetLink(l); if (config) { - var sid = uci.add(data[0], 'ruleset', config.id); + let sid = uci.add(data[0], 'ruleset', config.id); config.id = null; Object.keys(config).forEach((k) => { uci.set(data[0], sid, k, config[k] || ''); @@ -172,7 +172,7 @@ return view.extend({ ]) } s.renderSectionAdd = function(/* ... */) { - var el = hm.renderSectionAdd.apply(this, [prefmt, false].concat(Array.prototype.slice.call(arguments))); + let el = hm.renderSectionAdd.apply(this, [prefmt, false].concat(Array.prototype.slice.call(arguments))); el.appendChild(E('button', { 'class': 'cbi-button cbi-button-add', @@ -212,7 +212,7 @@ return view.extend({ o.value('mrs', _('Binary file')); o.default = 'yaml'; o.validate = function(section_id, value) { - var behavior = this.section.getUIElement(section_id, 'behavior').getValue(); + const behavior = this.section.getUIElement(section_id, 'behavior').getValue(); if (value === 'mrs' && behavior === 'classical') return _('Expecting: %s').format(_('Binary format only supports domain / ipcidr')); @@ -220,8 +220,8 @@ return view.extend({ return true; } o.textvalue = function(section_id) { - var cval = this.cfgvalue(section_id) || this.default; - var inline = L.bind(function() { + let cval = this.cfgvalue(section_id) || this.default; + let inline = L.bind(function() { let cval = this.cfgvalue(section_id) || this.default; return (cval === 'inline') ? true : false; }, s.getOption('type')); @@ -235,7 +235,7 @@ return view.extend({ o.value('ipcidr'); o.default = 'classical'; o.validate = function(section_id, value) { - var format = this.section.getUIElement(section_id, 'format').getValue(); + const format = this.section.getUIElement(section_id, 'format').getValue(); if (value === 'classical' && format === 'mrs') return _('Expecting: %s').format(_('Binary format only supports domain / ipcidr')); @@ -245,7 +245,7 @@ return view.extend({ o = s.option(form.DummyValue, '_value', _('Value')); o.load = function(section_id) { - var option = uci.get(data[0], section_id, 'type'); + const option = uci.get(data[0], section_id, 'type'); switch (option) { case 'file': diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/server.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/server.js index b113a1202b..ff0d5f45ce 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/server.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/server.js @@ -8,10 +8,10 @@ 'require fchomo as hm'; function handleGenKey(option) { - var section_id = this.section.section; - var type = this.section.getOption('type').formvalue(section_id); - var widget = this.map.findElement('id', 'widget.cbid.fchomo.%s.%s'.format(section_id, option)); - var password, required_method; + const section_id = this.section.section; + const type = this.section.getOption('type').formvalue(section_id); + let widget = this.map.findElement('id', 'widget.cbid.fchomo.%s.%s'.format(section_id, option)); + let password, required_method; if (option === 'uuid' || option.match(/_uuid/)) required_method = 'uuid'; @@ -44,8 +44,8 @@ function handleGenKey(option) { const CBIPWGenValue = form.Value.extend({ __name__: 'CBI.PWGenValue', - renderWidget: function() { - var node = form.Value.prototype.renderWidget.apply(this, arguments); + renderWidget() { + let node = form.Value.prototype.renderWidget.apply(this, arguments); (node.querySelector('.control-group') || node).appendChild(E('button', { 'class': 'cbi-button cbi-button-add', @@ -58,16 +58,16 @@ const CBIPWGenValue = form.Value.extend({ }); return view.extend({ - load: function() { + load() { return Promise.all([ uci.load('fchomo'), hm.getFeatures() ]); }, - render: function(data) { - var dashboard_repo = uci.get(data[0], 'api', 'dashboard_repo'), - features = data[1]; + render(data) { + const dashboard_repo = uci.get(data[0], 'api', 'dashboard_repo'); + const features = data[1]; let m, s, o; @@ -210,7 +210,7 @@ return view.extend({ o = s.option(CBIPWGenValue, 'shadowsocks_password', _('Password')); o.password = true; o.validate = function(section_id, value) { - var encmode = this.section.getOption('shadowsocks_chipher').formvalue(section_id); + const encmode = this.section.getOption('shadowsocks_chipher').formvalue(section_id); return hm.validateShadowsocksPassword.call(this, hm, encmode, section_id, value); } o.depends({type: 'shadowsocks', shadowsocks_chipher: /.+/}); @@ -270,9 +270,9 @@ return view.extend({ o = s.option(form.Flag, 'tls', _('TLS')); o.default = o.disabled; o.validate = function(section_id, value) { - var type = this.section.getOption('type').formvalue(section_id); - var tls = this.section.getUIElement(section_id, 'tls').node.querySelector('input'); - var tls_alpn = this.section.getUIElement(section_id, 'tls_alpn'); + const type = this.section.getOption('type').formvalue(section_id); + let tls = this.section.getUIElement(section_id, 'tls').node.querySelector('input'); + let tls_alpn = this.section.getUIElement(section_id, 'tls_alpn'); // Force enabled if (['tuic', 'hysteria2'].includes(type)) { diff --git a/small/luci-app-fchomo/po/templates/fchomo.pot b/small/luci-app-fchomo/po/templates/fchomo.pot index 873eab63c1..9aee16a920 100644 --- a/small/luci-app-fchomo/po/templates/fchomo.pot +++ b/small/luci-app-fchomo/po/templates/fchomo.pot @@ -787,12 +787,12 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:786 #: htdocs/luci-static/resources/view/fchomo/client.js:800 -msgid "Final DNS server (Used to Domestic-IP response)" +msgid "Final DNS server (For non-poisoned domains)" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:793 #: htdocs/luci-static/resources/view/fchomo/client.js:801 -msgid "Final DNS server (Used to Overseas-IP response)" +msgid "Final DNS server (For poisoned domains)" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:301 diff --git a/small/luci-app-fchomo/po/zh_Hans/fchomo.po b/small/luci-app-fchomo/po/zh_Hans/fchomo.po index e8a6417a00..c50739e733 100644 --- a/small/luci-app-fchomo/po/zh_Hans/fchomo.po +++ b/small/luci-app-fchomo/po/zh_Hans/fchomo.po @@ -801,13 +801,13 @@ msgstr "兜底 DNS 服务器" #: htdocs/luci-static/resources/view/fchomo/client.js:786 #: htdocs/luci-static/resources/view/fchomo/client.js:800 -msgid "Final DNS server (Used to Domestic-IP response)" -msgstr "兜底 DNS 服务器 (用于 境内-IP 响应)" +msgid "Final DNS server (For non-poisoned domains)" +msgstr "兜底 DNS 服务器 (用于未被污染的域名)" #: htdocs/luci-static/resources/view/fchomo/client.js:793 #: htdocs/luci-static/resources/view/fchomo/client.js:801 -msgid "Final DNS server (Used to Overseas-IP response)" -msgstr "兜底 DNS 服务器 (用于 境外-IP 响应)" +msgid "Final DNS server (For poisoned domains)" +msgstr "兜底 DNS 服务器 (用于已被污染的域名)" #: htdocs/luci-static/resources/view/fchomo/node.js:301 msgid "Flow" diff --git a/small/luci-app-fchomo/po/zh_Hant/fchomo.po b/small/luci-app-fchomo/po/zh_Hant/fchomo.po index 8bf2cad218..db8c06278c 100644 --- a/small/luci-app-fchomo/po/zh_Hant/fchomo.po +++ b/small/luci-app-fchomo/po/zh_Hant/fchomo.po @@ -801,13 +801,13 @@ msgstr "兜底 DNS 伺服器" #: htdocs/luci-static/resources/view/fchomo/client.js:786 #: htdocs/luci-static/resources/view/fchomo/client.js:800 -msgid "Final DNS server (Used to Domestic-IP response)" -msgstr "兜底 DNS 伺服器 (用於 境內-IP 回應)" +msgid "Final DNS server (For non-poisoned domains)" +msgstr "兜底 DNS 伺服器 (用於未被汙染的網域)" #: htdocs/luci-static/resources/view/fchomo/client.js:793 #: htdocs/luci-static/resources/view/fchomo/client.js:801 -msgid "Final DNS server (Used to Overseas-IP response)" -msgstr "兜底 DNS 伺服器 (用於 境外-IP 回應)" +msgid "Final DNS server (For poisoned domains)" +msgstr "兜底 DNS 伺服器 (用於已被汙染的網域)" #: htdocs/luci-static/resources/view/fchomo/node.js:301 msgid "Flow" @@ -2167,13 +2167,13 @@ msgstr "預設值為每天 2:00。" #: htdocs/luci-static/resources/view/fchomo/client.js:1051 msgid "The matching %s will be deemed as not-poisoned." -msgstr "匹配的 %s 將被視為未被污染。" +msgstr "匹配的 %s 將被視為未被汙染。" #: htdocs/luci-static/resources/view/fchomo/client.js:1060 #: htdocs/luci-static/resources/view/fchomo/client.js:1064 #: htdocs/luci-static/resources/view/fchomo/client.js:1069 msgid "The matching %s will be deemed as poisoned." -msgstr "匹配的 %s 將被視為已被污染。" +msgstr "匹配的 %s 將被視為已被汙染。" #: htdocs/luci-static/resources/view/fchomo/server.js:352 msgid "The server private key, in PEM format." diff --git a/small/luci-app-passwall/Makefile b/small/luci-app-passwall/Makefile index f0c9835623..5bc28f0c62 100644 --- a/small/luci-app-passwall/Makefile +++ b/small/luci-app-passwall/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall -PKG_VERSION:=25.1.8 +PKG_VERSION:=25.1.15 PKG_RELEASE:=1 PKG_CONFIG_DEPENDS:= \ diff --git a/small/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua b/small/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua index 061615370f..93384b0edd 100644 --- a/small/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua +++ b/small/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua @@ -158,11 +158,13 @@ end local file_vpslist = TMP_ACL_PATH .. "/vpslist" if not is_file_nonzero(file_vpslist) then local f_out = io.open(file_vpslist, "w") + local written_domains = {} uci:foreach(appname, "nodes", function(t) local function process_address(address) if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) then + if datatypes.hostname(address) and not written_domains[address] then f_out:write(address .. "\n") + written_domains[address] = true end end process_address(t.address) diff --git a/small/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua b/small/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua index bd06c07c9d..4c5f50d001 100644 --- a/small/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua +++ b/small/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua @@ -274,11 +274,13 @@ end local file_vpslist = TMP_ACL_PATH .. "/vpslist" if not is_file_nonzero(file_vpslist) then local f_out = io.open(file_vpslist, "w") + local written_domains = {} uci:foreach(appname, "nodes", function(t) local function process_address(address) if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) then + if datatypes.hostname(address) and not written_domains[address] then f_out:write(address .. "\n") + written_domains[address] = true end end process_address(t.address) diff --git a/small/mihomo/files/mihomo.init b/small/mihomo/files/mihomo.init index 1c46452c8f..feeeb4c035 100644 --- a/small/mihomo/files/mihomo.init +++ b/small/mihomo/files/mihomo.init @@ -673,7 +673,7 @@ mixin_nameserver_policy() { } mixin_sniffer_domain_names() { - domain_name="$1" type="$2" yq -M -i '.sniffer.[env(type)] += [env(domain_name)]' "$RUN_PROFILE_PATH" + domain_name="$1" type="$2" yq -M -i '.sniffer.[strenv(type)] += [strenv(domain_name)]' "$RUN_PROFILE_PATH" } mixin_sniffs() { @@ -685,12 +685,12 @@ mixin_sniffs() { if [ "$enabled" == 0 ]; then return fi - protocol="$protocol" overwrite_destination="$overwrite_destination" yq -M -i '.sniffer.sniff.[env(protocol)].override-destination = env(overwrite_destination) == 1' "$RUN_PROFILE_PATH" + protocol="$protocol" overwrite_destination="$overwrite_destination" yq -M -i '.sniffer.sniff.[strenv(protocol)].override-destination = env(overwrite_destination) == 1' "$RUN_PROFILE_PATH" config_list_foreach "$section" "port" mixin_sniff "$protocol" } mixin_sniff() { - port="$1" protocol="$2" yq -M -i '.sniffer.sniff.[env(protocol)].ports += [env(port)]' "$RUN_PROFILE_PATH" + port="$1" protocol="$2" yq -M -i '.sniffer.sniff.[strenv(protocol)].ports += [env(port)]' "$RUN_PROFILE_PATH" } add_bypass_user() { diff --git a/v2rayn/v2rayN/ServiceLib/Handler/AppHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/AppHandler.cs index 087918f9d4..576916d63b 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/AppHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/AppHandler.cs @@ -135,7 +135,7 @@ return await SQLiteHelper.Instance.TableAsync().OrderBy(t => t.Sort).ToListAsync(); } - public async Task GetSubItem(string subid) + public async Task GetSubItem(string? subid) { return await SQLiteHelper.Instance.TableAsync().FirstOrDefaultAsync(t => t.Id == subid); } diff --git a/v2rayn/v2rayN/ServiceLib/Handler/AutoStartupHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/AutoStartupHandler.cs index 881532fcec..e6ac42d3b8 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/AutoStartupHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/AutoStartupHandler.cs @@ -45,6 +45,8 @@ namespace ServiceLib.Handler { AutoStartTaskService(autoRunName, "", ""); } + + await Task.CompletedTask; } private static async Task SetTaskWindows() @@ -66,6 +68,7 @@ namespace ServiceLib.Handler { Logging.SaveLog(_tag, ex); } + await Task.CompletedTask; } /// @@ -127,6 +130,7 @@ namespace ServiceLib.Handler { Logging.SaveLog(_tag, ex); } + await Task.CompletedTask; } private static async Task SetTaskLinux() diff --git a/v2rayn/v2rayN/ServiceLib/Handler/ConfigHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/ConfigHandler.cs index 55d9d27317..5142f37ce3 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/ConfigHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/ConfigHandler.cs @@ -94,10 +94,7 @@ namespace ServiceLib.Handler EnableTun = false, Mtu = 9000, }; - config.GuiItem ??= new() - { - EnableStatistics = false, - }; + config.GuiItem ??= new(); config.MsgUIItem ??= new(); config.UiItem ??= new UIItem() @@ -162,7 +159,7 @@ namespace ServiceLib.Handler Length = "100-200", Interval = "10-20" }; - + if (config.SystemProxyItem.SystemProxyExceptions.IsNullOrEmpty()) { config.SystemProxyItem.SystemProxyExceptions = Utils.IsWindows() ? Global.SystemProxyExceptionsWindows : Global.SystemProxyExceptionsLinux; @@ -472,7 +469,7 @@ namespace ServiceLib.Handler } ProfileExHandler.Instance.SetSort(lstProfile[index].IndexId, sort); - return 0; + return await Task.FromResult(0); } /// @@ -1050,7 +1047,7 @@ namespace ServiceLib.Handler Port = node.PreSocksPort.Value, }; } - + await Task.CompletedTask; return itemSocks; } @@ -1620,7 +1617,7 @@ namespace ServiceLib.Handler break; } } - return 0; + return await Task.FromResult(0); } public static async Task SetDefaultRouting(Config config, RoutingItem routingItem) diff --git a/v2rayn/v2rayN/ServiceLib/Handler/CoreConfigHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/CoreConfigHandler.cs index e3df88d4d9..8713b8dde5 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/CoreConfigHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/CoreConfigHandler.cs @@ -80,7 +80,7 @@ ret.Msg = string.Format(ResUI.SuccessfulConfiguration, ""); ret.Success = true; - return ret; + return await Task.FromResult(ret); } catch (Exception ex) { diff --git a/v2rayn/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs index 7a947e623f..1fa073f863 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/CoreInfoHandler.cs @@ -52,144 +52,146 @@ private void InitCoreInfo() { - _coreInfo = []; + _coreInfo = + [ + new CoreInfo + { + CoreType = ECoreType.v2rayN, + Url = Global.NUrl, + ReleaseApiUrl = Global.NUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + DownloadUrlWin64 = Global.NUrl + "/download/{0}/v2rayN-windows-64.zip", + DownloadUrlWinArm64 = Global.NUrl + "/download/{0}/v2rayN-windows-arm64.zip", + DownloadUrlLinux64 = Global.NUrl + "/download/{0}/v2rayN-linux-64.zip", + DownloadUrlLinuxArm64 = Global.NUrl + "/download/{0}/v2rayN-linux-arm64.zip", + DownloadUrlOSX64 = Global.NUrl + "/download/{0}/v2rayN-macos-64.zip", + DownloadUrlOSXArm64 = Global.NUrl + "/download/{0}/v2rayN-macos-arm64.zip", + }, - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.v2rayN, - Url = Global.NUrl, - ReleaseApiUrl = Global.NUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - DownloadUrlWin64 = Global.NUrl + "/download/{0}/v2rayN-windows-64.zip", - DownloadUrlWinArm64 = Global.NUrl + "/download/{0}/v2rayN-windows-arm64.zip", - DownloadUrlLinux64 = Global.NUrl + "/download/{0}/v2rayN-linux-64.zip", - DownloadUrlLinuxArm64 = Global.NUrl + "/download/{0}/v2rayN-linux-arm64.zip", - DownloadUrlOSX64 = Global.NUrl + "/download/{0}/v2rayN-macos-64.zip", - DownloadUrlOSXArm64 = Global.NUrl + "/download/{0}/v2rayN-macos-arm64.zip", - }); + new CoreInfo + { + CoreType = ECoreType.v2fly, + CoreExes = ["wv2ray", "v2ray"], + Arguments = "", + Url = Global.V2flyCoreUrl, + ReleaseApiUrl = Global.V2flyCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + Match = "V2Ray", + VersionArg = "-version", + RedirectInfo = true, + }, - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.v2fly, - CoreExes = new List { "wv2ray", "v2ray" }, - Arguments = "", - Url = Global.V2flyCoreUrl, - ReleaseApiUrl = Global.V2flyCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - Match = "V2Ray", - VersionArg = "-version", - RedirectInfo = true, - }); + new CoreInfo + { + CoreType = ECoreType.v2fly_v5, + CoreExes = ["v2ray"], + Arguments = "run -c config.json -format jsonv5", + Url = Global.V2flyCoreUrl, + ReleaseApiUrl = Global.V2flyCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + Match = "V2Ray", + VersionArg = "version", + RedirectInfo = true, + }, - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.v2fly_v5, - CoreExes = new List { "v2ray" }, - Arguments = "run -c config.json -format jsonv5", - Url = Global.V2flyCoreUrl, - ReleaseApiUrl = Global.V2flyCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - Match = "V2Ray", - VersionArg = "version", - RedirectInfo = true, - }); + new CoreInfo + { + CoreType = ECoreType.Xray, + CoreExes = ["xray", "wxray"], + Arguments = "run -c {0}", + Url = Global.XrayCoreUrl, + ReleaseApiUrl = Global.XrayCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + DownloadUrlWin64 = Global.XrayCoreUrl + "/download/{0}/Xray-windows-64.zip", + DownloadUrlWinArm64 = Global.XrayCoreUrl + "/download/{0}/Xray-windows-arm64-v8a.zip", + DownloadUrlLinux64 = Global.XrayCoreUrl + "/download/{0}/Xray-linux-64.zip", + DownloadUrlLinuxArm64 = Global.XrayCoreUrl + "/download/{0}/Xray-linux-arm64-v8a.zip", + DownloadUrlOSX64 = Global.XrayCoreUrl + "/download/{0}/Xray-macos-64.zip", + DownloadUrlOSXArm64 = Global.XrayCoreUrl + "/download/{0}/Xray-macos-arm64-v8a.zip", + Match = "Xray", + VersionArg = "-version", + RedirectInfo = true, + }, - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.Xray, - CoreExes = new List { "xray", "wxray" }, - Arguments = "run -c {0}", - Url = Global.XrayCoreUrl, - ReleaseApiUrl = Global.XrayCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - DownloadUrlWin64 = Global.XrayCoreUrl + "/download/{0}/Xray-windows-64.zip", - DownloadUrlWinArm64 = Global.XrayCoreUrl + "/download/{0}/Xray-windows-arm64-v8a.zip", - DownloadUrlLinux64 = Global.XrayCoreUrl + "/download/{0}/Xray-linux-64.zip", - DownloadUrlLinuxArm64 = Global.XrayCoreUrl + "/download/{0}/Xray-linux-arm64-v8a.zip", - DownloadUrlOSX64 = Global.XrayCoreUrl + "/download/{0}/Xray-macos-64.zip", - DownloadUrlOSXArm64 = Global.XrayCoreUrl + "/download/{0}/Xray-macos-arm64-v8a.zip", - Match = "Xray", - VersionArg = "-version", - RedirectInfo = true, - }); + new CoreInfo + { + CoreType = ECoreType.mihomo, + CoreExes = ["mihomo-windows-amd64-compatible", "mihomo-windows-amd64", "mihomo-linux-amd64", "mihomo", "clash"], + Arguments = "-f config.json" + PortableMode(), + Url = Global.MihomoCoreUrl, + ReleaseApiUrl = Global.MihomoCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + DownloadUrlWin64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-windows-amd64-compatible-{0}.zip", + DownloadUrlWinArm64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-windows-arm64-{0}.zip", + DownloadUrlLinux64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-linux-amd64-compatible-{0}.gz", + DownloadUrlLinuxArm64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-linux-arm64-{0}.gz", + DownloadUrlOSX64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-darwin-amd64-compatible-{0}.gz", + DownloadUrlOSXArm64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-darwin-arm64-{0}.gz", + Match = "Mihomo", + VersionArg = "-v", + RedirectInfo = true, + }, - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.mihomo, - CoreExes = new List { "mihomo-windows-amd64-compatible", "mihomo-windows-amd64", "mihomo-linux-amd64", "mihomo", "clash" }, - Arguments = "-f config.json" + PortableMode(), - Url = Global.MihomoCoreUrl, - ReleaseApiUrl = Global.MihomoCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - DownloadUrlWin64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-windows-amd64-compatible-{0}.zip", - DownloadUrlWinArm64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-windows-arm64-{0}.zip", - DownloadUrlLinux64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-linux-amd64-compatible-{0}.gz", - DownloadUrlLinuxArm64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-linux-arm64-{0}.gz", - DownloadUrlOSX64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-darwin-amd64-compatible-{0}.gz", - DownloadUrlOSXArm64 = Global.MihomoCoreUrl + "/download/{0}/mihomo-darwin-arm64-{0}.gz", - Match = "Mihomo", - VersionArg = "-v", - RedirectInfo = true, - }); + new CoreInfo + { + CoreType = ECoreType.hysteria, + CoreExes = ["hysteria-windows-amd64", "hysteria"], + Arguments = "", + Url = Global.HysteriaCoreUrl, + ReleaseApiUrl = Global.HysteriaCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + RedirectInfo = true, + }, - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.hysteria, - CoreExes = new List { "hysteria-windows-amd64", "hysteria" }, - Arguments = "", - Url = Global.HysteriaCoreUrl, - ReleaseApiUrl = Global.HysteriaCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - RedirectInfo = true, - }); + new CoreInfo + { + CoreType = ECoreType.naiveproxy, + CoreExes = ["naiveproxy", "naive"], + Arguments = "config.json", + Url = Global.NaiveproxyCoreUrl, + RedirectInfo = false, + }, - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.naiveproxy, - CoreExes = new List { "naiveproxy", "naive" }, - Arguments = "config.json", - Url = Global.NaiveproxyCoreUrl, - RedirectInfo = false, - }); + new CoreInfo + { + CoreType = ECoreType.tuic, + CoreExes = ["tuic-client", "tuic"], + Arguments = "-c config.json", + Url = Global.TuicCoreUrl, + RedirectInfo = true, + }, - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.tuic, - CoreExes = new List { "tuic-client", "tuic" }, - Arguments = "-c config.json", - Url = Global.TuicCoreUrl, - RedirectInfo = true, - }); + new CoreInfo + { + CoreType = ECoreType.sing_box, + CoreExes = ["sing-box-client", "sing-box"], + Arguments = "run -c {0} --disable-color", + Url = Global.SingboxCoreUrl, + RedirectInfo = true, + ReleaseApiUrl = Global.SingboxCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + DownloadUrlWin64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-windows-amd64.zip", + DownloadUrlWinArm64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-windows-arm64.zip", + DownloadUrlLinux64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-linux-amd64.tar.gz", + DownloadUrlLinuxArm64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-linux-arm64.tar.gz", + DownloadUrlOSX64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-darwin-amd64.tar.gz", + DownloadUrlOSXArm64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-darwin-arm64.tar.gz", + Match = "sing-box", + VersionArg = "version", + }, - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.sing_box, - CoreExes = new List { "sing-box-client", "sing-box" }, - Arguments = "run -c {0} --disable-color", - Url = Global.SingboxCoreUrl, - RedirectInfo = true, - ReleaseApiUrl = Global.SingboxCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - DownloadUrlWin64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-windows-amd64.zip", - DownloadUrlWinArm64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-windows-arm64.zip", - DownloadUrlLinux64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-linux-amd64.tar.gz", - DownloadUrlLinuxArm64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-linux-arm64.tar.gz", - DownloadUrlOSX64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-darwin-amd64.tar.gz", - DownloadUrlOSXArm64 = Global.SingboxCoreUrl + "/download/{0}/sing-box-{1}-darwin-arm64.tar.gz", - Match = "sing-box", - VersionArg = "version", - }); + new CoreInfo + { + CoreType = ECoreType.juicity, + CoreExes = ["juicity-client", "juicity"], + Arguments = "run -c config.json", + Url = Global.JuicityCoreUrl + }, - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.juicity, - CoreExes = new List { "juicity-client", "juicity" }, - Arguments = "run -c config.json", - Url = Global.JuicityCoreUrl - }); + new CoreInfo + { + CoreType = ECoreType.hysteria2, + CoreExes = ["hysteria-windows-amd64", "hysteria-linux-amd64", "hysteria"], + Arguments = "", + Url = Global.HysteriaCoreUrl, + ReleaseApiUrl = Global.HysteriaCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), + RedirectInfo = true, + } - _coreInfo.Add(new CoreInfo - { - CoreType = ECoreType.hysteria2, - CoreExes = new List { "hysteria-windows-amd64", "hysteria-linux-amd64", "hysteria" }, - Arguments = "", - Url = Global.HysteriaCoreUrl, - ReleaseApiUrl = Global.HysteriaCoreUrl.Replace(Global.GithubUrl, Global.GithubApiUrl), - RedirectInfo = true, - }); + ]; } private string PortableMode() diff --git a/v2rayn/v2rayN/ServiceLib/Handler/ProfileExHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/ProfileExHandler.cs index b630171fb0..e7e2fef5e9 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/ProfileExHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/ProfileExHandler.cs @@ -20,7 +20,7 @@ namespace ServiceLib.Handler public async Task Init() { await InitData(); - Task.Run(async () => + _ = Task.Run(async () => { while (true) { @@ -32,7 +32,7 @@ namespace ServiceLib.Handler public async Task> GetProfileExs() { - return _lstProfileEx; + return await Task.FromResult(_lstProfileEx); } private async Task InitData() diff --git a/v2rayn/v2rayN/ServiceLib/Handler/StatisticsHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/StatisticsHandler.cs index 1734003988..8b900b0abe 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/StatisticsHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/StatisticsHandler.cs @@ -19,15 +19,13 @@ { _config = config; _updateFunc = updateFunc; - if (!config.GuiItem.EnableStatistics) + if (config.GuiItem.EnableStatistics || _config.GuiItem.DisplayRealTimeSpeed) { - return; + await InitData(); + + _statisticsXray = new StatisticsXrayService(config, UpdateServerStatHandler); + _statisticsSingbox = new StatisticsSingboxService(config, UpdateServerStatHandler); } - - await InitData(); - - _statisticsXray = new StatisticsXrayService(config, UpdateServerStatHandler); - _statisticsSingbox = new StatisticsSingboxService(config, UpdateServerStatHandler); } public void Close() @@ -72,7 +70,7 @@ return; } - if(indexId == toIndexId) + if (indexId == toIndexId) { return; } @@ -101,7 +99,7 @@ private void UpdateServerStatHandler(ServerSpeedItem server) { - UpdateServerStat(server); + _ = UpdateServerStat(server); } private async Task UpdateServerStat(ServerSpeedItem server) diff --git a/v2rayn/v2rayN/ServiceLib/Models/ClashConnections.cs b/v2rayn/v2rayN/ServiceLib/Models/ClashConnections.cs index f6510ad616..1db83786ed 100644 --- a/v2rayn/v2rayN/ServiceLib/Models/ClashConnections.cs +++ b/v2rayn/v2rayN/ServiceLib/Models/ClashConnections.cs @@ -29,7 +29,7 @@ public string? destinationPort { get; set; } public string? host { get; set; } public string? nsMode { get; set; } - public object uid { get; set; } + public object? uid { get; set; } public string? process { get; set; } public string? processPath { get; set; } public string? remoteDestination { get; set; } diff --git a/v2rayn/v2rayN/ServiceLib/Models/ConfigItems.cs b/v2rayn/v2rayN/ServiceLib/Models/ConfigItems.cs index dda1f77087..05d08c3d9a 100644 --- a/v2rayn/v2rayN/ServiceLib/Models/ConfigItems.cs +++ b/v2rayn/v2rayN/ServiceLib/Models/ConfigItems.cs @@ -67,21 +67,13 @@ public class GUIItem { public bool AutoRun { get; set; } - public bool EnableStatistics { get; set; } - + public bool DisplayRealTimeSpeed { get; set; } public bool KeepOlderDedupl { get; set; } - - public bool IgnoreGeoUpdateCore { get; set; } = true; - public int AutoUpdateInterval { get; set; } - public bool EnableSecurityProtocolTls13 { get; set; } - public int TrayMenuServersLimit { get; set; } = 20; - public bool EnableHWA { get; set; } = false; - public bool EnableLog { get; set; } = true; } diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs index a7d57db9b9..2d6d8a4dd6 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs @@ -2914,6 +2914,15 @@ namespace ServiceLib.Resx { } } + /// + /// 查找类似 Display real-time speed 的本地化字符串。 + /// + public static string TbSettingsDisplayRealTimeSpeed { + get { + return ResourceManager.GetString("TbSettingsDisplayRealTimeSpeed", resourceCulture); + } + } + /// /// 查找类似 Outbound DNS address 的本地化字符串。 /// @@ -3112,15 +3121,6 @@ namespace ServiceLib.Resx { } } - /// - /// 查找类似 Ignore Geo files when updating core 的本地化字符串。 - /// - public static string TbSettingsIgnoreGeoUpdateCore { - get { - return ResourceManager.GetString("TbSettingsIgnoreGeoUpdateCore", resourceCulture); - } - } - /// /// 查找类似 Keep older when deduplication 的本地化字符串。 /// @@ -3401,7 +3401,7 @@ namespace ServiceLib.Resx { } /// - /// 查找类似 Enable Statistics (Require restart) 的本地化字符串。 + /// 查找类似 Enable traffic statistics (Require restart) 的本地化字符串。 /// public static string TbSettingsStatistics { get { diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx index 02970de476..79a130b996 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx @@ -718,8 +718,8 @@ پورت Http - - هنگام به‌روزرسانی هسته، فایل‌های Geo را نادیده بگیرید + + Display real-time speed هنگام کپی برداری، نگه داری قدیمی تر ها @@ -1393,4 +1393,4 @@ کپی کردن دستور پروکسی در کلیپ بورد - + \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.hu.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.hu.resx index f332718a59..dc69d9a56c 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.hu.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.hu.resx @@ -718,8 +718,8 @@ HTTP Port - - Geo fájlok figyelmen kívül hagyása a yalap frissítésekor + + Display real-time speed Régi megőrzése a deduplikáció során diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx index fb3ebdb91f..1ba12c74c3 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx @@ -718,8 +718,8 @@ HTTP Port - - Ignore Geo files when updating core + + Display real-time speed (Require restart) Keep older when deduplication @@ -755,7 +755,7 @@ Start on boot - Enable Statistics (Require restart) + Enable traffic statistics (Require restart) Subscription conversion URL diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.ru.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.ru.resx index 53532b8a92..190b9fedeb 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.ru.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.ru.resx @@ -724,8 +724,8 @@ HTTP порт - - Игнорировать файлы Geo при обновлении ядра + + Display real-time speed Сохранить старые при удалении дублей diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx index 0aa7a08c2c..0d62bc6ecf 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx @@ -718,8 +718,8 @@ 本地http监听端口 - - 更新Core时忽略Geo文件 + + 显示实时速度(需重启) 去重时保留序号较小的项 @@ -755,7 +755,7 @@ 开机启动(可能会不成功) - 启用统计(实时网速显示,需重启) + 启用流量统计(需重启) 订阅转换网址(可选) diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx index c1818cce5b..12f0887c48 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx @@ -719,8 +719,8 @@ 本機HTTP偵聽埠 - - 更新Core時忽略Geo檔案 + + 顯示即時速度(需重啟) 去重時保留序號較小的項 @@ -756,7 +756,7 @@ 開機啟動(可能會不成功) - 啟用統計(即時網速顯示,需重啟) + 啟用流量統計(需重啟) 訂閱轉換網址(可選) diff --git a/v2rayn/v2rayN/ServiceLib/Sample/dns_singbox_normal b/v2rayn/v2rayN/ServiceLib/Sample/dns_singbox_normal index 2ec0b4ba00..605b7d597b 100644 --- a/v2rayn/v2rayN/ServiceLib/Sample/dns_singbox_normal +++ b/v2rayn/v2rayN/ServiceLib/Sample/dns_singbox_normal @@ -2,7 +2,7 @@ "servers": [ { "tag": "remote", - "address": "8.8.8.8", + "address": "tcp://8.8.8.8", "strategy": "prefer_ipv4", "detour": "proxy" }, @@ -32,4 +32,4 @@ } ], "final": "remote" -} \ No newline at end of file +} diff --git a/v2rayn/v2rayN/ServiceLib/Sample/tun_singbox_dns b/v2rayn/v2rayN/ServiceLib/Sample/tun_singbox_dns index 7003f91f1b..bc5b8c8efa 100644 --- a/v2rayn/v2rayN/ServiceLib/Sample/tun_singbox_dns +++ b/v2rayn/v2rayN/ServiceLib/Sample/tun_singbox_dns @@ -2,7 +2,7 @@ "servers": [ { "tag": "remote", - "address": "8.8.8.8", + "address": "tcp://8.8.8.8", "strategy": "prefer_ipv4", "detour": "proxy" }, @@ -33,4 +33,4 @@ } ], "final": "remote" -} \ No newline at end of file +} diff --git a/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj b/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj index ece63e72c4..e16f1ed8de 100644 --- a/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj +++ b/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 7.6.1 + 7.6.2 diff --git a/v2rayn/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs b/v2rayn/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs index 26708d799b..ec1ee78971 100644 --- a/v2rayn/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs +++ b/v2rayn/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs @@ -476,7 +476,7 @@ namespace ServiceLib.Services.CoreConfig { Logging.SaveLog(_tag, ex); } - return 0; + return await Task.FromResult(0); } private async Task GenInbounds(SingboxConfig singboxConfig) @@ -721,7 +721,7 @@ namespace ServiceLib.Services.CoreConfig { Logging.SaveLog(_tag, ex); } - return 0; + return await Task.FromResult(0); } private async Task GenOutboundTls(ProfileItem node, Outbound4Sbox outbound) @@ -771,7 +771,7 @@ namespace ServiceLib.Services.CoreConfig { Logging.SaveLog(_tag, ex); } - return 0; + return await Task.FromResult(0); } private async Task GenOutboundTransport(ProfileItem node, Outbound4Sbox outbound) @@ -848,7 +848,7 @@ namespace ServiceLib.Services.CoreConfig { Logging.SaveLog(_tag, ex); } - return 0; + return await Task.FromResult(0); } private async Task GenMoreOutbounds(ProfileItem node, SingboxConfig singboxConfig) @@ -1088,7 +1088,7 @@ namespace ServiceLib.Services.CoreConfig { Logging.SaveLog(_tag, ex); } - return 0; + return await Task.FromResult(0); } private bool ParseV2Domain(string domain, Rule4Sbox rule) @@ -1240,7 +1240,7 @@ namespace ServiceLib.Services.CoreConfig } singboxConfig.dns = dns4Sbox; - return 0; + return await Task.FromResult(0); } private async Task GenExperimental(SingboxConfig singboxConfig) @@ -1264,7 +1264,7 @@ namespace ServiceLib.Services.CoreConfig }; } - return 0; + return await Task.FromResult(0); } private async Task ConvertGeo2Ruleset(SingboxConfig singboxConfig) diff --git a/v2rayn/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs b/v2rayn/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs index 7a139a6550..998002cf49 100644 --- a/v2rayn/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs +++ b/v2rayn/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs @@ -379,7 +379,7 @@ namespace ServiceLib.Services.CoreConfig { Logging.SaveLog(_tag, ex); } - return 0; + return await Task.FromResult(0); } private async Task GenInbounds(V2rayConfig v2rayConfig) @@ -423,7 +423,7 @@ namespace ServiceLib.Services.CoreConfig { Logging.SaveLog(_tag, ex); } - return 0; + return await Task.FromResult(0); } private Inbounds4Ray GetInbound(InItem inItem, EInboundProtocol protocol, bool bSocks) @@ -560,7 +560,7 @@ namespace ServiceLib.Services.CoreConfig { Logging.SaveLog(_tag, ex); } - return 0; + return await Task.FromResult(0); } private async Task GenOutbound(ProfileItem node, Outbounds4Ray outbound) @@ -774,7 +774,7 @@ namespace ServiceLib.Services.CoreConfig { Logging.SaveLog(_tag, ex); } - return 0; + return await Task.FromResult(0); } private async Task GenBoundStreamSettings(ProfileItem node, Outbounds4Ray outbound) @@ -1103,12 +1103,12 @@ namespace ServiceLib.Services.CoreConfig servers.AsArray().Add(JsonUtils.SerializeToNode(dnsServer)); } } - return 0; + return await Task.FromResult(0); } private async Task GenStatistic(V2rayConfig v2rayConfig) { - if (_config.GuiItem.EnableStatistics) + if (_config.GuiItem.EnableStatistics || _config.GuiItem.DisplayRealTimeSpeed) { string tag = EInboundProtocol.api.ToString(); Metrics4Ray apiObj = new(); @@ -1150,7 +1150,7 @@ namespace ServiceLib.Services.CoreConfig v2rayConfig.routing.rules.Add(apiRoutingRule); } } - return 0; + return await Task.FromResult(0); } private async Task GenMoreOutbounds(ProfileItem node, V2rayConfig v2rayConfig) diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/AddServer2ViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/AddServer2ViewModel.cs index df84eef734..50accd468e 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/AddServer2ViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/AddServer2ViewModel.cs @@ -25,6 +25,7 @@ namespace ServiceLib.ViewModels BrowseServerCmd = ReactiveCommand.CreateFromTask(async () => { _updateView?.Invoke(EViewAction.BrowseServer, null); + await Task.CompletedTask; }); EditServerCmd = ReactiveCommand.CreateFromTask(async () => { @@ -109,6 +110,7 @@ namespace ServiceLib.ViewModels { NoticeHandler.Instance.Enqueue(ResUI.FailedReadConfiguration); } + await Task.CompletedTask; } } } \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/BackupAndRestoreViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/BackupAndRestoreViewModel.cs index b359f5c1a5..faa32ab0ae 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/BackupAndRestoreViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/BackupAndRestoreViewModel.cs @@ -176,7 +176,7 @@ namespace ServiceLib.ViewModels FileManager.CopyDirectory(configDir, configDirTemp, false, "cache.db"); var ret = FileManager.CreateFromDirectory(configDirZipTemp, fileName); Directory.Delete(configDirZipTemp, true); - return ret; + return await Task.FromResult(ret); } } } \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs index f4e31c0996..d8483f8a4e 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs @@ -259,7 +259,7 @@ namespace ServiceLib.ViewModels } else { - FileManager.ZipExtractToFile(fileName, toPath, _config.GuiItem.IgnoreGeoUpdateCore ? "geo" : ""); + FileManager.ZipExtractToFile(fileName, toPath, "geo"); } if (Utils.IsNonWindows()) diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/ClashConnectionsViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/ClashConnectionsViewModel.cs index f9b8cbdad6..cb73ca3126 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/ClashConnectionsViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/ClashConnectionsViewModel.cs @@ -48,7 +48,7 @@ namespace ServiceLib.ViewModels await ClashConnectionClose(true); }); - Init(); + _ = Init(); } private async Task Init() @@ -73,6 +73,7 @@ namespace ServiceLib.ViewModels Task.Delay(1000).Wait(); } }); + await Task.CompletedTask; } private async Task GetClashConnections() diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs index 3d1c82faa6..254d9f48a9 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs @@ -90,13 +90,13 @@ namespace ServiceLib.ViewModels y => y == true) .Subscribe(c => { _config.ClashUIItem.ProxiesAutoRefresh = AutoRefresh; }); - Init(); + _ = Init(); } private async Task Init() { await ProxiesReload(); - DelayTestTask(); + _ = DelayTestTask(); } private async Task DoRulemodeSelected(bool c) @@ -265,7 +265,7 @@ namespace ServiceLib.ViewModels return; } - _proxies.TryGetValue(name, out ProxiesItem proxy); + _proxies.TryGetValue(name, out var proxy); if (proxy == null || proxy.all == null) { return; @@ -316,7 +316,7 @@ namespace ServiceLib.ViewModels { if (_proxies is null) return null; - _proxies.TryGetValue(name, out ProxiesItem proxy2); + _proxies.TryGetValue(name, out var proxy2); if (proxy2 != null) { return proxy2; @@ -399,6 +399,7 @@ namespace ServiceLib.ViewModels _updateView?.Invoke(EViewAction.DispatcherProxiesDelayTest, new SpeedTestResult() { IndexId = item.Name, Delay = result }); }); + await Task.CompletedTask; } public void ProxiesDelayTestResult(SpeedTestResult result) @@ -434,7 +435,7 @@ namespace ServiceLib.ViewModels public async Task DelayTestTask() { var lastTime = DateTime.Now; - Task.Run(async () => + _ = Task.Run(async () => { while (true) { @@ -457,6 +458,7 @@ namespace ServiceLib.ViewModels lastTime = dtNow; } }); + await Task.CompletedTask; } #endregion task diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/DNSSettingViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/DNSSettingViewModel.cs index 703ee49b35..842a853db2 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/DNSSettingViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/DNSSettingViewModel.cs @@ -32,15 +32,17 @@ namespace ServiceLib.ViewModels ImportDefConfig4V2rayCmd = ReactiveCommand.CreateFromTask(async () => { normalDNS = Utils.GetEmbedText(Global.DNSV2rayNormalFileName); + await Task.CompletedTask; }); ImportDefConfig4SingboxCmd = ReactiveCommand.CreateFromTask(async () => { normalDNS2 = Utils.GetEmbedText(Global.DNSSingboxNormalFileName); tunDNS2 = Utils.GetEmbedText(Global.TunSingboxDNSFileName); + await Task.CompletedTask; }); - Init(); + _ = Init(); } private async Task Init() diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs index d65a516fd6..8f60b5b189 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs @@ -206,7 +206,7 @@ namespace ServiceLib.ViewModels #endregion WhenAnyValue && ReactiveCommand - Init(); + _ = Init(); } private async Task Init() @@ -219,7 +219,7 @@ namespace ServiceLib.ViewModels await CoreHandler.Instance.Init(_config, UpdateHandler); TaskHandler.Instance.RegUpdateTask(_config, UpdateTaskHandler); - if (_config.GuiItem.EnableStatistics) + if (_config.GuiItem.EnableStatistics || _config.GuiItem.DisplayRealTimeSpeed) { await StatisticsHandler.Instance.Init(_config, UpdateStatisticsHandler); } @@ -252,7 +252,7 @@ namespace ServiceLib.ViewModels RefreshServers(); if (indexIdOld != _config.IndexId) { - Reload(); + _ = Reload(); } if (_config.UiItem.EnableAutoAdjustMainLvColWidth) { @@ -272,16 +272,13 @@ namespace ServiceLib.ViewModels public void SetStatisticsResult(ServerSpeedItem update) { - try + if (_config.GuiItem.DisplayRealTimeSpeed) { Locator.Current.GetService()?.UpdateStatistics(update); - if ((update.ProxyUp + update.ProxyDown) > 0 && DateTime.Now.Second % 9 == 0) - { - Locator.Current.GetService()?.UpdateStatistics(update); - } } - catch + if (_config.GuiItem.EnableStatistics && (update.ProxyUp + update.ProxyDown) > 0 && DateTime.Now.Second % 9 == 0) { + Locator.Current.GetService()?.UpdateStatistics(update); } } @@ -406,6 +403,7 @@ namespace ServiceLib.ViewModels public async Task AddServerViaScanAsync() { _updateView?.Invoke(EViewAction.ScanScreenTask, null); + await Task.CompletedTask; } public async Task ScanScreenResult(byte[]? bytes) @@ -417,6 +415,7 @@ namespace ServiceLib.ViewModels public async Task AddServerViaImageAsync() { _updateView?.Invoke(EViewAction.ScanImageTask, null); + await Task.CompletedTask; } public async Task ScanImageResult(string fileName) @@ -530,6 +529,7 @@ namespace ServiceLib.ViewModels { ProcUtils.ProcessStart("open", path); } + await Task.CompletedTask; } #endregion Setting @@ -548,8 +548,8 @@ namespace ServiceLib.ViewModels BlReloadEnabled = false; await LoadCore(); - Locator.Current.GetService()?.TestServerAvailability(); await SysProxyHandler.UpdateSysProxy(_config, false); + Locator.Current.GetService()?.TestServerAvailability(); _updateView?.Invoke(EViewAction.DispatcherReload, null); @@ -591,6 +591,7 @@ namespace ServiceLib.ViewModels { ShowHideWindow(false); } + await Task.CompletedTask; } #endregion core job diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/MsgViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/MsgViewModel.cs index f2ec4bb848..54eb6edeaf 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/MsgViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/MsgViewModel.cs @@ -105,6 +105,7 @@ namespace ServiceLib.ViewModels { _queueMsg.Enqueue(Environment.NewLine); } + await Task.CompletedTask; } public void ClearMsg() diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/OptionSettingViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/OptionSettingViewModel.cs index 68ce870c3f..955adcbe9b 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/OptionSettingViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/OptionSettingViewModel.cs @@ -49,7 +49,7 @@ namespace ServiceLib.ViewModels [Reactive] public bool AutoRun { get; set; } [Reactive] public bool EnableStatistics { get; set; } [Reactive] public bool KeepOlderDedupl { get; set; } - [Reactive] public bool IgnoreGeoUpdateCore { get; set; } + [Reactive] public bool DisplayRealTimeSpeed { get; set; } [Reactive] public bool EnableAutoAdjustMainLvColWidth { get; set; } [Reactive] public bool EnableUpdateSubOnlyRemarksExist { get; set; } [Reactive] public bool EnableSecurityProtocolTls13 { get; set; } @@ -115,7 +115,7 @@ namespace ServiceLib.ViewModels await SaveSettingAsync(); }); - Init(); + _ = Init(); } private async Task Init() @@ -164,8 +164,8 @@ namespace ServiceLib.ViewModels AutoRun = _config.GuiItem.AutoRun; EnableStatistics = _config.GuiItem.EnableStatistics; + DisplayRealTimeSpeed = _config.GuiItem.DisplayRealTimeSpeed; KeepOlderDedupl = _config.GuiItem.KeepOlderDedupl; - IgnoreGeoUpdateCore = _config.GuiItem.IgnoreGeoUpdateCore; EnableAutoAdjustMainLvColWidth = _config.UiItem.EnableAutoAdjustMainLvColWidth; EnableUpdateSubOnlyRemarksExist = _config.UiItem.EnableUpdateSubOnlyRemarksExist; EnableSecurityProtocolTls13 = _config.GuiItem.EnableSecurityProtocolTls13; @@ -261,6 +261,7 @@ namespace ServiceLib.ViewModels break; } }); + await Task.CompletedTask; } private async Task SaveSettingAsync() @@ -272,6 +273,7 @@ namespace ServiceLib.ViewModels return; } var needReboot = (EnableStatistics != _config.GuiItem.EnableStatistics + || DisplayRealTimeSpeed != _config.GuiItem.DisplayRealTimeSpeed || EnableDragDropSort != _config.UiItem.EnableDragDropSort || EnableHWA != _config.GuiItem.EnableHWA || CurrentFontFamily != _config.UiItem.CurrentFontFamily @@ -317,8 +319,8 @@ namespace ServiceLib.ViewModels _config.GuiItem.AutoRun = AutoRun; _config.GuiItem.EnableStatistics = EnableStatistics; + _config.GuiItem.DisplayRealTimeSpeed = DisplayRealTimeSpeed; _config.GuiItem.KeepOlderDedupl = KeepOlderDedupl; - _config.GuiItem.IgnoreGeoUpdateCore = IgnoreGeoUpdateCore; _config.UiItem.EnableAutoAdjustMainLvColWidth = EnableAutoAdjustMainLvColWidth; _config.UiItem.EnableUpdateSubOnlyRemarksExist = EnableUpdateSubOnlyRemarksExist; _config.GuiItem.EnableSecurityProtocolTls13 = EnableSecurityProtocolTls13; @@ -410,6 +412,7 @@ namespace ServiceLib.ViewModels } item.CoreType = (ECoreType)Enum.Parse(typeof(ECoreType), type); } + await Task.CompletedTask; } } } \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/ProfilesViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/ProfilesViewModel.cs index 56efea5695..7c8b2d8228 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/ProfilesViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/ProfilesViewModel.cs @@ -231,7 +231,7 @@ namespace ServiceLib.ViewModels MessageBus.Current.Listen(EMsgCommand.RefreshProfiles.ToString()).Subscribe(OnNext); } - Init(); + _ = Init(); } private async Task Init() diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingRuleSettingViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingRuleSettingViewModel.cs index 54bc404960..1dd23893f2 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingRuleSettingViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingRuleSettingViewModel.cs @@ -257,7 +257,7 @@ namespace ServiceLib.ViewModels return; } - string result = Utils.LoadResource(fileName); + var result = Utils.LoadResource(fileName); if (Utils.IsNullOrEmpty(result)) { return; diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingSettingViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingSettingViewModel.cs index f06b414d4d..111d249cb8 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingSettingViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingSettingViewModel.cs @@ -67,7 +67,7 @@ namespace ServiceLib.ViewModels await SaveRoutingAsync(); }); - Init(); + _ = Init(); } private async Task Init() diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs index 4326808aa8..99cf95f2b3 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs @@ -137,6 +137,7 @@ namespace ServiceLib.ViewModels NotifyLeftClickCmd = ReactiveCommand.CreateFromTask(async () => { Locator.Current.GetService()?.ShowHideWindow(null); + await Task.CompletedTask; }); AddServerViaClipboardCmd = ReactiveCommand.CreateFromTask(async () => @@ -180,7 +181,7 @@ namespace ServiceLib.ViewModels { InitUpdateView(updateView); } - Init(); + _ = Init(); } private async Task Init() @@ -423,10 +424,12 @@ namespace ServiceLib.ViewModels Locator.Current.GetService()?.RebootAsAdmin(); return; } - //else if (Utils.IsLinux()) - //{ - // NoticeHandler.Instance.SendMessageAndEnqueue(ResUI.TbSettingsLinuxSudoPasswordIsEmpty); - //} + else if (Utils.IsOSX()) + { + _config.TunModeItem.EnableTun = false; + NoticeHandler.Instance.SendMessageAndEnqueue(ResUI.TbSettingsLinuxSudoPasswordIsEmpty); + return; + } } await ConfigHandler.SaveConfig(_config); Locator.Current.GetService()?.Reload(); @@ -476,12 +479,19 @@ namespace ServiceLib.ViewModels { InboundLanDisplay = $"{ResUI.LabLAN}:{Global.None}"; } + await Task.CompletedTask; } public void UpdateStatistics(ServerSpeedItem update) { - SpeedProxyDisplay = string.Format(ResUI.SpeedDisplayText, Global.ProxyTag, Utils.HumanFy(update.ProxyUp), Utils.HumanFy(update.ProxyDown)); - SpeedDirectDisplay = string.Format(ResUI.SpeedDisplayText, Global.DirectTag, Utils.HumanFy(update.DirectUp), Utils.HumanFy(update.DirectDown)); + try + { + SpeedProxyDisplay = string.Format(ResUI.SpeedDisplayText, Global.ProxyTag, Utils.HumanFy(update.ProxyUp), Utils.HumanFy(update.ProxyDown)); + SpeedDirectDisplay = string.Format(ResUI.SpeedDisplayText, Global.DirectTag, Utils.HumanFy(update.DirectUp), Utils.HumanFy(update.DirectDown)); + } + catch + { + } } #endregion UI diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/SubSettingViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/SubSettingViewModel.cs index 2e4f04d32f..7b9c11392f 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/SubSettingViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/SubSettingViewModel.cs @@ -48,7 +48,7 @@ namespace ServiceLib.ViewModels await _updateView?.Invoke(EViewAction.ShareSub, SelectedSource?.Url); }, canEditRemove); - Init(); + _ = Init(); } private async Task Init() diff --git a/v2rayn/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml b/v2rayn/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml index ecb22925f6..88c8e2aab0 100644 --- a/v2rayn/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml +++ b/v2rayn/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml @@ -385,9 +385,9 @@ Grid.Column="0" VerticalAlignment="Center" Classes="Margin8" - Text="{x:Static resx:ResUI.TbSettingsKeepOlderDedupl}" /> + Text="{x:Static resx:ResUI.TbSettingsDisplayRealTimeSpeed}" /> + Text="{x:Static resx:ResUI.TbSettingsKeepOlderDedupl}" /> vm.AutoRun, v => v.togAutoRun.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.EnableStatistics, v => v.togEnableStatistics.IsChecked).DisposeWith(disposables); + this.Bind(ViewModel, vm => vm.DisplayRealTimeSpeed, v => v.togDisplayRealTimeSpeed.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.KeepOlderDedupl, v => v.togKeepOlderDedupl.IsChecked).DisposeWith(disposables); - this.Bind(ViewModel, vm => vm.IgnoreGeoUpdateCore, v => v.togIgnoreGeoUpdateCore.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.EnableAutoAdjustMainLvColWidth, v => v.togEnableAutoAdjustMainLvColWidth.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.EnableUpdateSubOnlyRemarksExist, v => v.togEnableUpdateSubOnlyRemarksExist.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.EnableSecurityProtocolTls13, v => v.togEnableSecurityProtocolTls13.IsChecked).DisposeWith(disposables); diff --git a/v2rayn/v2rayN/v2rayN/Views/OptionSettingWindow.xaml b/v2rayn/v2rayN/v2rayN/Views/OptionSettingWindow.xaml index a6f21c5864..606b91d254 100644 --- a/v2rayn/v2rayN/v2rayN/Views/OptionSettingWindow.xaml +++ b/v2rayn/v2rayN/v2rayN/Views/OptionSettingWindow.xaml @@ -601,9 +601,9 @@ Margin="{StaticResource Margin8}" VerticalAlignment="Center" Style="{StaticResource ToolbarTextBlock}" - Text="{x:Static resx:ResUI.TbSettingsKeepOlderDedupl}" /> + Text="{x:Static resx:ResUI.TbSettingsDisplayRealTimeSpeed}" /> + Text="{x:Static resx:ResUI.TbSettingsKeepOlderDedupl}" /> vm.AutoRun, v => v.togAutoRun.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.EnableStatistics, v => v.togEnableStatistics.IsChecked).DisposeWith(disposables); + this.Bind(ViewModel, vm => vm.DisplayRealTimeSpeed, v => v.togDisplayRealTimeSpeed.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.KeepOlderDedupl, v => v.togKeepOlderDedupl.IsChecked).DisposeWith(disposables); - this.Bind(ViewModel, vm => vm.IgnoreGeoUpdateCore, v => v.togIgnoreGeoUpdateCore.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.EnableAutoAdjustMainLvColWidth, v => v.togEnableAutoAdjustMainLvColWidth.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.EnableUpdateSubOnlyRemarksExist, v => v.togEnableUpdateSubOnlyRemarksExist.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.EnableSecurityProtocolTls13, v => v.togEnableSecurityProtocolTls13.IsChecked).DisposeWith(disposables); @@ -248,7 +248,9 @@ namespace v2rayN.Views { Logging.SaveLog("GetFonts", ex); } - return lstFonts.OrderBy(t => t).ToList(); + + var lst = lstFonts.OrderBy(t => t).ToList(); + return await Task.FromResult(lst); } private void ClbdestOverride_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) diff --git a/xray-core/go.mod b/xray-core/go.mod index 68582130d9..876dcd1df3 100644 --- a/xray-core/go.mod +++ b/xray-core/go.mod @@ -27,7 +27,7 @@ require ( golang.org/x/sync v0.10.0 golang.org/x/sys v0.29.0 golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 - google.golang.org/grpc v1.69.2 + google.golang.org/grpc v1.69.4 google.golang.org/protobuf v1.36.2 gvisor.dev/gvisor v0.0.0-20240320123526-dc6abceb7ff0 h12.io/socks v1.0.3 diff --git a/xray-core/go.sum b/xray-core/go.sum index 4df5ecd3c5..6757bba5ac 100644 --- a/xray-core/go.sum +++ b/xray-core/go.sum @@ -143,8 +143,8 @@ golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 h1:/jFs0duh4rdb8uI golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= -google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A= +google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU= google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/youtube-dl/youtube_dl/extractor/youtube.py b/youtube-dl/youtube_dl/extractor/youtube.py index 6171df84a6..f0406b3572 100644 --- a/youtube-dl/youtube_dl/extractor/youtube.py +++ b/youtube-dl/youtube_dl/extractor/youtube.py @@ -31,7 +31,9 @@ from ..utils import ( dict_get, error_to_compat_str, ExtractorError, + filter_dict, float_or_none, + get_first, extract_attributes, get_element_by_attribute, int_or_none, @@ -82,6 +84,34 @@ class YoutubeBaseInfoExtractor(InfoExtractor): _PLAYLIST_ID_RE = r'(?:(?:PL|LL|EC|UU|FL|RD|UL|TL|PU|OLAK5uy_)[0-9A-Za-z-_]{10,}|RDMM)' + _INNERTUBE_CLIENTS = { + # mweb has 'ultralow' formats + # See: https://github.com/yt-dlp/yt-dlp/pull/557 + 'mweb': { + 'INNERTUBE_CONTEXT': { + 'client': { + 'clientName': 'MWEB', + 'clientVersion': '2.20241202.07.00', + # mweb previously did not require PO Token with this UA + 'userAgent': 'Mozilla/5.0 (iPad; CPU OS 16_7_10 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1,gzip(gfe)', + }, + }, + 'INNERTUBE_CONTEXT_CLIENT_NAME': 2, + 'REQUIRE_PO_TOKEN': True, + 'SUPPORTS_COOKIES': True, + }, + 'tv': { + 'INNERTUBE_CONTEXT': { + 'client': { + 'clientName': 'TVHTML5', + 'clientVersion': '7.20241201.18.00', + }, + }, + 'INNERTUBE_CONTEXT_CLIENT_NAME': 7, + 'SUPPORTS_COOKIES': True, + }, + } + def _login(self): """ Attempt to log in to YouTube. @@ -321,19 +351,24 @@ class YoutubeBaseInfoExtractor(InfoExtractor): '{0} {1} {2}'.format(time_now, self._SAPISID, origin).encode('utf-8')).hexdigest() return 'SAPISIDHASH {0}_{1}'.format(time_now, sapisidhash) - def _call_api(self, ep, query, video_id, fatal=True, headers=None): + def _call_api(self, ep, query, video_id, fatal=True, headers=None, + note='Downloading API JSON'): data = self._DEFAULT_API_DATA.copy() data.update(query) real_headers = {'content-type': 'application/json'} if headers: real_headers.update(headers) + # was: 'AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8' + api_key = self.get_param('youtube_innertube_key') return self._download_json( 'https://www.youtube.com/youtubei/v1/%s' % ep, video_id=video_id, - note='Downloading API JSON', errnote='Unable to download API page', + note=note, errnote='Unable to download API page', data=json.dumps(data).encode('utf8'), fatal=fatal, - headers=real_headers, - query={'key': 'AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8'}) + headers=real_headers, query=filter_dict({ + 'key': api_key, + 'prettyPrint': 'false', + })) def _extract_yt_initial_data(self, video_id, webpage): return self._parse_json( @@ -342,6 +377,22 @@ class YoutubeBaseInfoExtractor(InfoExtractor): self._YT_INITIAL_DATA_RE), webpage, 'yt initial data'), video_id) + def _extract_visitor_data(self, *args): + """ + Extract visitorData from an API response or ytcfg + + Appears to be used to track session state + """ + visitor_data = self.get_param('youtube_visitor_data') + if visitor_data: + return visitor_data + + return get_first( + args, (('VISITOR_DATA', + ('INNERTUBE_CONTEXT', 'client', 'visitorData'), + ('responseContext', 'visitorData')), + T(compat_str))) + def _extract_ytcfg(self, video_id, webpage): return self._parse_json( self._search_regex( @@ -1957,6 +2008,10 @@ class YoutubeIE(YoutubeBaseInfoExtractor): if sts: pb_context['signatureTimestamp'] = sts + client = traverse_obj(self._INNERTUBE_CLIENTS, ( + lambda _, v: not v.get('REQUIRE_PO_TOKEN')), + get_all=False) + query = { 'playbackContext': { 'contentPlaybackContext': pb_context, @@ -1964,30 +2019,39 @@ class YoutubeIE(YoutubeBaseInfoExtractor): 'racyCheckOk': True, }, 'context': { - 'client': { - 'clientName': 'MWEB', - 'clientVersion': '2.20241202.07.00', - 'hl': 'en', - 'userAgent': 'Mozilla/5.0 (iPad; CPU OS 16_7_10 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1,gzip(gfe)', - 'timeZone': 'UTC', - 'utcOffsetMinutes': 0, - }, + 'client': merge_dicts( + traverse_obj(client, ('INNERTUBE_CONTEXT', 'client')), { + 'hl': 'en', + 'timeZone': 'UTC', + 'utcOffsetMinutes': 0, + }), }, 'videoId': video_id, } - headers = { - 'X-YouTube-Client-Name': '2', - 'X-YouTube-Client-Version': '2.20241202.07.00', - 'Origin': origin, + + headers = merge_dicts({ 'Sec-Fetch-Mode': 'navigate', - 'User-Agent': query['context']['client']['userAgent'], - } + 'Origin': origin, + # 'X-Goog-Visitor-Id': self._extract_visitor_data(ytcfg) or '', + }, traverse_obj(client, { + 'X-YouTube-Client-Name': 'INNERTUBE_CONTEXT_CLIENT_NAME', + 'X-YouTube-Client-Version': ( + 'INNERTUBE_CONTEXT', 'client', 'clientVersion'), + 'User-Agent': ( + 'INNERTUBE_CONTEXT', 'client', 'userAgent'), + })) + auth = self._generate_sapisidhash_header(origin) if auth is not None: headers['Authorization'] = auth headers['X-Origin'] = origin - player_response = self._call_api('player', query, video_id, fatal=False, headers=headers) + player_response = self._call_api( + 'player', query, video_id, fatal=False, headers=headers, + note=join_nonempty( + 'Downloading', traverse_obj(query, ( + 'context', 'client', 'clientName')), + 'API JSON', delim=' ')) def is_agegated(playability): if not isinstance(playability, dict): @@ -3537,10 +3601,23 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor): def _real_extract(self, url): item_id = self._match_id(url) url = update_url(url, netloc='www.youtube.com') - # Handle both video/playlist URLs qs = parse_qs(url) - video_id = qs.get('v', [None])[0] - playlist_id = qs.get('list', [None])[0] + + def qs_get(key, default=None): + return qs.get(key, [default])[-1] + + # Go around for /feeds/videos.xml?playlist_id={pl_id} + if item_id == 'feeds' and '/feeds/videos.xml?' in url: + playlist_id = qs_get('playlist_id') + if playlist_id: + return self.url_result( + update_url_query('https://www.youtube.com/playlist', { + 'list': playlist_id, + }), ie=self.ie_key(), video_id=playlist_id) + + # Handle both video/playlist URLs + video_id = qs_get('v') + playlist_id = qs_get('list') if video_id and playlist_id: if self._downloader.params.get('noplaylist'): self.to_screen('Downloading just video %s because of --no-playlist' % video_id) diff --git a/yt-dlp/README.md b/yt-dlp/README.md index 2f848bd132..56e4458dc1 100644 --- a/yt-dlp/README.md +++ b/yt-dlp/README.md @@ -1769,7 +1769,7 @@ The following extractors use this feature: #### youtube * `lang`: Prefer translated metadata (`title`, `description` etc) of this language code (case-sensitive). By default, the video primary language metadata is preferred, with a fallback to `en` translated. See [youtube.py](https://github.com/yt-dlp/yt-dlp/blob/c26f9b991a0681fd3ea548d535919cec1fbbd430/yt_dlp/extractor/youtube.py#L381-L390) for list of supported content language codes * `skip`: One or more of `hls`, `dash` or `translated_subs` to skip extraction of the m3u8 manifests, dash manifests and [auto-translated subtitles](https://github.com/yt-dlp/yt-dlp/issues/4090#issuecomment-1158102032) respectively -* `player_client`: Clients to extract video data from. The main clients are `web`, `ios` and `android`, with variants `_music` and `_creator` (e.g. `ios_creator`); and `mweb`, `android_vr`, `web_safari`, `web_embedded`, `tv` and `tv_embedded` with no variants. By default, `ios,tv` is used, or `web_creator,tv` is used when authenticating with cookies. The `_music` variants are added for `music.youtube.com` URLs. Some clients, such as `web` and `android`, require a `po_token` for their formats to be downloadable. Some clients, such as the `_creator` variants, will only work with authentication. Not all clients support authentication via cookies. You can use `all` to use all the clients, and `default` for the default clients. You can prefix a client with `-` to exclude it, e.g. `youtube:player_client=all,-web` +* `player_client`: Clients to extract video data from. The main clients are `web`, `ios` and `android`, with variants `_music` and `_creator` (e.g. `ios_creator`); and `mweb`, `android_vr`, `web_safari`, `web_embedded`, `tv` and `tv_embedded` with no variants. By default, `tv,ios,web` is used, or `tv,web` is used when authenticating with cookies. The `_music` variants may be added for `music.youtube.com` URLs. Some clients, such as `web` and `android`, require a `po_token` for their formats to be downloadable. Some clients, such as the `_creator` variants, will only work with authentication. Not all clients support authentication via cookies. You can use `default` for the default clients, or you can use `all` for all clients (not recommended). You can prefix a client with `-` to exclude it, e.g. `youtube:player_client=default,-ios` * `player_skip`: Skip some network requests that are generally needed for robust extraction. One or more of `configs` (skip client configs), `webpage` (skip initial webpage), `js` (skip js player). While these options can help reduce the number of requests needed or avoid some rate-limiting, they could cause some issues. See [#860](https://github.com/yt-dlp/yt-dlp/pull/860) for more details * `player_params`: YouTube player parameters to use for player requests. Will overwrite any default ones set by yt-dlp. * `comment_sort`: `top` or `new` (default) - choose comment sorting mode (on YouTube's side) diff --git a/yt-dlp/yt_dlp/extractor/youtube.py b/yt-dlp/yt_dlp/extractor/youtube.py index e16ec43edd..c23e65cc51 100644 --- a/yt-dlp/yt_dlp/extractor/youtube.py +++ b/yt-dlp/yt_dlp/extractor/youtube.py @@ -116,6 +116,7 @@ INNERTUBE_CLIENTS = { }, }, 'INNERTUBE_CONTEXT_CLIENT_NAME': 67, + 'REQUIRE_PO_TOKEN': True, 'SUPPORTS_COOKIES': True, }, # This client now requires sign-in for every video @@ -127,6 +128,7 @@ INNERTUBE_CLIENTS = { }, }, 'INNERTUBE_CONTEXT_CLIENT_NAME': 62, + 'REQUIRE_PO_TOKEN': True, 'REQUIRE_AUTH': True, 'SUPPORTS_COOKIES': True, }, @@ -211,8 +213,8 @@ INNERTUBE_CLIENTS = { }, }, 'INNERTUBE_CONTEXT_CLIENT_NAME': 5, - 'REQUIRE_PO_TOKEN': True, 'REQUIRE_JS_PLAYER': False, + 'REQUIRE_PO_TOKEN': True, }, # This client now requires sign-in for every video 'ios_music': { @@ -229,6 +231,7 @@ INNERTUBE_CLIENTS = { }, 'INNERTUBE_CONTEXT_CLIENT_NAME': 26, 'REQUIRE_JS_PLAYER': False, + 'REQUIRE_PO_TOKEN': True, 'REQUIRE_AUTH': True, }, # This client now requires sign-in for every video @@ -246,6 +249,7 @@ INNERTUBE_CLIENTS = { }, 'INNERTUBE_CONTEXT_CLIENT_NAME': 15, 'REQUIRE_JS_PLAYER': False, + 'REQUIRE_PO_TOKEN': True, 'REQUIRE_AUTH': True, }, # mweb has 'ultralow' formats @@ -1423,8 +1427,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor): '401': {'ext': 'mp4', 'height': 2160, 'format_note': 'DASH video', 'vcodec': 'av01.0.12M.08'}, } _SUBTITLE_FORMATS = ('json3', 'srv1', 'srv2', 'srv3', 'ttml', 'vtt') - _DEFAULT_CLIENTS = ('ios', 'tv') - _DEFAULT_AUTHED_CLIENTS = ('web_creator', 'tv') + _DEFAULT_CLIENTS = ('tv', 'ios', 'web') + _DEFAULT_AUTHED_CLIENTS = ('tv', 'web') _GEO_BYPASS = False @@ -3960,15 +3964,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor): if not requested_clients: raise ExtractorError('No player clients have been requested', expected=True) - if smuggled_data.get('is_music_url') or self.is_music_url(url): - for requested_client in requested_clients: - _, base_client, variant = _split_innertube_client(requested_client) - music_client = f'{base_client}_music' if base_client != 'mweb' else 'web_music' - if variant != 'music' and music_client in INNERTUBE_CLIENTS: - client_info = INNERTUBE_CLIENTS[music_client] - if not client_info['REQUIRE_AUTH'] or (self.is_authenticated and client_info['SUPPORTS_COOKIES']): - requested_clients.append(music_client) - if self.is_authenticated: unsupported_clients = [ client for client in requested_clients if not INNERTUBE_CLIENTS[client]['SUPPORTS_COOKIES'] @@ -4079,28 +4074,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor): else: prs.append(pr) - # web_embedded can work around age-gate and age-verification for some embeddable videos - if self._is_agegated(pr) and variant != 'web_embedded': - append_client(f'web_embedded.{base_client}') - # Unauthenticated users will only get web_embedded client formats if age-gated - if self._is_agegated(pr) and not self.is_authenticated: - self.to_screen( - f'{video_id}: This video is age-restricted; some formats may be missing ' - f'without authentication. {self._login_hint()}', only_once=True) - - ''' This code is pointless while web_creator is in _DEFAULT_AUTHED_CLIENTS - # EU countries require age-verification for accounts to access age-restricted videos - # If account is not age-verified, _is_agegated() will be truthy for non-embedded clients - embedding_is_disabled = variant == 'web_embedded' and self._is_unplayable(pr) - if self.is_authenticated and (self._is_agegated(pr) or embedding_is_disabled): - self.to_screen( - f'{video_id}: This video is age-restricted and YouTube is requiring ' - 'account age-verification; some formats may be missing', only_once=True) - # web_creator can work around the age-verification requirement - # tv_embedded may(?) still work around age-verification if the video is embeddable - append_client('web_creator') - ''' - prs.extend(deprioritized_prs) if skipped_clients: