mirror of
https://github.com/ezolenko/rollup-plugin-typescript2.git
synced 2025-12-08 19:06:16 +00:00
112 lines
2.5 KiB
TypeScript
112 lines
2.5 KiB
TypeScript
import { tsModule } from "./tsproxy";
|
|
import * as tsTypes from "typescript";
|
|
import { existsSync } from "fs";
|
|
import * as _ from "lodash";
|
|
import { normalize } from "./normalize";
|
|
|
|
export class LanguageServiceHost implements tsTypes.LanguageServiceHost
|
|
{
|
|
private cwd = process.cwd();
|
|
private snapshots: { [fileName: string]: tsTypes.IScriptSnapshot } = {};
|
|
private versions: { [fileName: string]: number } = {};
|
|
|
|
constructor(private parsedConfig: tsTypes.ParsedCommandLine)
|
|
{
|
|
}
|
|
|
|
public reset()
|
|
{
|
|
this.snapshots = {};
|
|
this.versions = {};
|
|
}
|
|
|
|
public setSnapshot(fileName: string, data: string): tsTypes.IScriptSnapshot
|
|
{
|
|
fileName = normalize(fileName);
|
|
|
|
const snapshot = tsModule.ScriptSnapshot.fromString(data);
|
|
this.snapshots[fileName] = snapshot;
|
|
this.versions[fileName] = (this.versions[fileName] || 0) + 1;
|
|
return snapshot;
|
|
}
|
|
|
|
public getScriptSnapshot(fileName: string): tsTypes.IScriptSnapshot | undefined
|
|
{
|
|
fileName = normalize(fileName);
|
|
|
|
if (_.has(this.snapshots, fileName))
|
|
return this.snapshots[fileName];
|
|
|
|
if (existsSync(fileName))
|
|
{
|
|
this.snapshots[fileName] = tsModule.ScriptSnapshot.fromString(tsModule.sys.readFile(fileName));
|
|
this.versions[fileName] = (this.versions[fileName] || 0) + 1;
|
|
return this.snapshots[fileName];
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
public getCurrentDirectory()
|
|
{
|
|
return this.cwd;
|
|
}
|
|
|
|
public getScriptVersion(fileName: string)
|
|
{
|
|
fileName = normalize(fileName);
|
|
|
|
return (this.versions[fileName] || 0).toString();
|
|
}
|
|
|
|
public getScriptFileNames()
|
|
{
|
|
return this.parsedConfig.fileNames;
|
|
}
|
|
|
|
public getCompilationSettings(): tsTypes.CompilerOptions
|
|
{
|
|
return this.parsedConfig.options;
|
|
}
|
|
|
|
public getDefaultLibFileName(opts: tsTypes.CompilerOptions)
|
|
{
|
|
return tsModule.getDefaultLibFilePath(opts);
|
|
}
|
|
|
|
public useCaseSensitiveFileNames(): boolean
|
|
{
|
|
return tsModule.sys.useCaseSensitiveFileNames;
|
|
}
|
|
|
|
public readDirectory(path: string, extensions?: string[], exclude?: string[], include?: string[]): string[]
|
|
{
|
|
return tsModule.sys.readDirectory(path, extensions, exclude, include);
|
|
}
|
|
|
|
public readFile(path: string, encoding?: string): string
|
|
{
|
|
return tsModule.sys.readFile(path, encoding);
|
|
}
|
|
|
|
public fileExists(path: string): boolean
|
|
{
|
|
return tsModule.sys.fileExists(path);
|
|
}
|
|
|
|
public getTypeRootsVersion(): number
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
public directoryExists(directoryName: string): boolean
|
|
{
|
|
return tsModule.sys.directoryExists(directoryName);
|
|
}
|
|
|
|
public getDirectories(directoryName: string): string[]
|
|
{
|
|
return tsModule.sys.getDirectories(directoryName);
|
|
}
|
|
}
|