From 9c4d194f14fd3686b5271ba3704ad63ebf38cbd8 Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Sat, 24 Oct 2026 03:15:24 +0800 Subject: [PATCH] fix(javascript): consume per-field CommonJS publication facts --- .../javascript/electronStaticAnalysisNative.ts | 14 ++++++++++---- .../javascript/javascriptElectronAppPathChanges.ts | 10 ++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/domain/javascript/electronStaticAnalysisNative.ts b/src/domain/javascript/electronStaticAnalysisNative.ts index bbff6fbfbc..3c91965901 100644 --- a/src/domain/javascript/electronStaticAnalysisNative.ts +++ b/src/domain/javascript/electronStaticAnalysisNative.ts @@ -25,6 +25,7 @@ import { } from "./javascriptAstValues.js"; import { semanticRequireCallAt } from "./javascriptSemanticRequireOrigin.js"; import { + commonJsExportApplicability, commonJsRuntimeExportValues, indexCommonJsExportReceiversSteps, type CommonJsExportReceiverEffect, @@ -203,14 +204,19 @@ const inspectReExport = ( bindings: JavaScriptSemanticAnalysisState, receiver: CommonJsExportReceiverEffect | undefined, ): void => { - const exported = commonJsRuntimeExportValues(node, bindings); - if (exported.length === 0 || receiver === "detached") return; - if (receiver === "uncertain") { + const exported = commonJsRuntimeExportValues(node, bindings)[0]; + if (exported === undefined) return; + const applicability = commonJsExportApplicability( + receiver, + exported.exportedName, + ); + if (applicability === "detached") return; + if (applicability === "uncertain") { context.accumulator.unknownFindings += 1; return; } // The export owner leaves arithmetic/logical stores without a selected RHS. - const value = exported[0]?.value; + const value = exported.value; if (value == null) return; const required = nativeRequire(value, context, bindings); if (required === undefined) return; diff --git a/src/domain/javascript/javascriptElectronAppPathChanges.ts b/src/domain/javascript/javascriptElectronAppPathChanges.ts index 75d5f97437..e88b5b9237 100644 --- a/src/domain/javascript/javascriptElectronAppPathChanges.ts +++ b/src/domain/javascript/javascriptElectronAppPathChanges.ts @@ -364,15 +364,13 @@ export const createSemanticElectronAppPathChangeQuery = ( (!t.isAssignmentExpression(node) && !t.isCallExpression(node)) ) return false; - commonJsReceivers ??= completeSemanticSteps( + const receivers = (commonJsReceivers ??= completeSemanticSteps( indexCommonJsExportReceiversSteps(state), - ); + )); return exported.some( ({ exportedName, value, projection, ownEnumerable }) => - commonJsExportApplicability( - commonJsReceivers.get(node), - exportedName, - ) !== "detached" && + commonJsExportApplicability(receivers.get(node), exportedName) !== + "detached" && value !== null && possiblePath(value, true, projection, ownEnumerable), );