renovate 40.0.6 → 40.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -67,7 +67,10 @@ function minSatisfyingVersion(versions, range) {
|
|
67
67
|
const getNewValue = ({ currentValue, rangeStrategy, currentVersion, newVersion, }) => {
|
68
68
|
let newValue = null;
|
69
69
|
if ((0, exports.isVersion)(currentValue)) {
|
70
|
-
newValue =
|
70
|
+
newValue =
|
71
|
+
currentValue.startsWith('v') && !newVersion.startsWith('v')
|
72
|
+
? `v${newVersion}`
|
73
|
+
: newVersion;
|
71
74
|
}
|
72
75
|
else if (currentValue.replace((0, regex_1.regEx)(/^=\s*/), '') === currentVersion) {
|
73
76
|
newValue = currentValue.replace(currentVersion, newVersion);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/ruby/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n eq,\n gt,\n maxSatisfying,\n minSatisfying,\n satisfies,\n valid,\n} from '@renovatebot/ruby-semver';\nimport { logger } from '../../../logger';\nimport type { RangeStrategy } from '../../../types/versioning';\nimport { regEx } from '../../../util/regex';\nimport type { NewValueConfig, VersioningApi } from '../types';\nimport { isSingleOperator, isValidOperator } from './operator';\nimport { ltr, parse as parseRange } from './range';\nimport { bump, pin, replace, widen } from './strategies';\nimport { parse as parseVersion } from './version';\n\nexport const id = 'ruby';\nexport const displayName = 'Ruby';\nexport const urls = [\n 'https://guides.rubygems.org/patterns/',\n 'https://bundler.io/v1.5/gemfile.html',\n 'https://www.devalot.com/articles/2012/04/gem-versions.html',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'pin',\n 'replace',\n];\n\nfunction vtrim<T = unknown>(version: T): string | T {\n if (typeof version === 'string') {\n return version.replace(regEx(/^v/), '').replace(regEx(/('|\")/g), '');\n }\n return version;\n}\n\nconst equals = (left: string, right: string): boolean =>\n eq(vtrim(left), vtrim(right));\n\nconst getMajor = (version: string): number =>\n parseVersion(vtrim(version)).major;\nconst getMinor = (version: string): number =>\n parseVersion(vtrim(version)).minor;\nconst getPatch = (version: string): number =>\n parseVersion(vtrim(version)).patch;\n\nexport const isVersion = (version: string): boolean => !!valid(vtrim(version));\nconst isGreaterThan = (left: string, right: string): boolean =>\n gt(vtrim(left), vtrim(right));\nconst isLessThanRange = (version: string, range: string): boolean =>\n !!ltr(vtrim(version), vtrim(range));\n\nconst isSingleVersion = (range: string): boolean => {\n const { version, operator } = parseRange(vtrim(range));\n\n return operator\n ? isVersion(version) && isSingleOperator(operator)\n : isVersion(version);\n};\n\nfunction isStable(version: string): boolean {\n const v = vtrim(version);\n return parseVersion(v).prerelease ? false : isVersion(v);\n}\n\nexport const isValid = (input: string): boolean =>\n input\n .split(',')\n .map((piece) => vtrim(piece.trim()))\n .every((range) => {\n const { version, operator } = parseRange(range);\n\n return operator\n ? isVersion(version) && isValidOperator(operator)\n : isVersion(version);\n });\n\nexport const matches = (version: string, range: string): boolean =>\n satisfies(vtrim(version), vtrim(range));\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return maxSatisfying(versions.map(vtrim), vtrim(range));\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return minSatisfying(versions.map(vtrim), vtrim(range));\n}\n\nconst getNewValue = ({\n currentValue,\n rangeStrategy,\n currentVersion,\n newVersion,\n}: NewValueConfig): string | null => {\n let newValue = null;\n if (isVersion(currentValue)) {\n newValue = currentValue.startsWith('v') ? 'v' + newVersion : newVersion;\n } else if (currentValue.replace(regEx(/^=\\s*/), '') === currentVersion) {\n newValue = currentValue.replace(currentVersion, newVersion);\n } else {\n switch (rangeStrategy) {\n case 'update-lockfile':\n if (satisfies(newVersion, vtrim(currentValue))) {\n newValue = vtrim(currentValue);\n } else {\n return getNewValue({\n currentValue,\n rangeStrategy: 'replace',\n currentVersion,\n newVersion,\n });\n }\n break;\n case 'pin':\n newValue = pin({ to: vtrim(newVersion) });\n break;\n case 'bump':\n newValue = bump({ range: vtrim(currentValue), to: vtrim(newVersion) });\n break;\n case 'auto':\n case 'replace':\n newValue = replace({\n range: vtrim(currentValue),\n to: vtrim(newVersion),\n });\n break;\n case 'widen':\n newValue = widen({\n range: vtrim(currentValue),\n to: vtrim(newVersion),\n });\n break;\n // istanbul ignore next\n default:\n logger.warn({ rangeStrategy }, 'Unsupported range strategy');\n }\n }\n if (newValue && regEx(/^('|\")/).exec(currentValue)) {\n const delimiter = currentValue[0];\n return newValue\n .split(',')\n .map((element) =>\n element.replace(\n regEx(`^(?<whitespace>\\\\s*)`),\n `$<whitespace>${delimiter}`,\n ),\n )\n .map(\n (element) =>\n element.replace(/(?<whitespace>\\s*)$/, `${delimiter}$<whitespace>`), // TODO #12875 adds ' at front when re2 is used\n )\n .join(',');\n }\n return newValue;\n};\n\nexport const sortVersions = (left: string, right: string): number =>\n gt(vtrim(left), vtrim(right)) ? 1 : -1;\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible: isVersion,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions,\n};\nexport default api;\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/ruby/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n eq,\n gt,\n maxSatisfying,\n minSatisfying,\n satisfies,\n valid,\n} from '@renovatebot/ruby-semver';\nimport { logger } from '../../../logger';\nimport type { RangeStrategy } from '../../../types/versioning';\nimport { regEx } from '../../../util/regex';\nimport type { NewValueConfig, VersioningApi } from '../types';\nimport { isSingleOperator, isValidOperator } from './operator';\nimport { ltr, parse as parseRange } from './range';\nimport { bump, pin, replace, widen } from './strategies';\nimport { parse as parseVersion } from './version';\n\nexport const id = 'ruby';\nexport const displayName = 'Ruby';\nexport const urls = [\n 'https://guides.rubygems.org/patterns/',\n 'https://bundler.io/v1.5/gemfile.html',\n 'https://www.devalot.com/articles/2012/04/gem-versions.html',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'pin',\n 'replace',\n];\n\nfunction vtrim<T = unknown>(version: T): string | T {\n if (typeof version === 'string') {\n return version.replace(regEx(/^v/), '').replace(regEx(/('|\")/g), '');\n }\n return version;\n}\n\nconst equals = (left: string, right: string): boolean =>\n eq(vtrim(left), vtrim(right));\n\nconst getMajor = (version: string): number =>\n parseVersion(vtrim(version)).major;\nconst getMinor = (version: string): number =>\n parseVersion(vtrim(version)).minor;\nconst getPatch = (version: string): number =>\n parseVersion(vtrim(version)).patch;\n\nexport const isVersion = (version: string): boolean => !!valid(vtrim(version));\nconst isGreaterThan = (left: string, right: string): boolean =>\n gt(vtrim(left), vtrim(right));\nconst isLessThanRange = (version: string, range: string): boolean =>\n !!ltr(vtrim(version), vtrim(range));\n\nconst isSingleVersion = (range: string): boolean => {\n const { version, operator } = parseRange(vtrim(range));\n\n return operator\n ? isVersion(version) && isSingleOperator(operator)\n : isVersion(version);\n};\n\nfunction isStable(version: string): boolean {\n const v = vtrim(version);\n return parseVersion(v).prerelease ? false : isVersion(v);\n}\n\nexport const isValid = (input: string): boolean =>\n input\n .split(',')\n .map((piece) => vtrim(piece.trim()))\n .every((range) => {\n const { version, operator } = parseRange(range);\n\n return operator\n ? isVersion(version) && isValidOperator(operator)\n : isVersion(version);\n });\n\nexport const matches = (version: string, range: string): boolean =>\n satisfies(vtrim(version), vtrim(range));\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return maxSatisfying(versions.map(vtrim), vtrim(range));\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return minSatisfying(versions.map(vtrim), vtrim(range));\n}\n\nconst getNewValue = ({\n currentValue,\n rangeStrategy,\n currentVersion,\n newVersion,\n}: NewValueConfig): string | null => {\n let newValue = null;\n if (isVersion(currentValue)) {\n newValue =\n currentValue.startsWith('v') && !newVersion.startsWith('v')\n ? `v${newVersion}`\n : newVersion;\n } else if (currentValue.replace(regEx(/^=\\s*/), '') === currentVersion) {\n newValue = currentValue.replace(currentVersion, newVersion);\n } else {\n switch (rangeStrategy) {\n case 'update-lockfile':\n if (satisfies(newVersion, vtrim(currentValue))) {\n newValue = vtrim(currentValue);\n } else {\n return getNewValue({\n currentValue,\n rangeStrategy: 'replace',\n currentVersion,\n newVersion,\n });\n }\n break;\n case 'pin':\n newValue = pin({ to: vtrim(newVersion) });\n break;\n case 'bump':\n newValue = bump({ range: vtrim(currentValue), to: vtrim(newVersion) });\n break;\n case 'auto':\n case 'replace':\n newValue = replace({\n range: vtrim(currentValue),\n to: vtrim(newVersion),\n });\n break;\n case 'widen':\n newValue = widen({\n range: vtrim(currentValue),\n to: vtrim(newVersion),\n });\n break;\n // istanbul ignore next\n default:\n logger.warn({ rangeStrategy }, 'Unsupported range strategy');\n }\n }\n if (newValue && regEx(/^('|\")/).exec(currentValue)) {\n const delimiter = currentValue[0];\n return newValue\n .split(',')\n .map((element) =>\n element.replace(\n regEx(`^(?<whitespace>\\\\s*)`),\n `$<whitespace>${delimiter}`,\n ),\n )\n .map(\n (element) =>\n element.replace(/(?<whitespace>\\s*)$/, `${delimiter}$<whitespace>`), // TODO #12875 adds ' at front when re2 is used\n )\n .join(',');\n }\n return newValue;\n};\n\nexport const sortVersions = (left: string, right: string): number =>\n gt(vtrim(left), vtrim(right)) ? 1 : -1;\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible: isVersion,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions,\n};\nexport default api;\n"]}
|