changeText
How an API changed, said briefly, from its semver findings.
import { levelOf, LINTS } from "#codebase/tcmts/cli/semver_checks"; import type { Finding, Level } from "#codebase/tcmts/cli/semver_checks"; export function changeText(findings: Finding[]): string { const of = (l: Level) => findings.filter((f) => levelOf(f) === l); const names = (fs: Finding[]) => `${fs .slice(0, 3) .map((f) => f.path) .join(", ")}${fs.length > 3 ? ", …" : ""}`; const breaking = of("major"); if (breaking.length) return `${breaking.length} breaking: ${breaking[0]!.path} ${LINTS[breaking[0]!.lint].summary}${breaking.length > 1 ? ", …" : ""}`; const added = of("minor"); if (added.length) return `${added.length} added or extended: ${names(added)}`; const changed = of("patch"); return changed.length ? `same API, ${changed.length} definition${changed.length === 1 ? "" : "s"} changed` : "no API changes"; }
uses
- tcmts.cli.semver_checks.Finding
- tcmts.cli.semver_checks.LINTS
- tcmts.cli.semver_checks.Level
- tcmts.cli.semver_checks.levelOf