shareCache
uses tcmts.cli.placement.Placement, which uses node:path
import type { Codebase } from "#codebase/tcmts/cli/codebase"; import { Placement } from "#codebase/tcmts/cli/placement"; import { NameTrees } from "#codebase/tcmts/share"; import type { ShareCache } from "#codebase/tcmts/share"; export function shareCache(): ShareCache { let at = ""; let kept = new Map<string, unknown>(); let trees: NameTrees | undefined; const cache: ShareCache = { atHead<T>(cb: Codebase, key: string, make: () => T): T { const head = `${cb.store.branch().id} ${cb.store.head()}`; if (head !== at) { at = head; kept = new Map(); } if (!kept.has(key)) kept.set(key, make()); return kept.get(key) as T; }, placement: (cb) => cache.atHead(cb, "placement", () => new Placement(cb)), trees: (cb) => (trees ??= new NameTrees(cb.store)), entries: new Map(), releases: new Map(), }; return cache; }