src/version/version-resolver.ts was the last directory on the dossier's zero-coverage list: 82 lines, exported from the package root (export { VersionResolver }), referenced by no test — and called by nothing inside buddy itself, which classifies versions through utils/helpers.getUpdateType instead. For an external consumer of the package, these tests are the only thing standing between the API and silent breakage.
Pinned:
compareVersionsorders numerically (1.10.0after1.2.3), not lexicallysatisfiesRangecaret/tilde semanticsgetLatestInRangepicks the highest satisfying version;nullon no match or empty listcreateRange: operator stripped fromrange,isExactonly without an operator, and thesatisfies/getLatestclosures resolve against the raw rangegetUpdateType: first component that grew wins, range operators on either side ignored, short versions pad tomajor.minor.patchisSafeUpdate: inside the declared range, and an exact pin admits nothing but itself
Found while writing it, flagged not fixed: this is the third parallel getUpdateType implementation (utils/helpers.ts and a private method in buddy.ts are the others). Consolidation is a refactor for another day.
bun test: 2226 pass / 0 fail; typecheck and pickier green.
🤖 Generated with Claude Code