renovate 44.134.2 → 44.134.3

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.
@@ -26,7 +26,7 @@ async function applyPackageRules(inputConfig, stageName) {
26
26
  for (const packageRule of packageRules) if (await matchesRule(config, packageRule)) {
27
27
  const toApply = removeMatchers({ ...packageRule });
28
28
  if (config.groupSlug && packageRule.groupName && !packageRule.groupSlug) toApply.groupSlug = slugify(packageRule.groupName, { lower: true });
29
- if (toApply.force?.enabled === false || toApply.enabled === false && config.enabled !== false) {
29
+ if (toApply.force?.enabled === false || toApply.enabled === false && config.force?.enabled !== true) {
30
30
  config.skipReason = "package-rules";
31
31
  if (stageName) config.skipStage = stageName;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../lib/util/package-rules/index.ts"],"sourcesContent":["import {\n isNonEmptyArray,\n isNullOrUndefined,\n isString,\n isTruthy,\n} from '@sindresorhus/is';\nimport _slugify from 'slugify';\nimport type {\n PackageRule,\n PackageRuleInputConfig,\n} from '../../config/types.ts';\nimport { mergeChildConfig } from '../../config/utils.ts';\nimport { logger } from '../../logger/index.ts';\nimport type { StageName } from '../../types/skip-reason.ts';\nimport { coerceArray } from '../array.ts';\nimport { compile } from '../template/index.ts';\nimport matchers from './matchers.ts';\n\nconst slugify = _slugify;\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 = coerceArray(config.packageRules);\n // The `packageRules` array is invariant while rules are being applied, and\n // can be very large (e.g. vulnerability alerts append rules embedding full\n // advisory texts). Remove it from the working config so mergeChildConfig()\n // does not deep-clone the whole array once per matched rule, then restore\n // it afterwards.\n delete 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\n if (\n // if it's got higher precedence, as it's a force'd config option\n // multiple force'd config options are \"last defined wins\"\n toApply.force?.enabled === false ||\n // otherwise, if it has regular precedence, compare\n (toApply.enabled === false && config.enabled !== false)\n ) {\n config.skipReason = 'package-rules';\n if (stageName) {\n config.skipStage = stageName;\n }\n }\n\n if (\n (toApply.force?.enabled || toApply.enabled) &&\n // `unknown-registry` is not about whether the user wants the dependency\n // updated, but about Renovate having nowhere to look it up, so a\n // registry clears it rather than `enabled` - see below\n config.skipReason !== 'unknown-registry'\n ) {\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 // A manager which could not work out where to look leaves `unknown-registry`\n // behind. Config can still answer that, from a rule applied above or from the\n // repository config the rules were applied to, so the dependency is no longer\n // skipped once it has a registry to be looked up in.\n if (\n config.skipReason === 'unknown-registry' &&\n (isNonEmptyArray(config.registryUrls) ||\n isNonEmptyArray(config.defaultRegistryUrls))\n ) {\n delete config.skipReason;\n delete config.skipStage;\n }\n\n // Restore the rules. If any applied rule carried nested `packageRules`\n // (e.g. from a resolved preset), preserve the concat-merge semantics that\n // mergeChildConfig() would previously have applied.\n if (config.packageRules) {\n config.packageRules = packageRules.concat(config.packageRules);\n } else if ('packageRules' in inputConfig) {\n config.packageRules = inputConfig.packageRules;\n }\n return config;\n}\n\nfunction removeMatchers<T extends Record<string, unknown>>(\n packageRule: T,\n): Record<string, unknown> & {\n force?: Record<string, unknown>;\n} {\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":";;;;;;;;AAkBA,MAAM,UAAU;AAEhB,eAAe,YACb,aACA,aACkB;CAClB,KAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,UAAU,MAAM,QAAQ,QAAQ,aAAa,WAAW;EAG9D,IAAI,kBAAkB,OAAO,GAC3B;EAGF,IAAI,CAAC,SAAS,OAAO,GACnB,OAAO;CAEX;CAEA,OAAO;AACT;AAEA,eAAsB,kBACpB,aACA,WACY;CACZ,IAAI,SAAS,EAAE,GAAG,YAAY;CAC9B,MAAM,eAAe,YAAY,OAAO,YAAY;CAMpD,OAAO,OAAO;CACd,OAAO,MACL;EAAE,YAAY,OAAO;EAAS;CAAa,GAC3C,oBAAoB,aAAa,OAAO,cAC1C;CACA,KAAK,MAAM,eAAe,cAExB,IAAI,MAAM,YAAY,QAAQ,WAAW,GAAG;EAE1C,MAAM,UAAU,eAAe,EAAE,GAAG,YAAY,CAAC;EACjD,IAAI,OAAO,aAAa,YAAY,aAAa,CAAC,YAAY,WAE5D,QAAQ,YAAY,QAAQ,YAAY,WAAW,EACjD,OAAO,KACT,CAAC;EAGH,IAGE,QAAQ,OAAO,YAAY,SAE1B,QAAQ,YAAY,SAAS,OAAO,YAAY,OACjD;GACA,OAAO,aAAa;GACpB,IAAI,WACF,OAAO,YAAY;EAEvB;EAEA,KACG,QAAQ,OAAO,WAAW,QAAQ,YAInC,OAAO,eAAe,oBACtB;GACA,OAAO,OAAO;GACd,OAAO,OAAO;EAChB;EACA,IACE,SAAS,QAAQ,kBAAkB,KACnC,QAAQ,uBAAuB,OAAO,YACtC;GACA,OAAO,MACL,8BAA8B,OAAO,WAAW,MAAM,QAAQ,mBAAmB,OAAO,OAAO,SACjG;GACA,OAAO,aAAa,QAAQ;EAC9B;EACA,IACE,SAAS,QAAQ,eAAe,KAChC,QAAQ,oBAAoB,OAAO,SACnC;GACA,OAAO,MACL,2BAA2B,OAAO,QAAQ,MAAM,QAAQ,iBAC1D;GACA,OAAO,UAAU,QAAQ,QAAQ,iBAAiB,MAAM;EAC1D;EACA,IACE,SAAS,QAAQ,mBAAmB,KACpC,QAAQ,wBAAwB,OAAO,aACvC;GACA,OAAO,MACL,+BAA+B,OAAO,YAAY,MAAM,QAAQ,oBAAoB,OAAO,OAAO,SACpG;GACA,OAAO,cAAc,QAAQ,QAAQ,qBAAqB,MAAM;EAClE;EACA,IAAI,SAAS,QAAQ,SAAS,GAC5B,QAAQ,YAAY,QAAQ,QAAQ,WAAW,MAAM;EAEvD,OAAO,QAAQ;EACf,OAAO,QAAQ;EACf,OAAO,QAAQ;EACf,SAAS,iBAAiB,QAAQ,OAAO;CAC3C;CAMF,IACE,OAAO,eAAe,uBACrB,gBAAgB,OAAO,YAAY,KAClC,gBAAgB,OAAO,mBAAmB,IAC5C;EACA,OAAO,OAAO;EACd,OAAO,OAAO;CAChB;CAKA,IAAI,OAAO,cACT,OAAO,eAAe,aAAa,OAAO,OAAO,YAAY;MACxD,IAAI,kBAAkB,aAC3B,OAAO,eAAe,YAAY;CAEpC,OAAO;AACT;AAEA,SAAS,eACP,aAGA;CACA,KAAK,MAAM,OAAO,OAAO,KAAK,WAAW,GACvC,IAAI,IAAI,WAAW,OAAO,KAAK,IAAI,WAAW,SAAS,GACrD,OAAO,YAAY;CAIvB,OAAO;AACT"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../lib/util/package-rules/index.ts"],"sourcesContent":["import {\n isNonEmptyArray,\n isNullOrUndefined,\n isString,\n isTruthy,\n} from '@sindresorhus/is';\nimport _slugify from 'slugify';\nimport type {\n PackageRule,\n PackageRuleInputConfig,\n} from '../../config/types.ts';\nimport { mergeChildConfig } from '../../config/utils.ts';\nimport { logger } from '../../logger/index.ts';\nimport type { StageName } from '../../types/skip-reason.ts';\nimport { coerceArray } from '../array.ts';\nimport { compile } from '../template/index.ts';\nimport matchers from './matchers.ts';\n\nconst slugify = _slugify;\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 = coerceArray(config.packageRules);\n // The `packageRules` array is invariant while rules are being applied, and\n // can be very large (e.g. vulnerability alerts append rules embedding full\n // advisory texts). Remove it from the working config so mergeChildConfig()\n // does not deep-clone the whole array once per matched rule, then restore\n // it afterwards.\n delete 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\n if (\n // if it's got higher precedence, as it's a force'd config option\n // multiple force'd config options are \"last defined wins\"\n toApply.force?.enabled === false ||\n // otherwise, unless a force'd config option wins, record it even if the\n // dependency is already disabled, so a user's rule can be told apart\n // from a manager disabling it by default\n (toApply.enabled === false && config.force?.enabled !== true)\n ) {\n config.skipReason = 'package-rules';\n if (stageName) {\n config.skipStage = stageName;\n }\n }\n\n if (\n (toApply.force?.enabled || toApply.enabled) &&\n // `unknown-registry` is not about whether the user wants the dependency\n // updated, but about Renovate having nowhere to look it up, so a\n // registry clears it rather than `enabled` - see below\n config.skipReason !== 'unknown-registry'\n ) {\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 // A manager which could not work out where to look leaves `unknown-registry`\n // behind. Config can still answer that, from a rule applied above or from the\n // repository config the rules were applied to, so the dependency is no longer\n // skipped once it has a registry to be looked up in.\n if (\n config.skipReason === 'unknown-registry' &&\n (isNonEmptyArray(config.registryUrls) ||\n isNonEmptyArray(config.defaultRegistryUrls))\n ) {\n delete config.skipReason;\n delete config.skipStage;\n }\n\n // Restore the rules. If any applied rule carried nested `packageRules`\n // (e.g. from a resolved preset), preserve the concat-merge semantics that\n // mergeChildConfig() would previously have applied.\n if (config.packageRules) {\n config.packageRules = packageRules.concat(config.packageRules);\n } else if ('packageRules' in inputConfig) {\n config.packageRules = inputConfig.packageRules;\n }\n return config;\n}\n\nfunction removeMatchers<T extends Record<string, unknown>>(\n packageRule: T,\n): Record<string, unknown> & {\n force?: Record<string, unknown>;\n} {\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":";;;;;;;;AAkBA,MAAM,UAAU;AAEhB,eAAe,YACb,aACA,aACkB;CAClB,KAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,UAAU,MAAM,QAAQ,QAAQ,aAAa,WAAW;EAG9D,IAAI,kBAAkB,OAAO,GAC3B;EAGF,IAAI,CAAC,SAAS,OAAO,GACnB,OAAO;CAEX;CAEA,OAAO;AACT;AAEA,eAAsB,kBACpB,aACA,WACY;CACZ,IAAI,SAAS,EAAE,GAAG,YAAY;CAC9B,MAAM,eAAe,YAAY,OAAO,YAAY;CAMpD,OAAO,OAAO;CACd,OAAO,MACL;EAAE,YAAY,OAAO;EAAS;CAAa,GAC3C,oBAAoB,aAAa,OAAO,cAC1C;CACA,KAAK,MAAM,eAAe,cAExB,IAAI,MAAM,YAAY,QAAQ,WAAW,GAAG;EAE1C,MAAM,UAAU,eAAe,EAAE,GAAG,YAAY,CAAC;EACjD,IAAI,OAAO,aAAa,YAAY,aAAa,CAAC,YAAY,WAE5D,QAAQ,YAAY,QAAQ,YAAY,WAAW,EACjD,OAAO,KACT,CAAC;EAGH,IAGE,QAAQ,OAAO,YAAY,SAI1B,QAAQ,YAAY,SAAS,OAAO,OAAO,YAAY,MACxD;GACA,OAAO,aAAa;GACpB,IAAI,WACF,OAAO,YAAY;EAEvB;EAEA,KACG,QAAQ,OAAO,WAAW,QAAQ,YAInC,OAAO,eAAe,oBACtB;GACA,OAAO,OAAO;GACd,OAAO,OAAO;EAChB;EACA,IACE,SAAS,QAAQ,kBAAkB,KACnC,QAAQ,uBAAuB,OAAO,YACtC;GACA,OAAO,MACL,8BAA8B,OAAO,WAAW,MAAM,QAAQ,mBAAmB,OAAO,OAAO,SACjG;GACA,OAAO,aAAa,QAAQ;EAC9B;EACA,IACE,SAAS,QAAQ,eAAe,KAChC,QAAQ,oBAAoB,OAAO,SACnC;GACA,OAAO,MACL,2BAA2B,OAAO,QAAQ,MAAM,QAAQ,iBAC1D;GACA,OAAO,UAAU,QAAQ,QAAQ,iBAAiB,MAAM;EAC1D;EACA,IACE,SAAS,QAAQ,mBAAmB,KACpC,QAAQ,wBAAwB,OAAO,aACvC;GACA,OAAO,MACL,+BAA+B,OAAO,YAAY,MAAM,QAAQ,oBAAoB,OAAO,OAAO,SACpG;GACA,OAAO,cAAc,QAAQ,QAAQ,qBAAqB,MAAM;EAClE;EACA,IAAI,SAAS,QAAQ,SAAS,GAC5B,QAAQ,YAAY,QAAQ,QAAQ,WAAW,MAAM;EAEvD,OAAO,QAAQ;EACf,OAAO,QAAQ;EACf,OAAO,QAAQ;EACf,SAAS,iBAAiB,QAAQ,OAAO;CAC3C;CAMF,IACE,OAAO,eAAe,uBACrB,gBAAgB,OAAO,YAAY,KAClC,gBAAgB,OAAO,mBAAmB,IAC5C;EACA,OAAO,OAAO;EACd,OAAO,OAAO;CAChB;CAKA,IAAI,OAAO,cACT,OAAO,eAAe,aAAa,OAAO,OAAO,YAAY;MACxD,IAAI,kBAAkB,aAC3B,OAAO,eAAe,YAAY;CAEpC,OAAO;AACT;AAEA,SAAS,eACP,aAGA;CACA,KAAK,MAAM,OAAO,OAAO,KAAK,WAAW,GACvC,IAAI,IAAI,WAAW,OAAO,KAAK,IAAI,WAAW,SAAS,GACrD,OAAO,YAAY;CAIvB,OAAO;AACT"}
@@ -61,6 +61,11 @@ async function lookup(packageFileConfig, indep) {
61
61
  dep.skipReason = "ignored";
62
62
  return Result.ok(dep);
63
63
  }
64
+ if (depConfig.enabled === false && dep.enabled === false && depConfig.isVulnerabilityAlert && depConfig.skipReason !== "package-rules") {
65
+ logger.debug(`Dependency: ${depName}, is disabled by default, but has a vulnerability alert`);
66
+ depConfig.enabled = true;
67
+ dep.enabled = true;
68
+ }
64
69
  if (depConfig.enabled === false) {
65
70
  logger.debug(`Dependency: ${depName}, is disabled`);
66
71
  dep.skipReason = "disabled";
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","names":["p.all"],"sources":["../../../../lib/workers/repository/process/fetch.ts"],"sourcesContent":["// TODO #22198\nimport { isNonEmptyArray, isNonEmptyString } from '@sindresorhus/is';\nimport {\n applyDatasourceDefaultConfig,\n getManagerConfig,\n mergeChildConfig,\n} from '../../../config/index.ts';\nimport type { RenovateConfig } from '../../../config/types.ts';\nimport { instrument } from '../../../instrumentation/index.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { getDefaultVersioning } from '../../../modules/datasource/common.ts';\nimport type {\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../../../modules/manager/types.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { clone } from '../../../util/clone.ts';\nimport { applyPackageRules } from '../../../util/package-rules/index.ts';\nimport * as p from '../../../util/promises.ts';\nimport { Result } from '../../../util/result.ts';\nimport { LookupStats } from '../../../util/stats.ts';\nimport { PackageFiles } from '../package-files.ts';\nimport { lookupUpdates } from './lookup/index.ts';\nimport type { LookupUpdateConfig, UpdateResult } from './lookup/types.ts';\n\ntype LookupResult = Result<PackageDependency>;\n\n/**\n * Merge the constraints which a manager extracted into `target`, without ever letting them override a value which was configured.\n *\n * `overrides` holds the values which must win over the extracted ones: the repository config for a package file, the package file config for a dependency. They cannot be read from `target`, because `mergeChildConfig()` has already merged `constraintsVersioning` from `extracted` into it, the other way round.\n */\nfunction mergeExtractedConstraints(\n target: RenovateConfig,\n extracted: Pick<\n PackageFileContent,\n 'extractedConstraints' | 'constraintsVersioning'\n >,\n overrides: Pick<RenovateConfig, 'constraints' | 'constraintsVersioning'>,\n): void {\n if (extracted.extractedConstraints) {\n target.constraints = {\n ...extracted.extractedConstraints,\n ...overrides.constraints,\n };\n }\n const constraintsVersioning = {\n ...extracted.constraintsVersioning,\n ...overrides.constraintsVersioning,\n };\n if (Object.keys(constraintsVersioning).length > 0) {\n target.constraintsVersioning = constraintsVersioning;\n }\n}\n\nasync function lookup(\n packageFileConfig: RenovateConfig & PackageFile,\n indep: PackageDependency,\n): Promise<LookupResult> {\n const dep = clone(indep);\n\n dep.updates = [];\n\n // `unknown-registry` says the manager could not work out where to look, which\n // `applyPackageRules()` clears when config supplies a registry. Such a dep has\n // to reach the rules to be given one, so it is dropped afterwards rather than\n // here - unless its manager already gave it a registry it could not use.\n const mayBeGivenARegistry =\n dep.skipReason === 'unknown-registry' && !isNonEmptyArray(dep.registryUrls);\n if (dep.skipReason && !mayBeGivenARegistry) {\n return Result.ok(dep);\n }\n\n if (!isNonEmptyString(dep.packageName)) {\n dep.skipReason = 'invalid-name';\n return Result.ok(dep);\n }\n\n if (dep.isInternal && !packageFileConfig.updateInternalDeps) {\n dep.skipReason = 'internal-package';\n return Result.ok(dep);\n }\n\n const { depName } = dep;\n // TODO: fix types\n let depConfig = mergeChildConfig(packageFileConfig, dep);\n mergeExtractedConstraints(depConfig, dep, packageFileConfig);\n depConfig = await applyDatasourceDefaultConfig(depConfig);\n depConfig.versioning ??= getDefaultVersioning(depConfig.datasource);\n depConfig = await applyPackageRules(depConfig, 'pre-lookup');\n\n if (mayBeGivenARegistry) {\n if (depConfig.skipReason === 'unknown-registry') {\n logger.debug(\n `Dependency: ${depName!}, has no registry to be looked up in - set registryUrls to say which one to use`,\n );\n return Result.ok(dep);\n }\n\n delete dep.skipReason;\n delete dep.skipStage;\n }\n\n if (depConfig.ignoreDeps!.includes(depName!)) {\n // TODO: fix types (#22198)\n logger.debug(`Dependency: ${depName!}, is ignored`);\n dep.skipReason = 'ignored';\n return Result.ok(dep);\n }\n\n if (depConfig.enabled === false) {\n logger.debug(`Dependency: ${depName!}, is disabled`);\n dep.skipReason = 'disabled';\n return Result.ok(dep);\n }\n\n if (!depConfig.datasource) {\n return Result.ok(dep);\n }\n\n return LookupStats.wrap(depConfig.datasource, async () => {\n const { packageFile, manager } = packageFileConfig;\n return await Result.wrap(lookupUpdates(depConfig as LookupUpdateConfig))\n .onValue((dep) => {\n logger.trace(\n { dep, packageFile, manager },\n 'Dependency lookup success',\n );\n })\n .onError((err) => {\n logger.trace(\n { err, depName, packageFile, manager },\n 'Dependency lookup error',\n );\n })\n .catch((err): Result<UpdateResult> => {\n if (\n packageFileConfig.repoIsOnboarded === true ||\n !(err instanceof ExternalHostError)\n ) {\n return Result.err(err);\n }\n\n const cause = err.err;\n return Result.ok({\n updates: [],\n warnings: [\n {\n topic: 'Lookup Error',\n message: `${depName}: ${cause.message}`,\n },\n ],\n });\n })\n .transform((upd): PackageDependency => Object.assign(dep, upd));\n });\n}\n\nasync function fetchManagerPackagerFileUpdates(\n config: RenovateConfig,\n managerConfig: RenovateConfig,\n pFile: PackageFile,\n): Promise<void> {\n const { packageFile } = pFile;\n const packageFileConfig = mergeChildConfig(managerConfig, pFile);\n mergeExtractedConstraints(packageFileConfig, pFile, config);\n const { manager } = packageFileConfig;\n const queue = pFile.deps.map(\n (dep) => async (): Promise<PackageDependency> => {\n const updates = await lookup(packageFileConfig, dep);\n return updates.unwrapOrThrow();\n },\n );\n logger.trace(\n { manager, packageFile, queueLength: queue.length },\n 'fetchManagerPackagerFileUpdates starting with concurrency',\n );\n\n pFile.deps = await p.all(queue);\n logger.trace(\n { manager, packageFile },\n 'fetchManagerPackagerFileUpdates finished',\n );\n}\n\nasync function fetchManagerUpdates(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n manager: string,\n): Promise<void> {\n const managerConfig = getManagerConfig(config, manager);\n const queue = packageFiles[manager].map(\n (pFile) => (): Promise<void> =>\n fetchManagerPackagerFileUpdates(config, managerConfig, pFile),\n );\n logger.trace(\n { manager, queueLength: queue.length },\n 'fetchManagerUpdates starting',\n );\n await p.all(queue);\n logger.trace({ manager }, 'fetchManagerUpdates finished');\n}\n\nexport async function fetchUpdates(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<void> {\n const managers = Object.keys(packageFiles);\n const allManagerJobs = managers.map((manager) =>\n instrument(manager, () =>\n fetchManagerUpdates(config, packageFiles, manager),\n ),\n );\n await Promise.all(allManagerJobs);\n PackageFiles.add(config.baseBranch!, { ...packageFiles });\n logger.debug(\n { baseBranch: config.baseBranch },\n 'Package releases lookups complete',\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAiCA,SAAS,0BACP,QACA,WAIA,WACM;CACN,IAAI,UAAU,sBACZ,OAAO,cAAc;EACnB,GAAG,UAAU;EACb,GAAG,UAAU;CACf;CAEF,MAAM,wBAAwB;EAC5B,GAAG,UAAU;EACb,GAAG,UAAU;CACf;CACA,IAAI,OAAO,KAAK,qBAAqB,CAAC,CAAC,SAAS,GAC9C,OAAO,wBAAwB;AAEnC;AAEA,eAAe,OACb,mBACA,OACuB;CACvB,MAAM,MAAM,MAAM,KAAK;CAEvB,IAAI,UAAU,CAAC;CAMf,MAAM,sBACJ,IAAI,eAAe,sBAAsB,CAAC,gBAAgB,IAAI,YAAY;CAC5E,IAAI,IAAI,cAAc,CAAC,qBACrB,OAAO,OAAO,GAAG,GAAG;CAGtB,IAAI,CAAC,iBAAiB,IAAI,WAAW,GAAG;EACtC,IAAI,aAAa;EACjB,OAAO,OAAO,GAAG,GAAG;CACtB;CAEA,IAAI,IAAI,cAAc,CAAC,kBAAkB,oBAAoB;EAC3D,IAAI,aAAa;EACjB,OAAO,OAAO,GAAG,GAAG;CACtB;CAEA,MAAM,EAAE,YAAY;CAEpB,IAAI,YAAY,iBAAiB,mBAAmB,GAAG;CACvD,0BAA0B,WAAW,KAAK,iBAAiB;CAC3D,YAAY,MAAM,6BAA6B,SAAS;CACxD,UAAU,eAAe,qBAAqB,UAAU,UAAU;CAClE,YAAY,MAAM,kBAAkB,WAAW,YAAY;CAE3D,IAAI,qBAAqB;EACvB,IAAI,UAAU,eAAe,oBAAoB;GAC/C,OAAO,MACL,eAAe,QAAS,gFAC1B;GACA,OAAO,OAAO,GAAG,GAAG;EACtB;EAEA,OAAO,IAAI;EACX,OAAO,IAAI;CACb;CAEA,IAAI,UAAU,WAAY,SAAS,OAAQ,GAAG;EAE5C,OAAO,MAAM,eAAe,QAAS,aAAa;EAClD,IAAI,aAAa;EACjB,OAAO,OAAO,GAAG,GAAG;CACtB;CAEA,IAAI,UAAU,YAAY,OAAO;EAC/B,OAAO,MAAM,eAAe,QAAS,cAAc;EACnD,IAAI,aAAa;EACjB,OAAO,OAAO,GAAG,GAAG;CACtB;CAEA,IAAI,CAAC,UAAU,YACb,OAAO,OAAO,GAAG,GAAG;CAGtB,OAAO,YAAY,KAAK,UAAU,YAAY,YAAY;EACxD,MAAM,EAAE,aAAa,YAAY;EACjC,OAAO,MAAM,OAAO,KAAK,cAAc,SAA+B,CAAC,CAAC,CACrE,SAAS,QAAQ;GAChB,OAAO,MACL;IAAE;IAAK;IAAa;GAAQ,GAC5B,2BACF;EACF,CAAC,CAAC,CACD,SAAS,QAAQ;GAChB,OAAO,MACL;IAAE;IAAK;IAAS;IAAa;GAAQ,GACrC,yBACF;EACF,CAAC,CAAC,CACD,OAAO,QAA8B;GACpC,IACE,kBAAkB,oBAAoB,QACtC,EAAE,eAAe,oBAEjB,OAAO,OAAO,IAAI,GAAG;GAGvB,MAAM,QAAQ,IAAI;GAClB,OAAO,OAAO,GAAG;IACf,SAAS,CAAC;IACV,UAAU,CACR;KACE,OAAO;KACP,SAAS,GAAG,QAAQ,IAAI,MAAM;IAChC,CACF;GACF,CAAC;EACH,CAAC,CAAC,CACD,WAAW,QAA2B,OAAO,OAAO,KAAK,GAAG,CAAC;CAClE,CAAC;AACH;AAEA,eAAe,gCACb,QACA,eACA,OACe;CACf,MAAM,EAAE,gBAAgB;CACxB,MAAM,oBAAoB,iBAAiB,eAAe,KAAK;CAC/D,0BAA0B,mBAAmB,OAAO,MAAM;CAC1D,MAAM,EAAE,YAAY;CACpB,MAAM,QAAQ,MAAM,KAAK,KACtB,QAAQ,YAAwC;EAE/C,QAAO,MADe,OAAO,mBAAmB,GAAG,EAAA,CACpC,cAAc;CAC/B,CACF;CACA,OAAO,MACL;EAAE;EAAS;EAAa,aAAa,MAAM;CAAO,GAClD,2DACF;CAEA,MAAM,OAAO,MAAMA,IAAM,KAAK;CAC9B,OAAO,MACL;EAAE;EAAS;CAAY,GACvB,0CACF;AACF;AAEA,eAAe,oBACb,QACA,cACA,SACe;CACf,MAAM,gBAAgB,iBAAiB,QAAQ,OAAO;CACtD,MAAM,QAAQ,aAAa,QAAQ,CAAC,KACjC,gBACC,gCAAgC,QAAQ,eAAe,KAAK,CAChE;CACA,OAAO,MACL;EAAE;EAAS,aAAa,MAAM;CAAO,GACrC,8BACF;CACA,MAAMA,IAAM,KAAK;CACjB,OAAO,MAAM,EAAE,QAAQ,GAAG,8BAA8B;AAC1D;AAEA,eAAsB,aACpB,QACA,cACe;CAEf,MAAM,iBADW,OAAO,KAAK,YACC,CAAC,CAAC,KAAK,YACnC,WAAW,eACT,oBAAoB,QAAQ,cAAc,OAAO,CACnD,CACF;CACA,MAAM,QAAQ,IAAI,cAAc;CAChC,aAAa,IAAI,OAAO,YAAa,EAAE,GAAG,aAAa,CAAC;CACxD,OAAO,MACL,EAAE,YAAY,OAAO,WAAW,GAChC,mCACF;AACF"}
1
+ {"version":3,"file":"fetch.js","names":["p.all"],"sources":["../../../../lib/workers/repository/process/fetch.ts"],"sourcesContent":["// TODO #22198\nimport { isNonEmptyArray, isNonEmptyString } from '@sindresorhus/is';\nimport {\n applyDatasourceDefaultConfig,\n getManagerConfig,\n mergeChildConfig,\n} from '../../../config/index.ts';\nimport type { RenovateConfig } from '../../../config/types.ts';\nimport { instrument } from '../../../instrumentation/index.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { getDefaultVersioning } from '../../../modules/datasource/common.ts';\nimport type {\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../../../modules/manager/types.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { clone } from '../../../util/clone.ts';\nimport { applyPackageRules } from '../../../util/package-rules/index.ts';\nimport * as p from '../../../util/promises.ts';\nimport { Result } from '../../../util/result.ts';\nimport { LookupStats } from '../../../util/stats.ts';\nimport { PackageFiles } from '../package-files.ts';\nimport { lookupUpdates } from './lookup/index.ts';\nimport type { LookupUpdateConfig, UpdateResult } from './lookup/types.ts';\n\ntype LookupResult = Result<PackageDependency>;\n\n/**\n * Merge the constraints which a manager extracted into `target`, without ever letting them override a value which was configured.\n *\n * `overrides` holds the values which must win over the extracted ones: the repository config for a package file, the package file config for a dependency. They cannot be read from `target`, because `mergeChildConfig()` has already merged `constraintsVersioning` from `extracted` into it, the other way round.\n */\nfunction mergeExtractedConstraints(\n target: RenovateConfig,\n extracted: Pick<\n PackageFileContent,\n 'extractedConstraints' | 'constraintsVersioning'\n >,\n overrides: Pick<RenovateConfig, 'constraints' | 'constraintsVersioning'>,\n): void {\n if (extracted.extractedConstraints) {\n target.constraints = {\n ...extracted.extractedConstraints,\n ...overrides.constraints,\n };\n }\n const constraintsVersioning = {\n ...extracted.constraintsVersioning,\n ...overrides.constraintsVersioning,\n };\n if (Object.keys(constraintsVersioning).length > 0) {\n target.constraintsVersioning = constraintsVersioning;\n }\n}\n\nasync function lookup(\n packageFileConfig: RenovateConfig & PackageFile,\n indep: PackageDependency,\n): Promise<LookupResult> {\n const dep = clone(indep);\n\n dep.updates = [];\n\n // `unknown-registry` says the manager could not work out where to look, which\n // `applyPackageRules()` clears when config supplies a registry. Such a dep has\n // to reach the rules to be given one, so it is dropped afterwards rather than\n // here - unless its manager already gave it a registry it could not use.\n const mayBeGivenARegistry =\n dep.skipReason === 'unknown-registry' && !isNonEmptyArray(dep.registryUrls);\n if (dep.skipReason && !mayBeGivenARegistry) {\n return Result.ok(dep);\n }\n\n if (!isNonEmptyString(dep.packageName)) {\n dep.skipReason = 'invalid-name';\n return Result.ok(dep);\n }\n\n if (dep.isInternal && !packageFileConfig.updateInternalDeps) {\n dep.skipReason = 'internal-package';\n return Result.ok(dep);\n }\n\n const { depName } = dep;\n // TODO: fix types\n let depConfig = mergeChildConfig(packageFileConfig, dep);\n mergeExtractedConstraints(depConfig, dep, packageFileConfig);\n depConfig = await applyDatasourceDefaultConfig(depConfig);\n depConfig.versioning ??= getDefaultVersioning(depConfig.datasource);\n depConfig = await applyPackageRules(depConfig, 'pre-lookup');\n\n if (mayBeGivenARegistry) {\n if (depConfig.skipReason === 'unknown-registry') {\n logger.debug(\n `Dependency: ${depName!}, has no registry to be looked up in - set registryUrls to say which one to use`,\n );\n return Result.ok(dep);\n }\n\n delete dep.skipReason;\n delete dep.skipStage;\n }\n\n if (depConfig.ignoreDeps!.includes(depName!)) {\n // TODO: fix types (#22198)\n logger.debug(`Dependency: ${depName!}, is ignored`);\n dep.skipReason = 'ignored';\n return Result.ok(dep);\n }\n\n // A manager may disable a dependency by default, but a vulnerability fix\n // still goes through - unless a package rule disabled it as well\n if (\n depConfig.enabled === false &&\n dep.enabled === false &&\n depConfig.isVulnerabilityAlert &&\n depConfig.skipReason !== 'package-rules'\n ) {\n logger.debug(\n `Dependency: ${depName!}, is disabled by default, but has a vulnerability alert`,\n );\n depConfig.enabled = true;\n dep.enabled = true;\n }\n\n if (depConfig.enabled === false) {\n logger.debug(`Dependency: ${depName!}, is disabled`);\n dep.skipReason = 'disabled';\n return Result.ok(dep);\n }\n\n if (!depConfig.datasource) {\n return Result.ok(dep);\n }\n\n return LookupStats.wrap(depConfig.datasource, async () => {\n const { packageFile, manager } = packageFileConfig;\n return await Result.wrap(lookupUpdates(depConfig as LookupUpdateConfig))\n .onValue((dep) => {\n logger.trace(\n { dep, packageFile, manager },\n 'Dependency lookup success',\n );\n })\n .onError((err) => {\n logger.trace(\n { err, depName, packageFile, manager },\n 'Dependency lookup error',\n );\n })\n .catch((err): Result<UpdateResult> => {\n if (\n packageFileConfig.repoIsOnboarded === true ||\n !(err instanceof ExternalHostError)\n ) {\n return Result.err(err);\n }\n\n const cause = err.err;\n return Result.ok({\n updates: [],\n warnings: [\n {\n topic: 'Lookup Error',\n message: `${depName}: ${cause.message}`,\n },\n ],\n });\n })\n .transform((upd): PackageDependency => Object.assign(dep, upd));\n });\n}\n\nasync function fetchManagerPackagerFileUpdates(\n config: RenovateConfig,\n managerConfig: RenovateConfig,\n pFile: PackageFile,\n): Promise<void> {\n const { packageFile } = pFile;\n const packageFileConfig = mergeChildConfig(managerConfig, pFile);\n mergeExtractedConstraints(packageFileConfig, pFile, config);\n const { manager } = packageFileConfig;\n const queue = pFile.deps.map(\n (dep) => async (): Promise<PackageDependency> => {\n const updates = await lookup(packageFileConfig, dep);\n return updates.unwrapOrThrow();\n },\n );\n logger.trace(\n { manager, packageFile, queueLength: queue.length },\n 'fetchManagerPackagerFileUpdates starting with concurrency',\n );\n\n pFile.deps = await p.all(queue);\n logger.trace(\n { manager, packageFile },\n 'fetchManagerPackagerFileUpdates finished',\n );\n}\n\nasync function fetchManagerUpdates(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n manager: string,\n): Promise<void> {\n const managerConfig = getManagerConfig(config, manager);\n const queue = packageFiles[manager].map(\n (pFile) => (): Promise<void> =>\n fetchManagerPackagerFileUpdates(config, managerConfig, pFile),\n );\n logger.trace(\n { manager, queueLength: queue.length },\n 'fetchManagerUpdates starting',\n );\n await p.all(queue);\n logger.trace({ manager }, 'fetchManagerUpdates finished');\n}\n\nexport async function fetchUpdates(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<void> {\n const managers = Object.keys(packageFiles);\n const allManagerJobs = managers.map((manager) =>\n instrument(manager, () =>\n fetchManagerUpdates(config, packageFiles, manager),\n ),\n );\n await Promise.all(allManagerJobs);\n PackageFiles.add(config.baseBranch!, { ...packageFiles });\n logger.debug(\n { baseBranch: config.baseBranch },\n 'Package releases lookups complete',\n );\n}\n"],"mappings":"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"}
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": "44.134.2",
4
+ "version": "44.134.3",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$id": "https://docs.renovatebot.com/renovate-schema.json",
3
- "title": "JSON schema for Renovate 44.134.2 config files (https://renovatebot.com/)",
3
+ "title": "JSON schema for Renovate 44.134.3 config files (https://renovatebot.com/)",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
- "x-renovate-version": "44.134.2",
5
+ "x-renovate-version": "44.134.3",
6
6
  "allowComments": true,
7
7
  "type": "object",
8
8
  "definitions": {