mlld
Version:
mlld: llm scripting language
120 lines (117 loc) • 4.09 kB
JavaScript
import { MlldError } from './chunk-V5XE5YB5.mjs';
import { __name } from './chunk-NJQT543K.mjs';
// core/version.ts
var version = "2.0.0-rc81";
// core/utils/version-checker.ts
function parseSemVer(versionString) {
const match = versionString.match(/^(\d+)\.(\d+)\.(\d+)(?:-([^+]+))?(?:\+(.+))?$/);
if (!match) {
throw new MlldError(`Invalid version string: ${versionString}`, {
code: "INVALID_VERSION",
severity: "error"
});
}
return {
major: parseInt(match[1], 10),
minor: parseInt(match[2], 10),
patch: parseInt(match[3], 10),
prerelease: match[4] || void 0,
build: match[5] || void 0
};
}
__name(parseSemVer, "parseSemVer");
function compareSemVer(a, b) {
if (a.major !== b.major) return a.major - b.major;
if (a.minor !== b.minor) return a.minor - b.minor;
if (a.patch !== b.patch) return a.patch - b.patch;
if (a.prerelease && !b.prerelease) return -1;
if (!a.prerelease && b.prerelease) return 1;
if (a.prerelease && b.prerelease) {
return a.prerelease.localeCompare(b.prerelease);
}
return 0;
}
__name(compareSemVer, "compareSemVer");
function satisfiesVersion(version2, requirement) {
if (requirement === "*" || requirement === "") return true;
const ver = parseSemVer(version2);
if (requirement.startsWith(">=")) {
const reqVer2 = parseSemVer(requirement.substring(2).trim());
return compareSemVer(ver, reqVer2) >= 0;
}
if (requirement.startsWith(">")) {
const reqVer2 = parseSemVer(requirement.substring(1).trim());
return compareSemVer(ver, reqVer2) > 0;
}
if (requirement.startsWith("<=")) {
const reqVer2 = parseSemVer(requirement.substring(2).trim());
return compareSemVer(ver, reqVer2) <= 0;
}
if (requirement.startsWith("<")) {
const reqVer2 = parseSemVer(requirement.substring(1).trim());
return compareSemVer(ver, reqVer2) < 0;
}
if (requirement.startsWith("^")) {
const reqVer2 = parseSemVer(requirement.substring(1).trim());
if (compareSemVer(ver, reqVer2) < 0) return false;
if (reqVer2.major === 0) {
return ver.major === 0 && ver.minor === reqVer2.minor;
}
return ver.major === reqVer2.major;
}
if (requirement.startsWith("~")) {
const reqVer2 = parseSemVer(requirement.substring(1).trim());
if (compareSemVer(ver, reqVer2) < 0) return false;
return ver.major === reqVer2.major && ver.minor === reqVer2.minor;
}
const reqVer = parseSemVer(requirement);
return compareSemVer(ver, reqVer) === 0;
}
__name(satisfiesVersion, "satisfiesVersion");
function checkMlldVersion(requiredVersion) {
if (!requiredVersion) {
return {
compatible: true
};
}
try {
const compatible = satisfiesVersion(version, requiredVersion);
if (!compatible) {
return {
compatible: false,
message: `Module requires mlld ${requiredVersion}, but you have ${version}`
};
}
return {
compatible: true
};
} catch (error) {
return {
compatible: false,
message: `Invalid version requirement: ${requiredVersion}`
};
}
}
__name(checkMlldVersion, "checkMlldVersion");
function formatVersionError(moduleName, requiredVersion, currentVersion) {
const message = [
`Module '${moduleName}' requires mlld ${requiredVersion}`
];
message.push(`You are running mlld ${currentVersion}`);
const required = parseSemVer(requiredVersion.replace(/^[><=^~]+/, ""));
const current = parseSemVer(currentVersion);
if (compareSemVer(current, required) < 0) {
message.push("");
message.push("To use this module, you need to upgrade mlld:");
message.push(" npm install -g mlld@latest");
} else {
message.push("");
message.push("This module may be using outdated syntax.");
message.push("Check if there's an updated version available.");
}
return message.join("\n");
}
__name(formatVersionError, "formatVersionError");
export { checkMlldVersion, compareSemVer, formatVersionError, parseSemVer, satisfiesVersion, version };
//# sourceMappingURL=chunk-BJCESMSP.mjs.map
//# sourceMappingURL=chunk-BJCESMSP.mjs.map