renovate 41.42.8 → 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.
@@ -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 gitea_helper_1 = require("../../../modules/platform/gitea/gitea-helper");
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, gitea_helper_1.getRepoContents)(repo, fileName, tag, {
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,+EAA+E;AAE/E,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,8BAAe,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/gitea/gitea-helper';\nimport type { RepoContents } from '../../../modules/platform/gitea/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"]}
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?: Release[];
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?: 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
+ {"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"]}
@@ -346,7 +346,6 @@ async function lookupUpdates(inconfig) {
346
346
  if (pendingChecks) {
347
347
  update.pendingChecks = pendingChecks;
348
348
  }
349
- // TODO #22198
350
349
  if (pendingReleases.length) {
351
350
  update.pendingVersions = pendingReleases.map((r) => r.version);
352
351
  }
@@ -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"]}
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": "41.42.8",
4
+ "version": "41.42.10",
5
5
  "type": "commonjs",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",