feat(ivy): create a ModuleResolver to map module paths to files (#27697)
PR Close #27697
This commit is contained in:
@ -8,4 +8,4 @@
|
||||
|
||||
export {ImportRewriter, NoopImportRewriter, R3SymbolsImportRewriter, validateAndRewriteCoreSymbol} from './src/core';
|
||||
export {AbsoluteReference, ImportMode, NodeReference, Reference, ResolvedReference} from './src/references';
|
||||
export {ReferenceResolver, TsReferenceResolver} from './src/resolver';
|
||||
export {ModuleResolver, ReferenceResolver, TsReferenceResolver} from './src/resolver';
|
||||
|
@ -17,6 +17,28 @@ export interface ReferenceResolver {
|
||||
Reference<ts.Declaration>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used by `RouterEntryPointManager` and `NgModuleRouteAnalyzer` (which is in turn is used by
|
||||
* `NgModuleDecoratorHandler`) for resolving the module source-files references in lazy-loaded
|
||||
* routes (relative to the source-file containing the `NgModule` that provides the route
|
||||
* definitions).
|
||||
*/
|
||||
export class ModuleResolver {
|
||||
constructor(
|
||||
private program: ts.Program, private compilerOptions: ts.CompilerOptions,
|
||||
private host: ts.CompilerHost) {}
|
||||
|
||||
resolveModuleName(module: string, containingFile: ts.SourceFile): ts.SourceFile|null {
|
||||
const resolved =
|
||||
ts.resolveModuleName(module, containingFile.fileName, this.compilerOptions, this.host)
|
||||
.resolvedModule;
|
||||
if (resolved === undefined) {
|
||||
return null;
|
||||
}
|
||||
return this.program.getSourceFile(resolved.resolvedFileName) || null;
|
||||
}
|
||||
}
|
||||
|
||||
export class TsReferenceResolver implements ReferenceResolver {
|
||||
private moduleExportsCache = new Map<string, Map<ts.Declaration, string>|null>();
|
||||
|
||||
|
Reference in New Issue
Block a user