@@ -7,10 +7,18 @@ namespace ts {
77 return isExternalModule ( sourceFile ) || isDeclarationFile ( sourceFile ) ;
88 }
99
10- export function getModuleName ( host : EmitHost , file : SourceFile ) : string {
10+ export function getResolvedExternalModuleName ( host : EmitHost , file : SourceFile ) : string {
1111 return file . moduleName || getExternalModuleNameFromPath ( host , file . fileName ) ;
1212 }
1313
14+ export function getExternalModuleNameFromDeclaration ( host : EmitHost , resolver : EmitResolver , declaration : ImportEqualsDeclaration | ImportDeclaration | ExportDeclaration ) : string {
15+ let file = resolver . getExternalModuleFileFromDeclaration ( declaration ) ;
16+ if ( ! file || isDeclarationFile ( file ) ) {
17+ return undefined ;
18+ }
19+ return getResolvedExternalModuleName ( host , file ) ;
20+ }
21+
1422 type DependencyGroup = Array < ImportDeclaration | ImportEqualsDeclaration | ExportDeclaration > ;
1523
1624 let entities : Map < number > = {
@@ -553,15 +561,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
553561 /** If removeComments is true, no leading-comments needed to be emitted **/
554562 let emitLeadingCommentsOfPosition = compilerOptions . removeComments ? function ( pos : number ) { } : emitLeadingCommentsOfPositionWorker ;
555563
556- let moduleEmitDelegates : Map < ( node : SourceFile , resolveModuleNames ?: boolean ) => void > = {
564+ let moduleEmitDelegates : Map < ( node : SourceFile , emitRelativePathAsModuleName ?: boolean ) => void > = {
557565 [ ModuleKind . ES6 ] : emitES6Module ,
558566 [ ModuleKind . AMD ] : emitAMDModule ,
559567 [ ModuleKind . System ] : emitSystemModule ,
560568 [ ModuleKind . UMD ] : emitUMDModule ,
561569 [ ModuleKind . CommonJS ] : emitCommonJSModule ,
562570 } ;
563571
564- let bundleEmitDelegates : Map < ( node : SourceFile , resolveModuleNames ?: boolean ) => void > = {
572+ let bundleEmitDelegates : Map < ( node : SourceFile , emitRelativePathAsModuleName ?: boolean ) => void > = {
565573 [ ModuleKind . ES6 ] ( ) { } ,
566574 [ ModuleKind . AMD ] : emitAMDModule ,
567575 [ ModuleKind . System ] : emitSystemModule ,
@@ -7275,14 +7283,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
72757283 write ( "}" ) ; // execute
72767284 }
72777285
7278- function writeModuleName ( node : SourceFile , resolveModuleNames ?: boolean ) : void {
7286+ function writeModuleName ( node : SourceFile , emitRelativePathAsModuleName ?: boolean ) : void {
72797287 let moduleName = node . moduleName ;
7280- if ( moduleName || ( resolveModuleNames && ( moduleName = getModuleName ( host , node ) ) ) ) {
7288+ if ( moduleName || ( emitRelativePathAsModuleName && ( moduleName = getResolvedExternalModuleName ( host , node ) ) ) ) {
72817289 write ( `"${ moduleName } ", ` ) ;
72827290 }
72837291 }
72847292
7285- function emitSystemModule ( node : SourceFile , resolveModuleNames ?: boolean ) : void {
7293+ function emitSystemModule ( node : SourceFile , emitRelativePathAsModuleName ?: boolean ) : void {
72867294 collectExternalModuleInfo ( node ) ;
72877295 // System modules has the following shape
72887296 // System.register(['dep-1', ... 'dep-n'], function(exports) {/* module body function */})
@@ -7297,7 +7305,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
72977305 exportFunctionForFile = makeUniqueName ( "exports" ) ;
72987306 writeLine ( ) ;
72997307 write ( "System.register(" ) ;
7300- writeModuleName ( node , resolveModuleNames ) ;
7308+ writeModuleName ( node , emitRelativePathAsModuleName ) ;
73017309 write ( "[" ) ;
73027310
73037311 let groupIndices : Map < number > = { } ;
@@ -7320,8 +7328,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
73207328 write ( ", " ) ;
73217329 }
73227330
7323- if ( resolveModuleNames ) {
7324- let name = lookupSpecifierName ( externalImports [ i ] ) ;
7331+ if ( emitRelativePathAsModuleName ) {
7332+ let name = getExternalModuleNameFromDeclaration ( host , resolver , externalImports [ i ] ) ;
73257333 if ( name ) {
73267334 text = `"${ name } "` ;
73277335 }
@@ -7340,32 +7348,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
73407348 write ( "});" ) ;
73417349 }
73427350
7343- function lookupSpecifierName ( declaration : ImportEqualsDeclaration | ImportDeclaration | ExportDeclaration ) : string {
7344- let specifier : Node ;
7345- if ( declaration . kind === SyntaxKind . ImportEqualsDeclaration ) {
7346- specifier = ( declaration as ImportEqualsDeclaration ) . moduleReference ;
7347- }
7348- else {
7349- specifier = ( declaration as ImportDeclaration | ExportDeclaration ) . moduleSpecifier ;
7350- }
7351- let moduleSymbol = resolver . getSymbolAtLocation ( specifier ) ;
7352- if ( ! moduleSymbol ) {
7353- return undefined ;
7354- }
7355- let moduleDeclaration = getDeclarationOfKind ( moduleSymbol , SyntaxKind . SourceFile ) as SourceFile ;
7356- if ( ! moduleDeclaration || isDeclarationFile ( moduleDeclaration ) ) {
7357- return undefined ;
7358- }
7359- return getExternalModuleNameFromPath ( host , moduleDeclaration . fileName ) ;
7360- }
7361-
73627351 interface AMDDependencyNames {
73637352 aliasedModuleNames : string [ ] ;
73647353 unaliasedModuleNames : string [ ] ;
73657354 importAliasNames : string [ ] ;
73667355 }
73677356
7368- function getAMDDependencyNames ( node : SourceFile , includeNonAmdDependencies : boolean , resolveModuleNames ?: boolean ) : AMDDependencyNames {
7357+ function getAMDDependencyNames ( node : SourceFile , includeNonAmdDependencies : boolean , emitRelativePathAsModuleName ?: boolean ) : AMDDependencyNames {
73697358 // names of modules with corresponding parameter in the factory function
73707359 let aliasedModuleNames : string [ ] = [ ] ;
73717360 // names of modules with no corresponding parameters in factory function
@@ -7389,8 +7378,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
73897378 // Find the name of the external module
73907379 let externalModuleName = getExternalModuleNameText ( importNode ) ;
73917380
7392- if ( resolveModuleNames ) {
7393- let name = lookupSpecifierName ( importNode ) ;
7381+ if ( emitRelativePathAsModuleName ) {
7382+ let name = getExternalModuleNameFromDeclaration ( host , resolver , importNode ) ;
73947383 if ( name ) {
73957384 externalModuleName = `"${ name } "` ;
73967385 }
@@ -7410,7 +7399,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
74107399 return { aliasedModuleNames, unaliasedModuleNames, importAliasNames } ;
74117400 }
74127401
7413- function emitAMDDependencies ( node : SourceFile , includeNonAmdDependencies : boolean , resolveModuleNames ?: boolean ) {
7402+ function emitAMDDependencies ( node : SourceFile , includeNonAmdDependencies : boolean , emitRelativePathAsModuleName ?: boolean ) {
74147403 // An AMD define function has the following shape:
74157404 // define(id?, dependencies?, factory);
74167405 //
@@ -7423,7 +7412,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
74237412 // `import "module"` or `<amd-dependency path= "a.css" />`
74247413 // we need to add modules without alias names to the end of the dependencies list
74257414
7426- let dependencyNames = getAMDDependencyNames ( node , includeNonAmdDependencies , resolveModuleNames ) ;
7415+ let dependencyNames = getAMDDependencyNames ( node , includeNonAmdDependencies , emitRelativePathAsModuleName ) ;
74277416 emitAMDDependencyList ( dependencyNames ) ;
74287417 write ( ", " ) ;
74297418 emitAMDFactoryHeader ( dependencyNames ) ;
@@ -7451,14 +7440,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
74517440 write ( ") {" ) ;
74527441 }
74537442
7454- function emitAMDModule ( node : SourceFile , resolveModuleNames ?: boolean ) {
7443+ function emitAMDModule ( node : SourceFile , emitRelativePathAsModuleName ?: boolean ) {
74557444 emitEmitHelpers ( node ) ;
74567445 collectExternalModuleInfo ( node ) ;
74577446
74587447 writeLine ( ) ;
74597448 write ( "define(" ) ;
7460- writeModuleName ( node , resolveModuleNames ) ;
7461- emitAMDDependencies ( node , /*includeNonAmdDependencies*/ true , resolveModuleNames ) ;
7449+ writeModuleName ( node , emitRelativePathAsModuleName ) ;
7450+ emitAMDDependencies ( node , /*includeNonAmdDependencies*/ true , emitRelativePathAsModuleName ) ;
74627451 increaseIndent ( ) ;
74637452 let startIndex = emitDirectivePrologues ( node . statements , /*startWithNewLine*/ true ) ;
74647453 emitExportStarHelper ( ) ;
@@ -7712,7 +7701,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
77127701 emitModule ( node ) ;
77137702 }
77147703 else {
7715- bundleEmitDelegates [ modulekind ] ( node , /*resolveModuleNames */ true ) ;
7704+ bundleEmitDelegates [ modulekind ] ( node , /*emitRelativePathAsModuleName */ true ) ;
77167705 }
77177706 }
77187707 else {
0 commit comments