Skip to content

Commit 1e3fa48

Browse files
f280467 fix(compiler-cli): account for multiple generated namespace imports in HMR (#58924)
1 parent 7d26ac9 commit 1e3fa48

21 files changed

+71
-51
lines changed

BUILD_INFO

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
Thu Nov 28 08:48:36 UTC 2024
2-
6ff53b7437b3edc038800b25bd29387293fe0339
1+
Thu Nov 28 09:08:35 UTC 2024
2+
f280467398c6980878b5e755a78606251814447b

bundles/chunk-5ZWV2XEF.js renamed to bundles/chunk-47AQROBL.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

bundles/chunk-NFCGJ6UU.js renamed to bundles/chunk-6CACVXQI.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

bundles/chunk-DHTI5OKE.js renamed to bundles/chunk-HJKBVHVU.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

bundles/chunk-P6YTDBL7.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bundles/chunk-ZEPJHGBL.js renamed to bundles/chunk-RCYKQXTN.js

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13618,10 +13618,10 @@ var SingleShimTypeCheckingHost = class extends SingleFileTypeCheckingHost {
1361813618
// bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/hmr/src/metadata.mjs
1361913619
import { outputAst as o3 } from "@angular/compiler";
1362013620

13621-
// bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/hmr/src/extract_locals.mjs
13621+
// bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/hmr/src/extract_dependencies.mjs
1362213622
import { outputAst as o2 } from "@angular/compiler";
1362313623
import ts45 from "typescript";
13624-
function extractHmrLocals(node, definition, factory, classMetadata, debugInfo) {
13624+
function extractHmrDependencies(node, definition, factory, classMetadata, debugInfo) {
1362513625
var _a;
1362613626
const name = ts45.isClassDeclaration(node) && node.name ? node.name.text : null;
1362713627
const visitor = new PotentialTopLevelReadsVisitor();
@@ -13633,7 +13633,13 @@ function extractHmrLocals(node, definition, factory, classMetadata, debugInfo) {
1363313633
classMetadata == null ? void 0 : classMetadata.visitStatement(visitor, null);
1363413634
debugInfo == null ? void 0 : debugInfo.visitStatement(visitor, null);
1363513635
const availableTopLevel = getTopLevelDeclarationNames(sourceFile);
13636-
return Array.from(visitor.allReads).filter((r) => r !== name && availableTopLevel.has(r));
13636+
return {
13637+
local: Array.from(visitor.allReads).filter((r) => r !== name && availableTopLevel.has(r)),
13638+
external: Array.from(visitor.namespaceReads, (name2, index) => ({
13639+
moduleName: name2,
13640+
assignedName: `\u0275hmr${index}`
13641+
}))
13642+
};
1363713643
}
1363813644
function getTopLevelDeclarationNames(sourceFile) {
1363913645
var _a;
@@ -13689,6 +13695,13 @@ function trackBindingName(node, results) {
1368913695
}
1369013696
var PotentialTopLevelReadsVisitor = class extends o2.RecursiveAstVisitor {
1369113697
allReads = /* @__PURE__ */ new Set();
13698+
namespaceReads = /* @__PURE__ */ new Set();
13699+
visitExternalExpr(ast, context) {
13700+
if (ast.value.moduleName !== null) {
13701+
this.namespaceReads.add(ast.value.moduleName);
13702+
}
13703+
super.visitExternalExpr(ast, context);
13704+
}
1369213705
visitReadVarExpr(ast, context) {
1369313706
this.allReads.add(ast.name);
1369413707
super.visitReadVarExpr(ast, context);
@@ -13743,12 +13756,13 @@ function extractHmrMetatadata(clazz, reflection, compilerHost, rootDirs, definit
1374313756
}
1374413757
const sourceFile = clazz.getSourceFile();
1374513758
const filePath = getProjectRelativePath(sourceFile, rootDirs, compilerHost) || compilerHost.getCanonicalFileName(sourceFile.fileName);
13759+
const dependencies = extractHmrDependencies(clazz, definition, factory, classMetadata, debugInfo);
1374613760
const meta = {
1374713761
type: new o3.WrappedNodeExpr(clazz.name),
1374813762
className: clazz.name.text,
1374913763
filePath,
13750-
locals: extractHmrLocals(clazz, definition, factory, classMetadata, debugInfo),
13751-
coreName: "__ngCore__"
13764+
localDependencies: dependencies.local,
13765+
namespaceDependencies: dependencies.external
1375213766
};
1375313767
return meta;
1375413768
}
@@ -13757,7 +13771,11 @@ function extractHmrMetatadata(clazz, reflection, compilerHost, rootDirs, definit
1375713771
import { compileHmrUpdateCallback } from "@angular/compiler";
1375813772
import ts46 from "typescript";
1375913773
function getHmrUpdateDeclaration(compilationResults, constantStatements, meta, sourceFile) {
13760-
const importRewriter = new HmrModuleImportRewriter(meta.coreName);
13774+
const namespaceSpecifiers = meta.namespaceDependencies.reduce((result, current) => {
13775+
result.set(current.moduleName, current.assignedName);
13776+
return result;
13777+
}, /* @__PURE__ */ new Map());
13778+
const importRewriter = new HmrModuleImportRewriter(namespaceSpecifiers);
1376113779
const importManager = new ImportManager({
1376213780
...presetImportManagerForceNamespaceImports,
1376313781
rewriter: importRewriter
@@ -13770,12 +13788,12 @@ function getHmrUpdateDeclaration(compilationResults, constantStatements, meta, s
1377013788
], node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body);
1377113789
}
1377213790
var HmrModuleImportRewriter = class {
13773-
coreName;
13774-
constructor(coreName) {
13775-
this.coreName = coreName;
13791+
lookup;
13792+
constructor(lookup) {
13793+
this.lookup = lookup;
1377613794
}
1377713795
rewriteNamespaceImportIdentifier(specifier, moduleName) {
13778-
return moduleName === "@angular/core" ? this.coreName : specifier;
13796+
return this.lookup.has(moduleName) ? this.lookup.get(moduleName) : specifier;
1377913797
}
1378013798
rewriteSymbol(symbol) {
1378113799
return symbol;
@@ -15428,4 +15446,4 @@ export {
1542815446
* Use of this source code is governed by an MIT-style license that can be
1542915447
* found in the LICENSE file at https://angular.dev/license
1543015448
*/
15431-
//# sourceMappingURL=chunk-ZEPJHGBL.js.map
15449+
//# sourceMappingURL=chunk-RCYKQXTN.js.map

bundles/chunk-ZEPJHGBL.js.map renamed to bundles/chunk-RCYKQXTN.js.map

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)