renovate 42.16.1 → 42.17.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.
|
@@ -73,8 +73,9 @@ function handleConcurrentLimits(key, config) {
|
|
|
73
73
|
return false;
|
|
74
74
|
}
|
|
75
75
|
function calcLimit(upgrades, limitName) {
|
|
76
|
+
const uniqueUpgrades = new Map(upgrades.map((u) => [u.depName, u]));
|
|
76
77
|
logger_1.logger.debug({
|
|
77
|
-
limits:
|
|
78
|
+
limits: Array.from(uniqueUpgrades.values()).map((upg) => {
|
|
78
79
|
return { depName: upg.depName, [limitName]: upg[limitName] };
|
|
79
80
|
}),
|
|
80
81
|
}, `${limitName} of the upgrades present in this branch`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../lib/workers/global/limits.ts"],"names":[],"mappings":"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","sourcesContent":["import { isInteger, isNumber, isUndefined } from '@sindresorhus/is';\nimport { logger } from '../../logger';\nimport type { BranchConfig, BranchUpgradeConfig } from '../types';\n\nexport type Limit = 'Commits';\ninterface LimitValue {\n max: number | null;\n current: number;\n}\n\nconst limits = new Map<Limit, LimitValue>();\n\nexport function resetAllLimits(): void {\n limits.clear();\n}\n\nexport function setMaxLimit(key: Limit, val: unknown): void {\n const max = typeof val === 'number' ? Math.max(0, val) : null;\n limits.set(key, { current: 0, max });\n logger.debug(`${key} limit = ${max!}`);\n}\n\nexport function incLimitedValue(key: Limit, incBy = 1): void {\n const limit = limits.get(key) ?? { max: null, current: 0 };\n limits.set(key, {\n ...limit,\n current: limit.current + incBy,\n });\n}\n\nfunction handleCommitsLimit(): boolean {\n const limit = limits.get('Commits');\n // TODO: fix me?\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (!limit || limit.max === null) {\n return false;\n }\n const { max, current } = limit;\n return max - current <= 0;\n}\n\nexport type CountName = 'ConcurrentPRs' | 'HourlyPRs' | 'Branches';\n\ntype BranchLimitName =\n | 'branchConcurrentLimit'\n | 'prConcurrentLimit'\n | 'prHourlyLimit';\n\nexport const counts = new Map<CountName, number>();\n\nexport function getCount(key: CountName): number {\n const count = counts.get(key);\n // istanbul ignore if: should not happen\n if (!isInteger(count)) {\n logger.debug(`Could not compute the count of ${key}, returning zero.`);\n return 0;\n }\n return count;\n}\n\nexport function setCount(key: CountName, val: number): void {\n counts.set(key, val);\n logger.debug(`${key} count = ${val}`);\n}\n\nexport function incCountValue(key: CountName, incBy = 1): void {\n const count = getCount(key);\n counts.set(key, count + incBy);\n}\n\nfunction handleConcurrentLimits(\n key: Exclude<CountName, 'HourlyPRs'>,\n config: BranchConfig,\n): boolean {\n const limitKey =\n key === 'Branches' ? 'branchConcurrentLimit' : 'prConcurrentLimit';\n\n // calculate the limits for this branch\n const hourlyLimit = calcLimit(config.upgrades, 'prHourlyLimit');\n const hourlyPrCount = getCount('HourlyPRs');\n\n // if a limit is defined ( >0 ) and limit reached return true ie. limit has been reached\n if (hourlyLimit && hourlyPrCount >= hourlyLimit) {\n return true;\n }\n\n const limitValue = calcLimit(config.upgrades, limitKey);\n const currentCount = getCount(key);\n\n if (limitValue && currentCount >= limitValue) {\n return true;\n }\n\n return false;\n}\n\nexport function calcLimit(\n upgrades: BranchUpgradeConfig[],\n limitName: BranchLimitName,\n): number {\n logger.debug(\n {\n limits: upgrades.map((upg) => {\n return { depName: upg.depName, [limitName]: upg[limitName] };\n }),\n },\n `${limitName} of the upgrades present in this branch`,\n );\n\n if (hasMultipleLimits(upgrades, limitName)) {\n logger.once.debug(\n `Branch has multiple ${limitName} limits. The lowest among these will be selected.`,\n );\n }\n\n let lowestLimit = Number.MAX_SAFE_INTEGER;\n for (const upgrade of upgrades) {\n let limit = upgrade[limitName];\n\n // inherit prConcurrentLimit value incase branchConcurrentLimit is null\n if (!isNumber(limit) && limitName === 'branchConcurrentLimit') {\n limit = upgrade.prConcurrentLimit;\n }\n\n // istanbul ignore if: should never happen as all limits get a default value\n if (isUndefined(limit)) {\n limit = Number.MAX_SAFE_INTEGER;\n }\n\n // no limit\n if (limit === 0 || limit === null) {\n logger.debug(\n `${limitName} of this branch is unlimited, because atleast one of the upgrade has it's ${limitName} set to \"No limit\" ie. 0 or null`,\n );\n return 0;\n }\n\n // limit is set\n lowestLimit = limit < lowestLimit ? limit : lowestLimit;\n }\n\n logger.debug(\n `Calculated lowest ${limitName} among the upgrades present in this branch is ${lowestLimit}.`,\n );\n return lowestLimit;\n}\n\nexport function hasMultipleLimits(\n upgrades: BranchUpgradeConfig[],\n limitName: BranchLimitName,\n): boolean {\n if (upgrades.length === 1) {\n return false;\n }\n\n const distinctLimits = new Set<number>();\n for (const upgrade of upgrades) {\n let limitValue = upgrade[limitName];\n\n // inherit prConcurrentLimit value incase branchConcurrentLimit is null\n if (limitName === 'branchConcurrentLimit' && !isNumber(limitValue)) {\n limitValue = upgrade.prConcurrentLimit;\n }\n\n // istanbul ignore if: should not happen as the limits are of type number\n if (limitValue === null) {\n limitValue = 0;\n }\n\n if (!isUndefined(limitValue) && !distinctLimits.has(limitValue)) {\n distinctLimits.add(limitValue);\n }\n }\n\n return distinctLimits.size > 1;\n}\n\nexport function isLimitReached(limit: 'Commits'): boolean;\nexport function isLimitReached(\n limit: 'Branches' | 'ConcurrentPRs',\n config: BranchConfig,\n): boolean;\nexport function isLimitReached(\n limit: 'Commits' | 'Branches' | 'ConcurrentPRs',\n config?: BranchConfig,\n): boolean {\n if (limit === 'Commits') {\n return handleCommitsLimit();\n }\n\n if (config) {\n return handleConcurrentLimits(limit, config);\n }\n\n // istanbul ignore next: should not happen\n throw new Error(\n 'Config is required for computing limits for Branches and PullRequests',\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../lib/workers/global/limits.ts"],"names":[],"mappings":"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","sourcesContent":["import { isInteger, isNumber, isUndefined } from '@sindresorhus/is';\nimport { logger } from '../../logger';\nimport type { BranchConfig, BranchUpgradeConfig } from '../types';\n\nexport type Limit = 'Commits';\ninterface LimitValue {\n max: number | null;\n current: number;\n}\n\nconst limits = new Map<Limit, LimitValue>();\n\nexport function resetAllLimits(): void {\n limits.clear();\n}\n\nexport function setMaxLimit(key: Limit, val: unknown): void {\n const max = typeof val === 'number' ? Math.max(0, val) : null;\n limits.set(key, { current: 0, max });\n logger.debug(`${key} limit = ${max!}`);\n}\n\nexport function incLimitedValue(key: Limit, incBy = 1): void {\n const limit = limits.get(key) ?? { max: null, current: 0 };\n limits.set(key, {\n ...limit,\n current: limit.current + incBy,\n });\n}\n\nfunction handleCommitsLimit(): boolean {\n const limit = limits.get('Commits');\n // TODO: fix me?\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (!limit || limit.max === null) {\n return false;\n }\n const { max, current } = limit;\n return max - current <= 0;\n}\n\nexport type CountName = 'ConcurrentPRs' | 'HourlyPRs' | 'Branches';\n\ntype BranchLimitName =\n | 'branchConcurrentLimit'\n | 'prConcurrentLimit'\n | 'prHourlyLimit';\n\nexport const counts = new Map<CountName, number>();\n\nexport function getCount(key: CountName): number {\n const count = counts.get(key);\n // istanbul ignore if: should not happen\n if (!isInteger(count)) {\n logger.debug(`Could not compute the count of ${key}, returning zero.`);\n return 0;\n }\n return count;\n}\n\nexport function setCount(key: CountName, val: number): void {\n counts.set(key, val);\n logger.debug(`${key} count = ${val}`);\n}\n\nexport function incCountValue(key: CountName, incBy = 1): void {\n const count = getCount(key);\n counts.set(key, count + incBy);\n}\n\nfunction handleConcurrentLimits(\n key: Exclude<CountName, 'HourlyPRs'>,\n config: BranchConfig,\n): boolean {\n const limitKey =\n key === 'Branches' ? 'branchConcurrentLimit' : 'prConcurrentLimit';\n\n // calculate the limits for this branch\n const hourlyLimit = calcLimit(config.upgrades, 'prHourlyLimit');\n const hourlyPrCount = getCount('HourlyPRs');\n\n // if a limit is defined ( >0 ) and limit reached return true ie. limit has been reached\n if (hourlyLimit && hourlyPrCount >= hourlyLimit) {\n return true;\n }\n\n const limitValue = calcLimit(config.upgrades, limitKey);\n const currentCount = getCount(key);\n\n if (limitValue && currentCount >= limitValue) {\n return true;\n }\n\n return false;\n}\n\nexport function calcLimit(\n upgrades: BranchUpgradeConfig[],\n limitName: BranchLimitName,\n): number {\n const uniqueUpgrades = new Map(upgrades.map((u) => [u.depName, u]));\n logger.debug(\n {\n limits: Array.from(uniqueUpgrades.values()).map((upg) => {\n return { depName: upg.depName, [limitName]: upg[limitName] };\n }),\n },\n `${limitName} of the upgrades present in this branch`,\n );\n\n if (hasMultipleLimits(upgrades, limitName)) {\n logger.once.debug(\n `Branch has multiple ${limitName} limits. The lowest among these will be selected.`,\n );\n }\n\n let lowestLimit = Number.MAX_SAFE_INTEGER;\n for (const upgrade of upgrades) {\n let limit = upgrade[limitName];\n\n // inherit prConcurrentLimit value incase branchConcurrentLimit is null\n if (!isNumber(limit) && limitName === 'branchConcurrentLimit') {\n limit = upgrade.prConcurrentLimit;\n }\n\n // istanbul ignore if: should never happen as all limits get a default value\n if (isUndefined(limit)) {\n limit = Number.MAX_SAFE_INTEGER;\n }\n\n // no limit\n if (limit === 0 || limit === null) {\n logger.debug(\n `${limitName} of this branch is unlimited, because atleast one of the upgrade has it's ${limitName} set to \"No limit\" ie. 0 or null`,\n );\n return 0;\n }\n\n // limit is set\n lowestLimit = limit < lowestLimit ? limit : lowestLimit;\n }\n\n logger.debug(\n `Calculated lowest ${limitName} among the upgrades present in this branch is ${lowestLimit}.`,\n );\n return lowestLimit;\n}\n\nexport function hasMultipleLimits(\n upgrades: BranchUpgradeConfig[],\n limitName: BranchLimitName,\n): boolean {\n if (upgrades.length === 1) {\n return false;\n }\n\n const distinctLimits = new Set<number>();\n for (const upgrade of upgrades) {\n let limitValue = upgrade[limitName];\n\n // inherit prConcurrentLimit value incase branchConcurrentLimit is null\n if (limitName === 'branchConcurrentLimit' && !isNumber(limitValue)) {\n limitValue = upgrade.prConcurrentLimit;\n }\n\n // istanbul ignore if: should not happen as the limits are of type number\n if (limitValue === null) {\n limitValue = 0;\n }\n\n if (!isUndefined(limitValue) && !distinctLimits.has(limitValue)) {\n distinctLimits.add(limitValue);\n }\n }\n\n return distinctLimits.size > 1;\n}\n\nexport function isLimitReached(limit: 'Commits'): boolean;\nexport function isLimitReached(\n limit: 'Branches' | 'ConcurrentPRs',\n config: BranchConfig,\n): boolean;\nexport function isLimitReached(\n limit: 'Commits' | 'Branches' | 'ConcurrentPRs',\n config?: BranchConfig,\n): boolean {\n if (limit === 'Commits') {\n return handleCommitsLimit();\n }\n\n if (config) {\n return handleConcurrentLimits(limit, config);\n }\n\n // istanbul ignore next: should not happen\n throw new Error(\n 'Config is required for computing limits for Branches and PullRequests',\n );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "renovate",
|
|
3
3
|
"description": "Automated dependency updates. Flexible so you don't need to be.",
|
|
4
|
-
"version": "42.
|
|
4
|
+
"version": "42.17.0",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"bin": {
|
|
7
7
|
"renovate": "dist/renovate.js",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
},
|
|
89
89
|
"volta": {
|
|
90
90
|
"node": "24.11.1",
|
|
91
|
-
"pnpm": "10.
|
|
91
|
+
"pnpm": "10.22.0"
|
|
92
92
|
},
|
|
93
93
|
"dependencies": {
|
|
94
94
|
"@aws-sdk/client-codecommit": "3.922.0",
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
"@eslint/js": "9.39.1",
|
|
222
222
|
"@hyrious/marshal": "0.3.3",
|
|
223
223
|
"@ls-lint/ls-lint": "2.3.1",
|
|
224
|
-
"@openpgp/web-stream-tools": "0.
|
|
224
|
+
"@openpgp/web-stream-tools": "0.3.0",
|
|
225
225
|
"@semantic-release/exec": "7.1.0",
|
|
226
226
|
"@smithy/util-stream": "4.5.6",
|
|
227
227
|
"@types/auth-header": "1.0.6",
|
package/renovate-schema.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"title": "JSON schema for Renovate 42.
|
|
2
|
+
"title": "JSON schema for Renovate 42.17.0 config files (https://renovatebot.com/)",
|
|
3
3
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
-
"x-renovate-version": "42.
|
|
4
|
+
"x-renovate-version": "42.17.0",
|
|
5
5
|
"allowComments": true,
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|