Skip to content

Commit d24c984

Browse files
committed
chore: update to Volar 2.4.0
1 parent efba00b commit d24c984

File tree

13 files changed

+199
-268
lines changed

13 files changed

+199
-268
lines changed

Diff for: extensions/vscode/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@
548548
"devDependencies": {
549549
"@types/semver": "^7.5.3",
550550
"@types/vscode": "^1.82.0",
551-
"@volar/vscode": "~2.4.0-alpha.18",
551+
"@volar/vscode": "~2.4.0",
552552
"@vscode/vsce": "latest",
553553
"@vue/language-core": "2.0.28",
554554
"@vue/language-server": "2.0.28",

Diff for: package.json

+1-18
Original file line numberDiff line numberDiff line change
@@ -24,30 +24,13 @@
2424
"@lerna-lite/publish": "latest",
2525
"@tsslint/cli": "latest",
2626
"@tsslint/config": "latest",
27-
"@volar/language-service": "~2.4.0-alpha.18",
27+
"@volar/language-service": "~2.4.0",
2828
"typescript": "latest",
2929
"vite": "latest",
3030
"vitest": "latest"
3131
},
3232
"pnpm": {
3333
"overrides": {
34-
"@volar/kit": "https://pkg.pr.new/volarjs/volar.js/@volar/kit@ab44192",
35-
"@volar/language-core": "https://pkg.pr.new/volarjs/volar.js/@volar/language-core@ab44192",
36-
"@volar/language-server": "https://pkg.pr.new/volarjs/volar.js/@volar/language-server@ab44192",
37-
"@volar/language-service": "https://pkg.pr.new/volarjs/volar.js/@volar/language-service@ab44192",
38-
"@volar/source-map": "https://pkg.pr.new/volarjs/volar.js/@volar/source-map@ab44192",
39-
"@volar/typescript": "https://pkg.pr.new/volarjs/volar.js/@volar/typescript@ab44192",
40-
"@volar/vscode": "https://pkg.pr.new/volarjs/volar.js/@volar/vscode@ab44192",
41-
"volar-service-css": "https://pkg.pr.new/volarjs/services/volar-service-css@f520ee3",
42-
"volar-service-emmet": "https://pkg.pr.new/volarjs/services/volar-service-emmet@f520ee3",
43-
"volar-service-html": "https://pkg.pr.new/volarjs/services/volar-service-html@f520ee3",
44-
"volar-service-json": "https://pkg.pr.new/volarjs/services/volar-service-json@f520ee3",
45-
"volar-service-markdown": "https://pkg.pr.new/volarjs/services/volar-service-markdown@f520ee3",
46-
"volar-service-prettyhtml": "https://pkg.pr.new/volarjs/services/volar-service-prettyhtml@f520ee3",
47-
"volar-service-pug": "https://pkg.pr.new/volarjs/services/volar-service-pug@f520ee3",
48-
"volar-service-pug-beautify": "https://pkg.pr.new/volarjs/services/volar-service-pug-beautify@f520ee3",
49-
"volar-service-typescript": "https://pkg.pr.new/volarjs/services/volar-service-typescript@f520ee3",
50-
"volar-service-typescript-twoslash-queries": "https://pkg.pr.new/volarjs/services/volar-service-typescript-twoslash-queries@f520ee3",
5134
"inquirer": "9.2.23"
5235
}
5336
}

Diff for: packages/component-meta/lib/base.ts

