ls-engines
Version:
Determine if your dependency graph's stated "engines" criteria is met.
23 lines (19 loc) • 648 B
JavaScript
;
const fromEntries = require('object.fromentries');
const satisfies = require('semver/functions/satisfies');
module.exports = async function validVersionsForEngines(engines, allVersions) {
if (!engines || typeof engines !== 'object' || Array.isArray(engines)) {
throw new TypeError('`engines` must be an object');
}
if (!allVersions || typeof allVersions !== 'object') {
throw new TypeError('`allVersions` must be an object');
}
const entries = Object.entries(allVersions);
return fromEntries(entries.map(([
engine,
versions,
]) => [
engine,
versions.filter((v) => satisfies(v, engines[engine] || '*')),
]));
};