Keep normalized View roots acyclic

This commit is contained in:
2026-07-28 21:32:20 +02:00
parent ce9ef8d88f
commit 389f98e349
2 changed files with 25 additions and 1 deletions

View File

@@ -58,7 +58,10 @@ export function viewSurfaceCatalogueForModules(
for (const surface of module.viewSurfaces ?? []) {
addSurface(surfaces, {
...surface,
parentId: surface.parentId ?? rootId
parentId:
surface.id === rootId
? null
: surface.parentId ?? rootId
});
}
}

View File

@@ -128,6 +128,27 @@ assert(
"view catalogue should derive route surfaces"
);
const serverNormalizedCatalogue = viewSurfaceCatalogueForModules([
{
...viewAwareFiles,
viewSurfaces: [
{
id: "files.module",
moduleId: "files",
kind: "module",
label: "Files",
parentId: null
},
...(viewAwareFiles.viewSurfaces ?? [])
]
}
]);
assert(
serverNormalizedCatalogue.find((surface) => surface.id === "files.module")
?.parentId == null,
"server-normalized module roots must not become their own parent"
);
const filesView = {
activeViewId: "view-files",
activeRevisionId: "revision-files",