diff --git a/package.json b/package.json index 088c7f606e..b41a143517 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "fsevents": "1.1.2" }, "devDependencies": { - "@bazel/typescript": "0.3.1", + "@bazel/typescript": "0.3.2", "@types/angularjs": "1.5.14-alpha", "@types/base64-js": "1.2.5", "@types/chokidar": "1.7.3", diff --git a/packages/bazel/package.json b/packages/bazel/package.json index 6e8fcbc867..17fbb66bc6 100644 --- a/packages/bazel/package.json +++ b/packages/bazel/package.json @@ -9,7 +9,7 @@ "typescript": ">=2.4.2 <2.6" }, "dependencies": { - "@bazel/typescript": "0.3.x", + "@bazel/typescript": "0.3.2", "@types/node": "6.0.84" }, "repository": { diff --git a/packages/bazel/src/ngc-wrapped/index.ts b/packages/bazel/src/ngc-wrapped/index.ts index 4bb2c5fb23..5ec94a7353 100644 --- a/packages/bazel/src/ngc-wrapped/index.ts +++ b/packages/bazel/src/ngc-wrapped/index.ts @@ -164,11 +164,19 @@ export function compile({allowNonHermeticReads, allDepsCompiledWithBazel = true, } return origBazelHostFileExist.call(bazelHost, fileName); }; + const origBazelHostShouldNameModule = bazelHost.shouldNameModule.bind(bazelHost); + bazelHost.shouldNameModule = (fileName: string) => + origBazelHostShouldNameModule(fileName) || NGC_GEN_FILES.test(fileName); const ngHost = ng.createCompilerHost({options: compilerOpts, tsHost: bazelHost}); - ngHost.fileNameToModuleName = (importedFilePath: string, containingFilePath: string) => - relativeToRootDirs(importedFilePath, compilerOpts.rootDirs).replace(EXT, ''); + ngHost.fileNameToModuleName = (importedFilePath: string, containingFilePath: string) => { + if ((compilerOpts.module === ts.ModuleKind.UMD || compilerOpts.module === ts.ModuleKind.AMD) && + ngHost.amdModuleName) { + return ngHost.amdModuleName({ fileName: importedFilePath } as ts.SourceFile); + } + return relativeToRootDirs(importedFilePath, compilerOpts.rootDirs).replace(EXT, ''); + }; ngHost.toSummaryFileName = (fileName: string, referringSrcFileName: string) => ngHost.fileNameToModuleName(fileName, referringSrcFileName); if (allDepsCompiledWithBazel) { diff --git a/packages/compiler-cli/src/transformers/api.ts b/packages/compiler-cli/src/transformers/api.ts index f57fcaffbd..12f757180d 100644 --- a/packages/compiler-cli/src/transformers/api.ts +++ b/packages/compiler-cli/src/transformers/api.ts @@ -192,6 +192,13 @@ export interface CompilerHost extends ts.CompilerHost { * cause a diagnostics diagnostic error or an exception to be thrown. */ readResource?(fileName: string): Promise|string; + /** + * Produce an AMD module name for the source file. Used in Bazel. + * + * An AMD module can have an arbitrary name, so that it is require'd by name + * rather than by path. See http://requirejs.org/docs/whyamd.html#namedmodules + */ + amdModuleName?(sf: ts.SourceFile): string|undefined; } export enum EmitFlags { diff --git a/packages/compiler-cli/src/transformers/compiler_host.ts b/packages/compiler-cli/src/transformers/compiler_host.ts index 494359967a..560768556b 100644 --- a/packages/compiler-cli/src/transformers/compiler_host.ts +++ b/packages/compiler-cli/src/transformers/compiler_host.ts @@ -303,6 +303,11 @@ export class TsCompilerAotCompilerTypeCheckHostAdapter implements ts.CompilerHos /* emitSourceMaps */ false); const sf = ts.createSourceFile( genFile.genFileUrl, sourceText, this.options.target || ts.ScriptTarget.Latest); + if ((this.options.module === ts.ModuleKind.AMD || this.options.module === ts.ModuleKind.UMD) && + this.context.amdModuleName) { + const moduleName = this.context.amdModuleName(sf); + if (moduleName) sf.moduleName = moduleName; + } this.generatedSourceFiles.set(genFile.genFileUrl, { sourceFile: sf, emitCtx: context, externalReferences, diff --git a/yarn.lock b/yarn.lock index 54022638a6..4485e2f022 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,9 +2,9 @@ # yarn lockfile v1 -"@bazel/typescript@0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.3.1.tgz#54367df8f30fa0fb25e41106eb7aa558534c36dd" +"@bazel/typescript@0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.3.2.tgz#b4721b7f9e4c447a553555eab4a437f538a9496d" dependencies: "@types/node" "7.0.18" "@types/source-map" "^0.5.1" @@ -7102,16 +7102,7 @@ ts-api-guardian@0.2.2: minimist "^1.2.0" typescript "2.0.10" -tsickle@0.25.5: - version "0.25.5" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.25.5.tgz#2891d29f97c4aab1306e06378d8496d1765a4bfe" - dependencies: - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map "^0.5.6" - source-map-support "^0.4.2" - -tsickle@0.25.x: +tsickle@0.25.5, tsickle@0.25.x: version "0.25.5" resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.25.5.tgz#2891d29f97c4aab1306e06378d8496d1765a4bfe" dependencies: