roleOf

tcmts.cli.pages.roleOf · #mm37xxm6 · term · runs on the server

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 the definition named path is for: a test, a type, a table, a job, an app, or code by where it runs.

import type { Codebase } from "#codebase/tcmts/cli/codebase";
import { isApp, isSchedule } from "#codebase/tcmts/cli/pages";
import type { Role } from "#codebase/tcmts/cli/pages";
import type { Placement } from "#codebase/tcmts/cli/placement";
import { codebaseRoles } from "#codebase/tcmts/cli/roles";
import { isTestPath } from "#codebase/tcmts/cli/testing";

export function roleOf(cb: Codebase, path: string, hash: string, placement: Placement): Role {
  const rec = cb.store.getDef(hash)!;
  if (rec.kind === "file") return "file";
  if (rec.kind !== "type" && isTestPath(path)) return "test";
  if (rec.kind !== "term") return "type";
  if (rec.table) return "table";
  if (isSchedule(rec, codebaseRoles(cb))) return "schedule";
  if (isApp(cb, hash, rec, placement)) return "app";
  const place = placement.placeOf(hash).place;
  return place === "server" ? "server" : place === "browser" ? "browser" : "shared";
}

uses

used by