feat(compiler-cli): introduce synchronous codegen API
This commit is contained in:
parent
269bbe0e7d
commit
b00b80a45b
|
@ -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 => {
|
||||
.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);
|
||||
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 {
|
||||
|
|
Loading…
Reference in New Issue