From 703b5a1040c842fddca9b11320442f20079db9a5 Mon Sep 17 00:00:00 2001 From: Jasery Date: Thu, 30 Oct 2025 18:07:53 +0800 Subject: [PATCH 01/17] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0unplugin-auto-i?= =?UTF-8?q?mport=E6=94=AF=E6=8C=81=E8=87=AA=E5=8A=A8=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E5=B8=B8=E7=94=A8API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加unplugin-auto-import插件配置,自动导入vue、vue-router等常用API 更新tsconfig.json包含auto-imports.d.ts类型声明文件 修改文档说明开发时注意事项 --- QWEN.md | 2 +- package.json | 1 + pnpm-lock.yaml | 170 ++++++ src/renderer/src/renderer/auto-imports.d.ts | 631 ++++++++++++++++++++ tsconfig.json | 2 +- vite.config.mts | 19 + 6 files changed, 823 insertions(+), 2 deletions(-) create mode 100644 src/renderer/src/renderer/auto-imports.d.ts diff --git a/QWEN.md b/QWEN.md index 37555d8..71d83b8 100644 --- a/QWEN.md +++ b/QWEN.md @@ -229,6 +229,6 @@ Building creates different distribution formats based on the platform: Artifacts are named with the format `${productName} ${version}_${arch}.${ext}` and stored in the `release/${version}` directory. -run `pnpm typecheck` before finish the task if need +run `pnpm typecheck` before finish the task if need,don't run `pnpm dev`. Always respond in 中文 diff --git a/package.json b/package.json index 2417561..9b9af49 100644 --- a/package.json +++ b/package.json @@ -112,6 +112,7 @@ "standard-version": "^9.5.0", "typescript": "^5.9.3", "typescript-eslint": "^8.46.1", + "unplugin-auto-import": "^20.2.0", "vite": "^7.1.10", "vite-plugin-electron": "^0.29.0", "vite-plugin-electron-renderer": "^0.14.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 394e0bc..d11cd02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,6 +117,9 @@ importers: typescript-eslint: specifier: ^8.46.1 version: 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + unplugin-auto-import: + specifier: ^20.2.0 + version: 20.2.0(@vueuse/core@14.0.0(vue@3.5.22(typescript@5.9.3))) vite: specifier: ^7.1.10 version: 7.1.10(@types/node@22.15.15)(jiti@2.6.1) @@ -1340,6 +1343,12 @@ packages: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} + 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.8-rc1: resolution: {integrity: sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==} @@ -1697,6 +1706,10 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + eslint-compat-utils@0.5.1: resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} @@ -1824,6 +1837,9 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -1831,6 +1847,9 @@ packages: exponential-backoff@3.1.2: resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + extract-zip@2.0.1: resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -2377,6 +2396,9 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2453,6 +2475,10 @@ packages: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -2641,6 +2667,9 @@ packages: engines: {node: '>=10'} hasBin: true + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + modify-values@1.0.1: resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} engines: {node: '>=0.10.0'} @@ -2833,6 +2862,9 @@ packages: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pe-library@0.4.1: resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} engines: {node: '>=12', npm: '>=6'} @@ -2871,6 +2903,12 @@ packages: typescript: optional: true + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + playwright-core@1.56.1: resolution: {integrity: sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==} engines: {node: '>=18'} @@ -2957,6 +2995,9 @@ packages: resolution: {integrity: sha512-+37VW4m47xbKfh65Wn6Xr9fnYF3QvtRSgRCSh2gtEyXlUI1SzFZtUFdRKA5+7sJkZbMEVVwhy5SOYkWA3N7gLw==} engines: {node: '>=18.0.0'} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -3102,6 +3143,9 @@ packages: sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + semver-compare@1.0.0: resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} @@ -3291,6 +3335,9 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + sumchecker@3.0.1: resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} engines: {node: '>= 8.0'} @@ -3436,6 +3483,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} @@ -3448,6 +3498,10 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + unimport@5.5.0: + resolution: {integrity: sha512-/JpWMG9s1nBSlXJAQ8EREFTFy3oy6USFd8T6AoBaw1q2GGcF4R9yp3ofg32UODZlYEO5VD0EWE1RpI9XDWyPYg==} + engines: {node: '>=18.12.0'} + unique-filename@2.0.1: resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -3464,6 +3518,26 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unplugin-auto-import@20.2.0: + resolution: {integrity: sha512-vfBI/SvD9hJqYNinipVOAj5n8dS8DJXFlCKFR5iLDp2SaQwsfdnfLXgZ+34Kd3YY3YEY9omk8XQg0bwos3Q8ug==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^4.0.0 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-utils@0.3.1: + resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} + engines: {node: '>=20.19.0'} + + unplugin@2.3.10: + resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} + engines: {node: '>=18.12.0'} + unzip-crx-3@0.2.0: resolution: {integrity: sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ==} @@ -3610,6 +3684,9 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -5094,6 +5171,10 @@ snapshots: readable-stream: 3.6.2 typedarray: 0.0.6 + confbox@0.1.8: {} + + confbox@0.2.2: {} + config-file-ts@0.2.8-rc1: dependencies: glob: 10.4.5 @@ -5664,6 +5745,8 @@ snapshots: escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + eslint-compat-utils@0.5.1(eslint@9.37.0(jiti@2.6.1)): dependencies: eslint: 9.37.0(jiti@2.6.1) @@ -5834,10 +5917,16 @@ snapshots: estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + esutils@2.0.3: {} exponential-backoff@3.1.2: {} + exsolve@1.0.7: {} + extract-zip@2.0.1: dependencies: debug: 4.4.0 @@ -6424,6 +6513,8 @@ snapshots: js-tokens@4.0.0: {} + js-tokens@9.0.1: {} + js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -6495,6 +6586,12 @@ snapshots: pify: 3.0.0 strip-bom: 3.0.0 + local-pkg@1.1.2: + dependencies: + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 + locate-path@2.0.0: dependencies: p-locate: 2.0.0 @@ -6685,6 +6782,13 @@ snapshots: mkdirp@1.0.4: {} + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + modify-values@1.0.1: {} ms@2.1.3: {} @@ -6883,6 +6987,8 @@ snapshots: dependencies: pify: 3.0.0 + pathe@2.0.3: {} + pe-library@0.4.1: {} pend@1.2.0: {} @@ -6906,6 +7012,18 @@ snapshots: optionalDependencies: typescript: 5.9.3 + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 + playwright-core@1.56.1: {} playwright@1.56.1: @@ -6970,6 +7088,8 @@ snapshots: qsu@1.10.2: {} + quansync@0.2.11: {} + queue-microtask@1.2.3: {} quick-lru@4.0.1: {} @@ -7163,6 +7283,8 @@ snapshots: sax@1.4.1: {} + scule@1.3.0: {} + semver-compare@1.0.0: optional: true @@ -7389,6 +7511,10 @@ snapshots: strip-json-comments@3.1.1: {} + strip-literal@3.1.0: + dependencies: + js-tokens: 9.0.1 + sumchecker@3.0.1: dependencies: debug: 4.4.0 @@ -7551,6 +7677,8 @@ snapshots: typescript@5.9.3: {} + ufo@1.6.1: {} + uglify-js@3.19.3: optional: true @@ -7563,6 +7691,23 @@ snapshots: undici-types@6.21.0: {} + unimport@5.5.0: + dependencies: + acorn: 8.15.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + local-pkg: 1.1.2 + magic-string: 0.30.19 + mlly: 1.8.0 + pathe: 2.0.3 + picomatch: 4.0.3 + pkg-types: 2.3.0 + scule: 1.3.0 + strip-literal: 3.1.0 + tinyglobby: 0.2.15 + unplugin: 2.3.10 + unplugin-utils: 0.3.1 + unique-filename@2.0.1: dependencies: unique-slug: 3.0.0 @@ -7575,6 +7720,29 @@ snapshots: universalify@2.0.1: {} + unplugin-auto-import@20.2.0(@vueuse/core@14.0.0(vue@3.5.22(typescript@5.9.3))): + dependencies: + local-pkg: 1.1.2 + magic-string: 0.30.19 + picomatch: 4.0.3 + unimport: 5.5.0 + unplugin: 2.3.10 + unplugin-utils: 0.3.1 + optionalDependencies: + '@vueuse/core': 14.0.0(vue@3.5.22(typescript@5.9.3)) + + unplugin-utils@0.3.1: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.3 + + unplugin@2.3.10: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.15.0 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + unzip-crx-3@0.2.0: dependencies: jszip: 3.10.1 @@ -7700,6 +7868,8 @@ snapshots: dependencies: defaults: 1.0.4 + webpack-virtual-modules@0.6.2: {} + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 diff --git a/src/renderer/src/renderer/auto-imports.d.ts b/src/renderer/src/renderer/auto-imports.d.ts new file mode 100644 index 0000000..b2afede --- /dev/null +++ b/src/renderer/src/renderer/auto-imports.d.ts @@ -0,0 +1,631 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +// biome-ignore lint: disable +export {} +declare global { + const EffectScope: typeof import('vue').EffectScope + const acceptHMRUpdate: typeof import('pinia').acceptHMRUpdate + const asyncComputed: typeof import('@vueuse/core').asyncComputed + const autoResetRef: typeof import('@vueuse/core').autoResetRef + const computed: typeof import('vue').computed + const computedAsync: typeof import('@vueuse/core').computedAsync + const computedEager: typeof import('@vueuse/core').computedEager + const computedInject: typeof import('@vueuse/core').computedInject + const computedWithControl: typeof import('@vueuse/core').computedWithControl + const controlledComputed: typeof import('@vueuse/core').controlledComputed + const controlledRef: typeof import('@vueuse/core').controlledRef + const createApp: typeof import('vue').createApp + const createEventHook: typeof import('@vueuse/core').createEventHook + const createGlobalState: typeof import('@vueuse/core').createGlobalState + const createInjectionState: typeof import('@vueuse/core').createInjectionState + const createPinia: typeof import('pinia').createPinia + const createReactiveFn: typeof import('@vueuse/core').createReactiveFn + const createRef: typeof import('@vueuse/core').createRef + const createReusableTemplate: typeof import('@vueuse/core').createReusableTemplate + const createSharedComposable: typeof import('@vueuse/core').createSharedComposable + const createTemplatePromise: typeof import('@vueuse/core').createTemplatePromise + const createUnrefFn: typeof import('@vueuse/core').createUnrefFn + const customRef: typeof import('vue').customRef + const debouncedRef: typeof import('@vueuse/core').debouncedRef + const debouncedWatch: typeof import('@vueuse/core').debouncedWatch + const defineAsyncComponent: typeof import('vue').defineAsyncComponent + const defineComponent: typeof import('vue').defineComponent + const defineStore: typeof import('pinia').defineStore + const eagerComputed: typeof import('@vueuse/core').eagerComputed + const effectScope: typeof import('vue').effectScope + const extendRef: typeof import('@vueuse/core').extendRef + const getActivePinia: typeof import('pinia').getActivePinia + const getCurrentInstance: typeof import('vue').getCurrentInstance + const getCurrentScope: typeof import('vue').getCurrentScope + const getCurrentWatcher: typeof import('vue').getCurrentWatcher + const h: typeof import('vue').h + const ignorableWatch: typeof import('@vueuse/core').ignorableWatch + const inject: typeof import('vue').inject + const injectLocal: typeof import('@vueuse/core').injectLocal + const isDefined: typeof import('@vueuse/core').isDefined + const isProxy: typeof import('vue').isProxy + const isReactive: typeof import('vue').isReactive + const isReadonly: typeof import('vue').isReadonly + const isRef: typeof import('vue').isRef + const isShallow: typeof import('vue').isShallow + const makeDestructurable: typeof import('@vueuse/core').makeDestructurable + const manualResetRef: typeof import('@vueuse/core').manualResetRef + const mapActions: typeof import('pinia').mapActions + const mapGetters: typeof import('pinia').mapGetters + const mapState: typeof import('pinia').mapState + const mapStores: typeof import('pinia').mapStores + const mapWritableState: typeof import('pinia').mapWritableState + const markRaw: typeof import('vue').markRaw + const nextTick: typeof import('vue').nextTick + const onActivated: typeof import('vue').onActivated + const onBeforeMount: typeof import('vue').onBeforeMount + const onBeforeRouteLeave: typeof import('vue-router').onBeforeRouteLeave + const onBeforeRouteUpdate: typeof import('vue-router').onBeforeRouteUpdate + const onBeforeUnmount: typeof import('vue').onBeforeUnmount + const onBeforeUpdate: typeof import('vue').onBeforeUpdate + const onClickOutside: typeof import('@vueuse/core').onClickOutside + const onDeactivated: typeof import('vue').onDeactivated + const onElementRemoval: typeof import('@vueuse/core').onElementRemoval + const onErrorCaptured: typeof import('vue').onErrorCaptured + const onKeyStroke: typeof import('@vueuse/core').onKeyStroke + const onLongPress: typeof import('@vueuse/core').onLongPress + const onMounted: typeof import('vue').onMounted + const onRenderTracked: typeof import('vue').onRenderTracked + const onRenderTriggered: typeof import('vue').onRenderTriggered + const onScopeDispose: typeof import('vue').onScopeDispose + const onServerPrefetch: typeof import('vue').onServerPrefetch + const onStartTyping: typeof import('@vueuse/core').onStartTyping + const onUnmounted: typeof import('vue').onUnmounted + const onUpdated: typeof import('vue').onUpdated + const onWatcherCleanup: typeof import('vue').onWatcherCleanup + const pausableWatch: typeof import('@vueuse/core').pausableWatch + const provide: typeof import('vue').provide + const provideLocal: typeof import('@vueuse/core').provideLocal + const reactify: typeof import('@vueuse/core').reactify + const reactifyObject: typeof import('@vueuse/core').reactifyObject + const reactive: typeof import('vue').reactive + const reactiveComputed: typeof import('@vueuse/core').reactiveComputed + const reactiveOmit: typeof import('@vueuse/core').reactiveOmit + const reactivePick: typeof import('@vueuse/core').reactivePick + const readonly: typeof import('vue').readonly + const ref: typeof import('vue').ref + const refAutoReset: typeof import('@vueuse/core').refAutoReset + const refDebounced: typeof import('@vueuse/core').refDebounced + const refDefault: typeof import('@vueuse/core').refDefault + const refManualReset: typeof import('@vueuse/core').refManualReset + const refThrottled: typeof import('@vueuse/core').refThrottled + const refWithControl: typeof import('@vueuse/core').refWithControl + const resolveComponent: typeof import('vue').resolveComponent + const resolveRef: typeof import('@vueuse/core').resolveRef + const setActivePinia: typeof import('pinia').setActivePinia + const setMapStoreSuffix: typeof import('pinia').setMapStoreSuffix + const shallowReactive: typeof import('vue').shallowReactive + const shallowReadonly: typeof import('vue').shallowReadonly + const shallowRef: typeof import('vue').shallowRef + const storeToRefs: typeof import('pinia').storeToRefs + const syncRef: typeof import('@vueuse/core').syncRef + const syncRefs: typeof import('@vueuse/core').syncRefs + const templateRef: typeof import('@vueuse/core').templateRef + const throttledRef: typeof import('@vueuse/core').throttledRef + const throttledWatch: typeof import('@vueuse/core').throttledWatch + const toRaw: typeof import('vue').toRaw + const toReactive: typeof import('@vueuse/core').toReactive + const toRef: typeof import('vue').toRef + const toRefs: typeof import('vue').toRefs + const toValue: typeof import('vue').toValue + const triggerRef: typeof import('vue').triggerRef + const tryOnBeforeMount: typeof import('@vueuse/core').tryOnBeforeMount + const tryOnBeforeUnmount: typeof import('@vueuse/core').tryOnBeforeUnmount + const tryOnMounted: typeof import('@vueuse/core').tryOnMounted + const tryOnScopeDispose: typeof import('@vueuse/core').tryOnScopeDispose + const tryOnUnmounted: typeof import('@vueuse/core').tryOnUnmounted + const unref: typeof import('vue').unref + const unrefElement: typeof import('@vueuse/core').unrefElement + const until: typeof import('@vueuse/core').until + const useActiveElement: typeof import('@vueuse/core').useActiveElement + const useAnimate: typeof import('@vueuse/core').useAnimate + const useArrayDifference: typeof import('@vueuse/core').useArrayDifference + const useArrayEvery: typeof import('@vueuse/core').useArrayEvery + const useArrayFilter: typeof import('@vueuse/core').useArrayFilter + const useArrayFind: typeof import('@vueuse/core').useArrayFind + const useArrayFindIndex: typeof import('@vueuse/core').useArrayFindIndex + const useArrayFindLast: typeof import('@vueuse/core').useArrayFindLast + const useArrayIncludes: typeof import('@vueuse/core').useArrayIncludes + const useArrayJoin: typeof import('@vueuse/core').useArrayJoin + const useArrayMap: typeof import('@vueuse/core').useArrayMap + const useArrayReduce: typeof import('@vueuse/core').useArrayReduce + const useArraySome: typeof import('@vueuse/core').useArraySome + const useArrayUnique: typeof import('@vueuse/core').useArrayUnique + const useAsyncQueue: typeof import('@vueuse/core').useAsyncQueue + const useAsyncState: typeof import('@vueuse/core').useAsyncState + const useAttrs: typeof import('vue').useAttrs + const useBase64: typeof import('@vueuse/core').useBase64 + const useBattery: typeof import('@vueuse/core').useBattery + const useBluetooth: typeof import('@vueuse/core').useBluetooth + const useBreakpoints: typeof import('@vueuse/core').useBreakpoints + const useBroadcastChannel: typeof import('@vueuse/core').useBroadcastChannel + const useBrowserLocation: typeof import('@vueuse/core').useBrowserLocation + const useCached: typeof import('@vueuse/core').useCached + const useClipboard: typeof import('@vueuse/core').useClipboard + const useClipboardItems: typeof import('@vueuse/core').useClipboardItems + const useCloned: typeof import('@vueuse/core').useCloned + const useColorMode: typeof import('@vueuse/core').useColorMode + const useConfirmDialog: typeof import('@vueuse/core').useConfirmDialog + const useCountdown: typeof import('@vueuse/core').useCountdown + const useCounter: typeof import('@vueuse/core').useCounter + const useCssModule: typeof import('vue').useCssModule + const useCssVar: typeof import('@vueuse/core').useCssVar + const useCssVars: typeof import('vue').useCssVars + const useCurrentElement: typeof import('@vueuse/core').useCurrentElement + const useCycleList: typeof import('@vueuse/core').useCycleList + const useDark: typeof import('@vueuse/core').useDark + const useDateFormat: typeof import('@vueuse/core').useDateFormat + const useDebounce: typeof import('@vueuse/core').useDebounce + const useDebounceFn: typeof import('@vueuse/core').useDebounceFn + const useDebouncedRefHistory: typeof import('@vueuse/core').useDebouncedRefHistory + const useDeviceMotion: typeof import('@vueuse/core').useDeviceMotion + const useDeviceOrientation: typeof import('@vueuse/core').useDeviceOrientation + const useDevicePixelRatio: typeof import('@vueuse/core').useDevicePixelRatio + const useDevicesList: typeof import('@vueuse/core').useDevicesList + const useDisplayMedia: typeof import('@vueuse/core').useDisplayMedia + const useDocumentVisibility: typeof import('@vueuse/core').useDocumentVisibility + const useDraggable: typeof import('@vueuse/core').useDraggable + const useDropZone: typeof import('@vueuse/core').useDropZone + const useElementBounding: typeof import('@vueuse/core').useElementBounding + const useElementByPoint: typeof import('@vueuse/core').useElementByPoint + const useElementHover: typeof import('@vueuse/core').useElementHover + const useElementSize: typeof import('@vueuse/core').useElementSize + const useElementVisibility: typeof import('@vueuse/core').useElementVisibility + const useEventBus: typeof import('@vueuse/core').useEventBus + const useEventListener: typeof import('@vueuse/core').useEventListener + const useEventSource: typeof import('@vueuse/core').useEventSource + const useEyeDropper: typeof import('@vueuse/core').useEyeDropper + const useFavicon: typeof import('@vueuse/core').useFavicon + const useFetch: typeof import('@vueuse/core').useFetch + const useFileDialog: typeof import('@vueuse/core').useFileDialog + const useFileSystemAccess: typeof import('@vueuse/core').useFileSystemAccess + const useFocus: typeof import('@vueuse/core').useFocus + const useFocusWithin: typeof import('@vueuse/core').useFocusWithin + const useFps: typeof import('@vueuse/core').useFps + const useFullscreen: typeof import('@vueuse/core').useFullscreen + const useGamepad: typeof import('@vueuse/core').useGamepad + const useGeolocation: typeof import('@vueuse/core').useGeolocation + const useI18n: typeof import('vue-i18n').useI18n + const useId: typeof import('vue').useId + const useIdle: typeof import('@vueuse/core').useIdle + const useImage: typeof import('@vueuse/core').useImage + const useInfiniteScroll: typeof import('@vueuse/core').useInfiniteScroll + const useIntersectionObserver: typeof import('@vueuse/core').useIntersectionObserver + const useInterval: typeof import('@vueuse/core').useInterval + const useIntervalFn: typeof import('@vueuse/core').useIntervalFn + const useKeyModifier: typeof import('@vueuse/core').useKeyModifier + const useLastChanged: typeof import('@vueuse/core').useLastChanged + const useLink: typeof import('vue-router').useLink + const useLocalStorage: typeof import('@vueuse/core').useLocalStorage + const useMagicKeys: typeof import('@vueuse/core').useMagicKeys + const useManualRefHistory: typeof import('@vueuse/core').useManualRefHistory + const useMediaControls: typeof import('@vueuse/core').useMediaControls + const useMediaQuery: typeof import('@vueuse/core').useMediaQuery + const useMemoize: typeof import('@vueuse/core').useMemoize + const useMemory: typeof import('@vueuse/core').useMemory + const useModel: typeof import('vue').useModel + const useMounted: typeof import('@vueuse/core').useMounted + const useMouse: typeof import('@vueuse/core').useMouse + const useMouseInElement: typeof import('@vueuse/core').useMouseInElement + const useMousePressed: typeof import('@vueuse/core').useMousePressed + const useMutationObserver: typeof import('@vueuse/core').useMutationObserver + const useNavigatorLanguage: typeof import('@vueuse/core').useNavigatorLanguage + const useNetwork: typeof import('@vueuse/core').useNetwork + const useNow: typeof import('@vueuse/core').useNow + const useObjectUrl: typeof import('@vueuse/core').useObjectUrl + const useOffsetPagination: typeof import('@vueuse/core').useOffsetPagination + const useOnline: typeof import('@vueuse/core').useOnline + const usePageLeave: typeof import('@vueuse/core').usePageLeave + const useParallax: typeof import('@vueuse/core').useParallax + const useParentElement: typeof import('@vueuse/core').useParentElement + const usePerformanceObserver: typeof import('@vueuse/core').usePerformanceObserver + const usePermission: typeof import('@vueuse/core').usePermission + const usePointer: typeof import('@vueuse/core').usePointer + const usePointerLock: typeof import('@vueuse/core').usePointerLock + const usePointerSwipe: typeof import('@vueuse/core').usePointerSwipe + const usePreferredColorScheme: typeof import('@vueuse/core').usePreferredColorScheme + const usePreferredContrast: typeof import('@vueuse/core').usePreferredContrast + const usePreferredDark: typeof import('@vueuse/core').usePreferredDark + const usePreferredLanguages: typeof import('@vueuse/core').usePreferredLanguages + const usePreferredReducedMotion: typeof import('@vueuse/core').usePreferredReducedMotion + const usePreferredReducedTransparency: typeof import('@vueuse/core').usePreferredReducedTransparency + const usePrevious: typeof import('@vueuse/core').usePrevious + const useRafFn: typeof import('@vueuse/core').useRafFn + const useRefHistory: typeof import('@vueuse/core').useRefHistory + const useResizeObserver: typeof import('@vueuse/core').useResizeObserver + const useRoute: typeof import('vue-router').useRoute + const useRouter: typeof import('vue-router').useRouter + const useSSRWidth: typeof import('@vueuse/core').useSSRWidth + const useScreenOrientation: typeof import('@vueuse/core').useScreenOrientation + const useScreenSafeArea: typeof import('@vueuse/core').useScreenSafeArea + const useScriptTag: typeof import('@vueuse/core').useScriptTag + const useScroll: typeof import('@vueuse/core').useScroll + const useScrollLock: typeof import('@vueuse/core').useScrollLock + const useSessionStorage: typeof import('@vueuse/core').useSessionStorage + const useShare: typeof import('@vueuse/core').useShare + const useSlots: typeof import('vue').useSlots + const useSorted: typeof import('@vueuse/core').useSorted + const useSpeechRecognition: typeof import('@vueuse/core').useSpeechRecognition + const useSpeechSynthesis: typeof import('@vueuse/core').useSpeechSynthesis + const useStepper: typeof import('@vueuse/core').useStepper + const useStorage: typeof import('@vueuse/core').useStorage + const useStorageAsync: typeof import('@vueuse/core').useStorageAsync + const useStyleTag: typeof import('@vueuse/core').useStyleTag + const useSupported: typeof import('@vueuse/core').useSupported + const useSwipe: typeof import('@vueuse/core').useSwipe + const useTemplateRef: typeof import('vue').useTemplateRef + const useTemplateRefsList: typeof import('@vueuse/core').useTemplateRefsList + const useTextDirection: typeof import('@vueuse/core').useTextDirection + const useTextSelection: typeof import('@vueuse/core').useTextSelection + const useTextareaAutosize: typeof import('@vueuse/core').useTextareaAutosize + const useThrottle: typeof import('@vueuse/core').useThrottle + const useThrottleFn: typeof import('@vueuse/core').useThrottleFn + const useThrottledRefHistory: typeof import('@vueuse/core').useThrottledRefHistory + const useTimeAgo: typeof import('@vueuse/core').useTimeAgo + const useTimeAgoIntl: typeof import('@vueuse/core').useTimeAgoIntl + const useTimeout: typeof import('@vueuse/core').useTimeout + const useTimeoutFn: typeof import('@vueuse/core').useTimeoutFn + const useTimeoutPoll: typeof import('@vueuse/core').useTimeoutPoll + const useTimestamp: typeof import('@vueuse/core').useTimestamp + const useTitle: typeof import('@vueuse/core').useTitle + const useToNumber: typeof import('@vueuse/core').useToNumber + const useToString: typeof import('@vueuse/core').useToString + const useToggle: typeof import('@vueuse/core').useToggle + const useTransition: typeof import('@vueuse/core').useTransition + const useUrlSearchParams: typeof import('@vueuse/core').useUrlSearchParams + const useUserMedia: typeof import('@vueuse/core').useUserMedia + const useVModel: typeof import('@vueuse/core').useVModel + const useVModels: typeof import('@vueuse/core').useVModels + const useVibrate: typeof import('@vueuse/core').useVibrate + const useVirtualList: typeof import('@vueuse/core').useVirtualList + const useWakeLock: typeof import('@vueuse/core').useWakeLock + const useWebNotification: typeof import('@vueuse/core').useWebNotification + const useWebSocket: typeof import('@vueuse/core').useWebSocket + const useWebWorker: typeof import('@vueuse/core').useWebWorker + const useWebWorkerFn: typeof import('@vueuse/core').useWebWorkerFn + const useWindowFocus: typeof import('@vueuse/core').useWindowFocus + const useWindowScroll: typeof import('@vueuse/core').useWindowScroll + const useWindowSize: typeof import('@vueuse/core').useWindowSize + const watch: typeof import('vue').watch + const watchArray: typeof import('@vueuse/core').watchArray + const watchAtMost: typeof import('@vueuse/core').watchAtMost + const watchDebounced: typeof import('@vueuse/core').watchDebounced + const watchDeep: typeof import('@vueuse/core').watchDeep + const watchEffect: typeof import('vue').watchEffect + const watchIgnorable: typeof import('@vueuse/core').watchIgnorable + const watchImmediate: typeof import('@vueuse/core').watchImmediate + const watchOnce: typeof import('@vueuse/core').watchOnce + const watchPausable: typeof import('@vueuse/core').watchPausable + const watchPostEffect: typeof import('vue').watchPostEffect + const watchSyncEffect: typeof import('vue').watchSyncEffect + const watchThrottled: typeof import('@vueuse/core').watchThrottled + const watchTriggerable: typeof import('@vueuse/core').watchTriggerable + const watchWithFilter: typeof import('@vueuse/core').watchWithFilter + const whenever: typeof import('@vueuse/core').whenever +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, ShallowRef, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') +} + +// for vue template auto import +import { UnwrapRef } from 'vue' +declare module 'vue' { + interface GlobalComponents {} + interface ComponentCustomProperties { + readonly EffectScope: UnwrapRef + readonly acceptHMRUpdate: UnwrapRef + readonly asyncComputed: UnwrapRef + readonly autoResetRef: UnwrapRef + readonly computed: UnwrapRef + readonly computedAsync: UnwrapRef + readonly computedEager: UnwrapRef + readonly computedInject: UnwrapRef + readonly computedWithControl: UnwrapRef + readonly controlledComputed: UnwrapRef + readonly controlledRef: UnwrapRef + readonly createApp: UnwrapRef + readonly createEventHook: UnwrapRef + readonly createGlobalState: UnwrapRef + readonly createInjectionState: UnwrapRef + readonly createPinia: UnwrapRef + readonly createReactiveFn: UnwrapRef + readonly createRef: UnwrapRef + readonly createReusableTemplate: UnwrapRef + readonly createSharedComposable: UnwrapRef + readonly createTemplatePromise: UnwrapRef + readonly createUnrefFn: UnwrapRef + readonly customRef: UnwrapRef + readonly debouncedRef: UnwrapRef + readonly debouncedWatch: UnwrapRef + readonly defineAsyncComponent: UnwrapRef + readonly defineComponent: UnwrapRef + readonly defineStore: UnwrapRef + readonly eagerComputed: UnwrapRef + readonly effectScope: UnwrapRef + readonly extendRef: UnwrapRef + readonly getActivePinia: UnwrapRef + readonly getCurrentInstance: UnwrapRef + readonly getCurrentScope: UnwrapRef + readonly getCurrentWatcher: UnwrapRef + readonly h: UnwrapRef + readonly ignorableWatch: UnwrapRef + readonly inject: UnwrapRef + readonly injectLocal: UnwrapRef + readonly isDefined: UnwrapRef + readonly isProxy: UnwrapRef + readonly isReactive: UnwrapRef + readonly isReadonly: UnwrapRef + readonly isRef: UnwrapRef + readonly isShallow: UnwrapRef + readonly makeDestructurable: UnwrapRef + readonly manualResetRef: UnwrapRef + readonly mapActions: UnwrapRef + readonly mapGetters: UnwrapRef + readonly mapState: UnwrapRef + readonly mapStores: UnwrapRef + readonly mapWritableState: UnwrapRef + readonly markRaw: UnwrapRef + readonly nextTick: UnwrapRef + readonly onActivated: UnwrapRef + readonly onBeforeMount: UnwrapRef + readonly onBeforeRouteLeave: UnwrapRef + readonly onBeforeRouteUpdate: UnwrapRef + readonly onBeforeUnmount: UnwrapRef + readonly onBeforeUpdate: UnwrapRef + readonly onClickOutside: UnwrapRef + readonly onDeactivated: UnwrapRef + readonly onElementRemoval: UnwrapRef + readonly onErrorCaptured: UnwrapRef + readonly onKeyStroke: UnwrapRef + readonly onLongPress: UnwrapRef + readonly onMounted: UnwrapRef + readonly onRenderTracked: UnwrapRef + readonly onRenderTriggered: UnwrapRef + readonly onScopeDispose: UnwrapRef + readonly onServerPrefetch: UnwrapRef + readonly onStartTyping: UnwrapRef + readonly onUnmounted: UnwrapRef + readonly onUpdated: UnwrapRef + readonly onWatcherCleanup: UnwrapRef + readonly pausableWatch: UnwrapRef + readonly provide: UnwrapRef + readonly provideLocal: UnwrapRef + readonly reactify: UnwrapRef + readonly reactifyObject: UnwrapRef + readonly reactive: UnwrapRef + readonly reactiveComputed: UnwrapRef + readonly reactiveOmit: UnwrapRef + readonly reactivePick: UnwrapRef + readonly readonly: UnwrapRef + readonly ref: UnwrapRef + readonly refAutoReset: UnwrapRef + readonly refDebounced: UnwrapRef + readonly refDefault: UnwrapRef + readonly refManualReset: UnwrapRef + readonly refThrottled: UnwrapRef + readonly refWithControl: UnwrapRef + readonly resolveComponent: UnwrapRef + readonly resolveRef: UnwrapRef + readonly setActivePinia: UnwrapRef + readonly setMapStoreSuffix: UnwrapRef + readonly shallowReactive: UnwrapRef + readonly shallowReadonly: UnwrapRef + readonly shallowRef: UnwrapRef + readonly storeToRefs: UnwrapRef + readonly syncRef: UnwrapRef + readonly syncRefs: UnwrapRef + readonly templateRef: UnwrapRef + readonly throttledRef: UnwrapRef + readonly throttledWatch: UnwrapRef + readonly toRaw: UnwrapRef + readonly toReactive: UnwrapRef + readonly toRef: UnwrapRef + readonly toRefs: UnwrapRef + readonly toValue: UnwrapRef + readonly triggerRef: UnwrapRef + readonly tryOnBeforeMount: UnwrapRef + readonly tryOnBeforeUnmount: UnwrapRef + readonly tryOnMounted: UnwrapRef + readonly tryOnScopeDispose: UnwrapRef + readonly tryOnUnmounted: UnwrapRef + readonly unref: UnwrapRef + readonly unrefElement: UnwrapRef + readonly until: UnwrapRef + readonly useActiveElement: UnwrapRef + readonly useAnimate: UnwrapRef + readonly useArrayDifference: UnwrapRef + readonly useArrayEvery: UnwrapRef + readonly useArrayFilter: UnwrapRef + readonly useArrayFind: UnwrapRef + readonly useArrayFindIndex: UnwrapRef + readonly useArrayFindLast: UnwrapRef + readonly useArrayIncludes: UnwrapRef + readonly useArrayJoin: UnwrapRef + readonly useArrayMap: UnwrapRef + readonly useArrayReduce: UnwrapRef + readonly useArraySome: UnwrapRef + readonly useArrayUnique: UnwrapRef + readonly useAsyncQueue: UnwrapRef + readonly useAsyncState: UnwrapRef + readonly useAttrs: UnwrapRef + readonly useBase64: UnwrapRef + readonly useBattery: UnwrapRef + readonly useBluetooth: UnwrapRef + readonly useBreakpoints: UnwrapRef + readonly useBroadcastChannel: UnwrapRef + readonly useBrowserLocation: UnwrapRef + readonly useCached: UnwrapRef + readonly useClipboard: UnwrapRef + readonly useClipboardItems: UnwrapRef + readonly useCloned: UnwrapRef + readonly useColorMode: UnwrapRef + readonly useConfirmDialog: UnwrapRef + readonly useCountdown: UnwrapRef + readonly useCounter: UnwrapRef + readonly useCssModule: UnwrapRef + readonly useCssVar: UnwrapRef + readonly useCssVars: UnwrapRef + readonly useCurrentElement: UnwrapRef + readonly useCycleList: UnwrapRef + readonly useDark: UnwrapRef + readonly useDateFormat: UnwrapRef + readonly useDebounce: UnwrapRef + readonly useDebounceFn: UnwrapRef + readonly useDebouncedRefHistory: UnwrapRef + readonly useDeviceMotion: UnwrapRef + readonly useDeviceOrientation: UnwrapRef + readonly useDevicePixelRatio: UnwrapRef + readonly useDevicesList: UnwrapRef + readonly useDisplayMedia: UnwrapRef + readonly useDocumentVisibility: UnwrapRef + readonly useDraggable: UnwrapRef + readonly useDropZone: UnwrapRef + readonly useElementBounding: UnwrapRef + readonly useElementByPoint: UnwrapRef + readonly useElementHover: UnwrapRef + readonly useElementSize: UnwrapRef + readonly useElementVisibility: UnwrapRef + readonly useEventBus: UnwrapRef + readonly useEventListener: UnwrapRef + readonly useEventSource: UnwrapRef + readonly useEyeDropper: UnwrapRef + readonly useFavicon: UnwrapRef + readonly useFetch: UnwrapRef + readonly useFileDialog: UnwrapRef + readonly useFileSystemAccess: UnwrapRef + readonly useFocus: UnwrapRef + readonly useFocusWithin: UnwrapRef + readonly useFps: UnwrapRef + readonly useFullscreen: UnwrapRef + readonly useGamepad: UnwrapRef + readonly useGeolocation: UnwrapRef + readonly useI18n: UnwrapRef + readonly useId: UnwrapRef + readonly useIdle: UnwrapRef + readonly useImage: UnwrapRef + readonly useInfiniteScroll: UnwrapRef + readonly useIntersectionObserver: UnwrapRef + readonly useInterval: UnwrapRef + readonly useIntervalFn: UnwrapRef + readonly useKeyModifier: UnwrapRef + readonly useLastChanged: UnwrapRef + readonly useLink: UnwrapRef + readonly useLocalStorage: UnwrapRef + readonly useMagicKeys: UnwrapRef + readonly useManualRefHistory: UnwrapRef + readonly useMediaControls: UnwrapRef + readonly useMediaQuery: UnwrapRef + readonly useMemoize: UnwrapRef + readonly useMemory: UnwrapRef + readonly useModel: UnwrapRef + readonly useMounted: UnwrapRef + readonly useMouse: UnwrapRef + readonly useMouseInElement: UnwrapRef + readonly useMousePressed: UnwrapRef + readonly useMutationObserver: UnwrapRef + readonly useNavigatorLanguage: UnwrapRef + readonly useNetwork: UnwrapRef + readonly useNow: UnwrapRef + readonly useObjectUrl: UnwrapRef + readonly useOffsetPagination: UnwrapRef + readonly useOnline: UnwrapRef + readonly usePageLeave: UnwrapRef + readonly useParallax: UnwrapRef + readonly useParentElement: UnwrapRef + readonly usePerformanceObserver: UnwrapRef + readonly usePermission: UnwrapRef + readonly usePointer: UnwrapRef + readonly usePointerLock: UnwrapRef + readonly usePointerSwipe: UnwrapRef + readonly usePreferredColorScheme: UnwrapRef + readonly usePreferredContrast: UnwrapRef + readonly usePreferredDark: UnwrapRef + readonly usePreferredLanguages: UnwrapRef + readonly usePreferredReducedMotion: UnwrapRef + readonly usePreferredReducedTransparency: UnwrapRef + readonly usePrevious: UnwrapRef + readonly useRafFn: UnwrapRef + readonly useRefHistory: UnwrapRef + readonly useResizeObserver: UnwrapRef + readonly useRoute: UnwrapRef + readonly useRouter: UnwrapRef + readonly useSSRWidth: UnwrapRef + readonly useScreenOrientation: UnwrapRef + readonly useScreenSafeArea: UnwrapRef + readonly useScriptTag: UnwrapRef + readonly useScroll: UnwrapRef + readonly useScrollLock: UnwrapRef + readonly useSessionStorage: UnwrapRef + readonly useShare: UnwrapRef + readonly useSlots: UnwrapRef + readonly useSorted: UnwrapRef + readonly useSpeechRecognition: UnwrapRef + readonly useSpeechSynthesis: UnwrapRef + readonly useStepper: UnwrapRef + readonly useStorage: UnwrapRef + readonly useStorageAsync: UnwrapRef + readonly useStyleTag: UnwrapRef + readonly useSupported: UnwrapRef + readonly useSwipe: UnwrapRef + readonly useTemplateRef: UnwrapRef + readonly useTemplateRefsList: UnwrapRef + readonly useTextDirection: UnwrapRef + readonly useTextSelection: UnwrapRef + readonly useTextareaAutosize: UnwrapRef + readonly useThrottle: UnwrapRef + readonly useThrottleFn: UnwrapRef + readonly useThrottledRefHistory: UnwrapRef + readonly useTimeAgo: UnwrapRef + readonly useTimeAgoIntl: UnwrapRef + readonly useTimeout: UnwrapRef + readonly useTimeoutFn: UnwrapRef + readonly useTimeoutPoll: UnwrapRef + readonly useTimestamp: UnwrapRef + readonly useTitle: UnwrapRef + readonly useToNumber: UnwrapRef + readonly useToString: UnwrapRef + readonly useToggle: UnwrapRef + readonly useTransition: UnwrapRef + readonly useUrlSearchParams: UnwrapRef + readonly useUserMedia: UnwrapRef + readonly useVModel: UnwrapRef + readonly useVModels: UnwrapRef + readonly useVibrate: UnwrapRef + readonly useVirtualList: UnwrapRef + readonly useWakeLock: UnwrapRef + readonly useWebNotification: UnwrapRef + readonly useWebSocket: UnwrapRef + readonly useWebWorker: UnwrapRef + readonly useWebWorkerFn: UnwrapRef + readonly useWindowFocus: UnwrapRef + readonly useWindowScroll: UnwrapRef + readonly useWindowSize: UnwrapRef + readonly watch: UnwrapRef + readonly watchArray: UnwrapRef + readonly watchAtMost: UnwrapRef + readonly watchDebounced: UnwrapRef + readonly watchDeep: UnwrapRef + readonly watchEffect: UnwrapRef + readonly watchIgnorable: UnwrapRef + readonly watchImmediate: UnwrapRef + readonly watchOnce: UnwrapRef + readonly watchPausable: UnwrapRef + readonly watchPostEffect: UnwrapRef + readonly watchSyncEffect: UnwrapRef + readonly watchThrottled: UnwrapRef + readonly watchTriggerable: UnwrapRef + readonly watchWithFilter: UnwrapRef + readonly whenever: UnwrapRef + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index f5930c2..8d5b148 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,7 +19,7 @@ }, "lib": ["esnext", "dom"] }, - "include": ["src/*.ts", "src/*.d.ts", "src/renderer"], + "include": ["src/*.ts", "src/*.d.ts", "src/renderer", "src/renderer/auto-imports.d.ts"], "references": [ { "path": "./tsconfig.node.json" diff --git a/vite.config.mts b/vite.config.mts index 146ef8b..8eddfbb 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -6,6 +6,7 @@ import EslintPlugin from 'vite-plugin-eslint' import VuetifyPlugin from 'vite-plugin-vuetify' import VueJsx from '@vitejs/plugin-vue-jsx' import Vue from '@vitejs/plugin-vue' +import AutoImport from 'unplugin-auto-import/vite' import { rmSync } from 'fs' import { resolve, dirname } from 'path' import { builtinModules } from 'module' @@ -100,6 +101,24 @@ export default defineConfig(({ mode }) => { plugins: [ Vue(), VueJsx(), + // Auto import commonly used APIs + AutoImport({ + imports: [ + 'vue', + 'vue-router', + 'vue-i18n', + '@vueuse/core', + 'pinia' + ], + dirs: [ + './src/renderer/composables', + './src/renderer/utils', + './src/renderer/store', + './src/renderer/components' + ], + dts: 'src/renderer/auto-imports.d.ts', + vueTemplate: true + }), // Docs: https://github.com/vuetifyjs/vuetify-loader VuetifyPlugin({ autoImport: true From f2d88bb3d130cefd89544ce4af29ef6a3a3d969e Mon Sep 17 00:00:00 2001 From: Jasery Date: Thu, 30 Oct 2025 18:59:54 +0800 Subject: [PATCH 02/17] =?UTF-8?q?refactor(=E5=88=9B=E5=BB=BA=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF):=20=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=95=8C=E9=9D=A2=E5=B8=83=E5=B1=80=E5=92=8C=E4=BA=A4?= =?UTF-8?q?=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除冗余的文件选择按钮,将文件路径选择整合到文本输入框中 调整容器间距和最大宽度限制 删除已显示在输入框中的选中路径展示区域 --- QWEN.md | 2 +- src/renderer/screens/CreateTemplateScreen.vue | 35 ++++++++----------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/QWEN.md b/QWEN.md index 71d83b8..ca54668 100644 --- a/QWEN.md +++ b/QWEN.md @@ -229,6 +229,6 @@ Building creates different distribution formats based on the platform: Artifacts are named with the format `${productName} ${version}_${arch}.${ext}` and stored in the `release/${version}` directory. -run `pnpm typecheck` before finish the task if need,don't run `pnpm dev`. +run `pnpm typecheck` before finish the task if need,don't run `pnpm dev` or `pnpm build`. Always respond in 中文 diff --git a/src/renderer/screens/CreateTemplateScreen.vue b/src/renderer/screens/CreateTemplateScreen.vue index 00e23aa..a5e5a36 100644 --- a/src/renderer/screens/CreateTemplateScreen.vue +++ b/src/renderer/screens/CreateTemplateScreen.vue @@ -1,7 +1,8 @@