Merge pull request #1614 from ing-bank/lint-versions-fix

chore: lint-versions to do semver satisfy check
This commit is contained in:
Joren Broekema 2022-03-02 17:46:26 +01:00 committed by GitHub
commit e544ec97b6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 9 deletions

View file

@ -17,6 +17,7 @@ module.exports = {
'**/demo/**/*.js',
'**/docs/**/*.js',
'**/*.config.js',
'scripts/**/*.js',
],
rules: {
'lit/binding-positions': 'off',

View file

@ -92,6 +92,7 @@
"remark-html": "^13.0.1",
"rimraf": "^2.6.3",
"rollup": "^2.0.0",
"semver": "^7.3.5",
"sinon": "^7.2.2",
"ssl-root-cas": "^1.3.1",
"typescript": "4.5.5",

View file

@ -1,5 +1,5 @@
/* eslint-disable no-console */
const { readdirSync, existsSync, readFileSync } = require('fs');
const semver = require('semver');
const getDirectories = source =>
readdirSync(source, { withFileTypes: true })
@ -38,14 +38,19 @@ function compareVersions(versionsA, versionsB) {
let output = '';
const newVersions = { ...versionsA };
Object.keys(versionsB).forEach(dep => {
if (
versionsA[dep] &&
versionsB[dep] &&
`^${versionsA[dep]}` !== versionsB[dep] && // allow carets
`~${versionsA[dep]}` !== versionsB[dep] && // allow tildes
versionsA[dep] !== versionsB[dep] // allow fixed
) {
output += ` - "${dep}" should be "${versionsA[dep]}" but is "${versionsB[dep]}"\n`;
if (versionsA[dep] && versionsB[dep] && versionsA[dep] !== versionsB[dep]) {
if (!semver.satisfies(versionsA[dep], versionsB[dep])) {
// if version doesn't satisfy range, check if they are both ranges,
// and if so, if either of them is entirely contained by the other,
// if so, then they are semver compatible and will resolve to the same thing
const rangeA = semver.validRange(versionsA[dep]);
const rangeB = semver.validRange(versionsB[dep]);
if (
!(rangeA && rangeB && (semver.subset(rangeA, rangeB) || semver.subset(rangeB, rangeA)))
) {
output += ` - "${dep}" "${versionsB[dep]}" does not seem semver compatible with "${versionsA[dep]}" and probably one of them needs a bump"\n`;
}
}
}
if (!newVersions[dep]) {
newVersions[dep] = versionsB[dep];