🌱 初步建立pipe&成功调用dll

This commit is contained in:
BTMuli
2025-11-23 17:23:25 +08:00
committed by 目棃
parent d787b8dc8b
commit 93cca5f715
12 changed files with 743 additions and 158 deletions

View File

@@ -3,7 +3,7 @@
"version": "0.8.6",
"description": "Game Tool for GenshinImpact player",
"private": true,
"packageManager": "pnpm@10.22.0",
"packageManager": "pnpm@10.23.0",
"type": "module",
"scripts": {
"build": "tauri build",
@@ -113,7 +113,7 @@
"@types/js-md5": "^0.8.0",
"@types/node": "^24.10.1",
"@typescript-eslint/parser": "^8.47.0",
"@typescript/native-preview": "7.0.0-dev.20251118.1",
"@typescript/native-preview": "7.0.0-dev.20251121.1",
"@vitejs/plugin-vue": "^6.0.2",
"app-root-path": "^3.1.0",
"concurrently": "^9.2.1",
@@ -121,16 +121,16 @@
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jsonc": "^2.21.0",
"eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-vue": "^10.5.1",
"eslint-plugin-vue": "^10.6.0",
"eslint-plugin-yml": "^1.19.0",
"fs-extra": "^11.3.2",
"globals": "^16.5.0",
"husky": "^9.1.7",
"jsonc-eslint-parser": "^2.4.1",
"lint-staged": "^16.2.6",
"lint-staged": "^16.2.7",
"oxlint": "^1.29.0",
"prettier": "3.6.2",
"stylelint": "^16.25.0",
"stylelint": "^16.26.0",
"stylelint-config-idiomatic-order": "^10.0.0",
"stylelint-config-standard-scss": "^16.0.0",
"stylelint-config-standard-vue": "^1.0.0",
@@ -142,7 +142,7 @@
"tsx": "^4.20.6",
"typescript": "^5.9.3",
"typescript-eslint": "^8.47.0",
"vite": "npm:rolldown-vite@^7.2.6",
"vite": "npm:rolldown-vite@^7.2.7",
"vite-plugin-vue-devtools": "^8.0.5",
"vite-plugin-vuetify": "^2.1.2",
"vue-eslint-parser": "^10.2.0",

285
pnpm-lock.yaml generated
View File

@@ -133,11 +133,11 @@ importers:
specifier: ^8.47.0
version: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
'@typescript/native-preview':
specifier: 7.0.0-dev.20251118.1
version: 7.0.0-dev.20251118.1
specifier: 7.0.0-dev.20251121.1
version: 7.0.0-dev.20251121.1
'@vitejs/plugin-vue':
specifier: ^6.0.2
version: 6.0.2(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
version: 6.0.2(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
app-root-path:
specifier: ^3.1.0
version: 3.1.0
@@ -157,8 +157,8 @@ importers:
specifier: ^5.5.4
version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2)
eslint-plugin-vue:
specifier: ^10.5.1
version: 10.5.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1)))
specifier: ^10.6.0
version: 10.6.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1)))
eslint-plugin-yml:
specifier: ^1.19.0
version: 1.19.0(eslint@9.39.1(jiti@2.6.1))
@@ -175,8 +175,8 @@ importers:
specifier: ^2.4.1
version: 2.4.1
lint-staged:
specifier: ^16.2.6
version: 16.2.6
specifier: ^16.2.7
version: 16.2.7
oxlint:
specifier: ^1.29.0
version: 1.29.0
@@ -184,32 +184,32 @@ importers:
specifier: 3.6.2
version: 3.6.2
stylelint:
specifier: ^16.25.0
version: 16.25.0(typescript@5.9.3)
specifier: ^16.26.0
version: 16.26.0(typescript@5.9.3)
stylelint-config-idiomatic-order:
specifier: ^10.0.0
version: 10.0.0(stylelint@16.25.0(typescript@5.9.3))
version: 10.0.0(stylelint@16.26.0(typescript@5.9.3))
stylelint-config-standard-scss:
specifier: ^16.0.0
version: 16.0.0(postcss@8.5.6)(stylelint@16.25.0(typescript@5.9.3))
version: 16.0.0(postcss@8.5.6)(stylelint@16.26.0(typescript@5.9.3))
stylelint-config-standard-vue:
specifier: ^1.0.0
version: 1.0.0(postcss-html@1.6.0)(stylelint@16.25.0(typescript@5.9.3))
version: 1.0.0(postcss-html@1.6.0)(stylelint@16.26.0(typescript@5.9.3))
stylelint-declaration-block-no-ignored-properties:
specifier: ^2.8.0
version: 2.8.0(stylelint@16.25.0(typescript@5.9.3))
version: 2.8.0(stylelint@16.26.0(typescript@5.9.3))
stylelint-high-performance-animation:
specifier: ^1.11.0
version: 1.11.0(stylelint@16.25.0(typescript@5.9.3))
version: 1.11.0(stylelint@16.26.0(typescript@5.9.3))
stylelint-order:
specifier: ^7.0.0
version: 7.0.0(stylelint@16.25.0(typescript@5.9.3))
version: 7.0.0(stylelint@16.26.0(typescript@5.9.3))
stylelint-prettier:
specifier: ^5.0.3
version: 5.0.3(prettier@3.6.2)(stylelint@16.25.0(typescript@5.9.3))
version: 5.0.3(prettier@3.6.2)(stylelint@16.26.0(typescript@5.9.3))
stylelint-scss:
specifier: ^6.12.1
version: 6.12.1(stylelint@16.25.0(typescript@5.9.3))
version: 6.12.1(stylelint@16.26.0(typescript@5.9.3))
tsx:
specifier: ^4.20.6
version: 4.20.6
@@ -220,14 +220,14 @@ importers:
specifier: ^8.47.0
version: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
vite:
specifier: npm:rolldown-vite@^7.2.6
version: rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
specifier: npm:rolldown-vite@^7.2.7
version: rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite-plugin-vue-devtools:
specifier: ^8.0.5
version: 8.0.5(@nuxt/kit@3.17.5)(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
version: 8.0.5(@nuxt/kit@3.17.5)(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
vite-plugin-vuetify:
specifier: ^2.1.2
version: 2.1.2(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))(vuetify@3.10.11)
version: 2.1.2(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))(vuetify@3.10.11)
vue-eslint-parser:
specifier: ^10.2.0
version: 10.2.0(eslint@9.39.1(jiti@2.6.1))
@@ -1111,43 +1111,43 @@ packages:
resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript/native-preview-darwin-arm64@7.0.0-dev.20251118.1':
resolution: {integrity: sha512-S3f/19naNfm4pYtDwSL3zVjnGVFsJUUvyYWCMyiSfH/pl3r946oT8EFRX5ZFqhmrRzsro/eOKKCkI6NW8LgKQA==}
'@typescript/native-preview-darwin-arm64@7.0.0-dev.20251121.1':
resolution: {integrity: sha512-EAJ7kC/K+11aRgQ1XpMNvffpwTlLgj+YgCfYB/PbwvhpQaRu39rg2LoOSBhcUjyOqo+n8uwHRzjBJxaLGLghlQ==}
cpu: [arm64]
os: [darwin]
'@typescript/native-preview-darwin-x64@7.0.0-dev.20251118.1':
resolution: {integrity: sha512-CN3womymw0PBkVxsJ0hwANFNfksi47sT76rZUYJihr5Ckp5GIrWfew8wiO2rRc0Fozg4eYhrWHqZFneI0UlWzg==}
'@typescript/native-preview-darwin-x64@7.0.0-dev.20251121.1':
resolution: {integrity: sha512-4J2O1JIv1Ayi6iFrZE3+T443gqKKf7zJ/D0j2iDvVijcc6ZxFsvuWBTKOZjmF4Di7GDt41Yc4LEtzYyAd4vjfQ==}
cpu: [x64]
os: [darwin]
'@typescript/native-preview-linux-arm64@7.0.0-dev.20251118.1':
resolution: {integrity: sha512-8ekzTFSCci6utz6OXRasREudIihydjPU+G/Mp05cZGkTyF+Jgwge/JSmMnJ3OuC0GOq6At+aHVzj/xzJ2wvA9w==}
'@typescript/native-preview-linux-arm64@7.0.0-dev.20251121.1':
resolution: {integrity: sha512-VyPxDx0T8ERHzAfxlS0CKgATRoJ9DJhIjWCbd40AMXPP8ICD5lWEECM5G2c1sNDlTU48h9kzTHjRpjY9S922Lw==}
cpu: [arm64]
os: [linux]
'@typescript/native-preview-linux-arm@7.0.0-dev.20251118.1':
resolution: {integrity: sha512-+SpJsGnueItXLmL6PJgvwel3+moqH4Tr9PUQOOYFwXIYYE08b7coYT7SjWqgA5cRh7obOc3L5ajOgFoHittTBg==}
'@typescript/native-preview-linux-arm@7.0.0-dev.20251121.1':
resolution: {integrity: sha512-IwSOUu8oz7mptrrmaHH1lMj/YsnGR+Q9RtueA9n8W56YpI6PuoiEPPQzdbwzXUEPiYnDtLMJ+u8c/DAUBT0hrw==}
cpu: [arm]
os: [linux]
'@typescript/native-preview-linux-x64@7.0.0-dev.20251118.1':
resolution: {integrity: sha512-u+JoZzThEeyZ7aPPgzfAVeFy84Zo9hdRtARxnb1FN+LagpBAQfs11g6BTmcpo2wUNzkKTHQxJi6c7Zekp8O4FQ==}
'@typescript/native-preview-linux-x64@7.0.0-dev.20251121.1':
resolution: {integrity: sha512-r+t9WcYm6YKL18YVNsuC/E6rYK7hLSQzNkljkHcGUtmcmkcwvsTpus+vJJHT7vhUyUAfRlvBxkma47eQ5PCwSg==}
cpu: [x64]
os: [linux]
'@typescript/native-preview-win32-arm64@7.0.0-dev.20251118.1':
resolution: {integrity: sha512-At7qHhLxflc3ZUSbuTP/VPvp5s9AHvFbIPxpEX0g+uHBzUkgEuJ32pIvL3szkkfwHGUdlRrMfn8CY5fuZGyWIg==}
'@typescript/native-preview-win32-arm64@7.0.0-dev.20251121.1':
resolution: {integrity: sha512-3W/5Q5ysY68/gzgsbUm4lAPq0l2/mhCGPB+yml6eOgLqSyZ0rknlyH2iGVfohxHHMiHHTBLPpVyw8jKF4DiiGw==}
cpu: [arm64]
os: [win32]
'@typescript/native-preview-win32-x64@7.0.0-dev.20251118.1':
resolution: {integrity: sha512-nyhMXoU3g1NkKZ4erZPvHB6JUpnEOIJXHnvFgXfOgrCh/KA0JPqUOk5ityE7n0xscTyleGEMptTW4Xbg8XH/+A==}
'@typescript/native-preview-win32-x64@7.0.0-dev.20251121.1':
resolution: {integrity: sha512-mGGpTd1uZmNyTu0NWI3a/hMFYmIDP5QoWOFXqAFLvsH2pc3khzkOY4b+tuAEmXx3ewXgXxObynakO8LUgfraBQ==}
cpu: [x64]
os: [win32]
'@typescript/native-preview@7.0.0-dev.20251118.1':
resolution: {integrity: sha512-rf6L3/MhHM3xFvmO3kidqdH5Q4N+U8+accIVTewqsyu35Uku7iWHfsv1zwyQEVT74LH/MCfBiShYYCi1Juh03g==}
'@typescript/native-preview@7.0.0-dev.20251121.1':
resolution: {integrity: sha512-FwmJc6WcpkLJjyoUKk/ED0IBR0b/ePj9My76n8epZj/qvibCdf27J/vWWtJJtu2VFWI/3EIJcDW0mxevwa/+Bg==}
hasBin: true
'@vitejs/plugin-vue@6.0.2':
@@ -1351,8 +1351,8 @@ packages:
resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==}
engines: {node: '>= 0.6.0'}
baseline-browser-mapping@2.8.29:
resolution: {integrity: sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==}
baseline-browser-mapping@2.8.30:
resolution: {integrity: sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==}
hasBin: true
birpc@2.8.0:
@@ -1630,8 +1630,8 @@ packages:
echarts@6.0.0:
resolution: {integrity: sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==}
electron-to-chromium@1.5.256:
resolution: {integrity: sha512-uqYq1IQhpXXLX+HgiXdyOZml7spy4xfy42yPxcCCRjswp0fYM2X+JwCON07lqnpLEGVCj739B7Yr+FngmHBMEQ==}
electron-to-chromium@1.5.259:
resolution: {integrity: sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==}
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -1782,8 +1782,8 @@ packages:
eslint-config-prettier:
optional: true
eslint-plugin-vue@10.5.1:
resolution: {integrity: sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==}
eslint-plugin-vue@10.6.0:
resolution: {integrity: sha512-TsoFluWxOpsJlE/l2jJygLQLWBPJ3Qdkesv7tBIunICbTcG0dS1/NBw/Ol4tJw5kHWlAVds4lUmC29/vlPUcEQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
@@ -1895,8 +1895,8 @@ packages:
picomatch:
optional: true
file-entry-cache@10.1.4:
resolution: {integrity: sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==}
file-entry-cache@11.1.1:
resolution: {integrity: sha512-TPVFSDE7q91Dlk1xpFLvFllf8r0HyOMOlnWy7Z2HBku5H3KhIeOGInexrIeg2D64DosVB/JXkrrk6N/7Wriq4A==}
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
@@ -2403,8 +2403,8 @@ packages:
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
lint-staged@16.2.6:
resolution: {integrity: sha512-s1gphtDbV4bmW1eylXpVMk2u7is7YsrLl8hzrtvC70h4ByhcMLZFY01Fx05ZUDNuv1H8HO4E+e2zgejV1jVwNw==}
lint-staged@16.2.7:
resolution: {integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==}
engines: {node: '>=20.17'}
hasBin: true
@@ -2705,10 +2705,6 @@ packages:
peerDependencies:
postcss: ^8.4.29
postcss-selector-parser@6.1.2:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
postcss-selector-parser@7.1.0:
resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==}
engines: {node: '>=4'}
@@ -2812,8 +2808,8 @@ packages:
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
rolldown-vite@7.2.6:
resolution: {integrity: sha512-u+0VLWLPJgwINLTQI18fSQlqfwgu8biRP4SY6HH4HLcEWZUOnDu5ARpwPYPyDahXPuhdSRHmWfS5G2/7CmqpJw==}
rolldown-vite@7.2.7:
resolution: {integrity: sha512-N6a9KgNZ0xgCJ6/Ej2FQ7W8D3fOzDwFw7CLWZ2ubZknVrs9NdNkx25AFEuNbSwQO76VEHp4N7YatsZwp/ST1Gg==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -3231,8 +3227,8 @@ packages:
peerDependencies:
stylelint: ^16.0.2
stylelint@16.25.0:
resolution: {integrity: sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==}
stylelint@16.26.0:
resolution: {integrity: sha512-Y/3AVBefrkqqapVYH3LBF5TSDZ1kw+0XpdKN2KchfuhMK6lQ85S4XOG4lIZLcrcS4PWBmvcY6eS2kCQFz0jukQ==}
engines: {node: '>=18.12.0'}
hasBin: true
@@ -4424,41 +4420,41 @@ snapshots:
'@typescript-eslint/types': 8.47.0
eslint-visitor-keys: 4.2.1
'@typescript/native-preview-darwin-arm64@7.0.0-dev.20251118.1':
'@typescript/native-preview-darwin-arm64@7.0.0-dev.20251121.1':
optional: true
'@typescript/native-preview-darwin-x64@7.0.0-dev.20251118.1':
'@typescript/native-preview-darwin-x64@7.0.0-dev.20251121.1':
optional: true
'@typescript/native-preview-linux-arm64@7.0.0-dev.20251118.1':
'@typescript/native-preview-linux-arm64@7.0.0-dev.20251121.1':
optional: true
'@typescript/native-preview-linux-arm@7.0.0-dev.20251118.1':
'@typescript/native-preview-linux-arm@7.0.0-dev.20251121.1':
optional: true
'@typescript/native-preview-linux-x64@7.0.0-dev.20251118.1':
'@typescript/native-preview-linux-x64@7.0.0-dev.20251121.1':
optional: true
'@typescript/native-preview-win32-arm64@7.0.0-dev.20251118.1':
'@typescript/native-preview-win32-arm64@7.0.0-dev.20251121.1':
optional: true
'@typescript/native-preview-win32-x64@7.0.0-dev.20251118.1':
'@typescript/native-preview-win32-x64@7.0.0-dev.20251121.1':
optional: true
'@typescript/native-preview@7.0.0-dev.20251118.1':
'@typescript/native-preview@7.0.0-dev.20251121.1':
optionalDependencies:
'@typescript/native-preview-darwin-arm64': 7.0.0-dev.20251118.1
'@typescript/native-preview-darwin-x64': 7.0.0-dev.20251118.1
'@typescript/native-preview-linux-arm': 7.0.0-dev.20251118.1
'@typescript/native-preview-linux-arm64': 7.0.0-dev.20251118.1
'@typescript/native-preview-linux-x64': 7.0.0-dev.20251118.1
'@typescript/native-preview-win32-arm64': 7.0.0-dev.20251118.1
'@typescript/native-preview-win32-x64': 7.0.0-dev.20251118.1
'@typescript/native-preview-darwin-arm64': 7.0.0-dev.20251121.1
'@typescript/native-preview-darwin-x64': 7.0.0-dev.20251121.1
'@typescript/native-preview-linux-arm': 7.0.0-dev.20251121.1
'@typescript/native-preview-linux-arm64': 7.0.0-dev.20251121.1
'@typescript/native-preview-linux-x64': 7.0.0-dev.20251121.1
'@typescript/native-preview-win32-arm64': 7.0.0-dev.20251121.1
'@typescript/native-preview-win32-x64': 7.0.0-dev.20251121.1
'@vitejs/plugin-vue@6.0.2(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))':
'@vitejs/plugin-vue@6.0.2(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))':
dependencies:
'@rolldown/pluginutils': 1.0.0-beta.50
vite: rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite: rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vue: 3.5.24(typescript@5.9.3)
'@volar/language-core@2.4.23':
@@ -4538,14 +4534,14 @@ snapshots:
dependencies:
'@vue/devtools-kit': 7.7.9
'@vue/devtools-core@8.0.5(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))':
'@vue/devtools-core@8.0.5(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))':
dependencies:
'@vue/devtools-kit': 8.0.5
'@vue/devtools-shared': 8.0.5
mitt: 3.0.1
nanoid: 5.1.6
pathe: 2.0.3
vite-hot-client: 2.1.0(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))
vite-hot-client: 2.1.0(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))
vue: 3.5.24(typescript@5.9.3)
transitivePeerDependencies:
- vite
@@ -4732,7 +4728,7 @@ snapshots:
base64-arraybuffer@1.0.2: {}
baseline-browser-mapping@2.8.29: {}
baseline-browser-mapping@2.8.30: {}
birpc@2.8.0: {}
@@ -4753,9 +4749,9 @@ snapshots:
browserslist@4.28.0:
dependencies:
baseline-browser-mapping: 2.8.29
baseline-browser-mapping: 2.8.30
caniuse-lite: 1.0.30001756
electron-to-chromium: 1.5.256
electron-to-chromium: 1.5.259
node-releases: 2.0.27
update-browserslist-db: 1.1.4(browserslist@4.28.0)
@@ -5023,7 +5019,7 @@ snapshots:
tslib: 2.3.0
zrender: 6.0.0
electron-to-chromium@1.5.256: {}
electron-to-chromium@1.5.259: {}
emoji-regex@10.6.0: {}
@@ -5250,13 +5246,13 @@ snapshots:
'@types/eslint': 9.6.1
eslint-config-prettier: 9.1.0(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1))):
eslint-plugin-vue@10.6.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1))):
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
eslint: 9.39.1(jiti@2.6.1)
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 6.1.2
postcss-selector-parser: 7.1.0
semver: 7.7.3
vue-eslint-parser: 10.2.0(eslint@9.39.1(jiti@2.6.1))
xml-name-validator: 4.0.0
@@ -5389,7 +5385,7 @@ snapshots:
optionalDependencies:
picomatch: 4.0.3
file-entry-cache@10.1.4:
file-entry-cache@11.1.1:
dependencies:
flat-cache: 6.1.19
@@ -5863,7 +5859,7 @@ snapshots:
lines-and-columns@1.2.4: {}
lint-staged@16.2.6:
lint-staged@16.2.7:
dependencies:
commander: 14.0.2
listr2: 9.0.5
@@ -6161,11 +6157,6 @@ snapshots:
dependencies:
postcss: 8.5.6
postcss-selector-parser@6.1.2:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
postcss-selector-parser@7.1.0:
dependencies:
cssesc: 3.0.0
@@ -6264,7 +6255,7 @@ snapshots:
rfdc@1.4.1: {}
rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1):
rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
'@oxc-project/runtime': 0.98.0
fdir: 6.5.0(picomatch@4.0.3)
@@ -6598,86 +6589,86 @@ snapshots:
js-tokens: 9.0.1
optional: true
stylelint-config-html@1.1.0(postcss-html@1.6.0)(stylelint@16.25.0(typescript@5.9.3)):
stylelint-config-html@1.1.0(postcss-html@1.6.0)(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
postcss-html: 1.6.0
stylelint: 16.25.0(typescript@5.9.3)
stylelint: 16.26.0(typescript@5.9.3)
stylelint-config-idiomatic-order@10.0.0(stylelint@16.25.0(typescript@5.9.3)):
stylelint-config-idiomatic-order@10.0.0(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
stylelint: 16.25.0(typescript@5.9.3)
stylelint-order: 6.0.4(stylelint@16.25.0(typescript@5.9.3))
stylelint: 16.26.0(typescript@5.9.3)
stylelint-order: 6.0.4(stylelint@16.26.0(typescript@5.9.3))
stylelint-config-recommended-scss@16.0.2(postcss@8.5.6)(stylelint@16.25.0(typescript@5.9.3)):
stylelint-config-recommended-scss@16.0.2(postcss@8.5.6)(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
postcss-scss: 4.0.9(postcss@8.5.6)
stylelint: 16.25.0(typescript@5.9.3)
stylelint-config-recommended: 17.0.0(stylelint@16.25.0(typescript@5.9.3))
stylelint-scss: 6.12.1(stylelint@16.25.0(typescript@5.9.3))
stylelint: 16.26.0(typescript@5.9.3)
stylelint-config-recommended: 17.0.0(stylelint@16.26.0(typescript@5.9.3))
stylelint-scss: 6.12.1(stylelint@16.26.0(typescript@5.9.3))
optionalDependencies:
postcss: 8.5.6
stylelint-config-recommended-vue@1.6.1(postcss-html@1.6.0)(stylelint@16.25.0(typescript@5.9.3)):
stylelint-config-recommended-vue@1.6.1(postcss-html@1.6.0)(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
postcss-html: 1.6.0
semver: 7.7.3
stylelint: 16.25.0(typescript@5.9.3)
stylelint-config-html: 1.1.0(postcss-html@1.6.0)(stylelint@16.25.0(typescript@5.9.3))
stylelint-config-recommended: 17.0.0(stylelint@16.25.0(typescript@5.9.3))
stylelint: 16.26.0(typescript@5.9.3)
stylelint-config-html: 1.1.0(postcss-html@1.6.0)(stylelint@16.26.0(typescript@5.9.3))
stylelint-config-recommended: 17.0.0(stylelint@16.26.0(typescript@5.9.3))
stylelint-config-recommended@17.0.0(stylelint@16.25.0(typescript@5.9.3)):
stylelint-config-recommended@17.0.0(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
stylelint: 16.25.0(typescript@5.9.3)
stylelint: 16.26.0(typescript@5.9.3)
stylelint-config-standard-scss@16.0.0(postcss@8.5.6)(stylelint@16.25.0(typescript@5.9.3)):
stylelint-config-standard-scss@16.0.0(postcss@8.5.6)(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
stylelint: 16.25.0(typescript@5.9.3)
stylelint-config-recommended-scss: 16.0.2(postcss@8.5.6)(stylelint@16.25.0(typescript@5.9.3))
stylelint-config-standard: 39.0.1(stylelint@16.25.0(typescript@5.9.3))
stylelint: 16.26.0(typescript@5.9.3)
stylelint-config-recommended-scss: 16.0.2(postcss@8.5.6)(stylelint@16.26.0(typescript@5.9.3))
stylelint-config-standard: 39.0.1(stylelint@16.26.0(typescript@5.9.3))
optionalDependencies:
postcss: 8.5.6
stylelint-config-standard-vue@1.0.0(postcss-html@1.6.0)(stylelint@16.25.0(typescript@5.9.3)):
stylelint-config-standard-vue@1.0.0(postcss-html@1.6.0)(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
postcss-html: 1.6.0
stylelint: 16.25.0(typescript@5.9.3)
stylelint-config-html: 1.1.0(postcss-html@1.6.0)(stylelint@16.25.0(typescript@5.9.3))
stylelint-config-recommended-vue: 1.6.1(postcss-html@1.6.0)(stylelint@16.25.0(typescript@5.9.3))
stylelint-config-standard: 39.0.1(stylelint@16.25.0(typescript@5.9.3))
stylelint: 16.26.0(typescript@5.9.3)
stylelint-config-html: 1.1.0(postcss-html@1.6.0)(stylelint@16.26.0(typescript@5.9.3))
stylelint-config-recommended-vue: 1.6.1(postcss-html@1.6.0)(stylelint@16.26.0(typescript@5.9.3))
stylelint-config-standard: 39.0.1(stylelint@16.26.0(typescript@5.9.3))
stylelint-config-standard@39.0.1(stylelint@16.25.0(typescript@5.9.3)):
stylelint-config-standard@39.0.1(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
stylelint: 16.25.0(typescript@5.9.3)
stylelint-config-recommended: 17.0.0(stylelint@16.25.0(typescript@5.9.3))
stylelint: 16.26.0(typescript@5.9.3)
stylelint-config-recommended: 17.0.0(stylelint@16.26.0(typescript@5.9.3))
stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.25.0(typescript@5.9.3)):
stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
stylelint: 16.25.0(typescript@5.9.3)
stylelint: 16.26.0(typescript@5.9.3)
stylelint-high-performance-animation@1.11.0(stylelint@16.25.0(typescript@5.9.3)):
stylelint-high-performance-animation@1.11.0(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
postcss-value-parser: 4.2.0
stylelint: 16.25.0(typescript@5.9.3)
stylelint: 16.26.0(typescript@5.9.3)
stylelint-order@6.0.4(stylelint@16.25.0(typescript@5.9.3)):
stylelint-order@6.0.4(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
postcss: 8.5.6
postcss-sorting: 8.0.2(postcss@8.5.6)
stylelint: 16.25.0(typescript@5.9.3)
stylelint: 16.26.0(typescript@5.9.3)
stylelint-order@7.0.0(stylelint@16.25.0(typescript@5.9.3)):
stylelint-order@7.0.0(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
postcss: 8.5.6
postcss-sorting: 9.1.0(postcss@8.5.6)
stylelint: 16.25.0(typescript@5.9.3)
stylelint: 16.26.0(typescript@5.9.3)
stylelint-prettier@5.0.3(prettier@3.6.2)(stylelint@16.25.0(typescript@5.9.3)):
stylelint-prettier@5.0.3(prettier@3.6.2)(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
prettier: 3.6.2
prettier-linter-helpers: 1.0.0
stylelint: 16.25.0(typescript@5.9.3)
stylelint: 16.26.0(typescript@5.9.3)
stylelint-scss@6.12.1(stylelint@16.25.0(typescript@5.9.3)):
stylelint-scss@6.12.1(stylelint@16.26.0(typescript@5.9.3)):
dependencies:
css-tree: 3.1.0
is-plain-object: 5.0.0
@@ -6687,9 +6678,9 @@ snapshots:
postcss-resolve-nested-selector: 0.1.6
postcss-selector-parser: 7.1.0
postcss-value-parser: 4.2.0
stylelint: 16.25.0(typescript@5.9.3)
stylelint: 16.26.0(typescript@5.9.3)
stylelint@16.25.0(typescript@5.9.3):
stylelint@16.26.0(typescript@5.9.3):
dependencies:
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
'@csstools/css-tokenizer': 3.0.4
@@ -6704,7 +6695,7 @@ snapshots:
debug: 4.4.3
fast-glob: 3.3.3
fastest-levenshtein: 1.0.16
file-entry-cache: 10.1.4
file-entry-cache: 11.1.1
global-modules: 2.0.0
globby: 11.1.0
globjoin: 0.1.4
@@ -6958,17 +6949,17 @@ snapshots:
varint@6.0.0: {}
vite-dev-rpc@1.1.0(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)):
vite-dev-rpc@1.1.0(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
birpc: 2.8.0
vite: rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite-hot-client: 2.1.0(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))
vite: rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite-hot-client: 2.1.0(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))
vite-hot-client@2.1.0(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)):
vite-hot-client@2.1.0(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
vite: rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite: rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite-plugin-inspect@11.3.3(@nuxt/kit@3.17.5)(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)):
vite-plugin-inspect@11.3.3(@nuxt/kit@3.17.5)(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
ansis: 4.2.0
debug: 4.4.3
@@ -6978,28 +6969,28 @@ snapshots:
perfect-debounce: 2.0.0
sirv: 3.0.2
unplugin-utils: 0.3.1
vite: rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite-dev-rpc: 1.1.0(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))
vite: rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite-dev-rpc: 1.1.0(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))
optionalDependencies:
'@nuxt/kit': 3.17.5
transitivePeerDependencies:
- supports-color
vite-plugin-vue-devtools@8.0.5(@nuxt/kit@3.17.5)(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)):
vite-plugin-vue-devtools@8.0.5(@nuxt/kit@3.17.5)(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)):
dependencies:
'@vue/devtools-core': 8.0.5(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
'@vue/devtools-core': 8.0.5(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
'@vue/devtools-kit': 8.0.5
'@vue/devtools-shared': 8.0.5
sirv: 3.0.2
vite: rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite-plugin-inspect: 11.3.3(@nuxt/kit@3.17.5)(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))
vite-plugin-vue-inspector: 5.3.2(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))
vite: rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite-plugin-inspect: 11.3.3(@nuxt/kit@3.17.5)(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))
vite-plugin-vue-inspector: 5.3.2(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))
transitivePeerDependencies:
- '@nuxt/kit'
- supports-color
- vue
vite-plugin-vue-inspector@5.3.2(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)):
vite-plugin-vue-inspector@5.3.2(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
'@babel/core': 7.28.5
'@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.5)
@@ -7010,16 +7001,16 @@ snapshots:
'@vue/compiler-dom': 3.5.24
kolorist: 1.8.0
magic-string: 0.30.21
vite: rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite: rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
vite-plugin-vuetify@2.1.2(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))(vuetify@3.10.11):
vite-plugin-vuetify@2.1.2(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))(vuetify@3.10.11):
dependencies:
'@vuetify/loader-shared': 2.1.1(vue@3.5.24(typescript@5.9.3))(vuetify@3.10.11)
debug: 4.4.3
upath: 2.0.1
vite: rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vite: rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1)
vue: 3.5.24(typescript@5.9.3)
vuetify: 3.10.11(typescript@5.9.3)(vite-plugin-vuetify@2.1.2)(vue@3.5.24(typescript@5.9.3))
transitivePeerDependencies:
@@ -7074,7 +7065,7 @@ snapshots:
vue: 3.5.24(typescript@5.9.3)
optionalDependencies:
typescript: 5.9.3
vite-plugin-vuetify: 2.1.2(rolldown-vite@7.2.6(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))(vuetify@3.10.11)
vite-plugin-vuetify: 2.1.2(rolldown-vite@7.2.7(@types/node@24.10.1)(esbuild@0.25.12)(jiti@2.6.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))(vuetify@3.10.11)
wcag-color@1.1.1: {}

