diff --git a/.vscode/settings.json b/.vscode/settings.json index 6be40b38e0e..15f3337d923 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -19,5 +19,12 @@ "githubPullRequests.ignoredPullRequestBranches": [ "master" - ] + ], + + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true, + "typescript.preferences.autoImportFileExcludePatterns": ["node_modules/*"], + "typescript.validate.enable": true, + "typescript.surveys.enabled": false + } diff --git a/apps/app/package.json b/apps/app/package.json index 710ce2be3df..85ae660bd64 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -27,7 +27,7 @@ "dev:migrate:down": "pnpm run dev:migrate-mongo down -f config/migrate-mongo-config.js", "//// for CI": "", "launch-dev:ci": "cross-env NODE_ENV=development pnpm run dev:migrate && pnpm run ts-node src/server/app.ts --ci", - "lint:typecheck": "npx -y tspc", + "lint:typecheck": "vue-tsc --noEmit", "lint:eslint": "eslint --quiet \"**/*.{js,jsx,ts,tsx}\"", "lint:styles": "stylelint \"src/**/*.scss\"", "lint:swagger2openapi:apiv3": "node node_modules/swagger2openapi/oas-validate tmp/openapi-spec-apiv3.json", @@ -228,6 +228,7 @@ "unzip-stream": "^0.3.2", "url-join": "^4.0.0", "usehooks-ts": "^2.6.0", + "uuid": "^11.0.3", "validator": "^13.7.0", "ws": "^8.17.1", "xss": "^1.0.15", @@ -272,6 +273,7 @@ "@types/unist": "^3.0.3", "@types/unzip-stream": "^0.3.4", "@types/url-join": "^4.0.2", + "@types/uuid": "^10.0.0", "babel-loader": "^8.2.5", "bootstrap": "=5.3.2", "connect-browser-sync": "^2.1.0", diff --git a/apps/app/src/server/service/file-uploader/file-uploader.ts b/apps/app/src/server/service/file-uploader/file-uploader.ts index 0e9a3cfb286..f9f22947e56 100644 --- a/apps/app/src/server/service/file-uploader/file-uploader.ts +++ b/apps/app/src/server/service/file-uploader/file-uploader.ts @@ -1,7 +1,7 @@ -import { randomUUID } from 'crypto'; import type { ReadStream } from 'fs'; import type { Response } from 'express'; +import { v4 as uuidv4 } from 'uuid'; import type { ICheckLimitResult } from '~/interfaces/attachment'; import { type RespondOptions, ResponseMode } from '~/server/interfaces/attachment'; @@ -60,7 +60,7 @@ export abstract class AbstractFileUploader implements FileUploader { * @returns Whether write opration to the storage is permitted */ async isWritable() { - const filePath = `${randomUUID()}.growi`; + const filePath = `${uuidv4()}.growi`; const data = 'This file was created during g2g transfer to check write permission. You can safely remove this file.'; try { diff --git a/apps/app/src/services/renderer/recommended-whitelist.ts b/apps/app/src/services/renderer/recommended-whitelist.ts index 270c27ed09c..be77f38f863 100644 --- a/apps/app/src/services/renderer/recommended-whitelist.ts +++ b/apps/app/src/services/renderer/recommended-whitelist.ts @@ -23,7 +23,7 @@ const excludeRestrictedClassAttributes = (propertyDefinitions: PropertyDefinitio }; // generate relaxed schema -const relaxedSchemaAttributes = structuredClone(defaultSchema.attributes) ?? {}; +const relaxedSchemaAttributes: Record = structuredClone(defaultSchema.attributes) ?? {}; relaxedSchemaAttributes.a = excludeRestrictedClassAttributes(relaxedSchemaAttributes.a); relaxedSchemaAttributes.ul = excludeRestrictedClassAttributes(relaxedSchemaAttributes.ul); relaxedSchemaAttributes.li = excludeRestrictedClassAttributes(relaxedSchemaAttributes.li); diff --git a/apps/slackbot-proxy/package.json b/apps/slackbot-proxy/package.json index 0d99af7274c..fced735f7af 100644 --- a/apps/slackbot-proxy/package.json +++ b/apps/slackbot-proxy/package.json @@ -18,7 +18,7 @@ "predev": "pnpm run cp:bootstrap:dev", "lint:js": "eslint src/**/*.{js,ts}", "lint:styles": "stylelint --allow-empty-input \"src/**/*.scss\" \"src/**/*.css\"", - "lint:typecheck": "tspc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "run-p lint:*", "ts-node": "node -r ts-node/register/transpile-only -r tsconfig-paths/register -r dotenv-flow/config", "version:patch": "pnpm version patch", diff --git a/package.json b/package.json index d8c67876056..3b34b994aa0 100644 --- a/package.json +++ b/package.json @@ -91,6 +91,7 @@ "ts-node": "^10.9.2", "ts-patch": "^3.2.0", "tsconfig-paths": "^4.2.0", + "tspc": "^1.1.2", "turbo": "^2.1.3", "typescript": "~5.0.0", "typescript-transform-paths": "^3.4.7", @@ -98,7 +99,8 @@ "vite-plugin-dts": "^3.9.1", "vite-tsconfig-paths": "^5.0.1", "vitest": "^2.1.1", - "vitest-mock-extended": "^2.0.2" + "vitest-mock-extended": "^2.0.2", + "vue-tsc": "^2.1.10" }, "// comments for pnpm.overrides": { "@lykmapipo/common>mime": "mime v4 is provided only by ESM, but @lykmapipo/common requires CommonJS version", diff --git a/packages/core/package.json b/packages/core/package.json index 22785b55993..ea94a085c13 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -61,7 +61,7 @@ "dev": "vite build --mode dev", "watch": "pnpm run dev -w --emptyOutDir=false", "lint:js": "eslint **/*.{js,ts}", - "lint:typecheck": "tsc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "npm-run-all -p lint:*", "test": "vitest run --coverage" }, diff --git a/packages/editor/package.json b/packages/editor/package.json index 2d4e1c4216a..9a5defc620c 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -14,7 +14,7 @@ "watch": "pnpm run dev -w --emptyOutDir=false", "serve": "vite", "lint:js": "eslint **/*.{js,ts}", - "lint:typecheck": "tsc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "npm-run-all -p lint:*" }, "dependencies": { diff --git a/packages/pluginkit/package.json b/packages/pluginkit/package.json index dbef51f559e..d9fbb632de9 100644 --- a/packages/pluginkit/package.json +++ b/packages/pluginkit/package.json @@ -16,7 +16,7 @@ "dev": "vite build --mode dev", "watch": "pnpm run dev -w --emptyOutDir=false", "lint:js": "eslint **/*.{js,ts}", - "lint:typecheck": "tsc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "npm-run-all -p lint:*", "test": "vitest run --coverage" }, diff --git a/packages/presentation/package.json b/packages/presentation/package.json index 193a0985027..11b743236b1 100644 --- a/packages/presentation/package.json +++ b/packages/presentation/package.json @@ -35,7 +35,7 @@ "watch": "pnpm run dev -w --emptyOutDir=false", "lint:js": "eslint **/*.{js,jsx,ts,tsx}", "lint:styles": "stylelint --allow-empty-input \"src/**/*.scss\" \"src/**/*.css\"", - "lint:typecheck": "tsc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "run-p lint:*" }, "dependencies": { diff --git a/packages/preset-themes/package.json b/packages/preset-themes/package.json index cf199a2e423..b9c8f8a6a52 100644 --- a/packages/preset-themes/package.json +++ b/packages/preset-themes/package.json @@ -23,7 +23,7 @@ "watch:themes": "pnpm run dev:themes -w --emptyOutDir=false", "lint:eslint": "eslint \"**/*.{js,jsx,ts,tsx}\"", "lint:styles": "stylelint \"src/**/*.scss\"", - "lint:typecheck": "tsc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "run-p lint:*", "preview": "vite preview" }, diff --git a/packages/remark-attachment-refs/package.json b/packages/remark-attachment-refs/package.json index 2ce2d4c3c50..7d575ea23f1 100644 --- a/packages/remark-attachment-refs/package.json +++ b/packages/remark-attachment-refs/package.json @@ -39,7 +39,7 @@ "watch:server": "pnpm run dev:server -w --emptyOutDir=false", "lint:js": "eslint **/*.{js,jsx,ts,tsx}", "lint:styles": "stylelint \"src/**/*.scss\" \"src/**/*.css\"", - "lint:typecheck": "tsc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "run-p lint:*", "test": "" }, diff --git a/packages/remark-drawio/package.json b/packages/remark-drawio/package.json index a7fdac728c0..839577bafbd 100644 --- a/packages/remark-drawio/package.json +++ b/packages/remark-drawio/package.json @@ -27,7 +27,7 @@ "watch": "pnpm run dev -w --emptyOutDir=false", "lint:js": "eslint **/*.{js,jsx,ts,tsx}", "lint:styles": "stylelint --allow-empty-input \"src/**/*.scss\" \"src/**/*.css\"", - "lint:typecheck": "tsc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "run-p lint:*" }, "devDependencies": { diff --git a/packages/remark-lsx/package.json b/packages/remark-lsx/package.json index e3676cb0146..15aac5c09db 100644 --- a/packages/remark-lsx/package.json +++ b/packages/remark-lsx/package.json @@ -25,7 +25,7 @@ "watch:server": "pnpm run dev:server -w --emptyOutDir=false", "lint:js": "eslint **/*.{js,jsx,ts,tsx}", "lint:styles": "stylelint --allow-empty-input \"src/**/*.scss\" \"src/**/*.css\"", - "lint:typecheck": "tsc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "run-p lint:*", "test": "vitest run --coverage" }, diff --git a/packages/slack/package.json b/packages/slack/package.json index a141bbe2a64..23d0ccb3ccd 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -44,7 +44,7 @@ "dev": "vite build --mode dev", "watch": "pnpm run dev -w --emptyOutDir=false", "lint:js": "eslint **/*.{js,ts}", - "lint:typecheck": "tsc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "npm-run-all -p lint:*", "test": "vitest run --coverage" }, diff --git a/packages/ui/package.json b/packages/ui/package.json index ac1dbd59d83..16d7e1e95df 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -34,7 +34,7 @@ "watch": "pnpm run dev -w --emptyOutDir=false", "lint:js": "eslint **/*.{js,ts}", "lint:styles": "stylelint \"./scss/**/*\"", - "lint:typecheck": "tsc", + "lint:typecheck": "vue-tsc --noEmit", "lint": "npm-run-all -p lint:*" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4500a4b0c82..7fc748964e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -156,6 +156,9 @@ importers: tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 + tspc: + specifier: ^1.1.2 + version: 1.1.2 turbo: specifier: ^2.1.3 version: 2.1.3 @@ -180,6 +183,9 @@ importers: vitest-mock-extended: specifier: ^2.0.2 version: 2.0.2(typescript@5.0.4)(vitest@2.1.1) + vue-tsc: + specifier: ^2.1.10 + version: 2.1.10(typescript@5.0.4) apps/app: dependencies: @@ -684,6 +690,9 @@ importers: usehooks-ts: specifier: ^2.6.0 version: 2.16.0(react@18.2.0) + uuid: + specifier: ^11.0.3 + version: 11.0.3 validator: specifier: ^13.7.0 version: 13.12.0 @@ -793,6 +802,9 @@ importers: '@types/url-join': specifier: ^4.0.2 version: 4.0.3 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 babel-loader: specifier: ^8.2.5 version: 8.3.0(@babel/core@7.24.6)(webpack@5.92.1(@swc/core@1.5.25(@swc/helpers@0.5.11))) @@ -4161,6 +4173,9 @@ packages: '@types/url-join@4.0.3': resolution: {integrity: sha512-3l1qMm3wqO0iyC5gkADzT95UVW7C/XXcdvUcShOideKF0ddgVRErEQQJXBd2kvQm+aSgqhBGHGB38TgMeT57Ww==} + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + '@types/warning@3.0.3': resolution: {integrity: sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==} @@ -4334,18 +4349,30 @@ packages: '@volar/language-core@1.11.1': resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + '@volar/language-core@2.4.10': + resolution: {integrity: sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==} + '@volar/source-map@1.11.1': resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + '@volar/source-map@2.4.10': + resolution: {integrity: sha512-OCV+b5ihV0RF3A7vEvNyHPi4G4kFa6ukPmyVocmqm5QzOd8r5yAtiNvaPEjl8dNvgC/lj4JPryeeHLdXd62rWA==} + '@volar/typescript@1.11.1': resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + '@volar/typescript@2.4.10': + resolution: {integrity: sha512-F8ZtBMhSXyYKuBfGpYwqA5rsONnOwAVvjyE7KPYJ7wgZqo2roASqNWUnianOomJX5u1cxeRooHV59N0PhvEOgw==} + '@vue/compiler-core@3.5.6': resolution: {integrity: sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==} '@vue/compiler-dom@3.5.6': resolution: {integrity: sha512-xRXqxDrIqK8v8sSScpistyYH0qYqxakpsIvqMD2e5sV/PXQ1mTwtXp4k42yHK06KXxKSmitop9e45Ui/3BrTEw==} + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + '@vue/language-core@1.8.27': resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} peerDependencies: @@ -4354,6 +4381,14 @@ packages: typescript: optional: true + '@vue/language-core@2.1.10': + resolution: {integrity: sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@vue/shared@3.5.6': resolution: {integrity: sha512-eidH0HInnL39z6wAt6SFIwBrvGOpDWsDxlw3rCgo1B+CQ1781WzQUSU3YjxgdkcJo9Q8S6LmXTkvI+cLHGkQfA==} @@ -4490,6 +4525,9 @@ packages: ajv@8.6.2: resolution: {integrity: sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==} + alien-signals@0.2.1: + resolution: {integrity: sha512-FlEQrDJe9r2RI4cDlnK2zYqJezvx1uJaWEuwxsnlFqnPwvJbgitNBRumWrLDv8lA+7cCikpMxfJD2TTHiaTklA==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -8934,6 +8972,9 @@ packages: muggle-string@0.3.1: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + multer-autoreap@1.0.3: resolution: {integrity: sha512-g0wISfylN2bchQglyAgQTIHoiLUcYQTXKmQh+fKJpheGay9aDqHmcMYRwWRNJ+tK95j9/NZ5QNFkqRytrgw34g==} engines: {node: '>= 0.8'} @@ -11302,6 +11343,9 @@ packages: tslib@2.8.0: resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + tspc@1.1.2: + resolution: {integrity: sha512-2a6CildDvcLB7VCHUTPgT3jdGUfoX0QfgTWQ4F6czwED8o4rAMK4P/ZSUpTJAOpdTOqlsTojj05hyu3F1Wm85g==} + tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} @@ -11670,6 +11714,10 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + uuid@11.0.3: + resolution: {integrity: sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==} + hasBin: true + uuid@3.3.2: resolution: {integrity: sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. @@ -11862,6 +11910,12 @@ packages: peerDependencies: typescript: '*' + vue-tsc@2.1.10: + resolution: {integrity: sha512-RBNSfaaRHcN5uqVqJSZh++Gy/YUzryuv9u1aFWhsammDJXNtUiJMNoJ747lZcQ68wUQFx6E73y4FY3D8E7FGMA==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} @@ -14617,7 +14671,7 @@ snapshots: statuses: 2.0.1 string-template: 1.0.0 striptags: 3.2.0 - uuid: 9.0.1 + uuid: 11.0.3 '@lykmapipo/env@0.17.8': dependencies: @@ -16241,6 +16295,8 @@ snapshots: '@types/url-join@4.0.3': {} + '@types/uuid@10.0.0': {} + '@types/warning@3.0.3': {} '@types/webidl-conversions@6.1.1': {} @@ -16558,15 +16614,27 @@ snapshots: dependencies: '@volar/source-map': 1.11.1 + '@volar/language-core@2.4.10': + dependencies: + '@volar/source-map': 2.4.10 + '@volar/source-map@1.11.1': dependencies: muggle-string: 0.3.1 + '@volar/source-map@2.4.10': {} + '@volar/typescript@1.11.1': dependencies: '@volar/language-core': 1.11.1 path-browserify: 1.0.1 + '@volar/typescript@2.4.10': + dependencies: + '@volar/language-core': 2.4.10 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + '@vue/compiler-core@3.5.6': dependencies: '@babel/parser': 7.25.6 @@ -16580,6 +16648,11 @@ snapshots: '@vue/compiler-core': 3.5.6 '@vue/shared': 3.5.6 + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + '@vue/language-core@1.8.27(typescript@5.0.4)': dependencies: '@volar/language-core': 1.11.1 @@ -16594,6 +16667,19 @@ snapshots: optionalDependencies: typescript: 5.0.4 + '@vue/language-core@2.1.10(typescript@5.0.4)': + dependencies: + '@volar/language-core': 2.4.10 + '@vue/compiler-dom': 3.5.6 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.6 + alien-signals: 0.2.1 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.0.4 + '@vue/shared@3.5.6': {} '@webassemblyjs/ast@1.12.1': @@ -16769,6 +16855,8 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.2.2 + alien-signals@0.2.1: {} + ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -22116,6 +22204,8 @@ snapshots: muggle-string@0.3.1: {} + muggle-string@0.4.1: {} + multer-autoreap@1.0.3(express@4.21.0)(multer@1.4.4): dependencies: debug: 3.2.7 @@ -24937,6 +25027,8 @@ snapshots: tslib@2.8.0: {} + tspc@1.1.2: {} + tsscmp@1.0.6: {} tsutils@3.21.0(typescript@5.0.4): @@ -25318,6 +25410,8 @@ snapshots: utils-merge@1.0.1: {} + uuid@11.0.3: {} + uuid@3.3.2: {} uuid@3.4.0: {} @@ -25535,6 +25629,13 @@ snapshots: semver: 7.6.3 typescript: 5.0.4 + vue-tsc@2.1.10(typescript@5.0.4): + dependencies: + '@volar/typescript': 2.4.10 + '@vue/language-core': 2.1.10(typescript@5.0.4) + semver: 7.6.3 + typescript: 5.0.4 + w3c-keyname@2.2.8: {} walker@1.0.8: