Update On Tue Oct 29 19:36:56 CET 2024

This commit is contained in:
github-action[bot]
2024-10-29 19:36:56 +01:00
parent 359f5ebe28
commit d82fbe9c5c
49 changed files with 489 additions and 335 deletions
+1
View File
@@ -808,3 +808,4 @@ Update On Fri Oct 25 20:37:13 CEST 2024
Update On Sat Oct 26 20:32:41 CEST 2024
Update On Sun Oct 27 19:33:38 CET 2024
Update On Mon Oct 28 19:35:15 CET 2024
Update On Tue Oct 29 19:36:45 CET 2024
+8 -8
View File
@@ -4728,7 +4728,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
dependencies = [
"cfg-if",
"windows-targets 0.52.6",
"windows-targets 0.48.5",
]
[[package]]
@@ -7071,9 +7071,9 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
[[package]]
name = "reqwest"
version = "0.12.8"
version = "0.12.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b"
checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f"
dependencies = [
"base64 0.22.1",
"bytes",
@@ -7545,9 +7545,9 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
[[package]]
name = "serde"
version = "1.0.213"
version = "1.0.214"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1"
checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5"
dependencies = [
"serde_derive",
]
@@ -7575,9 +7575,9 @@ dependencies = [
[[package]]
name = "serde_derive"
version = "1.0.213"
version = "1.0.214"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5"
checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766"
dependencies = [
"proc-macro2",
"quote",
@@ -10445,7 +10445,7 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
dependencies = [
"windows-sys 0.59.0",
"windows-sys 0.48.0",
]
[[package]]
@@ -21,7 +21,7 @@
"@mui/material": "6.1.5",
"@nyanpasu/interface": "workspace:^",
"@nyanpasu/ui": "workspace:^",
"@tanstack/router-zod-adapter": "1.77.5",
"@tanstack/router-zod-adapter": "1.77.6",
"@tauri-apps/api": "2.0.3",
"@types/json-schema": "7.0.15",
"ahooks": "3.8.1",
@@ -54,8 +54,8 @@
"@emotion/react": "11.13.3",
"@iconify/json": "2.2.265",
"@monaco-editor/react": "4.6.0",
"@tanstack/react-router": "1.77.5",
"@tanstack/router-devtools": "1.77.5",
"@tanstack/react-router": "1.77.6",
"@tanstack/router-devtools": "1.77.6",
"@tanstack/router-plugin": "1.76.4",
"@tauri-apps/plugin-clipboard-manager": "2.0.0",
"@tauri-apps/plugin-dialog": "2.0.1",
+2 -2
View File
@@ -5,7 +5,7 @@
"mihomo_alpha": "alpha-3e966e8",
"clash_rs": "v0.7.0",
"clash_premium": "2023-09-05-gdcc8d87",
"clash_rs_alpha": "0.7.0-alpha+sha.23895a8"
"clash_rs_alpha": "0.7.0-alpha+sha.98d183b"
},
"arch_template": {
"mihomo": {
@@ -69,5 +69,5 @@
"linux-armv7hf": "clash-armv7-unknown-linux-gnueabihf"
}
},
"updated_at": "2024-10-27T22:20:35.981Z"
"updated_at": "2024-10-28T22:20:42.142Z"
}
+4 -4
View File
@@ -63,9 +63,9 @@
"@tauri-apps/cli": "2.0.4",
"@types/fs-extra": "11.0.4",
"@types/lodash-es": "4.17.12",
"@types/node": "22.8.1",
"@typescript-eslint/eslint-plugin": "8.11.0",
"@typescript-eslint/parser": "8.11.0",
"@types/node": "22.8.2",
"@typescript-eslint/eslint-plugin": "8.12.1",
"@typescript-eslint/parser": "8.12.1",
"autoprefixer": "10.4.20",
"conventional-changelog-conventionalcommits": "8.0.0",
"cross-env": "7.0.3",
@@ -82,7 +82,7 @@
"eslint-plugin-react": "7.37.2",
"eslint-plugin-react-compiler": "0.0.0-experimental-fa06e2c-20241016",
"eslint-plugin-react-hooks": "4.6.2",
"knip": "5.34.1",
"knip": "5.34.2",
"lint-staged": "15.2.10",
"npm-run-all2": "7.0.1",
"postcss": "8.4.47",
+150 -157
View File
@@ -22,7 +22,7 @@ importers:
devDependencies:
'@commitlint/cli':
specifier: 19.5.0
version: 19.5.0(@types/node@22.8.1)(typescript@5.6.3)
version: 19.5.0(@types/node@22.8.2)(typescript@5.6.3)
'@commitlint/config-conventional':
specifier: 19.5.0
version: 19.5.0
@@ -39,14 +39,14 @@ importers:
specifier: 4.17.12
version: 4.17.12
'@types/node':
specifier: 22.8.1
version: 22.8.1
specifier: 22.8.2
version: 22.8.2
'@typescript-eslint/eslint-plugin':
specifier: 8.11.0
version: 8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)
specifier: 8.12.1
version: 8.12.1(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/parser':
specifier: 8.11.0
version: 8.11.0(eslint@8.57.1)(typescript@5.6.3)
specifier: 8.12.1
version: 8.12.1(eslint@8.57.1)(typescript@5.6.3)
autoprefixer:
specifier: 10.4.20
version: 10.4.20(postcss@8.4.47)
@@ -67,16 +67,16 @@ importers:
version: 9.1.0(eslint@8.57.1)
eslint-config-standard:
specifier: 17.1.0
version: 17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1))(eslint-plugin-n@17.11.1(eslint@8.57.1))(eslint-plugin-promise@7.1.0(eslint@8.57.1))(eslint@8.57.1)
version: 17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1))(eslint-plugin-n@17.11.1(eslint@8.57.1))(eslint-plugin-promise@7.1.0(eslint@8.57.1))(eslint@8.57.1)
eslint-import-resolver-alias:
specifier: 1.1.2
version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1))
version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1))
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.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)
version: 2.31.0(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)
eslint-plugin-n:
specifier: 17.11.1
version: 17.11.1(eslint@8.57.1)
@@ -96,8 +96,8 @@ importers:
specifier: 4.6.2
version: 4.6.2(eslint@8.57.1)
knip:
specifier: 5.34.1
version: 5.34.1(@types/node@22.8.1)(typescript@5.6.3)
specifier: 5.34.2
version: 5.34.2(@types/node@22.8.2)(typescript@5.6.3)
lint-staged:
specifier: 15.2.10
version: 15.2.10
@@ -217,8 +217,8 @@ importers:
specifier: workspace:^
version: link:../ui
'@tanstack/router-zod-adapter':
specifier: 1.77.5
version: 1.77.5(@tanstack/react-router@1.77.5(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028))(zod@3.23.8)
specifier: 1.77.6
version: 1.77.6(@tanstack/react-router@1.77.6(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028))(zod@3.23.8)
'@tauri-apps/api':
specifier: 2.0.3
version: 2.0.3
@@ -311,14 +311,14 @@ importers:
specifier: 4.6.0
version: 4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
'@tanstack/react-router':
specifier: 1.77.5
version: 1.77.5(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
specifier: 1.77.6
version: 1.77.6(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
'@tanstack/router-devtools':
specifier: 1.77.5
version: 1.77.5(@tanstack/react-router@1.77.5(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028))(csstype@3.1.3)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
specifier: 1.77.6
version: 1.77.6(@tanstack/react-router@1.77.6(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028))(csstype@3.1.3)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
'@tanstack/router-plugin':
specifier: 1.76.4
version: 1.76.4(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3)
version: 1.76.4(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3)
'@tauri-apps/plugin-clipboard-manager':
specifier: 2.0.0
version: 2.0.0
@@ -354,10 +354,10 @@ importers:
version: 13.12.2
'@vitejs/plugin-react':
specifier: 4.3.3
version: 4.3.3(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
version: 4.3.3(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
'@vitejs/plugin-react-swc':
specifier: 3.7.1
version: 3.7.1(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
version: 3.7.1(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
change-case:
specifier: 5.4.4
version: 5.4.4
@@ -396,16 +396,16 @@ importers:
version: 13.12.0
vite:
specifier: 5.4.10
version: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
version: 5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
vite-plugin-sass-dts:
specifier: 1.3.29
version: 1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
version: 1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
vite-plugin-svgr:
specifier: 4.2.0
version: 4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
version: 4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
vite-tsconfig-paths:
specifier: 5.0.1
version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
zod:
specifier: 3.23.8
version: 3.23.8
@@ -441,7 +441,7 @@ importers:
version: types-react@19.0.0-rc.1
'@vitejs/plugin-react':
specifier: 4.3.3
version: 4.3.3(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
version: 4.3.3(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
ahooks:
specifier: 3.8.1
version: 3.8.1(react@19.0.0-rc-02c0e824-20241028)
@@ -468,10 +468,10 @@ importers:
version: 17.5.1(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
vite:
specifier: 5.4.10
version: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
version: 5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
vite-tsconfig-paths:
specifier: 5.0.1
version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
devDependencies:
'@emotion/react':
specifier: 11.13.3
@@ -496,7 +496,7 @@ importers:
version: 5.1.0(typescript@5.6.3)
vite-plugin-dts:
specifier: 4.3.0
version: 4.3.0(@types/node@22.8.1)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
version: 4.3.0(@types/node@22.8.2)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))
scripts:
dependencies:
@@ -520,8 +520,8 @@ importers:
specifier: 13.6.1
version: 13.6.1
'@types/adm-zip':
specifier: 0.5.5
version: 0.5.5
specifier: 0.5.6
version: 0.5.6
adm-zip:
specifier: 0.5.16
version: 0.5.16
@@ -2303,8 +2303,8 @@ packages:
resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==}
engines: {node: '>=12'}
'@tanstack/react-router@1.77.5':
resolution: {integrity: sha512-+WApHGq9AFshfiVpZmMgWYrO0IphtmN2JxEy5bkQ9IjI/JTS6F6QDiz8rZf37dx491D13aQeiRUGM345y6gDZQ==}
'@tanstack/react-router@1.77.6':
resolution: {integrity: sha512-0YLpnSjoLdR2qrPAU3C2TkSN7lWIODjXKbod97wPL4gKm5ubBzRtF7K4CCUAT3a+vqIWmSuCYaFWqMlDs4HNnA==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/router-generator': 1.74.2
@@ -2333,11 +2333,11 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
'@tanstack/router-devtools@1.77.5':
resolution: {integrity: sha512-qzT8tfH42YR2vdVPYjdg2eJMQ5n9H5+yEnqthLNJz1gvm6KhG1t3sV8t7ibiWIVllKpq83Skun6xoLw8SrvnAw==}
'@tanstack/router-devtools@1.77.6':
resolution: {integrity: sha512-2u+3+jQPo4WR/dqwTdvP7+UW8ptYTWflaWBLrd1Q1CoXfQz6SF3weiNELLROh63iUxoo0jnQ3aCAlKjHzs6Y9Q==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/react-router': ^1.77.5
'@tanstack/react-router': ^1.77.6
react: '>=18'
react-dom: '>=18'
@@ -2360,8 +2360,8 @@ packages:
webpack:
optional: true
'@tanstack/router-zod-adapter@1.77.5':
resolution: {integrity: sha512-qRDJRzpjjYcSfAx9W3R9C663ZHOWgj3vyKuUv4k92Y8TKP3c9Zh6WzpPWs2wy1RzgxbP68tlWMKLuKlXWK/4aw==}
'@tanstack/router-zod-adapter@1.77.6':
resolution: {integrity: sha512-HbI/WUIN+zCKfIMgP7fk0tQZrFp0c7yAgPPtf8gMjnvvX+VEkS9uY+SFVOELeqxYrC5I3rkJ0UkxncIY4NAz2Q==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/react-router': '>=1.43.2'
@@ -2488,8 +2488,8 @@ packages:
'@vue/compiler-sfc':
optional: true
'@types/adm-zip@0.5.5':
resolution: {integrity: sha512-YCGstVMjc4LTY5uK9/obvxBya93axZOVOyf2GSUulADzmLhYE45u2nAssCs/fWBs1Ifq5Vat75JTPwd5XZoPJw==}
'@types/adm-zip@0.5.6':
resolution: {integrity: sha512-lRlcSLg5Yoo7C2H2AUiAoYlvifWoCx/se7iUNiCBTfEVVYFVn+Tr9ZGed4K73tYgLe9O4PjdJvbxlkdAOx/qiw==}
'@types/argparse@1.0.38':
resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==}
@@ -2665,11 +2665,8 @@ packages:
'@types/node@16.18.108':
resolution: {integrity: sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==}
'@types/node@22.5.0':
resolution: {integrity: sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==}
'@types/node@22.8.1':
resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==}
'@types/node@22.8.2':
resolution: {integrity: sha512-NzaRNFV+FZkvK/KLCsNdTvID0SThyrs5SHB6tsD/lajr22FGC73N2QeDPM2wHtVde8mgcXuSsHQkH5cX1pbPLw==}
'@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -2704,8 +2701,8 @@ packages:
'@types/yauzl@2.10.3':
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
'@typescript-eslint/eslint-plugin@8.11.0':
resolution: {integrity: sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==}
'@typescript-eslint/eslint-plugin@8.12.1':
resolution: {integrity: sha512-gNg/inLRcPoBsKKIe4Vv38SVSOhk4BKWNO0T56sVff33gRqtTpOsrhHtiOKD1lmIOmCtZMPaW2x/h2FlM+sCEg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
@@ -2715,8 +2712,8 @@ packages:
typescript:
optional: true
'@typescript-eslint/parser@8.11.0':
resolution: {integrity: sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==}
'@typescript-eslint/parser@8.12.1':
resolution: {integrity: sha512-I/I9Bg7qFa8rOgBnUUHIWTgzbB5wVkSLX+04xGUzTcJUtdq/I2uHWR9mbW6qUYJG/UmkuDcTax5JHvoEWOAHOQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -2725,12 +2722,12 @@ packages:
typescript:
optional: true
'@typescript-eslint/scope-manager@8.11.0':
resolution: {integrity: sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==}
'@typescript-eslint/scope-manager@8.12.1':
resolution: {integrity: sha512-bma6sD1iViTt+y9MAwDlBdPTMCqoH/BNdcQk4rKhIZWv3eM0xHmzeSrPJA663PAqFqfpOmtdugycpr0E1mZDVA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/type-utils@8.11.0':
resolution: {integrity: sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==}
'@typescript-eslint/type-utils@8.12.1':
resolution: {integrity: sha512-zJzrvbDVjIzVKV2TGHcjembEhws8RWXJhmqfO9hS2gRXBN0gDwGhRPEdJ6AZglzfJ+YA1q09EWpSLSXjBJpIMQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -2738,12 +2735,12 @@ packages:
typescript:
optional: true
'@typescript-eslint/types@8.11.0':
resolution: {integrity: sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==}
'@typescript-eslint/types@8.12.1':
resolution: {integrity: sha512-anMS4es5lxBe4UVcDXOkcDb3csnm5BvaNIbOFfvy/pJEohorsggdVB8MFbl5EZiEuBnZZ0ei1z7W5b6FdFiV1Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.11.0':
resolution: {integrity: sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==}
'@typescript-eslint/typescript-estree@8.12.1':
resolution: {integrity: sha512-k/o9khHOckPeDXilFTIPsP9iAYhhdMh3OsOL3i2072PNpFqhqzRHx472/0DeC8H/WZee3bZG0z2ddGRSPgeOKw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -2751,14 +2748,14 @@ packages:
typescript:
optional: true
'@typescript-eslint/utils@8.11.0':
resolution: {integrity: sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==}
'@typescript-eslint/utils@8.12.1':
resolution: {integrity: sha512-sDv9yFHrhKe1WN8EYuzfhKCh/sFRupe9P+m/lZ5YgVvPoCUGHNN50IO4llSu7JAbftUM/QcCh+GeCortXPrBYQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
'@typescript-eslint/visitor-keys@8.11.0':
resolution: {integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==}
'@typescript-eslint/visitor-keys@8.12.1':
resolution: {integrity: sha512-2RwdwnNGuOQKdGjuhujQHUqBZhEuodg2sLVPvOfWktvA9sOXOVqARjOyHSyhN2LiJGKxV6c8oOcmOtRcAnEeFw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.2.0':
@@ -4877,8 +4874,8 @@ packages:
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
engines: {node: '>=0.10.0'}
knip@5.34.1:
resolution: {integrity: sha512-MwQjEWBxsi7MnTL3JpLJwYRhqD1262Fv+TylMYDyZRAVJMmEs4y0qie5zv8VjU5DBSGoEs35Ssu7I/2klNOQgw==}
knip@5.34.2:
resolution: {integrity: sha512-quSohta9fKJUWTXIqHenA4NYW24rmoP3g/Naw5Lq/Xb/LjAQYSUK4aIyU1wizDLC4EnMicGA5g/H33vJ3ovz5Q==}
engines: {node: '>=18.6.0'}
hasBin: true
peerDependencies:
@@ -7676,11 +7673,11 @@ snapshots:
'@bufbuild/protobuf@1.10.0': {}
'@commitlint/cli@19.5.0(@types/node@22.8.1)(typescript@5.6.3)':
'@commitlint/cli@19.5.0(@types/node@22.8.2)(typescript@5.6.3)':
dependencies:
'@commitlint/format': 19.5.0
'@commitlint/lint': 19.5.0
'@commitlint/load': 19.5.0(@types/node@22.8.1)(typescript@5.6.3)
'@commitlint/load': 19.5.0(@types/node@22.8.2)(typescript@5.6.3)
'@commitlint/read': 19.5.0
'@commitlint/types': 19.5.0
tinyexec: 0.3.0
@@ -7727,7 +7724,7 @@ snapshots:
'@commitlint/rules': 19.5.0
'@commitlint/types': 19.5.0
'@commitlint/load@19.5.0(@types/node@22.8.1)(typescript@5.6.3)':
'@commitlint/load@19.5.0(@types/node@22.8.2)(typescript@5.6.3)':
dependencies:
'@commitlint/config-validator': 19.5.0
'@commitlint/execute-rule': 19.5.0
@@ -7735,7 +7732,7 @@ snapshots:
'@commitlint/types': 19.5.0
chalk: 5.3.0
cosmiconfig: 9.0.0(typescript@5.6.3)
cosmiconfig-typescript-loader: 5.0.0(@types/node@22.8.1)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3)
cosmiconfig-typescript-loader: 5.0.0(@types/node@22.8.2)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3)
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
lodash.uniq: 4.5.0
@@ -8210,23 +8207,23 @@ snapshots:
'@material/material-color-utilities@0.3.0': {}
'@microsoft/api-extractor-model@7.29.8(@types/node@22.8.1)':
'@microsoft/api-extractor-model@7.29.8(@types/node@22.8.2)':
dependencies:
'@microsoft/tsdoc': 0.15.0
'@microsoft/tsdoc-config': 0.17.0
'@rushstack/node-core-library': 5.9.0(@types/node@22.8.1)
'@rushstack/node-core-library': 5.9.0(@types/node@22.8.2)
transitivePeerDependencies:
- '@types/node'
'@microsoft/api-extractor@7.47.11(@types/node@22.8.1)':
'@microsoft/api-extractor@7.47.11(@types/node@22.8.2)':
dependencies:
'@microsoft/api-extractor-model': 7.29.8(@types/node@22.8.1)
'@microsoft/api-extractor-model': 7.29.8(@types/node@22.8.2)
'@microsoft/tsdoc': 0.15.0
'@microsoft/tsdoc-config': 0.17.0
'@rushstack/node-core-library': 5.9.0(@types/node@22.8.1)
'@rushstack/node-core-library': 5.9.0(@types/node@22.8.2)
'@rushstack/rig-package': 0.5.3
'@rushstack/terminal': 0.14.2(@types/node@22.8.1)
'@rushstack/ts-command-line': 4.23.0(@types/node@22.8.1)
'@rushstack/terminal': 0.14.2(@types/node@22.8.2)
'@rushstack/ts-command-line': 4.23.0(@types/node@22.8.2)
lodash: 4.17.21
minimatch: 3.0.8
resolve: 1.22.8
@@ -8860,7 +8857,7 @@ snapshots:
'@rtsao/scc@1.1.0': {}
'@rushstack/node-core-library@5.9.0(@types/node@22.8.1)':
'@rushstack/node-core-library@5.9.0(@types/node@22.8.2)':
dependencies:
ajv: 8.13.0
ajv-draft-04: 1.0.0(ajv@8.13.0)
@@ -8871,23 +8868,23 @@ snapshots:
resolve: 1.22.8
semver: 7.5.4
optionalDependencies:
'@types/node': 22.8.1
'@types/node': 22.8.2
'@rushstack/rig-package@0.5.3':
dependencies:
resolve: 1.22.8
strip-json-comments: 3.1.1
'@rushstack/terminal@0.14.2(@types/node@22.8.1)':
'@rushstack/terminal@0.14.2(@types/node@22.8.2)':
dependencies:
'@rushstack/node-core-library': 5.9.0(@types/node@22.8.1)
'@rushstack/node-core-library': 5.9.0(@types/node@22.8.2)
supports-color: 8.1.1
optionalDependencies:
'@types/node': 22.8.1
'@types/node': 22.8.2
'@rushstack/ts-command-line@4.23.0(@types/node@22.8.1)':
'@rushstack/ts-command-line@4.23.0(@types/node@22.8.2)':
dependencies:
'@rushstack/terminal': 0.14.2(@types/node@22.8.1)
'@rushstack/terminal': 0.14.2(@types/node@22.8.2)
'@types/argparse': 1.0.38
argparse: 1.0.10
string-argv: 0.3.2
@@ -9061,7 +9058,7 @@ snapshots:
dependencies:
remove-accents: 0.5.0
'@tanstack/react-router@1.77.5(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)':
'@tanstack/react-router@1.77.6(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)':
dependencies:
'@tanstack/history': 1.61.1
'@tanstack/react-store': 0.5.6(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
@@ -9091,9 +9088,9 @@ snapshots:
react: 19.0.0-rc-02c0e824-20241028
react-dom: 19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028)
'@tanstack/router-devtools@1.77.5(@tanstack/react-router@1.77.5(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028))(csstype@3.1.3)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)':
'@tanstack/router-devtools@1.77.6(@tanstack/react-router@1.77.6(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028))(csstype@3.1.3)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)':
dependencies:
'@tanstack/react-router': 1.77.5(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
'@tanstack/react-router': 1.77.6(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
clsx: 2.1.1
goober: 2.1.16(csstype@3.1.3)
react: 19.0.0-rc-02c0e824-20241028
@@ -9108,7 +9105,7 @@ snapshots:
tsx: 4.19.2
zod: 3.23.8
'@tanstack/router-plugin@1.76.4(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3)':
'@tanstack/router-plugin@1.76.4(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3)':
dependencies:
'@babel/core': 7.25.8
'@babel/generator': 7.25.7
@@ -9129,14 +9126,14 @@ snapshots:
unplugin: 1.14.1(webpack-sources@3.2.3)
zod: 3.23.8
optionalDependencies:
vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
vite: 5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
transitivePeerDependencies:
- supports-color
- webpack-sources
'@tanstack/router-zod-adapter@1.77.5(@tanstack/react-router@1.77.5(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028))(zod@3.23.8)':
'@tanstack/router-zod-adapter@1.77.6(@tanstack/react-router@1.77.6(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028))(zod@3.23.8)':
dependencies:
'@tanstack/react-router': 1.77.5(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
'@tanstack/react-router': 1.77.6(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028))(react@19.0.0-rc-02c0e824-20241028)
zod: 3.23.8
'@tanstack/store@0.5.5': {}
@@ -9243,9 +9240,9 @@ snapshots:
- supports-color
optional: true
'@types/adm-zip@0.5.5':
'@types/adm-zip@0.5.6':
dependencies:
'@types/node': 22.5.0
'@types/node': 22.8.2
'@types/argparse@1.0.38': {}
@@ -9276,12 +9273,12 @@ snapshots:
dependencies:
'@types/http-cache-semantics': 4.0.4
'@types/keyv': 3.1.4
'@types/node': 22.8.1
'@types/node': 22.8.2
'@types/responselike': 1.0.3
'@types/conventional-commits-parser@5.0.0':
dependencies:
'@types/node': 22.8.1
'@types/node': 22.8.2
'@types/d3-array@3.2.1': {}
@@ -9417,7 +9414,7 @@ snapshots:
'@types/fs-extra@11.0.4':
dependencies:
'@types/jsonfile': 6.1.4
'@types/node': 22.8.1
'@types/node': 22.8.2
'@types/geojson@7946.0.14': {}
@@ -9435,11 +9432,11 @@ snapshots:
'@types/jsonfile@6.1.4':
dependencies:
'@types/node': 22.8.1
'@types/node': 22.8.2
'@types/keyv@3.1.4':
dependencies:
'@types/node': 22.8.1
'@types/node': 22.8.2
'@types/lodash-es@4.17.12':
dependencies:
@@ -9455,11 +9452,7 @@ snapshots:
'@types/node@16.18.108': {}
'@types/node@22.5.0':
dependencies:
undici-types: 6.19.8
'@types/node@22.8.1':
'@types/node@22.8.2':
dependencies:
undici-types: 6.19.8
@@ -9481,7 +9474,7 @@ snapshots:
'@types/responselike@1.0.3':
dependencies:
'@types/node': 22.8.1
'@types/node': 22.8.2
'@types/retry@0.12.2': {}
@@ -9493,17 +9486,17 @@ snapshots:
'@types/yauzl@2.10.3':
dependencies:
'@types/node': 22.8.1
'@types/node': 22.8.2
optional: true
'@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)':
'@typescript-eslint/eslint-plugin@8.12.1(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)':
dependencies:
'@eslint-community/regexpp': 4.11.0
'@typescript-eslint/parser': 8.11.0(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/scope-manager': 8.11.0
'@typescript-eslint/type-utils': 8.11.0(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/utils': 8.11.0(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.11.0
'@typescript-eslint/parser': 8.12.1(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/scope-manager': 8.12.1
'@typescript-eslint/type-utils': 8.12.1(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/utils': 8.12.1(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.12.1
eslint: 8.57.1
graphemer: 1.4.0
ignore: 5.3.2
@@ -9514,12 +9507,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3)':
'@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.11.0
'@typescript-eslint/types': 8.11.0
'@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.11.0
'@typescript-eslint/scope-manager': 8.12.1
'@typescript-eslint/types': 8.12.1
'@typescript-eslint/typescript-estree': 8.12.1(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.12.1
debug: 4.3.7
eslint: 8.57.1
optionalDependencies:
@@ -9527,15 +9520,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/scope-manager@8.11.0':
'@typescript-eslint/scope-manager@8.12.1':
dependencies:
'@typescript-eslint/types': 8.11.0
'@typescript-eslint/visitor-keys': 8.11.0
'@typescript-eslint/types': 8.12.1
'@typescript-eslint/visitor-keys': 8.12.1
'@typescript-eslint/type-utils@8.11.0(eslint@8.57.1)(typescript@5.6.3)':
'@typescript-eslint/type-utils@8.12.1(eslint@8.57.1)(typescript@5.6.3)':
dependencies:
'@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
'@typescript-eslint/utils': 8.11.0(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/typescript-estree': 8.12.1(typescript@5.6.3)
'@typescript-eslint/utils': 8.12.1(eslint@8.57.1)(typescript@5.6.3)
debug: 4.3.7
ts-api-utils: 1.3.0(typescript@5.6.3)
optionalDependencies:
@@ -9544,12 +9537,12 @@ snapshots:
- eslint
- supports-color
'@typescript-eslint/types@8.11.0': {}
'@typescript-eslint/types@8.12.1': {}
'@typescript-eslint/typescript-estree@8.11.0(typescript@5.6.3)':
'@typescript-eslint/typescript-estree@8.12.1(typescript@5.6.3)':
dependencies:
'@typescript-eslint/types': 8.11.0
'@typescript-eslint/visitor-keys': 8.11.0
'@typescript-eslint/types': 8.12.1
'@typescript-eslint/visitor-keys': 8.12.1
debug: 4.3.7
fast-glob: 3.3.2
is-glob: 4.0.3
@@ -9561,39 +9554,39 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.11.0(eslint@8.57.1)(typescript@5.6.3)':
'@typescript-eslint/utils@8.12.1(eslint@8.57.1)(typescript@5.6.3)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1)
'@typescript-eslint/scope-manager': 8.11.0
'@typescript-eslint/types': 8.11.0
'@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
'@typescript-eslint/scope-manager': 8.12.1
'@typescript-eslint/types': 8.12.1
'@typescript-eslint/typescript-estree': 8.12.1(typescript@5.6.3)
eslint: 8.57.1
transitivePeerDependencies:
- supports-color
- typescript
'@typescript-eslint/visitor-keys@8.11.0':
'@typescript-eslint/visitor-keys@8.12.1':
dependencies:
'@typescript-eslint/types': 8.11.0
'@typescript-eslint/types': 8.12.1
eslint-visitor-keys: 3.4.3
'@ungap/structured-clone@1.2.0': {}
'@vitejs/plugin-react-swc@3.7.1(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))':
'@vitejs/plugin-react-swc@3.7.1(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))':
dependencies:
'@swc/core': 1.7.26
vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
vite: 5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
transitivePeerDependencies:
- '@swc/helpers'
'@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))':
'@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))':
dependencies:
'@babel/core': 7.25.8
'@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.25.8)
'@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.25.8)
'@types/babel__core': 7.20.5
react-refresh: 0.14.2
vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
vite: 5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
transitivePeerDependencies:
- supports-color
@@ -10186,9 +10179,9 @@ snapshots:
dependencies:
toggle-selection: 1.0.6
cosmiconfig-typescript-loader@5.0.0(@types/node@22.8.1)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3):
cosmiconfig-typescript-loader@5.0.0(@types/node@22.8.2)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3):
dependencies:
'@types/node': 22.8.1
'@types/node': 22.8.2
cosmiconfig: 9.0.0(typescript@5.6.3)
jiti: 1.21.6
typescript: 5.6.3
@@ -10847,16 +10840,16 @@ snapshots:
dependencies:
eslint: 8.57.1
eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1))(eslint-plugin-n@17.11.1(eslint@8.57.1))(eslint-plugin-promise@7.1.0(eslint@8.57.1))(eslint@8.57.1):
eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1))(eslint-plugin-n@17.11.1(eslint@8.57.1))(eslint-plugin-promise@7.1.0(eslint@8.57.1))(eslint@8.57.1):
dependencies:
eslint: 8.57.1
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)
eslint-plugin-n: 17.11.1(eslint@8.57.1)
eslint-plugin-promise: 7.1.0(eslint@8.57.1)
eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)):
eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)):
dependencies:
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)
eslint-import-resolver-node@0.3.9:
dependencies:
@@ -10866,11 +10859,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1):
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 8.11.0(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/parser': 8.12.1(eslint@8.57.1)(typescript@5.6.3)
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
@@ -10887,7 +10880,7 @@ snapshots:
dependencies:
htmlparser2: 9.1.0
eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1):
eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -10898,7 +10891,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1)
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.12.1(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -10910,7 +10903,7 @@ snapshots:
string.prototype.trimend: 1.0.8
tsconfig-paths: 3.15.0
optionalDependencies:
'@typescript-eslint/parser': 8.11.0(eslint@8.57.1)(typescript@5.6.3)
'@typescript-eslint/parser': 8.12.1(eslint@8.57.1)(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -11910,11 +11903,11 @@ snapshots:
kind-of@6.0.3: {}
knip@5.34.1(@types/node@22.8.1)(typescript@5.6.3):
knip@5.34.2(@types/node@22.8.2)(typescript@5.6.3):
dependencies:
'@nodelib/fs.walk': 1.2.8
'@snyk/github-codeowners': 1.1.0
'@types/node': 22.8.1
'@types/node': 22.8.2
easy-table: 1.2.0
enhanced-resolve: 5.17.1
fast-glob: 3.3.2
@@ -14293,9 +14286,9 @@ snapshots:
- rollup
- supports-color
vite-plugin-dts@4.3.0(@types/node@22.8.1)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)):
vite-plugin-dts@4.3.0(@types/node@22.8.2)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)):
dependencies:
'@microsoft/api-extractor': 7.47.11(@types/node@22.8.1)
'@microsoft/api-extractor': 7.47.11(@types/node@22.8.2)
'@rollup/pluginutils': 5.1.0(rollup@4.21.0)
'@volar/typescript': 2.4.5
'@vue/language-core': 2.1.6(typescript@5.6.3)
@@ -14306,49 +14299,49 @@ snapshots:
magic-string: 0.30.11
typescript: 5.6.3
optionalDependencies:
vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
vite: 5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
vite-plugin-sass-dts@1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)):
vite-plugin-sass-dts@1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)):
dependencies:
postcss: 8.4.47
postcss-js: 4.0.1(postcss@8.4.47)
prettier: 3.3.3
sass-embedded: 1.78.0
vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
vite: 5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
vite-plugin-svgr@4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)):
vite-plugin-svgr@4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)):
dependencies:
'@rollup/pluginutils': 5.1.0(rollup@4.21.0)
'@svgr/core': 8.1.0(typescript@5.6.3)
'@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3))
vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
vite: 5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
transitivePeerDependencies:
- rollup
- supports-color
- typescript
vite-tsconfig-paths@5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)):
vite-tsconfig-paths@5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)):
dependencies:
debug: 4.3.7
globrex: 0.1.2
tsconfck: 3.0.3(typescript@5.6.3)
optionalDependencies:
vite: 5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
vite: 5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)
transitivePeerDependencies:
- supports-color
- typescript
vite@5.4.10(@types/node@22.8.1)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0):
vite@5.4.10(@types/node@22.8.2)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0):
dependencies:
esbuild: 0.21.5
postcss: 8.4.47
rollup: 4.21.0
optionalDependencies:
'@types/node': 22.8.1
'@types/node': 22.8.2
fsevents: 2.3.3
less: 4.2.0
sass: 1.80.4
+1 -1
View File
@@ -11,7 +11,7 @@
},
"devDependencies": {
"@octokit/types": "13.6.1",
"@types/adm-zip": "0.5.5",
"@types/adm-zip": "0.5.6",
"adm-zip": "0.5.16",
"colorize-template": "1.0.0",
"consola": "3.2.3",
@@ -1,7 +1,7 @@
import React, { ReactNode } from "react";
import { Typography } from "@mui/material";
import { BaseErrorBoundary } from "./base-error-boundary";
import { useCustomTheme } from "@/components/layout/use-custom-theme";
import { useTheme } from "@mui/material/styles";
interface Props {
title?: React.ReactNode; // the page title
@@ -13,7 +13,7 @@ interface Props {
export const BasePage: React.FC<Props> = (props) => {
const { title, header, contentStyle, full, children } = props;
const { theme } = useCustomTheme();
const theme = useTheme();
const isDark = theme.palette.mode === "dark";
@@ -4,6 +4,7 @@ import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow";
import { useSetThemeMode, useThemeMode } from "@/services/states";
import { defaultTheme, defaultDarkTheme } from "@/pages/_theme";
import { useVerge } from "@/hooks/use-verge";
import { useTheme } from "@mui/material/styles";
const appWindow = getCurrentWebviewWindow();
/**
@@ -11,7 +11,6 @@ export const useLogData = () => {
const { clashInfo } = useClashInfo();
const [enableLog] = useEnableLog();
!enableLog || !clashInfo;
return useSWRSubscription<ILogItem[], any, "getClashLog" | null>(
enableLog && clashInfo ? "getClashLog" : null,
+3 -2
View File
@@ -15,11 +15,11 @@ import {
ConnectionDetailRef,
} from "@/components/connection/connection-detail";
import parseTraffic from "@/utils/parse-traffic";
import { useCustomTheme } from "@/components/layout/use-custom-theme";
import { BaseSearchBox } from "@/components/base/base-search-box";
import { BaseStyledSelect } from "@/components/base/base-styled-select";
import useSWRSubscription from "swr/subscription";
import { createSockette } from "@/utils/websocket";
import { useTheme } from "@mui/material/styles";
const initConn: IConnections = {
uploadTotal: 0,
@@ -32,7 +32,8 @@ type OrderFunc = (list: IConnectionsItem[]) => IConnectionsItem[];
const ConnectionsPage = () => {
const { t } = useTranslation();
const { clashInfo } = useClashInfo();
const { theme } = useCustomTheme();
const theme = useTheme();
const isDark = theme.palette.mode === "dark";
const [match, setMatch] = useState(() => (_: string) => true);
const [curOrderOpt, setOrderOpt] = useState("Default");
+16 -12
View File
@@ -10,7 +10,7 @@ import { useLogData } from "@/hooks/use-log-data";
import { useEnableLog } from "@/services/states";
import { BaseEmpty, BasePage } from "@/components/base";
import LogItem from "@/components/log/log-item";
import { useCustomTheme } from "@/components/layout/use-custom-theme";
import { useTheme } from "@mui/material/styles";
import { BaseSearchBox } from "@/components/base/base-search-box";
import { BaseStyledSelect } from "@/components/base/base-styled-select";
import { mutate } from "swr";
@@ -19,7 +19,7 @@ const LogPage = () => {
const { t } = useTranslation();
const { data: logData = [] } = useLogData();
const [enableLog, setEnableLog] = useEnableLog();
const { theme } = useCustomTheme();
const theme = useTheme();
const isDark = theme.palette.mode === "dark";
const [logState, setLogState] = useState("all");
const [match, setMatch] = useState(() => (_: string) => true);
@@ -52,15 +52,19 @@ const LogPage = () => {
)}
</IconButton>
<Button
size="small"
variant="contained"
// useSWRSubscription adds a prefix "$sub$" to the cache key
// https://github.com/vercel/swr/blob/1585a3e37d90ad0df8097b099db38f1afb43c95d/src/subscription/index.ts#L37
onClick={() => mutate("$sub$getClashLog", [])}
>
{t("Clear")}
</Button>
{enableLog === true && (
<Button
size="small"
variant="contained"
// useSWRSubscription adds a prefix "$sub$" to the cache key
// https://github.com/vercel/swr/blob/1585a3e37d90ad0df8097b099db38f1afb43c95d/src/subscription/index.ts#L37
onClick={() => {
mutate("$sub$getClashLog", []);
}}
>
{t("Clear")}
</Button>
)}
</Box>
}
>
@@ -94,7 +98,7 @@ const LogPage = () => {
bgcolor: isDark ? "#282a36" : "#ffffff",
}}
>
{filterLogs.length > 0 ? (
{filterLogs.length > 0 && enableLog === true ? (
<Virtuoso
initialTopMostItemIndex={999}
data={filterLogs}
+2 -2
View File
@@ -7,13 +7,13 @@ import { getRules } from "@/services/api";
import { BaseEmpty, BasePage } from "@/components/base";
import RuleItem from "@/components/rule/rule-item";
import { ProviderButton } from "@/components/rule/provider-button";
import { useCustomTheme } from "@/components/layout/use-custom-theme";
import { BaseSearchBox } from "@/components/base/base-search-box";
import { useTheme } from "@mui/material/styles";
const RulesPage = () => {
const { t } = useTranslation();
const { data = [] } = useSWR("getRules", getRules);
const { theme } = useCustomTheme();
const theme = useTheme();
const isDark = theme.palette.mode === "dark";
const [match, setMatch] = useState(() => (_: string) => true);
+1 -1
View File
@@ -5,7 +5,7 @@ const [ThemeModeProvider, useThemeMode, useSetThemeMode] = createContextState<
"light" | "dark"
>("light");
export const useEnableLog = () => useLocalStorage("enable-log", true);
export const useEnableLog = () => useLocalStorage("enable-log", false);
interface IConnectionSetting {
layout: "table" | "list";
+2 -1
View File
@@ -575,7 +575,8 @@ $(eval $(call KernelPackage,drm-sched))
define KernelPackage/drm-nouveau
SUBMENU:=$(VIDEO_MENU)
TITLE:=nouveau DRM support
DEPENDS:=@TARGET_x86 @DISPLAY_SUPPORT +kmod-drm-kms-helper +(LINUX_6_1||LINUX_6_6):kmod-acpi-video
DEPENDS:=@TARGET_x86 @DISPLAY_SUPPORT +(LINUX_6_1||LINUX_6_6):kmod-drm-display-helper +(LINUX_6_1||LINUX_6_6):kmod-drm-exec +kmod-drm-kms-helper \
+(LINUX_6_1||LINUX_6_6):kmod-drm-sched +(LINUX_6_1||LINUX_6_6):kmod-acpi-video
KCONFIG:=CONFIG_DRM_NOUVEAU \
NOUVEAU_DEBUG=5 \
NOUVEAU_DEBUG_DEFAULT=3 \
@@ -39,8 +39,9 @@ define Package/ddns-scripts_aliyun/preinst
endef
define Package/ddns-scripts_aliyun/install
$(INSTALL_DIR) $(1)/usr/lib/ddns
$(INSTALL_BIN) $(PKG_BUILD_DIR)/update_aliyun_com.sh $(1)/usr/lib/ddns
$(INSTALL_DIR) $(1)/usr/lib/ddns $(1)/usr/share/ddns/default
$(INSTALL_BIN) $(CURDIR)/update_aliyun_com.sh $(1)/usr/lib/ddns
$(INSTALL_DATA) $(CURDIR)/aliyun.com.json $(1)/usr/share/ddns/default
endef
define Package/ddns-scripts_aliyun/postinst
@@ -0,0 +1,9 @@
{
"name": "aliyun.com",
"ipv4": {
"url": "update_aliyun_com.sh"
},
"ipv6": {
"url": "update_aliyun_com.sh"
}
}
@@ -28,7 +28,6 @@ define Build/Configure
endef
define Build/Compile
$(CP) ./*.sh $(PKG_BUILD_DIR)
endef
define Package/ddns-scripts_dnspod/preinst
@@ -39,8 +38,9 @@ define Package/ddns-scripts_dnspod/preinst
endef
define Package/ddns-scripts_dnspod/install
$(INSTALL_DIR) $(1)/usr/lib/ddns
$(INSTALL_BIN) $(PKG_BUILD_DIR)/*.sh $(1)/usr/lib/ddns
$(INSTALL_DIR) $(1)/usr/lib/ddns $(1)/usr/share/ddns/default
$(INSTALL_BIN) $(CURDIR)/*.sh $(1)/usr/lib/ddns
$(INSTALL_DATA) $(CURDIR)/*.json $(1)/usr/share/ddns/default
endef
define Package/ddns-scripts_dnspod/postinst
@@ -0,0 +1,9 @@
{
"name": "dnspod.com",
"ipv4": {
"url": "update_dnspod_cn.sh"
},
"ipv6": {
"url": "update_dnspod_cn.sh"
}
}
@@ -0,0 +1,9 @@
{
"name": "dnspod.com",
"ipv4": {
"url": "update_dnspod_com.sh"
},
"ipv6": {
"url": "update_dnspod_com.sh"
}
}
+10 -14
View File
@@ -21,8 +21,6 @@ PKG_BUILD_PARALLEL:=1
PKG_ASLR_PIE_REGULAR:=1
PKG_CONFIG_DEPENDS:= \
CONFIG_PACKAGE_kmod-ath9k \
CONFIG_PACKAGE_kmod-cfg80211 \
CONFIG_PACKAGE_hostapd \
CONFIG_PACKAGE_hostapd-basic \
CONFIG_PACKAGE_hostapd-mini \
@@ -82,9 +80,10 @@ ifneq ($(CONFIG_DRIVER_11AX_SUPPORT),)
HOSTAPD_IEEE80211AX:=y
endif
CORE_DEPENDS = +ucode +libubus +libucode +ucode-mod-fs +ucode-mod-nl80211 +ucode-mod-rtnl +ucode-mod-ubus +ucode-mod-uloop +libblobmsg-json
DRIVER_MAKEOPTS= \
CONFIG_ACS=$(CONFIG_PACKAGE_kmod-cfg80211) \
CONFIG_DRIVER_NL80211=$(CONFIG_PACKAGE_kmod-cfg80211) \
CONFIG_ACS=y CONFIG_DRIVER_NL80211=y \
CONFIG_IEEE80211AC=$(HOSTAPD_IEEE80211AC) \
CONFIG_IEEE80211AX=$(HOSTAPD_IEEE80211AX) \
CONFIG_DRIVER_WEXT=$(CONFIG_DRIVER_WEXT_SUPPORT) \
@@ -141,7 +140,7 @@ ifneq ($(LOCAL_TYPE),hostapd)
endif
endif
DRV_DEPENDS:=+PACKAGE_kmod-cfg80211:libnl-tiny +kmod-cfg80211
DRV_DEPENDS:=+libnl-tiny
define Package/hostapd/Default
@@ -150,7 +149,7 @@ define Package/hostapd/Default
SUBMENU:=WirelessAPD
TITLE:=IEEE 802.1x Authenticator
URL:=http://hostap.epitest.fi/
DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
USERID:=network=101:network=101
PROVIDES:=hostapd
@@ -255,7 +254,7 @@ define Package/wpad/Default
CATEGORY:=Network
SUBMENU:=WirelessAPD
TITLE:=IEEE 802.1x Auth/Supplicant
DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
USERID:=network=101:network=101
URL:=http://hostap.epitest.fi/
@@ -358,7 +357,7 @@ endef
define Package/wpad-mesh
$(call Package/wpad/Default,$(1))
DEPENDS+=@PACKAGE_kmod-cfg80211 @(!TARGET_uml||BROKEN)
DEPENDS+=@(!TARGET_uml||BROKEN)
PROVIDES+=wpa-supplicant-mesh wpad-mesh
endef
@@ -400,7 +399,7 @@ define Package/wpa-supplicant/Default
SUBMENU:=WirelessAPD
TITLE:=WPA Supplicant
URL:=http://hostap.epitest.fi/wpa_supplicant/
DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
USERID:=network=101:network=101
PROVIDES:=wpa-supplicant
@@ -442,13 +441,12 @@ endef
define Package/wpa-supplicant-p2p
$(call Package/wpa-supplicant/Default,$(1))
TITLE+= (Wi-Fi P2P support)
DEPENDS+=@PACKAGE_kmod-cfg80211
VARIANT:=supplicant-p2p-internal
endef
define Package/wpa-supplicant-mesh/Default
$(call Package/wpa-supplicant/Default,$(1))
DEPENDS+=@PACKAGE_kmod-cfg80211 @(!TARGET_uml||BROKEN)
DEPENDS+=@(!TARGET_uml||BROKEN)
PROVIDES+=wpa-supplicant-mesh
endef
@@ -589,9 +587,7 @@ TARGET_CPPFLAGS := \
TARGET_LDFLAGS += -lubox -lubus
ifdef CONFIG_PACKAGE_kmod-cfg80211
TARGET_LDFLAGS += -lm -lnl-tiny
endif
TARGET_LDFLAGS += -lubox -lubus -lblobmsg_json -lucode -lm -lnl-tiny
ifdef CONFIG_WPA_ENABLE_WEP
DRIVER_MAKEOPTS += CONFIG_WEP=y
+1 -1
View File
@@ -6,7 +6,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall
PKG_VERSION:=4.78-3
PKG_VERSION:=4.78-4
PKG_RELEASE:=
PKG_CONFIG_DEPENDS:= \
@@ -981,10 +981,10 @@ run_redir() {
case "$(config_t_get global direct_dns_mode "auto")" in
udp)
_args="${_args} direct_dns_udp_server=$(config_t_get global direct_dns_udp 223.5.5.5 | sed 's/:/#/g')
_args="${_args} direct_dns_udp_server=$(config_t_get global direct_dns_udp 223.5.5.5 | sed 's/:/#/g')"
;;
tcp)
_args="${_args} direct_dns_tcp_server=$(config_t_get global direct_dns_tcp 223.5.5.5 | sed 's/:/#/g')
_args="${_args} direct_dns_tcp_server=$(config_t_get global direct_dns_tcp 223.5.5.5 | sed 's/:/#/g')"
;;
dot)
local tmp_dot_dns=$(config_t_get global direct_dns_dot "tls://dot.pub@1.12.12.12")
+8 -8
View File
@@ -2758,9 +2758,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "reqwest"
version = "0.12.8"
version = "0.12.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b"
checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f"
dependencies = [
"base64 0.22.1",
"bytes",
@@ -3122,9 +3122,9 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.213"
version = "1.0.214"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1"
checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5"
dependencies = [
"serde_derive",
]
@@ -3150,9 +3150,9 @@ dependencies = [
[[package]]
name = "serde_derive"
version = "1.0.213"
version = "1.0.214"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5"
checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766"
dependencies = [
"proc-macro2",
"quote",
@@ -3921,9 +3921,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]]
name = "tun2"
version = "3.1.8"
version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "294ac0e21fef392b8952f1dd538bc5752fd7c2ebfde1c204b0dd09aaa5489cd0"
checksum = "21afe73d3d42581a7400fbf5aec057a646ffe3f8bb5ae3f61d88c7e7f4ac77be"
dependencies = [
"bytes",
"cfg-if",
@@ -186,7 +186,7 @@ flate2 = { version = "1.0", optional = true }
brotli = { version = "7.0", optional = true }
zstd = { version = "0.13", optional = true }
tun2 = { version = "3.1", optional = true, default-features = false, features = [
tun2 = { version = "4.0", optional = true, default-features = false, features = [
"async",
] }
etherparse = { version = "0.16", optional = true }
+2
View File
@@ -24,6 +24,8 @@ jobs:
- name: Build
run: |
brew install automake
brew install autoconf
brew install libtool
make VERSION="${GITHUB_SHA::7}" debug
make debug-dmg
shasum -a 256 build/Debug/ShadowsocksX-NG.dmg > build/Debug/ShadowsocksX-NG.dmg.checksum
+2
View File
@@ -21,6 +21,8 @@ jobs:
- name: Build
run: |
brew install automake
brew install autoconf
brew install libtool
make VERSION="${GITHUB_REF_NAME}" release
make release-dmg
shasum -a 256 build/Release/ShadowsocksX-NG.dmg > build/Release/ShadowsocksX-NG.dmg.checksum
@@ -627,42 +627,43 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
}
func handleFoundSSURL(_ note: Notification) {
let sendNotify = {
(title: String, subtitle: String, infoText: String) in
let sendNotify = { (title: String, subtitle: String, infoText: String) in
let userNote = NSUserNotification()
userNote.title = title
userNote.subtitle = subtitle
userNote.informativeText = infoText
userNote.soundName = NSUserNotificationDefaultSoundName
NSUserNotificationCenter.default
.deliver(userNote);
NSUserNotificationCenter.default.deliver(userNote)
}
if let userInfo = (note as NSNotification).userInfo {
let urls: [URL] = userInfo["urls"] as! [URL]
//
if let error = userInfo["error"] as? String {
sendNotify("Scan Failed", "", error.localized)
return
}
let mgr = ServerProfileManager.instance
let addCount = mgr.addServerProfileByURL(urls: urls)
// 使
let title = (userInfo["title"] as? String) ?? ""
let subtitle = (userInfo["subtitle"] as? String) ?? ""
let body = (userInfo["body"] as? String) ?? ""
let urls: [URL] = userInfo["urls"] as! [URL]
let addCount = ServerProfileManager.instance.addServerProfileByURL(urls: urls)
if addCount > 0 {
var subtitle: String = ""
if userInfo["source"] as! String == "qrcode" {
subtitle = "By scan QR Code".localized
} else if userInfo["source"] as! String == "url" {
subtitle = "By handle SS URL".localized
} else if userInfo["source"] as! String == "pasteboard" {
subtitle = "By import from pasteboard".localized
}
sendNotify("Add \(addCount) Shadowsocks Server Profile".localized, subtitle, "")
sendNotify(
title.localized,
subtitle.localized,
"Successfully added \(addCount) server configuration(s)".localized
)
} else {
if userInfo["source"] as! String == "qrcode" {
sendNotify("", "", "Not found valid QRCode of shadowsocks profile".localized)
} else if userInfo["source"] as! String == "url" {
sendNotify("", "", "Not found valid URL of shadowsocks profile".localized)
}
sendNotify(
title.localized,
subtitle.localized,
body.localized
)
}
}
}
@@ -49,5 +49,7 @@
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>SWBApplication</string>
<key>NSScreenCaptureUsageDescription</key>
<string>ShadowsocksX-NG needs Screen Recording permission to scan QR codes on your screen</string>
</dict>
</plist>
+113 -31
View File
@@ -10,71 +10,153 @@
#import <CoreImage/CoreImage.h>
#import <AppKit/AppKit.h>
void ScanQRCodeOnScreen(void) {
void ScanQRCodeOnScreen(void) {
/* check system version and permission status */
if (@available(macOS 10.12, *)) {
BOOL hasPermission = CGPreflightScreenCaptureAccess();
NSLog(@"Screen Recording Permission Status: %@", hasPermission ? @"Granted" : @"Not Granted");
if (!hasPermission) {
NSLog(@"Requesting Screen Recording Permission...");
CGRequestScreenCaptureAccess();
/* check permission status after request */
hasPermission = CGPreflightScreenCaptureAccess();
NSLog(@"Screen Recording Permission Status After Request: %@", hasPermission ? @"Granted" : @"Not Granted");
if (!hasPermission) {
NSLog(@"Screen Recording Permission Denied");
/* send notification about permission missing */
[[NSNotificationCenter defaultCenter]
postNotificationName:@"NOTIFY_FOUND_SS_URL"
object:nil
userInfo:@{
@"urls": @[],
@"source": @"qrcode",
@"error": @"Screen Recording permission required. Please grant permission in System Preferences and restart ShadowsocksX-NG"
}];
/* open system privacy settings */
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture"]];
return;
}
}
NSLog(@"Proceeding with screen capture...");
}
/* displays[] Quartz display ID's */
CGDirectDisplayID *displays = nil;
CGError err = CGDisplayNoErr;
CGDisplayCount dspCount = 0;
/* How many active displays do we have? */
err = CGGetActiveDisplayList(0, NULL, &dspCount);
/* variables for collecting scan information */
NSMutableDictionary *scanInfo = [NSMutableDictionary dictionary];
NSMutableArray *foundSSUrls = [NSMutableArray array];
NSMutableArray *foundQRCodes = [NSMutableArray array];
/* If we are getting an error here then their won't be much to display. */
if(err != CGDisplayNoErr)
{
NSLog(@"Could not get active display count (%d)\n", err);
/* How many active displays do we have? */
CGError err = CGGetActiveDisplayList(0, NULL, &dspCount);
if(err != CGDisplayNoErr) {
[[NSNotificationCenter defaultCenter]
postNotificationName:@"NOTIFY_FOUND_SS_URL"
object:nil
userInfo:@{
@"urls": @[],
@"source": @"qrcode",
@"error": @"Failed to get display list"
}];
return;
}
scanInfo[@"displayCount"] = @(dspCount);
NSLog(@"Found %d displays", dspCount);
/* Allocate enough memory to hold all the display IDs we have. */
displays = calloc((size_t)dspCount, sizeof(CGDirectDisplayID));
// Get the list of active displays
err = CGGetActiveDisplayList(dspCount,
displays,
&dspCount);
err = CGGetActiveDisplayList(dspCount, displays, &dspCount);
/* More error-checking here. */
if(err != CGDisplayNoErr)
{
NSLog(@"Could not get active display list (%d)\n", err);
if(err != CGDisplayNoErr) {
free(displays);
[[NSNotificationCenter defaultCenter]
postNotificationName:@"NOTIFY_FOUND_SS_URL"
object:nil
userInfo:@{
@"urls": @[],
@"source": @"qrcode",
@"error": @"Failed to get display information"
}];
return;
}
NSMutableArray* foundSSUrls = [NSMutableArray array];
CIDetector *detector = [CIDetector detectorOfType:@"CIDetectorTypeQRCode"
context:nil
options:@{ CIDetectorAccuracy:CIDetectorAccuracyHigh }];
context:nil
options:@{ CIDetectorAccuracy:CIDetectorAccuracyHigh }];
for (unsigned int displaysIndex = 0; displaysIndex < dspCount; displaysIndex++)
{
/* Make a snapshot image of the current display. */
int totalQRCodesFound = 0;
int validSSUrlsFound = 0;
for (unsigned int displaysIndex = 0; displaysIndex < dspCount; displaysIndex++) {
CGImageRef image = CGDisplayCreateImage(displays[displaysIndex]);
NSArray *features = [detector featuresInImage:[CIImage imageWithCGImage:image]];
/* count total QR codes found */
totalQRCodesFound += (int)features.count;
for (CIQRCodeFeature *feature in features) {
NSLog(@"%@", feature.messageString);
if ( [feature.messageString hasPrefix:@"ss://"] )
{
NSLog(@"Found QR Code: %@", feature.messageString);
[foundQRCodes addObject:feature.messageString];
if ([feature.messageString hasPrefix:@"ss://"]) {
NSURL *url = [NSURL URLWithString:feature.messageString];
if (url) {
[foundSSUrls addObject:url];
validSSUrlsFound++;
}
}
}
CGImageRelease(image);
CGImageRelease(image);
}
free(displays);
/* prepare notification information */
NSString *notificationTitle;
NSString *notificationSubtitle;
NSString *notificationBody;
if (totalQRCodesFound == 0) {
notificationTitle = [NSString stringWithFormat:@"Scanned %d displays", dspCount];
notificationSubtitle = @"No QR codes found";
notificationBody = @"Try adjusting the QR code position on your screen";
} else if (validSSUrlsFound == 0) {
notificationTitle = [NSString stringWithFormat:@"Found %d QR code(s)", totalQRCodesFound];
notificationSubtitle = @"No valid Shadowsocks URLs";
notificationBody = @"QR codes found are not Shadowsocks configuration";
} else {
notificationTitle = [NSString stringWithFormat:@"Found %d Shadowsocks URL(s)", validSSUrlsFound];
notificationSubtitle = [NSString stringWithFormat:@"Scanned %d displays, found %d QR codes", dspCount, totalQRCodesFound];
notificationBody = @"Processing Shadowsocks configuration...";
}
[[NSNotificationCenter defaultCenter]
postNotificationName:@"NOTIFY_FOUND_SS_URL"
object:nil
userInfo: @{ @"urls": foundSSUrls,
@"source": @"qrcode"
}
];
userInfo:@{
@"urls": foundSSUrls,
@"source": @"qrcode",
@"title": notificationTitle,
@"subtitle": notificationSubtitle,
@"body": notificationBody,
@"scanInfo": @{
@"displayCount": @(dspCount),
@"totalQRCodes": @(totalQRCodesFound),
@"validURLs": @(validSSUrlsFound)
}
}];
}
NSImage* createQRImage(NSString *string, NSSize size) {
+1 -1
View File
@@ -1,6 +1,6 @@
include $(TOPDIR)/rules.mk
PKG_VERSION:=1.9.1
PKG_VERSION:=1.9.2
LUCI_TITLE:=LuCI Support for mihomo
LUCI_DEPENDS:=+luci-base +mihomo
+1 -1
View File
@@ -6,7 +6,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall
PKG_VERSION:=4.78-3
PKG_VERSION:=4.78-4
PKG_RELEASE:=
PKG_CONFIG_DEPENDS:= \
@@ -981,10 +981,10 @@ run_redir() {
case "$(config_t_get global direct_dns_mode "auto")" in
udp)
_args="${_args} direct_dns_udp_server=$(config_t_get global direct_dns_udp 223.5.5.5 | sed 's/:/#/g')
_args="${_args} direct_dns_udp_server=$(config_t_get global direct_dns_udp 223.5.5.5 | sed 's/:/#/g')"
;;
tcp)
_args="${_args} direct_dns_tcp_server=$(config_t_get global direct_dns_tcp 223.5.5.5 | sed 's/:/#/g')
_args="${_args} direct_dns_tcp_server=$(config_t_get global direct_dns_tcp 223.5.5.5 | sed 's/:/#/g')"
;;
dot)
local tmp_dot_dns=$(config_t_get global direct_dns_dot "tls://dot.pub@1.12.12.12")
@@ -103,7 +103,6 @@ ipset_r() {
$IPT -A SS_SPEC_WAN_AC -m set --match-set china dst -j RETURN
$IPT -A SS_SPEC_WAN_AC -m set --match-set gfwlist dst -j SS_SPEC_WAN_FW
$IPT -A SS_SPEC_WAN_AC -m set --match-set gmlan src -m set ! --match-set china dst -j SS_SPEC_WAN_FW
$IPT -A SS_SPEC_WAN_AC -j SS_SPEC_WAN_FW
;;
oversea)
ipset -N oversea hash:net 2>/dev/null
@@ -9,7 +9,7 @@ require "luci.model.uci"
local icount = 0
local args = arg[1]
local uci = luci.model.uci.cursor()
local TMP_DNSMASQ_PATH = "/tmp/dnsmasq.d/dnsmasq-ssrplus.d"
local TMP_DNSMASQ_PATH = "${DNSMASQ_CONF_DIR%*/}/dnsmasq-ssrplus.d"
local TMP_PATH = "/var/etc/ssrplus"
-- match comments/title/whitelist/ip address/excluded_domain
local comment_pattern = "^[!\\[@]+"
+1 -1
View File
@@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mihomo
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git
+28 -2
View File
@@ -264,10 +264,10 @@ start_service() {
ip tuntap add dev "$TUN_DEVICE" mode tun vnet_hdr
ip link set "$TUN_DEVICE" up
if [ "$ipv4_proxy" == 1 ]; then
ip route add unicast default dev $TUN_DEVICE table "$TUN_ROUTE_TABLE"
ip route add unicast default dev "$TUN_DEVICE" table "$TUN_ROUTE_TABLE"
fi
if [ "$ipv6_proxy" == 1 ]; then
ip -6 route add unicast default dev $TUN_DEVICE table "$TUN_ROUTE_TABLE"
ip -6 route add unicast default dev "$TUN_DEVICE" table "$TUN_ROUTE_TABLE"
fi
$TUN_SH
fi
@@ -379,6 +379,23 @@ start_service() {
fi
nft add rule inet "$FW_TABLE" mangle_prerouting meta l4proto udp jump "${access_control_mode}_${udp_transparent_proxy_mode}"
fi
# fix compatible between tproxy and dockerd (kmod-br-netfilter)
if [ "$tproxy_enable" == 1 ] && (lsmod | grep -q br_netfilter); then
if [ "$ipv4_proxy" == 1 ]; then
local bridge_nf_call_iptables; bridge_nf_call_iptables=$(sysctl -e -n net.bridge.bridge-nf-call-iptables)
if [ "$bridge_nf_call_iptables" == 1 ]; then
touch /tmp/bridge_nf_call_iptables.flag
sysctl -q -w net.bridge.bridge-nf-call-iptables=0
fi
fi
if [ "$ipv6_proxy" == 1 ]; then
local bridge_nf_call_ip6tables; bridge_nf_call_ip6tables=$(sysctl -e -n net.bridge.bridge-nf-call-ip6tables)
if [ "$bridge_nf_call_ip6tables" == 1 ]; then
touch /tmp/bridge_nf_call_ip6tables.flag
sysctl -q -w net.bridge.bridge-nf-call-ip6tables=0
fi
fi
fi
fi
# cron
if [[ "$scheduled_restart" == 1 && -n "$cron_expression" ]]; then
@@ -431,6 +448,15 @@ cleanup() {
for handle in $handles; do
nft delete rule inet fw4 forward handle "$handle"
done
# revert fix compatible between tproxy and dockerd (kmod-br-netfilter)
if [ -f "/tmp/bridge_nf_call_iptables.flag" ]; then
rm -f /tmp/bridge_nf_call_iptables.flag
sysctl -q -w net.bridge.bridge-nf-call-iptables=1
fi
if [ -f "/tmp/bridge_nf_call_ip6tables.flag" ]; then
rm -f /tmp/bridge_nf_call_ip6tables.flag
sysctl -q -w net.bridge.bridge-nf-call-ip6tables=1
fi
# delete cron
sed -i '/#mihomo/d' "/etc/crontabs/root" > /dev/null 2>&1
/etc/init.d/cron restart
+9 -8
View File
@@ -15,18 +15,19 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
- name: Setup Java
uses: actions/setup-java@v4
uses: actions/setup-java@v4.5.0
with:
distribution: 'temurin'
java-version: '17'
java-version: '21'
- name: Setup Golang
uses: actions/setup-go@v5
with:
go-version: '1.22.4'
cache: false
- name: Install gomobile
run: |
@@ -34,7 +35,7 @@ jobs:
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
- name: Setup Android environment
uses: android-actions/setup-android@v3
uses: android-actions/setup-android@v3.2.1
- name: Build dependencies
run: |
@@ -55,28 +56,28 @@ jobs:
./gradlew assembleDebug
- name: Upload arm64-v8a APK
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v4.4.3
if: ${{ success() }}
with:
name: arm64-v8a
path: ${{ github.workspace }}/V2rayNG/app/build/outputs/apk/debug/*arm64-v8a*.apk
- name: Upload armeabi-v7a APK
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v4.4.3
if: ${{ success() }}
with:
name: armeabi-v7a
path: ${{ github.workspace }}/V2rayNG/app/build/outputs/apk/debug/*armeabi-v7a*.apk
- name: Upload x86 APK
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v4.4.3
if: ${{ success() }}
with:
name: x86-apk
path: ${{ github.workspace }}/V2rayNG/app/build/outputs/apk/debug/*x86*.apk
- name: Upload Other APKs
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v4.4.3
with:
name: others-apk
path: |
+1 -1
View File
@@ -10,7 +10,7 @@ android {
defaultConfig {
applicationId = "com.v2ray.ang"
minSdk = 21
targetSdk = 34
targetSdk = 35
versionCode = 603
versionName = "1.9.9"
multiDexEnabled = true
@@ -224,8 +224,7 @@
<activity
android:name=".ui.TaskerActivity"
android:exported="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
android:icon="@mipmap/ic_launcher">
<intent-filter>
<action android:name="com.twofortyfouram.locale.intent.action.EDIT_SETTING" />
</intent-filter>
@@ -234,7 +233,8 @@
<receiver
android:name=".receiver.TaskerReceiver"
android:exported="true"
android:process=":RunSoLibV2RayDaemon">
android:process=":RunSoLibV2RayDaemon"
tools:ignore="ExportedReceiver">
<intent-filter>
<action android:name="com.twofortyfouram.locale.intent.action.FIRE_SETTING" />
</intent-filter>
@@ -1,6 +1,6 @@
package com.v2ray.ang.dto
data class ProfileItem(
data class ProfileLiteItem(
val configType: EConfigType,
var subscriptionId: String = "",
var remarks: String = "",
@@ -2,5 +2,5 @@ package com.v2ray.ang.dto
data class ServersCache(
val guid: String,
val profile: ProfileItem
val profile: ProfileLiteItem
)
@@ -365,7 +365,8 @@ object AngConfigManager {
val httpPort = SettingsManager.getHttpPort()
Utils.getUrlContentWithCustomUserAgent(url, 30000, httpPort)
} catch (e: Exception) {
e.printStackTrace()
Log.e(AppConfig.ANG_PACKAGE, "Update subscription: proxy not ready or other error, try……")
//e.printStackTrace()
""
}
if (configText.isEmpty()) {
@@ -5,7 +5,7 @@ import com.tencent.mmkv.MMKV
import com.v2ray.ang.AppConfig.PREF_IS_BOOTED
import com.v2ray.ang.AppConfig.PREF_ROUTING_RULESET
import com.v2ray.ang.dto.AssetUrlItem
import com.v2ray.ang.dto.ProfileItem
import com.v2ray.ang.dto.ProfileLiteItem
import com.v2ray.ang.dto.RulesetItem
import com.v2ray.ang.dto.ServerAffiliationInfo
import com.v2ray.ang.dto.ServerConfig
@@ -72,7 +72,7 @@ object MmkvManager {
return JsonUtil.fromJson(json, ServerConfig::class.java)
}
fun decodeProfileConfig(guid: String): ProfileItem? {
fun decodeProfileConfig(guid: String): ProfileLiteItem? {
if (guid.isBlank()) {
return null
}
@@ -80,7 +80,7 @@ object MmkvManager {
if (json.isNullOrBlank()) {
return null
}
return JsonUtil.fromJson(json, ProfileItem::class.java)
return JsonUtil.fromJson(json, ProfileLiteItem::class.java)
}
fun encodeServerConfig(guid: String, config: ServerConfig): String {
@@ -94,7 +94,7 @@ object MmkvManager {
mainStorage.encode(KEY_SELECTED_SERVER, key)
}
}
val profile = ProfileItem(
val profile = ProfileLiteItem(
configType = config.configType,
subscriptionId = config.subscriptionId,
remarks = config.remarks,
@@ -16,7 +16,7 @@ import com.v2ray.ang.AppConfig
import com.v2ray.ang.AppConfig.ANG_PACKAGE
import com.v2ray.ang.R
import com.v2ray.ang.dto.EConfigType
import com.v2ray.ang.dto.ProfileItem
import com.v2ray.ang.dto.ProfileLiteItem
import com.v2ray.ang.dto.ServerConfig
import com.v2ray.ang.dto.ServersCache
import com.v2ray.ang.dto.V2rayConfig
@@ -102,7 +102,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
val key = MmkvManager.encodeServerConfig("", config)
MmkvManager.encodeServerRaw(key, server)
serverList.add(0, key)
val profile = ProfileItem(
val profile = ProfileLiteItem(
configType = config.configType,
subscriptionId = config.subscriptionId,
remarks = config.remarks,
@@ -131,7 +131,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
var profile = MmkvManager.decodeProfileConfig(guid)
if (profile == null) {
val config = MmkvManager.decodeServerConfig(guid) ?: continue
profile = ProfileItem(
profile = ProfileLiteItem(
configType = config.configType,
subscriptionId = config.subscriptionId,
remarks = config.remarks,
@@ -97,7 +97,7 @@
<string name="server_lab_content">Данные</string>
<string name="toast_none_data_clipboard">В буфере обмена нет данных</string>
<string name="toast_invalid_url">Неправильный URL</string>
<string name="toast_insecure_url_protocol">Please do not use the insecure HTTP protocol subscription address</string>
<string name="toast_insecure_url_protocol">Не используйте небезопасный HTTP-протокол в адресе подписки</string>
<string name="server_lab_need_inbound">Убедитесь, что входящий порт соответствует настройкам</string>
<string name="toast_malformed_josn">Профиль повреждён</string>
<string name="server_lab_request_host6">Узел (SNI) (необязательно)</string>
@@ -316,6 +316,7 @@
<item>Белый список Китая</item>
<item>Чёрный список Китая</item>
<item>Общие</item>
<item>Белый список Ирана</item>
</string-array>
</resources>
+20 -10
View File
@@ -248,16 +248,14 @@ bool CliConnection::OnEndHeadersForStream(http2::adapter::Http2StreamId stream_i
}
LOG(INFO) << "Connection (client) " << connection_id() << " for " << remote_domain() << " Padding support "
<< (padding_support_ ? "enabled" : "disabled") << " Backed by " << server_field << ".";
// we're done
request_map_.clear();
return true;
}
bool CliConnection::OnEndStream(StreamId stream_id) {
if (stream_id == stream_id_) {
data_frame_ = nullptr;
stream_id_ = 0;
adapter_->SubmitGoAway(0, http2::adapter::Http2ErrorCode::HTTP2_NO_ERROR, ""sv);
DCHECK(adapter_->want_write());
}
http2_stream_recv_eof_ = true;
return true;
}
@@ -282,13 +280,15 @@ void CliConnection::OnConnectionError(ConnectionError error) {
}
bool CliConnection::OnFrameHeader(StreamId stream_id, size_t /*length*/, uint8_t /*type*/, uint8_t /*flags*/) {
if (stream_id && stream_id != stream_id_) {
LOG(WARNING) << "Connection (client) " << connection_id() << " refused unexpected HTTP/2 Push";
return false;
}
return true;
}
bool CliConnection::OnBeginHeadersForStream(StreamId stream_id) {
if (stream_id) {
DCHECK_EQ(stream_id, stream_id_) << "Client only support one stream";
}
DCHECK_EQ(stream_id, stream_id_) << "Unexpected http2 request stream: " << stream_id << " expected: " << stream_id_;
return true;
}
@@ -1109,6 +1109,12 @@ out:
SendIfNotProcessing();
WriteUpstreamInPipe();
}
if (http2_stream_recv_eof_ && downstream_.empty() && !shutdown_) {
VLOG(2) << "Connection (client) " << connection_id() << " last data sent: shutting down";
shutdown_ = true;
asio::error_code ec;
downlink_->shutdown(ec);
}
#endif
if (downstream_.empty()) {
if (!ec) {
@@ -2088,8 +2094,12 @@ void CliConnection::OnStreamRead(std::shared_ptr<IOBuf> buf) {
void CliConnection::OnStreamWrite() {
OnDownstreamWriteFlush();
/* shutdown the socket if upstream is eof and all remaining data sent */
/* shutdown the socket if upstream/http2 stream is eof and all remaining data sent */
#ifdef HAVE_QUICHE
if (channel_ && (channel_->eof() || http2_stream_recv_eof_) && downstream_.empty() && !shutdown_) {
#else
if (channel_ && channel_->eof() && downstream_.empty() && !shutdown_) {
#endif
VLOG(2) << "Connection (client) " << connection_id() << " last data sent: shutting down";
shutdown_ = true;
asio::error_code ec;
+3
View File
@@ -179,6 +179,9 @@ class CliConnection : public gurl_base::RefCountedThreadSafe<CliConnection>,
StreamId stream_id_ = 0;
DataFrameSource* data_frame_ = nullptr;
/// flag to mark stream is eof (recv side)
bool http2_stream_recv_eof_ = false;
public:
StreamId blocked_stream_ = 0;
#endif // HAVE_QUICHE
+12 -12
View File
@@ -353,18 +353,15 @@ bool ServerConnection::OnEndHeadersForStream(http2::adapter::Http2StreamId strea
padding_support_ = false;
}
// we're done
request_map_.clear();
SetState(state_stream);
OnConnect();
return true;
}
bool ServerConnection::OnEndStream(StreamId stream_id) {
if (stream_id == stream_id_) {
data_frame_ = nullptr;
stream_id_ = 0;
adapter_->SubmitGoAway(0, http2::adapter::Http2ErrorCode::HTTP2_NO_ERROR, ""sv);
DCHECK(adapter_->want_write());
}
return true;
}
@@ -389,16 +386,19 @@ void ServerConnection::OnConnectionError(ConnectionError error) {
}
bool ServerConnection::OnFrameHeader(StreamId stream_id, size_t /*length*/, uint8_t /*type*/, uint8_t /*flags*/) {
// we begin with new stream
if (!stream_id_) {
stream_id_ = stream_id;
}
if (stream_id && stream_id != stream_id_) {
LOG(INFO) << "Connection (server) " << connection_id() << " refused new stream: " << stream_id;
return false;
}
return true;
}
bool ServerConnection::OnBeginHeadersForStream(StreamId stream_id) {
if (!stream_id_) {
stream_id_ = stream_id;
}
if (stream_id) {
DCHECK_EQ(stream_id, stream_id_) << "Server only support one stream";
}
DCHECK_EQ(stream_id, stream_id_) << "Unexpected http2 request stream: " << stream_id << " expected: " << stream_id_;
return true;
}