diff --git a/lib/config/definitions.js b/lib/config/definitions.js index 658e34269b3d382ced20227fa534a7b7445845db..cbffe3c5fddd8e6729bcebdf59f5e23be195ea62 100644 --- a/lib/config/definitions.js +++ b/lib/config/definitions.js @@ -368,6 +368,7 @@ const options = [ 'hashicorp', 'loose', 'node', + 'npm', 'pep440', 'ruby', 'semver', @@ -1000,6 +1001,7 @@ const options = [ type: 'json', default: { fileMatch: ['(^|/)package.json$'], + versionScheme: 'npm', }, mergeable: true, }, diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js index 27fc428af9c356c88bec44ecbcbf66f46a98091d..25349321727744c7686aac28b4f37920ba68168c 100644 --- a/lib/manager/npm/extract/index.js +++ b/lib/manager/npm/extract/index.js @@ -3,7 +3,7 @@ const upath = require('upath'); const { getLockedVersions } = require('./locked-versions'); const { detectMonorepos } = require('./monorepo'); const { mightBeABrowserLibrary } = require('./type'); -const semver = require('../../../versioning/semver'); +const semver = require('../../../versioning/npm'); module.exports = { extractAllPackageFiles, diff --git a/lib/versioning/cargo/index.js b/lib/versioning/cargo/index.js index 9b2bf6036d6c7c232feb9883f811259dd0285c23..d489469cdcfb44ae7ca01c671a078e0fff943308 100644 --- a/lib/versioning/cargo/index.js +++ b/lib/versioning/cargo/index.js @@ -1,4 +1,4 @@ -const semver = require('../semver'); +const npm = require('../npm'); // NOTE: Partial versions like '1.2' don't get converted to '^1.2' // because isVersion('1.2') === false @@ -37,19 +37,19 @@ function npm2cargo(input) { } const isLessThanRange = (version, range) => - semver.isLessThanRange(version, cargo2npm(range)); + npm.isLessThanRange(version, cargo2npm(range)); -const isValid = input => semver.isValid(cargo2npm(input)); +const isValid = input => npm.isValid(cargo2npm(input)); -const isVersion = input => semver.isVersion(input); +const isVersion = input => npm.isVersion(input); -const matches = (version, range) => semver.matches(version, cargo2npm(range)); +const matches = (version, range) => npm.matches(version, cargo2npm(range)); const maxSatisfyingVersion = (versions, range) => - semver.maxSatisfyingVersion(versions, cargo2npm(range)); + npm.maxSatisfyingVersion(versions, cargo2npm(range)); const minSatisfyingVersion = (versions, range) => - semver.minSatisfyingVersion(versions, cargo2npm(range)); + npm.minSatisfyingVersion(versions, cargo2npm(range)); const isSingleVersion = constraint => constraint.trim().startsWith('=') && @@ -69,7 +69,7 @@ function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { res += toVersion; return res; } - const newSemver = semver.getNewValue( + const newSemver = npm.getNewValue( cargo2npm(currentValue), rangeStrategy, fromVersion, @@ -84,7 +84,7 @@ function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { } module.exports = { - ...semver, + ...npm, isLessThanRange, isValid, matches, diff --git a/lib/versioning/composer/index.js b/lib/versioning/composer/index.js index 9fee015a7a876bfbb368f111621791b1a5eba286..33234aa64718b4da64ae751e997ac1d1fe275472 100644 --- a/lib/versioning/composer/index.js +++ b/lib/versioning/composer/index.js @@ -1,4 +1,4 @@ -const semver = require('../semver'); +const npm = require('../npm'); function padZeroes(input) { const sections = input.split('.'); @@ -9,10 +9,10 @@ function padZeroes(input) { } function composer2npm(input) { - if (semver.isVersion(input)) { + if (npm.isVersion(input)) { return input; } - if (semver.isVersion(padZeroes(input))) { + if (npm.isVersion(padZeroes(input))) { return padZeroes(input); } let output = input; @@ -23,36 +23,36 @@ function composer2npm(input) { return output; } -const equals = (a, b) => semver.equals(composer2npm(a), composer2npm(b)); +const equals = (a, b) => npm.equals(composer2npm(a), composer2npm(b)); -const getMajor = version => semver.getMajor(composer2npm(version)); +const getMajor = version => npm.getMajor(composer2npm(version)); -const getMinor = version => semver.getMinor(composer2npm(version)); +const getMinor = version => npm.getMinor(composer2npm(version)); -const getPatch = version => semver.getPatch(composer2npm(version)); +const getPatch = version => npm.getPatch(composer2npm(version)); const isGreaterThan = (a, b) => - semver.isGreaterThan(composer2npm(a), composer2npm(b)); + npm.isGreaterThan(composer2npm(a), composer2npm(b)); const isLessThanRange = (version, range) => - semver.isLessThanRange(composer2npm(version), composer2npm(range)); + npm.isLessThanRange(composer2npm(version), composer2npm(range)); -const isSingleVersion = input => semver.isSingleVersion(composer2npm(input)); +const isSingleVersion = input => npm.isSingleVersion(composer2npm(input)); -const isStable = version => semver.isStable(composer2npm(version)); +const isStable = version => npm.isStable(composer2npm(version)); -const isValid = input => semver.isValid(composer2npm(input)); +const isValid = input => npm.isValid(composer2npm(input)); -const isVersion = input => semver.isVersion(composer2npm(input)); +const isVersion = input => npm.isVersion(composer2npm(input)); const matches = (version, range) => - semver.matches(composer2npm(version), composer2npm(range)); + npm.matches(composer2npm(version), composer2npm(range)); const maxSatisfyingVersion = (versions, range) => - semver.maxSatisfyingVersion(versions.map(composer2npm), composer2npm(range)); + npm.maxSatisfyingVersion(versions.map(composer2npm), composer2npm(range)); const minSatisfyingVersion = (versions, range) => - semver.minSatisfyingVersion(versions.map(composer2npm), composer2npm(range)); + npm.minSatisfyingVersion(versions.map(composer2npm), composer2npm(range)); function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { const toMajor = getMajor(toVersion); @@ -61,11 +61,11 @@ function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { if (isVersion(currentValue)) { newValue = toVersion; } else if ( - semver.isVersion(padZeroes(toVersion)) && - semver.isValid(currentValue) && + npm.isVersion(padZeroes(toVersion)) && + npm.isValid(currentValue) && composer2npm(currentValue) === currentValue ) { - newValue = semver.getNewValue( + newValue = npm.getNewValue( currentValue, rangeStrategy, fromVersion, @@ -120,7 +120,7 @@ function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { } function sortVersions(a, b) { - return semver.sortVersions(composer2npm(a), composer2npm(b)); + return npm.sortVersions(composer2npm(a), composer2npm(b)); } module.exports = { diff --git a/lib/versioning/hashicorp/index.js b/lib/versioning/hashicorp/index.js index fcff9be5221ae0fc417c67bb3cf0d983b823c0bb..8d711a5ebfa89e872e61670158d44f1507beb4de 100644 --- a/lib/versioning/hashicorp/index.js +++ b/lib/versioning/hashicorp/index.js @@ -1,4 +1,4 @@ -const semver = require('../semver'); +const npm = require('../npm'); function hashicorp2npm(input) { // The only case incompatible with semver is a "short" ~>, e.g. ~> 1.2 @@ -6,43 +6,32 @@ function hashicorp2npm(input) { } const isLessThanRange = (version, range) => - semver.isLessThanRange(hashicorp2npm(version), hashicorp2npm(range)); + npm.isLessThanRange(hashicorp2npm(version), hashicorp2npm(range)); -const isValid = input => semver.isValid(hashicorp2npm(input)); +const isValid = input => npm.isValid(hashicorp2npm(input)); const matches = (version, range) => - semver.matches(hashicorp2npm(version), hashicorp2npm(range)); + npm.matches(hashicorp2npm(version), hashicorp2npm(range)); const maxSatisfyingVersion = (versions, range) => - semver.maxSatisfyingVersion( - versions.map(hashicorp2npm), - hashicorp2npm(range) - ); + npm.maxSatisfyingVersion(versions.map(hashicorp2npm), hashicorp2npm(range)); const minSatisfyingVersion = (versions, range) => - semver.minSatisfyingVersion( - versions.map(hashicorp2npm), - hashicorp2npm(range) - ); + npm.minSatisfyingVersion(versions.map(hashicorp2npm), hashicorp2npm(range)); function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { // handle specia. ~> 1.2 case if (currentValue.match(/(~>\s*)\d+\.\d+$/)) { return currentValue.replace( /(~>\s*)\d+\.\d+$/, - `$1${semver.getMajor(toVersion)}.0` + `$1${npm.getMajor(toVersion)}.0` ); } - return semver.getNewValue( - currentValue, - rangeStrategy, - fromVersion, - toVersion - ); + return npm.getNewValue(currentValue, rangeStrategy, fromVersion, toVersion); } module.exports = { - ...semver, + ...npm, isLessThanRange, isValid, matches, diff --git a/lib/versioning/node/index.js b/lib/versioning/node/index.js index 547c0dc76a5d17205fa0da9f79e8819d6a6f64ee..b6d025ef9a755f3bc9262af2b93e57f451bfedb7 100644 --- a/lib/versioning/node/index.js +++ b/lib/versioning/node/index.js @@ -1,20 +1,20 @@ -const semver = require('../semver'); +const npm = require('../npm'); function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { - const res = semver.getNewValue( + const res = npm.getNewValue( currentValue, rangeStrategy, fromVersion, toVersion ); - if (semver.isVersion(res)) { + if (npm.isVersion(res)) { // normalize out any 'v' prefix - return semver.isVersion(res); + return npm.isVersion(res); } return res; } module.exports = { - ...semver, + ...npm, getNewValue, }; diff --git a/lib/versioning/npm/index.js b/lib/versioning/npm/index.js new file mode 100644 index 0000000000000000000000000000000000000000..c2e01356a228f95fcc6e9d19ca54ad1075303bc3 --- /dev/null +++ b/lib/versioning/npm/index.js @@ -0,0 +1,47 @@ +const semver = require('semver'); +const stable = require('semver-stable'); +const { getNewValue } = require('./range'); + +const { is: isStable } = stable; + +const { + compare: sortVersions, + maxSatisfying: maxSatisfyingVersion, + minSatisfying: minSatisfyingVersion, + major: getMajor, + minor: getMinor, + patch: getPatch, + satisfies: matches, + valid, + validRange, + ltr: isLessThanRange, + gt: isGreaterThan, + eq: equals, +} = semver; + +// If this is left as an alias, inputs like "17.04.0" throw errors +const isValid = input => validRange(input); +const isVersion = input => valid(input); + +const isSingleVersion = constraint => + isVersion(constraint) || + (constraint.startsWith('=') && isVersion(constraint.substring(1).trim())); + +module.exports = { + equals, + getMajor, + getMinor, + getPatch, + isCompatible: isVersion, + isGreaterThan, + isLessThanRange, + isSingleVersion, + isStable, + isValid, + isVersion, + matches, + maxSatisfyingVersion, + minSatisfyingVersion, + getNewValue, + sortVersions, +}; diff --git a/lib/versioning/semver/range.js b/lib/versioning/npm/range.js similarity index 100% rename from lib/versioning/semver/range.js rename to lib/versioning/npm/range.js diff --git a/lib/versioning/semver/index.js b/lib/versioning/semver/index.js index c2e01356a228f95fcc6e9d19ca54ad1075303bc3..d702f9abc1490d40c56bc119d6292c65efcbd509 100644 --- a/lib/versioning/semver/index.js +++ b/lib/versioning/semver/index.js @@ -1,6 +1,5 @@ const semver = require('semver'); const stable = require('semver-stable'); -const { getNewValue } = require('./range'); const { is: isStable } = stable; @@ -13,19 +12,17 @@ const { patch: getPatch, satisfies: matches, valid, - validRange, ltr: isLessThanRange, gt: isGreaterThan, eq: equals, } = semver; // If this is left as an alias, inputs like "17.04.0" throw errors -const isValid = input => validRange(input); const isVersion = input => valid(input); -const isSingleVersion = constraint => - isVersion(constraint) || - (constraint.startsWith('=') && isVersion(constraint.substring(1).trim())); +function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { + return toVersion; +} module.exports = { equals, @@ -35,9 +32,9 @@ module.exports = { isCompatible: isVersion, isGreaterThan, isLessThanRange, - isSingleVersion, + isSingleVersion: isVersion, isStable, - isValid, + isValid: isVersion, isVersion, matches, maxSatisfyingVersion, diff --git a/test/versioning/npm.spec.js b/test/versioning/npm.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..a6aca44558ab9fada1d22e9ad6710e3c81588d11 --- /dev/null +++ b/test/versioning/npm.spec.js @@ -0,0 +1,118 @@ +const semver = require('../../lib/versioning/npm'); + +describe('semver.isValid(input)', () => { + it('should return null for irregular versions', () => { + expect(!!semver.isValid('17.04.0')).toBe(false); + }); + it('should support simple semver', () => { + expect(!!semver.isValid('1.2.3')).toBe(true); + }); + it('should support semver with dash', () => { + expect(!!semver.isValid('1.2.3-foo')).toBe(true); + }); + it('should reject semver without dash', () => { + expect(!!semver.isValid('1.2.3foo')).toBe(false); + }); + it('should support ranges', () => { + expect(!!semver.isValid('~1.2.3')).toBe(true); + expect(!!semver.isValid('^1.2.3')).toBe(true); + expect(!!semver.isValid('>1.2.3')).toBe(true); + }); + it('should reject github repositories', () => { + expect(!!semver.isValid('renovatebot/renovate')).toBe(false); + expect(!!semver.isValid('renovatebot/renovate#master')).toBe(false); + expect( + !!semver.isValid('https://github.com/renovatebot/renovate.git') + ).toBe(false); + }); +}); +describe('semver.isSingleVersion()', () => { + it('returns true if naked version', () => { + expect(!!semver.isSingleVersion('1.2.3')).toBe(true); + expect(!!semver.isSingleVersion('1.2.3-alpha.1')).toBe(true); + }); + it('returns true if equals', () => { + expect(!!semver.isSingleVersion('=1.2.3')).toBe(true); + expect(!!semver.isSingleVersion('= 1.2.3')).toBe(true); + }); + it('returns false when not version', () => { + expect(!!semver.isSingleVersion('1.x')).toBe(false); + }); +}); +describe('semver.getNewValue()', () => { + it('bumps equals', () => { + expect(semver.getNewValue('=1.0.0', 'bump', '1.0.0', '1.1.0')).toEqual( + '=1.1.0' + ); + }); + it('bumps short caret to same', () => { + expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.0.7')).toEqual( + '^1.0' + ); + }); + it('bumps caret to prerelease', () => { + expect( + semver.getNewValue('^1', 'bump', '1.0.0', '1.0.7-prerelease.1') + ).toEqual('^1.0.7-prerelease.1'); + }); + it('replaces with newer', () => { + expect(semver.getNewValue('^1.0.0', 'replace', '1.0.0', '1.0.7')).toEqual( + '^1.0.7' + ); + }); + it('supports tilde greater than', () => { + expect(semver.getNewValue('~> 1.0.0', 'replace', '1.0.0', '1.1.7')).toEqual( + '~> 1.1.0' + ); + }); + it('bumps short caret to new', () => { + expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.1.7')).toEqual( + '^1.1' + ); + }); + it('bumps short tilde', () => { + expect(semver.getNewValue('~1.0', 'bump', '1.0.0', '1.1.7')).toEqual( + '~1.1' + ); + }); + it('bumps tilde to prerelease', () => { + expect( + semver.getNewValue('~1.0', 'bump', '1.0.0', '1.0.7-prerelease.1') + ).toEqual('~1.0.7-prerelease.1'); + }); + it('updates naked caret', () => { + expect(semver.getNewValue('^1', 'bump', '1.0.0', '2.1.7')).toEqual('^2'); + }); + it('bumps naked tilde', () => { + expect(semver.getNewValue('~1', 'bump', '1.0.0', '1.1.7')).toEqual('~1'); + }); + it('bumps naked major', () => { + expect(semver.getNewValue('5', 'bump', '5.0.0', '5.1.7')).toEqual('5'); + expect(semver.getNewValue('5', 'bump', '5.0.0', '6.1.7')).toEqual('6'); + }); + it('bumps naked minor', () => { + expect(semver.getNewValue('5.0', 'bump', '5.0.0', '5.0.7')).toEqual('5.0'); + expect(semver.getNewValue('5.0', 'bump', '5.0.0', '5.1.7')).toEqual('5.1'); + expect(semver.getNewValue('5.0', 'bump', '5.0.0', '6.1.7')).toEqual('6.1'); + }); + it('replaces equals', () => { + expect(semver.getNewValue('=1.0.0', 'replace', '1.0.0', '1.1.0')).toEqual( + '=1.1.0' + ); + }); + it('handles long asterisk', () => { + expect(semver.getNewValue('1.0.*', 'replace', '1.0.0', '1.1.0')).toEqual( + '1.1.*' + ); + }); + it('handles short asterisk', () => { + expect(semver.getNewValue('1.*', 'replace', '1.0.0', '2.1.0')).toEqual( + '2.*' + ); + }); + it('handles updating from stable to unstable', () => { + expect( + semver.getNewValue('~0.6.1', 'replace', '0.6.8', '0.7.0-rc.2') + ).toEqual('~0.7.0-rc'); + }); +}); diff --git a/test/versioning/semver.spec.js b/test/versioning/semver.spec.js index c2df0b6635693b90f96d33d551749b32a5585925..6e2abc8f922adb8d25e919ca31b7a50477a07970 100644 --- a/test/versioning/semver.spec.js +++ b/test/versioning/semver.spec.js @@ -13,10 +13,10 @@ describe('semver.isValid(input)', () => { it('should reject semver without dash', () => { expect(!!semver.isValid('1.2.3foo')).toBe(false); }); - it('should support ranges', () => { - expect(!!semver.isValid('~1.2.3')).toBe(true); - expect(!!semver.isValid('^1.2.3')).toBe(true); - expect(!!semver.isValid('>1.2.3')).toBe(true); + it('should reject ranges', () => { + expect(!!semver.isValid('~1.2.3')).toBe(false); + expect(!!semver.isValid('^1.2.3')).toBe(false); + expect(!!semver.isValid('>1.2.3')).toBe(false); }); it('should reject github repositories', () => { expect(!!semver.isValid('renovatebot/renovate')).toBe(false); @@ -31,88 +31,18 @@ describe('semver.isSingleVersion()', () => { expect(!!semver.isSingleVersion('1.2.3')).toBe(true); expect(!!semver.isSingleVersion('1.2.3-alpha.1')).toBe(true); }); - it('returns true if equals', () => { - expect(!!semver.isSingleVersion('=1.2.3')).toBe(true); - expect(!!semver.isSingleVersion('= 1.2.3')).toBe(true); + it('returns false if equals', () => { + expect(!!semver.isSingleVersion('=1.2.3')).toBe(false); + expect(!!semver.isSingleVersion('= 1.2.3')).toBe(false); }); it('returns false when not version', () => { expect(!!semver.isSingleVersion('1.x')).toBe(false); }); }); describe('semver.getNewValue()', () => { - it('bumps equals', () => { + it('uses toVersion', () => { expect(semver.getNewValue('=1.0.0', 'bump', '1.0.0', '1.1.0')).toEqual( - '=1.1.0' + '1.1.0' ); }); - it('bumps short caret to same', () => { - expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.0.7')).toEqual( - '^1.0' - ); - }); - it('bumps caret to prerelease', () => { - expect( - semver.getNewValue('^1', 'bump', '1.0.0', '1.0.7-prerelease.1') - ).toEqual('^1.0.7-prerelease.1'); - }); - it('replaces with newer', () => { - expect(semver.getNewValue('^1.0.0', 'replace', '1.0.0', '1.0.7')).toEqual( - '^1.0.7' - ); - }); - it('supports tilde greater than', () => { - expect(semver.getNewValue('~> 1.0.0', 'replace', '1.0.0', '1.1.7')).toEqual( - '~> 1.1.0' - ); - }); - it('bumps short caret to new', () => { - expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.1.7')).toEqual( - '^1.1' - ); - }); - it('bumps short tilde', () => { - expect(semver.getNewValue('~1.0', 'bump', '1.0.0', '1.1.7')).toEqual( - '~1.1' - ); - }); - it('bumps tilde to prerelease', () => { - expect( - semver.getNewValue('~1.0', 'bump', '1.0.0', '1.0.7-prerelease.1') - ).toEqual('~1.0.7-prerelease.1'); - }); - it('updates naked caret', () => { - expect(semver.getNewValue('^1', 'bump', '1.0.0', '2.1.7')).toEqual('^2'); - }); - it('bumps naked tilde', () => { - expect(semver.getNewValue('~1', 'bump', '1.0.0', '1.1.7')).toEqual('~1'); - }); - it('bumps naked major', () => { - expect(semver.getNewValue('5', 'bump', '5.0.0', '5.1.7')).toEqual('5'); - expect(semver.getNewValue('5', 'bump', '5.0.0', '6.1.7')).toEqual('6'); - }); - it('bumps naked minor', () => { - expect(semver.getNewValue('5.0', 'bump', '5.0.0', '5.0.7')).toEqual('5.0'); - expect(semver.getNewValue('5.0', 'bump', '5.0.0', '5.1.7')).toEqual('5.1'); - expect(semver.getNewValue('5.0', 'bump', '5.0.0', '6.1.7')).toEqual('6.1'); - }); - it('replaces equals', () => { - expect(semver.getNewValue('=1.0.0', 'replace', '1.0.0', '1.1.0')).toEqual( - '=1.1.0' - ); - }); - it('handles long asterisk', () => { - expect(semver.getNewValue('1.0.*', 'replace', '1.0.0', '1.1.0')).toEqual( - '1.1.*' - ); - }); - it('handles short asterisk', () => { - expect(semver.getNewValue('1.*', 'replace', '1.0.0', '2.1.0')).toEqual( - '2.*' - ); - }); - it('handles updating from stable to unstable', () => { - expect( - semver.getNewValue('~0.6.1', 'replace', '0.6.8', '0.7.0-rc.2') - ).toEqual('~0.7.0-rc'); - }); }); diff --git a/test/workers/repository/process/lookup/index.spec.js b/test/workers/repository/process/lookup/index.spec.js index 2cfeda88de7d39360d5250e4c9d5aaa049f55cd0..570f5e6b7a821581d80c77459426b9c13cac6d79 100644 --- a/test/workers/repository/process/lookup/index.spec.js +++ b/test/workers/repository/process/lookup/index.spec.js @@ -19,6 +19,7 @@ describe('workers/repository/process/lookup', () => { beforeEach(() => { config = { ...require('../../../../../lib/config/defaults').getConfig() }; config.manager = 'npm'; + config.versionScheme = 'npm'; config.rangeStrategy = 'replace'; global.repoCache = {}; jest.resetAllMocks(); diff --git a/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap b/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap index d164bc1cb6becc057b3192f2b2cccd110e2cba01..5cdd9fcdc5b2cdbd366d88f7fb33b77c07cd502f 100644 --- a/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap +++ b/test/workers/repository/updates/__snapshots__/flatten.spec.js.snap @@ -86,7 +86,7 @@ Array [ "unpublishSafe": false, "updateLockFiles": true, "updateNotScheduled": true, - "versionScheme": "semver", + "versionScheme": "npm", "vulnerabilityAlerts": Object { "commitMessageSuffix": "[SECURITY]", "enabled": true, @@ -181,7 +181,7 @@ Array [ "unpublishSafe": false, "updateLockFiles": true, "updateNotScheduled": true, - "versionScheme": "semver", + "versionScheme": "npm", "vulnerabilityAlerts": Object { "commitMessageSuffix": "[SECURITY]", "enabled": true, @@ -276,7 +276,7 @@ Array [ "updateLockFiles": true, "updateNotScheduled": true, "updateType": "lockFileMaintenance", - "versionScheme": "semver", + "versionScheme": "npm", "vulnerabilityAlerts": Object { "commitMessageSuffix": "[SECURITY]", "enabled": true, @@ -371,7 +371,7 @@ Array [ "unpublishSafe": false, "updateLockFiles": true, "updateNotScheduled": true, - "versionScheme": "semver", + "versionScheme": "npm", "vulnerabilityAlerts": Object { "commitMessageSuffix": "[SECURITY]", "enabled": true, @@ -466,7 +466,7 @@ Array [ "updateLockFiles": true, "updateNotScheduled": true, "updateType": "lockFileMaintenance", - "versionScheme": "semver", + "versionScheme": "npm", "vulnerabilityAlerts": Object { "commitMessageSuffix": "[SECURITY]", "enabled": true, @@ -561,7 +561,7 @@ Array [ "unpublishSafe": false, "updateLockFiles": true, "updateNotScheduled": true, - "versionScheme": "semver", + "versionScheme": "npm", "vulnerabilityAlerts": Object { "commitMessageSuffix": "[SECURITY]", "enabled": true,