eslint-config-galex
Version:
personal ESLint ruleset of galex
45 lines (44 loc) • 1.51 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.fulfillsVersionRequirement = void 0;
const cache = new Map();
const toNumbers = (str) => {
const maybeCached = cache.get(str);
if (maybeCached) {
return maybeCached;
}
/* istanbul ignore next major cant ever be undefined, even if only "." is forwarded */
const [major = 0, minor = 0, patch = 0] = str
.split('.')
.map(str => [...str]
.map(char => Number.parseInt(char))
.filter(maybeNumber => !Number.isNaN(maybeNumber))
.join(''))
.map(char => {
const maybeNumber = Number.parseInt(char);
return typeof maybeNumber !== 'number' || Number.isNaN(maybeNumber)
? 0
: maybeNumber;
});
const sane = [major, minor, patch];
cache.set(str, sane);
return sane;
};
const fulfillsVersionRequirement = ({ given, expected, }) => {
const [givenMajor, givenMinor, givenPatch] = toNumbers(given);
const [expectedMajor, expectedMinor, expectedPatch] = toNumbers(expected);
// satisfying major
if (givenMajor > expectedMajor) {
return true;
}
if (givenMajor === expectedMajor) {
// satisfying minor
if (givenMinor > expectedMinor) {
return true;
}
// satisfying patch
return givenMinor === expectedMinor && givenPatch >= expectedPatch;
}
return false;
};
exports.fulfillsVersionRequirement = fulfillsVersionRequirement;
;