Skip to content

Commit

Permalink
updates
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsoncodehk committed Nov 16, 2023
1 parent dacb61d commit 8762fb8
Show file tree
Hide file tree
Showing 19 changed files with 54 additions and 45 deletions.
4 changes: 2 additions & 2 deletions packages/language-server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
import process from 'node:process'
import {
createConnection,
startLanguageServer
startTypeScriptServer
} from '@volar/language-server/node.js'
import {plugin} from './lib/language-server-plugin.js'

process.title = 'mdx-language-server'

startLanguageServer(createConnection(), plugin)
startTypeScriptServer(createConnection(), plugin)
10 changes: 5 additions & 5 deletions packages/language-server/lib/language-server-plugin.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* @typedef {import('@volar/language-server/node.js').LanguageServerPlugin} LanguageServerPlugin
* @typedef {import('@volar/language-server/node.js').TypeScriptServerPlugin} TypeScriptServerPlugin
*/

import assert from 'node:assert'
Expand All @@ -9,9 +9,9 @@ import {create as createTypeScriptService} from 'volar-service-typescript'
import {loadPlugins} from './configuration.js'

/**
* @type {LanguageServerPlugin}
* @type {TypeScriptServerPlugin}
*/
export function plugin(initOptions, modules) {
export function plugin({modules}) {
return {
extraFileExtensions: [
{extension: 'mdx', isMixedContent: true, scriptKind: 7}
Expand All @@ -29,11 +29,11 @@ export function plugin(initOptions, modules) {
'tsx'
],

async resolveConfig(config, ctx) {
async resolveConfig(config, env, projectHost) {
assert(modules.typescript, 'TypeScript module is missing')

const plugins = await loadPlugins(
ctx?.project?.tsConfig,
projectHost?.configFileName,
modules.typescript
)

Expand Down
6 changes: 4 additions & 2 deletions packages/language-server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,13 @@
"remark-frontmatter": "^5.0.0",
"remark-gfm": "^4.0.0",
"volar-service-markdown": "0.0.17",
"volar-service-typescript": "0.0.17"
"volar-service-typescript": "0.0.17",
"vscode-uri": "^3.0.0"
},
"devDependencies": {
"@types/node": "^20.0.0",
"@types/normalize-path": "^3.0.0",
"normalize-path": "^3.0.0"
"normalize-path": "^3.0.0",
"unified": "^11.0.0"
}
}
4 changes: 2 additions & 2 deletions packages/language-server/test/completion.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
Expand All @@ -9,7 +9,7 @@ import {
CompletionResolveRequest,
InitializeRequest,
InsertTextFormat
} from 'vscode-languageserver'
} from '@volar/language-server'
import {
createConnection,
fixturePath,
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/definitions.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {DefinitionRequest, InitializeRequest} from 'vscode-languageserver'
import {DefinitionRequest, InitializeRequest} from '@volar/language-server'
import {createConnection, fixtureUri, openTextDocument, tsdk} from './utils.js'

/** @type {ProtocolConnection} */
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/diagnostics.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {InitializeRequest} from 'vscode-languageserver'
import {InitializeRequest} from '@volar/language-server'
import {
createConnection,
fixtureUri,
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/document-link.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {DocumentLinkRequest, InitializeRequest} from 'vscode-languageserver'
import {DocumentLinkRequest, InitializeRequest} from '@volar/language-server'
import {
createConnection,
fixturePath,
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/document-symbols.test.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {
DocumentSymbolRequest,
InitializeRequest,
SymbolKind
} from 'vscode-languageserver'
} from '@volar/language-server'
import {createConnection, fixtureUri, openTextDocument, tsdk} from './utils.js'

/** @type {ProtocolConnection} */
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/folding-ranges.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {FoldingRangeRequest, InitializeRequest} from 'vscode-languageserver'
import {FoldingRangeRequest, InitializeRequest} from '@volar/language-server'
import {createConnection, fixtureUri, openTextDocument, tsdk} from './utils.js'

/** @type {ProtocolConnection} */
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/hover.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {HoverRequest, InitializeRequest} from 'vscode-languageserver'
import {HoverRequest, InitializeRequest} from '@volar/language-server'
import {createConnection, fixtureUri, openTextDocument, tsdk} from './utils.js'

/** @type {ProtocolConnection} */
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/initialize.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/**
* @typedef {import('vscode-languageserver-protocol').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {InitializeRequest} from 'vscode-languageserver-protocol'
import {InitializeRequest} from '@volar/language-server'
import {createConnection, fixtureUri, tsdk} from './utils.js'

/** @type {ProtocolConnection} */
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/no-tsconfig.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {InitializeRequest} from 'vscode-languageserver'
import {InitializeRequest} from '@volar/language-server'
import {
createConnection,
openTextDocument,
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/plugins.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {InitializeRequest} from 'vscode-languageserver'
import {InitializeRequest} from '@volar/language-server'
import {
createConnection,
openTextDocument,
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/prepare-rename.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {InitializeRequest, PrepareRenameRequest} from 'vscode-languageserver'
import {InitializeRequest, PrepareRenameRequest} from '@volar/language-server'
import {createConnection, fixtureUri, openTextDocument, tsdk} from './utils.js'

/** @type {ProtocolConnection} */
Expand Down
4 changes: 2 additions & 2 deletions packages/language-server/test/rename.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/**
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {InitializeRequest, RenameRequest} from 'vscode-languageserver'
import {InitializeRequest, RenameRequest} from '@volar/language-server'
import {createConnection, fixtureUri, openTextDocument, tsdk} from './utils.js'

/** @type {ProtocolConnection} */
Expand Down
8 changes: 4 additions & 4 deletions packages/language-server/test/utils.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* @typedef {import('vscode-languageserver').TextDocumentItem} TextDocumentItem
* @typedef {import('vscode-languageserver').ProtocolConnection} ProtocolConnection
* @typedef {import('vscode-languageserver').PublishDiagnosticsParams} PublishDiagnosticsParams
* @typedef {import('@volar/language-server').TextDocumentItem} TextDocumentItem
* @typedef {import('@volar/language-server').ProtocolConnection} ProtocolConnection
* @typedef {import('@volar/language-server').PublishDiagnosticsParams} PublishDiagnosticsParams
*/

import {spawn} from 'node:child_process'
Expand All @@ -15,7 +15,7 @@ import {
IPCMessageReader,
IPCMessageWriter,
PublishDiagnosticsNotification
} from 'vscode-languageserver/node.js'
} from '@volar/language-server/node.js'
import {URI} from 'vscode-uri'
// eslint-disable-next-line import/order
import normalizePath from 'normalize-path'
Expand Down
8 changes: 7 additions & 1 deletion packages/language-service/lib/language-module.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ function getVirtualFiles(fileName, snapshot, ts, processor) {
codegenStacks: [],
embeddedFiles: [],
fileName: fileName + '.jsx',
languageId: 'javascriptreact',

Check failure on line 115 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 18)

Type '{ capabilities: {}; codegenStacks: never[]; embeddedFiles: never[]; fileName: string; languageId: string; kind: FileKind.TypeScriptHostFile; mappings: Mapping<FileRangeCapabilities>[]; snapshot: ts.IScriptSnapshot; }' is not assignable to type 'VirtualFile'.

Check failure on line 115 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 20)

Type '{ capabilities: {}; codegenStacks: never[]; embeddedFiles: never[]; fileName: string; languageId: string; kind: FileKind.TypeScriptHostFile; mappings: Mapping<FileRangeCapabilities>[]; snapshot: ts.IScriptSnapshot; }' is not assignable to type 'VirtualFile'.
kind: FileKind.TypeScriptHostFile,
mappings: jsxMappings,
snapshot: ts.ScriptSnapshot.fromString(fallback)
Expand All @@ -121,6 +122,7 @@ function getVirtualFiles(fileName, snapshot, ts, processor) {
codegenStacks: [],
embeddedFiles: [],
fileName: fileName + '.md',
languageId: 'markdown',

Check failure on line 125 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 18)

Type '{ capabilities: {}; codegenStacks: never[]; embeddedFiles: never[]; fileName: string; languageId: string; kind: FileKind.TypeScriptHostFile; mappings: Mapping<FileRangeCapabilities>[]; snapshot: ts.IScriptSnapshot; }' is not assignable to type 'VirtualFile'.

Check failure on line 125 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 20)

Type '{ capabilities: {}; codegenStacks: never[]; embeddedFiles: never[]; fileName: string; languageId: string; kind: FileKind.TypeScriptHostFile; mappings: Mapping<FileRangeCapabilities>[]; snapshot: ts.IScriptSnapshot; }' is not assignable to type 'VirtualFile'.
kind: FileKind.TypeScriptHostFile,
mappings: mdMappings,
snapshot: ts.ScriptSnapshot.fromString(mdx)
Expand Down Expand Up @@ -152,6 +154,7 @@ function getVirtualFiles(fileName, snapshot, ts, processor) {
codegenStacks: [],
embeddedFiles: [],
fileName: fileName + '.yaml',
languageId: 'yaml',

Check failure on line 157 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 18)

Argument of type '{ capabilities: FileCapabilities; codegenStacks: never[]; embeddedFiles: never[]; fileName: string; languageId: string; kind: FileKind.TypeScriptHostFile; mappings: { sourceRange: [...]; generatedRange: [...]; data: FileRangeCapabilities; }[]; snapshot: ts.IScriptSnapshot; }' is not assignable to parameter of type 'VirtualFile'.

Check failure on line 157 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 20)

Argument of type '{ capabilities: FileCapabilities; codegenStacks: never[]; embeddedFiles: never[]; fileName: string; languageId: string; kind: FileKind.TypeScriptHostFile; mappings: { sourceRange: [...]; generatedRange: [...]; data: FileRangeCapabilities; }[]; snapshot: ts.IScriptSnapshot; }' is not assignable to parameter of type 'VirtualFile'.
kind: FileKind.TypeScriptHostFile,
mappings: [
{
Expand Down Expand Up @@ -282,6 +285,7 @@ function getVirtualFiles(fileName, snapshot, ts, processor) {
codegenStacks: [],
embeddedFiles: [],
fileName: fileName + '.jsx',
languageId: 'javascriptreact',

Check failure on line 288 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 18)

Argument of type '{ capabilities: FileCapabilities; codegenStacks: never[]; embeddedFiles: never[]; fileName: string; languageId: string; kind: FileKind.TypeScriptHostFile; mappings: Mapping<FileRangeCapabilities>[]; snapshot: ts.IScriptSnapshot; }' is not assignable to parameter of type 'VirtualFile'.

Check failure on line 288 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 20)

Argument of type '{ capabilities: FileCapabilities; codegenStacks: never[]; embeddedFiles: never[]; fileName: string; languageId: string; kind: FileKind.TypeScriptHostFile; mappings: Mapping<FileRangeCapabilities>[]; snapshot: ts.IScriptSnapshot; }' is not assignable to parameter of type 'VirtualFile'.
kind: FileKind.TypeScriptHostFile,
mappings: jsxMappings,
snapshot: ts.ScriptSnapshot.fromString(js)
Expand All @@ -291,6 +295,7 @@ function getVirtualFiles(fileName, snapshot, ts, processor) {
codegenStacks: [],
embeddedFiles: [],
fileName: fileName + '.md',
languageId: 'markdown',
kind: FileKind.TypeScriptHostFile,
mappings: mdMappings,
snapshot: ts.ScriptSnapshot.fromString(mdShadow)
Expand Down Expand Up @@ -332,6 +337,7 @@ export function getLanguageModule(ts, plugins) {
codegenStacks: [],
embeddedFiles: getVirtualFiles(fileName, snapshot, ts, processor),
fileName,
languageId: 'mdx',
kind: FileKind.TextFile,
mappings: [
{
Expand Down Expand Up @@ -364,7 +370,7 @@ export function getLanguageModule(ts, plugins) {
)
},

resolveHost(host) {
resolveTypeScriptProjectHost(host) {

Check failure on line 373 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 18)

Type '{ createVirtualFile(fileName: string, snapshot: IScriptSnapshot): { capabilities: FileCapabilities; codegenStacks: never[]; embeddedFiles: VirtualFile[]; ... 4 more ...; snapshot: IScriptSnapshot; } | undefined; updateVirtualFile(mdxFile: VirtualFile, snapshot: IScriptSnapshot): void; resolveTypeScriptProjectHost(ho...' is not assignable to type 'Language<VirtualFile>'.

Check failure on line 373 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 18)

Parameter 'host' implicitly has an 'any' type.

Check failure on line 373 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 20)

Type '{ createVirtualFile(fileName: string, snapshot: IScriptSnapshot): { capabilities: FileCapabilities; codegenStacks: never[]; embeddedFiles: VirtualFile[]; ... 4 more ...; snapshot: IScriptSnapshot; } | undefined; updateVirtualFile(mdxFile: VirtualFile, snapshot: IScriptSnapshot): void; resolveTypeScriptProjectHost(ho...' is not assignable to type 'Language<VirtualFile>'.

Check failure on line 373 in packages/language-service/lib/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 20)

Parameter 'host' implicitly has an 'any' type.
return {
...host,
getCompilationSettings: () => ({
Expand Down
14 changes: 7 additions & 7 deletions packages/language-service/test/language-module.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
FileCapabilities,
FileKind,
FileRangeCapabilities
} from '@volar/language-server'
} from '@volar/language-core'
import remarkFrontmatter from 'remark-frontmatter'
import typescript from 'typescript'
import {getLanguageModule} from '@mdx-js/language-service'
Expand Down Expand Up @@ -694,13 +694,13 @@ test('update virtual file', () => {
test('compilation setting defaults', () => {
const module = getLanguageModule(typescript)

const host = module.resolveHost?.({
const host = module.resolveTypeScriptProjectHost?.({

Check failure on line 697 in packages/language-service/test/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 18)

Property 'resolveTypeScriptProjectHost' does not exist on type 'Language<VirtualFile>'.

Check failure on line 697 in packages/language-service/test/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 20)

Property 'resolveTypeScriptProjectHost' does not exist on type 'Language<VirtualFile>'.
getCompilationSettings: () => ({}),
getProjectVersion: () => '1',
getScriptFileNames: () => [],
getScriptSnapshot: () => undefined,
rootPath: '/',
workspacePath: '/'
getCurrentDirectory: () => '/',
configFileName: undefined,
})

const compilerOptions = host?.getCompilationSettings()
Expand All @@ -718,7 +718,7 @@ test('compilation setting defaults', () => {
test('compilation setting overrides', () => {
const module = getLanguageModule(typescript)

const host = module.resolveHost?.({
const host = module.resolveTypeScriptProjectHost?.({

Check failure on line 721 in packages/language-service/test/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 18)

Property 'resolveTypeScriptProjectHost' does not exist on type 'Language<VirtualFile>'.

Check failure on line 721 in packages/language-service/test/language-module.js

View workflow job for this annotation

GitHub Actions / test (ubuntu-latest, 20)

Property 'resolveTypeScriptProjectHost' does not exist on type 'Language<VirtualFile>'.
getCompilationSettings: () => ({
jsx: typescript.JsxEmit.React,
jsxFactory: 'h',
Expand All @@ -730,8 +730,8 @@ test('compilation setting overrides', () => {
getProjectVersion: () => '1',
getScriptFileNames: () => [],
getScriptSnapshot: () => undefined,
rootPath: '/',
workspacePath: '/'
getCurrentDirectory: () => '/',
configFileName: undefined,
})

const compilerOptions = host?.getCompilationSettings()
Expand Down
1 change: 1 addition & 0 deletions packages/vscode-mdx/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
"vscode:prepublish": "npm run build"
},
"devDependencies": {
"@types/mdast": "^4.0.0",
"@types/node": "^20.0.0",
"@types/vscode": "^1.82.0",
"@volar/language-server": "~1.11.0",
Expand Down

0 comments on commit 8762fb8

Please sign in to comment.