roleOf
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
- tcmts.cli.codebase.Codebase
- tcmts.cli.pages.Role
- tcmts.cli.pages.isApp
- tcmts.cli.pages.isSchedule
- tcmts.cli.placement.Placement
- tcmts.cli.roles.codebaseRoles
- tcmts.cli.testing.isTestPath