Skip to content

Commit 044776e

Browse files
Update to Volar 2.3 (#446)
Co-authored-by: Remco Haszing <[email protected]>
1 parent 63f6dc0 commit 044776e

18 files changed

+254
-129
lines changed

.changeset/friendly-toes-rescue.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'@mdx-js/typescript-plugin': patch
3+
'@mdx-js/language-service': patch
4+
'@mdx-js/language-server': patch
5+
'vscode-mdx': patch
6+
---
7+
8+
Update to Volar 2.3.

packages/language-server/index.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {
1818
import {
1919
createConnection,
2020
createServer,
21-
createTypeScriptProjectProvider,
21+
createTypeScriptProject,
2222
loadTsdkByPath
2323
} from '@volar/language-server/node.js'
2424
import {loadPlugin} from 'load-plugin'
@@ -27,6 +27,7 @@ import remarkGfm from 'remark-gfm'
2727
import {create as createMarkdownServicePlugin} from 'volar-service-markdown'
2828
import {create as createTypeScriptServicePlugin} from 'volar-service-typescript'
2929
import {create as createTypeScriptSyntacticServicePlugin} from 'volar-service-typescript/lib/plugins/syntactic.js'
30+
import {URI} from 'vscode-uri'
3031

3132
process.title = 'mdx-language-server'
3233

@@ -51,12 +52,12 @@ connection.onInitialize(async (parameters) => {
5152

5253
return server.initialize(
5354
parameters,
54-
getLanguageServicePlugins(),
55-
createTypeScriptProjectProvider(
55+
createTypeScriptProject(
5656
typescript,
5757
diagnosticMessages,
5858
(serviceEnv, {configFileName}) => getLanguagePlugins(configFileName)
59-
)
59+
),
60+
getLanguageServicePlugins()
6061
)
6162

6263
function getLanguageServicePlugins() {
@@ -168,7 +169,6 @@ connection.listen()
168169
* @returns {Promise<Commands>}
169170
*/
170171
async function getCommands(uri) {
171-
const project = await server.projects.get.call(server, uri)
172-
const service = project.getLanguageService()
172+
const service = await server.project.getLanguageService(URI.parse(uri))
173173
return service.context.inject('mdxCommands')
174174
}

packages/language-server/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,17 @@
3333
},
3434
"dependencies": {
3535
"@mdx-js/language-service": "0.5.6",
36-
"@volar/language-server": "~2.2.0",
36+
"@volar/language-server": "~2.3.0",
3737
"load-plugin": "^6.0.0",
3838
"remark-frontmatter": "^5.0.0",
3939
"remark-gfm": "^4.0.0",
40-
"volar-service-markdown": "0.0.47",
41-
"volar-service-typescript": "0.0.47",
40+
"volar-service-markdown": "0.0.51",
41+
"volar-service-typescript": "0.0.51",
4242
"vscode-uri": "^3.0.0"
4343
},
4444
"devDependencies": {
4545
"@types/node": "^20.0.0",
46-
"@volar/test-utils": "~2.2.0",
46+
"@volar/test-utils": "~2.3.0",
4747
"unified": "^11.0.0"
4848
}
4949
}

packages/language-server/test/completion.test.js

Lines changed: 47 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import assert from 'node:assert/strict'
55
import {afterEach, beforeEach, test} from 'node:test'
66
import {CompletionItemKind, InsertTextFormat} from '@volar/language-server'
7+
import {URI} from 'vscode-uri'
78
import {createServer, fixturePath, fixtureUri, tsdk} from './utils.js'
89

910
/** @type {LanguageServerHandle} */
@@ -36,20 +37,29 @@ test('support completion in ESM', async () => {
3637
assert.deepEqual(completion, {
3738
commitCharacters: ['.', ',', ';', '('],
3839
data: {
39-
embeddedDocumentUri:
40-
'volar-embedded-content://jsx/' +
41-
encodeURIComponent(fixtureUri('node16/completion.mdx')),
40+
embeddedDocumentUri: String(
41+
URI.from({
42+
scheme: 'volar-embedded-content',
43+
authority: 'jsx',
44+
path: '/' + encodeURIComponent(fixtureUri('node16/completion.mdx'))
45+
})
46+
),
4247
original: {
4348
data: {
4449
fileName: fixturePath('node16/completion.mdx'),
4550
offset: 81,
4651
originalItem: {name: 'Boolean'},
47-
uri:
48-
'volar-embedded-content://jsx/' +
49-
encodeURIComponent(fixtureUri('node16/completion.mdx'))
52+
uri: String(
53+
URI.from({
54+
scheme: 'volar-embedded-content',
55+
authority: 'jsx',
56+
path:
57+
'/' + encodeURIComponent(fixtureUri('node16/completion.mdx'))
58+
})
59+
)
5060
}
5161
},
52-
serviceIndex: 2,
62+
pluginIndex: 2,
5363
uri: fixtureUri('node16/completion.mdx')
5464
},
5565
insertTextFormat: InsertTextFormat.PlainText,
@@ -65,9 +75,13 @@ test('support completion in ESM', async () => {
6575
fileName: fixturePath('node16/completion.mdx'),
6676
offset: 81,
6777
originalItem: {name: 'Boolean'},
68-
uri:
69-
'volar-embedded-content://jsx/' +
70-
encodeURIComponent(fixtureUri('node16/completion.mdx'))
78+
uri: String(
79+
URI.from({
80+
scheme: 'volar-embedded-content',
81+
authority: 'jsx',
82+
path: '/' + encodeURIComponent(fixtureUri('node16/completion.mdx'))
83+
})
84+
)
7185
},
7286
detail: 'interface Boolean\nvar Boolean: BooleanConstructor',
7387
documentation: {kind: 'markdown', value: ''},
@@ -98,20 +112,29 @@ test('support completion in JSX', async () => {
98112
assert.deepEqual(completion, {
99113
commitCharacters: ['.', ',', ';', '('],
100114
data: {
101-
embeddedDocumentUri:
102-
'volar-embedded-content://jsx/' +
103-
encodeURIComponent(fixtureUri('node16/completion.mdx')),
115+
embeddedDocumentUri: String(
116+
URI.from({
117+
scheme: 'volar-embedded-content',
118+
authority: 'jsx',
119+
path: '/' + encodeURIComponent(fixtureUri('node16/completion.mdx'))
120+
})
121+
),
104122
original: {
105123
data: {
106124
fileName: fixturePath('node16/completion.mdx'),
107125
offset: 119,
108126
originalItem: {name: 'Boolean'},
109-
uri:
110-
'volar-embedded-content://jsx/' +
111-
encodeURIComponent(fixtureUri('node16/completion.mdx'))
127+
uri: String(
128+
URI.from({
129+
scheme: 'volar-embedded-content',
130+
authority: 'jsx',
131+
path:
132+
'/' + encodeURIComponent(fixtureUri('node16/completion.mdx'))
133+
})
134+
)
112135
}
113136
},
114-
serviceIndex: 2,
137+
pluginIndex: 2,
115138
uri: fixtureUri('node16/completion.mdx')
116139
},
117140
insertTextFormat: InsertTextFormat.PlainText,
@@ -127,9 +150,13 @@ test('support completion in JSX', async () => {
127150
fileName: fixturePath('node16/completion.mdx'),
128151
offset: 119,
129152
originalItem: {name: 'Boolean'},
130-
uri:
131-
'volar-embedded-content://jsx/' +
132-
encodeURIComponent(fixtureUri('node16/completion.mdx'))
153+
uri: String(
154+
URI.from({
155+
scheme: 'volar-embedded-content',
156+
authority: 'jsx',
157+
path: '/' + encodeURIComponent(fixtureUri('node16/completion.mdx'))
158+
})
159+
)
133160
},
134161
detail: 'interface Boolean\nvar Boolean: BooleanConstructor',
135162
documentation: {kind: 'markdown', value: ''},

packages/language-server/test/diagnostics.test.js

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44
import assert from 'node:assert/strict'
55
import {afterEach, beforeEach, test} from 'node:test'
6+
import {URI} from 'vscode-uri'
67
import {createServer, fixturePath, fixtureUri, tsdk} from './utils.js'
78

89
/** @type {LanguageServerHandle} */
@@ -35,12 +36,17 @@ test('parse errors', async () => {
3536
href: 'https://github.com/micromark/micromark-extension-mdxjs-esm#could-not-parse-importexports-with-acorn'
3637
},
3738
data: {
38-
documentUri:
39-
'volar-embedded-content://mdx/' +
40-
encodeURIComponent(fixtureUri('node16/syntax-error.mdx')),
39+
documentUri: String(
40+
URI.from({
41+
scheme: 'volar-embedded-content',
42+
authority: 'mdx',
43+
path:
44+
'/' + encodeURIComponent(fixtureUri('node16/syntax-error.mdx'))
45+
})
46+
),
4147
isFormat: false,
4248
original: {},
43-
serviceIndex: 1,
49+
pluginIndex: 1,
4450
uri: fixtureUri('node16/syntax-error.mdx'),
4551
version: 0
4652
},
@@ -75,12 +81,17 @@ test('type errors', async () => {
7581
{
7682
code: 2568,
7783
data: {
78-
documentUri:
79-
'volar-embedded-content://jsx/' +
80-
encodeURIComponent(fixtureUri('node16/type-errors.mdx')),
84+
documentUri: String(
85+
URI.from({
86+
scheme: 'volar-embedded-content',
87+
authority: 'jsx',
88+
path:
89+
'/' + encodeURIComponent(fixtureUri('node16/type-errors.mdx'))
90+
})
91+
),
8192
isFormat: false,
8293
original: {},
83-
serviceIndex: 2,
94+
pluginIndex: 2,
8495
uri: fixtureUri('node16/type-errors.mdx'),
8596
version: 0
8697
},
@@ -96,12 +107,17 @@ test('type errors', async () => {
96107
{
97108
code: 2568,
98109
data: {
99-
documentUri:
100-
'volar-embedded-content://jsx/' +
101-
encodeURIComponent(fixtureUri('node16/type-errors.mdx')),
110+
documentUri: String(
111+
URI.from({
112+
scheme: 'volar-embedded-content',
113+
authority: 'jsx',
114+
path:
115+
'/' + encodeURIComponent(fixtureUri('node16/type-errors.mdx'))
116+
})
117+
),
102118
isFormat: false,
103119
original: {},
104-
serviceIndex: 2,
120+
pluginIndex: 2,
105121
uri: fixtureUri('node16/type-errors.mdx'),
106122
version: 0
107123
},
@@ -155,12 +171,17 @@ test('provided components', async () => {
155171
{
156172
code: 2741,
157173
data: {
158-
documentUri:
159-
'volar-embedded-content://jsx/' +
160-
encodeURIComponent(fixtureUri('provide/solar-system.mdx')),
174+
documentUri: String(
175+
URI.from({
176+
scheme: 'volar-embedded-content',
177+
authority: 'jsx',
178+
path:
179+
'/' + encodeURIComponent(fixtureUri('provide/solar-system.mdx'))
180+
})
181+
),
161182
isFormat: false,
162183
original: {},
163-
serviceIndex: 2,
184+
pluginIndex: 2,
164185
uri: fixtureUri('provide/solar-system.mdx'),
165186
version: 0
166187
},

packages/language-server/test/document-link.test.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44
import assert from 'node:assert/strict'
55
import {afterEach, beforeEach, test} from 'node:test'
6+
import {URI} from 'vscode-uri'
67
import {createServer, fixturePath, fixtureUri, tsdk} from './utils.js'
78

89
/** @type {LanguageServerHandle} */
@@ -33,7 +34,11 @@ test('resolve markdown link references', async () => {
3334
end: {line: 0, character: 12}
3435
},
3536
tooltip: 'Go to link definition',
36-
target: fixtureUri('node16/link-reference.mdx#L3,8').replace('%3A', ':'),
37+
target: String(
38+
URI.parse(fixtureUri('node16/link-reference.mdx')).with({
39+
fragment: 'L3,8'
40+
})
41+
),
3742
data: {
3843
uri: fixtureUri('node16/link-reference.mdx'),
3944
original: {
@@ -46,7 +51,9 @@ test('resolve markdown link references', async () => {
4651
resource: {
4752
$mid: 1,
4853
authority: 'md',
49-
path: '/' + fixtureUri('node16/link-reference.mdx'),
54+
path:
55+
'/' +
56+
encodeURIComponent(fixtureUri('node16/link-reference.mdx')),
5057
scheme: 'volar-embedded-content'
5158
},
5259
range: {
@@ -65,7 +72,7 @@ test('resolve markdown link references', async () => {
6572
href: {kind: 2, ref: 'mdx'}
6673
}
6774
},
68-
serviceIndex: 0
75+
pluginIndex: 0
6976
}
7077
},
7178
{
@@ -74,7 +81,7 @@ test('resolve markdown link references', async () => {
7481
data: {
7582
uri: fixtureUri('node16/link-reference.mdx'),
7683
original: {},
77-
serviceIndex: 0
84+
pluginIndex: 0
7885
}
7986
}
8087
])

packages/language-server/test/initialize.test.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ test('initialize', async () => {
2222
{typescript: {enabled: true, tsdk}}
2323
)
2424
assert.deepEqual(initializeResponse, {
25+
autoInsertion: {
26+
configurationSections: [
27+
'javascript.autoClosingTags',
28+
'typescript.autoClosingTags'
29+
],
30+
triggerCharacters: ['>', '>']
31+
},
2532
capabilities: {
2633
callHierarchyProvider: true,
2734
codeActionProvider: {
@@ -38,8 +45,6 @@ test('initialize', async () => {
3845
],
3946
resolveProvider: true
4047
},
41-
codeLensProvider: {resolveProvider: true},
42-
colorProvider: true,
4348
completionProvider: {
4449
resolveProvider: true,
4550
triggerCharacters: ['.', '/', '#', '"', "'", '`', '<', '@', ' ', '*']
@@ -57,8 +62,7 @@ test('initialize', async () => {
5762
foldingRangeProvider: true,
5863
hoverProvider: true,
5964
implementationProvider: true,
60-
inlayHintProvider: {resolveProvider: true},
61-
linkedEditingRangeProvider: true,
65+
inlayHintProvider: {},
6266
referencesProvider: true,
6367
renameProvider: {prepareProvider: true},
6468
selectionRangeProvider: true,

0 commit comments

Comments
 (0)