From a34f6306b0fc5817ce4d4f0e63ef58fa6ac102ee Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Thu, 4 Sep 2025 20:28:10 +0800 Subject: [PATCH 1/4] feat: update language tools to 3.0 (#360) --- package.json | 12 +- pnpm-lock.yaml | 603 +++++++++++---------------------------- src/monaco/vue.worker.ts | 243 ++++++++++++++-- 3 files changed, 390 insertions(+), 468 deletions(-) diff --git a/package.json b/package.json index b42b8e81..97e532c9 100644 --- a/package.json +++ b/package.json @@ -88,10 +88,13 @@ "@types/hash-sum": "^1.0.2", "@types/node": "^24.2.0", "@vitejs/plugin-vue": "^6.0.1", - "@volar/jsdelivr": "~2.4.11", - "@volar/monaco": "~2.4.11", + "@volar/jsdelivr": "2.4.23", + "@volar/monaco": "2.4.23", + "@volar/typescript": "2.4.23", "@vue/babel-plugin-jsx": "^1.4.0", - "@vue/language-service": "~2.2.2", + "@vue/language-core": "3.0.7-alpha.1", + "@vue/language-service": "3.0.7-alpha.1", + "@vue/typescript-plugin": "3.0.7-alpha.1", "assert": "^2.1.0", "bumpp": "^10.2.2", "codemirror": "^5.65.18", @@ -112,7 +115,8 @@ "vite": "^7.0.6", "vite-plugin-dts": "^4.5.4", "vscode-uri": "^3.1.0", + "volar-service-typescript": "0.0.65", "vue": "^3.5.18", - "vue-tsc": "~3.0.5" + "vue-tsc": "3.0.7-alpha.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc977f11..299b5148 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,17 +45,26 @@ importers: specifier: ^6.0.1 version: 6.0.1(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(yaml@2.8.0))(vue@3.5.18(typescript@5.9.2)) '@volar/jsdelivr': - specifier: ~2.4.11 - version: 2.4.11 + specifier: 2.4.23 + version: 2.4.23 '@volar/monaco': - specifier: ~2.4.11 - version: 2.4.11 + specifier: 2.4.23 + version: 2.4.23 + '@volar/typescript': + specifier: 2.4.23 + version: 2.4.23 '@vue/babel-plugin-jsx': specifier: ^1.4.0 version: 1.4.0(@babel/core@7.25.2) + '@vue/language-core': + specifier: 3.0.7-alpha.1 + version: 3.0.7-alpha.1(typescript@5.9.2) '@vue/language-service': - specifier: ~2.2.2 - version: 2.2.2(typescript@5.9.2) + specifier: 3.0.7-alpha.1 + version: 3.0.7-alpha.1(typescript@5.9.2) + '@vue/typescript-plugin': + specifier: 3.0.7-alpha.1 + version: 3.0.7-alpha.1(typescript@5.9.2) assert: specifier: ^2.1.0 version: 2.1.0 @@ -113,6 +122,9 @@ importers: vite-plugin-dts: specifier: ^4.5.4 version: 4.5.4(@types/node@24.2.0)(rollup@4.46.2)(typescript@5.9.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(yaml@2.8.0)) + volar-service-typescript: + specifier: 0.0.65 + version: 0.0.65(@volar/language-service@2.4.23) vscode-uri: specifier: ^3.1.0 version: 3.1.0 @@ -120,8 +132,8 @@ importers: specifier: ^3.5.18 version: 3.5.18(typescript@5.9.2) vue-tsc: - specifier: ~3.0.5 - version: 3.0.5(typescript@5.9.2) + specifier: 3.0.7-alpha.1 + version: 3.0.7-alpha.1(typescript@5.9.2) packages: @@ -129,10 +141,6 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -145,10 +153,6 @@ packages: resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.3': - resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.28.0': resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} engines: {node: '>=6.9.0'} @@ -179,10 +183,6 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} @@ -195,16 +195,6 @@ packages: resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.3': - resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.27.2': - resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.28.0': resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} engines: {node: '>=6.0.0'} @@ -220,18 +210,10 @@ packages: resolution: {integrity: sha512-1kjA8XzBRN68HoDDYKP38bucHtxYWCIX8XdYwe1drRNUOjOVNt8EMy9jiE6UwaGFfU7NOHCG+C8KgBc9CR08nA==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.9': - resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} - engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.4': - resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.0': resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} @@ -258,8 +240,9 @@ packages: '@emmetio/css-abbreviation@2.1.8': resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} - '@emmetio/css-parser@0.4.0': - resolution: {integrity: sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==} + '@emmetio/css-parser@https://codeload.github.com/ramya-rao-a/css-parser/tar.gz/370c480ac103bd17c7bcfb34bf5d577dc40d3660': + resolution: {tarball: https://codeload.github.com/ramya-rao-a/css-parser/tar.gz/370c480ac103bd17c7bcfb34bf5d577dc40d3660} + version: 0.4.0 '@emmetio/html-matcher@1.3.0': resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} @@ -429,12 +412,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.1': - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.7.0': resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -742,9 +719,6 @@ packages: '@types/codemirror@5.60.16': resolution: {integrity: sha512-V/yHdamffSS075jit+fDxaOAmdP2liok8NSNJnAZfDJErzOheuygHZEhAJrfmk5TEyM32MhkZjwo/idX791yxw==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -844,32 +818,23 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 vue: ^3.2.25 - '@volar/jsdelivr@2.4.11': - resolution: {integrity: sha512-HbOg2cccKcpgxK/bS9+vFzfb2o4RUqLSCJjcGuYWRRuUhyw0gqkpnrSRMovgG/rUpkqVXDCnfIeoHdl04z0BZg==} + '@volar/jsdelivr@2.4.23': + resolution: {integrity: sha512-1W6ruokqwMj5yJM6se4Ko6PiA6xi1UlT1sVnxBF5zWkR1MCy3GSgN1lnInt25vjf4+nOL+Hn9MSSS8a39svV7Q==} - '@volar/language-core@2.4.11': - resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} + '@volar/language-core@2.4.23': + resolution: {integrity: sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==} - '@volar/language-core@2.4.22': - resolution: {integrity: sha512-gp4M7Di5KgNyIyO903wTClYBavRt6UyFNpc5LWfyZr1lBsTUY+QrVZfmbNF2aCyfklBOVk9YC4p+zkwoyT7ECg==} + '@volar/language-service@2.4.23': + resolution: {integrity: sha512-h5mU9DZ/6u3LCB9xomJtorNG6awBNnk9VuCioGsp6UtFiM8amvS5FcsaC3dabdL9zO0z+Gq9vIEMb/5u9K6jGQ==} - '@volar/language-service@2.4.11': - resolution: {integrity: sha512-KIb6g8gjUkS2LzAJ9bJCLIjfsJjeRtmXlu7b2pDFGD3fNqdbC53cCAKzgWDs64xtQVKYBU13DLWbtSNFtGuMLQ==} + '@volar/monaco@2.4.23': + resolution: {integrity: sha512-NJTMlzEf7rBuYzKAtmDXXGcW/A4+rMwWWdFF+Mws4qfovUNgBHQYI1jPkeANc/LYJFmsmpT55oIyAPjk+QQQKg==} - '@volar/monaco@2.4.11': - resolution: {integrity: sha512-irK3FFtcO+78GzoWd6aM4cg6/OP76eZ5+vHPMFKbc/a2yX+FUek64MGVsYiFIZJBtcl8krFz1fcqagEUSeggBg==} + '@volar/source-map@2.4.23': + resolution: {integrity: sha512-Z1Uc8IB57Lm6k7q6KIDu/p+JWtf3xsXJqAX/5r18hYOTpJyBn0KXUR8oTJ4WFYOcDzWC9n3IflGgHowx6U6z9Q==} - '@volar/source-map@2.4.11': - resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} - - '@volar/source-map@2.4.22': - resolution: {integrity: sha512-L2nVr/1vei0xKRgO2tYVXtJYd09HTRjaZi418e85Q+QdbbqA8h7bBjfNyPPSsjnrOO4l4kaAo78c8SQUAdHvgA==} - - '@volar/typescript@2.4.11': - resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} - - '@volar/typescript@2.4.22': - resolution: {integrity: sha512-6ZczlJW1/GWTrNnkmZxJp4qyBt/SGVlcTuCWpI5zLrdPdCZsj66Aff9ZsfFaT3TyjG8zVYgBMYPuCm/eRkpcpQ==} + '@volar/typescript@2.4.23': + resolution: {integrity: sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==} '@vscode/emmet-helper@2.11.0': resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} @@ -893,33 +858,15 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.5.13': - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} - - '@vue/compiler-core@3.5.15': - resolution: {integrity: sha512-nGRc6YJg/kxNqbv/7Tg4juirPnjHvuVdhcmDvQWVZXlLHjouq7VsKmV1hIxM/8yKM0VUfwT/Uzc0lO510ltZqw==} - '@vue/compiler-core@3.5.18': resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==} - '@vue/compiler-dom@3.5.13': - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} - - '@vue/compiler-dom@3.5.15': - resolution: {integrity: sha512-ZelQd9n+O/UCBdL00rlwCrsArSak+YLZpBVuNDio1hN3+wrCshYZEDUO3khSLAzPbF1oQS2duEoMDUHScUlYjA==} - '@vue/compiler-dom@3.5.18': resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==} - '@vue/compiler-sfc@3.5.15': - resolution: {integrity: sha512-3zndKbxMsOU6afQWer75Zot/aydjtxNj0T2KLg033rAFaQUn2PGuE32ZRe4iMhflbTcAxL0yEYsRWFxtPro8RQ==} - '@vue/compiler-sfc@3.5.18': resolution: {integrity: sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==} - '@vue/compiler-ssr@3.5.15': - resolution: {integrity: sha512-gShn8zRREZbrXqTtmLSCffgZXDWv8nHc/GhsW+mbwBfNZL5pI96e7IWcIq8XGQe1TLtVbu7EV9gFIVSmfyarPg==} - '@vue/compiler-ssr@3.5.18': resolution: {integrity: sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==} @@ -934,24 +881,16 @@ packages: typescript: optional: true - '@vue/language-core@2.2.2': - resolution: {integrity: sha512-QotO41kurE5PLf3vrNgGTk3QswO2PdUFjBwNiOi7zMmGhwb25PSTh9hD1MCgKC06AVv+8sZQvlL3Do4TTVHSiQ==} + '@vue/language-core@3.0.7-alpha.1': + resolution: {integrity: sha512-mCD30lVuEJ1feD9LekCVGHwzFF7q4j5RDgtmz3nx4E8+3v+5t0KXFEKrg8xcHA+H7aAAK1X7U1DqeJQ2y00xDQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@vue/language-core@3.0.5': - resolution: {integrity: sha512-gCEjn9Ik7I/seHVNIEipOm8W+f3/kg60e8s1IgIkMYma2wu9ZGUTMv3mSL2bX+Md2L8fslceJ4SU8j1fgSRoiw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/language-service@2.2.2': - resolution: {integrity: sha512-TRCGRgJJ6v+qCtpHrwKkwol7VpcmyfjYDP5j5lRNWmyb8SRB3bKYqmshMYzDuL8YfT5tOxmSRVstDKYV7mucXA==} + '@vue/language-service@3.0.7-alpha.1': + resolution: {integrity: sha512-QqlOWc1Afo+mLaJewZadAG2+4hgwDt0ECSAu+YNMJzGrDq0xm2c+1Z0wxUtzTi0gWzeO4Wcv/LK7IaK4M2ty6g==} '@vue/reactivity@3.5.18': resolution: {integrity: sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==} @@ -967,17 +906,11 @@ packages: peerDependencies: vue: 3.5.18 - '@vue/shared@3.5.13': - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} - - '@vue/shared@3.5.15': - resolution: {integrity: sha512-bKvgFJJL1ZX9KxMCTQY6xD9Dhe3nusd1OhyOb1cJYGqvAr0Vg8FIjHPMOEVbJ9GDT9HG+Bjdn4oS8ohKP8EvoA==} - '@vue/shared@3.5.18': resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==} - '@vue/typescript-plugin@2.2.2': - resolution: {integrity: sha512-M/fNR/M4Rt+jm7Vmv21sPoHNM7MLYC7QjW5gqmP9y6HGmIlxOubqXYIqddeEnikmEsOc3linykEAxAIVxfIvbA==} + '@vue/typescript-plugin@3.0.7-alpha.1': + resolution: {integrity: sha512-aPJkBokBqVDY6vYGMGMzkm5a0H7bzEhHo5JKD3589dWPu6fllievCwAs+BDLLySKsUkaywKjFkD6fuvbiu5Yvw==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -989,11 +922,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -1027,11 +955,8 @@ packages: ajv@8.13.0: resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} - alien-signals@0.4.12: - resolution: {integrity: sha512-Og0PgAihxlp1R22bsoBsyhhMG4+qhU+fkkLPoGBQkYVc3qt9rYnrwYTf+M6kqUqUZpf3rXDnpL90iKa0QcSVVg==} - - alien-signals@1.0.3: - resolution: {integrity: sha512-zQOh3wAYK5ujENxvBBR3CFGF/b6afaSzZ/c9yNhJ1ENrGHETvpUuKQsa93Qrclp0+PzTF93MaZ7scVp1uUozhA==} + alien-signals@0.4.14: + resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} alien-signals@2.0.6: resolution: {integrity: sha512-P3TxJSe31bUHBiblg59oU1PpaWPtmxF9GhJ/cB7OkgJ0qN/ifFSKUI25/v8ZhsT+lIG6ac8DpTOplXxORX6F3Q==} @@ -1302,15 +1227,6 @@ packages: de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -1584,10 +1500,6 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1926,11 +1838,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -2044,10 +1951,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -2075,10 +1978,6 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -2179,11 +2078,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} @@ -2470,59 +2364,51 @@ packages: yaml: optional: true - volar-service-css@0.0.62: - resolution: {integrity: sha512-JwNyKsH3F8PuzZYuqPf+2e+4CTU8YoyUHEHVnoXNlrLe7wy9U3biomZ56llN69Ris7TTy/+DEX41yVxQpM4qvg==} + volar-service-css@0.0.65: + resolution: {integrity: sha512-oaImNguZF/8NfQh5jJZ2lJYBtF3aFS5H2w+6GmH7ykESAgBJ1UC7DrhmH5smBGGF7OOzzc9AzrrnriafoFJBdA==} peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-emmet@0.0.62: - resolution: {integrity: sha512-U4dxWDBWz7Pi4plpbXf4J4Z/ss6kBO3TYrACxWNsE29abu75QzVS0paxDDhI6bhqpbDFXlpsDhZ9aXVFpnfGRQ==} + volar-service-emmet@0.0.65: + resolution: {integrity: sha512-YkAPlkJnjyAAUZGtG7STgy3ENFy7C0n3dl6MffUYkcovosfUUNgpUOmsj4t1qw1c7t5KMvLfAZHsEC3Ig5Qs3w==} peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-html@0.0.62: - resolution: {integrity: sha512-Zw01aJsZRh4GTGUjveyfEzEqpULQUdQH79KNEiKVYHZyuGtdBRYCHlrus1sueSNMxwwkuF5WnOHfvBzafs8yyQ==} + volar-service-html@0.0.65: + resolution: {integrity: sha512-AxXckCTbCr5j5z81d3bNiRRL32xCaBSa8lmYhq0QfzBPVPaRv06YYaxp22XizM061f96iizM7ZkSHCu1RuSwRA==} peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-json@0.0.62: - resolution: {integrity: sha512-Ot+jP+/LzKcaGF7nzrn+gwpzAleb4ej5buO05M8KxfwfODte7o1blARKRoJ3Nv7ls0DBM38Dd5vjzvA9c/9Jtg==} + volar-service-json@0.0.65: + resolution: {integrity: sha512-fqm4aIVkXtoQhOcD2pBBEbnloC1ULEHBm2lZRfZloRAKiIJxakw0jDdQh5F/ClzUzQgegkniLbfPsVOubtLM0Q==} peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-pug-beautify@0.0.62: - resolution: {integrity: sha512-dAFNuNEwTnnVthYoNJhoStwhf/PojzglwCrdhOb2nBegTG3xXMWRFmQzb0JfIlt2wq2wfUq5j+JJswgSD3KluQ==} + volar-service-pug-beautify@0.0.65: + resolution: {integrity: sha512-dD8kyuZvrRqOccBIWIBupc3gi9jx/Y8bIDdFJ7IxtEOqGclJxlzvutJckJSVjyz+TrzFXTcI7hCyEV3SCcir+A==} peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-pug@0.0.62: - resolution: {integrity: sha512-C0/O8uGnRfijWKE0zFXxJ/o7BbLebzretsEaiMkvBDIxm5oe7HRDzQr6CgknV/WVgiohZ74v+0CwBPl2YmcPUQ==} - - volar-service-typescript-twoslash-queries@0.0.62: - resolution: {integrity: sha512-KxFt4zydyJYYI0kFAcWPTh4u0Ha36TASPZkAnNY784GtgajerUqM80nX/W1d0wVhmcOFfAxkVsf/Ed+tiYU7ng==} - peerDependencies: - '@volar/language-service': ~2.4.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true + volar-service-pug@0.0.65: + resolution: {integrity: sha512-QTpxpLmpwNjSPASM4n5d+MF9DHKaBUuHeoV7SXVH5wmrx513da6wljlXNk34IU1npBglNp9sO0qaNokP1Gn42g==} - volar-service-typescript@0.0.62: - resolution: {integrity: sha512-p7MPi71q7KOsH0eAbZwPBiKPp9B2+qrdHAd6VY5oTo9BUXatsOAdakTm9Yf0DUj6uWBAaOT01BSeVOPwucMV1g==} + volar-service-typescript@0.0.65: + resolution: {integrity: sha512-zPJuLIMs7lkQCvL+Rza8+3/EIoXEIkX8+DL7bNNfPgnbalbvRDhqWLVMJ6Zk3pINjLJafDqyhSbw8srfkUv97w==} peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: @@ -2563,8 +2449,8 @@ packages: peerDependencies: eslint: '>=6.0.0' - vue-tsc@3.0.5: - resolution: {integrity: sha512-PsTFN9lo1HJCrZw9NoqjYcAbYDXY0cOKyuW2E7naX5jcaVyWpqEsZOHN9Dws5890E8e5SDAD4L4Zam3dxG3/Cw==} + vue-tsc@3.0.7-alpha.1: + resolution: {integrity: sha512-47pTa1/U2ILNAgBLpPaLlfa3XStpXMzxXCrsnW783J8ofd/TkO9UGtT5w9q9LlUd+6Bd4P3M9Ieuw0J4IqlKYA==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -2634,12 +2520,6 @@ snapshots: '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 @@ -2651,31 +2531,23 @@ snapshots: '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.2) '@babel/helpers': 7.26.0 - '@babel/parser': 7.27.2 - '@babel/template': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.0 '@babel/types': 7.28.2 convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.1 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.26.3': - dependencies: - '@babel/parser': 7.27.2 - '@babel/types': 7.28.2 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - jsesc: 3.1.0 - '@babel/generator@7.28.0': dependencies: '@babel/parser': 7.28.0 @@ -2706,7 +2578,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -2714,23 +2586,13 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-identifier@7.27.1': {} '@babel/helper-validator-option@7.25.9': {} '@babel/helpers@7.26.0': dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.28.2 - - '@babel/parser@7.26.3': - dependencies: - '@babel/types': 7.28.2 - - '@babel/parser@7.27.2': - dependencies: + '@babel/template': 7.27.2 '@babel/types': 7.28.2 '@babel/parser@7.28.0': @@ -2744,30 +2606,12 @@ snapshots: '@babel/standalone@7.28.2': {} - '@babel/template@7.25.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.2 - '@babel/types': 7.28.2 - '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.2 + '@babel/parser': 7.28.0 '@babel/types': 7.28.2 - '@babel/traverse@7.26.4': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 - '@babel/parser': 7.27.2 - '@babel/template': 7.25.9 - '@babel/types': 7.28.2 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.28.0': dependencies: '@babel/code-frame': 7.27.1 @@ -2776,7 +2620,7 @@ snapshots: '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/types': 7.28.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -2788,7 +2632,7 @@ snapshots: '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)': dependencies: '@types/semver': 7.5.8 - semver: 7.6.3 + semver: 7.7.2 optionalDependencies: conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 @@ -2801,7 +2645,7 @@ snapshots: dependencies: '@emmetio/scanner': 1.0.4 - '@emmetio/css-parser@0.4.0': + '@emmetio/css-parser@https://codeload.github.com/ramya-rao-a/css-parser/tar.gz/370c480ac103bd17c7bcfb34bf5d577dc40d3660': dependencies: '@emmetio/stream-reader': 2.2.0 '@emmetio/stream-reader-utils': 0.1.0 @@ -2894,11 +2738,6 @@ snapshots: '@esbuild/win32-x64@0.25.8': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.32.0(jiti@2.5.1))': - dependencies: - eslint: 9.32.0(jiti@2.5.1) - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.5.1))': dependencies: eslint: 9.32.0(jiti@2.5.1) @@ -2909,7 +2748,7 @@ snapshots: '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.0 + debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2923,7 +2762,7 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.0 + debug: 4.4.1 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -3050,9 +2889,9 @@ snapshots: '@rollup/pluginutils@5.1.4(rollup@4.46.2)': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.46.2 @@ -3193,7 +3032,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.28.0 '@babel/types': 7.28.2 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -3205,7 +3044,7 @@ snapshots: '@types/babel__standalone@7.1.9': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.28.0 '@babel/types': 7.28.2 '@types/babel__core': 7.20.5 '@types/babel__generator': 7.6.8 @@ -3214,7 +3053,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.28.0 '@babel/types': 7.28.2 '@types/babel__traverse@7.20.6': @@ -3225,8 +3064,6 @@ snapshots: dependencies: '@types/tern': 0.23.9 - '@types/estree@1.0.6': {} - '@types/estree@1.0.8': {} '@types/hash-sum@1.0.2': {} @@ -3251,7 +3088,7 @@ snapshots: '@types/tern@0.23.9': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 '@types/unist@3.0.3': {} @@ -3278,7 +3115,7 @@ snapshots: '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.0 - debug: 4.4.0 + debug: 4.4.1 eslint: 9.32.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: @@ -3288,7 +3125,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) '@typescript-eslint/types': 8.39.0 - debug: 4.4.0 + debug: 4.4.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -3307,7 +3144,7 @@ snapshots: '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) - debug: 4.4.0 + debug: 4.4.1 eslint: 9.32.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -3322,11 +3159,11 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) '@typescript-eslint/types': 8.39.0 '@typescript-eslint/visitor-keys': 8.39.0 - debug: 4.4.0 + debug: 4.4.1 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.3 + semver: 7.7.2 ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -3356,44 +3193,32 @@ snapshots: vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1)(yaml@2.8.0) vue: 3.5.18(typescript@5.9.2) - '@volar/jsdelivr@2.4.11': {} - - '@volar/language-core@2.4.11': - dependencies: - '@volar/source-map': 2.4.11 + '@volar/jsdelivr@2.4.23': {} - '@volar/language-core@2.4.22': + '@volar/language-core@2.4.23': dependencies: - '@volar/source-map': 2.4.22 + '@volar/source-map': 2.4.23 - '@volar/language-service@2.4.11': + '@volar/language-service@2.4.23': dependencies: - '@volar/language-core': 2.4.11 + '@volar/language-core': 2.4.23 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 - '@volar/monaco@2.4.11': + '@volar/monaco@2.4.23': dependencies: - '@volar/language-service': 2.4.11 - '@volar/typescript': 2.4.11 + '@volar/language-service': 2.4.23 + '@volar/typescript': 2.4.23 monaco-languageserver-types: 0.4.0 monaco-types: 0.1.0 vscode-uri: 3.1.0 - '@volar/source-map@2.4.11': {} - - '@volar/source-map@2.4.22': {} + '@volar/source-map@2.4.23': {} - '@volar/typescript@2.4.11': + '@volar/typescript@2.4.23': dependencies: - '@volar/language-core': 2.4.11 - path-browserify: 1.0.1 - vscode-uri: 3.1.0 - - '@volar/typescript@2.4.22': - dependencies: - '@volar/language-core': 2.4.22 + '@volar/language-core': 2.4.23 path-browserify: 1.0.1 vscode-uri: 3.1.0 @@ -3419,7 +3244,7 @@ snapshots: '@babel/types': 7.28.2 '@vue/babel-helper-vue-transform-on': 1.4.0 '@vue/babel-plugin-resolve-type': 1.4.0(@babel/core@7.25.2) - '@vue/shared': 3.5.15 + '@vue/shared': 3.5.18 optionalDependencies: '@babel/core': 7.25.2 transitivePeerDependencies: @@ -3427,31 +3252,15 @@ snapshots: '@vue/babel-plugin-resolve-type@1.4.0(@babel/core@7.25.2)': dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.25.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/parser': 7.27.2 - '@vue/compiler-sfc': 3.5.15 + '@babel/parser': 7.28.0 + '@vue/compiler-sfc': 3.5.18 transitivePeerDependencies: - supports-color - '@vue/compiler-core@3.5.13': - dependencies: - '@babel/parser': 7.27.2 - '@vue/shared': 3.5.13 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-core@3.5.15': - dependencies: - '@babel/parser': 7.27.2 - '@vue/shared': 3.5.15 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - '@vue/compiler-core@3.5.18': dependencies: '@babel/parser': 7.28.0 @@ -3460,33 +3269,11 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.13': - dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 - - '@vue/compiler-dom@3.5.15': - dependencies: - '@vue/compiler-core': 3.5.15 - '@vue/shared': 3.5.15 - '@vue/compiler-dom@3.5.18': dependencies: '@vue/compiler-core': 3.5.18 '@vue/shared': 3.5.18 - '@vue/compiler-sfc@3.5.15': - dependencies: - '@babel/parser': 7.27.2 - '@vue/compiler-core': 3.5.15 - '@vue/compiler-dom': 3.5.15 - '@vue/compiler-ssr': 3.5.15 - '@vue/shared': 3.5.15 - estree-walker: 2.0.2 - magic-string: 0.30.17 - postcss: 8.5.3 - source-map-js: 1.2.1 - '@vue/compiler-sfc@3.5.18': dependencies: '@babel/parser': 7.28.0 @@ -3499,11 +3286,6 @@ snapshots: postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.15': - dependencies: - '@vue/compiler-dom': 3.5.15 - '@vue/shared': 3.5.15 - '@vue/compiler-ssr@3.5.18': dependencies: '@vue/compiler-dom': 3.5.18 @@ -3516,64 +3298,44 @@ snapshots: '@vue/language-core@2.2.0(typescript@5.9.2)': dependencies: - '@volar/language-core': 2.4.11 - '@vue/compiler-dom': 3.5.15 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.15 - alien-signals: 0.4.12 - minimatch: 9.0.5 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - optionalDependencies: - typescript: 5.9.2 - - '@vue/language-core@2.2.2(typescript@5.9.2)': - dependencies: - '@volar/language-core': 2.4.11 - '@vue/compiler-dom': 3.5.15 + '@volar/language-core': 2.4.23 + '@vue/compiler-dom': 3.5.18 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.15 - alien-signals: 1.0.3 + '@vue/shared': 3.5.18 + alien-signals: 0.4.14 minimatch: 9.0.5 muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: typescript: 5.9.2 - '@vue/language-core@3.0.5(typescript@5.9.2)': + '@vue/language-core@3.0.7-alpha.1(typescript@5.9.2)': dependencies: - '@volar/language-core': 2.4.22 - '@vue/compiler-dom': 3.5.15 + '@volar/language-core': 2.4.23 + '@vue/compiler-dom': 3.5.18 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.15 + '@vue/shared': 3.5.18 alien-signals: 2.0.6 muggle-string: 0.4.1 path-browserify: 1.0.1 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: typescript: 5.9.2 - '@vue/language-service@2.2.2(typescript@5.9.2)': + '@vue/language-service@3.0.7-alpha.1(typescript@5.9.2)': dependencies: - '@volar/language-core': 2.4.11 - '@volar/language-service': 2.4.11 - '@volar/typescript': 2.4.11 - '@vue/compiler-dom': 3.5.13 - '@vue/language-core': 2.2.2(typescript@5.9.2) - '@vue/shared': 3.5.13 - '@vue/typescript-plugin': 2.2.2(typescript@5.9.2) - alien-signals: 1.0.3 + '@volar/language-service': 2.4.23 + '@vue/language-core': 3.0.7-alpha.1(typescript@5.9.2) + '@vue/shared': 3.5.18 path-browserify: 1.0.1 - volar-service-css: 0.0.62(@volar/language-service@2.4.11) - volar-service-emmet: 0.0.62(@volar/language-service@2.4.11) - volar-service-html: 0.0.62(@volar/language-service@2.4.11) - volar-service-json: 0.0.62(@volar/language-service@2.4.11) - volar-service-pug: 0.0.62 - volar-service-pug-beautify: 0.0.62(@volar/language-service@2.4.11) - volar-service-typescript: 0.0.62(@volar/language-service@2.4.11) - volar-service-typescript-twoslash-queries: 0.0.62(@volar/language-service@2.4.11) + volar-service-css: 0.0.65(@volar/language-service@2.4.23) + volar-service-emmet: 0.0.65(@volar/language-service@2.4.23) + volar-service-html: 0.0.65(@volar/language-service@2.4.23) + volar-service-json: 0.0.65(@volar/language-service@2.4.23) + volar-service-pug: 0.0.65 + volar-service-pug-beautify: 0.0.65(@volar/language-service@2.4.23) + volar-service-typescript: 0.0.65(@volar/language-service@2.4.23) vscode-html-languageservice: 5.3.1 - vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 transitivePeerDependencies: - typescript @@ -3600,32 +3362,23 @@ snapshots: '@vue/shared': 3.5.18 vue: 3.5.18(typescript@5.9.2) - '@vue/shared@3.5.13': {} - - '@vue/shared@3.5.15': {} - '@vue/shared@3.5.18': {} - '@vue/typescript-plugin@2.2.2(typescript@5.9.2)': + '@vue/typescript-plugin@3.0.7-alpha.1(typescript@5.9.2)': dependencies: - '@volar/typescript': 2.4.11 - '@vue/language-core': 2.2.2(typescript@5.9.2) - '@vue/shared': 3.5.15 + '@volar/typescript': 2.4.23 + '@vue/language-core': 3.0.7-alpha.1(typescript@5.9.2) + '@vue/shared': 3.5.18 + path-browserify: 1.0.1 transitivePeerDependencies: - typescript - acorn-jsx@5.3.2(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 acorn@7.4.1: {} - acorn@8.14.0: {} - acorn@8.15.0: {} add-stream@1.0.0: {} @@ -3659,9 +3412,7 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 - alien-signals@0.4.12: {} - - alien-signals@1.0.3: {} + alien-signals@0.4.14: {} alien-signals@2.0.6: {} @@ -3904,7 +3655,7 @@ snapshots: conventional-commits-filter: 5.0.0 handlebars: 4.7.8 meow: 13.2.0 - semver: 7.6.3 + semver: 7.7.2 conventional-changelog@6.0.0(conventional-commits-filter@5.0.0): dependencies: @@ -3942,10 +3693,6 @@ snapshots: de-indent@1.0.2: {} - debug@4.4.0: - dependencies: - ms: 2.1.3 - debug@4.4.1: dependencies: ms: 2.1.3 @@ -4048,12 +3795,12 @@ snapshots: eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(vue-eslint-parser@9.4.3(eslint@9.32.0(jiti@2.5.1))): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.32.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) eslint: 9.32.0(jiti@2.5.1) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 - semver: 7.6.3 + semver: 7.7.2 vue-eslint-parser: 9.4.3(eslint@9.32.0(jiti@2.5.1)) xml-name-validator: 4.0.0 optionalDependencies: @@ -4075,7 +3822,7 @@ snapshots: eslint@9.32.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.32.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.0 @@ -4086,12 +3833,12 @@ snapshots: '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.1 escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -4123,8 +3870,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 3.4.3 esquery@1.6.0: @@ -4163,10 +3910,6 @@ snapshots: dependencies: reusify: 1.0.4 - fdir@6.4.6(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.4.6(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -4274,8 +4017,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - globals@11.12.0: {} - globals@14.0.0: {} gopd@1.2.0: {} @@ -4583,7 +4324,7 @@ snapshots: mlly@1.7.4: dependencies: - acorn: 8.14.0 + acorn: 8.15.0 pathe: 2.0.3 pkg-types: 1.3.0 ufo: 1.5.4 @@ -4612,8 +4353,6 @@ snapshots: nanoid@3.3.11: {} - nanoid@3.3.8: {} - natural-compare@1.4.0: {} neo-async@2.6.2: {} @@ -4625,7 +4364,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.6.3 + semver: 7.7.2 validate-npm-package-license: 3.0.4 nth-check@2.1.1: @@ -4699,7 +4438,7 @@ snapshots: parse-json@8.1.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 index-to-position: 0.1.2 type-fest: 4.31.0 @@ -4726,8 +4465,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} - picomatch@4.0.3: {} pidtree@0.6.0: {} @@ -4753,12 +4490,6 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.5.3: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -4876,8 +4607,6 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.6.3: {} - semver@7.7.2: {} set-function-length@1.2.2: @@ -5015,8 +4744,8 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 to-regex-range@5.0.1: dependencies: @@ -5040,7 +4769,7 @@ snapshots: typescript-auto-import-cache@0.3.5: dependencies: - semver: 7.6.3 + semver: 7.7.2 typescript-eslint@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2): dependencies: @@ -5130,10 +4859,10 @@ snapshots: dependencies: '@microsoft/api-extractor': 7.52.10(@types/node@24.2.0) '@rollup/pluginutils': 5.1.4(rollup@4.46.2) - '@volar/typescript': 2.4.11 + '@volar/typescript': 2.4.23 '@vue/language-core': 2.2.0(typescript@5.9.2) compare-versions: 6.1.1 - debug: 4.4.0 + debug: 4.4.1 kolorist: 1.8.0 local-pkg: 1.1.1 magic-string: 0.30.17 @@ -5159,70 +4888,64 @@ snapshots: jiti: 2.5.1 yaml: 2.8.0 - volar-service-css@0.0.62(@volar/language-service@2.4.11): + volar-service-css@0.0.65(@volar/language-service@2.4.23): dependencies: vscode-css-languageservice: 6.3.2 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.23 - volar-service-emmet@0.0.62(@volar/language-service@2.4.11): + volar-service-emmet@0.0.65(@volar/language-service@2.4.23): dependencies: - '@emmetio/css-parser': 0.4.0 + '@emmetio/css-parser': https://codeload.github.com/ramya-rao-a/css-parser/tar.gz/370c480ac103bd17c7bcfb34bf5d577dc40d3660 '@emmetio/html-matcher': 1.3.0 '@vscode/emmet-helper': 2.11.0 vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.23 - volar-service-html@0.0.62(@volar/language-service@2.4.11): + volar-service-html@0.0.65(@volar/language-service@2.4.23): dependencies: vscode-html-languageservice: 5.3.1 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.23 - volar-service-json@0.0.62(@volar/language-service@2.4.11): + volar-service-json@0.0.65(@volar/language-service@2.4.23): dependencies: vscode-json-languageservice: 5.4.2 vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.23 - volar-service-pug-beautify@0.0.62(@volar/language-service@2.4.11): + volar-service-pug-beautify@0.0.65(@volar/language-service@2.4.23): dependencies: '@johnsoncodehk/pug-beautify': 0.2.2 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.23 - volar-service-pug@0.0.62: + volar-service-pug@0.0.65: dependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.23 muggle-string: 0.4.1 pug-lexer: 5.0.1 pug-parser: 6.0.0 - volar-service-html: 0.0.62(@volar/language-service@2.4.11) + volar-service-html: 0.0.65(@volar/language-service@2.4.23) vscode-html-languageservice: 5.3.1 vscode-languageserver-textdocument: 1.0.12 - volar-service-typescript-twoslash-queries@0.0.62(@volar/language-service@2.4.11): - dependencies: - vscode-uri: 3.1.0 - optionalDependencies: - '@volar/language-service': 2.4.11 - - volar-service-typescript@0.0.62(@volar/language-service@2.4.11): + volar-service-typescript@0.0.65(@volar/language-service@2.4.23): dependencies: path-browserify: 1.0.1 - semver: 7.6.3 + semver: 7.7.2 typescript-auto-import-cache: 0.3.5 vscode-languageserver-textdocument: 1.0.12 vscode-nls: 5.2.0 vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.23 vscode-css-languageservice@6.3.2: dependencies: @@ -5263,21 +4986,21 @@ snapshots: vue-eslint-parser@9.4.3(eslint@9.32.0(jiti@2.5.1)): dependencies: - debug: 4.4.0 + debug: 4.4.1 eslint: 9.32.0(jiti@2.5.1) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.6.0 lodash: 4.17.21 - semver: 7.6.3 + semver: 7.7.2 transitivePeerDependencies: - supports-color - vue-tsc@3.0.5(typescript@5.9.2): + vue-tsc@3.0.7-alpha.1(typescript@5.9.2): dependencies: - '@volar/typescript': 2.4.22 - '@vue/language-core': 3.0.5(typescript@5.9.2) + '@volar/typescript': 2.4.23 + '@vue/language-core': 3.0.7-alpha.1(typescript@5.9.2) typescript: 5.9.2 vue@3.5.18(typescript@5.9.2): diff --git a/src/monaco/vue.worker.ts b/src/monaco/vue.worker.ts index 0940cadb..1e073709 100644 --- a/src/monaco/vue.worker.ts +++ b/src/monaco/vue.worker.ts @@ -1,19 +1,37 @@ -// @ts-expect-error -import * as worker from 'monaco-editor-core/esm/vs/editor/editor.worker' -import type * as monaco from 'monaco-editor-core' +import { createNpmFileSystem } from '@volar/jsdelivr' import { type LanguageServiceEnvironment, createTypeScriptWorkerLanguageService, + Language, } from '@volar/monaco/worker' -import { createNpmFileSystem } from '@volar/jsdelivr' import { type VueCompilerOptions, - getFullLanguageServicePlugins, + VueVirtualCode, createVueLanguagePlugin, - resolveVueCompilerOptions, + getDefaultCompilerOptions, + generateGlobalTypes, + getGlobalTypesFileName, +} from '@vue/language-core' +import { + LanguageService, + createVueLanguageServicePlugins, } from '@vue/language-service' -import type { WorkerHost, WorkerMessage } from './env' +import type * as monaco from 'monaco-editor-core' +// @ts-expect-error +import * as worker from 'monaco-editor-core/esm/vs/editor/editor.worker' +import { create as createTypeScriptPlugins } from 'volar-service-typescript' import { URI } from 'vscode-uri' +import type { WorkerHost, WorkerMessage } from './env' + +import { createVueLanguageServiceProxy } from '@vue/typescript-plugin/lib/common' +import { getComponentDirectives } from '@vue/typescript-plugin/lib/requests/getComponentDirectives' +import { getComponentEvents } from '@vue/typescript-plugin/lib/requests/getComponentEvents' +import { getComponentNames } from '@vue/typescript-plugin/lib/requests/getComponentNames' +import { getComponentProps } from '@vue/typescript-plugin/lib/requests/getComponentProps' +import { getComponentSlots } from '@vue/typescript-plugin/lib/requests/getComponentSlots' +import { getElementAttrs } from '@vue/typescript-plugin/lib/requests/getElementAttrs' +import { getElementNames } from '@vue/typescript-plugin/lib/requests/getElementNames' +import { getPropertiesAtLocation } from '@vue/typescript-plugin/lib/requests/getPropertiesAtLocation' export interface CreateData { tsconfig: { @@ -23,6 +41,9 @@ export interface CreateData { dependencies: Record } +const asFileName = (uri: URI) => uri.path +const asUri = (fileName: string): URI => URI.file(fileName) + let ts: typeof import('typescript') let locale: string | undefined @@ -39,8 +60,6 @@ self.onmessage = async (msg: MessageEvent) => { ctx: monaco.worker.IWorkerContext, { tsconfig, dependencies }: CreateData, ) => { - const asFileName = (uri: URI) => uri.path - const asUri = (fileName: string): URI => URI.file(fileName) const env: LanguageServiceEnvironment = { workspaceFolders: [URI.file('/')], locale, @@ -68,11 +87,171 @@ self.onmessage = async (msg: MessageEvent) => { tsconfig?.compilerOptions || {}, '', ) - const vueCompilerOptions = resolveVueCompilerOptions( - tsconfig.vueCompilerOptions || {}, + const vueCompilerOptions: VueCompilerOptions = { + ...getDefaultCompilerOptions(), + ...tsconfig.vueCompilerOptions, + } + const globalTypes = generateGlobalTypes(vueCompilerOptions) + const globalTypesPath = + '/node_modules/' + getGlobalTypesFileName(vueCompilerOptions) + vueCompilerOptions.globalTypesPath = () => globalTypesPath + const { stat, readFile } = env.fs! + const ctime = Date.now() + env.fs!.stat = async (uri) => { + if (uri.path === globalTypesPath) { + return { + type: 1, + ctime: ctime, + mtime: ctime, + size: globalTypes.length, + } + } + return stat(uri) + } + env.fs!.readFile = async (uri) => { + if (uri.path === globalTypesPath) { + return globalTypes + } + return readFile(uri) + } + + const vueLanguagePlugin = createVueLanguagePlugin( + ts, + compilerOptions, + vueCompilerOptions, + asFileName, ) + const ignoreVueServicePlugins = new Set([ + 'vue-extract-file', + 'vue-document-drop', + 'vue-document-highlights', + 'typescript-semantic-tokens', + // dedupe + 'typescript-doc-comment-template', + 'typescript-syntactic', + ]) + const vueServicePlugins = createVueLanguageServicePlugins(ts, { + getComponentDirectives(fileName) { + return getComponentDirectives(ts, getProgram(), fileName) + }, + getComponentEvents(fileName, tag) { + return getComponentEvents(ts, getProgram(), fileName, tag) + }, + getComponentNames(fileName) { + return getComponentNames(ts, getProgram(), fileName) + }, + getComponentProps(fileName, tag) { + return getComponentProps(ts, getProgram(), fileName, tag) + }, + getComponentSlots(fileName) { + const { virtualCode } = getVirtualCode(fileName) + return getComponentSlots(ts, getProgram(), virtualCode) + }, + getElementAttrs(fileName, tag) { + return getElementAttrs(ts, getProgram(), fileName, tag) + }, + getElementNames(fileName) { + return getElementNames(ts, getProgram(), fileName) + }, + getPropertiesAtLocation(fileName, position) { + const { sourceScript, virtualCode } = getVirtualCode(fileName) + return getPropertiesAtLocation( + ts, + languageService.context.language, + getProgram(), + sourceScript, + virtualCode, + position, + false, + ) + }, + async getQuickInfoAtPosition(fileName, position) { + const uri = asUri(fileName) + const sourceScript = languageService.context.language.scripts.get(uri) + if (!sourceScript) { + return + } + const hover = await languageService.getHover(uri, position) + let text = '' + if (typeof hover?.contents === 'string') { + text = hover.contents + } else if (Array.isArray(hover?.contents)) { + text = hover.contents + .map((c) => (typeof c === 'string' ? c : c.value)) + .join('\n') + } else if (hover) { + text = hover.contents.value + } + text = text.replace(/```typescript/g, '') + text = text.replace(/```/g, '') + text = text.replace(/---/g, '') + text = text.trim() + while (true) { + const newText = text.replace(/\n\n/g, '\n') + if (newText === text) { + break + } + text = newText + } + text = text.replace(/\n/g, ' | ') + return text + }, + collectExtractProps() { + throw new Error('Not implemented') + }, + getImportPathForFile() { + throw new Error('Not implemented') + }, + getDocumentHighlights() { + throw new Error('Not implemented') + }, + getEncodedSemanticClassifications() { + throw new Error('Not implemented') + }, + }).filter((plugin) => !ignoreVueServicePlugins.has(plugin.name!)) + + const tsServicePlugins = createTypeScriptPlugins(ts) + for (let i = 0; i < tsServicePlugins.length; i++) { + const plugin = tsServicePlugins[i] + if (plugin.name === 'typescript-semantic') { + tsServicePlugins[i] = { + ...plugin, + create(context) { + const created = plugin.create(context) + const tsLs = created.provide[ + 'typescript/languageService' + ]() as import('typescript').LanguageService + const proxy = createVueLanguageServiceProxy( + ts, + new Proxy( + {}, + { + get(_target, prop, receiver) { + return Reflect.get( + languageService.context.language, + prop, + receiver, + ) + }, + }, + ) as unknown as Language, + tsLs, + vueCompilerOptions, + asUri, + ) + tsLs.getCompletionsAtPosition = proxy.getCompletionsAtPosition + tsLs.getCompletionEntryDetails = proxy.getCompletionEntryDetails + tsLs.getCodeFixesAtPosition = proxy.getCodeFixesAtPosition + tsLs.getDefinitionAndBoundSpan = proxy.getDefinitionAndBoundSpan + tsLs.getQuickInfoAtPosition = proxy.getQuickInfoAtPosition + return created + }, + } + break + } + } - return createTypeScriptWorkerLanguageService({ + const workerService = createTypeScriptWorkerLanguageService({ typescript: ts, compilerOptions, workerContext: ctx, @@ -81,19 +260,35 @@ self.onmessage = async (msg: MessageEvent) => { asFileName, asUri, }, - languagePlugins: [ - createVueLanguagePlugin( - ts, - compilerOptions, - vueCompilerOptions, - asFileName, - ), - ], - languageServicePlugins: getFullLanguageServicePlugins(ts), - setup({ project }) { - project.vue = { compilerOptions: vueCompilerOptions } - }, + languagePlugins: [vueLanguagePlugin], + languageServicePlugins: [...tsServicePlugins, ...vueServicePlugins], }) + const languageService = (workerService as any) + .languageService as LanguageService + + return workerService + + function getProgram() { + const tsService: import('typescript').LanguageService = + languageService.context.inject('typescript/languageService') + return tsService.getProgram()! + } + + function getVirtualCode(fileName: string) { + const uri = asUri(fileName) + const sourceScript = languageService.context.language.scripts.get(uri) + if (!sourceScript) { + throw new Error('No source script found for file: ' + fileName) + } + const virtualCode = sourceScript.generated?.root + if (!(virtualCode instanceof VueVirtualCode)) { + throw new Error('No virtual code found for file: ' + fileName) + } + return { + sourceScript, + virtualCode, + } + } }, ) } From c393b60cfe5921ca32eab16b2b0ab0f64cfd724f Mon Sep 17 00:00:00 2001 From: Gianthard-cyh <45843411+Gianthard-cyh@users.noreply.github.com> Date: Thu, 4 Sep 2025 20:31:26 +0800 Subject: [PATCH 2/4] fix: add support for custom elements for CompileScript (#354) --- src/transform.ts | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/transform.ts b/src/transform.ts index d044d6c0..d1ec2b19 100644 --- a/src/transform.ts +++ b/src/transform.ts @@ -122,10 +122,22 @@ export async function compileFile( ssrCode += code } + const ceFilter = store.sfcOptions.script?.customElement || /\.ce\.vue$/ + function isCustomElement(filters: typeof ceFilter): boolean { + if (typeof filters === 'boolean') { + return filters + } + if (typeof filters === 'function') { + return filters(filename) + } + return filters.test(filename) + } + let isCE = isCustomElement(ceFilter) + let clientScript: string let bindings: BindingMetadata | undefined try { - const res = await doCompileScript(store, descriptor, id, false, isTS, isJSX) + const res = await doCompileScript(store, descriptor, id, false, isTS, isJSX, isCE) clientScript = res.code bindings = res.bindings clientScriptMap = res.map @@ -147,6 +159,7 @@ export async function compileFile( true, isTS, isJSX, + isCE ) ssrScript = ssrScriptResult.code ssrCode += ssrScript @@ -212,18 +225,6 @@ export async function compileFile( } // styles - const ceFilter = store.sfcOptions.script?.customElement || /\.ce\.vue$/ - function isCustomElement(filters: typeof ceFilter): boolean { - if (typeof filters === 'boolean') { - return filters - } - if (typeof filters === 'function') { - return filters(filename) - } - return filters.test(filename) - } - let isCE = isCustomElement(ceFilter) - let css = '' let styles: string[] = [] for (const style of descriptor.styles) { @@ -295,6 +296,7 @@ async function doCompileScript( ssr: boolean, isTS: boolean, isJSX: boolean, + isCustomElement: boolean, ): Promise<{ code: string; bindings: BindingMetadata | undefined; map?: any }> { if (descriptor.script || descriptor.scriptSetup) { const expressionPlugins: CompilerOptions['expressionPlugins'] = [] @@ -318,6 +320,7 @@ async function doCompileScript( expressionPlugins, }, }, + customElement: isCustomElement, }) let code = compiledScript.content if (isTS) { From 8cc908a519bf70a897fb91a9fbb8584fd98bf544 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Thu, 4 Sep 2025 20:40:02 +0800 Subject: [PATCH 3/4] fix: only handle `./` prefix modules for ExportNamedDeclaration (#327) --- src/output/moduleCompiler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/output/moduleCompiler.ts b/src/output/moduleCompiler.ts index b7f3266d..55af3630 100644 --- a/src/output/moduleCompiler.ts +++ b/src/output/moduleCompiler.ts @@ -201,7 +201,7 @@ function processModule(store: Store, src: string, filename: string) { } } s.remove(node.start!, node.declaration.start!) - } else if (node.source) { + } else if (node.source && node.source.value.startsWith('./')) { // export { foo, bar } from './foo' const importId = defineImport(node, node.source.value) for (const spec of node.specifiers) { From 6ddcdc75f421c4374e503b551030f342ff5c4b0f Mon Sep 17 00:00:00 2001 From: daiwei Date: Thu, 4 Sep 2025 20:41:20 +0800 Subject: [PATCH 4/4] chore: release v4.7.0 --- CHANGELOG.md | 15 +++++++++++++++ package.json | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4491e6ca..633523d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +# [4.7.0](https://github.com/vuejs/repl/compare/v4.6.3...v4.7.0) (2025-09-04) + + +### Bug Fixes + +* add support for custom elements for CompileScript ([#354](https://github.com/vuejs/repl/issues/354)) ([c393b60](https://github.com/vuejs/repl/commit/c393b60cfe5921ca32eab16b2b0ab0f64cfd724f)) +* only handle `./` prefix modules for ExportNamedDeclaration ([#327](https://github.com/vuejs/repl/issues/327)) ([8cc908a](https://github.com/vuejs/repl/commit/8cc908a519bf70a897fb91a9fbb8584fd98bf544)) + + +### Features + +* update language tools to 3.0 ([#360](https://github.com/vuejs/repl/issues/360)) ([a34f630](https://github.com/vuejs/repl/commit/a34f6306b0fc5817ce4d4f0e63ef58fa6ac102ee)) + + + ## [4.6.3](https://github.com/vuejs/repl/compare/v4.6.2...v4.6.3) (2025-08-05) diff --git a/package.json b/package.json index 97e532c9..aac92c71 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@vue/repl", - "version": "4.6.3", + "version": "4.7.0", "description": "Vue component for editing Vue components", "packageManager": "pnpm@10.14.0", "type": "module",