mirror of
https://github.com/morluto/rea.git
synced 2026-11-12 01:41:21 +00:00
fix(javascript): preserve loader authority for exact suffixes (#9477)
* fix(javascript): require exact loader suffix case * fix(javascript): share exact loader mode across import resolution * test(process): align symlink fixture with filesystem checkpoints * test(javascript): normalize the module resolution oracle path separators * test(frida): assert the CLI spawn Evidence contract * test(mcp): use an unsupported analysis-view parent * test(browser): separate source-location line bounds from parity * fix(javascript): preserve uncertain loader provenance * test(javascript): cover uncertain require resolution * fix(javascript): retain conditional Electron evidence * fix(javascript): preserve timed semantic provenance * fix(javascript): retain conditional builtin effects * test(javascript): distinguish bundled host authority * fix(javascript): preserve nested loader invocation identity * test(javascript): qualify Electron fixture authority * fix(javascript): preserve loader invocation authority * fix(javascript): respect source order for resolver escapes * fix(javascript): check nested loader callable mutations * fix(javascript): retain conditional constructor requests * fix(reference): retain constructor loader relationships * fix(reference): follow nested loader callable paths * refactor(javascript): share callable mutation interpretation * fix(javascript): require exact package loader suffixes * refactor(javascript): unify conditional relation evidence * refactor(javascript): unify conditional node evidence * fix(javascript): retain unknown authority for mixed case sources * fix(javascript): preserve loader uncertainty for dotfiles * fix(reference): classify javascript suffix dotfiles * test(reference): cover suffix dotfiles through cli * fix(javascript): retain equivalent conditional built-in origins * fix(javascript): preserve wrapped resolver operation * fix(javascript): retain nested conditional built-in receivers * test(javascript): declare CommonJS in native addon fixtures * fix(javascript): retain wrapped resolver candidates * style: format merged native command schema * fix(javascript): preserve uncertain loader authority * test(javascript): require candidate preload evidence * test(javascript): cover reference loader member writes --------- Co-authored-by: ShuaixinHuang <1836656514@qq.com>
This commit is contained in:
1 parent
78a84d75c0
commit
b46f4fcebd
112 files changed
+5156
-797
No files matched your search
@@ -20,7 +20,7 @@ import {
|
||||
type JavaScriptSemanticBindingState,
|
||||
} from "./javascriptSemanticState.js";
|
||||
import {
|
||||
builtinDataEffectMethod,
|
||||
builtinDataEffectIdentity,
|
||||
dataEffectMemberCallee,
|
||||
outerDataEffectBinding,
|
||||
traverseDataEffects,
|
||||
@@ -45,6 +45,7 @@ const releaseMethodsFor = (
|
||||
};
|
||||
|
||||
interface ResourceCandidate {
|
||||
readonly builtinAuthority?: "candidate";
|
||||
readonly node: t.CallExpression | t.OptionalCallExpression;
|
||||
readonly specifier: string;
|
||||
readonly method: JavaScriptSemanticResourceOperation["method"];
|
||||
@@ -339,6 +340,9 @@ const collectAcquisitions = (
|
||||
node,
|
||||
specifier: reference.specifier,
|
||||
method: reference.method,
|
||||
...(reference.builtinAuthority === undefined
|
||||
? {}
|
||||
: { builtinAuthority: reference.builtinAuthority }),
|
||||
ownerCallableId: context.callableStack.at(-1) ?? null,
|
||||
resultBindingId: outerDataEffectBinding(node, context),
|
||||
});
|
||||
@@ -391,6 +395,9 @@ const collectReleases = (
|
||||
ownerCallableId: context.callableStack.at(-1) ?? null,
|
||||
resultBindingId: binding.bindingId,
|
||||
linkedResourceIds: linked.map(resourceCandidateId).sort(),
|
||||
...(linked.some((value) => value.builtinAuthority === "candidate")
|
||||
? { builtinAuthority: "candidate" as const }
|
||||
: {}),
|
||||
resolution:
|
||||
linked.length === 1 &&
|
||||
holdsOnlyAcquisitions(binding, linked, context.state)
|
||||
@@ -440,6 +447,9 @@ const immutableAcquisition = (
|
||||
resourceId: resourceCandidateId(candidate),
|
||||
kind: "acquire",
|
||||
method: candidate.method,
|
||||
...(candidate.builtinAuthority === undefined
|
||||
? {}
|
||||
: { builtinAuthority: candidate.builtinAuthority }),
|
||||
location: range(candidate.node),
|
||||
ownerCallableId: candidate.ownerCallableId,
|
||||
resultBindingId: candidate.resultBindingId,
|
||||
@@ -448,6 +458,7 @@ const immutableAcquisition = (
|
||||
});
|
||||
|
||||
interface AcquisitionReference {
|
||||
readonly builtinAuthority?: "candidate";
|
||||
readonly specifier: string;
|
||||
readonly method: JavaScriptSemanticResourceOperation["method"];
|
||||
}
|
||||
@@ -457,7 +468,9 @@ const acquisitionMethod = (
|
||||
state: JavaScriptSemanticAnalysisState,
|
||||
): AcquisitionReference | null => {
|
||||
for (const specifier of BUILTIN_RESOURCE_SPECIFIERS) {
|
||||
const method = builtinDataEffectMethod(callee, state, [specifier]);
|
||||
const identity = builtinDataEffectIdentity(callee, state, [specifier]);
|
||||
const method =
|
||||
identity?.path.length === 1 ? (identity.path[0] ?? null) : null;
|
||||
if (
|
||||
method !== null &&
|
||||
(
|
||||
@@ -468,6 +481,9 @@ const acquisitionMethod = (
|
||||
)
|
||||
return {
|
||||
specifier,
|
||||
...(identity?.builtinAuthority === undefined
|
||||
? {}
|
||||
: { builtinAuthority: identity.builtinAuthority }),
|
||||
method: method as JavaScriptSemanticResourceOperation["method"],
|
||||
};
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user