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;
}