chore: update tauri2.0-rc

main
Zaeyee 2024-09-03 15:58:18 +08:00
parent fa8e281e21
commit 0a2ad1afb2
14 changed files with 2058 additions and 903 deletions

View File

@ -1,10 +1,10 @@
<!doctype html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> <link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Tauri + Vue + Typescript App</title> <title>PhizPay Tools</title>
</head> </head>
<body> <body>

View File

@ -10,18 +10,20 @@
"tauri": "tauri" "tauri": "tauri"
}, },
"dependencies": { "dependencies": {
"@tauri-apps/api": "^1", "@tauri-apps/api": ">=2.0.0-rc.0",
"@tauri-apps/plugin-dialog": "^2.0.0-rc",
"@tauri-apps/plugin-shell": ">=2.0.0-rc.0",
"@unocss/reset": "^0.62.3", "@unocss/reset": "^0.62.3",
"vue": "^3.4.38" "vue": "^3.4.38"
}, },
"devDependencies": { "devDependencies": {
"@tauri-apps/cli": "^1", "@tauri-apps/cli": ">=2.0.0-rc.0",
"@unocss/eslint-config": "^0.62.3", "@unocss/eslint-config": "^0.62.3",
"@vitejs/plugin-vue": "^5.1.3", "@vitejs/plugin-vue": "^5.1.3",
"eslint": "^9.9.1", "eslint": "^9.9.1",
"typescript": "^5.5.4", "typescript": "^5.5.4",
"unocss": "^0.62.3", "unocss": "^0.62.3",
"vite": "^5.4.2", "vite": "^5.4.2",
"vue-tsc": "^2.1.2" "vue-tsc": "^2.1.4"
} }
} }

View File

