refactor(ivy): make shim generation generic in ngtsc (#26495)
This commit refactors the shim host to be agnostic to the shims being generated, and provides an API for generating additional shims besides the .ngfactory.js. This will be used in a following commit to generate .ngsummary.js shims. Testing strategy: this refactor introduces no new behavior, so it's sufficient that the existing tests for factory shim generation continue to pass. PR Close #26495
This commit is contained in:

committed by
Alex Rickabaugh

parent
0b885ecaf7
commit
ce8053103e
@ -51,13 +51,17 @@ export class NgtscProgram implements api.Program {
|
||||
this.resourceLoader = host.readResource !== undefined ?
|
||||
new HostResourceLoader(host.readResource.bind(host)) :
|
||||
new FileResourceLoader();
|
||||
const shouldGenerateFactories = options.allowEmptyCodegenFiles || false;
|
||||
const shouldGenerateShims = options.allowEmptyCodegenFiles || false;
|
||||
this.host = host;
|
||||
let rootFiles = [...rootNames];
|
||||
if (shouldGenerateFactories) {
|
||||
const generator = new FactoryGenerator();
|
||||
const factoryFileMap = generator.computeFactoryFileMap(rootNames);
|
||||
rootFiles.push(...Array.from(factoryFileMap.keys()));
|
||||
if (shouldGenerateShims) {
|
||||
// Summary generation.
|
||||
|
||||
// Factory generation.
|
||||
const factoryGenerator = FactoryGenerator.forRootFiles(rootNames);
|
||||
const factoryFileMap = factoryGenerator.factoryFileMap;
|
||||
const factoryFileNames = Array.from(factoryFileMap.keys());
|
||||
rootFiles.push(...factoryFileNames);
|
||||
this.factoryToSourceInfo = new Map<string, FactoryInfo>();
|
||||
this.sourceToFactorySymbols = new Map<string, Set<string>>();
|
||||
factoryFileMap.forEach((sourceFilePath, factoryPath) => {
|
||||
@ -65,7 +69,7 @@ export class NgtscProgram implements api.Program {
|
||||
this.sourceToFactorySymbols !.set(sourceFilePath, moduleSymbolNames);
|
||||
this.factoryToSourceInfo !.set(factoryPath, {sourceFilePath, moduleSymbolNames});
|
||||
});
|
||||
this.host = new GeneratedShimsHostWrapper(host, generator, factoryFileMap);
|
||||
this.host = new GeneratedShimsHostWrapper(host, [factoryGenerator]);
|
||||
}
|
||||
|
||||
this.tsProgram =
|
||||
|
Reference in New Issue
Block a user