codebaseRoles
uses tcmts.cli.roles.rolesIn, which uses tcmts.cli.roles.manifestsIn, which uses tcmts.cli.config.configValue, which uses node:path
The roles of a branch's definitions (rolesIn), read again only when its names have changed: asked for each
definition analyzed, each page shown and each app started.
import type { Evaluating } from "#codebase/tcmts/cli/config"; import { rolesIn, rolesRead } from "#codebase/tcmts/cli/roles"; import type { Role } from "#codebase/tcmts/cli/roles"; export function codebaseRoles(cb: Evaluating): ReadonlyMap<string, Role> { const branch = cb.store.branch().name; const key = `${branch} ${cb.store.branchLogHead(branch)}`; const read = rolesRead.get(cb.store); if (read?.key === key) return read.roles; const roles = rolesIn(cb); rolesRead.set(cb.store, { key, roles }); return roles; }