+59-78
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export function createCheckerByJsonConfigBase(
2727
checkerOptions: MetaCheckerOptions = {}
2828
) {
2929
rootDir = rootDir.replace(windowsPathReg, '/');
30-
return createCheckerWorker(
30+
return baseCreate(
3131
ts,
3232
() => vue.createParsedCommandLineByJson(ts, ts.sys, rootDir, json),
3333
checkerOptions,
@@ -42,7 +42,7 @@ export function createCheckerBase(
4242
checkerOptions: MetaCheckerOptions = {}
4343
) {
4444
tsconfig = tsconfig.replace(windowsPathReg, '/');
45-
return createCheckerWorker(
45+
return baseCreate(
4646
ts,
4747
() => vue.createParsedCommandLine(ts, ts.sys, tsconfig),
4848
checkerOptions,
@@ -51,75 +51,28 @@ export function createCheckerBase(
5151
);
5252
}
5353

54-
function createCheckerWorker(
54+
export function baseCreate(
5555
ts: typeof import('typescript'),
56-
loadParsedCommandLine: () => vue.ParsedCommandLine,
56+
getCommandLine: () => vue.ParsedCommandLine,
5757
checkerOptions: MetaCheckerOptions,
5858
rootPath: string,
5959
globalComponentName: string
6060
) {
61-
62-
/**
63-
* Original Host
64-
*/
65-
66-
let parsedCommandLine = loadParsedCommandLine();
67-
let fileNames = parsedCommandLine.fileNames.map(path => path.replace(windowsPathReg, '/'));
61+
let commandLine = getCommandLine();
62+
let fileNames = commandLine.fileNames.map(path => path.replace(windowsPathReg, '/'));
6863
let projectVersion = 0;
6964

70-
const scriptSnapshots = new Map<string, ts.IScriptSnapshot>();
7165
const projectHost: TypeScriptProjectHost = {
7266
getCurrentDirectory: () => rootPath,
7367
getProjectVersion: () => projectVersion.toString(),
74-
getCompilationSettings: () => parsedCommandLine.options,
68+
getCompilationSettings: () => commandLine.options,
7569
getScriptFileNames: () => fileNames,
76-
getProjectReferences: () => parsedCommandLine.projectReferences,
77-
getScriptSnapshot: fileName => {
78-
if (!scriptSnapshots.has(fileName)) {
79-
const fileText = ts.sys.readFile(fileName);
80-
if (fileText !== undefined) {
81-
scriptSnapshots.set(fileName, ts.ScriptSnapshot.fromString(fileText));
82-
}
83-
}
84-
return scriptSnapshots.get(fileName);
85-
},
70+
getProjectReferences: () => commandLine.projectReferences,
8671
};
87-
88-
return {
89-
...baseCreate(ts, projectHost, parsedCommandLine.vueOptions, checkerOptions, globalComponentName),
90-
updateFile(fileName: string, text: string) {
91-
fileName = fileName.replace(windowsPathReg, '/');
92-
scriptSnapshots.set(fileName, ts.ScriptSnapshot.fromString(text));
93-
projectVersion++;
94-
},
95-
deleteFile(fileName: string) {
96-
fileName = fileName.replace(windowsPathReg, '/');
97-
fileNames = fileNames.filter(f => f !== fileName);
98-
projectVersion++;
99-
},
100-
reload() {
101-
parsedCommandLine = loadParsedCommandLine();
102-
fileNames = parsedCommandLine.fileNames.map(path => path.replace(windowsPathReg, '/'));
103-
this.clearCache();
104-
},
105-
clearCache() {
106-
scriptSnapshots.clear();
107-
projectVersion++;
108-
},
109-
};
110-
}
111-
112-
export function baseCreate(
113-
ts: typeof import('typescript'),
114-
projectHost: TypeScriptProjectHost,
115-
vueCompilerOptions: vue.VueCompilerOptions,
116-
checkerOptions: MetaCheckerOptions,
117-
globalComponentName: string
118-
) {
11972
const globalComponentSnapshot = ts.ScriptSnapshot.fromString('<script setup lang="ts"></script>');
120-
const metaSnapshots: Record<string, ts.IScriptSnapshot> = {};
73+
const scriptSnapshots = new Map<string, ts.IScriptSnapshot | undefined>();
74+
const metaSnapshots = new Map<string, ts.IScriptSnapshot>();
12175
const getScriptFileNames = projectHost.getScriptFileNames;
122-
const getScriptSnapshot = projectHost.getScriptSnapshot;
12376
projectHost.getScriptFileNames = () => {
12477
const names = getScriptFileNames();
12578
return [
@@ -129,20 +82,6 @@ export function baseCreate(
12982
getMetaFileName(globalComponentName),
13083
];
13184
};
132-
projectHost.getScriptSnapshot = fileName => {
133-
if (isMetaFileName(fileName)) {
134-
if (!metaSnapshots[fileName]) {
135-
metaSnapshots[fileName] = ts.ScriptSnapshot.fromString(getMetaScriptContent(fileName));
136-
}
137-
return metaSnapshots[fileName];
138-
}
139-
else if (fileName === globalComponentName) {
140-
return globalComponentSnapshot;
141-
}
142-
else {
143-
return getScriptSnapshot(fileName);
144-
}
145-
};
14685

14786
const vueLanguagePlugin = vue.createVueLanguagePlugin2<string>(
14887
ts,
@@ -153,7 +92,7 @@ export function baseCreate(
15392
ts.sys.useCaseSensitiveFileNames
15493
),
15594
projectHost.getCompilationSettings(),
156-
vueCompilerOptions
95+
commandLine.vueOptions
15796
);
15897
const language = vue.createLanguage(
15998
[
@@ -166,7 +105,30 @@ export function baseCreate(
166105
],
167106
new vue.FileMap(ts.sys.useCaseSensitiveFileNames),
168107
fileName => {
169-
const snapshot = projectHost.getScriptSnapshot(fileName);
108+
let snapshot = scriptSnapshots.get(fileName);
109+
110+
if (fileName === globalComponentName) {
111+
snapshot = globalComponentSnapshot;
112+
}
113+
else if (isMetaFileName(fileName)) {
114+
if (!metaSnapshots.has(fileName)) {
115+
metaSnapshots.set(fileName, ts.ScriptSnapshot.fromString(getMetaScriptContent(fileName)));
116+
}
117+
snapshot = metaSnapshots.get(fileName);
118+
}
119+
else {
120+
if (!scriptSnapshots.has(fileName)) {
121+
const fileText = ts.sys.readFile(fileName);
122+
if (fileText !== undefined) {
123+
scriptSnapshots.set(fileName, ts.ScriptSnapshot.fromString(fileText));
124+
}
125+
else {
126+
scriptSnapshots.set(fileName, undefined);
127+
}
128+
}
129+
snapshot = scriptSnapshots.get(fileName);
130+
}
131+
170132
if (snapshot) {
171133
language.scripts.set(fileName, snapshot);
172134
}
@@ -182,7 +144,7 @@ export function baseCreate(
182144
const getScriptKind = languageServiceHost.getScriptKind?.bind(languageServiceHost);
183145
languageServiceHost.getScriptKind = fileName => {
184146
const scriptKind = getScriptKind!(fileName);
185-
if (vueCompilerOptions.extensions.some(ext => fileName.endsWith(ext))) {
147+
if (commandLine.vueOptions.extensions.some(ext => fileName.endsWith(ext))) {
186148
if (scriptKind === ts.ScriptKind.JS) {
187149
return ts.ScriptKind.TS;
188150
}
@@ -199,6 +161,25 @@ export function baseCreate(
199161
return {
200162
getExportNames,
201163
getComponentMeta,
164+
updateFile(fileName: string, text: string) {
165+
fileName = fileName.replace(windowsPathReg, '/');
166+
scriptSnapshots.set(fileName, ts.ScriptSnapshot.fromString(text));
167+
projectVersion++;
168+
},
169+
deleteFile(fileName: string) {
170+
fileName = fileName.replace(windowsPathReg, '/');
171+
fileNames = fileNames.filter(f => f !== fileName);
172+
projectVersion++;
173+
},
174+
reload() {
175+
commandLine = getCommandLine();
176+
fileNames = commandLine.fileNames.map(path => path.replace(windowsPathReg, '/'));
177+
this.clearCache();
178+
},
179+
clearCache() {
180+
scriptSnapshots.clear();
181+
projectVersion++;
182+
},
202183
__internal__: {
203184
tsLs,
204185
},
@@ -210,7 +191,7 @@ export function baseCreate(
210191

211192
function getMetaFileName(fileName: string) {
212193
return (
213-
vueCompilerOptions.extensions.some(ext => fileName.endsWith(ext))
194+
commandLine.vueOptions.extensions.some(ext => fileName.endsWith(ext))
214195
? fileName
215196
: fileName.substring(0, fileName.lastIndexOf('.'))
216197
) + '.meta.ts';
@@ -229,7 +210,7 @@ interface ComponentMeta<T> {
229210
exposed: ComponentExposed<T>;
230211
};
231212
232-
${vueCompilerOptions.target < 3 ? vue2TypeHelpersCode : typeHelpersCode}
213+
${commandLine.vueOptions.target < 3 ? vue2TypeHelpersCode : typeHelpersCode}
233214
`.trim();
234215
return code;
235216
}
@@ -321,11 +302,11 @@ ${vueCompilerOptions.target < 3 ? vue2TypeHelpersCode : typeHelpersCode}
321302

322303
// fill defaults
323304
const printer = ts.createPrinter(checkerOptions.printer);
324-
const snapshot = projectHost.getScriptSnapshot(componentPath)!;
305+
const snapshot = language.scripts.get(componentPath)?.snapshot!;
325306

326307
const vueFile = language.scripts.get(componentPath)?.generated?.root;
327308
const vueDefaults = vueFile && exportName === 'default'
328-
? (vueFile instanceof vue.VueVirtualCode ? readVueComponentDefaultProps(vueFile, printer, ts, vueCompilerOptions) : {})
309+
? (vueFile instanceof vue.VueVirtualCode ? readVueComponentDefaultProps(vueFile, printer, ts, commandLine.vueOptions) : {})
329310
: {};
330311
const tsDefaults = !vueFile ? readTsComponentDefaultProps(
331312
componentPath.substring(componentPath.lastIndexOf('.') + 1), // ts | js | tsx | jsx

Diff for: packages/component-meta/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"directory": "packages/component-meta"
1313
},
1414
"dependencies": {
15-
"@volar/typescript": "~2.4.0-alpha.18",
15+
"@volar/typescript": "~2.4.0",
1616
"@vue/language-core": "2.0.28",
1717
"path-browserify": "^1.0.1",
1818
"vue-component-type-helpers": "2.0.28"

Diff for: packages/language-core/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"directory": "packages/language-core"
1313
},
1414
"dependencies": {
15-
"@volar/language-core": "~2.4.0-alpha.18",
15+
"@volar/language-core": "~2.4.0",
1616
"@vue/compiler-dom": "^3.4.0",
1717
"@vue/shared": "^3.4.0",
1818
"computeds": "^0.0.1",
@@ -25,7 +25,7 @@
2525
"@types/minimatch": "^5.1.2",
2626
"@types/node": "latest",
2727
"@types/path-browserify": "^1.0.1",
28-
"@volar/typescript": "~2.4.0-alpha.18",
28+
"@volar/typescript": "~2.4.0",
2929
"@vue/compiler-sfc": "^3.4.0"
3030
},
3131
"peerDependencies": {

Diff for: packages/language-plugin-pug/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"@vue/language-core": "2.0.28"
1717
},
1818
"dependencies": {
19-
"@volar/source-map": "~2.4.0-alpha.18",
20-
"volar-service-pug": "0.0.59"
19+
"@volar/source-map": "~2.4.0",
20+
"volar-service-pug": "0.0.61"
2121
}
2222
}

Diff for: packages/language-server/lib/hybridModeProject.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export function createHybridModeProject(
2525
setup(_server) {
2626
server = _server;
2727
onSomePipeReadyCallbacks.push(() => {
28-
server.languageFeatures.refreshDiagnostics(false);
28+
server.languageFeatures.requestRefresh(false);
2929
});
3030
server.fileWatcher.onDidChangeWatchedFiles(({ changes }) => {
3131
for (const change of changes) {

Diff for: packages/language-server/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
"directory": "packages/language-server"
1616
},
1717
"dependencies": {
18-
"@volar/language-core": "~2.4.0-alpha.18",
19-
"@volar/language-server": "~2.4.0-alpha.18",
18+
"@volar/language-core": "~2.4.0",
19+
"@volar/language-server": "~2.4.0",
2020
"@vue/language-core": "2.0.28",
2121
"@vue/language-service": "2.0.28",
2222
"@vue/typescript-plugin": "2.0.28",

Diff for: packages/language-service/package.json

+12-12
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,31 @@
1616
"update-html-data": "node ./scripts/update-html-data.js"
1717
},
1818
"dependencies": {
19-
"@volar/language-core": "~2.4.0-alpha.18",
20-
"@volar/language-service": "~2.4.0-alpha.18",
21-
"@volar/typescript": "~2.4.0-alpha.18",
19+
"@volar/language-core": "~2.4.0",
20+
"@volar/language-service": "~2.4.0",
21+
"@volar/typescript": "~2.4.0",
2222
"@vue/compiler-dom": "^3.4.0",
2323
"@vue/language-core": "2.0.28",
2424
"@vue/shared": "^3.4.0",
2525
"@vue/typescript-plugin": "2.0.28",
2626
"computeds": "^0.0.1",
2727
"path-browserify": "^1.0.1",
28-
"volar-service-css": "0.0.59",
29-
"volar-service-emmet": "0.0.59",
30-
"volar-service-html": "0.0.59",
31-
"volar-service-json": "0.0.59",
32-
"volar-service-pug": "0.0.59",
33-
"volar-service-pug-beautify": "0.0.59",
34-
"volar-service-typescript": "0.0.59",
35-
"volar-service-typescript-twoslash-queries": "0.0.59",
28+
"volar-service-css": "0.0.61",
29+
"volar-service-emmet": "0.0.61",
30+
"volar-service-html": "0.0.61",
31+
"volar-service-json": "0.0.61",
32+
"volar-service-pug": "0.0.61",
33+
"volar-service-pug-beautify": "0.0.61",
34+
"volar-service-typescript": "0.0.61",
35+
"volar-service-typescript-twoslash-queries": "0.0.61",
3636
"vscode-html-languageservice": "^5.2.0",
3737
"vscode-languageserver-textdocument": "^1.0.11",
3838
"vscode-uri": "^3.0.8"
3939
},
4040
"devDependencies": {
4141
"@types/node": "latest",
4242
"@types/path-browserify": "latest",
43-
"@volar/kit": "~2.4.0-alpha.18",
43+
"@volar/kit": "~2.4.0",
4444
"vscode-languageserver-protocol": "^3.17.5"
4545
}
4646
}

Diff for: packages/language-service/tests/utils/createTester.ts

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ function createTester(rootUri: URI) {
2222
getProjectVersion: () => '0',
2323
getScriptFileNames: () => parsedCommandLine.fileNames,
2424
getCompilationSettings: () => parsedCommandLine.options,
25-
getScriptSnapshot,
2625
};
2726
const vueLanguagePlugin = createVueLanguagePlugin2(
2827
ts,

Diff for: packages/tsc/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"vue-tsc": "./bin/vue-tsc.js"
1717
},
1818
"dependencies": {
19-
"@volar/typescript": "~2.4.0-alpha.18",
19+
"@volar/typescript": "~2.4.0",
2020
"@vue/language-core": "2.0.28",
2121
"semver": "^7.5.4"
2222
},

Diff for: packages/typescript-plugin/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"directory": "packages/typescript-plugin"
1313
},
1414
"dependencies": {
15-
"@volar/typescript": "~2.4.0-alpha.18",
15+
"@volar/typescript": "~2.4.0",
1616
"@vue/language-core": "2.0.28",
1717
"@vue/shared": "^3.4.0"
1818
},

0 commit comments

Comments
 (0)