Skip to content

Commit e26f4e1

Browse files
authored
Merge pull request #9 from jasonlyu123/js-doc-support
Adding JSDoc type support
2 parents cb5f91d + 641b781 commit e26f4e1

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

packages/language-server/src/plugins/TypeScriptPlugin.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,9 @@ export class TypeScriptPlugin
9191
let diagnostics: ts.Diagnostic[] = [
9292
...lang.getSyntacticDiagnostics(document.getFilePath()!),
9393
...lang.getSuggestionDiagnostics(document.getFilePath()!),
94+
...lang.getSemanticDiagnostics(document.getFilePath()!)
9495
];
9596

96-
if (isTypescript) {
97-
diagnostics.push(...lang.getSemanticDiagnostics(document.getFilePath()!));
98-
}
99-
10097
return diagnostics.map(diagnostic => ({
10198
range: convertRange(document, diagnostic),
10299
severity: mapSeverity(diagnostic.category),

packages/language-server/src/plugins/typescript/service.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import ts from 'typescript';
22
import { DocumentSnapshot } from './DocumentSnapshot';
3-
import { isSvelte } from './utils';
4-
import { dirname } from 'path';
3+
import { isSvelte, getScriptKindFromFileName } from './utils';
4+
import { dirname, resolve } from 'path';
55
import { Document } from '../../api';
6+
import { getSveltePackageInfo } from '../svelte/sveltePackage';
67

78
export interface LanguageServiceContainer {
89
getService(): ts.LanguageService;
@@ -40,13 +41,17 @@ export function createLanguageService(
4041
): LanguageServiceContainer {
4142
const workspacePath = tsconfigPath ? dirname(tsconfigPath) : '';
4243
const documents = new Map<string, DocumentSnapshot>();
44+
const sveltePkgInfo = getSveltePackageInfo(workspacePath);
4345

4446
let compilerOptions: ts.CompilerOptions = {
4547
allowNonTsExtensions: true,
4648
target: ts.ScriptTarget.Latest,
4749
module: ts.ModuleKind.ESNext,
4850
moduleResolution: ts.ModuleResolutionKind.NodeJs,
4951
allowJs: true,
52+
types: [
53+
resolve(sveltePkgInfo.path, 'types', 'runtime')
54+
]
5055
};
5156

5257
const configJson = tsconfigPath && ts.readConfigFile(tsconfigPath, ts.sys.readFile).config;
@@ -82,9 +87,18 @@ export function createLanguageService(
8287
},
8388
getCurrentDirectory: () => workspacePath,
8489
getDefaultLibFileName: ts.getDefaultLibFilePath,
90+
8591
fileExists: ts.sys.fileExists,
8692
readFile: ts.sys.readFile,
8793
readDirectory: ts.sys.readDirectory,
94+
getScriptKind: (fileName: string) => {
95+
const doc = getSvelteSnapshot(fileName);
96+
if(doc) {
97+
return doc.scriptKind;
98+
}
99+
100+
return getScriptKindFromFileName(fileName);
101+
},
88102
};
89103
let languageService = ts.createLanguageService(host);
90104

0 commit comments

Comments
 (0)