private createCompilerHost()

in lib/main.ts [318:344]


  private createCompilerHost(sourceFileMap: Map<string, ts.SourceFile>): ts.CompilerHost {
    const compilerOptions = this.getCompilerOptions();
    const compilerHost = ts.createCompilerHost(compilerOptions);
    const defaultLibFileName = this.normalizeSlashes(ts.getDefaultLibFileName(compilerOptions));
    compilerHost.getSourceFile = (sourceName) => {
      let sourcePath = sourceName;
      if (sourceName === defaultLibFileName) {
        sourcePath = ts.getDefaultLibFilePath(compilerOptions);
      } else if (sourceFileMap.has(sourceName)) {
        return sourceFileMap.get(sourceName);
      }
      if (!fs.existsSync(sourcePath)) {
        return undefined;
      }
      const contents = fs.readFileSync(sourcePath, 'utf-8');
      return ts.createSourceFile(sourceName, contents, COMPILER_OPTIONS.target, true);
    };
    compilerHost.writeFile = (name, text, writeByteOrderMark) => {
      fs.writeFile(name, text, undefined);
    };
    compilerHost.useCaseSensitiveFileNames = () => true;
    compilerHost.getCurrentDirectory = () => '';
    compilerHost.getNewLine = () => '\n';
    compilerHost.resolveModuleNames = getModuleResolver(compilerHost);

    return compilerHost;
  }