47
src-tauri/Cargo.lock generated
View File

@@ -7,7 +7,10 @@ name = "TeyvatGuide"
version = "0.8.6"
dependencies = [
"chrono",
"libloading 0.8.9",
"log",
"prost",
"prost-types",
"serde",
"serde_json",
"tauri",
@@ -24,8 +27,10 @@ dependencies = [
"tauri-plugin-single-instance",
"tauri-plugin-sql",
"tauri-utils",
"tokio",
"url",
"walkdir",
"windows-sys 0.61.2",
]
[[package]]
@@ -2215,6 +2220,15 @@ dependencies = [
"once_cell",
]
[[package]]
name = "itertools"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
dependencies = [
"either",
]
[[package]]
name = "itoa"
version = "1.0.15"
@@ -3426,6 +3440,38 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "prost"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d"
dependencies = [
"bytes",
"prost-derive",
]
[[package]]
name = "prost-derive"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425"
dependencies = [
"anyhow",
"itertools",
"proc-macro2",
"quote",
"syn 2.0.107",
]
[[package]]
name = "prost-types"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9b4db3d6da204ed77bb26ba83b6122a73aeb2e87e25fbf7ad2e84c4ccbf8f72"
dependencies = [
"prost",
]
[[package]]
name = "psl-types"
version = "2.0.11"
@@ -5439,6 +5485,7 @@ dependencies = [
"bytes",
"libc",
"mio",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
"socket2",

View File

@@ -21,14 +21,31 @@ tauri-build = { version = "2.5.2", features = [] }
[dependencies]
chrono = "0.4.42"
libloading = "0.8"
log = "0.4.28"
prost = "0.14.1"
prost-types = "0.14.1"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.145"
tauri = { version = "2.9.3", features = [] }
tauri-utils = "2.8.0"
tokio = { version = "1.48.0", features = ["full"] }
url = "2.5.7"
walkdir = "2.5.0"
[target.'cfg(windows)'.dependencies.windows-sys]
version = "0.61.2"
features = [
"Win32_System_Diagnostics_ToolHelp",
"Win32_System_WindowsProgramming",
"Win32_System_Pipes",
"Win32_System_Memory",
"Win32_System_Diagnostics",
"Win32_System_Diagnostics_Debug",
"Win32_System_LibraryLoader",
"Win32_System_Threading",
]
# deep link 插件
[dependencies.tauri-plugin-deep-link]
git = "ssh://git@github.com/tauri-apps/plugins-workspace.git"

Binary file not shown.

View File

@@ -0,0 +1,43 @@
syntax = "proto3";
message AchievementProtoFieldInfo {
uint32 id = 1;
uint32 status = 2;
uint32 total_progress = 3;
uint32 current_progress = 4;
uint32 finish_timestamp = 5;
}
message AchievementItem {
uint32 pre = 1;
uint32 group = 2;
string name = 3;
string description = 4;
}
message MethodRvaConfig {
uint32 do_cmd = 1;
uint32 update_normal_prop = 3;
uint32 new_string = 4;
uint32 find_game_object = 5;
uint32 event_system_update = 6;
uint32 simulate_pointer_click = 7;
uint32 to_int32 = 8;
uint32 tcp_state_ptr = 9;
uint32 shared_info_ptr = 10;
uint32 decompress = 11;
}
message NativeLibConfig {
uint32 store_cmd_id = 1;
uint32 achievement_cmd_id = 2;
map<uint32, MethodRvaConfig> method_rva = 10;
}
message AchievementInfo {
string version = 1;
map<uint32, string> group = 2;
map<uint32, AchievementItem> items = 3;
AchievementProtoFieldInfo pb_info = 4;
NativeLibConfig native_config = 5;
}

View File

@@ -1,15 +1,16 @@
//! @file src/lib.rs
//! @desc 主模块,用于启动应用
//! @since Beta v0.7.2
//! 主模块,用于启动应用
//! @since Beta v0.9.0
mod client;
mod commands;
mod plugins;
mod utils;
mod yae;
use crate::client::create_mhy_client;
use crate::commands::{create_window, execute_js, get_dir_size, init_app};
use crate::plugins::{build_log_plugin, build_si_plugin};
use crate::yae::call_yae_dll;
use tauri::{generate_context, generate_handler, Builder, Manager, Window, WindowEvent};
// 窗口事件处理
@@ -61,7 +62,8 @@ pub fn run() {
create_window,
execute_js,
get_dir_size,
create_mhy_client
create_mhy_client,
call_yae_dll
])
.run(generate_context!())
.expect("error while running tauri application");

165
src-tauri/src/yae/inject.rs Normal file
View File

@@ -0,0 +1,165 @@
//! DLL 注入相关功能
//! @since Beta v0.9.0
use std::ffi::{c_void, OsStr};
use std::iter::once;
use std::os::windows::ffi::OsStrExt;
use std::ptr;
use windows_sys::Win32::Foundation::{HANDLE, INVALID_HANDLE_VALUE};
use windows_sys::Win32::Storage::FileSystem::PIPE_ACCESS_DUPLEX;
use windows_sys::Win32::System::Diagnostics::Debug::WriteProcessMemory;
use windows_sys::Win32::System::Diagnostics::ToolHelp::{
CreateToolhelp32Snapshot, Module32FirstW, Module32NextW, MODULEENTRY32W, TH32CS_SNAPMODULE,
};
use windows_sys::Win32::System::LibraryLoader::{
GetModuleHandleA, GetProcAddress, LoadLibraryExW, DONT_RESOLVE_DLL_REFERENCES,
};
use windows_sys::Win32::System::Memory::{VirtualAllocEx, MEM_COMMIT, PAGE_READWRITE};
use windows_sys::Win32::System::Pipes::{
CreateNamedPipeW, PIPE_READMODE_MESSAGE, PIPE_TYPE_MESSAGE, PIPE_UNLIMITED_INSTANCES, PIPE_WAIT,
};
use windows_sys::Win32::System::Threading::{
CreateProcessW, CreateRemoteThread, WaitForSingleObject, INFINITE, PROCESS_INFORMATION,
STARTUPINFOW,
};
/// 转为宽字符串
pub fn to_wide_string(s: &str) -> Vec<u16> {
OsStr::new(s).encode_wide().chain(once(0)).collect()
}
/// 创建命名管道
pub fn create_named_pipe(pipe_name: &str) -> HANDLE {
let full_pipe_name = format!(r"\\.\pipe\{}", pipe_name);
let wide: Vec<u16> = to_wide_string(&full_pipe_name);
unsafe {
let handle = CreateNamedPipeW(
wide.as_ptr(),
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
512,
512,
0,
ptr::null_mut(),
);
if handle == INVALID_HANDLE_VALUE {
panic!("CreateNamedPipeW failed");
}
handle
}
}
/// 启动目标进程附加cwd
pub fn spawn_process(path: &str) -> PROCESS_INFORMATION {
let wide_path: Vec<u16> = to_wide_string(path);
let cwd = std::path::Path::new(path).parent().unwrap().to_str().unwrap();
let wide_cwd: Vec<u16> = to_wide_string(cwd);
unsafe {
let mut si: STARTUPINFOW = std::mem::zeroed();
si.cb = std::mem::size_of::<STARTUPINFOW>() as u32;
let mut pi: PROCESS_INFORMATION = std::mem::zeroed();
let success = CreateProcessW(
wide_path.as_ptr(),
ptr::null_mut(),
ptr::null_mut(),
ptr::null_mut(),
0,
0,
ptr::null_mut(),
wide_cwd.as_ptr(),
&mut si,
&mut pi,
);
if success == 0 {
panic!("CreateProcessW failed");
}
pi
}
}
/// 注入 DLL
pub fn inject_dll(pi: &PROCESS_INFORMATION, dll_path: &str) {
let dll_utf16: Vec<u16> = to_wide_string(dll_path);
let size = dll_utf16.len() * 2;
unsafe {
// 在远程进程分配内存并写入 DLL 路径
let addr = VirtualAllocEx(pi.hProcess, ptr::null_mut(), size, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(pi.hProcess, addr, dll_utf16.as_ptr() as *const _, size, ptr::null_mut());
// 获取 kernel32!LoadLibraryW 地址
let k32 = GetModuleHandleA(b"kernel32.dll\0".as_ptr());
let loadlib = GetProcAddress(k32, b"LoadLibraryW\0".as_ptr());
// 在远程进程里调用 LoadLibraryW
let thread = CreateRemoteThread(
pi.hProcess,
ptr::null_mut(),
0,
Some(std::mem::transmute(loadlib)),
addr,
0,
ptr::null_mut(),
);
WaitForSingleObject(thread, INFINITE);
}
}
/// 枚举模块,找到 DLL 基址
pub fn find_module_base(pid: u32, dll_name: &str) -> Option<usize> {
unsafe {
let snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
let mut me32 =
MODULEENTRY32W { dwSize: std::mem::size_of::<MODULEENTRY32W>() as u32, ..Default::default() };
if Module32FirstW(snapshot, &mut me32) != 0 {
loop {
let name = String::from_utf16_lossy(&me32.szModule);
if name.contains(dll_name) {
return Some(me32.modBaseAddr as usize);
}
if Module32NextW(snapshot, &mut me32) == 0 {
break;
}
}
}
}
None
}
/// 执行 YaeMain
pub fn call_yaemain(pi: &PROCESS_INFORMATION, base: usize, dll_path: &str) {
let dll_path_wide: Vec<u16> = to_wide_string(dll_path);
unsafe {
// 本地解析 YaeMain 地址
let local =
LoadLibraryExW(dll_path_wide.as_ptr(), ptr::null_mut(), DONT_RESOLVE_DLL_REFERENCES);
let proc = GetProcAddress(local, b"YaeMain\0".as_ptr()).expect("无法找到 YaeMain");
// 把函数指针转成裸地址
let proc_addr = proc as *const () as usize;
// 计算 RVA
let rva = proc_addr - local as usize;
println!("YaeMain RVA: {:#x}", rva);
let remote_yaemain = (base + rva) as *mut c_void;
// 在远程进程里调用 YaeMain(hModule)
CreateRemoteThread(
pi.hProcess,
ptr::null_mut(),
0,
Some(std::mem::transmute(remote_yaemain)),
base as *mut _, // hModule 参数
0,
ptr::null_mut(),
);
}
}

204
src-tauri/src/yae/mod.rs Normal file
View File

@@ -0,0 +1,204 @@
//! Yae 相关处理
//! @since Beta v0.8.7
pub mod inject;
pub mod proto;
use inject::{call_yaemain, create_named_pipe, find_module_base, inject_dll, spawn_process};
use serde_json::Value;
use std::fs::File;
use std::io;
use std::io::{Read, Write};
use std::os::windows::io::{FromRawHandle, OwnedHandle, RawHandle};
use std::sync::Arc;
use tauri::{AppHandle, Manager};
use windows_sys::Win32::Storage::FileSystem::ReadFile;
use windows_sys::Win32::System::Pipes::ConnectNamedPipe;
fn read_rva(key: &str) -> i32 {
let path = format!("nativeConfig.methodRva.chinese.{}", key);
read_conf(&path)
}
fn read_conf(path: &str) -> i32 {
// 编译时嵌入 JSON 文件值都是32位整数
let data = include_str!("../../lib/conf.json");
let json: Value = serde_json::from_str(data).expect("Invalid JSON");
// 按 '.' 分割 key
let mut current = &json;
for key in path.split('.') {
match current.get(key) {
Some(value) => current = value,
None => return 0, // 如果找不到 key返回默认值 0
}
}
current.as_i64().unwrap_or(0) as i32
}
use prost::encoding::{decode_key, WireType};
use std::collections::HashMap;
pub fn parse_achievement_data(bytes: &[u8]) -> Vec<HashMap<u32, u32>> {
let mut cursor = std::io::Cursor::new(bytes);
let mut data = Vec::new();
let mut err_times = 0;
while let Ok((tag, wire_type)) = decode_key(&mut cursor) {
if wire_type == WireType::LengthDelimited {
let len = prost::encoding::decode_varint(&mut cursor).unwrap() as usize;
let mut buf = vec![0u8; len];
if cursor.read_exact(&mut buf).is_err() {
continue;
}
let mut inner = std::io::Cursor::new(&buf);
let mut dict = HashMap::new();
while let Ok((inner_tag, inner_type)) = decode_key(&mut inner) {
if inner_type != WireType::Varint {
dict.clear();
break;
}
let value = prost::encoding::decode_varint(&mut inner).unwrap() as u32;
dict.insert(inner_tag, value);
}
if dict.len() >= 3 {
data.push(dict);
} else if err_times == 0 {
err_times += 1;
} else {
break;
}
}
}
data
}
use windows_sys::Win32::Foundation::{GetLastError, ERROR_MORE_DATA};
fn read_u32_le<R: io::Read>(r: &mut R) -> io::Result<u32> {
let mut b = [0u8; 4];
r.read_exact(&mut b)?;
Ok(u32::from_le_bytes(b))
}
fn read_exact_vec<R: io::Read>(r: &mut R, len: usize) -> io::Result<Vec<u8>> {
let mut v = vec![0u8; len];
r.read_exact(&mut v)?;
Ok(v)
}
/// 从管道中读取完整的 payload
/// 协议:命令字节已经读过,这里只负责把剩余数据读完
pub fn read_full_payload<R: Read>(reader: &mut R) -> io::Result<Vec<u8>> {
let mut buf = Vec::new();
let mut chunk = [0u8; 4096];
loop {
match reader.read(&mut chunk) {
Ok(0) => break, // EOF读完了
Ok(n) => buf.extend_from_slice(&chunk[..n]),
Err(ref e) if e.raw_os_error() == Some(234) => {
// Windows ERROR_MORE_DATA → 继续读
continue;
}
Err(e) => return Err(e),
}
}
Ok(buf)
}
/// 调用 dll
#[tauri::command]
pub fn call_yae_dll(app_handle: AppHandle, game_path: String) -> () {
let dll_path = app_handle.path().resource_dir().unwrap().join("resources/YaeAchievementLib.dll");
dbg!(&dll_path);
// 0. 创建 YaeAchievementPipe 的 命名管道,获取句柄
dbg!("开始启动 YaeAchievementPipe 命名管道");
let _pipe_handle = create_named_pipe("YaeAchievementPipe");
// 1. 启动游戏进程
let pi = spawn_process(&game_path);
dbg!("游戏进程启动完成");
// 2. 注入 DLL
inject_dll(&pi, dll_path.to_str().unwrap());
dbg!("DLL 注入完成");
// 3. 找到 DLL 基址
let base = find_module_base(pi.dwProcessId, "YaeAchievementLib.dll").expect("找不到 DLL 基址");
dbg!("找到 DLL 基址: {:X}", base);
// 4. 调用 YaeMain
call_yaemain(&pi, base, dll_path.to_str().unwrap());
dbg!("YaeMain 调用完成");
// 根据句柄等待命名管道连接
let retry_count = 50;
for _ in 0..retry_count {
let result = unsafe { ConnectNamedPipe(_pipe_handle, std::ptr::null_mut()) };
if result != 0 {
dbg!("命名管道连接成功");
break;
} else {
std::thread::sleep(std::time::Duration::from_secs(1));
}
}
// 5. 读取命名管道数据,循环读取,根据接受字节进行通信
let file = unsafe { File::from_raw_handle(_pipe_handle as RawHandle) };
let file = Arc::new(file);
// No raw HANDLE captured in the closure. Only Arc<File>.
std::thread::spawn({
let file = file.clone();
move || {
let mut file = file.try_clone().expect("Failed to clone pipe file");
let mut cmd = [0u8; 1];
loop {
match file.read_exact(&mut cmd) {
// 输出命令字节
Ok(_) => {
println!("收到命令: {}", cmd[0]);
match cmd[0] {
0x01 => println!("AchievementNotify"),
0x02 => println!("PlayerStoreNotify"),
0x03 => println!("PlayerPropNotify"),
0xFC => {
let _ = file.write_all(&read_conf("nativeConfig.achievementCmdId").to_le_bytes());
let _ = file.write_all(&read_conf("nativeConfig.storeCmdId").to_le_bytes());
}
0xFD => {
for key in [
"doCmd",
"updateNormalProp",
"newString",
"findGameObject",
"eventSystemUpdate",
"simulatePointerClick",
"toInt32",
"tcpStatePtr",
"sharedInfoPtr",
"decompress",
] {
let _ = file.write_all(&read_rva(key).to_le_bytes());
}
}
0xFF => {
let _ = file.write_all(&[1]);
break;
}
_ => println!("收到未知命令: {}", cmd[0]),
}
}
Err(e) => {
println!("读取失败: {:?}", e);
break;
}
}
}
}
});
}

101
src-tauri/src/yae/proto.rs Normal file
View File

@@ -0,0 +1,101 @@
//! Yae 成就信息的 Protobuf 定义
//! @since Beta v0.9.0
use prost::Message;
use std::collections::HashMap;
#[derive(Clone, PartialEq, Message)]
pub struct AchievementProtoFieldInfo {
#[prost(uint32, tag = "1")]
pub id: u32,
#[prost(uint32, tag = "2")]
pub status: u32,
#[prost(uint32, tag = "3")]
pub total_progress: u32,
#[prost(uint32, tag = "4")]
pub current_progress: u32,
#[prost(uint32, tag = "5")]
pub finish_timestamp: u32,
}
#[derive(Clone, PartialEq, Message)]
pub struct AchievementItem {
#[prost(uint32, tag = "1")]
pub pre: u32,
#[prost(uint32, tag = "2")]
pub group: u32,
#[prost(string, tag = "3")]
pub name: String,
#[prost(string, tag = "4")]
pub description: String,
}
#[derive(Clone, PartialEq, Message)]
pub struct MethodRvaConfig {
#[prost(uint32, tag = "1")]
pub do_cmd: u32,
#[prost(uint32, tag = "3")]
pub update_normal_prop: u32,
#[prost(uint32, tag = "4")]
pub new_string: u32,
#[prost(uint32, tag = "5")]
pub find_game_object: u32,
#[prost(uint32, tag = "6")]
pub event_system_update: u32,
#[prost(uint32, tag = "7")]
pub simulate_pointer_click: u32,
#[prost(uint32, tag = "8")]
pub to_int32: u32,
#[prost(uint32, tag = "9")]
pub tcp_state_ptr: u32,
#[prost(uint32, tag = "10")]
pub shared_info_ptr: u32,
#[prost(uint32, tag = "11")]
pub decompress: u32,
}
#[derive(Clone, PartialEq, Message)]
pub struct NativeLibConfig {
#[prost(uint32, tag = "1")]
pub store_cmd_id: u32,
#[prost(uint32, tag = "2")]
pub achievement_cmd_id: u32,
#[prost(map = "uint32, message", tag = "10")]
pub method_rva: HashMap<u32, MethodRvaConfig>,
}
#[derive(Clone, PartialEq, Message)]
pub struct AchievementInfo {
#[prost(string, tag = "1")]
pub version: String,
#[prost(map = "uint32, string", tag = "2")]
pub group: HashMap<u32, String>,
#[prost(map = "uint32, message", tag = "3")]
pub items: HashMap<u32, AchievementItem>,
#[prost(message, tag = "4")]
pub pb_info: Option<AchievementProtoFieldInfo>,
#[prost(message, tag = "5")]
pub native_config: Option<NativeLibConfig>,
}

View File

@@ -30,7 +30,10 @@
],
"targets": ["msi", "app", "dmg"],
"windows": { "wix": { "language": "zh-CN" } },
"macOS": {}
"macOS": {},
"resources": {
"lib/YaeAchievementLib.dll": "resources/YaeAchievementLib.dll"
}
},
"app": {
"withGlobalTauri": true,

View File

@@ -15,6 +15,7 @@
</div>
<div class="btn-list">
<v-btn @click="test()" class="test-btn">测试</v-btn>
<v-btn @click="test2()" class="test-btn">测试2</v-btn>
</div>
</div>
</template>
@@ -23,6 +24,7 @@ import showSnackbar from "@comp/func/snackbar.js";
import hk4eReq from "@req/hk4eReq.js";
import takumiReq from "@req/takumiReq.js";
import useUserStore from "@store/user.js";
import { invoke } from "@tauri-apps/api/core";
import { storeToRefs } from "pinia";
import { ref } from "vue";
@@ -56,6 +58,16 @@ async function test(): Promise<void> {
}
console.log(list);
}
async function test2(): Promise<void> {
try {
await invoke("call_yae_dll", {
gamePath: "D:\\Games\\Genshin Impact bilibili\\games\\Genshin Impact Game\\YuanShen.exe",
});
} catch (e) {
console.error(e);
}
}
</script>
<style lang="css" scoped>
.test-box {