Permalink
Browse files

feat(compiler-cli): introduce synchronous codegen API

  • Loading branch information...
alexeagle authored and alxhub committed Jun 5, 2017
1 parent 269bbe0 commit b00b80a45bd78b5fc5f695ccfc41d15f48dbde6d
@@ -40,17 +40,24 @@ export class CodeGenerator {
return this.compiler
.analyzeModulesAsync(this.program.getSourceFiles().map(
sf => this.ngCompilerHost.getCanonicalFileName(sf.fileName)))
.then(analyzedModules => this.compiler.emitAllImpls(analyzedModules))
.then(generatedModules => {
return generatedModules.map(generatedModule => {
const sourceFile = this.program.getSourceFile(generatedModule.srcFileUrl);
const emitPath = this.ngCompilerHost.calculateEmitPath(generatedModule.genFileUrl);
const source =
generatedModule.source || compiler.toTypeScript(generatedModule, PREAMBLE);
this.host.writeFile(emitPath, source, false, () => {}, [sourceFile]);
return emitPath;
});
});
.then(analyzedModules => this.emit(analyzedModules));
}
codegenSync(): string[] {
const analyzed = this.compiler.analyzeModulesSync(this.program.getSourceFiles().map(
sf => this.ngCompilerHost.getCanonicalFileName(sf.fileName)));
return this.emit(analyzed);
}
private emit(analyzedModules: compiler.NgAnalyzedModules) {
const generatedModules = this.compiler.emitAllImpls(analyzedModules);
return generatedModules.map(generatedModule => {
const sourceFile = this.program.getSourceFile(generatedModule.srcFileUrl);
const emitPath = this.ngCompilerHost.calculateEmitPath(generatedModule.genFileUrl);
const source = generatedModule.source || compiler.toTypeScript(generatedModule, PREAMBLE);
this.host.writeFile(emitPath, source, false, () => {}, [sourceFile]);
return emitPath;
});
}
static create(
@@ -258,7 +258,9 @@ export class CompilerHost implements AotCompilerHost {
return v3Metadata;
}
loadResource(filePath: string): Promise<string> { return this.context.readResource(filePath); }
loadResource(filePath: string): Promise<string>|string {
return this.context.readResource(filePath);
}
loadSummary(filePath: string): string|null {
if (this.context.fileExists(filePath)) {
@@ -41,7 +41,7 @@ export interface ExtractorHost extends StaticSymbolResolverHost, AotSummaryResol
/**
* Loads a resource (e.g. html / css)
*/
loadResource(path: string): Promise<string>;
loadResource(path: string): Promise<string>|string;
}
export class Extractor {

0 comments on commit b00b80a

Please sign in to comment.