From 00c7de9bfd7628faea340810fc511cfd98691a9f Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Fri, 29 Mar 2024 02:21:07 +0800 Subject: [PATCH] chore(lint): fix lint config for `extensions/vscode/tsconfig.json` --- extensions/vscode/package.json | 5 ++- extensions/vscode/src/common.ts | 25 +++++-------- extensions/vscode/src/features/doctor.ts | 3 +- extensions/vscode/src/features/nameCasing.ts | 2 +- .../vscode/src/features/splitEditors.ts | 2 +- extensions/vscode/src/middleware.ts | 7 ++-- extensions/vscode/src/nodeClientMain.ts | 2 +- package.json | 2 +- pnpm-lock.yaml | 36 ++++++++++--------- tsl.config.ts | 17 ++++++++- 10 files changed, 54 insertions(+), 47 deletions(-) diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json index 935e5f62b7..d3446f36e3 100644 --- a/extensions/vscode/package.json +++ b/extensions/vscode/package.json @@ -263,7 +263,7 @@ "items": { "type": "string" }, - "default": [], + "default": [ ], "description": "List any additional file extensions that should be processed as Vue files (requires restart)." }, "vue.doctor.status": { @@ -495,7 +495,6 @@ "esbuild-plugin-copy": "latest", "esbuild-visualizer": "latest", "semver": "^7.5.4", - "vsce": "latest", - "vscode-languageclient": "^9.0.1" + "vsce": "latest" } } diff --git a/extensions/vscode/src/common.ts b/extensions/vscode/src/common.ts index 313ad4ab92..30b584ed57 100644 --- a/extensions/vscode/src/common.ts +++ b/extensions/vscode/src/common.ts @@ -1,15 +1,6 @@ -import { - activateAutoInsertion, - activateDocumentDropEdit, - activateServerSys, - activateWriteVirtualFiles, - activateTsConfigStatusItem, - activateTsVersionStatusItem, - getTsdk, -} from '@volar/vscode'; import { DiagnosticModel, VueInitializationOptions } from '@vue/language-server'; import * as vscode from 'vscode'; -import type * as lsp from 'vscode-languageclient'; +import * as lsp from '@volar/vscode'; import { config } from './config'; import * as doctor from './features/doctor'; import * as nameCasing from './features/nameCasing'; @@ -76,14 +67,14 @@ async function doActivate(context: vscode.ExtensionContext, createLc: CreateLang splitEditors.register(context, client); doctor.register(context, client); - activateAutoInsertion(selectors, client); - activateDocumentDropEdit(selectors, client); - activateWriteVirtualFiles('vue.action.writeVirtualFiles', client); - activateServerSys(client); + lsp.activateAutoInsertion(selectors, client); + lsp.activateDocumentDropEdit(selectors, client); + lsp.activateWriteVirtualFiles('vue.action.writeVirtualFiles', client); + lsp.activateServerSys(client); if (!config.server.hybridMode) { - activateTsConfigStatusItem(selectors, 'vue.tsconfig', client); - activateTsVersionStatusItem(selectors, 'vue.tsversion', context, client, text => 'TS ' + text); + lsp.activateTsConfigStatusItem(selectors, 'vue.tsconfig', client); + lsp.activateTsVersionStatusItem(selectors, 'vue.tsversion', context, client, text => 'TS ' + text); } const hybridModeStatus = vscode.languages.createLanguageStatusItem('vue-hybrid-mode', selectors); @@ -189,7 +180,7 @@ async function getInitializationOptions( return { // volar diagnosticModel: config.server.diagnosticModel === 'pull' ? DiagnosticModel.Pull : DiagnosticModel.Push, - typescript: { tsdk: (await getTsdk(context)).tsdk }, + typescript: { tsdk: (await lsp.getTsdk(context)).tsdk }, maxFileSize: config.server.maxFileSize, semanticTokensLegend: { tokenTypes: ['component'], diff --git a/extensions/vscode/src/features/doctor.ts b/extensions/vscode/src/features/doctor.ts index 91afc4f7a3..60e2f49084 100644 --- a/extensions/vscode/src/features/doctor.ts +++ b/extensions/vscode/src/features/doctor.ts @@ -1,8 +1,7 @@ -import { getTsdk } from '@volar/vscode'; +import { BaseLanguageClient, getTsdk } from '@volar/vscode'; import { ParseSFCRequest } from '@vue/language-server'; import * as semver from 'semver'; import * as vscode from 'vscode'; -import type { BaseLanguageClient } from 'vscode-languageclient'; import { config } from '../config'; const scheme = 'vue-doctor'; diff --git a/extensions/vscode/src/features/nameCasing.ts b/extensions/vscode/src/features/nameCasing.ts index 6ab166dc3d..bb9b39becc 100644 --- a/extensions/vscode/src/features/nameCasing.ts +++ b/extensions/vscode/src/features/nameCasing.ts @@ -1,6 +1,6 @@ import * as vscode from 'vscode'; import { quickPick } from '@volar/vscode/lib/common'; -import { BaseLanguageClient, State } from 'vscode-languageclient'; +import { BaseLanguageClient, State } from '@volar/vscode'; import { AttrNameCasing, TagNameCasing, DetectNameCasingRequest, GetConvertAttrCasingEditsRequest, GetConvertTagCasingEditsRequest } from '@vue/language-server'; import { config } from '../config'; diff --git a/extensions/vscode/src/features/splitEditors.ts b/extensions/vscode/src/features/splitEditors.ts index e1cc616cfd..de68f2f4be 100644 --- a/extensions/vscode/src/features/splitEditors.ts +++ b/extensions/vscode/src/features/splitEditors.ts @@ -1,6 +1,6 @@ +import type { BaseLanguageClient } from '@volar/vscode'; import { ParseSFCRequest } from '@vue/language-server'; import * as vscode from 'vscode'; -import type { BaseLanguageClient } from 'vscode-languageclient'; import { config } from '../config'; type SFCBlock = ParseSFCRequest.ResponseType['descriptor']['customBlocks'][number]; diff --git a/extensions/vscode/src/middleware.ts b/extensions/vscode/src/middleware.ts index c3b3815546..2ae213f6eb 100644 --- a/extensions/vscode/src/middleware.ts +++ b/extensions/vscode/src/middleware.ts @@ -1,11 +1,10 @@ -import { middleware as baseMiddleware } from '@volar/vscode'; import { AttrNameCasing, TagNameCasing } from '@vue/language-server'; import * as vscode from 'vscode'; -import type * as lsp from 'vscode-languageclient'; +import * as lsp from '@volar/vscode'; import { attrNameCasings, tagNameCasings } from './features/nameCasing'; export const middleware: lsp.Middleware = { - ...baseMiddleware, + ...lsp.middleware, async resolveCodeAction(item, token, next) { if (item.kind?.value === 'refactor.move.newFile.dumb') { const inputName = await vscode.window.showInputBox({ value: (item as any).data.original.data.newName }); @@ -14,7 +13,7 @@ export const middleware: lsp.Middleware = { } (item as any).data.original.data.newName = inputName; } - return await (baseMiddleware.resolveCodeAction?.(item, token, next) ?? next(item, token)); + return await (lsp.middleware.resolveCodeAction?.(item, token, next) ?? next(item, token)); }, workspace: { configuration(params, token, next) { diff --git a/extensions/vscode/src/nodeClientMain.ts b/extensions/vscode/src/nodeClientMain.ts index e57af0734f..9ef9cf0e42 100644 --- a/extensions/vscode/src/nodeClientMain.ts +++ b/extensions/vscode/src/nodeClientMain.ts @@ -2,7 +2,7 @@ import { createLabsInfo } from '@volar/vscode'; import * as serverLib from '@vue/language-server'; import * as fs from 'fs'; import * as vscode from 'vscode'; -import * as lsp from 'vscode-languageclient/node'; +import * as lsp from '@volar/vscode/node'; import { activate as commonActivate, deactivate as commonDeactivate } from './common'; import { config } from './config'; import { middleware } from './middleware'; diff --git a/package.json b/package.json index f7f64b0efd..54795b2428 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "release:next-base": "npm run release:base -- --dist-tag next", "release:next-vue": "cd ./extensions/vscode && npm run release:next", "test": "vitest run", - "lint": "tsl --projects packages/*/tsconfig.json", + "lint": "tsl --projects {packages/*/tsconfig.json,extensions/*/tsconfig.json}", "lint:fix": "npm run lint -- --fix", "chrome": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=./extensions/vscode ../volar-starter" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 619c6de83c..a3e2316a4f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,13 +34,7 @@ importers: version: 1.3.1 extensions/vscode: - devDependencies: - '@types/semver': - specifier: ^7.5.3 - version: 7.5.8 - '@types/vscode': - specifier: ^1.82.0 - version: 1.86.0 + dependencies: '@volar/vscode': specifier: ~2.2.0-alpha.1 version: 2.2.0-alpha.1 @@ -53,6 +47,16 @@ importers: '@vue/typescript-plugin': specifier: 2.0.7 version: link:../../packages/typescript-plugin + semver: + specifier: ^7.5.4 + version: 7.6.0 + devDependencies: + '@types/semver': + specifier: ^7.5.3 + version: 7.5.8 + '@types/vscode': + specifier: ^1.82.0 + version: 1.86.0 esbuild: specifier: latest version: 0.20.1 @@ -62,15 +66,9 @@ importers: esbuild-visualizer: specifier: latest version: 0.6.0 - semver: - specifier: ^7.5.4 - version: 7.6.0 vsce: specifier: latest version: 2.15.0 - vscode-languageclient: - specifier: ^9.0.1 - version: 9.0.1 packages/component-meta: dependencies: @@ -1619,6 +1617,7 @@ packages: vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 + dev: false /@volar/language-service@2.2.0-alpha.1: resolution: {integrity: sha512-6eg6bqxDzZOAK6J7WlYIO4y7q/3bQFx3kMb6pmmEI7wLgaKVhoSOeLslUjAUgfI385kFB+bnSC2lm2I2RJbxMw==} @@ -1633,6 +1632,7 @@ packages: dependencies: vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 + dev: false /@volar/source-map@2.2.0-alpha.1: resolution: {integrity: sha512-iVbpnKEExQKjXZ5CcFgcOPvcsK3/GQOCypb4xp4rhifz6mq2hJiZc3MzyryLIPo9ktvuWSKMTm10hY9AG7y9QQ==} @@ -1660,7 +1660,7 @@ packages: path-browserify: 1.0.1 vscode-languageclient: 9.0.1 vscode-nls: 5.2.0 - dev: true + dev: false /@vscode/emmet-helper@2.9.2: resolution: {integrity: sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==} @@ -1674,6 +1674,7 @@ packages: /@vscode/l10n@0.0.16: resolution: {integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==} + dev: false /@vscode/l10n@0.0.18: resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} @@ -3641,7 +3642,7 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: true + dev: false /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -4461,6 +4462,7 @@ packages: /request-light@0.7.0: resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + dev: false /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -5398,7 +5400,7 @@ packages: minimatch: 5.1.6 semver: 7.6.0 vscode-languageserver-protocol: 3.17.5 - dev: true + dev: false /vscode-languageserver-protocol@3.17.5: resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} @@ -5417,9 +5419,11 @@ packages: hasBin: true dependencies: vscode-languageserver-protocol: 3.17.5 + dev: false /vscode-nls@5.2.0: resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + dev: false /vscode-uri@2.1.2: resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} diff --git a/tsl.config.ts b/tsl.config.ts index fd2e028ee2..020725bcc4 100644 --- a/tsl.config.ts +++ b/tsl.config.ts @@ -1 +1,16 @@ -export { default } from '@volar/tsl-config'; +import VolarLintConfig from '@volar/tsl-config'; +import { defineConfig } from 'tsl'; + +export default defineConfig({ + ...VolarLintConfig, + plugins: [ + ctx => ({ + resolveRules(rules) { + if (ctx.tsconfig.endsWith('extensions/vscode/tsconfig.json')) { + delete rules['missing-dependency']; + } + return rules; + }, + }), + ] +});