diff --git a/packages/compiler-cli/src/metadata/collector.ts b/packages/compiler-cli/src/metadata/collector.ts index 6b05de32d86..742e92904aa 100644 --- a/packages/compiler-cli/src/metadata/collector.ts +++ b/packages/compiler-cli/src/metadata/collector.ts @@ -551,6 +551,7 @@ export class MetadataCollector { __symbolic: 'module', version: this.options.version || METADATA_VERSION, metadata }; + if (sourceFile.moduleName) result.importAs = sourceFile.moduleName; if (exports) result.exports = exports; return result; } diff --git a/packages/compiler-cli/src/transformers/metadata_reader.ts b/packages/compiler-cli/src/transformers/metadata_reader.ts index 1d0264c2590..c7badeb962e 100644 --- a/packages/compiler-cli/src/transformers/metadata_reader.ts +++ b/packages/compiler-cli/src/transformers/metadata_reader.ts @@ -112,6 +112,7 @@ function upgradeMetadataWithDtsData( newMetadata.metadata[prop] = dtsMetadata.metadata[prop]; } } + if (dtsMetadata['importAs']) newMetadata['importAs'] = dtsMetadata['importAs']; // Only copy exports from exports from metadata prior to version 3. // Starting with version 3 the collector began collecting exports and diff --git a/packages/compiler-cli/test/metadata/collector_spec.ts b/packages/compiler-cli/test/metadata/collector_spec.ts index 1b9b97e9d43..13c7eb5fc88 100644 --- a/packages/compiler-cli/test/metadata/collector_spec.ts +++ b/packages/compiler-cli/test/metadata/collector_spec.ts @@ -45,6 +45,7 @@ describe('Collector', () => { 're-exports.ts', 're-exports-2.ts', 'export-as.d.ts', + 'named-module.d.ts', 'static-field-reference.ts', 'static-method.ts', 'static-method-call.ts', @@ -101,6 +102,12 @@ describe('Collector', () => { }); }); + it('should preserve module names from TypeScript sources', () => { + const sourceFile = program.getSourceFile('named-module.d.ts'); + const metadata = collector.getMetadata(sourceFile); + expect(metadata !['importAs']).toEqual('some-named-module'); + }); + it('should be able to collect a simple component\'s metadata', () => { const sourceFile = program.getSourceFile('app/hero-detail.component.ts'); const metadata = collector.getMetadata(sourceFile); @@ -1384,6 +1391,10 @@ const FILES: Directory = { declare function someFunction(): void; export { someFunction as SomeFunction }; `, + 'named-module.d.ts': ` + /// + export type SomeType = 'a'; + `, 'local-symbol-ref.ts': ` import {Component, Validators} from 'angular2/core';