renovate 41.42.9 → 41.42.10
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/config/presets/forgejo/index.js +2 -2
- package/dist/config/presets/forgejo/index.js.map +1 -1
- package/dist/workers/repository/process/lookup/filter-checks.d.ts +1 -1
- package/dist/workers/repository/process/lookup/filter-checks.js.map +1 -1
- package/dist/workers/repository/process/lookup/index.js +0 -1
- package/dist/workers/repository/process/lookup/index.js.map +1 -1
- package/package.json +1 -1
@@ -5,7 +5,7 @@ exports.fetchJSONFile = fetchJSONFile;
|
|
5
5
|
exports.getPresetFromEndpoint = getPresetFromEndpoint;
|
6
6
|
exports.getPreset = getPreset;
|
7
7
|
const logger_1 = require("../../../logger");
|
8
|
-
const
|
8
|
+
const forgejo_helper_1 = require("../../../modules/platform/forgejo/forgejo-helper");
|
9
9
|
const external_host_error_1 = require("../../../types/errors/external-host-error");
|
10
10
|
const string_1 = require("../../../util/string");
|
11
11
|
const util_1 = require("../util");
|
@@ -13,7 +13,7 @@ exports.Endpoint = 'https://code.forgejo.org/';
|
|
13
13
|
async function fetchJSONFile(repo, fileName, endpoint, tag) {
|
14
14
|
let res;
|
15
15
|
try {
|
16
|
-
res = await (0,
|
16
|
+
res = await (0, forgejo_helper_1.getRepoContents)(repo, fileName, tag, {
|
17
17
|
baseUrl: endpoint,
|
18
18
|
});
|
19
19
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/config/presets/forgejo/index.ts"],"names":[],"mappings":";;;AAUA,sCAqBC;AAED,sDAeC;AAED,8BAOC;AAzDD,4CAAyC;AACzC
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/config/presets/forgejo/index.ts"],"names":[],"mappings":";;;AAUA,sCAqBC;AAED,sDAeC;AAED,8BAOC;AAzDD,4CAAyC;AACzC,qFAAmF;AAEnF,mFAA8E;AAC9E,iDAAkD;AAElD,kCAAyE;AAE5D,QAAA,QAAQ,GAAG,2BAA2B,CAAC;AAE7C,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,QAAgB,EAChB,QAAgB,EAChB,GAAmB;IAEnB,IAAI,GAAiB,CAAC;IACtB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,IAAA,gCAAe,EAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE;YAC/C,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,uCAAiB,EAAE,CAAC;YACrC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,eAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,2BAAoB,CAAC,CAAC;IACxC,CAAC;IAED,0BAA0B;IAC1B,OAAO,IAAA,kBAAW,EAAC,IAAA,mBAAU,EAAC,GAAG,CAAC,OAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,qBAAqB,CACnC,IAAY,EACZ,UAAkB,EAClB,UAAmB,EACnB,QAAQ,GAAG,gBAAQ,EACnB,GAAY;IAEZ,OAAO,IAAA,kBAAW,EAAC;QACjB,IAAI;QACJ,UAAU;QACV,UAAU;QACV,QAAQ;QACR,GAAG;QACH,KAAK,EAAE,aAAa;KACrB,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,UAAU,GAAG,SAAS,EACtB,UAAU,EACV,GAAG,GAAG,SAAS,GACF;IACb,OAAO,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAQ,EAAE,GAAG,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import { logger } from '../../../logger';\nimport { getRepoContents } from '../../../modules/platform/forgejo/forgejo-helper';\nimport type { RepoContents } from '../../../modules/platform/forgejo/types';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { fromBase64 } from '../../../util/string';\nimport type { Preset, PresetConfig } from '../types';\nimport { PRESET_DEP_NOT_FOUND, fetchPreset, parsePreset } from '../util';\n\nexport const Endpoint = 'https://code.forgejo.org/';\n\nexport async function fetchJSONFile(\n repo: string,\n fileName: string,\n endpoint: string,\n tag?: string | null,\n): Promise<Preset> {\n let res: RepoContents;\n try {\n res = await getRepoContents(repo, fileName, tag, {\n baseUrl: endpoint,\n });\n } catch (err) {\n if (err instanceof ExternalHostError) {\n throw err;\n }\n logger.debug(`Preset file ${fileName} not found in ${repo}`);\n throw new Error(PRESET_DEP_NOT_FOUND);\n }\n\n // TODO: null check #22198\n return parsePreset(fromBase64(res.content!), fileName);\n}\n\nexport function getPresetFromEndpoint(\n repo: string,\n filePreset: string,\n presetPath?: string,\n endpoint = Endpoint,\n tag?: string,\n): Promise<Preset | undefined> {\n return fetchPreset({\n repo,\n filePreset,\n presetPath,\n endpoint,\n tag,\n fetch: fetchJSONFile,\n });\n}\n\nexport function getPreset({\n repo,\n presetName = 'default',\n presetPath,\n tag = undefined,\n}: PresetConfig): Promise<Preset | undefined> {\n return getPresetFromEndpoint(repo, presetName, presetPath, Endpoint, tag);\n}\n"]}
|
@@ -4,6 +4,6 @@ import type { LookupUpdateConfig, UpdateResult } from './types';
|
|
4
4
|
export interface InternalChecksResult {
|
5
5
|
release?: Release;
|
6
6
|
pendingChecks: boolean;
|
7
|
-
pendingReleases
|
7
|
+
pendingReleases: Release[];
|
8
8
|
}
|
9
9
|
export declare function filterInternalChecks(config: Partial<LookupUpdateConfig & UpdateResult>, versioningApi: VersioningApi, bucket: string, sortedReleases: Release[]): Promise<InternalChecksResult>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"filter-checks.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/filter-checks.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../../config';\nimport { logger } from '../../../../logger';\nimport type { Release } from '../../../../modules/datasource';\nimport { postprocessRelease } from '../../../../modules/datasource/postprocess-release';\nimport type { VersioningApi } from '../../../../modules/versioning';\nimport { getElapsedMs } from '../../../../util/date';\nimport {\n getMergeConfidenceLevel,\n isActiveConfidenceLevel,\n satisfiesConfidenceLevel,\n} from '../../../../util/merge-confidence';\nimport { coerceNumber } from '../../../../util/number';\nimport { applyPackageRules } from '../../../../util/package-rules';\nimport { toMs } from '../../../../util/pretty-time';\nimport type { LookupUpdateConfig, UpdateResult } from './types';\nimport { getUpdateType } from './update-type';\n\nexport interface InternalChecksResult {\n release?: Release;\n pendingChecks: boolean;\n pendingReleases
|
1
|
+
{"version":3,"file":"filter-checks.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/filter-checks.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../../config';\nimport { logger } from '../../../../logger';\nimport type { Release } from '../../../../modules/datasource';\nimport { postprocessRelease } from '../../../../modules/datasource/postprocess-release';\nimport type { VersioningApi } from '../../../../modules/versioning';\nimport { getElapsedMs } from '../../../../util/date';\nimport {\n getMergeConfidenceLevel,\n isActiveConfidenceLevel,\n satisfiesConfidenceLevel,\n} from '../../../../util/merge-confidence';\nimport { coerceNumber } from '../../../../util/number';\nimport { applyPackageRules } from '../../../../util/package-rules';\nimport { toMs } from '../../../../util/pretty-time';\nimport type { LookupUpdateConfig, UpdateResult } from './types';\nimport { getUpdateType } from './update-type';\n\nexport interface InternalChecksResult {\n release?: Release;\n pendingChecks: boolean;\n pendingReleases: Release[];\n}\n\nexport async function filterInternalChecks(\n config: Partial<LookupUpdateConfig & UpdateResult>,\n versioningApi: VersioningApi,\n bucket: string,\n sortedReleases: Release[],\n): Promise<InternalChecksResult> {\n const { currentVersion, datasource, depName, internalChecksFilter } = config;\n let release: Release | undefined = undefined;\n let pendingChecks = false;\n let pendingReleases: Release[] = [];\n if (internalChecksFilter === 'none') {\n // Don't care if minimumReleaseAge or minimumConfidence are unmet\n release = sortedReleases.pop();\n } else {\n // iterate through releases from highest to lowest, looking for the first which will pass checks if present\n for (let candidateRelease of sortedReleases.reverse()) {\n // merge the release data into dependency config\n let releaseConfig = mergeChildConfig(config, candidateRelease);\n // calculate updateType and then apply it\n releaseConfig.updateType = getUpdateType(\n releaseConfig,\n versioningApi,\n // TODO #22198\n currentVersion!,\n candidateRelease.version,\n );\n releaseConfig = mergeChildConfig(\n releaseConfig,\n releaseConfig[releaseConfig.updateType]!,\n );\n // Apply packageRules in case any apply to updateType\n releaseConfig = await applyPackageRules(releaseConfig, 'update-type');\n\n const updatedCandidateRelease = await postprocessRelease(\n releaseConfig,\n candidateRelease,\n );\n if (!updatedCandidateRelease) {\n continue;\n }\n candidateRelease = updatedCandidateRelease;\n\n // Now check for a minimumReleaseAge config\n const { minimumConfidence, minimumReleaseAge, updateType } =\n releaseConfig;\n if (\n is.nonEmptyString(minimumReleaseAge) &&\n candidateRelease.releaseTimestamp\n ) {\n if (\n getElapsedMs(candidateRelease.releaseTimestamp) <\n coerceNumber(toMs(minimumReleaseAge), 0)\n ) {\n // Skip it if it doesn't pass checks\n logger.trace(\n { depName, check: 'minimumReleaseAge' },\n `Release ${candidateRelease.version} is pending status checks`,\n );\n pendingReleases.unshift(candidateRelease);\n continue;\n }\n }\n\n // TODO #22198\n if (isActiveConfidenceLevel(minimumConfidence!)) {\n const confidenceLevel =\n (await getMergeConfidenceLevel(\n datasource!,\n depName!,\n currentVersion!,\n candidateRelease.version,\n updateType!,\n )) ?? 'neutral';\n // TODO #22198\n if (!satisfiesConfidenceLevel(confidenceLevel, minimumConfidence!)) {\n logger.trace(\n { depName, check: 'minimumConfidence' },\n `Release ${candidateRelease.version} is pending status checks`,\n );\n pendingReleases.unshift(candidateRelease);\n continue;\n }\n }\n // If we get to here, then the release is OK and we can stop iterating\n release = candidateRelease;\n break;\n }\n if (!release) {\n if (pendingReleases.length) {\n // If all releases were pending then just take the highest\n logger.trace(\n { depName, bucket },\n 'All releases are pending - using latest',\n );\n release = pendingReleases.pop();\n // None are pending anymore because we took the latest, so empty the array\n pendingReleases = [];\n if (internalChecksFilter === 'strict') {\n pendingChecks = true;\n }\n }\n }\n }\n\n return { release, pendingChecks, pendingReleases };\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../../config';\nimport type { ValidationMessage } from '../../../../config/types';\nimport { CONFIG_VALIDATION } from '../../../../constants/error-messages';\nimport { logger } from '../../../../logger';\nimport type {\n GetDigestInputConfig,\n Release,\n ReleaseResult,\n} from '../../../../modules/datasource';\nimport {\n applyDatasourceFilters,\n getDigest,\n getRawPkgReleases,\n isGetPkgReleasesConfig,\n supportsDigests,\n} from '../../../../modules/datasource';\nimport {\n getDatasourceFor,\n getDefaultVersioning,\n} from '../../../../modules/datasource/common';\nimport { postprocessRelease } from '../../../../modules/datasource/postprocess-release';\nimport { getRangeStrategy } from '../../../../modules/manager';\nimport * as allVersioning from '../../../../modules/versioning';\nimport { id as dockerVersioningId } from '../../../../modules/versioning/docker';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { assignKeys } from '../../../../util/assign-keys';\nimport { getElapsedDays } from '../../../../util/date';\nimport { applyPackageRules } from '../../../../util/package-rules';\nimport { regEx } from '../../../../util/regex';\nimport { Result } from '../../../../util/result';\nimport type { Timestamp } from '../../../../util/timestamp';\nimport { calculateAbandonment } from './abandonment';\nimport { getBucket } from './bucket';\nimport { getCurrentVersion } from './current';\nimport { filterVersions } from './filter';\nimport { filterInternalChecks } from './filter-checks';\nimport { generateUpdate } from './generate';\nimport { getRollbackUpdate } from './rollback';\nimport { calculateMostRecentTimestamp } from './timestamps';\nimport type { LookupUpdateConfig, UpdateResult } from './types';\nimport {\n addReplacementUpdateIfValid,\n isReplacementRulesConfigured,\n} from './utils';\n\nasync function getTimestamp(\n config: LookupUpdateConfig,\n versions: Release[],\n version: string,\n versioningApi: allVersioning.VersioningApi,\n): Promise<Timestamp | null | undefined> {\n const currentRelease = versions.find(\n (v) =>\n versioningApi.isValid(v.version) &&\n versioningApi.equals(v.version, version),\n );\n\n if (!currentRelease) {\n return null;\n }\n\n if (currentRelease.releaseTimestamp) {\n return currentRelease.releaseTimestamp;\n }\n\n const remoteRelease = await postprocessRelease(config, currentRelease);\n return remoteRelease?.releaseTimestamp;\n}\n\nexport async function lookupUpdates(\n inconfig: LookupUpdateConfig,\n): Promise<Result<UpdateResult, Error>> {\n let config: LookupUpdateConfig = { ...inconfig };\n config.versioning ??= getDefaultVersioning(config.datasource);\n\n const versioningApi = allVersioning.get(config.versioning);\n\n let dependency: ReleaseResult | null = null;\n const res: UpdateResult = {\n versioning: config.versioning,\n updates: [],\n warnings: [],\n };\n\n try {\n logger.trace(\n {\n dependency: config.packageName,\n currentValue: config.currentValue,\n },\n 'lookupUpdates',\n );\n if (config.currentValue && !is.string(config.currentValue)) {\n // If currentValue is not a string, then it's invalid\n if (config.currentValue) {\n logger.debug(\n `Invalid currentValue for ${config.packageName}: ${JSON.stringify(config.currentValue)} (${typeof config.currentValue})`,\n );\n }\n res.skipReason = 'invalid-value';\n return Result.ok(res);\n }\n if (\n !isGetPkgReleasesConfig(config) ||\n !getDatasourceFor(config.datasource)\n ) {\n res.skipReason = 'invalid-config';\n return Result.ok(res);\n }\n let compareValue = config.currentValue;\n if (\n is.string(config.currentValue) &&\n is.string(config.versionCompatibility)\n ) {\n const versionCompatbilityRegEx = regEx(config.versionCompatibility);\n const regexMatch = versionCompatbilityRegEx.exec(config.currentValue);\n if (regexMatch?.groups) {\n logger.debug(\n {\n versionCompatibility: config.versionCompatibility,\n currentValue: config.currentValue,\n packageName: config.packageName,\n groups: regexMatch.groups,\n },\n 'version compatibility regex match',\n );\n config.currentCompatibility = regexMatch.groups.compatibility;\n compareValue = regexMatch.groups.version;\n } else {\n logger.debug(\n {\n versionCompatibility: config.versionCompatibility,\n currentValue: config.currentValue,\n packageName: config.packageName,\n },\n 'version compatibility regex mismatch',\n );\n }\n }\n\n const isValid =\n is.string(compareValue) && versioningApi.isValid(compareValue);\n\n const unconstrainedValue =\n !!config.lockedVersion && is.undefined(config.currentValue);\n\n if (isValid || unconstrainedValue) {\n if (\n !config.updatePinnedDependencies &&\n // TODO #22198\n versioningApi.isSingleVersion(compareValue!)\n ) {\n res.skipReason = 'is-pinned';\n return Result.ok(res);\n }\n\n const { val: releaseResult, err: lookupError } = await getRawPkgReleases(\n config,\n )\n .transform((res) => calculateMostRecentTimestamp(versioningApi, res))\n .transform((res) => calculateAbandonment(res, config))\n .transform((res) => applyDatasourceFilters(res, config))\n .unwrap();\n\n if (lookupError instanceof Error) {\n throw lookupError;\n }\n\n if (lookupError) {\n // If dependency lookup fails then warn and return\n const warning: ValidationMessage = {\n topic: config.packageName,\n message: `Failed to look up ${config.datasource} package ${config.packageName}`,\n };\n logger.debug(\n {\n dependency: config.packageName,\n packageFile: config.packageFile,\n },\n warning.message,\n );\n // TODO: return warnings in own field\n res.warnings.push(warning);\n return Result.ok(res);\n }\n\n dependency = releaseResult;\n\n if (dependency.deprecationMessage) {\n logger.debug(\n `Found deprecationMessage for ${config.datasource} package ${config.packageName}`,\n );\n }\n\n assignKeys(res, dependency, [\n 'deprecationMessage',\n 'sourceUrl',\n 'registryUrl',\n 'sourceDirectory',\n 'homepage',\n 'changelogUrl',\n 'dependencyUrl',\n 'lookupName',\n 'packageScope',\n 'mostRecentTimestamp',\n 'isAbandoned',\n ]);\n\n const latestVersion = dependency.tags?.latest;\n // Filter out any results from datasource that don't comply with our versioning\n let allVersions = dependency.releases.filter((release) =>\n versioningApi.isVersion(release.version),\n );\n // istanbul ignore if\n if (allVersions.length === 0) {\n const message = `Found no results from datasource that look like a version`;\n logger.info(\n {\n dependency: config.packageName,\n result: dependency,\n },\n message,\n );\n if (!config.currentDigest) {\n return Result.ok(res);\n }\n }\n // Reapply package rules in case we missed something from sourceUrl\n config = await applyPackageRules(\n { ...config, sourceUrl: res.sourceUrl },\n 'source-url',\n );\n if (config.followTag) {\n const taggedVersion = dependency.tags?.[config.followTag];\n if (!taggedVersion) {\n res.warnings.push({\n topic: config.packageName,\n message: `Can't find version with tag ${config.followTag} for ${config.datasource} package ${config.packageName}`,\n });\n return Result.ok(res);\n }\n allVersions = allVersions.filter(\n (v) =>\n v.version === taggedVersion ||\n (v.version === compareValue &&\n versioningApi.isGreaterThan(taggedVersion, compareValue)),\n );\n }\n // Check that existing constraint can be satisfied\n const allSatisfyingVersions = allVersions.filter(\n (v) =>\n // TODO #22198\n unconstrainedValue || versioningApi.matches(v.version, compareValue!),\n );\n if (!allSatisfyingVersions.length) {\n logger.debug(\n `Found no satisfying versions with '${config.versioning}' versioning`,\n );\n }\n\n if (config.rollbackPrs && !allSatisfyingVersions.length) {\n const rollback = getRollbackUpdate(config, allVersions, versioningApi);\n // istanbul ignore if\n if (!rollback) {\n res.warnings.push({\n topic: config.packageName,\n // TODO: types (#22198)\n message: `Can't find version matching ${compareValue!} for ${\n config.datasource\n } package ${config.packageName}`,\n });\n return Result.ok(res);\n }\n res.updates.push(rollback);\n }\n let rangeStrategy = getRangeStrategy(config);\n\n // istanbul ignore next\n if (\n config.isVulnerabilityAlert &&\n rangeStrategy === 'update-lockfile' &&\n !config.lockedVersion\n ) {\n rangeStrategy = 'bump';\n }\n // unconstrained deps with lockedVersion\n if (\n config.isVulnerabilityAlert &&\n !config.currentValue &&\n config.lockedVersion\n ) {\n rangeStrategy = 'update-lockfile';\n }\n const nonDeprecatedVersions = dependency.releases\n .filter((release) => !release.isDeprecated)\n .map((release) => release.version);\n let currentVersion: string;\n if (rangeStrategy === 'update-lockfile') {\n currentVersion = config.lockedVersion!;\n } else if (allVersions.find((v) => v.version === compareValue)) {\n currentVersion = compareValue!;\n }\n // TODO #22198\n currentVersion ??=\n getCurrentVersion(\n compareValue!,\n config.lockedVersion!,\n versioningApi,\n rangeStrategy!,\n latestVersion!,\n nonDeprecatedVersions,\n ) ??\n getCurrentVersion(\n compareValue!,\n config.lockedVersion!,\n versioningApi,\n rangeStrategy!,\n latestVersion!,\n allVersions.map((v) => v.version),\n )!;\n\n if (!currentVersion) {\n if (!config.lockedVersion) {\n logger.debug(\n `No currentVersion or lockedVersion found for ${config.packageName}`,\n );\n res.skipReason = 'invalid-value';\n }\n return Result.ok(res);\n }\n\n res.currentVersion = currentVersion!;\n const currentVersionTimestamp = await getTimestamp(\n config,\n allVersions,\n currentVersion,\n versioningApi,\n );\n\n if (is.nonEmptyString(currentVersionTimestamp)) {\n res.currentVersionTimestamp = currentVersionTimestamp;\n res.currentVersionAgeInDays = getElapsedDays(currentVersionTimestamp);\n\n if (\n config.packageRules?.some((rule) =>\n is.nonEmptyString(rule.matchCurrentAge),\n )\n ) {\n // Reapply package rules to check matches for matchCurrentAge\n config = await applyPackageRules(\n { ...config, currentVersionTimestamp },\n 'current-timestamp',\n );\n }\n }\n\n if (\n compareValue &&\n currentVersion &&\n rangeStrategy === 'pin' &&\n !versioningApi.isSingleVersion(compareValue)\n ) {\n res.updates.push({\n updateType: 'pin',\n isPin: true,\n // TODO: newValue can be null! (#22198)\n newValue: versioningApi.getNewValue({\n currentValue: compareValue,\n rangeStrategy,\n currentVersion,\n newVersion: currentVersion,\n })!,\n newVersion: currentVersion,\n newMajor: versioningApi.getMajor(currentVersion)!,\n });\n }\n if (rangeStrategy === 'pin') {\n // Fall back to replace once pinning logic is done\n rangeStrategy = 'replace';\n }\n // istanbul ignore if\n if (!versioningApi.isVersion(currentVersion!)) {\n res.skipReason = 'invalid-version';\n return Result.ok(res);\n }\n // Filter latest, unstable, etc\n // TODO #22198\n let filteredReleases = filterVersions(\n config,\n currentVersion!,\n latestVersion!,\n config.rangeStrategy === 'in-range-only'\n ? allSatisfyingVersions\n : allVersions,\n versioningApi,\n ).filter(\n (v) =>\n // Leave only compatible versions\n unconstrainedValue ||\n versioningApi.isCompatible(v.version, compareValue),\n );\n let shrinkedViaVulnerability = false;\n if (config.isVulnerabilityAlert) {\n if (config.vulnerabilityFixVersion) {\n res.vulnerabilityFixVersion = config.vulnerabilityFixVersion;\n res.vulnerabilityFixStrategy = config.vulnerabilityFixStrategy;\n if (versioningApi.isValid(config.vulnerabilityFixVersion)) {\n let fixedFilteredReleases;\n if (versioningApi.isVersion(config.vulnerabilityFixVersion)) {\n // Retain only releases greater than or equal to the fix version\n fixedFilteredReleases = filteredReleases.filter(\n (release) =>\n !versioningApi.isGreaterThan(\n config.vulnerabilityFixVersion!,\n release.version,\n ),\n );\n } else {\n // Retain only releases which max the fix constraint\n fixedFilteredReleases = filteredReleases.filter((release) =>\n versioningApi.matches(\n release.version,\n config.vulnerabilityFixVersion!,\n ),\n );\n }\n // Warn if this filtering results caused zero releases\n if (fixedFilteredReleases.length === 0 && filteredReleases.length) {\n logger.warn(\n {\n releases: filteredReleases,\n vulnerabilityFixVersion: config.vulnerabilityFixVersion,\n packageName: config.packageName,\n },\n 'No releases satisfy vulnerabilityFixVersion',\n );\n }\n // Use the additionally filtered releases\n filteredReleases = fixedFilteredReleases;\n } else {\n logger.warn(\n {\n vulnerabilityFixVersion: config.vulnerabilityFixVersion,\n packageName: config.packageName,\n },\n 'vulnerabilityFixVersion is not valid',\n );\n }\n }\n if (config.vulnerabilityFixStrategy === 'highest') {\n // Don't shrink the list of releases - let Renovate use its normal logic\n logger.once.debug(\n `Using vulnerabilityFixStrategy=highest for ${config.packageName}`,\n );\n } else {\n // Shrink the list of releases to the lowest fixed version\n logger.once.debug(\n `Using vulnerabilityFixStrategy=lowest for ${config.packageName}`,\n );\n filteredReleases = filteredReleases.slice(0, 1);\n shrinkedViaVulnerability = true;\n }\n }\n const buckets: Record<string, [Release]> = {};\n for (const release of filteredReleases) {\n const bucket = getBucket(\n config,\n // TODO #22198\n currentVersion!,\n release.version,\n versioningApi,\n );\n if (is.string(bucket)) {\n if (buckets[bucket]) {\n buckets[bucket].push(release);\n } else {\n buckets[bucket] = [release];\n }\n }\n }\n const depResultConfig = mergeChildConfig(config, res);\n for (const [bucket, releases] of Object.entries(buckets)) {\n const sortedReleases = releases.sort((r1, r2) =>\n versioningApi.sortVersions(r1.version, r2.version),\n );\n const { release, pendingChecks, pendingReleases } =\n await filterInternalChecks(\n depResultConfig,\n versioningApi,\n bucket,\n sortedReleases,\n );\n // istanbul ignore next\n if (!release) {\n return Result.ok(res);\n }\n const newVersion = release.version;\n const update = await generateUpdate(\n config,\n compareValue,\n versioningApi,\n // TODO #22198\n\n rangeStrategy!,\n config.lockedVersion ?? currentVersion!,\n bucket,\n release,\n );\n\n // #29034\n if (\n config.manager === 'gomod' &&\n compareValue?.startsWith('v0.0.0-') &&\n update.newValue?.startsWith('v0.0.0-') &&\n config.currentDigest !== update.newDigest\n ) {\n update.updateType = 'digest';\n }\n\n if (pendingChecks) {\n update.pendingChecks = pendingChecks;\n }\n\n // TODO #22198\n if (pendingReleases!.length) {\n update.pendingVersions = pendingReleases!.map((r) => r.version);\n }\n if (!update.newValue || update.newValue === compareValue) {\n if (!config.lockedVersion) {\n continue;\n }\n // istanbul ignore if\n if (rangeStrategy === 'bump') {\n logger.trace(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n lockedVersion: config.lockedVersion,\n newVersion,\n },\n 'Skipping bump because newValue is the same',\n );\n continue;\n }\n res.isSingleVersion = true;\n }\n res.isSingleVersion ??=\n is.string(update.newValue) &&\n versioningApi.isSingleVersion(update.newValue);\n // istanbul ignore if\n if (\n config.versioning === dockerVersioningId &&\n update.updateType !== 'rollback' &&\n update.newValue &&\n versioningApi.isVersion(update.newValue) &&\n compareValue &&\n versioningApi.isVersion(compareValue) &&\n versioningApi.isGreaterThan(compareValue, update.newValue)\n ) {\n logger.warn(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n compareValue,\n currentVersion: config.currentVersion,\n update,\n allVersionsLength: allVersions.length,\n filteredReleaseVersions: filteredReleases.map((r) => r.version),\n shrinkedViaVulnerability,\n },\n 'Unexpected downgrade detected: skipping',\n );\n } else {\n res.updates.push(update);\n }\n }\n } else if (compareValue) {\n logger.debug(\n `Dependency ${config.packageName} has unsupported/unversioned value ${compareValue} (versioning=${config.versioning})`,\n );\n\n if (!config.pinDigests && !config.currentDigest) {\n logger.debug(\n `Skipping ${config.packageName} because no currentDigest or pinDigests`,\n );\n res.skipReason = 'invalid-value';\n } else {\n delete res.skipReason;\n }\n } else {\n res.skipReason = 'invalid-value';\n }\n\n if (isReplacementRulesConfigured(config)) {\n addReplacementUpdateIfValid(res.updates, config);\n } else if (dependency?.replacementName && dependency.replacementVersion) {\n res.updates.push({\n updateType: 'replacement',\n newName: dependency.replacementName,\n newValue: dependency.replacementVersion,\n });\n }\n\n // Record if the dep is fixed to a version\n if (config.lockedVersion) {\n res.currentVersion = config.lockedVersion;\n res.fixedVersion = config.lockedVersion;\n } else if (compareValue && versioningApi.isSingleVersion(compareValue)) {\n res.fixedVersion = compareValue.replace(regEx(/^=+/), '');\n }\n\n // massage versionCompatibility\n if (\n is.string(config.currentValue) &&\n is.string(compareValue) &&\n is.string(config.versionCompatibility)\n ) {\n for (const update of res.updates) {\n logger.debug({ update });\n if (is.string(config.currentValue) && is.string(update.newValue)) {\n update.newValue = config.currentValue.replace(\n compareValue,\n update.newValue,\n );\n }\n }\n }\n\n // Add digests if necessary\n if (supportsDigests(config.datasource)) {\n if (config.currentDigest) {\n if (!config.digestOneAndOnly || !res.updates.length) {\n // digest update\n res.updates.push({\n updateType: 'digest',\n newValue: config.currentValue,\n });\n }\n } else if (config.pinDigests) {\n // Create a pin only if one doesn't already exists\n if (!res.updates.some((update) => update.updateType === 'pin')) {\n // pin digest\n res.updates.push({\n isPinDigest: true,\n updateType: 'pinDigest',\n newValue: config.currentValue,\n });\n }\n }\n if (versioningApi.valueToVersion) {\n // TODO #22198\n res.currentVersion = versioningApi.valueToVersion(res.currentVersion!);\n for (const update of res.updates || /* istanbul ignore next*/ []) {\n // TODO #22198\n update.newVersion = versioningApi.valueToVersion(update.newVersion!);\n }\n }\n if (res.registryUrl) {\n config.registryUrls = [res.registryUrl];\n }\n\n // update digest for all\n for (const update of res.updates) {\n if (config.pinDigests === true || config.currentDigest) {\n const getDigestConfig: GetDigestInputConfig = {\n ...config,\n registryUrl: update.registryUrl ?? res.registryUrl,\n lookupName: res.lookupName,\n };\n\n // #20304 only pass it for replacement updates, otherwise we get wrong or invalid digest\n if (update.updateType !== 'replacement') {\n delete getDigestConfig.replacementName;\n }\n\n // #20304 don't use lookupName and currentDigest when we replace image name\n if (\n update.updateType === 'replacement' &&\n update.newName !== config.packageName\n ) {\n delete getDigestConfig.lookupName;\n delete getDigestConfig.currentDigest;\n }\n\n // TODO #22198\n update.newDigest ??=\n dependency?.releases.find((r) => r.version === update.newValue)\n ?.newDigest ??\n (await getDigest(getDigestConfig, update.newValue))!;\n\n // If the digest could not be determined, report this as otherwise the\n // update will be omitted later on without notice.\n if (update.newDigest === null) {\n logger.debug(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n datasource: config.datasource,\n newValue: update.newValue,\n bucket: update.bucket,\n },\n 'Could not determine new digest for update.',\n );\n\n // Only report a warning if there is a current digest.\n // Context: https://github.com/renovatebot/renovate/pull/20175#discussion_r1102615059.\n if (config.currentDigest) {\n res.warnings.push({\n message: `Could not determine new digest for update (${config.datasource} package ${config.packageName})`,\n topic: config.packageName,\n });\n }\n }\n } else {\n delete update.newDigest;\n }\n if (update.newVersion) {\n const registryUrl = dependency?.releases?.find(\n (release) => release.version === update.newVersion,\n )?.registryUrl;\n if (registryUrl && registryUrl !== res.registryUrl) {\n update.registryUrl = registryUrl;\n }\n }\n }\n }\n\n if (res.updates.length) {\n delete res.skipReason;\n }\n // Strip out any non-changed ones\n res.updates = res.updates\n .filter(\n (update) => update.newValue !== null || config.currentValue === null,\n )\n .filter((update) => update.newDigest !== null)\n .filter(\n (update) =>\n (is.string(update.newName) &&\n update.newName !== config.packageName) ||\n update.isReplacement === true ||\n update.newValue !== config.currentValue ||\n update.isLockfileUpdate === true ||\n // TODO #22198\n (update.newDigest &&\n !update.newDigest.startsWith(config.currentDigest!)),\n );\n // If range strategy specified in config is 'in-range-only', also strip out updates where currentValue !== newValue\n if (config.rangeStrategy === 'in-range-only') {\n res.updates = res.updates.filter(\n (update) => update.newValue === config.currentValue,\n );\n }\n // Handle a weird edge case involving followTag and fallbacks\n if (config.rollbackPrs && config.followTag) {\n res.updates = res.updates.filter(\n (update) =>\n res.updates.length === 1 ||\n /* istanbul ignore next */ update.updateType !== 'rollback',\n );\n }\n\n const release =\n res.updates.length > 0\n ? dependency?.releases.find(\n (r) => r.version === res.updates[0].newValue,\n )\n : null;\n\n if (release?.changelogContent) {\n res.changelogContent = release.changelogContent;\n res.changelogUrl = release.changelogUrl;\n }\n } catch (err) /* istanbul ignore next */ {\n if (err instanceof ExternalHostError) {\n return Result.err(err);\n }\n\n if (err instanceof Error && err.message === CONFIG_VALIDATION) {\n return Result.err(err);\n }\n\n logger.error(\n {\n currentDigest: config.currentDigest,\n currentValue: config.currentValue,\n datasource: config.datasource,\n packageName: config.packageName,\n digestOneAndOnly: config.digestOneAndOnly,\n followTag: config.followTag,\n lockedVersion: config.lockedVersion,\n packageFile: config.packageFile,\n pinDigests: config.pinDigests,\n rollbackPrs: config.rollbackPrs,\n isVulnerabilityAlert: config.isVulnerabilityAlert,\n updatePinnedDependencies: config.updatePinnedDependencies,\n err,\n },\n 'lookupUpdates error',\n );\n res.skipReason = 'internal-error';\n }\n return Result.ok(res);\n}\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../../config';\nimport type { ValidationMessage } from '../../../../config/types';\nimport { CONFIG_VALIDATION } from '../../../../constants/error-messages';\nimport { logger } from '../../../../logger';\nimport type {\n GetDigestInputConfig,\n Release,\n ReleaseResult,\n} from '../../../../modules/datasource';\nimport {\n applyDatasourceFilters,\n getDigest,\n getRawPkgReleases,\n isGetPkgReleasesConfig,\n supportsDigests,\n} from '../../../../modules/datasource';\nimport {\n getDatasourceFor,\n getDefaultVersioning,\n} from '../../../../modules/datasource/common';\nimport { postprocessRelease } from '../../../../modules/datasource/postprocess-release';\nimport { getRangeStrategy } from '../../../../modules/manager';\nimport * as allVersioning from '../../../../modules/versioning';\nimport { id as dockerVersioningId } from '../../../../modules/versioning/docker';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { assignKeys } from '../../../../util/assign-keys';\nimport { getElapsedDays } from '../../../../util/date';\nimport { applyPackageRules } from '../../../../util/package-rules';\nimport { regEx } from '../../../../util/regex';\nimport { Result } from '../../../../util/result';\nimport type { Timestamp } from '../../../../util/timestamp';\nimport { calculateAbandonment } from './abandonment';\nimport { getBucket } from './bucket';\nimport { getCurrentVersion } from './current';\nimport { filterVersions } from './filter';\nimport { filterInternalChecks } from './filter-checks';\nimport { generateUpdate } from './generate';\nimport { getRollbackUpdate } from './rollback';\nimport { calculateMostRecentTimestamp } from './timestamps';\nimport type { LookupUpdateConfig, UpdateResult } from './types';\nimport {\n addReplacementUpdateIfValid,\n isReplacementRulesConfigured,\n} from './utils';\n\nasync function getTimestamp(\n config: LookupUpdateConfig,\n versions: Release[],\n version: string,\n versioningApi: allVersioning.VersioningApi,\n): Promise<Timestamp | null | undefined> {\n const currentRelease = versions.find(\n (v) =>\n versioningApi.isValid(v.version) &&\n versioningApi.equals(v.version, version),\n );\n\n if (!currentRelease) {\n return null;\n }\n\n if (currentRelease.releaseTimestamp) {\n return currentRelease.releaseTimestamp;\n }\n\n const remoteRelease = await postprocessRelease(config, currentRelease);\n return remoteRelease?.releaseTimestamp;\n}\n\nexport async function lookupUpdates(\n inconfig: LookupUpdateConfig,\n): Promise<Result<UpdateResult, Error>> {\n let config: LookupUpdateConfig = { ...inconfig };\n config.versioning ??= getDefaultVersioning(config.datasource);\n\n const versioningApi = allVersioning.get(config.versioning);\n\n let dependency: ReleaseResult | null = null;\n const res: UpdateResult = {\n versioning: config.versioning,\n updates: [],\n warnings: [],\n };\n\n try {\n logger.trace(\n {\n dependency: config.packageName,\n currentValue: config.currentValue,\n },\n 'lookupUpdates',\n );\n if (config.currentValue && !is.string(config.currentValue)) {\n // If currentValue is not a string, then it's invalid\n if (config.currentValue) {\n logger.debug(\n `Invalid currentValue for ${config.packageName}: ${JSON.stringify(config.currentValue)} (${typeof config.currentValue})`,\n );\n }\n res.skipReason = 'invalid-value';\n return Result.ok(res);\n }\n if (\n !isGetPkgReleasesConfig(config) ||\n !getDatasourceFor(config.datasource)\n ) {\n res.skipReason = 'invalid-config';\n return Result.ok(res);\n }\n let compareValue = config.currentValue;\n if (\n is.string(config.currentValue) &&\n is.string(config.versionCompatibility)\n ) {\n const versionCompatbilityRegEx = regEx(config.versionCompatibility);\n const regexMatch = versionCompatbilityRegEx.exec(config.currentValue);\n if (regexMatch?.groups) {\n logger.debug(\n {\n versionCompatibility: config.versionCompatibility,\n currentValue: config.currentValue,\n packageName: config.packageName,\n groups: regexMatch.groups,\n },\n 'version compatibility regex match',\n );\n config.currentCompatibility = regexMatch.groups.compatibility;\n compareValue = regexMatch.groups.version;\n } else {\n logger.debug(\n {\n versionCompatibility: config.versionCompatibility,\n currentValue: config.currentValue,\n packageName: config.packageName,\n },\n 'version compatibility regex mismatch',\n );\n }\n }\n\n const isValid =\n is.string(compareValue) && versioningApi.isValid(compareValue);\n\n const unconstrainedValue =\n !!config.lockedVersion && is.undefined(config.currentValue);\n\n if (isValid || unconstrainedValue) {\n if (\n !config.updatePinnedDependencies &&\n // TODO #22198\n versioningApi.isSingleVersion(compareValue!)\n ) {\n res.skipReason = 'is-pinned';\n return Result.ok(res);\n }\n\n const { val: releaseResult, err: lookupError } = await getRawPkgReleases(\n config,\n )\n .transform((res) => calculateMostRecentTimestamp(versioningApi, res))\n .transform((res) => calculateAbandonment(res, config))\n .transform((res) => applyDatasourceFilters(res, config))\n .unwrap();\n\n if (lookupError instanceof Error) {\n throw lookupError;\n }\n\n if (lookupError) {\n // If dependency lookup fails then warn and return\n const warning: ValidationMessage = {\n topic: config.packageName,\n message: `Failed to look up ${config.datasource} package ${config.packageName}`,\n };\n logger.debug(\n {\n dependency: config.packageName,\n packageFile: config.packageFile,\n },\n warning.message,\n );\n // TODO: return warnings in own field\n res.warnings.push(warning);\n return Result.ok(res);\n }\n\n dependency = releaseResult;\n\n if (dependency.deprecationMessage) {\n logger.debug(\n `Found deprecationMessage for ${config.datasource} package ${config.packageName}`,\n );\n }\n\n assignKeys(res, dependency, [\n 'deprecationMessage',\n 'sourceUrl',\n 'registryUrl',\n 'sourceDirectory',\n 'homepage',\n 'changelogUrl',\n 'dependencyUrl',\n 'lookupName',\n 'packageScope',\n 'mostRecentTimestamp',\n 'isAbandoned',\n ]);\n\n const latestVersion = dependency.tags?.latest;\n // Filter out any results from datasource that don't comply with our versioning\n let allVersions = dependency.releases.filter((release) =>\n versioningApi.isVersion(release.version),\n );\n // istanbul ignore if\n if (allVersions.length === 0) {\n const message = `Found no results from datasource that look like a version`;\n logger.info(\n {\n dependency: config.packageName,\n result: dependency,\n },\n message,\n );\n if (!config.currentDigest) {\n return Result.ok(res);\n }\n }\n // Reapply package rules in case we missed something from sourceUrl\n config = await applyPackageRules(\n { ...config, sourceUrl: res.sourceUrl },\n 'source-url',\n );\n if (config.followTag) {\n const taggedVersion = dependency.tags?.[config.followTag];\n if (!taggedVersion) {\n res.warnings.push({\n topic: config.packageName,\n message: `Can't find version with tag ${config.followTag} for ${config.datasource} package ${config.packageName}`,\n });\n return Result.ok(res);\n }\n allVersions = allVersions.filter(\n (v) =>\n v.version === taggedVersion ||\n (v.version === compareValue &&\n versioningApi.isGreaterThan(taggedVersion, compareValue)),\n );\n }\n // Check that existing constraint can be satisfied\n const allSatisfyingVersions = allVersions.filter(\n (v) =>\n // TODO #22198\n unconstrainedValue || versioningApi.matches(v.version, compareValue!),\n );\n if (!allSatisfyingVersions.length) {\n logger.debug(\n `Found no satisfying versions with '${config.versioning}' versioning`,\n );\n }\n\n if (config.rollbackPrs && !allSatisfyingVersions.length) {\n const rollback = getRollbackUpdate(config, allVersions, versioningApi);\n // istanbul ignore if\n if (!rollback) {\n res.warnings.push({\n topic: config.packageName,\n // TODO: types (#22198)\n message: `Can't find version matching ${compareValue!} for ${\n config.datasource\n } package ${config.packageName}`,\n });\n return Result.ok(res);\n }\n res.updates.push(rollback);\n }\n let rangeStrategy = getRangeStrategy(config);\n\n // istanbul ignore next\n if (\n config.isVulnerabilityAlert &&\n rangeStrategy === 'update-lockfile' &&\n !config.lockedVersion\n ) {\n rangeStrategy = 'bump';\n }\n // unconstrained deps with lockedVersion\n if (\n config.isVulnerabilityAlert &&\n !config.currentValue &&\n config.lockedVersion\n ) {\n rangeStrategy = 'update-lockfile';\n }\n const nonDeprecatedVersions = dependency.releases\n .filter((release) => !release.isDeprecated)\n .map((release) => release.version);\n let currentVersion: string;\n if (rangeStrategy === 'update-lockfile') {\n currentVersion = config.lockedVersion!;\n } else if (allVersions.find((v) => v.version === compareValue)) {\n currentVersion = compareValue!;\n }\n // TODO #22198\n currentVersion ??=\n getCurrentVersion(\n compareValue!,\n config.lockedVersion!,\n versioningApi,\n rangeStrategy!,\n latestVersion!,\n nonDeprecatedVersions,\n ) ??\n getCurrentVersion(\n compareValue!,\n config.lockedVersion!,\n versioningApi,\n rangeStrategy!,\n latestVersion!,\n allVersions.map((v) => v.version),\n )!;\n\n if (!currentVersion) {\n if (!config.lockedVersion) {\n logger.debug(\n `No currentVersion or lockedVersion found for ${config.packageName}`,\n );\n res.skipReason = 'invalid-value';\n }\n return Result.ok(res);\n }\n\n res.currentVersion = currentVersion!;\n const currentVersionTimestamp = await getTimestamp(\n config,\n allVersions,\n currentVersion,\n versioningApi,\n );\n\n if (is.nonEmptyString(currentVersionTimestamp)) {\n res.currentVersionTimestamp = currentVersionTimestamp;\n res.currentVersionAgeInDays = getElapsedDays(currentVersionTimestamp);\n\n if (\n config.packageRules?.some((rule) =>\n is.nonEmptyString(rule.matchCurrentAge),\n )\n ) {\n // Reapply package rules to check matches for matchCurrentAge\n config = await applyPackageRules(\n { ...config, currentVersionTimestamp },\n 'current-timestamp',\n );\n }\n }\n\n if (\n compareValue &&\n currentVersion &&\n rangeStrategy === 'pin' &&\n !versioningApi.isSingleVersion(compareValue)\n ) {\n res.updates.push({\n updateType: 'pin',\n isPin: true,\n // TODO: newValue can be null! (#22198)\n newValue: versioningApi.getNewValue({\n currentValue: compareValue,\n rangeStrategy,\n currentVersion,\n newVersion: currentVersion,\n })!,\n newVersion: currentVersion,\n newMajor: versioningApi.getMajor(currentVersion)!,\n });\n }\n if (rangeStrategy === 'pin') {\n // Fall back to replace once pinning logic is done\n rangeStrategy = 'replace';\n }\n // istanbul ignore if\n if (!versioningApi.isVersion(currentVersion!)) {\n res.skipReason = 'invalid-version';\n return Result.ok(res);\n }\n // Filter latest, unstable, etc\n // TODO #22198\n let filteredReleases = filterVersions(\n config,\n currentVersion!,\n latestVersion!,\n config.rangeStrategy === 'in-range-only'\n ? allSatisfyingVersions\n : allVersions,\n versioningApi,\n ).filter(\n (v) =>\n // Leave only compatible versions\n unconstrainedValue ||\n versioningApi.isCompatible(v.version, compareValue),\n );\n let shrinkedViaVulnerability = false;\n if (config.isVulnerabilityAlert) {\n if (config.vulnerabilityFixVersion) {\n res.vulnerabilityFixVersion = config.vulnerabilityFixVersion;\n res.vulnerabilityFixStrategy = config.vulnerabilityFixStrategy;\n if (versioningApi.isValid(config.vulnerabilityFixVersion)) {\n let fixedFilteredReleases;\n if (versioningApi.isVersion(config.vulnerabilityFixVersion)) {\n // Retain only releases greater than or equal to the fix version\n fixedFilteredReleases = filteredReleases.filter(\n (release) =>\n !versioningApi.isGreaterThan(\n config.vulnerabilityFixVersion!,\n release.version,\n ),\n );\n } else {\n // Retain only releases which max the fix constraint\n fixedFilteredReleases = filteredReleases.filter((release) =>\n versioningApi.matches(\n release.version,\n config.vulnerabilityFixVersion!,\n ),\n );\n }\n // Warn if this filtering results caused zero releases\n if (fixedFilteredReleases.length === 0 && filteredReleases.length) {\n logger.warn(\n {\n releases: filteredReleases,\n vulnerabilityFixVersion: config.vulnerabilityFixVersion,\n packageName: config.packageName,\n },\n 'No releases satisfy vulnerabilityFixVersion',\n );\n }\n // Use the additionally filtered releases\n filteredReleases = fixedFilteredReleases;\n } else {\n logger.warn(\n {\n vulnerabilityFixVersion: config.vulnerabilityFixVersion,\n packageName: config.packageName,\n },\n 'vulnerabilityFixVersion is not valid',\n );\n }\n }\n if (config.vulnerabilityFixStrategy === 'highest') {\n // Don't shrink the list of releases - let Renovate use its normal logic\n logger.once.debug(\n `Using vulnerabilityFixStrategy=highest for ${config.packageName}`,\n );\n } else {\n // Shrink the list of releases to the lowest fixed version\n logger.once.debug(\n `Using vulnerabilityFixStrategy=lowest for ${config.packageName}`,\n );\n filteredReleases = filteredReleases.slice(0, 1);\n shrinkedViaVulnerability = true;\n }\n }\n const buckets: Record<string, [Release]> = {};\n for (const release of filteredReleases) {\n const bucket = getBucket(\n config,\n // TODO #22198\n currentVersion!,\n release.version,\n versioningApi,\n );\n if (is.string(bucket)) {\n if (buckets[bucket]) {\n buckets[bucket].push(release);\n } else {\n buckets[bucket] = [release];\n }\n }\n }\n const depResultConfig = mergeChildConfig(config, res);\n for (const [bucket, releases] of Object.entries(buckets)) {\n const sortedReleases = releases.sort((r1, r2) =>\n versioningApi.sortVersions(r1.version, r2.version),\n );\n const { release, pendingChecks, pendingReleases } =\n await filterInternalChecks(\n depResultConfig,\n versioningApi,\n bucket,\n sortedReleases,\n );\n // istanbul ignore next\n if (!release) {\n return Result.ok(res);\n }\n const newVersion = release.version;\n const update = await generateUpdate(\n config,\n compareValue,\n versioningApi,\n // TODO #22198\n\n rangeStrategy!,\n config.lockedVersion ?? currentVersion!,\n bucket,\n release,\n );\n\n // #29034\n if (\n config.manager === 'gomod' &&\n compareValue?.startsWith('v0.0.0-') &&\n update.newValue?.startsWith('v0.0.0-') &&\n config.currentDigest !== update.newDigest\n ) {\n update.updateType = 'digest';\n }\n\n if (pendingChecks) {\n update.pendingChecks = pendingChecks;\n }\n\n if (pendingReleases.length) {\n update.pendingVersions = pendingReleases.map((r) => r.version);\n }\n if (!update.newValue || update.newValue === compareValue) {\n if (!config.lockedVersion) {\n continue;\n }\n // istanbul ignore if\n if (rangeStrategy === 'bump') {\n logger.trace(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n lockedVersion: config.lockedVersion,\n newVersion,\n },\n 'Skipping bump because newValue is the same',\n );\n continue;\n }\n res.isSingleVersion = true;\n }\n res.isSingleVersion ??=\n is.string(update.newValue) &&\n versioningApi.isSingleVersion(update.newValue);\n // istanbul ignore if\n if (\n config.versioning === dockerVersioningId &&\n update.updateType !== 'rollback' &&\n update.newValue &&\n versioningApi.isVersion(update.newValue) &&\n compareValue &&\n versioningApi.isVersion(compareValue) &&\n versioningApi.isGreaterThan(compareValue, update.newValue)\n ) {\n logger.warn(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n compareValue,\n currentVersion: config.currentVersion,\n update,\n allVersionsLength: allVersions.length,\n filteredReleaseVersions: filteredReleases.map((r) => r.version),\n shrinkedViaVulnerability,\n },\n 'Unexpected downgrade detected: skipping',\n );\n } else {\n res.updates.push(update);\n }\n }\n } else if (compareValue) {\n logger.debug(\n `Dependency ${config.packageName} has unsupported/unversioned value ${compareValue} (versioning=${config.versioning})`,\n );\n\n if (!config.pinDigests && !config.currentDigest) {\n logger.debug(\n `Skipping ${config.packageName} because no currentDigest or pinDigests`,\n );\n res.skipReason = 'invalid-value';\n } else {\n delete res.skipReason;\n }\n } else {\n res.skipReason = 'invalid-value';\n }\n\n if (isReplacementRulesConfigured(config)) {\n addReplacementUpdateIfValid(res.updates, config);\n } else if (dependency?.replacementName && dependency.replacementVersion) {\n res.updates.push({\n updateType: 'replacement',\n newName: dependency.replacementName,\n newValue: dependency.replacementVersion,\n });\n }\n\n // Record if the dep is fixed to a version\n if (config.lockedVersion) {\n res.currentVersion = config.lockedVersion;\n res.fixedVersion = config.lockedVersion;\n } else if (compareValue && versioningApi.isSingleVersion(compareValue)) {\n res.fixedVersion = compareValue.replace(regEx(/^=+/), '');\n }\n\n // massage versionCompatibility\n if (\n is.string(config.currentValue) &&\n is.string(compareValue) &&\n is.string(config.versionCompatibility)\n ) {\n for (const update of res.updates) {\n logger.debug({ update });\n if (is.string(config.currentValue) && is.string(update.newValue)) {\n update.newValue = config.currentValue.replace(\n compareValue,\n update.newValue,\n );\n }\n }\n }\n\n // Add digests if necessary\n if (supportsDigests(config.datasource)) {\n if (config.currentDigest) {\n if (!config.digestOneAndOnly || !res.updates.length) {\n // digest update\n res.updates.push({\n updateType: 'digest',\n newValue: config.currentValue,\n });\n }\n } else if (config.pinDigests) {\n // Create a pin only if one doesn't already exists\n if (!res.updates.some((update) => update.updateType === 'pin')) {\n // pin digest\n res.updates.push({\n isPinDigest: true,\n updateType: 'pinDigest',\n newValue: config.currentValue,\n });\n }\n }\n if (versioningApi.valueToVersion) {\n // TODO #22198\n res.currentVersion = versioningApi.valueToVersion(res.currentVersion!);\n for (const update of res.updates || /* istanbul ignore next*/ []) {\n // TODO #22198\n update.newVersion = versioningApi.valueToVersion(update.newVersion!);\n }\n }\n if (res.registryUrl) {\n config.registryUrls = [res.registryUrl];\n }\n\n // update digest for all\n for (const update of res.updates) {\n if (config.pinDigests === true || config.currentDigest) {\n const getDigestConfig: GetDigestInputConfig = {\n ...config,\n registryUrl: update.registryUrl ?? res.registryUrl,\n lookupName: res.lookupName,\n };\n\n // #20304 only pass it for replacement updates, otherwise we get wrong or invalid digest\n if (update.updateType !== 'replacement') {\n delete getDigestConfig.replacementName;\n }\n\n // #20304 don't use lookupName and currentDigest when we replace image name\n if (\n update.updateType === 'replacement' &&\n update.newName !== config.packageName\n ) {\n delete getDigestConfig.lookupName;\n delete getDigestConfig.currentDigest;\n }\n\n // TODO #22198\n update.newDigest ??=\n dependency?.releases.find((r) => r.version === update.newValue)\n ?.newDigest ??\n (await getDigest(getDigestConfig, update.newValue))!;\n\n // If the digest could not be determined, report this as otherwise the\n // update will be omitted later on without notice.\n if (update.newDigest === null) {\n logger.debug(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n datasource: config.datasource,\n newValue: update.newValue,\n bucket: update.bucket,\n },\n 'Could not determine new digest for update.',\n );\n\n // Only report a warning if there is a current digest.\n // Context: https://github.com/renovatebot/renovate/pull/20175#discussion_r1102615059.\n if (config.currentDigest) {\n res.warnings.push({\n message: `Could not determine new digest for update (${config.datasource} package ${config.packageName})`,\n topic: config.packageName,\n });\n }\n }\n } else {\n delete update.newDigest;\n }\n if (update.newVersion) {\n const registryUrl = dependency?.releases?.find(\n (release) => release.version === update.newVersion,\n )?.registryUrl;\n if (registryUrl && registryUrl !== res.registryUrl) {\n update.registryUrl = registryUrl;\n }\n }\n }\n }\n\n if (res.updates.length) {\n delete res.skipReason;\n }\n // Strip out any non-changed ones\n res.updates = res.updates\n .filter(\n (update) => update.newValue !== null || config.currentValue === null,\n )\n .filter((update) => update.newDigest !== null)\n .filter(\n (update) =>\n (is.string(update.newName) &&\n update.newName !== config.packageName) ||\n update.isReplacement === true ||\n update.newValue !== config.currentValue ||\n update.isLockfileUpdate === true ||\n // TODO #22198\n (update.newDigest &&\n !update.newDigest.startsWith(config.currentDigest!)),\n );\n // If range strategy specified in config is 'in-range-only', also strip out updates where currentValue !== newValue\n if (config.rangeStrategy === 'in-range-only') {\n res.updates = res.updates.filter(\n (update) => update.newValue === config.currentValue,\n );\n }\n // Handle a weird edge case involving followTag and fallbacks\n if (config.rollbackPrs && config.followTag) {\n res.updates = res.updates.filter(\n (update) =>\n res.updates.length === 1 ||\n /* istanbul ignore next */ update.updateType !== 'rollback',\n );\n }\n\n const release =\n res.updates.length > 0\n ? dependency?.releases.find(\n (r) => r.version === res.updates[0].newValue,\n )\n : null;\n\n if (release?.changelogContent) {\n res.changelogContent = release.changelogContent;\n res.changelogUrl = release.changelogUrl;\n }\n } catch (err) /* istanbul ignore next */ {\n if (err instanceof ExternalHostError) {\n return Result.err(err);\n }\n\n if (err instanceof Error && err.message === CONFIG_VALIDATION) {\n return Result.err(err);\n }\n\n logger.error(\n {\n currentDigest: config.currentDigest,\n currentValue: config.currentValue,\n datasource: config.datasource,\n packageName: config.packageName,\n digestOneAndOnly: config.digestOneAndOnly,\n followTag: config.followTag,\n lockedVersion: config.lockedVersion,\n packageFile: config.packageFile,\n pinDigests: config.pinDigests,\n rollbackPrs: config.rollbackPrs,\n isVulnerabilityAlert: config.isVulnerabilityAlert,\n updatePinnedDependencies: config.updatePinnedDependencies,\n err,\n },\n 'lookupUpdates error',\n );\n res.skipReason = 'internal-error';\n }\n return Result.ok(res);\n}\n"]}
|