From f841fbe60fe1db62f700d03d4e084d864e9ab952 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 30 Nov 2017 14:34:01 -0800 Subject: [PATCH] fix(compiler-cli): propagate ts.SourceFile moduleName into metadata --- packages/compiler-cli/src/metadata/collector.ts | 1 + .../compiler-cli/src/transformers/metadata_reader.ts | 1 + packages/compiler-cli/test/metadata/collector_spec.ts | 11 +++++++++++ 3 files changed, 13 insertions(+) diff --git a/packages/compiler-cli/src/metadata/collector.ts b/packages/compiler-cli/src/metadata/collector.ts index 8ba2d307b4..e2748ce9df 100644 --- a/packages/compiler-cli/src/metadata/collector.ts +++ b/packages/compiler-cli/src/metadata/collector.ts @@ -550,6 +550,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 1d0264c259..c7badeb962 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 e999922247..e4caf48af8 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); @@ -1516,6 +1523,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';