@@ -7,10 +7,18 @@ namespace ts {
7
7
return isExternalModule ( sourceFile ) || isDeclarationFile ( sourceFile ) ;
8
8
}
9
9
10
- export function getModuleName ( host : EmitHost , file : SourceFile ) : string {
10
+ export function getResolvedExternalModuleName ( host : EmitHost , file : SourceFile ) : string {
11
11
return file . moduleName || getExternalModuleNameFromPath ( host , file . fileName ) ;
12
12
}
13
13
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
+
14
22
type DependencyGroup = Array < ImportDeclaration | ImportEqualsDeclaration | ExportDeclaration > ;
15
23
16
24
let entities : Map < number > = {
@@ -553,15 +561,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
553
561
/** If removeComments is true, no leading-comments needed to be emitted **/
554
562
let emitLeadingCommentsOfPosition = compilerOptions . removeComments ? function ( pos : number ) { } : emitLeadingCommentsOfPositionWorker ;
555
563
556
- let moduleEmitDelegates : Map < ( node : SourceFile , resolveModuleNames ?: boolean ) => void > = {
564
+ let moduleEmitDelegates : Map < ( node : SourceFile , emitRelativePathAsModuleName ?: boolean ) => void > = {
557
565
[ ModuleKind . ES6 ] : emitES6Module ,
558
566
[ ModuleKind . AMD ] : emitAMDModule ,
559
567
[ ModuleKind . System ] : emitSystemModule ,
560
568
[ ModuleKind . UMD ] : emitUMDModule ,
561
569
[ ModuleKind . CommonJS ] : emitCommonJSModule ,
562
570
} ;
563
571
564
- let bundleEmitDelegates : Map < ( node : SourceFile , resolveModuleNames ?: boolean ) => void > = {
572
+ let bundleEmitDelegates : Map < ( node : SourceFile , emitRelativePathAsModuleName ?: boolean ) => void > = {
565
573
[ ModuleKind . ES6 ] ( ) { } ,
566
574
[ ModuleKind . AMD ] : emitAMDModule ,
567
575
[ ModuleKind . System ] : emitSystemModule ,
@@ -7275,14 +7283,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
7275
7283
write ( "}" ) ; // execute
7276
7284
}
7277
7285
7278
- function writeModuleName ( node : SourceFile , resolveModuleNames ?: boolean ) : void {
7286
+ function writeModuleName ( node : SourceFile , emitRelativePathAsModuleName ?: boolean ) : void {
7279
7287
let moduleName = node . moduleName ;
7280
- if ( moduleName || ( resolveModuleNames && ( moduleName = getModuleName ( host , node ) ) ) ) {
7288
+ if ( moduleName || ( emitRelativePathAsModuleName && ( moduleName = getResolvedExternalModuleName ( host , node ) ) ) ) {
7281
7289
write ( `"${ moduleName } ", ` ) ;
7282
7290
}
7283
7291
}
7284
7292
7285
- function emitSystemModule ( node : SourceFile , resolveModuleNames ?: boolean ) : void {
7293
+ function emitSystemModule ( node : SourceFile , emitRelativePathAsModuleName ?: boolean ) : void {
7286
7294
collectExternalModuleInfo ( node ) ;
7287
7295
// System modules has the following shape
7288
7296
// System.register(['dep-1', ... 'dep-n'], function(exports) {/* module body function */})
@@ -7297,7 +7305,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
7297
7305
exportFunctionForFile = makeUniqueName ( "exports" ) ;
7298
7306
writeLine ( ) ;
7299
7307
write ( "System.register(" ) ;
7300
- writeModuleName ( node , resolveModuleNames ) ;
7308
+ writeModuleName ( node , emitRelativePathAsModuleName ) ;
7301
7309
write ( "[" ) ;
7302
7310
7303
7311
let groupIndices : Map < number > = { } ;
@@ -7320,8 +7328,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
7320
7328
write ( ", " ) ;
7321
7329
}
7322
7330
7323
- if ( resolveModuleNames ) {
7324
- let name = lookupSpecifierName ( externalImports [ i ] ) ;
7331
+ if ( emitRelativePathAsModuleName ) {
7332
+ let name = getExternalModuleNameFromDeclaration ( host , resolver , externalImports [ i ] ) ;
7325
7333
if ( name ) {
7326
7334
text = `"${ name } "` ;
7327
7335
}
@@ -7340,32 +7348,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
7340
7348
write ( "});" ) ;
7341
7349
}
7342
7350
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
-
7362
7351
interface AMDDependencyNames {
7363
7352
aliasedModuleNames : string [ ] ;
7364
7353
unaliasedModuleNames : string [ ] ;
7365
7354
importAliasNames : string [ ] ;
7366
7355
}
7367
7356
7368
- function getAMDDependencyNames ( node : SourceFile , includeNonAmdDependencies : boolean , resolveModuleNames ?: boolean ) : AMDDependencyNames {
7357
+ function getAMDDependencyNames ( node : SourceFile , includeNonAmdDependencies : boolean , emitRelativePathAsModuleName ?: boolean ) : AMDDependencyNames {
7369
7358
// names of modules with corresponding parameter in the factory function
7370
7359
let aliasedModuleNames : string [ ] = [ ] ;
7371
7360
// names of modules with no corresponding parameters in factory function
@@ -7389,8 +7378,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
7389
7378
// Find the name of the external module
7390
7379
let externalModuleName = getExternalModuleNameText ( importNode ) ;
7391
7380
7392
- if ( resolveModuleNames ) {
7393
- let name = lookupSpecifierName ( importNode ) ;
7381
+ if ( emitRelativePathAsModuleName ) {
7382
+ let name = getExternalModuleNameFromDeclaration ( host , resolver , importNode ) ;
7394
7383
if ( name ) {
7395
7384
externalModuleName = `"${ name } "` ;
7396
7385
}
@@ -7410,7 +7399,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
7410
7399
return { aliasedModuleNames, unaliasedModuleNames, importAliasNames } ;
7411
7400
}
7412
7401
7413
- function emitAMDDependencies ( node : SourceFile , includeNonAmdDependencies : boolean , resolveModuleNames ?: boolean ) {
7402
+ function emitAMDDependencies ( node : SourceFile , includeNonAmdDependencies : boolean , emitRelativePathAsModuleName ?: boolean ) {
7414
7403
// An AMD define function has the following shape:
7415
7404
// define(id?, dependencies?, factory);
7416
7405
//
@@ -7423,7 +7412,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
7423
7412
// `import "module"` or `<amd-dependency path= "a.css" />`
7424
7413
// we need to add modules without alias names to the end of the dependencies list
7425
7414
7426
- let dependencyNames = getAMDDependencyNames ( node , includeNonAmdDependencies , resolveModuleNames ) ;
7415
+ let dependencyNames = getAMDDependencyNames ( node , includeNonAmdDependencies , emitRelativePathAsModuleName ) ;
7427
7416
emitAMDDependencyList ( dependencyNames ) ;
7428
7417
write ( ", " ) ;
7429
7418
emitAMDFactoryHeader ( dependencyNames ) ;
@@ -7451,14 +7440,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
7451
7440
write ( ") {" ) ;
7452
7441
}
7453
7442
7454
- function emitAMDModule ( node : SourceFile , resolveModuleNames ?: boolean ) {
7443
+ function emitAMDModule ( node : SourceFile , emitRelativePathAsModuleName ?: boolean ) {
7455
7444
emitEmitHelpers ( node ) ;
7456
7445
collectExternalModuleInfo ( node ) ;
7457
7446
7458
7447
writeLine ( ) ;
7459
7448
write ( "define(" ) ;
7460
- writeModuleName ( node , resolveModuleNames ) ;
7461
- emitAMDDependencies ( node , /*includeNonAmdDependencies*/ true , resolveModuleNames ) ;
7449
+ writeModuleName ( node , emitRelativePathAsModuleName ) ;
7450
+ emitAMDDependencies ( node , /*includeNonAmdDependencies*/ true , emitRelativePathAsModuleName ) ;
7462
7451
increaseIndent ( ) ;
7463
7452
let startIndex = emitDirectivePrologues ( node . statements , /*startWithNewLine*/ true ) ;
7464
7453
emitExportStarHelper ( ) ;
@@ -7712,7 +7701,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
7712
7701
emitModule ( node ) ;
7713
7702
}
7714
7703
else {
7715
- bundleEmitDelegates [ modulekind ] ( node , /*resolveModuleNames */ true ) ;
7704
+ bundleEmitDelegates [ modulekind ] ( node , /*emitRelativePathAsModuleName */ true ) ;
7716
7705
}
7717
7706
}
7718
7707
else {
0 commit comments