codebaseRoles

tcmts.cli.roles.codebaseRoles · #u64rtnrs · term · runs on the server

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;
}

uses

used by