44// Original code forked from https://github.com/Quramy/ts-graphql-plugin
55
66import * 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' ;
109import { pluginName } from './config' ;
1110import { 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
3712class 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
7144export = ( mod : { typescript : typeof ts } ) => {
0 commit comments