Files
openclaw/src/plugins/semver.runtime.ts
2026-04-29 17:39:27 +01:00

27 lines
805 B
TypeScript

import { createRequire } from "node:module";
const require = createRequire(import.meta.url);
type SemverRuntime = {
satisfies(version: string, range: string, options?: { includePrerelease?: boolean }): boolean;
valid(version: string): string | null;
validRange(range: string): string | null;
};
let semver: SemverRuntime | undefined;
function getSemver(): SemverRuntime {
semver ??= require("semver") as SemverRuntime;
return semver;
}
export const satisfies = (
version: string,
range: string,
options?: { includePrerelease?: boolean },
): boolean => getSemver().satisfies(version, range, options);
export const validSemver = (version: string): string | null => getSemver().valid(version);
export const validRange = (range: string): string | null => getSemver().validRange(range);