fix: track require.resolve references

Fixes #6678
This commit is contained in:
morluto
2026-10-23 21:17:44 +08:00
parent 0f04043a5a
commit ae013ad23c
2 changed files with 36 additions and 1 deletions
@@ -648,6 +648,34 @@ export const semanticRequireCallAt = (
): JavaScriptRequireCallFact | undefined => {
if (semanticModuleRequireCallAt(node, state))
return { loader: "unknown", arguments: undefined, sourceRelative: false };
const callee = unwrapJavaScriptExpression(node.callee).node;
if (
(t.isMemberExpression(callee) || t.isOptionalMemberExpression(callee)) &&
semanticStaticPropertyKey(callee.property, callee.computed) === "resolve"
) {
const loader = requireLoaderValueAt(
callee.object,
node,
state,
factoryBindingIds,
);
if (loader !== "local") {
const selected = selectedRequireSourcesAt(
callee.object,
node,
state,
factoryBindingIds,
);
return {
loader: selected?.loader ?? loader,
arguments: node.arguments,
sourceRelative: selected?.sourceRelative ?? loader !== "unknown",
...(selected?.sourceRelativePath === undefined
? {}
: { sourceRelativePath: selected.sourceRelativePath }),
};
}
}
if (t.isNewExpression(node)) {
const loader = requireLoaderValueAt(
node.callee,