'use strict'; const cmp = require('semver/functions/cmp'); const semver = require('semver/functions/coerce'); const has = Function.call.bind({}.hasOwnProperty); function compare(a, operator, b) { return cmp(semver(a), operator, semver(b)); } function intersection(list, order) { const set = list instanceof Set ? list : new Set(list); return order.filter(name => set.has(name)); } function sortObjectByKey(object, fn) { return Object.keys(object).sort(fn).reduce((memo, key) => { memo[key] = object[key]; return memo; }, {}); } module.exports = { compare, has, intersection, semver, sortObjectByKey, };