Browse Source

add

feat/优化
谢亚昕 2 days ago
parent
commit
81f76353f6
  1. 2
      electron.vite.config.ts
  2. 2
      package.json
  3. 440
      pnpm-lock.yaml
  4. 38
      src/common/event/PlatForm/main/command.ts
  5. 9
      src/main/App.ts
  6. 130
      src/main/base/LinkedList.ts
  7. 51
      src/main/base/base.ts
  8. 6
      src/main/event.ts
  9. 0
      src/preload/plugin.ts
  10. 15
      src/renderer/src/bridge/PopupMenu.ts
  11. 2
      src/renderer/src/main.ts
  12. 11
      src/renderer/src/store/index.ts
  13. 30
      src/renderer/src/store/module.store.ts
  14. 34
      src/renderer/src/ui/NavBar.vue

2
electron.vite.config.ts

@ -31,7 +31,7 @@ export default defineConfig({
lib: {
entry: {
index: resolve(__dirname, "./src/preload/index.ts"),
loading: resolve(__dirname, "./src/preload/loading.ts"),
plugin: resolve(__dirname, "./src/preload/plugin.ts"),
}
}
},

2
package.json

@ -61,6 +61,8 @@
"logger": "workspace:^",
"monaco-editor": "^0.52.2",
"nprogress": "^0.2.0",
"pinia": "^3.0.2",
"pinia-plugin-persistedstate": "^4.2.0",
"prettier": "^3.5.1",
"rotating-file-stream": "^3.2.6",
"sass": "^1.85.0",

440
pnpm-lock.yaml

@ -83,7 +83,7 @@ importers:
version: 31.7.7
electron-builder:
specifier: ^24.13.3
version: 24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
version: 24.13.3(electron-builder-squirrel-windows@24.13.3)
electron-vite:
specifier: ^2.3.0
version: 2.3.0(vite@5.4.14(@types/node@20.17.19)(sass@1.85.0))
@ -111,6 +111,12 @@ importers:
nprogress:
specifier: ^0.2.0
version: 0.2.0
pinia:
specifier: ^3.0.2
version: 3.0.2(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))
pinia-plugin-persistedstate:
specifier: ^4.2.0
version: 4.2.0(pinia@3.0.2(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))
prettier:
specifier: ^3.5.1
version: 3.5.1
@ -134,13 +140,13 @@ importers:
version: 0.64.1(postcss@8.4.49)(rollup@4.26.0)(vite@5.4.14(@types/node@20.17.19)(sass@1.85.0))(vue@3.5.13(typescript@5.7.3))
unplugin-auto-import:
specifier: ^19.1.0
version: 19.1.0(@vueuse/core@12.7.0(typescript@5.7.3))
version: 19.1.0(@nuxt/kit@3.16.2)(@vueuse/core@12.7.0(typescript@5.7.3))
unplugin-icons:
specifier: ^22.1.0
version: 22.1.0(@vue/compiler-sfc@3.5.13)
unplugin-vue-components:
specifier: ^28.4.0
version: 28.4.0(@babel/parser@7.26.9)(vue@3.5.13(typescript@5.7.3))
version: 28.4.0(@babel/parser@7.26.9)(@nuxt/kit@3.16.2)(vue@3.5.13(typescript@5.7.3))
unplugin-vue-macros:
specifier: ^2.14.2
version: 2.14.2(@vueuse/core@12.7.0(typescript@5.7.3))(esbuild@0.23.1)(rollup@4.26.0)(typescript@5.7.3)(vite@5.4.14(@types/node@20.17.19)(sass@1.85.0))(vue-tsc@2.1.10(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3))
@ -852,6 +858,10 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
'@nuxt/kit@3.16.2':
resolution: {integrity: sha512-K1SAUo2vweTfudKZzjKsZ5YJoxPLTspR5qz5+G61xtZreLpsdpDYfBseqsIAl5VFLJuszeRpWQ01jP9LfQ6Ksw==}
engines: {node: '>=18.12.0'}
'@oxc-resolver/binding-darwin-arm64@3.0.3':
resolution: {integrity: sha512-cCSzv2VNSKrQUy43enMt6cN+TlijYUJ3qVOx52ioq7qOKtZ6sy3kcfzSOy3f27cFOCaPotIqC35eb3LMrdsPCA==}
cpu: [arm64]
@ -1115,6 +1125,10 @@ packages:
resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
engines: {node: '>=10'}
'@sindresorhus/merge-streams@2.3.0':
resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
engines: {node: '>=18'}
'@szmarczak/http-timer@4.0.6':
resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
engines: {node: '>=10'}
@ -1550,6 +1564,15 @@ packages:
'@vue/devtools-api@6.6.4':
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
'@vue/devtools-api@7.7.2':
resolution: {integrity: sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==}
'@vue/devtools-kit@7.7.2':
resolution: {integrity: sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==}
'@vue/devtools-shared@7.7.2':
resolution: {integrity: sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==}
'@vue/eslint-config-prettier@9.0.0':
resolution: {integrity: sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==}
peerDependencies:
@ -1623,6 +1646,11 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
acorn@8.14.1:
resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
engines: {node: '>=0.4.0'}
hasBin: true
agent-base@6.0.2:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
@ -1730,6 +1758,9 @@ packages:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
birpc@0.2.19:
resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==}
bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
@ -1797,6 +1828,14 @@ packages:
peerDependencies:
esbuild: '>=0.18'
c12@3.0.3:
resolution: {integrity: sha512-uC3MacKBb0Z15o5QWCHvHWj5Zv34pGQj9P+iXKSpTuSGFS0KKhUWf4t9AJ+gWjYOdmWCPEGpEzm8sS0iqbpo1w==}
peerDependencies:
magicast: ^0.3.5
peerDependenciesMeta:
magicast:
optional: true
cac@6.7.14:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
@ -1828,6 +1867,10 @@ packages:
resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==}
engines: {node: '>= 14.16.0'}
chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
chownr@2.0.0:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
@ -1839,6 +1882,9 @@ packages:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
citty@0.1.6:
resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
cli-truncate@2.1.0:
resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
engines: {node: '>=8'}
@ -1882,6 +1928,9 @@ packages:
confbox@0.1.8:
resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
confbox@0.2.2:
resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
config-file-ts@0.2.6:
resolution: {integrity: sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==}
@ -1889,9 +1938,17 @@ packages:
resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
engines: {node: ^14.18.0 || >=16.10.0}
consola@3.4.2:
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
engines: {node: ^14.18.0 || >=16.10.0}
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
copy-anything@3.0.5:
resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
engines: {node: '>=12.13'}
core-util-is@1.0.2:
resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
@ -1945,6 +2002,9 @@ packages:
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
deep-pick-omit@1.2.1:
resolution: {integrity: sha512-2J6Kc/m3irCeqVG42T+SaUMesaK7oGWaedGnQQK/+O0gYc+2SP5bKh/KKTE7d7SJ+GCA9UUE1GRzh6oDe0EnGw==}
defer-to-connect@2.0.1:
resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
engines: {node: '>=10'}
@ -1998,6 +2058,10 @@ packages:
dotenv-expand@5.1.0:
resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==}
dotenv@16.5.0:
resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==}
engines: {node: '>=12'}
dotenv@9.0.2:
resolution: {integrity: sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==}
engines: {node: '>=10'}
@ -2066,6 +2130,9 @@ packages:
err-code@2.0.3:
resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
errx@0.1.0:
resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==}
es-define-property@1.0.0:
resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
engines: {node: '>= 0.4'}
@ -2179,6 +2246,9 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
exsolve@1.0.4:
resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==}
extract-zip@2.0.1:
resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==}
engines: {node: '>= 10.17.0'}
@ -2309,6 +2379,10 @@ packages:
get-tsconfig@4.8.1:
resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
giget@2.0.0:
resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==}
hasBin: true
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@ -2349,6 +2423,10 @@ packages:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
globby@14.1.0:
resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==}
engines: {node: '>=18'}
gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
@ -2389,6 +2467,9 @@ packages:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
hosted-git-info@4.1.0:
resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
engines: {node: '>=10'}
@ -2428,6 +2509,10 @@ packages:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
ignore@7.0.3:
resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==}
engines: {node: '>= 4'}
immutable@5.0.2:
resolution: {integrity: sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw==}
@ -2485,6 +2570,10 @@ packages:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
is-what@4.1.16:
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
engines: {node: '>=12.13'}
isarray@1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
@ -2564,6 +2653,13 @@ packages:
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
klona@2.0.6:
resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==}
engines: {node: '>= 8'}
knitwork@1.2.0:
resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==}
kolorist@1.8.0:
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
@ -2590,6 +2686,10 @@ packages:
resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==}
engines: {node: '>=14'}
local-pkg@1.1.1:
resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==}
engines: {node: '>=14'}
locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@ -2722,6 +2822,9 @@ packages:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
engines: {node: '>= 8'}
mitt@3.0.1:
resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
mkdirp@1.0.4:
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
engines: {node: '>=10'}
@ -2763,6 +2866,9 @@ packages:
node-fetch-native@1.6.4:
resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==}
node-fetch-native@1.6.6:
resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==}
node-releases@2.0.18:
resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
@ -2780,6 +2886,11 @@ packages:
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
nypm@0.6.0:
resolution: {integrity: sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg==}
engines: {node: ^14.16.0 || >=16.10.0}
hasBin: true
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
@ -2787,6 +2898,9 @@ packages:
ofetch@1.4.1:
resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==}
ohash@2.0.11:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@ -2845,6 +2959,10 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
path-type@6.0.0:
resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==}
engines: {node: '>=18'}
pathe@1.1.2:
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
@ -2868,12 +2986,35 @@ packages:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'}
pinia-plugin-persistedstate@4.2.0:
resolution: {integrity: sha512-3buhA7ac+ssbOIx3VRCC8oHkoFwhDM9oHRCjo7nj+O8WUqnW+jRqh7eYT5eS/DNa3H28zp3dYf/nd/Vc8zj8eQ==}
peerDependencies:
'@pinia/nuxt': '>=0.9.0'
pinia: '>=2.3.0'
peerDependenciesMeta:
'@pinia/nuxt':
optional: true
pinia:
optional: true
pinia@3.0.2:
resolution: {integrity: sha512-sH2JK3wNY809JOeiiURUR0wehJ9/gd9qFN2Y828jCbxEzKEmEt0pzCXwqiSTfuRsK9vQsOflSdnbdBOGrhtn+g==}
peerDependencies:
typescript: '>=4.4.4'
vue: ^2.7.0 || ^3.5.11
peerDependenciesMeta:
typescript:
optional: true
pkg-types@1.2.1:
resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==}
pkg-types@1.3.1:
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
pkg-types@2.1.0:
resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==}
plist@3.1.0:
resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==}
engines: {node: '>=10.4.0'}
@ -2927,6 +3068,9 @@ packages:
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
engines: {node: '>=10'}
rc9@2.1.2:
resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
read-config-file@6.3.2:
resolution: {integrity: sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==}
engines: {node: '>=12.0.0'}
@ -2977,6 +3121,9 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
deprecated: Rimraf versions prior to v4 are no longer supported
@ -3033,6 +3180,11 @@ packages:
engines: {node: '>=10'}
hasBin: true
semver@7.7.1:
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
engines: {node: '>=10'}
hasBin: true
serialize-error@7.0.1:
resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
engines: {node: '>=10'}
@ -3073,6 +3225,10 @@ packages:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
slash@5.1.0:
resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
engines: {node: '>=14.16'}
slice-ansi@3.0.0:
resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
engines: {node: '>=8'}
@ -3092,6 +3248,10 @@ packages:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
speakingurl@14.0.1:
resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
engines: {node: '>=0.10.0'}
sprintf-js@1.1.3:
resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
@ -3099,6 +3259,9 @@ packages:
resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==}
engines: {node: '>= 6'}
std-env@3.9.0:
resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
steno@4.0.2:
resolution: {integrity: sha512-yhPIQXjrlt1xv7dyPQg2P17URmXbuM5pdGkpiMB3RenprfiBlvK415Lctfe0eshk90oA7/tNq7WEiMK8RSP39A==}
engines: {node: '>=18'}
@ -3136,6 +3299,10 @@ packages:
resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==}
engines: {node: '>= 8.0'}
superjson@2.2.2:
resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==}
engines: {node: '>=16'}
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@ -3178,6 +3345,10 @@ packages:
resolution: {integrity: sha512-32TmKeeKUahv0Go8WmQgiEp9Y21NuxjwjqiRC1nrUB51YacfSwuB44xgXD+HdIppmMRgjQNPdrHyA6vIybYZ+g==}
engines: {node: '>=12.0.0'}
tinyglobby@0.2.12:
resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
engines: {node: '>=12.0.0'}
tmp-promise@3.0.3:
resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==}
@ -3245,13 +3416,24 @@ packages:
unconfig@0.6.1:
resolution: {integrity: sha512-cVU+/sPloZqOyJEAfNwnQSFCzFrZm85vcVkryH7lnlB/PiTycUkAjt5Ds79cfIshGOZ+M5v3PBDnKgpmlE5DtA==}
unctx@2.4.1:
resolution: {integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==}
undici-types@6.19.8:
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
unicorn-magic@0.3.0:
resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
engines: {node: '>=18'}
unimport@4.1.2:
resolution: {integrity: sha512-oVUL7PSlyVV3QRhsdcyYEMaDX8HJyS/CnUonEJTYA3//bWO+o/4gG8F7auGWWWkrrxBQBYOO8DKe+C53ktpRXw==}
engines: {node: '>=18.12.0'}
unimport@4.2.0:
resolution: {integrity: sha512-mYVtA0nmzrysnYnyb3ALMbByJ+Maosee2+WyE0puXl+Xm2bUwPorPaaeZt0ETfuroPOtG8jj1g/qeFZ6buFnag==}
engines: {node: '>=18.12.0'}
universalify@0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
@ -3381,6 +3563,14 @@ packages:
resolution: {integrity: sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==}
engines: {node: '>=18.12.0'}
unplugin@2.3.1:
resolution: {integrity: sha512-l9lOQPGN82rUAnyX7Qw8z0E9oLgQ8tkPxFyAqX3x7DnX/jvgLHUqKX1b8u5RP6u6K0/GKfgvaiaB018j7zr+Nw==}
engines: {node: '>=18.12.0'}
untyped@2.0.0:
resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==}
hasBin: true
update-browserslist-db@1.1.1:
resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
hasBin: true
@ -4240,6 +4430,33 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
'@nuxt/kit@3.16.2':
dependencies:
c12: 3.0.3
consola: 3.4.2
defu: 6.1.4
destr: 2.0.3
errx: 0.1.0
exsolve: 1.0.4
globby: 14.1.0
ignore: 7.0.3
jiti: 2.4.2
klona: 2.0.6
knitwork: 1.2.0
mlly: 1.7.4
ohash: 2.0.11
pathe: 2.0.3
pkg-types: 2.1.0
scule: 1.3.0
semver: 7.7.1
std-env: 3.9.0
ufo: 1.5.4
unctx: 2.4.1
unimport: 4.2.0
untyped: 2.0.0
transitivePeerDependencies:
- magicast
'@oxc-resolver/binding-darwin-arm64@3.0.3':
optional: true
@ -4417,6 +4634,8 @@ snapshots:
'@sindresorhus/is@4.6.0': {}
'@sindresorhus/merge-streams@2.3.0': {}
'@szmarczak/http-timer@4.0.6':
dependencies:
defer-to-connect: 2.0.1
@ -5071,6 +5290,24 @@ snapshots:
'@vue/devtools-api@6.6.4': {}
'@vue/devtools-api@7.7.2':
dependencies:
'@vue/devtools-kit': 7.7.2
'@vue/devtools-kit@7.7.2':
dependencies:
'@vue/devtools-shared': 7.7.2
birpc: 0.2.19
hookable: 5.5.3
mitt: 3.0.1
perfect-debounce: 1.0.0
speakingurl: 14.0.1
superjson: 2.2.2
'@vue/devtools-shared@7.7.2':
dependencies:
rfdc: 1.4.1
'@vue/eslint-config-prettier@9.0.0(eslint@8.57.1)(prettier@3.5.1)':
dependencies:
eslint: 8.57.1
@ -5167,6 +5404,8 @@ snapshots:
acorn@8.14.0: {}
acorn@8.14.1: {}
agent-base@6.0.2:
dependencies:
debug: 4.4.0
@ -5205,7 +5444,7 @@ snapshots:
app-builder-bin@4.0.0: {}
app-builder-lib@24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3))(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3)):
app-builder-lib@24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3):
dependencies:
'@develar/schema-utils': 2.6.5
'@electron/notarize': 2.2.1
@ -5309,6 +5548,8 @@ snapshots:
binary-extensions@2.3.0: {}
birpc@0.2.19: {}
bl@4.1.0:
dependencies:
buffer: 5.7.1
@ -5402,6 +5643,21 @@ snapshots:
esbuild: 0.23.1
load-tsconfig: 0.2.5
c12@3.0.3:
dependencies:
chokidar: 4.0.3
confbox: 0.2.2
defu: 6.1.4
dotenv: 16.5.0
exsolve: 1.0.4
giget: 2.0.0
jiti: 2.4.2
ohash: 2.0.11
pathe: 2.0.3
perfect-debounce: 1.0.0
pkg-types: 2.1.0
rc9: 2.1.2
cac@6.7.14: {}
cacheable-lookup@5.0.4: {}
@ -5441,12 +5697,20 @@ snapshots:
dependencies:
readdirp: 4.0.2
chokidar@4.0.3:
dependencies:
readdirp: 4.0.2
chownr@2.0.0: {}
chromium-pickle-js@0.2.0: {}
ci-info@3.9.0: {}
citty@0.1.6:
dependencies:
consola: 3.4.2
cli-truncate@2.1.0:
dependencies:
slice-ansi: 3.0.0
@ -5490,6 +5754,8 @@ snapshots:
confbox@0.1.8: {}
confbox@0.2.2: {}
config-file-ts@0.2.6:
dependencies:
glob: 10.4.5
@ -5497,8 +5763,14 @@ snapshots:
consola@3.2.3: {}
consola@3.4.2: {}
convert-source-map@2.0.0: {}
copy-anything@3.0.5:
dependencies:
is-what: 4.1.16
core-util-is@1.0.2:
optional: true
@ -5543,6 +5815,8 @@ snapshots:
deep-is@0.1.4: {}
deep-pick-omit@1.2.1: {}
defer-to-connect@2.0.1: {}
define-data-property@1.1.4:
@ -5582,7 +5856,7 @@ snapshots:
dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3):
dependencies:
app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3))(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)
builder-util: 24.13.1
builder-util-runtime: 9.2.4
fs-extra: 10.1.0
@ -5612,6 +5886,8 @@ snapshots:
dotenv-expand@5.1.0: {}
dotenv@16.5.0: {}
dotenv@9.0.2: {}
duplexer@0.1.2: {}
@ -5624,7 +5900,7 @@ snapshots:
electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3):
dependencies:
app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3))(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)
archiver: 5.3.2
builder-util: 24.13.1
fs-extra: 10.1.0
@ -5632,9 +5908,9 @@ snapshots:
- dmg-builder
- supports-color
electron-builder@24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3)):
electron-builder@24.13.3(electron-builder-squirrel-windows@24.13.3):
dependencies:
app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3))(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)
builder-util: 24.13.1
builder-util-runtime: 9.2.4
chalk: 4.1.2
@ -5710,6 +5986,8 @@ snapshots:
err-code@2.0.3: {}
errx@0.1.0: {}
es-define-property@1.0.0:
dependencies:
get-intrinsic: 1.2.4
@ -5893,6 +6171,8 @@ snapshots:
esutils@2.0.3: {}
exsolve@1.0.4: {}
extract-zip@2.0.1:
dependencies:
debug: 4.4.0
@ -6036,6 +6316,15 @@ snapshots:
dependencies:
resolve-pkg-maps: 1.0.0
giget@2.0.0:
dependencies:
citty: 0.1.6
consola: 3.4.2
defu: 6.1.4
node-fetch-native: 1.6.6
nypm: 0.6.0
pathe: 2.0.3
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@ -6095,6 +6384,15 @@ snapshots:
merge2: 1.4.1
slash: 3.0.0
globby@14.1.0:
dependencies:
'@sindresorhus/merge-streams': 2.3.0
fast-glob: 3.3.3
ignore: 7.0.3
path-type: 6.0.0
slash: 5.1.0
unicorn-magic: 0.3.0
gopd@1.0.1:
dependencies:
get-intrinsic: 1.2.4
@ -6142,6 +6440,8 @@ snapshots:
he@1.2.0: {}
hookable@5.5.3: {}
hosted-git-info@4.1.0:
dependencies:
lru-cache: 6.0.0
@ -6184,6 +6484,8 @@ snapshots:
ignore@5.3.2: {}
ignore@7.0.3: {}
immutable@5.0.2: {}
import-fresh@3.3.0:
@ -6249,6 +6551,8 @@ snapshots:
is-path-inside@3.0.3: {}
is-what@4.1.16: {}
isarray@1.0.0: {}
isbinaryfile@4.0.10: {}
@ -6318,6 +6622,10 @@ snapshots:
dependencies:
json-buffer: 3.0.1
klona@2.0.6: {}
knitwork@1.2.0: {}
kolorist@1.8.0: {}
lazy-val@1.0.5: {}
@ -6343,6 +6651,12 @@ snapshots:
mlly: 1.7.3
pkg-types: 1.3.1
local-pkg@1.1.1:
dependencies:
mlly: 1.7.4
pkg-types: 2.1.0
quansync: 0.2.10
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
@ -6450,6 +6764,8 @@ snapshots:
minipass: 3.3.6
yallist: 4.0.0
mitt@3.0.1: {}
mkdirp@1.0.4: {}
mlly@1.7.3:
@ -6486,6 +6802,8 @@ snapshots:
node-fetch-native@1.6.4: {}
node-fetch-native@1.6.6: {}
node-releases@2.0.18: {}
normalize-path@3.0.0: {}
@ -6498,6 +6816,14 @@ snapshots:
dependencies:
boolbase: 1.0.0
nypm@0.6.0:
dependencies:
citty: 0.1.6
consola: 3.4.2
pathe: 2.0.3
pkg-types: 2.1.0
tinyexec: 0.3.2
object-keys@1.1.1:
optional: true
@ -6507,6 +6833,8 @@ snapshots:
node-fetch-native: 1.6.4
ufo: 1.5.4
ohash@2.0.11: {}
once@1.4.0:
dependencies:
wrappy: 1.0.2
@ -6571,6 +6899,8 @@ snapshots:
path-type@4.0.0: {}
path-type@6.0.0: {}
pathe@1.1.2: {}
pathe@2.0.3: {}
@ -6585,6 +6915,24 @@ snapshots:
picomatch@4.0.2: {}
pinia-plugin-persistedstate@4.2.0(pinia@3.0.2(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))):
dependencies:
'@nuxt/kit': 3.16.2
deep-pick-omit: 1.2.1
defu: 6.1.4
destr: 2.0.3
optionalDependencies:
pinia: 3.0.2(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))
transitivePeerDependencies:
- magicast
pinia@3.0.2(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)):
dependencies:
'@vue/devtools-api': 7.7.2
vue: 3.5.13(typescript@5.7.3)
optionalDependencies:
typescript: 5.7.3
pkg-types@1.2.1:
dependencies:
confbox: 0.1.8
@ -6597,6 +6945,12 @@ snapshots:
mlly: 1.7.4
pathe: 2.0.3
pkg-types@2.1.0:
dependencies:
confbox: 0.2.2
exsolve: 1.0.4
pathe: 2.0.3
plist@3.1.0:
dependencies:
'@xmldom/xmldom': 0.8.10
@ -6644,6 +6998,11 @@ snapshots:
quick-lru@5.1.1: {}
rc9@2.1.2:
dependencies:
defu: 6.1.4
destr: 2.0.3
read-config-file@6.3.2:
dependencies:
config-file-ts: 0.2.6
@ -6697,6 +7056,8 @@ snapshots:
reusify@1.0.4: {}
rfdc@1.4.1: {}
rimraf@3.0.2:
dependencies:
glob: 7.2.3
@ -6770,6 +7131,8 @@ snapshots:
semver@7.6.3: {}
semver@7.7.1: {}
serialize-error@7.0.1:
dependencies:
type-fest: 0.13.1
@ -6813,6 +7176,8 @@ snapshots:
slash@3.0.0: {}
slash@5.1.0: {}
slice-ansi@3.0.0:
dependencies:
ansi-styles: 4.3.0
@ -6832,11 +7197,15 @@ snapshots:
source-map@0.6.1: {}
speakingurl@14.0.1: {}
sprintf-js@1.1.3:
optional: true
stat-mode@1.0.0: {}
std-env@3.9.0: {}
steno@4.0.2: {}
string-width@4.2.3:
@ -6879,6 +7248,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
superjson@2.2.2:
dependencies:
copy-anything: 3.0.5
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
@ -6930,6 +7303,11 @@ snapshots:
fdir: 6.4.3(picomatch@4.0.2)
picomatch: 4.0.2
tinyglobby@0.2.12:
dependencies:
fdir: 6.4.3(picomatch@4.0.2)
picomatch: 4.0.2
tmp-promise@3.0.3:
dependencies:
tmp: 0.2.3
@ -7002,8 +7380,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
unctx@2.4.1:
dependencies:
acorn: 8.14.0
estree-walker: 3.0.3
magic-string: 0.30.17
unplugin: 2.2.0
undici-types@6.19.8: {}
unicorn-magic@0.3.0: {}
unimport@4.1.2:
dependencies:
acorn: 8.14.0
@ -7021,6 +7408,23 @@ snapshots:
unplugin: 2.2.0
unplugin-utils: 0.2.4
unimport@4.2.0:
dependencies:
acorn: 8.14.1
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
local-pkg: 1.1.1
magic-string: 0.30.17
mlly: 1.7.4
pathe: 2.0.3
picomatch: 4.0.2
pkg-types: 2.1.0
scule: 1.3.0
strip-literal: 3.0.0
tinyglobby: 0.2.12
unplugin: 2.3.1
unplugin-utils: 0.2.4
universalify@0.1.2: {}
universalify@2.0.1: {}
@ -7052,7 +7456,7 @@ snapshots:
- supports-color
- vue
unplugin-auto-import@19.1.0(@vueuse/core@12.7.0(typescript@5.7.3)):
unplugin-auto-import@19.1.0(@nuxt/kit@3.16.2)(@vueuse/core@12.7.0(typescript@5.7.3)):
dependencies:
local-pkg: 1.0.0
magic-string: 0.30.17
@ -7061,6 +7465,7 @@ snapshots:
unplugin: 2.2.0
unplugin-utils: 0.2.4
optionalDependencies:
'@nuxt/kit': 3.16.2
'@vueuse/core': 12.7.0(typescript@5.7.3)
unplugin-combine@1.2.0(esbuild@0.23.1)(rollup@4.26.0)(unplugin@1.16.1)(vite@5.4.14(@types/node@20.17.19)(sass@1.85.0)):
@ -7087,7 +7492,7 @@ snapshots:
pathe: 2.0.3
picomatch: 4.0.2
unplugin-vue-components@28.4.0(@babel/parser@7.26.9)(vue@3.5.13(typescript@5.7.3)):
unplugin-vue-components@28.4.0(@babel/parser@7.26.9)(@nuxt/kit@3.16.2)(vue@3.5.13(typescript@5.7.3)):
dependencies:
chokidar: 3.6.0
debug: 4.4.0
@ -7100,6 +7505,7 @@ snapshots:
vue: 3.5.13(typescript@5.7.3)
optionalDependencies:
'@babel/parser': 7.26.9
'@nuxt/kit': 3.16.2
transitivePeerDependencies:
- supports-color
@ -7195,6 +7601,20 @@ snapshots:
acorn: 8.14.0
webpack-virtual-modules: 0.6.2
unplugin@2.3.1:
dependencies:
acorn: 8.14.1
picomatch: 4.0.2
webpack-virtual-modules: 0.6.2
untyped@2.0.0:
dependencies:
citty: 0.1.6
defu: 6.1.4
jiti: 2.4.2
knitwork: 1.2.0
scule: 1.3.0
update-browserslist-db@1.1.1(browserslist@4.24.2):
dependencies:
browserslist: 4.24.2

