Skip to content

Commit 1d6b461

Browse files
committed
Prototype using typescript-template-language-service-decorator library
1 parent a90c696 commit 1d6b461

File tree

8 files changed

+270
-433
lines changed

8 files changed

+270
-433
lines changed

package-lock.json

Lines changed: 253 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"url": "https://github.com/Microsoft/typescript-styled-plugin/issues"
2121
},
2222
"dependencies": {
23+
"typescript-template-language-service-decorator": "file:../typescript-template-language-service-decorator",
2324
"vscode-css-languageservice": "^2.1.10",
2425
"vscode-languageserver-types": "^3.4.0"
2526
},

src/configuration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
export interface TsStyledPluginConfiguration {
55
tags: string[];
66
validate: boolean;
7-
lint: { [ key: string ]: any };
7+
lint: { [key: string]: any };
88
}
99

1010
export const defaultConfiguration: TsStyledPluginConfiguration = {

src/index.ts

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,10 @@
44
// Original code forked from https://github.com/Quramy/ts-graphql-plugin
55

66
import * as ts from 'typescript/lib/tsserverlibrary';
7-
import StyledStringLanguageService from './styled-string-language-service';
8-
import { createTemplateStringLanguageServiceProxy, ScriptSourceHelper } from './template-string-language-service-proxy';
9-
import { findAllNodes, findNode } from './nodes';
7+
import StyledTemplateLanguageService from './styled-template-language-service';
8+
import { decorateWithTemplateLanguageService, Logger } from 'typescript-template-language-service-decorator';
109
import { pluginName } from './config';
1110
import { loadConfiguration } from './configuration';
12-
import Logger from './logger';
13-
14-
class LanguageServiceScriptSourceHelper implements ScriptSourceHelper {
15-
constructor(
16-
private readonly languageService: ts.LanguageService
17-
) { }
18-
19-
public getNode(fileName: string, position: number) {
20-
return findNode(this.languageService.getProgram().getSourceFile(fileName), position);
21-
}
22-
public getAllNodes(fileName: string, cond: (n: ts.Node) => boolean) {
23-
const s = this.languageService.getProgram().getSourceFile(fileName);
24-
return findAllNodes(s, cond);
25-
}
26-
public getLineAndChar(fileName: string, position: number) {
27-
const s = this.languageService.getProgram().getSourceFile(fileName);
28-
return ts.getLineAndCharacterOfPosition(s, position);
29-
}
30-
31-
public getOffset(fileName: string, line: number, character: number) {
32-
const s = this.languageService.getProgram().getSourceFile(fileName);
33-
return ts.getPositionOfLineAndCharacter(s, line, character);
34-
}
35-
}
3611

3712
class LanguageServiceLogger implements Logger {
3813
constructor(
@@ -50,9 +25,7 @@ function create(info: ts.server.PluginCreateInfo): ts.LanguageService {
5025

5126
logger.log('config: ' + JSON.stringify(config));
5227

53-
const helper = new LanguageServiceScriptSourceHelper(info.languageService);
54-
const adapter = new StyledStringLanguageService(config);
55-
return createTemplateStringLanguageServiceProxy(info.languageService, helper, adapter, logger, {
28+
return decorateWithTemplateLanguageService(info.languageService, new StyledTemplateLanguageService(config), {
5629
tags: config.tags,
5730
enableForStringWithSubstitutions: true,
5831
getSubstitution(
@@ -65,7 +38,7 @@ function create(info: ts.server.PluginCreateInfo): ts.LanguageService {
6538
const replacementChar = pre.match(/(^|\n)\s*$/g) ? ' ' : 'x';
6639
return placeholder.replace(/./gm, c => c === '\n' ? '\n' : replacementChar);
6740
},
68-
});
41+
}, { logger });
6942
}
7043

7144
export = (mod: { typescript: typeof ts }) => {

src/logger.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/nodes.ts

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)