Files
Ekklesia/packages/contracts/src/versions.ts
T
ekklesia 57552a21a4
CI / verify (push) Has been cancelled
CI / infrastructure-smoke (push) Has been cancelled
feat: add module contracts and discovery
2026-07-12 22:14:01 -05:00

21 lines
733 B
TypeScript

import { satisfies, valid, validRange } from "semver";
import { z } from "zod";
export const semanticVersionSchema = z.string().refine((value) => valid(value) === value, {
message: "Must be a strict semantic version.",
});
export const semanticVersionRangeSchema = z
.string()
.min(1)
.refine((value) => validRange(value) !== null, {
message: "Must be a valid semantic version range.",
});
export function isVersionCompatible(version: string, range: string): boolean {
return valid(version) === version && validRange(range) !== null && satisfies(version, range);
}
export type SemanticVersion = z.infer<typeof semanticVersionSchema>;
export type SemanticVersionRange = z.infer<typeof semanticVersionRangeSchema>;