@ -9,8 +9,14 @@ importers:
.: .:
dependencies: dependencies:
'@tauri-apps/api': '@tauri-apps/api':
specifier: ^1 specifier: '>=2.0.0-rc.0'
version: 1.6.0 version: 2.0.0-rc.4
'@tauri-apps/plugin-dialog':
specifier: ^2.0.0-rc
version: 2.0.0-rc.1
'@tauri-apps/plugin-shell':
specifier: '>=2.0.0-rc.0'
version: 2.0.0-rc.1
'@unocss/reset': '@unocss/reset':
specifier: ^0.62.3 specifier: ^0.62.3
version: 0.62.3 version: 0.62.3
@ -19,8 +25,8 @@ importers:
version: 3.4.38(typescript@5.5.4) version: 3.4.38(typescript@5.5.4)
devDependencies: devDependencies:
'@tauri-apps/cli': '@tauri-apps/cli':
specifier: ^1 specifier: '>=2.0.0-rc.0'
version: 1.6.1 version: 2.0.0-rc.10
'@unocss/eslint-config': '@unocss/eslint-config':
specifier: ^0.62.3 specifier: ^0.62.3
version: 0.62.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) version: 0.62.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
@ -35,13 +41,13 @@ importers:
version: 5.5.4 version: 5.5.4
unocss: unocss:
specifier: ^0.62.3 specifier: ^0.62.3
version: 0.62.3(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2) version: 0.62.3(postcss@8.4.44)(rollup@4.21.2)(vite@5.4.2)
vite: vite:
specifier: ^5.4.2 specifier: ^5.4.2
version: 5.4.2 version: 5.4.2
vue-tsc: vue-tsc:
specifier: ^2.1.2 specifier: ^2.1.4
version: 2.1.2(typescript@5.5.4) version: 2.1.4(typescript@5.5.4)
packages: packages:
@ -556,181 +562,186 @@ packages:
rollup: rollup:
optional: true optional: true
'@rollup/rollup-android-arm-eabi@4.21.1': '@rollup/rollup-android-arm-eabi@4.21.2':
resolution: {integrity: sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==} resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
'@rollup/rollup-android-arm64@4.21.1': '@rollup/rollup-android-arm64@4.21.2':
resolution: {integrity: sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==} resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
'@rollup/rollup-darwin-arm64@4.21.1': '@rollup/rollup-darwin-arm64@4.21.2':
resolution: {integrity: sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==} resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@rollup/rollup-darwin-x64@4.21.1': '@rollup/rollup-darwin-x64@4.21.2':
resolution: {integrity: sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==} resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@rollup/rollup-linux-arm-gnueabihf@4.21.1': '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
resolution: {integrity: sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==} resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.21.1': '@rollup/rollup-linux-arm-musleabihf@4.21.2':
resolution: {integrity: sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==} resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.21.1': '@rollup/rollup-linux-arm64-gnu@4.21.2':
resolution: {integrity: sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==} resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.21.1': '@rollup/rollup-linux-arm64-musl@4.21.2':
resolution: {integrity: sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==} resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@rollup/rollup-linux-powerpc64le-gnu@4.21.1': '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
resolution: {integrity: sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==} resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.21.1': '@rollup/rollup-linux-riscv64-gnu@4.21.2':
resolution: {integrity: sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==} resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.21.1': '@rollup/rollup-linux-s390x-gnu@4.21.2':
resolution: {integrity: sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==} resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.21.1': '@rollup/rollup-linux-x64-gnu@4.21.2':
resolution: {integrity: sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==} resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.21.1': '@rollup/rollup-linux-x64-musl@4.21.2':
resolution: {integrity: sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==} resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.21.1': '@rollup/rollup-win32-arm64-msvc@4.21.2':
resolution: {integrity: sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==} resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.21.1': '@rollup/rollup-win32-ia32-msvc@4.21.2':
resolution: {integrity: sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==} resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@rollup/rollup-win32-x64-msvc@4.21.1': '@rollup/rollup-win32-x64-msvc@4.21.2':
resolution: {integrity: sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==} resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@tauri-apps/api@1.6.0': '@tauri-apps/api@2.0.0-rc.4':
resolution: {integrity: sha512-rqI++FWClU5I2UBp4HXFvl+sBWkdigBkxnpJDQUWttNyG7IZP4FwQGhTNL5EOw0vI8i6eSAJ5frLqO7n7jbJdg==} resolution: {integrity: sha512-UNiIhhKG08j4ooss2oEEVexffmWkgkYlC2M3GcX3VPtNsqFgVNL8Mcw/4Y7rO9M9S+ffAMnLOF5ypzyuyb8tyg==}
engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'}
'@tauri-apps/cli-darwin-arm64@1.6.1': '@tauri-apps/cli-darwin-arm64@2.0.0-rc.10':
resolution: {integrity: sha512-n+16Z9qQksBmY55Xwful8GGrw2dlyeqKPsjuNcwKUgVB5a4gIq6K6uUsbhwMUMUA3gqewQMBn44QXbSe5qNKfA==} resolution: {integrity: sha512-oAuG3n/dIqK5ZedknF1QOgVDlpEepAaaIFHpUi+eIdG1MFp82jgyHqplveVZ95F16j7RhjIMaEhiTF6cGR/baA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@tauri-apps/cli-darwin-x64@1.6.1': '@tauri-apps/cli-darwin-x64@2.0.0-rc.10':
resolution: {integrity: sha512-OHzm6qiywv0GEwBDowlzLSuztKE85NMxp2loVynQ4vDoVk6V0jMtQy/N9YvYA0BetvfNTuuAiz3hsTkMHMYm+g==} resolution: {integrity: sha512-n4ul0XUBqrA7KbNY6Vo52EBNqTXogYuV2qi5RWR0bIJF/A/vYjZ3LcC1TXXo/X57sDN55LWORrBe4c4Ds8MZrA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@tauri-apps/cli-linux-arm-gnueabihf@1.6.1': '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.10':
resolution: {integrity: sha512-ZA4ByaiZbrXUbhaoWUVab4lHI2yI1/ucrRO6b9pky6ytgqx37hA/YOWoctD0yaf5giQJQZw160euaBIUOKzRXA==} resolution: {integrity: sha512-RByz0zRbngps5QMQVsbgCD03TiCMxwAhaZhNtojXQ2AiJFkv1Mu68W/prbpWucw6Ep1nM3/yTIm0aL6ozdh/gw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@tauri-apps/cli-linux-arm64-gnu@1.6.1': '@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.10':
resolution: {integrity: sha512-VBU4GRJPU9jzzeqaEGLHAJzqQhpl7WnRFyHPR8Qby0D17av3CClJ7nBa+CI3ob3JbIERfJM9kwFHdY9eQpfxnw==} resolution: {integrity: sha512-ZqpbDIMp5b0jz1ddutJH6S5geLaBEmsMG6eZix+MgcZZRyEfahTMGCq3xkvv+tnrNNq7drvwBISCVSSS0zu3wQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@tauri-apps/cli-linux-arm64-musl@1.6.1': '@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.10':
resolution: {integrity: sha512-gyMgNZ8fwQFYzrIiHwhmKECkbuAZtzsRyl+bi1Ua11XVWYVUpY8+cNp7Y5ilMJ9AwNFI/HFKjzzua9r+e9FNzw==} resolution: {integrity: sha512-EVh1xPqs5bi0aBYbv6Iy1ooFClyK6/wIsNw9DyxWwhPz9I7UNpDAgHm6lOhkMH26Cp/eQPiEA8OdfOLTfCY81A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@tauri-apps/cli-linux-x64-gnu@1.6.1': '@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.10':
resolution: {integrity: sha512-aYLjLXEBcOf4GUrLBZRQcoLSL3KgCKHwfAyGmTilH4juAw42ZaAYWIZwa59hp2kC4w1XrlmwAzGpi1RESBr5Mw==} resolution: {integrity: sha512-ZLcXJbRRMfgSkZdxBegP/4PlXkoVR1zpx2pE7mKkRgyvwJCx+A2f0+IZM+VVu/WRECxAdzVCbgxztTAOoLkdrg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@tauri-apps/cli-linux-x64-musl@1.6.1': '@tauri-apps/cli-linux-x64-musl@2.0.0-rc.10':
resolution: {integrity: sha512-j1M7ovICUrBDbrH8CNUwbMe0zk0/IAR7MXRv5PEanktAZ1w/LG3nlO/AhY5/Cbqqo3ziKTcMpe6x0j3aE8jYOA==} resolution: {integrity: sha512-IgzRemlQT+SHfb2x8kq32xKGnR3r7S69Ogv5pBKIDX1/G2qQofM6wfy0OHnAyS4Bj0y2lZPjiYQBwmLIkK/BNw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@tauri-apps/cli-win32-arm64-msvc@1.6.1': '@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.10':
resolution: {integrity: sha512-yCGT1jXHvZtu+yYPDmDOJDfgsj5EKdBPvya+kmN03BmLfOF+8EWHA9s6yXUdk9pSr6M9OQS0SXocbGDOu5AkMw==} resolution: {integrity: sha512-RmSh5omDiCEZgw1fOhdEFi6MzAQ1rQBmvTM13K2p8XUxxaYb/MHYYZbNEMqxqWvsg4fidZ8hNSqRkB7YCCWWgg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@tauri-apps/cli-win32-ia32-msvc@1.6.1': '@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.10':
resolution: {integrity: sha512-klAt+KNcczC4gxz9vm6tSvFB4iyXVj4r+TtDVhStLCKkAZOVm0ZsFym1kDzltxrB/3xSjgzsgIiEJydN2cP7xw==} resolution: {integrity: sha512-6zxZ1KnKqflC5YpJmXZyNNVaRXMdOiRijimua8zLzfoAo+adb6gd8V4o03rZF3BPHtmd35rPkZHlgMlg/th2Bw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@tauri-apps/cli-win32-x64-msvc@1.6.1': '@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.10':
resolution: {integrity: sha512-WEzQzBgcaqjZoA5M/KOupHmt8W3QQ20vwETXpGEMPd7spj4eZsRv/2ZDuCz4ELbai1XlIsTITFNe2LlJjzqISA==} resolution: {integrity: sha512-D7L9QnxUJcSykQ9S8AQ0CEdxaw3IMoyAwv2LR7x+w/j7Jg3UsEgnsX5ePkShBiqSmu/UXfSuQeGvAoA8kSLiUw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@tauri-apps/cli@1.6.1': '@tauri-apps/cli@2.0.0-rc.10':
resolution: {integrity: sha512-2S8WGmkz54Z9WxpaFVbUYsTiwx5OIEmdD5DDWRygX9VhaWwZg0y6DctsUtCRVre9I/Un/hTnmqkhZqPamCEx8A==} resolution: {integrity: sha512-mnoMyeD65DoVWzrLiLRW8Ns5Aktn9Ua7eKTOUEPq+r+1sQtWKxfnYTBEbEWnivduLhJCEDqGP5tyJaPcVXcEzA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
hasBin: true hasBin: true
'@tauri-apps/plugin-dialog@2.0.0-rc.1':
resolution: {integrity: sha512-H28gh6BfZtjflHQ+HrmWwunDriBI3AQLAKnMs50GA6zeNUULqbQr7VXbAAKeJL/0CmWcecID4PKXVoSlaWRhEg==}
'@tauri-apps/plugin-shell@2.0.0-rc.1':
resolution: {integrity: sha512-JtNROc0rqEwN/g93ig5pK4cl1vUo2yn+osCpY9de64cy/d9hRzof7AuYOgvt/Xcd5VPQmlgo2AGvUh5sQRSR1A==}
'@types/estree@1.0.5': '@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
'@typescript-eslint/scope-manager@8.3.0': '@typescript-eslint/scope-manager@8.4.0':
resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==} resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/types@8.3.0': '@typescript-eslint/types@8.4.0':
resolution: {integrity: sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==} resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.3.0': '@typescript-eslint/typescript-estree@8.4.0':
resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==} resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
@ -738,14 +749,14 @@ packages:
typescript: typescript:
optional: true optional: true
'@typescript-eslint/utils@8.3.0': '@typescript-eslint/utils@8.4.0':
resolution: {integrity: sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==} resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
'@typescript-eslint/visitor-keys@8.3.0': '@typescript-eslint/visitor-keys@8.4.0':
resolution: {integrity: sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==} resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@unocss/astro@0.62.3': '@unocss/astro@0.62.3':
@ -873,8 +884,8 @@ packages:
'@vue/compiler-vue2@2.7.16': '@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
'@vue/language-core@2.1.2': '@vue/language-core@2.1.4':
resolution: {integrity: sha512-tt2J7C+l0J/T5PaLhJ0jvCCi0JNwu3e8azWTYxW3jmAW5B/dac0g5UxmI7l59CQgCGFotqUqI3tXjfZgoWNtog==} resolution: {integrity: sha512-i8pfAgNjTNjabBX1xRsuV6aRw2E8bdQXwd5H8m3cUkTVJju3QN5nfdoXET0uK+yXsuloNJPzo6PXFujRRPNmMA==}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
peerDependenciesMeta: peerDependenciesMeta:
@ -966,8 +977,8 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
caniuse-lite@1.0.30001653: caniuse-lite@1.0.30001655:
resolution: {integrity: sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==} resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==}
chalk@2.4.2: chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
@ -1217,8 +1228,8 @@ packages:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'} engines: {node: '>=6'}
importx@0.4.3: importx@0.4.4:
resolution: {integrity: sha512-x6E6OxmWq/SUaj7wDeDeSjyHP+rMUbEaqJ5fw0uEtC/FTX9ocxNMFJ+ONnpJIsRpFz3ya6qJAK4orwSKqw0BSQ==} resolution: {integrity: sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==}
imurmurhash@0.1.4: imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
@ -1251,8 +1262,8 @@ packages:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true hasBin: true
jiti@2.0.0-beta.2: jiti@2.0.0-beta.3:
resolution: {integrity: sha512-c+PHQZakiQuMKbnhvrjZUvrK6E/AfmTOf4P+E3Y4FNVHcNMX9e/XrnbEvO+m4wS6ZjsvhHh/POQTlfy8uXFc0A==} resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==}
hasBin: true hasBin: true
js-tokens@4.0.0: js-tokens@4.0.0:
@ -1400,8 +1411,8 @@ packages:
perfect-debounce@1.0.0: perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
picocolors@1.0.1: picocolors@1.1.0:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
picomatch@2.3.1: picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
@ -1414,8 +1425,8 @@ packages:
pkg-types@1.2.0: pkg-types@1.2.0:
resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==}
postcss@8.4.41: postcss@8.4.44:
resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} resolution: {integrity: sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
prelude-ls@1.2.1: prelude-ls@1.2.1:
@ -1444,8 +1455,8 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'} engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
rollup@4.21.1: rollup@4.21.2:
resolution: {integrity: sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==} resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'} engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true hasBin: true
@ -1603,8 +1614,8 @@ packages:
vscode-uri@3.0.8: vscode-uri@3.0.8:
resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
vue-tsc@2.1.2: vue-tsc@2.1.4:
resolution: {integrity: sha512-PH1BDxWT3eaPhl73elyZj6DV0nR3K4IFoUM1sGzMXXQneovVUwHQytdSyAHiED5MtEINGSHpL/Hs9ch+c/tDTw==} resolution: {integrity: sha512-XTzMXQcsixAvNbpou/9qngEsZawaiJRZH3Ja+lfgRfv2A1TJv9vnZ/Kyv7XxPqv/TaZVFSnjGpM87VbWIg6yQg==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
typescript: '>=5.0.0' typescript: '>=5.0.0'
@ -1650,7 +1661,7 @@ snapshots:
'@babel/code-frame@7.24.7': '@babel/code-frame@7.24.7':
dependencies: dependencies:
'@babel/highlight': 7.24.7 '@babel/highlight': 7.24.7
picocolors: 1.0.1 picocolors: 1.1.0
'@babel/compat-data@7.25.4': {} '@babel/compat-data@7.25.4': {}
@ -1775,7 +1786,7 @@ snapshots:
'@babel/helper-validator-identifier': 7.24.7 '@babel/helper-validator-identifier': 7.24.7
chalk: 2.4.2 chalk: 2.4.2
js-tokens: 4.0.0 js-tokens: 4.0.0
picocolors: 1.0.1 picocolors: 1.1.0
'@babel/parser@7.25.6': '@babel/parser@7.25.6':
dependencies: dependencies:
@ -2071,120 +2082,128 @@ snapshots:
'@polka/url@1.0.0-next.25': {} '@polka/url@1.0.0-next.25': {}
'@rollup/pluginutils@5.1.0(rollup@4.21.1)': '@rollup/pluginutils@5.1.0(rollup@4.21.2)':
dependencies: dependencies:
'@types/estree': 1.0.5 '@types/estree': 1.0.5
estree-walker: 2.0.2 estree-walker: 2.0.2
picomatch: 2.3.1 picomatch: 2.3.1
optionalDependencies: optionalDependencies:
rollup: 4.21.1 rollup: 4.21.2
'@rollup/rollup-android-arm-eabi@4.21.1': '@rollup/rollup-android-arm-eabi@4.21.2':
optional: true optional: true
'@rollup/rollup-android-arm64@4.21.1': '@rollup/rollup-android-arm64@4.21.2':
optional: true optional: true
'@rollup/rollup-darwin-arm64@4.21.1': '@rollup/rollup-darwin-arm64@4.21.2':
optional: true optional: true
'@rollup/rollup-darwin-x64@4.21.1': '@rollup/rollup-darwin-x64@4.21.2':
optional: true optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.21.1': '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
optional: true optional: true
'@rollup/rollup-linux-arm-musleabihf@4.21.1': '@rollup/rollup-linux-arm-musleabihf@4.21.2':
optional: true optional: true
'@rollup/rollup-linux-arm64-gnu@4.21.1': '@rollup/rollup-linux-arm64-gnu@4.21.2':
optional: true optional: true
'@rollup/rollup-linux-arm64-musl@4.21.1': '@rollup/rollup-linux-arm64-musl@4.21.2':
optional: true optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.21.1': '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
optional: true optional: true
'@rollup/rollup-linux-riscv64-gnu@4.21.1': '@rollup/rollup-linux-riscv64-gnu@4.21.2':
optional: true optional: true
'@rollup/rollup-linux-s390x-gnu@4.21.1': '@rollup/rollup-linux-s390x-gnu@4.21.2':
optional: true optional: true
'@rollup/rollup-linux-x64-gnu@4.21.1': '@rollup/rollup-linux-x64-gnu@4.21.2':
optional: true optional: true
'@rollup/rollup-linux-x64-musl@4.21.1': '@rollup/rollup-linux-x64-musl@4.21.2':
optional: true optional: true
'@rollup/rollup-win32-arm64-msvc@4.21.1': '@rollup/rollup-win32-arm64-msvc@4.21.2':
optional: true optional: true
'@rollup/rollup-win32-ia32-msvc@4.21.1': '@rollup/rollup-win32-ia32-msvc@4.21.2':
optional: true optional: true
'@rollup/rollup-win32-x64-msvc@4.21.1': '@rollup/rollup-win32-x64-msvc@4.21.2':
optional: true optional: true
'@tauri-apps/api@1.6.0': {} '@tauri-apps/api@2.0.0-rc.4': {}
'@tauri-apps/cli-darwin-arm64@1.6.1': '@tauri-apps/cli-darwin-arm64@2.0.0-rc.10':
optional: true optional: true
'@tauri-apps/cli-darwin-x64@1.6.1': '@tauri-apps/cli-darwin-x64@2.0.0-rc.10':
optional: true optional: true
'@tauri-apps/cli-linux-arm-gnueabihf@1.6.1': '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.10':
optional: true optional: true
'@tauri-apps/cli-linux-arm64-gnu@1.6.1': '@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.10':
optional: true optional: true
'@tauri-apps/cli-linux-arm64-musl@1.6.1': '@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.10':
optional: true optional: true
'@tauri-apps/cli-linux-x64-gnu@1.6.1': '@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.10':
optional: true optional: true
'@tauri-apps/cli-linux-x64-musl@1.6.1': '@tauri-apps/cli-linux-x64-musl@2.0.0-rc.10':
optional: true optional: true
'@tauri-apps/cli-win32-arm64-msvc@1.6.1': '@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.10':
optional: true optional: true
'@tauri-apps/cli-win32-ia32-msvc@1.6.1': '@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.10':
optional: true optional: true
'@tauri-apps/cli-win32-x64-msvc@1.6.1': '@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.10':
optional: true optional: true
'@tauri-apps/cli@1.6.1': '@tauri-apps/cli@2.0.0-rc.10':
optionalDependencies: optionalDependencies:
'@tauri-apps/cli-darwin-arm64': 1.6.1 '@tauri-apps/cli-darwin-arm64': 2.0.0-rc.10
'@tauri-apps/cli-darwin-x64': 1.6.1 '@tauri-apps/cli-darwin-x64': 2.0.0-rc.10
'@tauri-apps/cli-linux-arm-gnueabihf': 1.6.1 '@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-rc.10
'@tauri-apps/cli-linux-arm64-gnu': 1.6.1 '@tauri-apps/cli-linux-arm64-gnu': 2.0.0-rc.10
'@tauri-apps/cli-linux-arm64-musl': 1.6.1 '@tauri-apps/cli-linux-arm64-musl': 2.0.0-rc.10
'@tauri-apps/cli-linux-x64-gnu': 1.6.1 '@tauri-apps/cli-linux-x64-gnu': 2.0.0-rc.10
'@tauri-apps/cli-linux-x64-musl': 1.6.1 '@tauri-apps/cli-linux-x64-musl': 2.0.0-rc.10
'@tauri-apps/cli-win32-arm64-msvc': 1.6.1 '@tauri-apps/cli-win32-arm64-msvc': 2.0.0-rc.10
'@tauri-apps/cli-win32-ia32-msvc': 1.6.1 '@tauri-apps/cli-win32-ia32-msvc': 2.0.0-rc.10
'@tauri-apps/cli-win32-x64-msvc': 1.6.1 '@tauri-apps/cli-win32-x64-msvc': 2.0.0-rc.10
'@tauri-apps/plugin-dialog@2.0.0-rc.1':
dependencies:
'@tauri-apps/api': 2.0.0-rc.4
'@tauri-apps/plugin-shell@2.0.0-rc.1':
dependencies:
'@tauri-apps/api': 2.0.0-rc.4
'@types/estree@1.0.5': {} '@types/estree@1.0.5': {}
'@typescript-eslint/scope-manager@8.3.0': '@typescript-eslint/scope-manager@8.4.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.3.0 '@typescript-eslint/types': 8.4.0
'@typescript-eslint/visitor-keys': 8.3.0 '@typescript-eslint/visitor-keys': 8.4.0
'@typescript-eslint/types@8.3.0': {} '@typescript-eslint/types@8.4.0': {}
'@typescript-eslint/typescript-estree@8.3.0(typescript@5.5.4)': '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)':
dependencies: dependencies:
'@typescript-eslint/types': 8.3.0 '@typescript-eslint/types': 8.4.0
'@typescript-eslint/visitor-keys': 8.3.0 '@typescript-eslint/visitor-keys': 8.4.0
debug: 4.3.6 debug: 4.3.6
fast-glob: 3.3.2 fast-glob: 3.3.2
is-glob: 4.0.3 is-glob: 4.0.3
@ -2196,37 +2215,37 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': '@typescript-eslint/utils@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6))
'@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/scope-manager': 8.4.0
'@typescript-eslint/types': 8.3.0 '@typescript-eslint/types': 8.4.0
'@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
eslint: 9.9.1(jiti@1.21.6) eslint: 9.9.1(jiti@1.21.6)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
- typescript - typescript
'@typescript-eslint/visitor-keys@8.3.0': '@typescript-eslint/visitor-keys@8.4.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.3.0 '@typescript-eslint/types': 8.4.0
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
'@unocss/astro@0.62.3(rollup@4.21.1)(vite@5.4.2)': '@unocss/astro@0.62.3(rollup@4.21.2)(vite@5.4.2)':
dependencies: dependencies:
'@unocss/core': 0.62.3 '@unocss/core': 0.62.3
'@unocss/reset': 0.62.3 '@unocss/reset': 0.62.3
'@unocss/vite': 0.62.3(rollup@4.21.1)(vite@5.4.2) '@unocss/vite': 0.62.3(rollup@4.21.2)(vite@5.4.2)
optionalDependencies: optionalDependencies:
vite: 5.4.2 vite: 5.4.2
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- supports-color - supports-color
'@unocss/cli@0.62.3(rollup@4.21.1)': '@unocss/cli@0.62.3(rollup@4.21.2)':
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.0(rollup@4.21.1) '@rollup/pluginutils': 5.1.0(rollup@4.21.2)
'@unocss/config': 0.62.3 '@unocss/config': 0.62.3
'@unocss/core': 0.62.3 '@unocss/core': 0.62.3
'@unocss/preset-uno': 0.62.3 '@unocss/preset-uno': 0.62.3
@ -2261,7 +2280,7 @@ snapshots:
'@unocss/eslint-plugin@0.62.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': '@unocss/eslint-plugin@0.62.3(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
dependencies: dependencies:
'@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
'@unocss/config': 0.62.3 '@unocss/config': 0.62.3
'@unocss/core': 0.62.3 '@unocss/core': 0.62.3
magic-string: 0.30.11 magic-string: 0.30.11
@ -2282,14 +2301,14 @@ snapshots:
gzip-size: 6.0.0 gzip-size: 6.0.0
sirv: 2.0.4 sirv: 2.0.4
'@unocss/postcss@0.62.3(postcss@8.4.41)': '@unocss/postcss@0.62.3(postcss@8.4.44)':
dependencies: dependencies:
'@unocss/config': 0.62.3 '@unocss/config': 0.62.3
'@unocss/core': 0.62.3 '@unocss/core': 0.62.3
'@unocss/rule-utils': 0.62.3 '@unocss/rule-utils': 0.62.3
css-tree: 2.3.1 css-tree: 2.3.1
magic-string: 0.30.11 magic-string: 0.30.11
postcss: 8.4.41 postcss: 8.4.44
tinyglobby: 0.2.5 tinyglobby: 0.2.5
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -2375,10 +2394,10 @@ snapshots:
dependencies: dependencies:
'@unocss/core': 0.62.3 '@unocss/core': 0.62.3
'@unocss/vite@0.62.3(rollup@4.21.1)(vite@5.4.2)': '@unocss/vite@0.62.3(rollup@4.21.2)(vite@5.4.2)':
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.0(rollup@4.21.1) '@rollup/pluginutils': 5.1.0(rollup@4.21.2)
'@unocss/config': 0.62.3 '@unocss/config': 0.62.3
'@unocss/core': 0.62.3 '@unocss/core': 0.62.3
'@unocss/inspector': 0.62.3 '@unocss/inspector': 0.62.3
@ -2431,7 +2450,7 @@ snapshots:
'@vue/shared': 3.4.38 '@vue/shared': 3.4.38
estree-walker: 2.0.2 estree-walker: 2.0.2
magic-string: 0.30.11 magic-string: 0.30.11
postcss: 8.4.41 postcss: 8.4.44
source-map-js: 1.2.0 source-map-js: 1.2.0
'@vue/compiler-ssr@3.4.38': '@vue/compiler-ssr@3.4.38':
@ -2444,7 +2463,7 @@ snapshots:
de-indent: 1.0.2 de-indent: 1.0.2
he: 1.2.0 he: 1.2.0
'@vue/language-core@2.1.2(typescript@5.5.4)': '@vue/language-core@2.1.4(typescript@5.5.4)':
dependencies: dependencies:
'@volar/language-core': 2.4.1 '@volar/language-core': 2.4.1
'@vue/compiler-dom': 3.4.38 '@vue/compiler-dom': 3.4.38
@ -2530,21 +2549,21 @@ snapshots:
browserslist@4.23.3: browserslist@4.23.3:
dependencies: dependencies:
caniuse-lite: 1.0.30001653 caniuse-lite: 1.0.30001655
electron-to-chromium: 1.5.13 electron-to-chromium: 1.5.13
node-releases: 2.0.18 node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3) update-browserslist-db: 1.1.0(browserslist@4.23.3)
bundle-require@5.0.0(esbuild@0.21.5): bundle-require@5.0.0(esbuild@0.23.1):
dependencies: dependencies:
esbuild: 0.21.5 esbuild: 0.23.1
load-tsconfig: 0.2.5 load-tsconfig: 0.2.5
cac@6.7.14: {} cac@6.7.14: {}
callsites@3.1.0: {} callsites@3.1.0: {}
caniuse-lite@1.0.30001653: {} caniuse-lite@1.0.30001655: {}
chalk@2.4.2: chalk@2.4.2:
dependencies: dependencies:
@ -2833,15 +2852,14 @@ snapshots:
parent-module: 1.0.1 parent-module: 1.0.1
resolve-from: 4.0.0 resolve-from: 4.0.0
importx@0.4.3: importx@0.4.4:
dependencies: dependencies:
bundle-require: 5.0.0(esbuild@0.21.5) bundle-require: 5.0.0(esbuild@0.23.1)
debug: 4.3.6 debug: 4.3.6
esbuild: 0.21.5 esbuild: 0.23.1
jiti: 2.0.0-beta.2 jiti: 2.0.0-beta.3
jiti-v1: jiti@1.21.6 jiti-v1: jiti@1.21.6
pathe: 1.1.2 pathe: 1.1.2
pkg-types: 1.2.0
tsx: 4.19.0 tsx: 4.19.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -2866,7 +2884,7 @@ snapshots:
jiti@1.21.6: {} jiti@1.21.6: {}
jiti@2.0.0-beta.2: {} jiti@2.0.0-beta.3: {}
js-tokens@4.0.0: {} js-tokens@4.0.0: {}
@ -2995,7 +3013,7 @@ snapshots:
perfect-debounce@1.0.0: {} perfect-debounce@1.0.0: {}
picocolors@1.0.1: {} picocolors@1.1.0: {}
picomatch@2.3.1: {} picomatch@2.3.1: {}
@ -3007,10 +3025,10 @@ snapshots:
mlly: 1.7.1 mlly: 1.7.1
pathe: 1.1.2 pathe: 1.1.2
postcss@8.4.41: postcss@8.4.44:
dependencies: dependencies:
nanoid: 3.3.7 nanoid: 3.3.7
picocolors: 1.0.1 picocolors: 1.1.0
source-map-js: 1.2.0 source-map-js: 1.2.0
prelude-ls@1.2.1: {} prelude-ls@1.2.1: {}
@ -3029,26 +3047,26 @@ snapshots:
reusify@1.0.4: {} reusify@1.0.4: {}
rollup@4.21.1: rollup@4.21.2:
dependencies: dependencies:
'@types/estree': 1.0.5 '@types/estree': 1.0.5
optionalDependencies: optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.21.1 '@rollup/rollup-android-arm-eabi': 4.21.2
'@rollup/rollup-android-arm64': 4.21.1 '@rollup/rollup-android-arm64': 4.21.2
'@rollup/rollup-darwin-arm64': 4.21.1 '@rollup/rollup-darwin-arm64': 4.21.2
'@rollup/rollup-darwin-x64': 4.21.1 '@rollup/rollup-darwin-x64': 4.21.2
'@rollup/rollup-linux-arm-gnueabihf': 4.21.1 '@rollup/rollup-linux-arm-gnueabihf': 4.21.2
'@rollup/rollup-linux-arm-musleabihf': 4.21.1 '@rollup/rollup-linux-arm-musleabihf': 4.21.2
'@rollup/rollup-linux-arm64-gnu': 4.21.1 '@rollup/rollup-linux-arm64-gnu': 4.21.2
'@rollup/rollup-linux-arm64-musl': 4.21.1 '@rollup/rollup-linux-arm64-musl': 4.21.2
'@rollup/rollup-linux-powerpc64le-gnu': 4.21.1 '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2
'@rollup/rollup-linux-riscv64-gnu': 4.21.1 '@rollup/rollup-linux-riscv64-gnu': 4.21.2
'@rollup/rollup-linux-s390x-gnu': 4.21.1 '@rollup/rollup-linux-s390x-gnu': 4.21.2
'@rollup/rollup-linux-x64-gnu': 4.21.1 '@rollup/rollup-linux-x64-gnu': 4.21.2
'@rollup/rollup-linux-x64-musl': 4.21.1 '@rollup/rollup-linux-x64-musl': 4.21.2
'@rollup/rollup-win32-arm64-msvc': 4.21.1 '@rollup/rollup-win32-arm64-msvc': 4.21.2
'@rollup/rollup-win32-ia32-msvc': 4.21.1 '@rollup/rollup-win32-ia32-msvc': 4.21.2
'@rollup/rollup-win32-x64-msvc': 4.21.1 '@rollup/rollup-win32-x64-msvc': 4.21.2
fsevents: 2.3.3 fsevents: 2.3.3
run-parallel@1.2.0: run-parallel@1.2.0:
@ -3134,17 +3152,17 @@ snapshots:
dependencies: dependencies:
'@antfu/utils': 0.7.10 '@antfu/utils': 0.7.10
defu: 6.1.4 defu: 6.1.4
importx: 0.4.3 importx: 0.4.4
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
unocss@0.62.3(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2): unocss@0.62.3(postcss@8.4.44)(rollup@4.21.2)(vite@5.4.2):
dependencies: dependencies:
'@unocss/astro': 0.62.3(rollup@4.21.1)(vite@5.4.2) '@unocss/astro': 0.62.3(rollup@4.21.2)(vite@5.4.2)
'@unocss/cli': 0.62.3(rollup@4.21.1) '@unocss/cli': 0.62.3(rollup@4.21.2)
'@unocss/core': 0.62.3 '@unocss/core': 0.62.3
'@unocss/extractor-arbitrary-variants': 0.62.3 '@unocss/extractor-arbitrary-variants': 0.62.3
'@unocss/postcss': 0.62.3(postcss@8.4.41) '@unocss/postcss': 0.62.3(postcss@8.4.44)
'@unocss/preset-attributify': 0.62.3 '@unocss/preset-attributify': 0.62.3
'@unocss/preset-icons': 0.62.3 '@unocss/preset-icons': 0.62.3
'@unocss/preset-mini': 0.62.3 '@unocss/preset-mini': 0.62.3
@ -3159,7 +3177,7 @@ snapshots:
'@unocss/transformer-compile-class': 0.62.3 '@unocss/transformer-compile-class': 0.62.3
'@unocss/transformer-directives': 0.62.3 '@unocss/transformer-directives': 0.62.3
'@unocss/transformer-variant-group': 0.62.3 '@unocss/transformer-variant-group': 0.62.3
'@unocss/vite': 0.62.3(rollup@4.21.1)(vite@5.4.2) '@unocss/vite': 0.62.3(rollup@4.21.2)(vite@5.4.2)
optionalDependencies: optionalDependencies:
vite: 5.4.2 vite: 5.4.2
transitivePeerDependencies: transitivePeerDependencies:
@ -3171,7 +3189,7 @@ snapshots:
dependencies: dependencies:
browserslist: 4.23.3 browserslist: 4.23.3
escalade: 3.2.0 escalade: 3.2.0
picocolors: 1.0.1 picocolors: 1.1.0
uri-js@4.4.1: uri-js@4.4.1:
dependencies: dependencies:
@ -3180,17 +3198,17 @@ snapshots:
vite@5.4.2: vite@5.4.2:
dependencies: dependencies:
esbuild: 0.21.5 esbuild: 0.21.5
postcss: 8.4.41 postcss: 8.4.44
rollup: 4.21.1 rollup: 4.21.2
optionalDependencies: optionalDependencies:
fsevents: 2.3.3 fsevents: 2.3.3
vscode-uri@3.0.8: {} vscode-uri@3.0.8: {}
vue-tsc@2.1.2(typescript@5.5.4): vue-tsc@2.1.4(typescript@5.5.4):
dependencies: dependencies:
'@volar/typescript': 2.4.1 '@volar/typescript': 2.4.1
'@vue/language-core': 2.1.2(typescript@5.5.4) '@vue/language-core': 2.1.4(typescript@5.5.4)
semver: 7.6.3 semver: 7.6.3
typescript: 5.5.4 typescript: 5.5.4

View File

@ -1,6 +0,0 @@
<svg width="206" height="231" viewBox="0 0 206 231" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M143.143 84C143.143 96.1503 133.293 106 121.143 106C108.992 106 99.1426 96.1503 99.1426 84C99.1426 71.8497 108.992 62 121.143 62C133.293 62 143.143 71.8497 143.143 84Z" fill="#FFC131"/>
<ellipse cx="84.1426" cy="147" rx="22" ry="22" transform="rotate(180 84.1426 147)" fill="#24C8DB"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M166.738 154.548C157.86 160.286 148.023 164.269 137.757 166.341C139.858 160.282 141 153.774 141 147C141 144.543 140.85 142.121 140.558 139.743C144.975 138.204 149.215 136.139 153.183 133.575C162.73 127.404 170.292 118.608 174.961 108.244C179.63 97.8797 181.207 86.3876 179.502 75.1487C177.798 63.9098 172.884 53.4021 165.352 44.8883C157.82 36.3744 147.99 30.2165 137.042 27.1546C126.095 24.0926 114.496 24.2568 103.64 27.6274C92.7839 30.998 83.1319 37.4317 75.8437 46.1553C74.9102 47.2727 74.0206 48.4216 73.176 49.5993C61.9292 50.8488 51.0363 54.0318 40.9629 58.9556C44.2417 48.4586 49.5653 38.6591 56.679 30.1442C67.0505 17.7298 80.7861 8.57426 96.2354 3.77762C111.685 -1.01901 128.19 -1.25267 143.769 3.10474C159.348 7.46215 173.337 16.2252 184.056 28.3411C194.775 40.457 201.767 55.4101 204.193 71.404C206.619 87.3978 204.374 103.752 197.73 118.501C191.086 133.25 180.324 145.767 166.738 154.548ZM41.9631 74.275L62.5557 76.8042C63.0459 72.813 63.9401 68.9018 65.2138 65.1274C57.0465 67.0016 49.2088 70.087 41.9631 74.275Z" fill="#FFC131"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M38.4045 76.4519C47.3493 70.6709 57.2677 66.6712 67.6171 64.6132C65.2774 70.9669 64 77.8343 64 85.0001C64 87.1434 64.1143 89.26 64.3371 91.3442C60.0093 92.8732 55.8533 94.9092 51.9599 97.4256C42.4128 103.596 34.8505 112.392 30.1816 122.756C25.5126 133.12 23.9357 144.612 25.6403 155.851C27.3449 167.09 32.2584 177.598 39.7906 186.112C47.3227 194.626 57.153 200.784 68.1003 203.846C79.0476 206.907 90.6462 206.743 101.502 203.373C112.359 200.002 122.011 193.568 129.299 184.845C130.237 183.722 131.131 182.567 131.979 181.383C143.235 180.114 154.132 176.91 164.205 171.962C160.929 182.49 155.596 192.319 148.464 200.856C138.092 213.27 124.357 222.426 108.907 227.222C93.458 232.019 76.9524 232.253 61.3736 227.895C45.7948 223.538 31.8055 214.775 21.0867 202.659C10.3679 190.543 3.37557 175.59 0.949823 159.596C-1.47592 143.602 0.768139 127.248 7.41237 112.499C14.0566 97.7497 24.8183 85.2327 38.4045 76.4519ZM163.062 156.711L163.062 156.711C162.954 156.773 162.846 156.835 162.738 156.897C162.846 156.835 162.954 156.773 163.062 156.711Z" fill="#24C8DB"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

2227
src-tauri/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +1,25 @@
[package] [package]
name = "phiz-pay-tool" name = "phiz-pay-tools"
version = "0.1.0" version = "0.1.0"
description = "A Tauri App" description = "PhizPay tools"
authors = ["you"] authors = ["zaeyee"]
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
name = "phiz_pay_tools_lib"
crate-type = ["lib", "cdylib", "staticlib"]
[build-dependencies] [build-dependencies]
tauri-build = { version = "1", features = [] } tauri-build = { version = "2.0.0-rc", features = [] }
[dependencies] [dependencies]
tauri = { version = "1", features = ["path-all", "dialog-all", "shell-open"] } tauri = { version = "2.0.0-rc", features = [] }
tauri-plugin-shell = "2.0.0-rc"
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
serde_json = "1" serde_json = "1"
openssl = "0.10.66" openssl = "0.10.66"
thiserror = "1.0.63" thiserror = "1.0.63"
rand = "0.8.5" rand = "0.8.5"
tauri-plugin-dialog = "2.0.0-rc"
[features]
# This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!!
custom-protocol = ["tauri/custom-protocol"]

View File

@ -0,0 +1,13 @@
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "Capability for the main window",
"windows": [
"main"
],
"permissions": [
"core:default",
"shell:allow-open",
"dialog:default"
]
}

View File

@ -0,0 +1,94 @@
use openssl::{
asn1::{Asn1Integer, Asn1Time},
bn::BigNum,
hash::MessageDigest,
pkey::PKey,
rsa::Rsa,
x509::{X509Builder, X509NameBuilder},
};
use rand::{thread_rng, Rng};
use std::fs::File;
use std::io::Write;
// create the error type that represents all errors possible in our program
#[derive(Debug, thiserror::Error)]
enum Error {
#[error(transparent)]
Io(#[from] std::io::Error),
#[error(transparent)]
ErrorStack(#[from] openssl::error::ErrorStack),
}
// we must manually implement serde::Serialize
impl serde::Serialize for Error {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::ser::Serializer,
{
serializer.serialize_str(self.to_string().as_ref())
}
}
#[tauri::command]
fn gen_rsa_pair(merchant_id: &str, email: &str, save_path: &str) -> Result<(), Error> {
println!("--- Begin ---");
// 生成 2048 位的 RSA 私钥
let rsa = Rsa::generate(2048)?;
// 创建私钥
let private_key = PKey::from_rsa(rsa)?;
let mut x509_name_builder = X509NameBuilder::new()?;
x509_name_builder.append_entry_by_text("CN", "PHIZ")?;
x509_name_builder.append_entry_by_text("O", merchant_id)?;
x509_name_builder.append_entry_by_text("OU", email)?;
let x509_name = x509_name_builder.build();
let mut x509_builder: X509Builder = X509Builder::new()?;
let mut rng = thread_rng();
let mut bytes = [0u8; 20];
rng.fill(&mut bytes);
let bn: BigNum = BigNum::from_slice(&bytes)?;
let serial_number = Asn1Integer::from_bn(&bn)?;
x509_builder.set_serial_number(&serial_number)?;
x509_builder.set_version(2)?;
x509_builder.set_subject_name(&x509_name)?;
x509_builder.set_issuer_name(&x509_name)?;
x509_builder.set_pubkey(&private_key)?;
let not_before = Asn1Time::days_from_now(0)?;
let not_after = Asn1Time::days_from_now(1095)?;
x509_builder.set_not_before(&not_before)?;
x509_builder.set_not_after(&not_after)?;
x509_builder.sign(&private_key, MessageDigest::sha256())?;
let x509 = x509_builder.build();
// 将私钥转换为 PEM 格式
let private_key_pem = private_key.private_key_to_pem_pkcs8()?;
// 保存私钥到文件
let private_key_path = format!("{}/{}_private_key.pem", save_path, merchant_id);
let mut private_key_file = File::create(&private_key_path)?;
private_key_file.write_all(&private_key_pem)?;
// // 将证书转换为 PEM 格式
let certificate_pem = x509.to_pem()?;
// 保存证书到文件
let certificate_path = format!("{}/{}_certificate.pem", save_path, merchant_id);
let mut certificate_file = File::create(&certificate_path)?;
certificate_file.write_all(&certificate_pem)?;
println!("--- Success ---");
Ok(())
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_shell::init())
.invoke_handler(tauri::generate_handler![gen_rsa_pair])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}

View File

@ -1,94 +1,6 @@
// Prevents additional console window on Windows in release, DO NOT REMOVE!! // Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use openssl::{
asn1::{Asn1Integer, Asn1Time},
bn::BigNum,
hash::MessageDigest,
pkey::PKey,
rsa::Rsa,
x509::{X509Builder, X509NameBuilder},
};
use rand::{thread_rng, Rng};
use std::fs::File;
use std::io::Write;
// create the error type that represents all errors possible in our program
#[derive(Debug, thiserror::Error)]
enum Error {
#[error(transparent)]
Io(#[from] std::io::Error),
#[error(transparent)]
ErrorStack(#[from] openssl::error::ErrorStack),
}
// we must manually implement serde::Serialize
impl serde::Serialize for Error {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::ser::Serializer,
{
serializer.serialize_str(self.to_string().as_ref())
}
}
#[tauri::command]
fn gen_rsa_pair(merchant_id: &str, email: &str, save_path: &str) -> Result<(), Error> {
println!("--- Begin ---");
// 生成 2048 位的 RSA 私钥
let rsa = Rsa::generate(2048)?;
// 创建私钥
let private_key = PKey::from_rsa(rsa)?;
let mut x509_name_builder = X509NameBuilder::new()?;
x509_name_builder.append_entry_by_text("CN", "PHIZ")?;
x509_name_builder.append_entry_by_text("O", merchant_id)?;
x509_name_builder.append_entry_by_text("OU", email)?;
let x509_name = x509_name_builder.build();
let mut x509_builder: X509Builder = X509Builder::new()?;
let mut rng = thread_rng();
let mut bytes = [0u8; 20];
rng.fill(&mut bytes);
let bn: BigNum = BigNum::from_slice(&bytes)?;
let serial_number = Asn1Integer::from_bn(&bn)?;
x509_builder.set_serial_number(&serial_number)?;
x509_builder.set_version(2)?;
x509_builder.set_subject_name(&x509_name)?;
x509_builder.set_issuer_name(&x509_name)?;
x509_builder.set_pubkey(&private_key)?;
let not_before = Asn1Time::days_from_now(0)?;
let not_after = Asn1Time::days_from_now(1095)?;
x509_builder.set_not_before(&not_before)?;
x509_builder.set_not_after(&not_after)?;
x509_builder.sign(&private_key, MessageDigest::sha256())?;
let x509 = x509_builder.build();
// 将私钥转换为 PEM 格式
let private_key_pem = private_key.private_key_to_pem_pkcs8()?;
// 保存私钥到文件
let private_key_path = format!("{}/{}_private_key.pem", save_path, merchant_id);
let mut private_key_file = File::create(&private_key_path)?;
private_key_file.write_all(&private_key_pem)?;
// // 将证书转换为 PEM 格式
let certificate_pem = x509.to_pem()?;
// 保存证书到文件
let certificate_path = format!("{}/{}_certificate.pem", save_path, merchant_id);
let mut certificate_file = File::create(&certificate_path)?;
certificate_file.write_all(&certificate_pem)?;
println!("--- Success ---");
Ok(())
}
fn main() { fn main() {
tauri::Builder::default() phiz_pay_tools_lib::run()
.invoke_handler(tauri::generate_handler![gen_rsa_pair])
.run(tauri::generate_context!())
.expect("error while running tauri application");
} }

View File

@ -1,33 +1,14 @@
{ {
"productName": "phiz-pay-tools",
"version": "0.1.0",
"identifier": "com.phiz.pay.tools",
"build": { "build": {
"beforeDevCommand": "pnpm dev", "beforeDevCommand": "pnpm dev",
"devUrl": "http://localhost:1420",
"beforeBuildCommand": "pnpm build", "beforeBuildCommand": "pnpm build",
"devPath": "http://localhost:1420", "frontendDist": "../dist"
"distDir": "../dist"
}, },
"package": { "app": {
"productName": "PhizPayTools",
"version": "0.1.0"
},
"tauri": {
"allowlist": {
"all": false,
"shell": {
"all": false,
"open": true
},
"dialog": {
"all": true,
"ask": true,
"confirm": true,
"message": true,
"open": true,
"save": true
},
"path": {
"all": true
}
},
"windows": [ "windows": [
{ {
"title": "PhizPay Tools", "title": "PhizPay Tools",
@ -37,13 +18,11 @@
], ],
"security": { "security": {
"csp": null "csp": null
},
"bundle": {
"active": true,
"targets": "all",
"identifier": "com.phiz.pay.tool",
"icon": ["icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png", "icons/icon.icns", "icons/icon.ico"],
"resources": ["./libcrypto-3-x64.dll", "./libssl-3-x64.dll"]
} }
},
"bundle": {
"active": true,
"targets": "all",
"icon": ["icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png", "icons/icon.icns", "icons/icon.ico"]
} }
} }

View File

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { ref } from 'vue'
import { invoke } from '@tauri-apps/api/tauri' import { invoke } from '@tauri-apps/api/core'
import { message, open } from '@tauri-apps/api/dialog' import { message, open } from '@tauri-apps/plugin-dialog'
import { downloadDir } from '@tauri-apps/api/path' import { downloadDir } from '@tauri-apps/api/path'
const merchantId = ref('') const merchantId = ref('')
@ -27,7 +27,7 @@ async function genPrivateKey() {
</script> </script>
<template> <template>
<form class="py-4 container w-100 mt-20" @submit.prevent="genPrivateKey"> <form class="py-4 w-100 container" @submit.prevent="genPrivateKey">
<div for="merchantId"> <div for="merchantId">
<div class="mb-2">Merchant ID</div> <div class="mb-2">Merchant ID</div>
<input <input
@ -56,15 +56,14 @@ async function genPrivateKey() {
</form> </form>
</template> </template>
<style scoped> <style>
:root { :root {
font-family: Inter, Avenir, Helvetica, Arial, sans-serif; font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 24px; line-height: 24px;
font-weight: 400;
color: #0f0f0f; color: #333;
background-color: #f6f6f6; background: #fff;
font-synthesis: none; font-synthesis: none;
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
@ -73,24 +72,16 @@ async function genPrivateKey() {
-webkit-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;
} }
#app {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100vh;
}
input, input,
button { button {
outline: none; outline: none;
} }
@media (prefers-color-scheme: dark) {
:root {
color: #f6f6f6;
background-color: #2f2f2f;
}
input,
button {
color: #ffffff;
background-color: #0f0f0f98;
}
button:active {
background-color: #0f0f0f69;
}
}
</style> </style>

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>

Before

Width:  |  Height:  |  Size: 496 B

View File

@ -2,6 +2,9 @@ import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue' import vue from '@vitejs/plugin-vue'
import UnoCSS from 'unocss/vite' import UnoCSS from 'unocss/vite'
// @ts-expect-error process is a nodejs global
const host = process.env.TAURI_DEV_HOST
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig(async () => ({ export default defineConfig(async () => ({
plugins: [vue(), UnoCSS()], plugins: [vue(), UnoCSS()],
@ -14,6 +17,8 @@ export default defineConfig(async () => ({
server: { server: {
port: 1420, port: 1420,
strictPort: true, strictPort: true,
host: host || false,
hmr: host ? { protocol: 'ws', host, port: 1421 } : undefined,
watch: { watch: {
// 3. tell vite to ignore watching `src-tauri` // 3. tell vite to ignore watching `src-tauri`
ignored: ['**/src-tauri/**'] ignored: ['**/src-tauri/**']