newestFitting

tcmts.cli.upgrade.newestFitting · #z7hwucd4 · term · runs on the server

uses tcmts.loader.packages.versionsIn, which uses tcmts.loader.packages.candidates, which uses tcmts.loader.packages.registryView, which uses node:child_process

The newest version of name that fits accepts, looking range by range from the newest (asking the registry for every version's peers at once is more than it answers).

import { compatRange } from "#codebase/tcmts/core/semver";
import { versionsIn } from "#codebase/tcmts/loader/packages";

export function newestFitting(name: string, fits: (c: { version: string; peers: Record<string, string> }) => boolean): string | undefined {
  const ranges = [...new Set(versionsIn(name, ">=0.0.0").map((c) => compatRange(c.version)))];
  for (const range of ranges) {
    const hit = versionsIn(name, range).find(fits);
    if (hit) return hit.version;
  }
  return undefined;
}

uses

used by