syncpack
Version:
Consistent dependency versions in large JavaScript Monorepos
25 lines (24 loc) • 1.01 kB
JavaScript
import { isString } from 'tightrope/guard/is-string.js';
import { RANGE } from '../constants.js';
import { isSemver } from '../guards/is-semver.js';
import { isValidSemverRange } from '../guards/is-valid-semver-range.js';
/** @deprecated migrate to make better use of npm-package-arg */
export function setSemverRange(semverRange, version) {
if (!(isSemver(version) && isValidSemverRange(semverRange))) {
return version;
}
if (semverRange === '*') {
return semverRange;
}
const nextVersion = isLooseSemver(version)
? version.replace(/\.x/g, '.0')
: version;
const from1stNumber = nextVersion.search(/[0-9]/);
const from1stDot = nextVersion.indexOf('.');
return semverRange === RANGE.LOOSE
? `${nextVersion.slice(from1stNumber, from1stDot)}.x.x`
: `${semverRange}${nextVersion.slice(from1stNumber)}`;
}
function isLooseSemver(version) {
return (isString(version) && isSemver(version) && version.search(/\.x(\.|$)/) !== -1);
}