meld-spec
Version:
Specification for the Meld scripting language
61 lines (60 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CURRENT_VERSION = void 0;
exports.parseVersion = parseVersion;
exports.formatVersion = formatVersion;
exports.isCompatibleVersion = isCompatibleVersion;
exports.isBreakingChange = isBreakingChange;
exports.getMinCompatibleVersion = getMinCompatibleVersion;
/**
* Current version of the Meld specification
*/
exports.CURRENT_VERSION = {
major: 0,
minor: 1,
patch: 0
};
/**
* Converts a version string to a Version object
*/
function parseVersion(version) {
const [major, minor, patch] = version.split('.').map(Number);
return { major, minor, patch };
}
/**
* Converts a Version object to a string
*/
function formatVersion(version) {
return `${version.major}.${version.minor}.${version.patch}`;
}
/**
* Checks if a version is compatible with a version range
*/
function isCompatibleVersion(version, range) {
const minCheck = (version.major === range.min.major &&
version.minor >= range.min.minor &&
version.patch >= range.min.patch);
if (!range.max) {
return minCheck;
}
const maxCheck = (version.major === range.max.major &&
version.minor <= range.max.minor &&
version.patch <= range.max.patch);
return minCheck && maxCheck;
}
/**
* Checks if a breaking change is being introduced
*/
function isBreakingChange(oldVersion, newVersion) {
return newVersion.major > oldVersion.major;
}
/**
* Gets the minimum compatible version for an implementation
*/
function getMinCompatibleVersion() {
return {
major: exports.CURRENT_VERSION.major,
minor: 0,
patch: 0
};
}