UNPKG

ipsambeatae

Version:

Shared dependencies of Compass, the MongoDB extension for VSCode and MongoSH

64 lines (52 loc) 1.4 kB
import semver from 'semver'; export function intersects(range: string[]) { for (const [idx, v1] of Object.entries(range)) { for (const v2 of range.slice(Number(idx) + 1)) { try { if (!semver.intersects(v1, v2)) { return false; } } catch (e) { return false; } } } return true; } export function calculateReplacements(ranges: string[]): Map<string, string> { const replacements = new Map(); const highestRange = getHighestRange(ranges); for (const range of ranges) { try { if (semver.subset(highestRange ?? '', range)) { replacements.set(range, highestRange); } } catch (e) { // Range is probably not valid, let's proceed as if there is no // replacement for it } } return replacements; } export function getHighestRange(ranges: string[]): string | null { const validRanges = ranges.filter( (range) => semver.validRange(range) && range !== '*' ); const sortedRanges = validRanges.sort((v1, v2) => { const res = semver.compare( semver.minVersion(v2) ?? '', semver.minVersion(v1) ?? '' ); if (res === 1 || res === -1) { return res; } if (semver.valid(v1) && !semver.valid(v2)) { return 1; } if (!semver.valid(v1) && semver.valid(v2)) { return -1; } return 0; }); return sortedRanges[0] || null; }