From 8546cb266e853ca39e359fbabdd61043fc246e6f Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Wed, 12 Aug 2020 00:51:38 -0400 Subject: [PATCH] WIP support for project references in languageService codepath --- src/index.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 5aa2ea23b..110e1bdba 100644 --- a/src/index.ts +++ b/src/index.ts @@ -535,6 +535,8 @@ export function create (rawOptions: CreateOptions = {}): Register { return transformers } + const compilerHost: _ts.TODO + // Create the compiler host for type checking. const serviceHost: _ts.LanguageServiceHost = { getProjectVersion: () => String(projectVersion), @@ -568,11 +570,24 @@ export function create (rawOptions: CreateOptions = {}): Register { getCurrentDirectory: () => cwd, getCompilationSettings: () => config.options, getDefaultLibFileName: () => ts.getDefaultLibFilePath(config.options), - getCustomTransformers: getCustomTransformers + getCustomTransformers: getCustomTransformers, + getProjectReferences() { return config.projectReferences }, + // TODO Add both of the following function signatures to an "Internals" declaration somewhere, + // copied from TS source code + useSourceOfProjectReferenceRedirect() { return true }, + setCompilerHost(_compilerHost: _ts.CompilerHost) { + compilerHost = _compilerHost + setResolverHost(compilerHost) + } } const registry = ts.createDocumentRegistry(ts.sys.useCaseSensitiveFileNames, cwd) const service = ts.createLanguageService(serviceHost, registry) + setResolverHost(serviceHost) + // TODO ADD THIS TO THE RESOLVER FACTORY AFTER THAT'S BEEN MERGED + function setResolverHost(newHost: _ts.ModuleResolutionHost) { + serviceHost = newHost + } const updateMemoryCache = (contents: string, fileName: string) => { // Add to `rootFiles` if not already there