refactor(ivy): ngcc - simplify `Transformer.transform` API (#29092)
By ensuring that EntryPointBundle contains everything that `Transformer.transform()` needs to do its work, we can simplify its signature. PR Close #29092
This commit is contained in:
parent
7b55ba58b9
commit
c9f7cdaafd
|
@ -80,7 +80,7 @@ export function mainNgcc({baseSourcePath, targetEntryPointPath, propertiesToCons
|
||||||
compiledFormats.size === 0);
|
compiledFormats.size === 0);
|
||||||
if (bundle) {
|
if (bundle) {
|
||||||
console.warn(`Compiling ${entryPoint.name} : ${property} as ${format}`);
|
console.warn(`Compiling ${entryPoint.name} : ${property} as ${format}`);
|
||||||
transformer.transform(entryPoint, isCore, bundle);
|
transformer.transform(bundle);
|
||||||
compiledFormats.add(formatPath);
|
compiledFormats.add(formatPath);
|
||||||
} else {
|
} else {
|
||||||
console.warn(
|
console.warn(
|
||||||
|
|
|
@ -20,6 +20,7 @@ import {EntryPointFormat} from './entry_point';
|
||||||
*/
|
*/
|
||||||
export interface EntryPointBundle {
|
export interface EntryPointBundle {
|
||||||
format: EntryPointFormat;
|
format: EntryPointFormat;
|
||||||
|
isCore: boolean;
|
||||||
isFlatCore: boolean;
|
isFlatCore: boolean;
|
||||||
rootDirs: AbsoluteFsPath[];
|
rootDirs: AbsoluteFsPath[];
|
||||||
src: BundleProgram;
|
src: BundleProgram;
|
||||||
|
@ -56,5 +57,5 @@ export function makeEntryPointBundle(
|
||||||
null;
|
null;
|
||||||
const isFlatCore = isCore && src.r3SymbolsFile === null;
|
const isFlatCore = isCore && src.r3SymbolsFile === null;
|
||||||
|
|
||||||
return {format, rootDirs, isFlatCore, src, dts};
|
return {format, rootDirs, isCore, isFlatCore, src, dts};
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,8 @@ export class Transformer {
|
||||||
* Transform the source (and typings) files of a bundle.
|
* Transform the source (and typings) files of a bundle.
|
||||||
* @param bundle the bundle to transform.
|
* @param bundle the bundle to transform.
|
||||||
*/
|
*/
|
||||||
transform(entryPoint: EntryPoint, isCore: boolean, bundle: EntryPointBundle): void {
|
transform(bundle: EntryPointBundle): void {
|
||||||
|
const isCore = bundle.isCore;
|
||||||
const reflectionHost = this.getHost(isCore, bundle);
|
const reflectionHost = this.getHost(isCore, bundle);
|
||||||
|
|
||||||
// Parse and analyze the files.
|
// Parse and analyze the files.
|
||||||
|
|
|
@ -22,12 +22,13 @@ export {getDeclaration} from '../../../src/ngtsc/testing/in_memory_typescript';
|
||||||
* @param dtsFiles The typings files to include the bundle.
|
* @param dtsFiles The typings files to include the bundle.
|
||||||
*/
|
*/
|
||||||
export function makeTestEntryPointBundle(
|
export function makeTestEntryPointBundle(
|
||||||
format: EntryPointFormat, files: {name: string, contents: string, isRoot?: boolean}[],
|
format: EntryPointFormat, isCore: boolean,
|
||||||
|
files: {name: string, contents: string, isRoot?: boolean}[],
|
||||||
dtsFiles?: {name: string, contents: string, isRoot?: boolean}[]): EntryPointBundle {
|
dtsFiles?: {name: string, contents: string, isRoot?: boolean}[]): EntryPointBundle {
|
||||||
const src = makeTestBundleProgram(files);
|
const src = makeTestBundleProgram(files);
|
||||||
const dts = dtsFiles ? makeTestBundleProgram(dtsFiles) : null;
|
const dts = dtsFiles ? makeTestBundleProgram(dtsFiles) : null;
|
||||||
const isFlatCore = src.r3SymbolsFile === null;
|
const isFlatCore = isCore && src.r3SymbolsFile === null;
|
||||||
return {format, rootDirs: [AbsoluteFsPath.fromUnchecked('/')], src, dts, isFlatCore};
|
return {format, rootDirs: [AbsoluteFsPath.fromUnchecked('/')], src, dts, isCore, isFlatCore};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -18,7 +18,7 @@ import {makeTestEntryPointBundle} from '../helpers/utils';
|
||||||
|
|
||||||
function setup(file: {name: string, contents: string}) {
|
function setup(file: {name: string, contents: string}) {
|
||||||
const dir = dirname(file.name);
|
const dir = dirname(file.name);
|
||||||
const bundle = makeTestEntryPointBundle('esm2015', [file]) !;
|
const bundle = makeTestEntryPointBundle('esm2015', false, [file]) !;
|
||||||
const typeChecker = bundle.src.program.getTypeChecker();
|
const typeChecker = bundle.src.program.getTypeChecker();
|
||||||
const host = new Esm2015ReflectionHost(false, typeChecker);
|
const host = new Esm2015ReflectionHost(false, typeChecker);
|
||||||
const referencesRegistry = new NgccReferencesRegistry(host);
|
const referencesRegistry = new NgccReferencesRegistry(host);
|
||||||
|
|
|
@ -18,7 +18,7 @@ import {makeTestEntryPointBundle, getDeclaration} from '../helpers/utils';
|
||||||
|
|
||||||
function setup(file: {name: string, contents: string}) {
|
function setup(file: {name: string, contents: string}) {
|
||||||
const dir = dirname(file.name);
|
const dir = dirname(file.name);
|
||||||
const bundle = makeTestEntryPointBundle('esm5', [file]);
|
const bundle = makeTestEntryPointBundle('esm5', false, [file]);
|
||||||
const typeChecker = bundle.src.program.getTypeChecker();
|
const typeChecker = bundle.src.program.getTypeChecker();
|
||||||
const host = new Esm5ReflectionHost(false, typeChecker);
|
const host = new Esm5ReflectionHost(false, typeChecker);
|
||||||
const referencesRegistry = new NgccReferencesRegistry(host);
|
const referencesRegistry = new NgccReferencesRegistry(host);
|
||||||
|
|
|
@ -50,7 +50,7 @@ function createTestRenderer(
|
||||||
packageName: string, files: {name: string, contents: string}[],
|
packageName: string, files: {name: string, contents: string}[],
|
||||||
dtsFiles?: {name: string, contents: string}[]) {
|
dtsFiles?: {name: string, contents: string}[]) {
|
||||||
const isCore = packageName === '@angular/core';
|
const isCore = packageName === '@angular/core';
|
||||||
const bundle = makeTestEntryPointBundle('esm2015', files, dtsFiles);
|
const bundle = makeTestEntryPointBundle('esm2015', isCore, files, dtsFiles);
|
||||||
const typeChecker = bundle.src.program.getTypeChecker();
|
const typeChecker = bundle.src.program.getTypeChecker();
|
||||||
const host = new Esm2015ReflectionHost(isCore, typeChecker, bundle.dts);
|
const host = new Esm2015ReflectionHost(isCore, typeChecker, bundle.dts);
|
||||||
const referencesRegistry = new NgccReferencesRegistry(host);
|
const referencesRegistry = new NgccReferencesRegistry(host);
|
||||||
|
|
Loading…
Reference in New Issue