keep-a-changelog
Version:
Node package to parse and generate changelogs following the [keepachangelog](https://keepachangelog.com/) format.
62 lines (61 loc) • 2.19 kB
JavaScript
;
// Copyright 2018-2025 the Deno authors. MIT license.
// This module is browser compatible.
Object.defineProperty(exports, "__esModule", { value: true });
exports.lessThanRange = lessThanRange;
const _test_comparator_set_js_1 = require("./_test_comparator_set.js");
const _shared_js_1 = require("./_shared.js");
const compare_js_1 = require("./compare.js");
/**
* Check if the SemVer is less than the range.
*
* @example Usage
* ```ts
* import { parse, parseRange, lessThanRange } from "@std/semver";
* import { assert } from "@std/assert";
*
* const version1 = parse("1.2.3");
* const version2 = parse("1.0.0");
* const range = parseRange(">=1.2.3 <1.2.4");
*
* assert(!lessThanRange(version1, range));
* assert(lessThanRange(version2, range));
* ```
*
* @param version The version to check.
* @param range The range to check against.
* @returns `true` if the SemVer is less than the range, `false` otherwise.
*/
function lessThanRange(version, range) {
return range.every((comparatorSet) => lessThanComparatorSet(version, comparatorSet));
}
function lessThanComparatorSet(version, comparatorSet) {
// If the comparator set contains wildcard, then the semver is not greater than the range.
if (comparatorSet.some(_shared_js_1.isWildcardComparator))
return false;
// If the SemVer satisfies the comparator set, then it's not less than the range.
if ((0, _test_comparator_set_js_1.testComparatorSet)(version, comparatorSet))
return false;
// If the SemVer is greater than any of the comparator set, then it's not less than the range.
if (comparatorSet.some((comparator) => greaterThanComparator(version, comparator)))
return false;
return true;
}
function greaterThanComparator(version, comparator) {
const cmp = (0, compare_js_1.compare)(version, comparator);
switch (comparator.operator) {
case "=":
case undefined:
return cmp > 0;
case "!=":
return false;
case ">":
return false;
case "<":
return cmp >= 0;
case ">=":
return false;
case "<=":
return cmp > 0;
}
}