38
src/common/event/PlatForm/main/command.ts

@ -3,7 +3,7 @@ import { inject } from "inversify"
import errorHandler from "logger/main-error"
import Tabs from "main/modules/tabs"
import WindowManager from "main/modules/window-manager"
import { getFileUrl, getPreloadUrl } from "main/utils"
import { getFileUrl } from "main/utils"
import icon from "@res/icon.png?asset"
import setting from "setting/main"
import { LogLevel } from "logger/common"
@ -33,41 +33,6 @@ export default class PlatFormCommand {
}
}
getSrdCookie() {
let srdWindow = this._WindowManager.get("srd")
let mainWindow = this._WindowManager.getMainWindow()
if (srdWindow && mainWindow) {
console.log(srdWindow.webContents.session)
console.log(srdWindow.webContents.session.storagePath)
console.log(srdWindow.webContents.session.cookies)
}
}
showSrd() {
this._WindowManager.createWindow("srd", {
url: "https://baidu.com/",
overideWindowOpts: true,
confrimWindowClose: false,
type: "info",
windowOpts: {
width: 600,
height: 400,
darkTheme: true,
modal: true,
show: true,
resizable: true,
icon: icon,
webPreferences: {
preload: getPreloadUrl("loading"),
devTools: false,
sandbox: false,
nodeIntegration: false,
contextIsolation: true,
},
},
})
}
showAbout() {
this._WindowManager.createWindow("about", {
url: getFileUrl("about.html"),
@ -80,6 +45,7 @@ export default class PlatFormCommand {
minimizable: false,
darkTheme: true,
modal: true,
title: "关于我",
show: true,
resizable: false,
icon: icon,

9
src/main/App.ts

@ -12,6 +12,7 @@ import DB from "./modules/db"
import Zephyr from "./modules/zephyr"
import Updater from "./modules/updater"
import { crashHandler } from "logger/crash-handler"
import { eventbus } from "./event"
protocol.registerSchemesAsPrivileged([
// {
@ -43,6 +44,11 @@ protocol.registerSchemesAsPrivileged([
@injectable()
class App extends BaseClass {
static events = {
AppReady: "App.ready",
}
destroy() {
this._IOC.destroy()
// 这里是应用正常退出, 可以检测应用是不是非正常退出,比如应用启动时记录一个启动时间并删除上一次结束时间和开始时间,结束时记录一个结束时间,
@ -65,6 +71,8 @@ class App extends BaseClass {
// 新开窗口的时候,会有个窗口闪烁的问题,也可以理解为渐入效果
// 主进程中添加如下代码即可
app.commandLine.appendSwitch("wm-window-animations-disabled")
// 开启硬件加速
app.disableHardwareAcceleration();
crashHandler.init()
this._Updater.init()
this._DB.init()
@ -81,6 +89,7 @@ class App extends BaseClass {
color: "#F8F8F8",
symbolColor: "#000000",
})
eventbus.emit(App.events.AppReady)
})
app.on("will-quit", () => {
this.destroy()

130
src/main/base/LinkedList.ts

@ -0,0 +1,130 @@
class Node<E> {
static readonly Undefined = new Node<any>(undefined)
element: E
next: Node<E>
prev: Node<E>
constructor(element: E) {
this.element = element
this.next = Node.Undefined
this.prev = Node.Undefined
}
}
export class LinkedList<E> {
private _first: Node<E> = Node.Undefined
private _last: Node<E> = Node.Undefined
private _size: number = 0
get size(): number {
return this._size
}
isEmpty(): boolean {
return this._first === Node.Undefined
}
clear(): void {
let node = this._first
while (node !== Node.Undefined) {
const next = node.next
node.prev = Node.Undefined
node.next = Node.Undefined
node = next
}
this._first = Node.Undefined
this._last = Node.Undefined
this._size = 0
}
unshift(element: E): () => void {
return this._insert(element, false)
}
push(element: E): () => void {
return this._insert(element, true)
}
private _insert(element: E, atTheEnd: boolean): () => void {
const newNode = new Node(element)
if (this._first === Node.Undefined) {
this._first = newNode
this._last = newNode
} else if (atTheEnd) {
// push
const oldLast = this._last
this._last = newNode
newNode.prev = oldLast
oldLast.next = newNode
} else {
// unshift
const oldFirst = this._first
this._first = newNode
newNode.next = oldFirst
oldFirst.prev = newNode
}
this._size += 1
let didRemove = false
return () => {
if (!didRemove) {
didRemove = true
this._remove(newNode)
}
}
}
shift(): E | undefined {
if (this._first === Node.Undefined) {
return undefined
} else {
const res = this._first.element
this._remove(this._first)
return res
}
}
pop(): E | undefined {
if (this._last === Node.Undefined) {
return undefined
} else {
const res = this._last.element
this._remove(this._last)
return res
}
}
private _remove(node: Node<E>): void {
if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {
// middle
const anchor = node.prev
anchor.next = node.next
node.next.prev = anchor
} else if (node.prev === Node.Undefined && node.next === Node.Undefined) {
// only node
this._first = Node.Undefined
this._last = Node.Undefined
} else if (node.next === Node.Undefined) {
// last
this._last = this._last.prev!
this._last.next = Node.Undefined
} else if (node.prev === Node.Undefined) {
// first
this._first = this._first.next!
this._first.prev = Node.Undefined
}
// done
this._size -= 1
}
*[Symbol.iterator](): Iterator<E> {
let node = this._first
while (node !== Node.Undefined) {
yield node.element
node = node.next
}
}
}

51
src/main/base/base.ts

@ -1,3 +1,54 @@
// import EventEmitter from "node:events"
// import { LinkedList } from "./LinkedList"
// abstract class BaseClass {
// constructor() {}
// public _events = new EventEmitter()
// private _event: Function | undefined
// private _listeners: LinkedList<any> | undefined
// abstract fire(event: string, ...args: any[])
// // 允许大家订阅此发射器的事件
// get event() {
// if (!this._event) {
// this._event = (listener, thisArgs?: any, disposables?) => {
// if (!this._listeners) {
// this._listeners = new LinkedList()
// }
// // 往队列中添加该 Listener,同时返回一个移除该 Listener 的方法
// const remove = this._listeners.push(!thisArgs ? listener : [listener, thisArgs])
// let result
// // 返回一个带 dispose 方法的结果,dispose 执行时会移除该 Listener
// result = {
// dispose: () => {
// result.dispose = Emitter._noop
// if (!this._disposed) {
// remove()
// }
// },
// }
// if (disposables instanceof DisposableStore) {
// disposables.add(result)
// } else if (Array.isArray(disposables)) {
// disposables.push(result)
// }
// return result
// }
// }
// return
// }
// dispose() {}
// abstract init(...argus: any[])
// abstract destroy()
// }
// export { BaseClass }
// export default BaseClass
import EventEmitter from "node:events"
abstract class BaseClass {

6
src/main/event.ts

@ -0,0 +1,6 @@
import EventEmitter from "events"
const globalEvent = new EventEmitter()
export default globalEvent
export { globalEvent as eventbus }

0
src/preload/loading.ts → src/preload/plugin.ts

15
src/renderer/src/bridge/PopupMenu.ts

@ -15,12 +15,17 @@ export class PopupMenu {
private _id: string
private _items: IMenuItemOption[]
private _offs: any[] = []
private clickEvent: Function = ()=>{}
constructor(menu_items: IMenuItemOption[]) {
this._id = `popup_menu_${Math.floor(Math.random() * 1e8)}`
this._items = menu_items
}
setClickEvent(fn: Function) {
this.clickEvent = fn
}
show(popupOptions?: PopupOptions) {
// console.log('show')
this.onHide()
@ -37,6 +42,16 @@ export class PopupMenu {
d._click_evt = evt
delete d.click
}
if(!d.click) {
const r = Math.floor(Math.random() * 1e8)
const evt = `popup_menu_item_${_idx++}_${r}`
const off = api.once(evt, (...argus)=>{
that.clickEvent(i, ...argus)
})
that._offs.push(off)
d._click_evt = evt
delete d.click
}
if (d.submenu && Array.isArray(d.submenu)) {
d.submenu = readMenu(d.submenu)
}

2
src/renderer/src/main.ts

@ -8,6 +8,7 @@ import 'nprogress/nprogress.css';
import { createApp } from "vue"
import App from "./App.vue"
import pinia from "./store"
import router from "./router"
import i18n from "./i18n"
@ -28,5 +29,6 @@ if (import.meta.env.DEV) {
}
app.use(i18n)
app.use(pinia)
app.use(router)
app.mount("#app")

11
src/renderer/src/store/index.ts

@ -0,0 +1,11 @@
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)
export default pinia
export {
pinia
}

30
src/renderer/src/store/module.store.ts

@ -0,0 +1,30 @@
import { defineStore } from "pinia"
export enum ModuleType {
CommonPanel = 0,
CodeMgr = 1,
LinkBox = 2,
}
export const useModuleStore = defineStore("module", () => {
const curModuleId = ref<ModuleType>(ModuleType.CommonPanel)
const modules: Record<"id" | "label", string | ModuleType>[] = [
{ id: ModuleType.CommonPanel, label: "全能面板" },
{ id: ModuleType.CodeMgr, label: "代码管家" },
{ id: ModuleType.LinkBox, label: "超链鉴宝" },
]
const setModule = (type: ModuleType) => {
console.log(type);
curModuleId.value = type
}
const curModule = computed(() => {
return modules.find(m => m.id === curModuleId.value)
})
return {
ModuleType,
setModule,
modules,
curModule,
}
})

34
src/renderer/src/ui/NavBar.vue

@ -16,6 +16,7 @@
<div relative h-full inline-flex items-center text-sm>{{ config.app_title }}</div>
<div relative class="list">
<div class="item" @click="onClickMenu">{{ t("browser.navbar.menu.label") }}</div>
<div class="item" @click="onClickPage">{{ ModuleStore.curModule?.label ?? "选择模块" }}</div>
</div>
</div>
<div float-right h-full flex items-center relative style="-webkit-app-region: no-drag">
@ -58,7 +59,8 @@
import config from "config"
import { PopupMenu } from "@/bridge/PopupMenu"
import { usePlatForm } from "common/event/PlatForm/hook"
import { LogLevel } from "logger/common"
import { LogLevel } from "logger/common"
import { useModuleStore } from "@/store/module.store"
const PlatForm = usePlatForm()
@ -114,21 +116,9 @@ import { LogLevel } from "logger/common"
},
},
{
label: "打开研发云",
async click() {
PlatForm.showSrd()
},
},
{
label: "打开研发云Cookie",
async click() {
PlatForm.getSrdCookie()
},
},
{
label: curLogLevel.value === LogLevel.TRACE ? "关闭调试模式" : "开启调试模式",
async click() {
if(curLogLevel.value === LogLevel.TRACE) {
if (curLogLevel.value === LogLevel.TRACE) {
await PlatForm.logSetLevel(LogLevel.INFO)
curLogLevel.value = LogLevel.INFO
return
@ -145,11 +135,25 @@ import { LogLevel } from "logger/common"
const onClickAbout = () => {
PlatForm.showAbout()
}
const ModuleStore = useModuleStore()
const onClickPage = async e => {
const menu = new PopupMenu(toRaw(ModuleStore.modules as any))
menu.setClickEvent(item => {
ModuleStore.setModule(item.id)
if(item.id === ModuleStore.ModuleType.CommonPanel) {
}
})
const obj = e.target.getBoundingClientRect()
menu.show({ x: ~~obj.x, y: ~~(obj.y + obj.height) })
}
</script>
<style lang="scss" scoped>
.list {
@apply: flex gap="5px";
@apply: flex gap-5px;
-webkit-app-region: no-drag;
.item {

Loading…
Cancel
Save