fix(javascript): retain package entrypoint provenance

This commit is contained in:
morluto committed 2026-10-27 06:28:15 +08:00
1 parent c27560e434
commit 7c8eb63fcc
8 files changed
+228 -26

No files matched your search

@@ -53,6 +53,7 @@ interface PackageRoleInput {
readonly packageFile: JavaScriptArtifactFile;
readonly kind: "electron-main" | "electron-renderer";
readonly declaredPath: string | null;
readonly field: "main" | "renderer" | "browser" | "module";
}
/** Create the exact root artifact node from the inventory manifest. */
@@ -552,7 +553,9 @@ export const addJavaScriptPackageNodes = (
version: packageValue.version,
main: packageValue.main,
main_status: packageValue.main_status,
renderer: packageValue.renderer,
// Legacy derived candidate; source fields live in renderer_declarations.
renderer: packageValue.renderer_entrypoint?.path ?? null,
renderer_declarations: packageValue.renderer_declarations,
parse_status: packageValue.status,
},
evidence: artifactObservationEvidence({
@@ -612,13 +615,16 @@ export const addJavaScriptPackageNodes = (
packageFile: file,
kind: "electron-main",
declaredPath: packageValue.main,
field: "main",
});
addPackageRole(context, {
packageNode: node,
packageFile: file,
kind: "electron-renderer",
declaredPath: packageValue.renderer,
});
if (packageValue.renderer_entrypoint !== null)
addPackageRole(context, {
packageNode: node,
packageFile: file,
kind: "electron-renderer",
declaredPath: packageValue.renderer_entrypoint.path,
field: packageValue.renderer_entrypoint.field,
});
}
return roots;
};
@@ -755,16 +761,14 @@ const addPackageRole = (
kind: input.kind,
anchor: input.packageFile,
resolution,
mechanism:
input.kind === "electron-main"
? "package.json:main"
: "package.json:renderer",
mechanism: `package.json:${input.field}`,
});
context.accumulator.addEdge({
source_node_id: input.packageNode.node_id,
target_node_id: role.node_id,
relation: "loads",
properties: {
source_field: input.field,
declared_path: input.declaredPath,
resolution_context: resolution.resolution_context,
resolved_path: resolution.resolved_path,