diff --git a/packages/compiler-cli/ngcc/src/dependencies/dependency_resolver.ts b/packages/compiler-cli/ngcc/src/dependencies/dependency_resolver.ts index ba622623f5..8b13de349b 100644 --- a/packages/compiler-cli/ngcc/src/dependencies/dependency_resolver.ts +++ b/packages/compiler-cli/ngcc/src/dependencies/dependency_resolver.ts @@ -82,7 +82,8 @@ export interface SortedEntryPointsInfo extends DependencyDiagnostics { export class DependencyResolver { constructor( private fs: FileSystem, private logger: Logger, - private hosts: Partial>) {} + private hosts: Partial>, + private typingsHost: DependencyHost) {} /** * Sort the array of entry points so that the dependant entry points always come later than * their dependencies in the array. @@ -125,6 +126,7 @@ export class DependencyResolver { } const depInfo = createDependencyInfo(); host.collectDependencies(formatInfo.path, depInfo); + this.typingsHost.collectDependencies(entryPoint.typings, depInfo); return depInfo; } diff --git a/packages/compiler-cli/ngcc/src/main.ts b/packages/compiler-cli/ngcc/src/main.ts index 5d6f232635..406ebadb96 100644 --- a/packages/compiler-cli/ngcc/src/main.ts +++ b/packages/compiler-cli/ngcc/src/main.ts @@ -35,7 +35,7 @@ import {NgccConfiguration} from './packages/configuration'; import {EntryPoint, EntryPointJsonProperty, EntryPointPackageJson, SUPPORTED_FORMAT_PROPERTIES, getEntryPointFormat} from './packages/entry_point'; import {makeEntryPointBundle} from './packages/entry_point_bundle'; import {Transformer} from './packages/transformer'; -import {PathMappings} from './utils'; +import {PathMappings, createDtsDependencyHost} from './utils'; import {FileWriter} from './writing/file_writer'; import {InPlaceFileWriter} from './writing/in_place_file_writer'; import {NewEntryPointFileWriter} from './writing/new_entry_point_file_writer'; @@ -164,12 +164,15 @@ export function mainNgcc( const esmDependencyHost = new EsmDependencyHost(fileSystem, moduleResolver); const umdDependencyHost = new UmdDependencyHost(fileSystem, moduleResolver); const commonJsDependencyHost = new CommonJsDependencyHost(fileSystem, moduleResolver); - const dependencyResolver = new DependencyResolver(fileSystem, logger, { - esm5: esmDependencyHost, - esm2015: esmDependencyHost, - umd: umdDependencyHost, - commonjs: commonJsDependencyHost - }); + const dtsDependencyHost = createDtsDependencyHost(fileSystem, pathMappings); + const dependencyResolver = new DependencyResolver( + fileSystem, logger, { + esm5: esmDependencyHost, + esm2015: esmDependencyHost, + umd: umdDependencyHost, + commonjs: commonJsDependencyHost + }, + dtsDependencyHost); const absBasePath = absoluteFrom(basePath); const config = new NgccConfiguration(fileSystem, dirname(absBasePath)); diff --git a/packages/compiler-cli/ngcc/src/utils.ts b/packages/compiler-cli/ngcc/src/utils.ts index de9f66bb70..929dffa02b 100644 --- a/packages/compiler-cli/ngcc/src/utils.ts +++ b/packages/compiler-cli/ngcc/src/utils.ts @@ -7,6 +7,8 @@ */ import * as ts from 'typescript'; import {AbsoluteFsPath, FileSystem, absoluteFrom} from '../../src/ngtsc/file_system'; +import {EsmDependencyHost} from './dependencies/esm_dependency_host'; +import {ModuleResolver} from './dependencies/module_resolver'; /** * A list (`Array`) of partially ordered `T` items. @@ -119,3 +121,8 @@ export function stripDollarSuffix(value: string): string { export function stripExtension(fileName: string): string { return fileName.replace(/\..+$/, ''); } + +export function createDtsDependencyHost(fileSystem: FileSystem, pathMappings?: PathMappings) { + return new EsmDependencyHost( + fileSystem, new ModuleResolver(fileSystem, pathMappings, ['', '.d.ts', '/index.d.ts'])); +} \ No newline at end of file diff --git a/packages/compiler-cli/ngcc/test/dependencies/dependency_resolver_spec.ts b/packages/compiler-cli/ngcc/test/dependencies/dependency_resolver_spec.ts index 63242be203..ad45161a9a 100644 --- a/packages/compiler-cli/ngcc/test/dependencies/dependency_resolver_spec.ts +++ b/packages/compiler-cli/ngcc/test/dependencies/dependency_resolver_spec.ts @@ -15,6 +15,7 @@ import {DependencyResolver, SortedEntryPointsInfo} from '../../src/dependencies/ import {EsmDependencyHost} from '../../src/dependencies/esm_dependency_host'; import {ModuleResolver} from '../../src/dependencies/module_resolver'; import {EntryPoint} from '../../src/packages/entry_point'; +import {createDtsDependencyHost} from '../../src/utils'; import {MockLogger} from '../helpers/mock_logger'; @@ -26,6 +27,7 @@ runInEachFileSystem(() => { describe('DependencyResolver', () => { let _: typeof absoluteFrom; let host: EsmDependencyHost; + let dtsHost: EsmDependencyHost; let resolver: DependencyResolver; let fs: FileSystem; let moduleResolver: ModuleResolver; @@ -35,7 +37,8 @@ runInEachFileSystem(() => { fs = getFileSystem(); moduleResolver = new ModuleResolver(fs); host = new EsmDependencyHost(fs, moduleResolver); - resolver = new DependencyResolver(fs, new MockLogger(), {esm5: host, esm2015: host}); + dtsHost = createDtsDependencyHost(fs); + resolver = new DependencyResolver(fs, new MockLogger(), {esm5: host, esm2015: host}, dtsHost); }); describe('sortEntryPointsByDependency()', () => { @@ -46,6 +49,7 @@ runInEachFileSystem(() => { let fifth: EntryPoint; let sixthIgnoreMissing: EntryPoint; let dependencies: DepMap; + let dtsDependencies: DepMap; beforeEach(() => { first = { @@ -53,30 +57,35 @@ runInEachFileSystem(() => { packageJson: {esm5: './index.js'}, compiledByAngular: true, ignoreMissingDependencies: false, + typings: _('/first/index.d.ts'), } as EntryPoint; second = { path: _('/second'), packageJson: {esm2015: './sub/index.js'}, compiledByAngular: true, ignoreMissingDependencies: false, + typings: _('/second/sub/index.d.ts'), } as EntryPoint; third = { path: _('/third'), packageJson: {fesm5: './index.js'}, compiledByAngular: true, ignoreMissingDependencies: false, + typings: _('/third/index.d.ts'), } as EntryPoint; fourth = { path: _('/fourth'), packageJson: {fesm2015: './sub2/index.js'}, compiledByAngular: true, ignoreMissingDependencies: false, + typings: _('/fourth/sub2/index.d.ts'), } as EntryPoint; fifth = { path: _('/fifth'), packageJson: {module: './index.js'}, compiledByAngular: true, ignoreMissingDependencies: false, + typings: _('/fifth/index.d.ts'), } as EntryPoint; sixthIgnoreMissing = { @@ -84,6 +93,7 @@ runInEachFileSystem(() => { packageJson: {module: './index.js'}, compiledByAngular: true, ignoreMissingDependencies: true, + typings: _('/sixth/index.d.ts'), } as EntryPoint; dependencies = { @@ -94,11 +104,21 @@ runInEachFileSystem(() => { [_('/fourth/sub2/index.js')]: {resolved: [fifth.path], missing: []}, [_('/fifth/index.js')]: {resolved: [], missing: []}, }; + dtsDependencies = { + [_('/first/index.d.ts')]: + {resolved: [second.path, third.path, _('/ignored-1')], missing: []}, + [_('/second/sub/index.d.ts')]: {resolved: [third.path, fifth.path], missing: []}, + [_('/third/index.d.ts')]: {resolved: [fourth.path, _('/ignored-2')], missing: []}, + [_('/fourth/sub2/index.d.ts')]: {resolved: [fifth.path], missing: []}, + [_('/fifth/index.d.ts')]: {resolved: [], missing: []}, + }; }); it('should order the entry points by their dependency on each other', () => { spyOn(host, 'collectDependencies') .and.callFake(createFakeComputeDependencies(dependencies)); + spyOn(dtsHost, 'collectDependencies') + .and.callFake(createFakeComputeDependencies(dtsDependencies)); const result = resolver.sortEntryPointsByDependency([fifth, first, fourth, second, third]); expect(result.entryPoints).toEqual([fifth, fourth, third, second, first]); }); @@ -108,6 +128,10 @@ runInEachFileSystem(() => { [_('/first/index.js')]: {resolved: [], missing: [_('/missing')]}, [_('/second/sub/index.js')]: {resolved: [], missing: []}, })); + spyOn(dtsHost, 'collectDependencies').and.callFake(createFakeComputeDependencies({ + [_('/first/index.d.ts')]: {resolved: [], missing: [_('/missing')]}, + [_('/second/sub/index.d.ts')]: {resolved: [], missing: []}, + })); const result = resolver.sortEntryPointsByDependency([first, second]); expect(result.entryPoints).toEqual([second]); expect(result.invalidEntryPoints).toEqual([ @@ -121,6 +145,11 @@ runInEachFileSystem(() => { [_('/second/sub/index.js')]: {resolved: [], missing: [_('/missing')]}, [_('/third/index.js')]: {resolved: [], missing: []}, })); + spyOn(dtsHost, 'collectDependencies').and.callFake(createFakeComputeDependencies({ + [_('/first/index.d.ts')]: {resolved: [second.path, third.path], missing: []}, + [_('/second/sub/index.d.ts')]: {resolved: [], missing: [_('/missing')]}, + [_('/third/index.d.ts')]: {resolved: [], missing: []}, + })); // Note that we will process `first` before `second`, which has the missing dependency. const result = resolver.sortEntryPointsByDependency([first, second, third]); expect(result.entryPoints).toEqual([third]); @@ -136,6 +165,11 @@ runInEachFileSystem(() => { [_('/second/sub/index.js')]: {resolved: [], missing: [_('/missing')]}, [_('/third/index.js')]: {resolved: [], missing: []}, })); + spyOn(dtsHost, 'collectDependencies').and.callFake(createFakeComputeDependencies({ + [_('/first/index.d.ts')]: {resolved: [second.path, third.path], missing: []}, + [_('/second/sub/index.d.ts')]: {resolved: [], missing: [_('/missing')]}, + [_('/third/index.d.ts')]: {resolved: [], missing: []}, + })); // Note that we will process `first` after `second`, which has the missing dependency. const result = resolver.sortEntryPointsByDependency([second, first, third]); expect(result.entryPoints).toEqual([third]); @@ -151,6 +185,10 @@ runInEachFileSystem(() => { [_('/first/index.js')]: {resolved: [sixthIgnoreMissing.path], missing: []}, [_('/sixth/index.js')]: {resolved: [], missing: [_('/missing')]}, })); + spyOn(dtsHost, 'collectDependencies').and.callFake(createFakeComputeDependencies({ + [_('/first/index.d.ts')]: {resolved: [sixthIgnoreMissing.path], missing: []}, + [_('/sixth/index.d.ts')]: {resolved: [], missing: [_('/missing')]}, + })); // Note that we will process `first` after `second`, which has the missing dependency. const result = resolver.sortEntryPointsByDependency([sixthIgnoreMissing, first]); expect(result.entryPoints).toEqual([sixthIgnoreMissing, first]); @@ -163,6 +201,11 @@ runInEachFileSystem(() => { [_('/second/sub/index.js')]: {resolved: [first.path], missing: []}, [_('/sixth/index.js')]: {resolved: [second.path], missing: []}, })); + spyOn(dtsHost, 'collectDependencies').and.callFake(createFakeComputeDependencies({ + [_('/first/index.d.ts')]: {resolved: [], missing: [_('/missing')]}, + [_('/second/sub/index.d.ts')]: {resolved: [first.path], missing: []}, + [_('/sixth/index.d.ts')]: {resolved: [second.path], missing: []}, + })); const result = resolver.sortEntryPointsByDependency([first, second, sixthIgnoreMissing]); // sixth has no missing dependencies, but it has _invalid_ dependencies, so it's not // compiled. @@ -175,6 +218,11 @@ runInEachFileSystem(() => { [_('/second/sub/index.js')]: {resolved: [], missing: [_('/missing2')]}, [_('/third/index.js')]: {resolved: [first.path, second.path], missing: []}, })); + spyOn(dtsHost, 'collectDependencies').and.callFake(createFakeComputeDependencies({ + [_('/first/index.d.ts')]: {resolved: [], missing: [_('/missing1')]}, + [_('/second/sub/index.d.ts')]: {resolved: [], missing: [_('/missing2')]}, + [_('/third/index.d.ts')]: {resolved: [first.path, second.path], missing: []}, + })); const result = resolver.sortEntryPointsByDependency([first, second, third]); expect(result.entryPoints).toEqual([]); expect(result.invalidEntryPoints).toEqual([ @@ -191,7 +239,7 @@ runInEachFileSystem(() => { }); it('should error if there is no appropriate DependencyHost for the given formats', () => { - resolver = new DependencyResolver(fs, new MockLogger(), {esm2015: host}); + resolver = new DependencyResolver(fs, new MockLogger(), {esm2015: host}, host); expect(() => resolver.sortEntryPointsByDependency([first])) .toThrowError( `Could not find a suitable format for computing dependencies of entry-point: '${first.path}'.`); @@ -200,6 +248,8 @@ runInEachFileSystem(() => { it('should capture any dependencies that were ignored', () => { spyOn(host, 'collectDependencies') .and.callFake(createFakeComputeDependencies(dependencies)); + spyOn(dtsHost, 'collectDependencies') + .and.callFake(createFakeComputeDependencies(dtsDependencies)); const result = resolver.sortEntryPointsByDependency([fifth, first, fourth, second, third]); expect(result.ignoredDependencies).toEqual([ {entryPoint: first, dependencyPath: _('/ignored-1')}, @@ -210,6 +260,8 @@ runInEachFileSystem(() => { it('should return the computed dependency graph', () => { spyOn(host, 'collectDependencies') .and.callFake(createFakeComputeDependencies(dependencies)); + spyOn(dtsHost, 'collectDependencies') + .and.callFake(createFakeComputeDependencies(dtsDependencies)); const result = resolver.sortEntryPointsByDependency([fifth, first, fourth, second, third]); expect(result.graph).toEqual(jasmine.any(DepGraph)); @@ -220,6 +272,8 @@ runInEachFileSystem(() => { it('should only return dependencies of the target, if provided', () => { spyOn(host, 'collectDependencies') .and.callFake(createFakeComputeDependencies(dependencies)); + spyOn(dtsHost, 'collectDependencies') + .and.callFake(createFakeComputeDependencies(dtsDependencies)); const entryPoints = [fifth, first, fourth, second, third]; let sorted: SortedEntryPointsInfo; @@ -239,6 +293,9 @@ runInEachFileSystem(() => { spyOn(host, 'collectDependencies').and.callFake(createFakeComputeDependencies({ [_('/first/index.js')]: {resolved: [], missing: [_('/missing')]}, })); + spyOn(dtsHost, 'collectDependencies').and.callFake(createFakeComputeDependencies({ + [_('/first/index.d.ts')]: {resolved: [], missing: [_('/missing')]}, + })); const entryPoints = [first]; let sorted: SortedEntryPointsInfo; @@ -252,6 +309,9 @@ runInEachFileSystem(() => { spyOn(host, 'collectDependencies').and.callFake(createFakeComputeDependencies({ [_('/first/index.js')]: {resolved: [], missing: ['fs']}, })); + spyOn(dtsHost, 'collectDependencies').and.callFake(createFakeComputeDependencies({ + [_('/first/index.d.ts')]: {resolved: [], missing: ['fs']}, + })); const entryPoints = [first]; let sorted: SortedEntryPointsInfo; @@ -264,12 +324,15 @@ runInEachFileSystem(() => { it('should use the appropriate DependencyHost for each entry-point', () => { const esm5Host = new EsmDependencyHost(fs, moduleResolver); const esm2015Host = new EsmDependencyHost(fs, moduleResolver); - resolver = - new DependencyResolver(fs, new MockLogger(), {esm5: esm5Host, esm2015: esm2015Host}); + const dtsHost = createDtsDependencyHost(fs); + resolver = new DependencyResolver( + fs, new MockLogger(), {esm5: esm5Host, esm2015: esm2015Host}, dtsHost); spyOn(esm5Host, 'collectDependencies') .and.callFake(createFakeComputeDependencies(dependencies)); spyOn(esm2015Host, 'collectDependencies') .and.callFake(createFakeComputeDependencies(dependencies)); + spyOn(dtsHost, 'collectDependencies') + .and.callFake(createFakeComputeDependencies(dtsDependencies)); const result = resolver.sortEntryPointsByDependency([fifth, first, fourth, second, third]); expect(result.entryPoints).toEqual([fifth, fourth, third, second, first]); @@ -295,6 +358,37 @@ runInEachFileSystem(() => { .toHaveBeenCalledWith(fs.resolve(fourth.path, 'sub2/index.js'), jasmine.any(Object)); expect(esm2015Host.collectDependencies) .not.toHaveBeenCalledWith(fs.resolve(fifth.path, 'index.js'), jasmine.any(Object)); + + expect(dtsHost.collectDependencies) + .toHaveBeenCalledWith(fs.resolve(first.path, 'index.d.ts'), jasmine.any(Object)); + expect(dtsHost.collectDependencies) + .toHaveBeenCalledWith(fs.resolve(second.path, 'sub/index.d.ts'), jasmine.any(Object)); + expect(dtsHost.collectDependencies) + .toHaveBeenCalledWith(fs.resolve(third.path, 'index.d.ts'), jasmine.any(Object)); + expect(dtsHost.collectDependencies) + .toHaveBeenCalledWith(fs.resolve(fourth.path, 'sub2/index.d.ts'), jasmine.any(Object)); + expect(dtsHost.collectDependencies) + .toHaveBeenCalledWith(fs.resolve(fifth.path, 'index.d.ts'), jasmine.any(Object)); + }); + + it('should merge "typings-only" dependencies with source dependencies', () => { + spyOn(host, 'collectDependencies').and.callFake(createFakeComputeDependencies({ + [_('/first/index.js')]: {resolved: [], missing: []}, + [_('/second/sub/index.js')]: {resolved: [], missing: [_('/missing1')]}, + [_('/third/index.js')]: {resolved: [first.path], missing: []}, + })); + spyOn(dtsHost, 'collectDependencies').and.callFake(createFakeComputeDependencies({ + [_('/first/index.d.ts')]: {resolved: [], missing: []}, + [_('/second/sub/index.d.ts')]: {resolved: [], missing: [_('/missing2')]}, + [_('/third/index.d.ts')]: {resolved: [second.path], missing: []}, + })); + const entryPoints = [first, second, third]; + const sorted = resolver.sortEntryPointsByDependency(entryPoints); + expect(sorted.entryPoints).toEqual([first]); + expect(sorted.invalidEntryPoints).toEqual([ + {entryPoint: second, missingDependencies: [_('/missing1'), _('/missing2')]}, + {entryPoint: third, missingDependencies: [_('/second')]}, + ]); }); function createFakeComputeDependencies(deps: DepMap) { diff --git a/packages/compiler-cli/ngcc/test/dependencies/esm_dependency_host_spec.ts b/packages/compiler-cli/ngcc/test/dependencies/esm_dependency_host_spec.ts index 4a272abe25..264feb867c 100644 --- a/packages/compiler-cli/ngcc/test/dependencies/esm_dependency_host_spec.ts +++ b/packages/compiler-cli/ngcc/test/dependencies/esm_dependency_host_spec.ts @@ -13,6 +13,7 @@ import {loadTestFiles} from '../../../test/helpers'; import {createDependencyInfo} from '../../src/dependencies/dependency_host'; import {EsmDependencyHost, hasImportOrReexportStatements, isStringImportOrReexport} from '../../src/dependencies/esm_dependency_host'; import {ModuleResolver} from '../../src/dependencies/module_resolver'; +import {createDtsDependencyHost} from '../../src/utils'; runInEachFileSystem(() => { @@ -159,8 +160,7 @@ runInEachFileSystem(() => { expect(jsDeps.missing.has(relativeFrom('./internal-typings'))).toBeTruthy(); // Typings mode will pick up `internal-typings.d.ts` dependency - const dtsHost = new EsmDependencyHost( - fs, new ModuleResolver(fs, undefined, ['', '.d.ts', 'index.d.ts'])); + const dtsHost = createDtsDependencyHost(fs); const dtsDeps = createDependencyInfo(); dtsHost.collectDependencies(_('/external/index.d.ts'), dtsDeps); expect(dtsDeps.dependencies.size).toEqual(2); diff --git a/packages/compiler-cli/ngcc/test/entry_point_finder/directory_walker_entry_point_finder_spec.ts b/packages/compiler-cli/ngcc/test/entry_point_finder/directory_walker_entry_point_finder_spec.ts index bcf79801b3..326fd31b0e 100644 --- a/packages/compiler-cli/ngcc/test/entry_point_finder/directory_walker_entry_point_finder_spec.ts +++ b/packages/compiler-cli/ngcc/test/entry_point_finder/directory_walker_entry_point_finder_spec.ts @@ -14,7 +14,7 @@ import {ModuleResolver} from '../../src/dependencies/module_resolver'; import {DirectoryWalkerEntryPointFinder} from '../../src/entry_point_finder/directory_walker_entry_point_finder'; import {NgccConfiguration} from '../../src/packages/configuration'; import {EntryPoint} from '../../src/packages/entry_point'; -import {PathMappings} from '../../src/utils'; +import {PathMappings, createDtsDependencyHost} from '../../src/utils'; import {MockLogger} from '../helpers/mock_logger'; runInEachFileSystem(() => { @@ -29,8 +29,9 @@ runInEachFileSystem(() => { fs = getFileSystem(); _Abs = absoluteFrom; logger = new MockLogger(); - resolver = new DependencyResolver( - fs, logger, {esm2015: new EsmDependencyHost(fs, new ModuleResolver(fs))}); + const srcHost = new EsmDependencyHost(fs, new ModuleResolver(fs)); + const dtsHost = createDtsDependencyHost(fs); + resolver = new DependencyResolver(fs, logger, {esm2015: srcHost}, dtsHost); config = new NgccConfiguration(fs, _Abs('/')); }); @@ -152,8 +153,9 @@ runInEachFileSystem(() => { ...createPackage(_Abs('/path_mapped/dist/pkg2/node_modules'), 'pkg4'), ...createPackage(_Abs('/path_mapped/dist/lib/pkg3'), 'test'), ]); - resolver = new DependencyResolver( - fs, logger, {esm2015: new EsmDependencyHost(fs, new ModuleResolver(fs, pathMappings))}); + const srcHost = new EsmDependencyHost(fs, new ModuleResolver(fs, pathMappings)); + const dtsHost = createDtsDependencyHost(fs, pathMappings); + resolver = new DependencyResolver(fs, logger, {esm2015: srcHost}, dtsHost); const finder = new DirectoryWalkerEntryPointFinder( fs, config, logger, resolver, basePath, pathMappings); const {entryPoints} = finder.findEntryPoints(); @@ -179,8 +181,9 @@ runInEachFileSystem(() => { ...createPackage(_Abs('/path_mapped/node_modules'), 'test', []), ...createPackage(_Abs('/path_mapped/dist'), 'pkg2'), ]); - resolver = new DependencyResolver( - fs, logger, {esm2015: new EsmDependencyHost(fs, new ModuleResolver(fs, pathMappings))}); + const srcHost = new EsmDependencyHost(fs, new ModuleResolver(fs, pathMappings)); + const dtsHost = createDtsDependencyHost(fs, pathMappings); + resolver = new DependencyResolver(fs, logger, {esm2015: srcHost}, dtsHost); const finder = new DirectoryWalkerEntryPointFinder( fs, config, logger, resolver, basePath, pathMappings); const {entryPoints} = finder.findEntryPoints(); diff --git a/packages/compiler-cli/ngcc/test/entry_point_finder/targeted_entry_point_finder_spec.ts b/packages/compiler-cli/ngcc/test/entry_point_finder/targeted_entry_point_finder_spec.ts index 73798eb746..3ef500f872 100644 --- a/packages/compiler-cli/ngcc/test/entry_point_finder/targeted_entry_point_finder_spec.ts +++ b/packages/compiler-cli/ngcc/test/entry_point_finder/targeted_entry_point_finder_spec.ts @@ -14,7 +14,7 @@ import {ModuleResolver} from '../../src/dependencies/module_resolver'; import {TargetedEntryPointFinder} from '../../src/entry_point_finder/targeted_entry_point_finder'; import {NgccConfiguration} from '../../src/packages/configuration'; import {EntryPoint} from '../../src/packages/entry_point'; -import {PathMappings} from '../../src/utils'; +import {PathMappings, createDtsDependencyHost} from '../../src/utils'; import {MockLogger} from '../helpers/mock_logger'; runInEachFileSystem(() => { @@ -29,8 +29,9 @@ runInEachFileSystem(() => { fs = getFileSystem(); _Abs = absoluteFrom; logger = new MockLogger(); - resolver = new DependencyResolver( - fs, logger, {esm2015: new EsmDependencyHost(fs, new ModuleResolver(fs))}); + const srcHost = new EsmDependencyHost(fs, new ModuleResolver(fs)); + const dtsHost = createDtsDependencyHost(fs); + resolver = new DependencyResolver(fs, logger, {esm2015: srcHost}, dtsHost); config = new NgccConfiguration(fs, _Abs('/')); }); @@ -184,8 +185,9 @@ runInEachFileSystem(() => { ...createPackage(_Abs('/path_mapped/dist/lib/pkg3'), 'test'), ...createPackage(_Abs('/path_mapped/dist'), 'pkg5'), ]); - resolver = new DependencyResolver( - fs, logger, {esm2015: new EsmDependencyHost(fs, new ModuleResolver(fs, pathMappings))}); + const srcHost = new EsmDependencyHost(fs, new ModuleResolver(fs, pathMappings)); + const dtsHost = createDtsDependencyHost(fs, pathMappings); + resolver = new DependencyResolver(fs, logger, {esm2015: srcHost}, dtsHost); const finder = new TargetedEntryPointFinder( fs, config, logger, resolver, basePath, targetPath, pathMappings); const {entryPoints} = finder.findEntryPoints(); @@ -213,8 +215,9 @@ runInEachFileSystem(() => { ...createPackage(_Abs('/path_mapped/node_modules'), 'test', []), ...createPackage(_Abs('/path_mapped/dist'), 'pkg2'), ]); - resolver = new DependencyResolver( - fs, logger, {esm2015: new EsmDependencyHost(fs, new ModuleResolver(fs, pathMappings))}); + const srcHost = new EsmDependencyHost(fs, new ModuleResolver(fs, pathMappings)); + const dtsHost = createDtsDependencyHost(fs, pathMappings); + resolver = new DependencyResolver(fs, logger, {esm2015: srcHost}, dtsHost); const finder = new TargetedEntryPointFinder( fs, config, logger, resolver, basePath, targetPath, pathMappings); const {entryPoints} = finder.findEntryPoints();