releaseFacts

tcmts.registry.releaseFacts · #o436k27w · term · runs on the server

uses tcmts.share.shareCache, which uses tcmts.cli.placement.Placement, which uses node:path

A mirrored release's facts: its manifest's description and licence, where its code runs, what it reaches, and how its API changed since before (the version before it, mirrored too).

import type { Codebase } from "#codebase/tcmts/cli/codebase";
import { libraryEffects, libraryReport } from "#codebase/tcmts/cli/libraries";
import { highest } from "#codebase/tcmts/cli/semver_checks";
import { changeText, reachesText } from "#codebase/tcmts/registry";
import type { ReleaseFacts } from "#codebase/tcmts/registry";
import { manifestFields, placeMix, shareCache } from "#codebase/tcmts/share";
import type { NameRow } from "#codebase/tcmts/store";

export function releaseFacts(
  cb: Codebase,
  rows: NameRow[],
  before?: { version: string; rows: NameRow[] },
): ReleaseFacts {
  const manifest = rows.find((r) => r.path === "manifest" && r.kind === "term");
  const fields = manifest ? manifestFields(cb.store.getDef(manifest.hash)?.sourceText ?? "") : {};
  const places = placeMix({ cb, cache: shareCache() }, rows, rows.map((r) => r.hash).join(" "));
  const report = before && libraryReport(cb, before.rows, rows);
  const reached = libraryEffects(cb, rows);
  return {
    ...(typeof fields.description === "string" ? { description: fields.description } : {}),
    ...(typeof fields.license === "string" ? { license: fields.license } : {}),
    definitions: places.anywhere + places.server + places.browser,
    places,
    reaches: reachesText(reached),
    effects: Object.fromEntries(reached.reaches),
    unknown: reached.unknown,
    ...(report
      ? {
          level: highest(report.findings),
          change: changeText(report.findings),
          after: before.version,
        }
      : {}),
  };
}

uses

used by