renovate 43.79.0 → 43.80.0
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.
- package/dist/modules/versioning/maven/compare.js +9 -6
- package/dist/modules/versioning/maven/compare.js.map +1 -1
- package/dist/util/package-rules/index.js +1 -0
- package/dist/util/package-rules/index.js.map +1 -1
- package/dist/workers/repository/onboarding/pr/pr-list.js +1 -1
- package/dist/workers/repository/onboarding/pr/pr-list.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -24,7 +24,7 @@ function isTransition(prevChar, nextChar) {
|
|
|
24
24
|
return isDigit(prevChar) && isLetter(nextChar) || isLetter(prevChar) && isDigit(nextChar);
|
|
25
25
|
}
|
|
26
26
|
function iterateTokens(versionStr, cb) {
|
|
27
|
-
let currentPrefix =
|
|
27
|
+
let currentPrefix = "";
|
|
28
28
|
let currentVal = "";
|
|
29
29
|
function yieldToken(transition = false) {
|
|
30
30
|
const val = currentVal || "0";
|
|
@@ -51,10 +51,14 @@ function iterateTokens(versionStr, cb) {
|
|
|
51
51
|
yieldToken();
|
|
52
52
|
currentPrefix = PREFIX_DOT;
|
|
53
53
|
currentVal = "";
|
|
54
|
-
} else if (prevChar
|
|
54
|
+
} else if (prevChar === null && (nextChar === "v" || nextChar === "V")) currentPrefix = nextChar;
|
|
55
|
+
else if (currentVal !== "" && isTransition(prevChar, nextChar)) {
|
|
55
56
|
yieldToken(true);
|
|
56
57
|
currentPrefix = PREFIX_HYPHEN;
|
|
57
58
|
currentVal = nextChar;
|
|
59
|
+
} else if (currentVal === "" && (currentPrefix === "v" || currentPrefix === "V") && !isDigit(nextChar)) {
|
|
60
|
+
currentVal = currentVal.concat(currentPrefix, nextChar);
|
|
61
|
+
currentPrefix = "";
|
|
58
62
|
} else currentVal = currentVal.concat(nextChar);
|
|
59
63
|
});
|
|
60
64
|
}
|
|
@@ -66,7 +70,7 @@ function tokenize(versionStr, preserveMinorZeroes = false) {
|
|
|
66
70
|
let buf = [];
|
|
67
71
|
let result = [];
|
|
68
72
|
let leadingZero = true;
|
|
69
|
-
iterateTokens(versionStr.toLowerCase()
|
|
73
|
+
iterateTokens(versionStr.toLowerCase(), (token) => {
|
|
70
74
|
if (token.prefix === "PREFIX_HYPHEN" || token.type === "TYPE_QUALIFIER") buf = [];
|
|
71
75
|
buf.push(token);
|
|
72
76
|
if (!isNull(token)) {
|
|
@@ -277,9 +281,8 @@ function rangeToStr(fullRange) {
|
|
|
277
281
|
].join("")).join(",");
|
|
278
282
|
}
|
|
279
283
|
function tokensToStr(tokens) {
|
|
280
|
-
return tokens.reduce((result, token
|
|
281
|
-
|
|
282
|
-
return `${result}${idx !== 0 && token.val !== "" ? prefix : ""}${token.val}`;
|
|
284
|
+
return tokens.reduce((result, token) => {
|
|
285
|
+
return `${result}${token.prefix === "PREFIX_DOT" ? "." : token.prefix === "PREFIX_HYPHEN" ? "-" : token.prefix}${token.val}`;
|
|
283
286
|
}, "");
|
|
284
287
|
}
|
|
285
288
|
function coerceRangeValue(prev, next) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","names":[],"sources":["../../../../lib/modules/versioning/maven/compare.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\n\nconst PREFIX_DOT = 'PREFIX_DOT';\nconst PREFIX_HYPHEN = 'PREFIX_HYPHEN';\n\nconst TYPE_NUMBER = 'TYPE_NUMBER';\nconst TYPE_QUALIFIER = 'TYPE_QUALIFIER';\n\nexport interface BaseToken {\n prefix: string;\n type: typeof TYPE_NUMBER | typeof TYPE_QUALIFIER;\n val: number | string;\n isTransition?: boolean;\n}\n\nexport interface NumberToken extends BaseToken {\n type: typeof TYPE_NUMBER;\n val: number;\n}\n\nexport interface QualifierToken extends BaseToken {\n type: typeof TYPE_QUALIFIER;\n val: string;\n}\n\nexport type Token = NumberToken | QualifierToken;\n\nfunction iterateChars(\n str: string,\n cb: (p: string | null, n: string | null) => void,\n): void {\n let prev = null;\n let next = null;\n for (let i = 0; i < str.length; i += 1) {\n next = str.charAt(i);\n cb(prev, next);\n prev = next;\n }\n cb(prev, null);\n}\n\nfunction isDigit(char: string): boolean {\n return regEx(/^\\d$/).test(char);\n}\n\nfunction isLetter(char: string): boolean {\n return regEx(/^[a-z_+]$/i).test(char);\n}\n\nfunction isTransition(prevChar: string, nextChar: string): boolean {\n return (\n (isDigit(prevChar) && isLetter(nextChar)) ||\n (isLetter(prevChar) && isDigit(nextChar))\n );\n}\n\nfunction iterateTokens(versionStr: string, cb: (token: Token) => void): void {\n let currentPrefix = PREFIX_HYPHEN;\n let currentVal = '';\n\n function yieldToken(transition = false): void {\n const val = currentVal || '0';\n if (regEx(/^\\d+$/).test(val)) {\n cb({\n prefix: currentPrefix,\n type: TYPE_NUMBER,\n val: parseInt(val, 10),\n isTransition: transition,\n });\n } else {\n cb({\n prefix: currentPrefix,\n type: TYPE_QUALIFIER,\n val,\n isTransition: transition,\n });\n }\n }\n\n iterateChars(versionStr, (prevChar, nextChar) => {\n if (nextChar === null) {\n yieldToken();\n } else if (nextChar === '-') {\n yieldToken();\n currentPrefix = PREFIX_HYPHEN;\n currentVal = '';\n } else if (nextChar === '.') {\n yieldToken();\n currentPrefix = PREFIX_DOT;\n currentVal = '';\n } else if (prevChar !== null && isTransition(prevChar, nextChar)) {\n yieldToken(true);\n currentPrefix = PREFIX_HYPHEN;\n currentVal = nextChar;\n } else {\n currentVal = currentVal.concat(nextChar);\n }\n });\n}\n\nfunction isNull(token: Token): boolean {\n const val = token.val;\n return (\n val === 0 ||\n val === '' ||\n val === 'final' ||\n val === 'ga' ||\n val === 'release' ||\n val === 'latest' ||\n val === 'sr'\n );\n}\n\nfunction tokenize(versionStr: string, preserveMinorZeroes = false): Token[] {\n let buf: Token[] = [];\n let result: Token[] = [];\n let leadingZero = true;\n iterateTokens(versionStr.toLowerCase().replace(regEx(/^v/i), ''), (token) => {\n if (token.prefix === PREFIX_HYPHEN || token.type === TYPE_QUALIFIER) {\n buf = [];\n }\n buf.push(token);\n if (!isNull(token)) {\n leadingZero = false;\n result = result.concat(buf);\n buf = [];\n } else if (leadingZero || preserveMinorZeroes) {\n result = result.concat(buf);\n buf = [];\n }\n });\n return result;\n}\n\nfunction nullFor(token: Token): Token {\n return token.type === TYPE_NUMBER\n ? {\n prefix: token.prefix,\n type: TYPE_NUMBER,\n val: 0,\n }\n : {\n prefix: token.prefix,\n type: TYPE_QUALIFIER,\n val: '',\n };\n}\n\nfunction commonOrder(token: Token): number {\n if (token.type === TYPE_QUALIFIER) {\n return 1;\n }\n if (token.prefix === PREFIX_HYPHEN && token.type === TYPE_NUMBER) {\n return 2;\n }\n return 3;\n}\n\nexport const QualifierTypes = {\n Alpha: 1,\n Beta: 2,\n Milestone: 3,\n RC: 4,\n Snapshot: 5,\n Release: 6,\n SP: 7,\n} as const;\n\nexport function qualifierType(token: Token): number | null {\n const val = token.val;\n if (val === 'alpha' || (token.isTransition && val === 'a')) {\n return QualifierTypes.Alpha;\n }\n if (val === 'beta' || (token.isTransition && val === 'b')) {\n return QualifierTypes.Beta;\n }\n if (val === 'milestone' || (token.isTransition && val === 'm')) {\n return QualifierTypes.Milestone;\n }\n if (val === 'rc' || val === 'cr' || val === 'preview') {\n return QualifierTypes.RC;\n }\n if (val === 'snapshot' || val === 'snap') {\n return QualifierTypes.Snapshot;\n }\n if (\n val === '' ||\n val === 'final' ||\n val === 'ga' ||\n val === 'release' ||\n val === 'latest' ||\n val === 'sr'\n ) {\n return QualifierTypes.Release;\n }\n if (val === 'sp') {\n return QualifierTypes.SP;\n }\n return null;\n}\n\nfunction qualifierCmp(left: Token, right: Token): number {\n const leftOrder = qualifierType(left);\n const rightOrder = qualifierType(right);\n if (leftOrder && rightOrder) {\n if (leftOrder < rightOrder) {\n return -1;\n }\n if (leftOrder > rightOrder) {\n return 1;\n }\n return 0;\n }\n\n if (leftOrder && leftOrder < QualifierTypes.Release) {\n return -1;\n }\n if (rightOrder && rightOrder < QualifierTypes.Release) {\n return 1;\n }\n\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n return 0;\n}\n\nfunction tokenCmp(left: Token, right: Token): number {\n const leftOrder = commonOrder(left);\n const rightOrder = commonOrder(right);\n\n if (leftOrder < rightOrder) {\n return -1;\n }\n if (leftOrder > rightOrder) {\n return 1;\n }\n\n if (left.type === TYPE_NUMBER && right.type === TYPE_NUMBER) {\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n return 0;\n }\n\n return qualifierCmp(left, right);\n}\n\nfunction compare(left: string, right: string): number {\n const leftTokens = tokenize(left);\n const rightTokens = tokenize(right);\n const length = Math.max(leftTokens.length, rightTokens.length);\n for (let idx = 0; idx < length; idx += 1) {\n const leftToken = leftTokens[idx] || nullFor(rightTokens[idx]);\n const rightToken = rightTokens[idx] || nullFor(leftTokens[idx]);\n const cmpResult = tokenCmp(leftToken, rightToken);\n if (cmpResult !== 0) {\n return cmpResult;\n }\n }\n return 0;\n}\n\nfunction isVersion(version: unknown): version is string {\n if (!version || typeof version !== 'string') {\n return false;\n }\n if (!regEx(/^[-.a-z_+0-9]+$/i).test(version)) {\n return false;\n }\n if (regEx(/^[.-]/).test(version)) {\n return false;\n }\n if (regEx(/[.-]$/).test(version)) {\n return false;\n }\n if (['latest', 'release'].includes(version.toLowerCase())) {\n return false;\n }\n const tokens = tokenize(version);\n return !!tokens.length;\n}\n\nconst INCLUDING_POINT = 'INCLUDING_POINT';\nconst EXCLUDING_POINT = 'EXCLUDING_POINT';\n\nfunction parseRange(rangeStr: string): Range[] | null {\n function emptyInterval(): Range {\n return {\n leftType: null,\n leftValue: null,\n leftBracket: null,\n rightType: null,\n rightValue: null,\n rightBracket: null,\n };\n }\n\n const commaSplit = rangeStr.split(regEx(/\\s*,\\s*/));\n let ranges: Range[] | null = [];\n let interval = emptyInterval();\n\n commaSplit.forEach((subStr) => {\n if (!ranges) {\n return;\n }\n if (interval.leftType === null) {\n if (regEx(/^\\[.*]$/).test(subStr)) {\n const ver = subStr.slice(1, -1);\n ranges.push({\n leftType: INCLUDING_POINT,\n leftValue: ver,\n leftBracket: '[',\n rightType: INCLUDING_POINT,\n rightValue: ver,\n rightBracket: ']',\n });\n interval = emptyInterval();\n } else if (subStr.startsWith('[')) {\n const ver = subStr.slice(1);\n interval.leftType = INCLUDING_POINT;\n interval.leftValue = ver;\n interval.leftBracket = '[';\n } else if (subStr.startsWith('(') || subStr.startsWith(']')) {\n const ver = subStr.slice(1);\n interval.leftType = EXCLUDING_POINT;\n interval.leftValue = ver;\n interval.leftBracket = subStr[0];\n } else {\n ranges = null;\n }\n } else if (subStr.endsWith(']')) {\n const ver = subStr.slice(0, -1);\n interval.rightType = INCLUDING_POINT;\n interval.rightValue = ver;\n interval.rightBracket = ']';\n ranges.push(interval);\n interval = emptyInterval();\n } else if (subStr.endsWith(')') || subStr.endsWith('[')) {\n const ver = subStr.slice(0, -1);\n interval.rightType = EXCLUDING_POINT;\n interval.rightValue = ver;\n interval.rightBracket = subStr.endsWith(')') ? ')' : '[';\n ranges.push(interval);\n interval = emptyInterval();\n } else {\n ranges = null;\n }\n });\n\n if (interval.leftType) {\n return null;\n } // something like '[1,2],[3'\n if (!ranges?.length) {\n return null;\n }\n\n const lastIdx = ranges.length - 1;\n let prevValue: string | null = null;\n const result: Range[] = [];\n for (let idx = 0; idx < ranges.length; idx += 1) {\n const range = ranges[idx];\n const { leftType, leftValue, rightType, rightValue } = range;\n\n if (idx === 0 && leftValue === '') {\n if (leftType === EXCLUDING_POINT && isVersion(rightValue)) {\n prevValue = rightValue;\n result.push({ ...range, leftValue: null });\n continue;\n }\n return null;\n }\n if (idx === lastIdx && rightValue === '') {\n if (rightType === EXCLUDING_POINT && isVersion(leftValue)) {\n if (prevValue && compare(prevValue, leftValue) === 1) {\n return null;\n }\n result.push({ ...range, rightValue: null });\n continue;\n }\n return null;\n }\n if (isVersion(leftValue) && isVersion(rightValue)) {\n if (compare(leftValue, rightValue) === 1) {\n return null;\n }\n if (prevValue && compare(prevValue, leftValue) === 1) {\n return null;\n }\n prevValue = rightValue;\n result.push(range);\n continue;\n }\n return null;\n }\n return result;\n}\n\nfunction isValid(str: string): boolean {\n if (!str) {\n return false;\n }\n return isVersion(str) || !!parseRange(str);\n}\n\nexport interface Range {\n leftType: typeof INCLUDING_POINT | typeof EXCLUDING_POINT | null;\n leftValue: string | null;\n leftBracket: string | null;\n rightType: typeof INCLUDING_POINT | typeof EXCLUDING_POINT | null;\n rightValue: string | null;\n rightBracket: string | null;\n}\n\nfunction rangeToStr(fullRange: Range[] | null): string | null {\n if (fullRange === null) {\n return null;\n }\n\n const valToStr = (val: string | null): string => val ?? '';\n\n if (fullRange.length === 1) {\n const { leftBracket, rightBracket, leftValue, rightValue } = fullRange[0];\n if (\n leftValue === rightValue &&\n leftBracket === '[' &&\n rightBracket === ']'\n ) {\n return `[${valToStr(leftValue)}]`;\n }\n }\n\n const intervals = fullRange.map((val) =>\n [\n val.leftBracket,\n valToStr(val.leftValue),\n ',',\n valToStr(val.rightValue),\n val.rightBracket,\n ].join(''),\n );\n return intervals.join(',');\n}\n\nfunction tokensToStr(tokens: Token[]): string {\n return tokens.reduce((result: string, token: Token, idx) => {\n const prefix = token.prefix === PREFIX_DOT ? '.' : '-';\n return `${result}${idx !== 0 && token.val !== '' ? prefix : ''}${\n token.val\n }`;\n }, '');\n}\n\nfunction coerceRangeValue(prev: string, next: string): string {\n const prevTokens = tokenize(prev, true);\n const nextTokens = tokenize(next, true);\n const resultTokens = nextTokens.slice(0, prevTokens.length);\n const align = Math.max(0, prevTokens.length - nextTokens.length);\n if (align > 0) {\n resultTokens.push(...prevTokens.slice(prevTokens.length - align));\n }\n return tokensToStr(resultTokens);\n}\n\nfunction incrementRangeValue(value: string): string {\n const tokens = tokenize(value);\n const lastToken = tokens[tokens.length - 1];\n if (typeof lastToken.val === 'number') {\n lastToken.val += 1;\n return coerceRangeValue(value, tokensToStr(tokens));\n }\n return value;\n}\n\nfunction autoExtendMavenRange(\n currentRepresentation: string,\n newValue: string,\n): string | null {\n const range = parseRange(currentRepresentation);\n if (!range) {\n return currentRepresentation;\n }\n const isPoint = (vals: Range[]): boolean => {\n if (vals.length !== 1) {\n return false;\n }\n const { leftType, leftValue, rightType, rightValue } = vals[0];\n return (\n leftType === 'INCLUDING_POINT' &&\n leftType === rightType &&\n leftValue === rightValue\n );\n };\n if (isPoint(range)) {\n return `[${newValue}]`;\n }\n\n const interval = [...range].reverse().find((elem) => {\n const { rightType, rightValue } = elem;\n return (\n rightValue === null ||\n (rightType === INCLUDING_POINT && compare(rightValue, newValue) === -1) ||\n (rightType === EXCLUDING_POINT && compare(rightValue, newValue) !== 1)\n );\n });\n\n if (!interval) {\n return currentRepresentation;\n }\n\n const { leftValue, rightValue } = interval;\n if (\n leftValue !== null &&\n rightValue !== null &&\n incrementRangeValue(leftValue) === rightValue\n ) {\n if (compare(newValue, leftValue) !== -1) {\n interval.leftValue = coerceRangeValue(leftValue, newValue);\n interval.rightValue = incrementRangeValue(interval.leftValue);\n }\n } else if (rightValue !== null) {\n if (interval.rightType === INCLUDING_POINT) {\n const tokens = tokenize(rightValue);\n const lastToken = tokens[tokens.length - 1];\n if (typeof lastToken.val === 'number') {\n interval.rightValue = coerceRangeValue(rightValue, newValue);\n } else {\n interval.rightValue = newValue;\n }\n } else {\n interval.rightValue = incrementRangeValue(\n coerceRangeValue(rightValue, newValue),\n );\n }\n } else if (leftValue !== null) {\n interval.leftValue = coerceRangeValue(leftValue, newValue);\n }\n\n return rangeToStr(range);\n}\n\nfunction isSubversion(majorVersion: string, minorVersion: string): boolean {\n const majorTokens = tokenize(majorVersion);\n const minorTokens = tokenize(minorVersion);\n\n let result = true;\n const len = majorTokens.length;\n for (let idx = 0; idx < len; idx += 1) {\n const major = majorTokens[idx];\n const minor = minorTokens[idx] || nullFor(majorTokens[idx]);\n const cmpResult = tokenCmp(major, minor);\n if (cmpResult !== 0) {\n result = false;\n break;\n }\n }\n return result;\n}\n\nexport {\n PREFIX_DOT,\n PREFIX_HYPHEN,\n TYPE_NUMBER,\n TYPE_QUALIFIER,\n tokenize,\n isSubversion,\n compare,\n isVersion,\n isVersion as isSingleVersion,\n isValid,\n parseRange,\n rangeToStr,\n INCLUDING_POINT,\n EXCLUDING_POINT,\n autoExtendMavenRange,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compare.js","names":[],"sources":["../../../../lib/modules/versioning/maven/compare.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\n\nconst PREFIX_DOT = 'PREFIX_DOT';\nconst PREFIX_HYPHEN = 'PREFIX_HYPHEN';\n\nconst TYPE_NUMBER = 'TYPE_NUMBER';\nconst TYPE_QUALIFIER = 'TYPE_QUALIFIER';\n\nexport interface BaseToken {\n prefix: string;\n type: typeof TYPE_NUMBER | typeof TYPE_QUALIFIER;\n val: number | string;\n isTransition?: boolean;\n}\n\nexport interface NumberToken extends BaseToken {\n type: typeof TYPE_NUMBER;\n val: number;\n}\n\nexport interface QualifierToken extends BaseToken {\n type: typeof TYPE_QUALIFIER;\n val: string;\n}\n\nexport type Token = NumberToken | QualifierToken;\n\nfunction iterateChars(\n str: string,\n cb: (p: string | null, n: string | null) => void,\n): void {\n let prev = null;\n let next = null;\n for (let i = 0; i < str.length; i += 1) {\n next = str.charAt(i);\n cb(prev, next);\n prev = next;\n }\n cb(prev, null);\n}\n\nfunction isDigit(char: string): boolean {\n return regEx(/^\\d$/).test(char);\n}\n\nfunction isLetter(char: string): boolean {\n return regEx(/^[a-z_+]$/i).test(char);\n}\n\nfunction isTransition(prevChar: string, nextChar: string): boolean {\n return (\n (isDigit(prevChar) && isLetter(nextChar)) ||\n (isLetter(prevChar) && isDigit(nextChar))\n );\n}\n\nfunction iterateTokens(versionStr: string, cb: (token: Token) => void): void {\n let currentPrefix = '';\n let currentVal = '';\n\n function yieldToken(transition = false): void {\n const val = currentVal || '0';\n if (regEx(/^\\d+$/).test(val)) {\n cb({\n prefix: currentPrefix,\n type: TYPE_NUMBER,\n val: parseInt(val, 10),\n isTransition: transition,\n });\n } else {\n cb({\n prefix: currentPrefix,\n type: TYPE_QUALIFIER,\n val,\n isTransition: transition,\n });\n }\n }\n\n iterateChars(versionStr, (prevChar, nextChar) => {\n if (nextChar === null) {\n yieldToken();\n } else if (nextChar === '-') {\n yieldToken();\n currentPrefix = PREFIX_HYPHEN;\n currentVal = '';\n } else if (nextChar === '.') {\n yieldToken();\n currentPrefix = PREFIX_DOT;\n currentVal = '';\n } else if (prevChar === null && (nextChar === 'v' || nextChar === 'V')) {\n currentPrefix = nextChar;\n } else {\n if (currentVal !== '' && isTransition(prevChar!, nextChar)) {\n yieldToken(true);\n currentPrefix = PREFIX_HYPHEN;\n currentVal = nextChar;\n } else if (\n currentVal === '' &&\n (currentPrefix === 'v' || currentPrefix === 'V') &&\n !isDigit(nextChar)\n ) {\n currentVal = currentVal.concat(currentPrefix, nextChar);\n currentPrefix = '';\n } else {\n currentVal = currentVal.concat(nextChar);\n }\n }\n });\n}\n\nfunction isNull(token: Token): boolean {\n const val = token.val;\n return (\n val === 0 ||\n val === '' ||\n val === 'final' ||\n val === 'ga' ||\n val === 'release' ||\n val === 'latest' ||\n val === 'sr'\n );\n}\n\nfunction tokenize(versionStr: string, preserveMinorZeroes = false): Token[] {\n let buf: Token[] = [];\n let result: Token[] = [];\n let leadingZero = true;\n iterateTokens(versionStr.toLowerCase(), (token) => {\n if (token.prefix === PREFIX_HYPHEN || token.type === TYPE_QUALIFIER) {\n buf = [];\n }\n buf.push(token);\n if (!isNull(token)) {\n leadingZero = false;\n result = result.concat(buf);\n buf = [];\n } else if (leadingZero || preserveMinorZeroes) {\n result = result.concat(buf);\n buf = [];\n }\n });\n return result;\n}\n\nfunction nullFor(token: Token): Token {\n return token.type === TYPE_NUMBER\n ? {\n prefix: token.prefix,\n type: TYPE_NUMBER,\n val: 0,\n }\n : {\n prefix: token.prefix,\n type: TYPE_QUALIFIER,\n val: '',\n };\n}\n\nfunction commonOrder(token: Token): number {\n if (token.type === TYPE_QUALIFIER) {\n return 1;\n }\n if (token.prefix === PREFIX_HYPHEN && token.type === TYPE_NUMBER) {\n return 2;\n }\n return 3;\n}\n\nexport const QualifierTypes = {\n Alpha: 1,\n Beta: 2,\n Milestone: 3,\n RC: 4,\n Snapshot: 5,\n Release: 6,\n SP: 7,\n} as const;\n\nexport function qualifierType(token: Token): number | null {\n const val = token.val;\n if (val === 'alpha' || (token.isTransition && val === 'a')) {\n return QualifierTypes.Alpha;\n }\n if (val === 'beta' || (token.isTransition && val === 'b')) {\n return QualifierTypes.Beta;\n }\n if (val === 'milestone' || (token.isTransition && val === 'm')) {\n return QualifierTypes.Milestone;\n }\n if (val === 'rc' || val === 'cr' || val === 'preview') {\n return QualifierTypes.RC;\n }\n if (val === 'snapshot' || val === 'snap') {\n return QualifierTypes.Snapshot;\n }\n if (\n val === '' ||\n val === 'final' ||\n val === 'ga' ||\n val === 'release' ||\n val === 'latest' ||\n val === 'sr'\n ) {\n return QualifierTypes.Release;\n }\n if (val === 'sp') {\n return QualifierTypes.SP;\n }\n return null;\n}\n\nfunction qualifierCmp(left: Token, right: Token): number {\n const leftOrder = qualifierType(left);\n const rightOrder = qualifierType(right);\n if (leftOrder && rightOrder) {\n if (leftOrder < rightOrder) {\n return -1;\n }\n if (leftOrder > rightOrder) {\n return 1;\n }\n return 0;\n }\n\n if (leftOrder && leftOrder < QualifierTypes.Release) {\n return -1;\n }\n if (rightOrder && rightOrder < QualifierTypes.Release) {\n return 1;\n }\n\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n return 0;\n}\n\nfunction tokenCmp(left: Token, right: Token): number {\n const leftOrder = commonOrder(left);\n const rightOrder = commonOrder(right);\n\n if (leftOrder < rightOrder) {\n return -1;\n }\n if (leftOrder > rightOrder) {\n return 1;\n }\n\n if (left.type === TYPE_NUMBER && right.type === TYPE_NUMBER) {\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n return 0;\n }\n\n return qualifierCmp(left, right);\n}\n\nfunction compare(left: string, right: string): number {\n const leftTokens = tokenize(left);\n const rightTokens = tokenize(right);\n const length = Math.max(leftTokens.length, rightTokens.length);\n for (let idx = 0; idx < length; idx += 1) {\n const leftToken = leftTokens[idx] || nullFor(rightTokens[idx]);\n const rightToken = rightTokens[idx] || nullFor(leftTokens[idx]);\n const cmpResult = tokenCmp(leftToken, rightToken);\n if (cmpResult !== 0) {\n return cmpResult;\n }\n }\n return 0;\n}\n\nfunction isVersion(version: unknown): version is string {\n if (!version || typeof version !== 'string') {\n return false;\n }\n if (!regEx(/^[-.a-z_+0-9]+$/i).test(version)) {\n return false;\n }\n if (regEx(/^[.-]/).test(version)) {\n return false;\n }\n if (regEx(/[.-]$/).test(version)) {\n return false;\n }\n if (['latest', 'release'].includes(version.toLowerCase())) {\n return false;\n }\n const tokens = tokenize(version);\n return !!tokens.length;\n}\n\nconst INCLUDING_POINT = 'INCLUDING_POINT';\nconst EXCLUDING_POINT = 'EXCLUDING_POINT';\n\nfunction parseRange(rangeStr: string): Range[] | null {\n function emptyInterval(): Range {\n return {\n leftType: null,\n leftValue: null,\n leftBracket: null,\n rightType: null,\n rightValue: null,\n rightBracket: null,\n };\n }\n\n const commaSplit = rangeStr.split(regEx(/\\s*,\\s*/));\n let ranges: Range[] | null = [];\n let interval = emptyInterval();\n\n commaSplit.forEach((subStr) => {\n if (!ranges) {\n return;\n }\n if (interval.leftType === null) {\n if (regEx(/^\\[.*]$/).test(subStr)) {\n const ver = subStr.slice(1, -1);\n ranges.push({\n leftType: INCLUDING_POINT,\n leftValue: ver,\n leftBracket: '[',\n rightType: INCLUDING_POINT,\n rightValue: ver,\n rightBracket: ']',\n });\n interval = emptyInterval();\n } else if (subStr.startsWith('[')) {\n const ver = subStr.slice(1);\n interval.leftType = INCLUDING_POINT;\n interval.leftValue = ver;\n interval.leftBracket = '[';\n } else if (subStr.startsWith('(') || subStr.startsWith(']')) {\n const ver = subStr.slice(1);\n interval.leftType = EXCLUDING_POINT;\n interval.leftValue = ver;\n interval.leftBracket = subStr[0];\n } else {\n ranges = null;\n }\n } else if (subStr.endsWith(']')) {\n const ver = subStr.slice(0, -1);\n interval.rightType = INCLUDING_POINT;\n interval.rightValue = ver;\n interval.rightBracket = ']';\n ranges.push(interval);\n interval = emptyInterval();\n } else if (subStr.endsWith(')') || subStr.endsWith('[')) {\n const ver = subStr.slice(0, -1);\n interval.rightType = EXCLUDING_POINT;\n interval.rightValue = ver;\n interval.rightBracket = subStr.endsWith(')') ? ')' : '[';\n ranges.push(interval);\n interval = emptyInterval();\n } else {\n ranges = null;\n }\n });\n\n if (interval.leftType) {\n return null;\n } // something like '[1,2],[3'\n if (!ranges?.length) {\n return null;\n }\n\n const lastIdx = ranges.length - 1;\n let prevValue: string | null = null;\n const result: Range[] = [];\n for (let idx = 0; idx < ranges.length; idx += 1) {\n const range = ranges[idx];\n const { leftType, leftValue, rightType, rightValue } = range;\n\n if (idx === 0 && leftValue === '') {\n if (leftType === EXCLUDING_POINT && isVersion(rightValue)) {\n prevValue = rightValue;\n result.push({ ...range, leftValue: null });\n continue;\n }\n return null;\n }\n if (idx === lastIdx && rightValue === '') {\n if (rightType === EXCLUDING_POINT && isVersion(leftValue)) {\n if (prevValue && compare(prevValue, leftValue) === 1) {\n return null;\n }\n result.push({ ...range, rightValue: null });\n continue;\n }\n return null;\n }\n if (isVersion(leftValue) && isVersion(rightValue)) {\n if (compare(leftValue, rightValue) === 1) {\n return null;\n }\n if (prevValue && compare(prevValue, leftValue) === 1) {\n return null;\n }\n prevValue = rightValue;\n result.push(range);\n continue;\n }\n return null;\n }\n return result;\n}\n\nfunction isValid(str: string): boolean {\n if (!str) {\n return false;\n }\n return isVersion(str) || !!parseRange(str);\n}\n\nexport interface Range {\n leftType: typeof INCLUDING_POINT | typeof EXCLUDING_POINT | null;\n leftValue: string | null;\n leftBracket: string | null;\n rightType: typeof INCLUDING_POINT | typeof EXCLUDING_POINT | null;\n rightValue: string | null;\n rightBracket: string | null;\n}\n\nfunction rangeToStr(fullRange: Range[] | null): string | null {\n if (fullRange === null) {\n return null;\n }\n\n const valToStr = (val: string | null): string => val ?? '';\n\n if (fullRange.length === 1) {\n const { leftBracket, rightBracket, leftValue, rightValue } = fullRange[0];\n if (\n leftValue === rightValue &&\n leftBracket === '[' &&\n rightBracket === ']'\n ) {\n return `[${valToStr(leftValue)}]`;\n }\n }\n\n const intervals = fullRange.map((val) =>\n [\n val.leftBracket,\n valToStr(val.leftValue),\n ',',\n valToStr(val.rightValue),\n val.rightBracket,\n ].join(''),\n );\n return intervals.join(',');\n}\n\nfunction tokensToStr(tokens: Token[]): string {\n return tokens.reduce((result: string, token: Token) => {\n const prefix =\n token.prefix === PREFIX_DOT\n ? '.'\n : token.prefix === PREFIX_HYPHEN\n ? '-'\n : token.prefix;\n return `${result}${prefix}${token.val}`;\n }, '');\n}\n\nfunction coerceRangeValue(prev: string, next: string): string {\n const prevTokens = tokenize(prev, true);\n const nextTokens = tokenize(next, true);\n const resultTokens = nextTokens.slice(0, prevTokens.length);\n const align = Math.max(0, prevTokens.length - nextTokens.length);\n if (align > 0) {\n resultTokens.push(...prevTokens.slice(prevTokens.length - align));\n }\n return tokensToStr(resultTokens);\n}\n\nfunction incrementRangeValue(value: string): string {\n const tokens = tokenize(value);\n const lastToken = tokens[tokens.length - 1];\n if (typeof lastToken.val === 'number') {\n lastToken.val += 1;\n return coerceRangeValue(value, tokensToStr(tokens));\n }\n return value;\n}\n\nfunction autoExtendMavenRange(\n currentRepresentation: string,\n newValue: string,\n): string | null {\n const range = parseRange(currentRepresentation);\n if (!range) {\n return currentRepresentation;\n }\n const isPoint = (vals: Range[]): boolean => {\n if (vals.length !== 1) {\n return false;\n }\n const { leftType, leftValue, rightType, rightValue } = vals[0];\n return (\n leftType === 'INCLUDING_POINT' &&\n leftType === rightType &&\n leftValue === rightValue\n );\n };\n if (isPoint(range)) {\n return `[${newValue}]`;\n }\n\n const interval = [...range].reverse().find((elem) => {\n const { rightType, rightValue } = elem;\n return (\n rightValue === null ||\n (rightType === INCLUDING_POINT && compare(rightValue, newValue) === -1) ||\n (rightType === EXCLUDING_POINT && compare(rightValue, newValue) !== 1)\n );\n });\n\n if (!interval) {\n return currentRepresentation;\n }\n\n const { leftValue, rightValue } = interval;\n if (\n leftValue !== null &&\n rightValue !== null &&\n incrementRangeValue(leftValue) === rightValue\n ) {\n if (compare(newValue, leftValue) !== -1) {\n interval.leftValue = coerceRangeValue(leftValue, newValue);\n interval.rightValue = incrementRangeValue(interval.leftValue);\n }\n } else if (rightValue !== null) {\n if (interval.rightType === INCLUDING_POINT) {\n const tokens = tokenize(rightValue);\n const lastToken = tokens[tokens.length - 1];\n if (typeof lastToken.val === 'number') {\n interval.rightValue = coerceRangeValue(rightValue, newValue);\n } else {\n interval.rightValue = newValue;\n }\n } else {\n interval.rightValue = incrementRangeValue(\n coerceRangeValue(rightValue, newValue),\n );\n }\n } else if (leftValue !== null) {\n interval.leftValue = coerceRangeValue(leftValue, newValue);\n }\n\n return rangeToStr(range);\n}\n\nfunction isSubversion(majorVersion: string, minorVersion: string): boolean {\n const majorTokens = tokenize(majorVersion);\n const minorTokens = tokenize(minorVersion);\n\n let result = true;\n const len = majorTokens.length;\n for (let idx = 0; idx < len; idx += 1) {\n const major = majorTokens[idx];\n const minor = minorTokens[idx] || nullFor(majorTokens[idx]);\n const cmpResult = tokenCmp(major, minor);\n if (cmpResult !== 0) {\n result = false;\n break;\n }\n }\n return result;\n}\n\nexport {\n PREFIX_DOT,\n PREFIX_HYPHEN,\n TYPE_NUMBER,\n TYPE_QUALIFIER,\n tokenize,\n isSubversion,\n compare,\n isVersion,\n isVersion as isSingleVersion,\n isValid,\n parseRange,\n rangeToStr,\n INCLUDING_POINT,\n EXCLUDING_POINT,\n autoExtendMavenRange,\n};\n"],"mappings":"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"}
|
|
@@ -45,6 +45,7 @@ async function applyPackageRules(inputConfig, stageName) {
|
|
|
45
45
|
logger.debug(`Overriding packageName from ${config.packageName} to ${toApply.overridePackageName} for ${config.depName}`);
|
|
46
46
|
config.packageName = compile(toApply.overridePackageName, config);
|
|
47
47
|
}
|
|
48
|
+
if (isString(toApply.sourceUrl)) toApply.sourceUrl = compile(toApply.sourceUrl, config);
|
|
48
49
|
delete toApply.overrideDatasource;
|
|
49
50
|
delete toApply.overrideDepName;
|
|
50
51
|
delete toApply.overridePackageName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../lib/util/package-rules/index.ts"],"sourcesContent":["import { isNullOrUndefined, isString, isTruthy } from '@sindresorhus/is';\nimport _slugify from 'slugify';\nimport { mergeChildConfig } from '../../config/index.ts';\nimport type {\n PackageRule,\n PackageRuleInputConfig,\n} from '../../config/types.ts';\nimport { logger } from '../../logger/index.ts';\nimport type { StageName } from '../../types/skip-reason.ts';\nimport { compile } from '../template/index.ts';\nimport matchers from './matchers.ts';\n\nconst slugify = _slugify as unknown as typeof _slugify.default;\n\nasync function matchesRule(\n inputConfig: PackageRuleInputConfig,\n packageRule: PackageRule,\n): Promise<boolean> {\n for (const matcher of matchers) {\n const isMatch = await matcher.matches(inputConfig, packageRule);\n\n // no rules are defined\n if (isNullOrUndefined(isMatch)) {\n continue;\n }\n\n if (!isTruthy(isMatch)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport async function applyPackageRules<T extends PackageRuleInputConfig>(\n inputConfig: T,\n stageName?: StageName,\n): Promise<T> {\n let config = { ...inputConfig };\n const packageRules = config.packageRules ?? [];\n logger.trace(\n { dependency: config.depName, packageRules },\n `Checking against ${packageRules.length} packageRules`,\n );\n for (const packageRule of packageRules) {\n // This rule is considered matched if there was at least one positive match and no negative matches\n if (await matchesRule(config, packageRule)) {\n // Package rule config overrides any existing config\n const toApply = removeMatchers({ ...packageRule });\n if (config.groupSlug && packageRule.groupName && !packageRule.groupSlug) {\n // Need to apply groupSlug otherwise the existing one will take precedence\n toApply.groupSlug = slugify(packageRule.groupName, {\n lower: true,\n });\n }\n if (toApply.enabled === false && config.enabled !== false) {\n config.skipReason = 'package-rules';\n if (stageName) {\n config.skipStage = stageName;\n }\n }\n if (toApply.enabled === true && config.enabled === false) {\n delete config.skipReason;\n delete config.skipStage;\n }\n if (\n isString(toApply.overrideDatasource) &&\n toApply.overrideDatasource !== config.datasource\n ) {\n logger.debug(\n `Overriding datasource from ${config.datasource} to ${toApply.overrideDatasource} for ${config.depName}`,\n );\n config.datasource = toApply.overrideDatasource;\n }\n if (\n isString(toApply.overrideDepName) &&\n toApply.overrideDepName !== config.depName\n ) {\n logger.debug(\n `Overriding depName from ${config.depName} to ${toApply.overrideDepName}`,\n );\n config.depName = compile(toApply.overrideDepName, config);\n }\n if (\n isString(toApply.overridePackageName) &&\n toApply.overridePackageName !== config.packageName\n ) {\n logger.debug(\n `Overriding packageName from ${config.packageName} to ${toApply.overridePackageName} for ${config.depName}`,\n );\n config.packageName = compile(toApply.overridePackageName, config);\n }\n delete toApply.overrideDatasource;\n delete toApply.overrideDepName;\n delete toApply.overridePackageName;\n config = mergeChildConfig(config, toApply);\n }\n }\n return config;\n}\n\nfunction removeMatchers<T extends Record<string, unknown>>(\n packageRule: T,\n): Record<string, unknown> {\n for (const key of Object.keys(packageRule)) {\n if (key.startsWith('match') || key.startsWith('exclude')) {\n delete packageRule[key];\n }\n }\n\n return packageRule;\n}\n"],"mappings":";;;;;;;;AAYA,MAAM,UAAU;AAEhB,eAAe,YACb,aACA,aACkB;AAClB,MAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,UAAU,MAAM,QAAQ,QAAQ,aAAa,YAAY;AAG/D,MAAI,kBAAkB,QAAQ,CAC5B;AAGF,MAAI,CAAC,SAAS,QAAQ,CACpB,QAAO;;AAIX,QAAO;;AAGT,eAAsB,kBACpB,aACA,WACY;CACZ,IAAI,SAAS,EAAE,GAAG,aAAa;CAC/B,MAAM,eAAe,OAAO,gBAAgB,EAAE;AAC9C,QAAO,MACL;EAAE,YAAY,OAAO;EAAS;EAAc,EAC5C,oBAAoB,aAAa,OAAO,eACzC;AACD,MAAK,MAAM,eAAe,aAExB,KAAI,MAAM,YAAY,QAAQ,YAAY,EAAE;EAE1C,MAAM,UAAU,eAAe,EAAE,GAAG,aAAa,CAAC;AAClD,MAAI,OAAO,aAAa,YAAY,aAAa,CAAC,YAAY,UAE5D,SAAQ,YAAY,QAAQ,YAAY,WAAW,EACjD,OAAO,MACR,CAAC;AAEJ,MAAI,QAAQ,YAAY,SAAS,OAAO,YAAY,OAAO;AACzD,UAAO,aAAa;AACpB,OAAI,UACF,QAAO,YAAY;;AAGvB,MAAI,QAAQ,YAAY,QAAQ,OAAO,YAAY,OAAO;AACxD,UAAO,OAAO;AACd,UAAO,OAAO;;AAEhB,MACE,SAAS,QAAQ,mBAAmB,IACpC,QAAQ,uBAAuB,OAAO,YACtC;AACA,UAAO,MACL,8BAA8B,OAAO,WAAW,MAAM,QAAQ,mBAAmB,OAAO,OAAO,UAChG;AACD,UAAO,aAAa,QAAQ;;AAE9B,MACE,SAAS,QAAQ,gBAAgB,IACjC,QAAQ,oBAAoB,OAAO,SACnC;AACA,UAAO,MACL,2BAA2B,OAAO,QAAQ,MAAM,QAAQ,kBACzD;AACD,UAAO,UAAU,QAAQ,QAAQ,iBAAiB,OAAO;;AAE3D,MACE,SAAS,QAAQ,oBAAoB,IACrC,QAAQ,wBAAwB,OAAO,aACvC;AACA,UAAO,MACL,+BAA+B,OAAO,YAAY,MAAM,QAAQ,oBAAoB,OAAO,OAAO,UACnG;AACD,UAAO,cAAc,QAAQ,QAAQ,qBAAqB,OAAO;;AAEnE,SAAO,QAAQ;AACf,SAAO,QAAQ;AACf,SAAO,QAAQ;AACf,WAAS,iBAAiB,QAAQ,QAAQ;;AAG9C,QAAO;;AAGT,SAAS,eACP,aACyB;AACzB,MAAK,MAAM,OAAO,OAAO,KAAK,YAAY,CACxC,KAAI,IAAI,WAAW,QAAQ,IAAI,IAAI,WAAW,UAAU,CACtD,QAAO,YAAY;AAIvB,QAAO"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../lib/util/package-rules/index.ts"],"sourcesContent":["import { isNullOrUndefined, isString, isTruthy } from '@sindresorhus/is';\nimport _slugify from 'slugify';\nimport { mergeChildConfig } from '../../config/index.ts';\nimport type {\n PackageRule,\n PackageRuleInputConfig,\n} from '../../config/types.ts';\nimport { logger } from '../../logger/index.ts';\nimport type { StageName } from '../../types/skip-reason.ts';\nimport { compile } from '../template/index.ts';\nimport matchers from './matchers.ts';\n\nconst slugify = _slugify as unknown as typeof _slugify.default;\n\nasync function matchesRule(\n inputConfig: PackageRuleInputConfig,\n packageRule: PackageRule,\n): Promise<boolean> {\n for (const matcher of matchers) {\n const isMatch = await matcher.matches(inputConfig, packageRule);\n\n // no rules are defined\n if (isNullOrUndefined(isMatch)) {\n continue;\n }\n\n if (!isTruthy(isMatch)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport async function applyPackageRules<T extends PackageRuleInputConfig>(\n inputConfig: T,\n stageName?: StageName,\n): Promise<T> {\n let config = { ...inputConfig };\n const packageRules = config.packageRules ?? [];\n logger.trace(\n { dependency: config.depName, packageRules },\n `Checking against ${packageRules.length} packageRules`,\n );\n for (const packageRule of packageRules) {\n // This rule is considered matched if there was at least one positive match and no negative matches\n if (await matchesRule(config, packageRule)) {\n // Package rule config overrides any existing config\n const toApply = removeMatchers({ ...packageRule });\n if (config.groupSlug && packageRule.groupName && !packageRule.groupSlug) {\n // Need to apply groupSlug otherwise the existing one will take precedence\n toApply.groupSlug = slugify(packageRule.groupName, {\n lower: true,\n });\n }\n if (toApply.enabled === false && config.enabled !== false) {\n config.skipReason = 'package-rules';\n if (stageName) {\n config.skipStage = stageName;\n }\n }\n if (toApply.enabled === true && config.enabled === false) {\n delete config.skipReason;\n delete config.skipStage;\n }\n if (\n isString(toApply.overrideDatasource) &&\n toApply.overrideDatasource !== config.datasource\n ) {\n logger.debug(\n `Overriding datasource from ${config.datasource} to ${toApply.overrideDatasource} for ${config.depName}`,\n );\n config.datasource = toApply.overrideDatasource;\n }\n if (\n isString(toApply.overrideDepName) &&\n toApply.overrideDepName !== config.depName\n ) {\n logger.debug(\n `Overriding depName from ${config.depName} to ${toApply.overrideDepName}`,\n );\n config.depName = compile(toApply.overrideDepName, config);\n }\n if (\n isString(toApply.overridePackageName) &&\n toApply.overridePackageName !== config.packageName\n ) {\n logger.debug(\n `Overriding packageName from ${config.packageName} to ${toApply.overridePackageName} for ${config.depName}`,\n );\n config.packageName = compile(toApply.overridePackageName, config);\n }\n if (isString(toApply.sourceUrl)) {\n toApply.sourceUrl = compile(toApply.sourceUrl, config);\n }\n delete toApply.overrideDatasource;\n delete toApply.overrideDepName;\n delete toApply.overridePackageName;\n config = mergeChildConfig(config, toApply);\n }\n }\n return config;\n}\n\nfunction removeMatchers<T extends Record<string, unknown>>(\n packageRule: T,\n): Record<string, unknown> {\n for (const key of Object.keys(packageRule)) {\n if (key.startsWith('match') || key.startsWith('exclude')) {\n delete packageRule[key];\n }\n }\n\n return packageRule;\n}\n"],"mappings":";;;;;;;;AAYA,MAAM,UAAU;AAEhB,eAAe,YACb,aACA,aACkB;AAClB,MAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,UAAU,MAAM,QAAQ,QAAQ,aAAa,YAAY;AAG/D,MAAI,kBAAkB,QAAQ,CAC5B;AAGF,MAAI,CAAC,SAAS,QAAQ,CACpB,QAAO;;AAIX,QAAO;;AAGT,eAAsB,kBACpB,aACA,WACY;CACZ,IAAI,SAAS,EAAE,GAAG,aAAa;CAC/B,MAAM,eAAe,OAAO,gBAAgB,EAAE;AAC9C,QAAO,MACL;EAAE,YAAY,OAAO;EAAS;EAAc,EAC5C,oBAAoB,aAAa,OAAO,eACzC;AACD,MAAK,MAAM,eAAe,aAExB,KAAI,MAAM,YAAY,QAAQ,YAAY,EAAE;EAE1C,MAAM,UAAU,eAAe,EAAE,GAAG,aAAa,CAAC;AAClD,MAAI,OAAO,aAAa,YAAY,aAAa,CAAC,YAAY,UAE5D,SAAQ,YAAY,QAAQ,YAAY,WAAW,EACjD,OAAO,MACR,CAAC;AAEJ,MAAI,QAAQ,YAAY,SAAS,OAAO,YAAY,OAAO;AACzD,UAAO,aAAa;AACpB,OAAI,UACF,QAAO,YAAY;;AAGvB,MAAI,QAAQ,YAAY,QAAQ,OAAO,YAAY,OAAO;AACxD,UAAO,OAAO;AACd,UAAO,OAAO;;AAEhB,MACE,SAAS,QAAQ,mBAAmB,IACpC,QAAQ,uBAAuB,OAAO,YACtC;AACA,UAAO,MACL,8BAA8B,OAAO,WAAW,MAAM,QAAQ,mBAAmB,OAAO,OAAO,UAChG;AACD,UAAO,aAAa,QAAQ;;AAE9B,MACE,SAAS,QAAQ,gBAAgB,IACjC,QAAQ,oBAAoB,OAAO,SACnC;AACA,UAAO,MACL,2BAA2B,OAAO,QAAQ,MAAM,QAAQ,kBACzD;AACD,UAAO,UAAU,QAAQ,QAAQ,iBAAiB,OAAO;;AAE3D,MACE,SAAS,QAAQ,oBAAoB,IACrC,QAAQ,wBAAwB,OAAO,aACvC;AACA,UAAO,MACL,+BAA+B,OAAO,YAAY,MAAM,QAAQ,oBAAoB,OAAO,OAAO,UACnG;AACD,UAAO,cAAc,QAAQ,QAAQ,qBAAqB,OAAO;;AAEnE,MAAI,SAAS,QAAQ,UAAU,CAC7B,SAAQ,YAAY,QAAQ,QAAQ,WAAW,OAAO;AAExD,SAAO,QAAQ;AACf,SAAO,QAAQ;AACf,SAAO,QAAQ;AACf,WAAS,iBAAiB,QAAQ,QAAQ;;AAG9C,QAAO;;AAGT,SAAS,eACP,aACyB;AACzB,MAAK,MAAM,OAAO,OAAO,KAAK,YAAY,CACxC,KAAI,IAAI,WAAW,QAAQ,IAAI,IAAI,WAAW,UAAU,CACtD,QAAO,YAAY;AAIvB,QAAO"}
|
|
@@ -38,7 +38,7 @@ function getExpectedPrList(config, branches) {
|
|
|
38
38
|
const prHourlyLimit = config.prHourlyLimit;
|
|
39
39
|
const commitHourlyLimit = config.commitHourlyLimit;
|
|
40
40
|
if (commitHourlyLimit > 0 && commitHourlyLimit < 5 && commitHourlyLimit < branches.length) prDesc += emojify(`\n\n:children_crossing: Branch creation and rebasing will be limited to maximum ${commitHourlyLimit} per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for \`commitHourlyLimit\` for details.\n\n`);
|
|
41
|
-
else if (prHourlyLimit > 0 && prHourlyLimit < 5 && prHourlyLimit < branches.length) prDesc += emojify(`\n\n:children_crossing: PR creation will be limited to maximum ${prHourlyLimit} per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for \`prHourlyLimit\` for details.\n\n`);
|
|
41
|
+
else if (prHourlyLimit > 0 && prHourlyLimit < 5 && prHourlyLimit < branches.length) prDesc += emojify(`\n\n:children_crossing: PR creation will be limited to maximum ${prHourlyLimit} per hour, so it doesn't swamp any CI resources or overwhelm the project. See [docs for \`prHourlyLimit\`](https://docs.renovatebot.com/configuration-options/#prhourlylimit) for details.\n\n`);
|
|
42
42
|
return prDesc;
|
|
43
43
|
}
|
|
44
44
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-list.js","names":[],"sources":["../../../../../lib/workers/repository/onboarding/pr/pr-list.ts"],"sourcesContent":["import type { RenovateConfig } from '../../../../config/types.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport { emojify } from '../../../../util/emoji.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport type { BranchConfig } from '../../../types.ts';\n\nexport function getExpectedPrList(\n config: RenovateConfig,\n branches: BranchConfig[],\n): string {\n logger.debug('getExpectedPrList()');\n logger.trace({ config });\n let prDesc = `\\n### What to Expect\\n\\n`;\n if (!branches.length) {\n return `${prDesc}It looks like your repository dependencies are already up-to-date and no Pull Requests will be necessary right away.\\n`;\n }\n prDesc += `With your current configuration, Renovate will create ${branches.length} Pull Request`;\n prDesc += branches.length > 1 ? `s:\\n\\n` : `:\\n\\n`;\n\n for (const branch of branches) {\n const prTitleRe = regEx(/@([a-z]+\\/[a-z]+)/);\n // TODO #22198\n prDesc += `<details>\\n<summary>${branch.prTitle!.replace(\n prTitleRe,\n '@​$1',\n )}</summary>\\n\\n`;\n if (branch.schedule?.length) {\n prDesc += ` - Schedule: ${JSON.stringify(branch.schedule)}\\n`;\n }\n prDesc += ` - Branch name: \\`${branch.branchName}\\`\\n`;\n prDesc += branch.baseBranch\n ? ` - Merge into: \\`${branch.baseBranch}\\`\\n`\n : '';\n const seen: string[] = [];\n for (const upgrade of branch.upgrades) {\n let text = '';\n if (upgrade.updateType === 'lockFileMaintenance') {\n text += ' - Regenerate lock files to use latest dependency versions';\n } else {\n if (upgrade.updateType === 'pin') {\n text += ' - Pin ';\n } else {\n text += ' - Upgrade ';\n }\n if (upgrade.sourceUrl) {\n // TODO: types (#22198)\n text += `[${upgrade.depName!}](${upgrade.sourceUrl})`;\n } else {\n text += upgrade.depName!.replace(prTitleRe, '@​$1');\n }\n // TODO: types (#22198)\n text += upgrade.isLockfileUpdate\n ? ` to \\`${upgrade.newVersion!}\\``\n : ` to \\`${upgrade.newDigest ?? upgrade.newValue!}\\``;\n text += '\\n';\n }\n if (!seen.includes(text)) {\n prDesc += text;\n seen.push(text);\n }\n }\n prDesc += '\\n\\n';\n prDesc += '</details>\\n\\n';\n }\n // TODO: type (#22198)\n const prHourlyLimit = config.prHourlyLimit!;\n const commitHourlyLimit = config.commitHourlyLimit!;\n if (\n commitHourlyLimit > 0 &&\n commitHourlyLimit < 5 &&\n commitHourlyLimit < branches.length\n ) {\n prDesc += emojify(\n `\\n\\n:children_crossing: Branch creation and rebasing will be limited to maximum ${commitHourlyLimit} per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for \\`commitHourlyLimit\\` for details.\\n\\n`,\n );\n } else if (\n prHourlyLimit > 0 &&\n prHourlyLimit < 5 &&\n prHourlyLimit < branches.length\n ) {\n prDesc += emojify(\n `\\n\\n:children_crossing: PR creation will be limited to maximum ${prHourlyLimit} per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for \\`prHourlyLimit\\` for details.\\n\\n`,\n );\n }\n return prDesc;\n}\n"],"mappings":";;;;AAMA,SAAgB,kBACd,QACA,UACQ;AACR,QAAO,MAAM,sBAAsB;AACnC,QAAO,MAAM,EAAE,QAAQ,CAAC;CACxB,IAAI,SAAS;AACb,KAAI,CAAC,SAAS,OACZ,QAAO,GAAG,OAAO;AAEnB,WAAU,yDAAyD,SAAS,OAAO;AACnF,WAAU,SAAS,SAAS,IAAI,WAAW;AAE3C,MAAK,MAAM,UAAU,UAAU;EAC7B,MAAM,YAAY,MAAM,oBAAoB;AAE5C,YAAU,uBAAuB,OAAO,QAAS,QAC/C,WACA,aACD,CAAC;AACF,MAAI,OAAO,UAAU,OACnB,WAAU,iBAAiB,KAAK,UAAU,OAAO,SAAS,CAAC;AAE7D,YAAU,sBAAsB,OAAO,WAAW;AAClD,YAAU,OAAO,aACb,qBAAqB,OAAO,WAAW,QACvC;EACJ,MAAM,OAAiB,EAAE;AACzB,OAAK,MAAM,WAAW,OAAO,UAAU;GACrC,IAAI,OAAO;AACX,OAAI,QAAQ,eAAe,sBACzB,SAAQ;QACH;AACL,QAAI,QAAQ,eAAe,MACzB,SAAQ;QAER,SAAQ;AAEV,QAAI,QAAQ,UAEV,SAAQ,IAAI,QAAQ,QAAS,IAAI,QAAQ,UAAU;QAEnD,SAAQ,QAAQ,QAAS,QAAQ,WAAW,aAAa;AAG3D,YAAQ,QAAQ,mBACZ,SAAS,QAAQ,WAAY,MAC7B,SAAS,QAAQ,aAAa,QAAQ,SAAU;AACpD,YAAQ;;AAEV,OAAI,CAAC,KAAK,SAAS,KAAK,EAAE;AACxB,cAAU;AACV,SAAK,KAAK,KAAK;;;AAGnB,YAAU;AACV,YAAU;;CAGZ,MAAM,gBAAgB,OAAO;CAC7B,MAAM,oBAAoB,OAAO;AACjC,KACE,oBAAoB,KACpB,oBAAoB,KACpB,oBAAoB,SAAS,OAE7B,WAAU,QACR,mFAAmF,kBAAkB,+HACtG;UAED,gBAAgB,KAChB,gBAAgB,KAChB,gBAAgB,SAAS,OAEzB,WAAU,QACR,kEAAkE,cAAc,
|
|
1
|
+
{"version":3,"file":"pr-list.js","names":[],"sources":["../../../../../lib/workers/repository/onboarding/pr/pr-list.ts"],"sourcesContent":["import type { RenovateConfig } from '../../../../config/types.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport { emojify } from '../../../../util/emoji.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport type { BranchConfig } from '../../../types.ts';\n\nexport function getExpectedPrList(\n config: RenovateConfig,\n branches: BranchConfig[],\n): string {\n logger.debug('getExpectedPrList()');\n logger.trace({ config });\n let prDesc = `\\n### What to Expect\\n\\n`;\n if (!branches.length) {\n return `${prDesc}It looks like your repository dependencies are already up-to-date and no Pull Requests will be necessary right away.\\n`;\n }\n prDesc += `With your current configuration, Renovate will create ${branches.length} Pull Request`;\n prDesc += branches.length > 1 ? `s:\\n\\n` : `:\\n\\n`;\n\n for (const branch of branches) {\n const prTitleRe = regEx(/@([a-z]+\\/[a-z]+)/);\n // TODO #22198\n prDesc += `<details>\\n<summary>${branch.prTitle!.replace(\n prTitleRe,\n '@​$1',\n )}</summary>\\n\\n`;\n if (branch.schedule?.length) {\n prDesc += ` - Schedule: ${JSON.stringify(branch.schedule)}\\n`;\n }\n prDesc += ` - Branch name: \\`${branch.branchName}\\`\\n`;\n prDesc += branch.baseBranch\n ? ` - Merge into: \\`${branch.baseBranch}\\`\\n`\n : '';\n const seen: string[] = [];\n for (const upgrade of branch.upgrades) {\n let text = '';\n if (upgrade.updateType === 'lockFileMaintenance') {\n text += ' - Regenerate lock files to use latest dependency versions';\n } else {\n if (upgrade.updateType === 'pin') {\n text += ' - Pin ';\n } else {\n text += ' - Upgrade ';\n }\n if (upgrade.sourceUrl) {\n // TODO: types (#22198)\n text += `[${upgrade.depName!}](${upgrade.sourceUrl})`;\n } else {\n text += upgrade.depName!.replace(prTitleRe, '@​$1');\n }\n // TODO: types (#22198)\n text += upgrade.isLockfileUpdate\n ? ` to \\`${upgrade.newVersion!}\\``\n : ` to \\`${upgrade.newDigest ?? upgrade.newValue!}\\``;\n text += '\\n';\n }\n if (!seen.includes(text)) {\n prDesc += text;\n seen.push(text);\n }\n }\n prDesc += '\\n\\n';\n prDesc += '</details>\\n\\n';\n }\n // TODO: type (#22198)\n const prHourlyLimit = config.prHourlyLimit!;\n const commitHourlyLimit = config.commitHourlyLimit!;\n if (\n commitHourlyLimit > 0 &&\n commitHourlyLimit < 5 &&\n commitHourlyLimit < branches.length\n ) {\n prDesc += emojify(\n `\\n\\n:children_crossing: Branch creation and rebasing will be limited to maximum ${commitHourlyLimit} per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for \\`commitHourlyLimit\\` for details.\\n\\n`,\n );\n } else if (\n prHourlyLimit > 0 &&\n prHourlyLimit < 5 &&\n prHourlyLimit < branches.length\n ) {\n prDesc += emojify(\n `\\n\\n:children_crossing: PR creation will be limited to maximum ${prHourlyLimit} per hour, so it doesn't swamp any CI resources or overwhelm the project. See [docs for \\`prHourlyLimit\\`](https://docs.renovatebot.com/configuration-options/#prhourlylimit) for details.\\n\\n`,\n );\n }\n return prDesc;\n}\n"],"mappings":";;;;AAMA,SAAgB,kBACd,QACA,UACQ;AACR,QAAO,MAAM,sBAAsB;AACnC,QAAO,MAAM,EAAE,QAAQ,CAAC;CACxB,IAAI,SAAS;AACb,KAAI,CAAC,SAAS,OACZ,QAAO,GAAG,OAAO;AAEnB,WAAU,yDAAyD,SAAS,OAAO;AACnF,WAAU,SAAS,SAAS,IAAI,WAAW;AAE3C,MAAK,MAAM,UAAU,UAAU;EAC7B,MAAM,YAAY,MAAM,oBAAoB;AAE5C,YAAU,uBAAuB,OAAO,QAAS,QAC/C,WACA,aACD,CAAC;AACF,MAAI,OAAO,UAAU,OACnB,WAAU,iBAAiB,KAAK,UAAU,OAAO,SAAS,CAAC;AAE7D,YAAU,sBAAsB,OAAO,WAAW;AAClD,YAAU,OAAO,aACb,qBAAqB,OAAO,WAAW,QACvC;EACJ,MAAM,OAAiB,EAAE;AACzB,OAAK,MAAM,WAAW,OAAO,UAAU;GACrC,IAAI,OAAO;AACX,OAAI,QAAQ,eAAe,sBACzB,SAAQ;QACH;AACL,QAAI,QAAQ,eAAe,MACzB,SAAQ;QAER,SAAQ;AAEV,QAAI,QAAQ,UAEV,SAAQ,IAAI,QAAQ,QAAS,IAAI,QAAQ,UAAU;QAEnD,SAAQ,QAAQ,QAAS,QAAQ,WAAW,aAAa;AAG3D,YAAQ,QAAQ,mBACZ,SAAS,QAAQ,WAAY,MAC7B,SAAS,QAAQ,aAAa,QAAQ,SAAU;AACpD,YAAQ;;AAEV,OAAI,CAAC,KAAK,SAAS,KAAK,EAAE;AACxB,cAAU;AACV,SAAK,KAAK,KAAK;;;AAGnB,YAAU;AACV,YAAU;;CAGZ,MAAM,gBAAgB,OAAO;CAC7B,MAAM,oBAAoB,OAAO;AACjC,KACE,oBAAoB,KACpB,oBAAoB,KACpB,oBAAoB,SAAS,OAE7B,WAAU,QACR,mFAAmF,kBAAkB,+HACtG;UAED,gBAAgB,KAChB,gBAAgB,KAChB,gBAAgB,SAAS,OAEzB,WAAU,QACR,kEAAkE,cAAc,gMACjF;AAEH,QAAO"}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 43.
|
|
3
|
+
"title": "JSON schema for Renovate 43.80.0 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "43.
|
|
5
|
+
"x-renovate-version": "43.80.0",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|