fix(javascript): track public CommonJS export receiver lifetimes (#3567)

* fix(javascript): track public CommonJS export receiver lifetimes

* fix(javascript): retain exports across uncertain identity effects
This commit is contained in:
鸡哥
2026-10-14 11:46:14 -07:00
committed by GitHub
parent 357996cc89
commit 75104040df
10 changed files with 502 additions and 71 deletions
@@ -70,6 +70,7 @@ import {
import { isJavaScriptRpcClientFactory } from "./javascriptRpcEndpoints.js";
import { createSemanticModuleInterop } from "./javascriptModuleInterop.js";
import { SemanticPropertyPathCoverage } from "./javascriptSemanticPropertyPaths.js";
import { indexCommonJsExportReceiversSteps } from "./javascriptCommonJsExportReceivers.js";
import type { JavaScriptModuleResolutionMode } from "./javascriptModuleResolutionMode.js";
interface BindPatternInput {
@@ -163,8 +164,9 @@ export function* analyzeParsedJavaScriptSemanticsSteps(
yield* collectDefinitionsSteps(file.program, state);
yield* indexJavaScriptAmbientWritesSteps(file.program, state);
yield* collectSemanticMemberMutationsSteps(file.program, state);
const commonJsReceivers = yield* indexCommonJsExportReceiversSteps(state);
yield* traverseJavaScriptAstSteps(file.program, {
enter: (node) => collectSemanticModuleLink(node, state),
enter: (node) => collectSemanticModuleLink(node, state, commonJsReceivers),
});
yield;
const references = yield* collectSemanticReferencesSteps(file.program, state);