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', '**/demo/**/*.js',
'**/docs/**/*.js', '**/docs/**/*.js',
'**/*.config.js', '**/*.config.js',
'scripts/**/*.js',
], ],
rules: { rules: {
'lit/binding-positions': 'off', 'lit/binding-positions': 'off',

View file

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

View file

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