roleNow
uses tcmts.cli.pages.roleOf, which uses tcmts.cli.roles.codebaseRoles, which uses tcmts.cli.roles.rolesIn, which uses tcmts.cli.roles.manifestsIn, which uses tcmts.cli.config.configValue, which uses node:path
What a named definition is for (#7k5t7jin), told once for each head.
import { roleOf } from "#codebase/tcmts/cli/pages"; import type { Role } from "#codebase/tcmts/cli/pages"; import type { Share } from "#codebase/tcmts/share"; import type { NameRow } from "#codebase/tcmts/store"; export function roleNow(s: Pick<Share, "cb" | "cache">, r: NameRow): Role { const roles = s.cache.atHead(s.cb, "roles", () => new Map<string, Role>()); const key = `${r.path} ${r.hash}`; let role = roles.get(key); if (!role) roles.set(key, (role = roleOf(s.cb, r.path, r.hash, s.cache.placement(s.cb)))); return role; }