renovate 40.41.2 → 40.41.4
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/util/host-rules.js
CHANGED
@@ -62,13 +62,14 @@ function add(params) {
|
|
62
62
|
hostRules.push(rule);
|
63
63
|
}
|
64
64
|
function matchesHost(url, matchHost) {
|
65
|
-
if ((0, url_1.isHttpUrl)(url) && (0, url_1.isHttpUrl)(matchHost)) {
|
66
|
-
return url.startsWith(matchHost);
|
67
|
-
}
|
68
65
|
const parsedUrl = (0, url_1.parseUrl)(url);
|
69
66
|
if (!parsedUrl) {
|
70
67
|
return false;
|
71
68
|
}
|
69
|
+
const parsedMatchHost = (0, url_1.parseUrl)(matchHost);
|
70
|
+
if ((0, url_1.isHttpUrl)(parsedUrl) && (0, url_1.isHttpUrl)(parsedMatchHost)) {
|
71
|
+
return parsedUrl.href.startsWith(parsedMatchHost.href);
|
72
|
+
}
|
72
73
|
const { hostname } = parsedUrl;
|
73
74
|
if (!hostname) {
|
74
75
|
return false;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"host-rules.js","sourceRoot":"","sources":["../../lib/util/host-rules.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../logger';\nimport type { CombinedHostRule, HostRule } from '../types';\nimport { clone } from './clone';\nimport * as sanitize from './sanitize';\nimport { toBase64 } from './string';\nimport { isHttpUrl, massageHostUrl, parseUrl } from './url';\n\nlet hostRules: HostRule[] = [];\n\nexport interface LegacyHostRule {\n hostName?: string;\n domainName?: string;\n baseUrl?: string;\n host?: string;\n endpoint?: string;\n}\n\nexport function migrateRule(rule: LegacyHostRule & HostRule): HostRule {\n const cloned: LegacyHostRule & HostRule = clone(rule);\n delete cloned.hostName;\n delete cloned.domainName;\n delete cloned.baseUrl;\n const result: HostRule = cloned;\n\n const { matchHost } = result;\n const { hostName, domainName, baseUrl } = rule;\n const hostValues = [matchHost, hostName, domainName, baseUrl].filter(Boolean);\n if (hostValues.length === 1) {\n const [matchHost] = hostValues;\n result.matchHost = matchHost;\n } else if (hostValues.length > 1) {\n throw new Error(\n `hostRules cannot contain more than one host-matching field - use \"matchHost\" only.`,\n );\n }\n\n return result;\n}\n\nexport function add(params: HostRule): void {\n const rule = migrateRule(params);\n\n const confidentialFields: (keyof HostRule)[] = ['password', 'token'];\n if (rule.matchHost) {\n rule.matchHost = massageHostUrl(rule.matchHost);\n const parsedUrl = parseUrl(rule.matchHost);\n rule.resolvedHost = parsedUrl?.hostname ?? rule.matchHost;\n confidentialFields.forEach((field) => {\n if (rule[field]) {\n logger.debug(\n // TODO: types (#22198)\n `Adding ${field} authentication for ${rule.matchHost!} (hostType=${\n rule.hostType\n }) to hostRules`,\n );\n }\n });\n }\n confidentialFields.forEach((field) => {\n const secret = rule[field];\n if (is.string(secret) && secret.length > 3) {\n sanitize.addSecretForSanitizing(secret);\n }\n });\n if (rule.username && rule.password) {\n sanitize.addSecretForSanitizing(\n toBase64(`${rule.username}:${rule.password}`),\n );\n }\n hostRules.push(rule);\n}\n\nexport interface HostRuleSearch {\n hostType?: string;\n url?: string;\n readOnly?: boolean;\n}\n\nexport function matchesHost(url: string, matchHost: string): boolean {\n if (isHttpUrl(url) && isHttpUrl(matchHost)) {\n return url.startsWith(matchHost);\n }\n\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n return false;\n }\n\n const { hostname } = parsedUrl;\n if (!hostname) {\n return false;\n }\n\n if (hostname === matchHost) {\n return true;\n }\n\n const topLevelSuffix = matchHost.startsWith('.')\n ? matchHost\n : `.${matchHost}`;\n return hostname.endsWith(topLevelSuffix);\n}\n\nfunction fromShorterToLongerMatchHost(a: HostRule, b: HostRule): number {\n if (!a.matchHost || !b.matchHost) {\n return 0;\n }\n return a.matchHost.length - b.matchHost.length;\n}\n\nfunction hostRuleRank({ hostType, matchHost, readOnly }: HostRule): number {\n if ((hostType || readOnly) && matchHost) {\n return 3;\n }\n\n if (matchHost) {\n return 2;\n }\n\n if (hostType) {\n return 1;\n }\n\n return 0;\n}\n\nfunction fromLowerToHigherRank(a: HostRule, b: HostRule): number {\n return hostRuleRank(a) - hostRuleRank(b);\n}\n\nexport function find(search: HostRuleSearch): CombinedHostRule {\n if ([search.hostType, search.url].every(is.falsy)) {\n logger.warn({ search }, 'Invalid hostRules search');\n return {};\n }\n\n // Sort primarily by rank, and secondarily by matchHost length\n const sortedRules = hostRules\n .sort(fromShorterToLongerMatchHost)\n .sort(fromLowerToHigherRank);\n\n const matchedRules: HostRule[] = [];\n for (const rule of sortedRules) {\n let hostTypeMatch = true;\n let hostMatch = true;\n let readOnlyMatch = true;\n\n if (rule.hostType) {\n hostTypeMatch = false;\n if (search.hostType === rule.hostType) {\n hostTypeMatch = true;\n }\n }\n\n if (rule.matchHost && rule.resolvedHost) {\n hostMatch = false;\n if (search.url) {\n hostMatch = matchesHost(search.url, rule.matchHost);\n }\n }\n\n if (!is.undefined(rule.readOnly)) {\n readOnlyMatch = false;\n if (search.readOnly === rule.readOnly) {\n readOnlyMatch = true;\n hostTypeMatch = true; // When we match `readOnly`, we don't care about `hostType`\n }\n }\n\n if (hostTypeMatch && readOnlyMatch && hostMatch) {\n matchedRules.push(clone(rule));\n }\n }\n\n const res: HostRule = Object.assign({}, ...matchedRules);\n delete res.hostType;\n delete res.resolvedHost;\n delete res.matchHost;\n delete res.readOnly;\n return res;\n}\n\nexport function hosts({ hostType }: { hostType: string }): string[] {\n return hostRules\n .filter((rule) => rule.hostType === hostType)\n .map((rule) => rule.resolvedHost)\n .filter(is.truthy);\n}\n\nexport function hostType({ url }: { url: string }): string | null {\n return (\n hostRules\n .filter((rule) => rule.matchHost && matchesHost(url, rule.matchHost))\n .sort(fromShorterToLongerMatchHost)\n .map((rule) => rule.hostType)\n .filter(is.truthy)\n .pop() ?? null\n );\n}\n\nexport function findAll({ hostType }: { hostType: string }): HostRule[] {\n return hostRules.filter((rule) => rule.hostType === hostType);\n}\n\n/**\n * @returns a deep copy of all known host rules without any filtering\n */\nexport function getAll(): HostRule[] {\n return clone(hostRules);\n}\n\nexport function clear(): void {\n logger.debug('Clearing hostRules');\n hostRules = [];\n sanitize.clearRepoSanitizedSecretsList();\n}\n"]}
|
1
|
+
{"version":3,"file":"host-rules.js","sourceRoot":"","sources":["../../lib/util/host-rules.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../logger';\nimport type { CombinedHostRule, HostRule } from '../types';\nimport { clone } from './clone';\nimport * as sanitize from './sanitize';\nimport { toBase64 } from './string';\nimport { isHttpUrl, massageHostUrl, parseUrl } from './url';\n\nlet hostRules: HostRule[] = [];\n\nexport interface LegacyHostRule {\n hostName?: string;\n domainName?: string;\n baseUrl?: string;\n host?: string;\n endpoint?: string;\n}\n\nexport function migrateRule(rule: LegacyHostRule & HostRule): HostRule {\n const cloned: LegacyHostRule & HostRule = clone(rule);\n delete cloned.hostName;\n delete cloned.domainName;\n delete cloned.baseUrl;\n const result: HostRule = cloned;\n\n const { matchHost } = result;\n const { hostName, domainName, baseUrl } = rule;\n const hostValues = [matchHost, hostName, domainName, baseUrl].filter(Boolean);\n if (hostValues.length === 1) {\n const [matchHost] = hostValues;\n result.matchHost = matchHost;\n } else if (hostValues.length > 1) {\n throw new Error(\n `hostRules cannot contain more than one host-matching field - use \"matchHost\" only.`,\n );\n }\n\n return result;\n}\n\nexport function add(params: HostRule): void {\n const rule = migrateRule(params);\n\n const confidentialFields: (keyof HostRule)[] = ['password', 'token'];\n if (rule.matchHost) {\n rule.matchHost = massageHostUrl(rule.matchHost);\n const parsedUrl = parseUrl(rule.matchHost);\n rule.resolvedHost = parsedUrl?.hostname ?? rule.matchHost;\n confidentialFields.forEach((field) => {\n if (rule[field]) {\n logger.debug(\n // TODO: types (#22198)\n `Adding ${field} authentication for ${rule.matchHost!} (hostType=${\n rule.hostType\n }) to hostRules`,\n );\n }\n });\n }\n confidentialFields.forEach((field) => {\n const secret = rule[field];\n if (is.string(secret) && secret.length > 3) {\n sanitize.addSecretForSanitizing(secret);\n }\n });\n if (rule.username && rule.password) {\n sanitize.addSecretForSanitizing(\n toBase64(`${rule.username}:${rule.password}`),\n );\n }\n hostRules.push(rule);\n}\n\nexport interface HostRuleSearch {\n hostType?: string;\n url?: string;\n readOnly?: boolean;\n}\n\nexport function matchesHost(url: string, matchHost: string): boolean {\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n return false;\n }\n\n const parsedMatchHost = parseUrl(matchHost);\n if (isHttpUrl(parsedUrl) && isHttpUrl(parsedMatchHost)) {\n return parsedUrl.href.startsWith(parsedMatchHost!.href);\n }\n\n const { hostname } = parsedUrl;\n if (!hostname) {\n return false;\n }\n\n if (hostname === matchHost) {\n return true;\n }\n\n const topLevelSuffix = matchHost.startsWith('.')\n ? matchHost\n : `.${matchHost}`;\n return hostname.endsWith(topLevelSuffix);\n}\n\nfunction fromShorterToLongerMatchHost(a: HostRule, b: HostRule): number {\n if (!a.matchHost || !b.matchHost) {\n return 0;\n }\n return a.matchHost.length - b.matchHost.length;\n}\n\nfunction hostRuleRank({ hostType, matchHost, readOnly }: HostRule): number {\n if ((hostType || readOnly) && matchHost) {\n return 3;\n }\n\n if (matchHost) {\n return 2;\n }\n\n if (hostType) {\n return 1;\n }\n\n return 0;\n}\n\nfunction fromLowerToHigherRank(a: HostRule, b: HostRule): number {\n return hostRuleRank(a) - hostRuleRank(b);\n}\n\nexport function find(search: HostRuleSearch): CombinedHostRule {\n if ([search.hostType, search.url].every(is.falsy)) {\n logger.warn({ search }, 'Invalid hostRules search');\n return {};\n }\n\n // Sort primarily by rank, and secondarily by matchHost length\n const sortedRules = hostRules\n .sort(fromShorterToLongerMatchHost)\n .sort(fromLowerToHigherRank);\n\n const matchedRules: HostRule[] = [];\n for (const rule of sortedRules) {\n let hostTypeMatch = true;\n let hostMatch = true;\n let readOnlyMatch = true;\n\n if (rule.hostType) {\n hostTypeMatch = false;\n if (search.hostType === rule.hostType) {\n hostTypeMatch = true;\n }\n }\n\n if (rule.matchHost && rule.resolvedHost) {\n hostMatch = false;\n if (search.url) {\n hostMatch = matchesHost(search.url, rule.matchHost);\n }\n }\n\n if (!is.undefined(rule.readOnly)) {\n readOnlyMatch = false;\n if (search.readOnly === rule.readOnly) {\n readOnlyMatch = true;\n hostTypeMatch = true; // When we match `readOnly`, we don't care about `hostType`\n }\n }\n\n if (hostTypeMatch && readOnlyMatch && hostMatch) {\n matchedRules.push(clone(rule));\n }\n }\n\n const res: HostRule = Object.assign({}, ...matchedRules);\n delete res.hostType;\n delete res.resolvedHost;\n delete res.matchHost;\n delete res.readOnly;\n return res;\n}\n\nexport function hosts({ hostType }: { hostType: string }): string[] {\n return hostRules\n .filter((rule) => rule.hostType === hostType)\n .map((rule) => rule.resolvedHost)\n .filter(is.truthy);\n}\n\nexport function hostType({ url }: { url: string }): string | null {\n return (\n hostRules\n .filter((rule) => rule.matchHost && matchesHost(url, rule.matchHost))\n .sort(fromShorterToLongerMatchHost)\n .map((rule) => rule.hostType)\n .filter(is.truthy)\n .pop() ?? null\n );\n}\n\nexport function findAll({ hostType }: { hostType: string }): HostRule[] {\n return hostRules.filter((rule) => rule.hostType === hostType);\n}\n\n/**\n * @returns a deep copy of all known host rules without any filtering\n */\nexport function getAll(): HostRule[] {\n return clone(hostRules);\n}\n\nexport function clear(): void {\n logger.debug('Clearing hostRules');\n hostRules = [];\n sanitize.clearRepoSanitizedSecretsList();\n}\n"]}
|
@@ -207,7 +207,7 @@ async function lookupUpdates(inconfig) {
|
|
207
207
|
if (rangeStrategy === 'update-lockfile') {
|
208
208
|
currentVersion = config.lockedVersion;
|
209
209
|
}
|
210
|
-
if (allVersions.find((v) => v.version === compareValue)) {
|
210
|
+
else if (allVersions.find((v) => v.version === compareValue)) {
|
211
211
|
currentVersion = compareValue;
|
212
212
|
}
|
213
213
|
// TODO #22198
|
@@ -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 { calculateLatestReleaseBump } 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) => calculateLatestReleaseBump(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 }\n 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 } 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":";;AAsEA,sCAktBC;;AAxxBD,kEAAkC;AAClC,+CAAsD;AAEtD,yEAAyE;AACzE,+CAA4C;AAM5C,+DAMwC;AACxC,kEAG+C;AAC/C,4FAAwF;AACxF,yDAA+D;AAC/D,sFAAgE;AAChE,kEAAiF;AACjF,sFAAiF;AACjF,8DAA0D;AAC1D,gDAAuD;AACvD,kEAAmE;AACnE,kDAA+C;AAC/C,oDAAiD;AAEjD,+CAAqD;AACrD,qCAAqC;AACrC,uCAA8C;AAC9C,qCAA0C;AAC1C,mDAAuD;AACvD,yCAA4C;AAC5C,yCAA+C;AAC/C,6CAA0D;AAE1D,mCAGiB;AAEjB,KAAK,UAAU,YAAY,CACzB,MAA0B,EAC1B,QAAmB,EACnB,OAAe,EACf,aAA0C;IAE1C,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CACJ,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAChC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAC3C,CAAC;IAEF,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACpC,OAAO,cAAc,CAAC,gBAAgB,CAAC;IACzC,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,IAAA,wCAAkB,EAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvE,OAAO,aAAa,EAAE,gBAAgB,CAAC;AACzC,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,QAA4B;IAE5B,IAAI,MAAM,GAAuB,EAAE,GAAG,QAAQ,EAAE,CAAC;IACjD,MAAM,CAAC,UAAU,KAAK,IAAA,6BAAoB,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE9D,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE3D,IAAI,UAAU,GAAyB,IAAI,CAAC;IAC5C,MAAM,GAAG,GAAiB;QACxB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,IAAI,CAAC;QACH,eAAM,CAAC,KAAK,CACV;YACE,UAAU,EAAE,MAAM,CAAC,WAAW;YAC9B,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,EACD,eAAe,CAChB,CAAC;QACF,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,qDAAqD;YACrD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,eAAM,CAAC,KAAK,CACV,4BAA4B,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,OAAO,MAAM,CAAC,YAAY,GAAG,CACzH,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,UAAU,GAAG,eAAe,CAAC;YACjC,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,IACE,CAAC,IAAA,mCAAsB,EAAC,MAAM,CAAC;YAC/B,CAAC,IAAA,yBAAgB,EAAC,MAAM,CAAC,UAAU,CAAC,EACpC,CAAC;YACD,GAAG,CAAC,UAAU,GAAG,gBAAgB,CAAC;YAClC,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACvC,IACE,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;YAC9B,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EACtC,CAAC;YACD,MAAM,wBAAwB,GAAG,IAAA,aAAK,EAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACtE,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;gBACvB,eAAM,CAAC,KAAK,CACV;oBACE,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;oBACjD,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,EACD,mCAAmC,CACpC,CAAC;gBACF,MAAM,CAAC,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC9D,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,KAAK,CACV;oBACE,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;oBACjD,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,EACD,sCAAsC,CACvC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GACX,YAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEjE,MAAM,kBAAkB,GACtB,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,YAAE,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE9D,IAAI,OAAO,IAAI,kBAAkB,EAAE,CAAC;YAClC,IACE,CAAC,MAAM,CAAC,wBAAwB;gBAChC,cAAc;gBACd,aAAa,CAAC,eAAe,CAAC,YAAa,CAAC,EAC5C,CAAC;gBACD,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC;gBAC7B,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YAED,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,8BAAiB,EACtE,MAAM,CACP;iBACE,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,uCAA0B,EAAC,aAAa,EAAE,GAAG,CAAC,CAAC;iBAClE,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,kCAAoB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;iBACrD,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,mCAAsB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;iBACvD,MAAM,EAAE,CAAC;YAEZ,IAAI,WAAW,YAAY,KAAK,EAAE,CAAC;gBACjC,MAAM,WAAW,CAAC;YACpB,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,kDAAkD;gBAClD,MAAM,OAAO,GAAsB;oBACjC,KAAK,EAAE,MAAM,CAAC,WAAW;oBACzB,OAAO,EAAE,qBAAqB,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,WAAW,EAAE;iBAChF,CAAC;gBACF,eAAM,CAAC,KAAK,CACV;oBACE,UAAU,EAAE,MAAM,CAAC,WAAW;oBAC9B,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,EACD,OAAO,CAAC,OAAO,CAChB,CAAC;gBACF,qCAAqC;gBACrC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3B,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YAED,UAAU,GAAG,aAAa,CAAC;YAE3B,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC;gBAClC,eAAM,CAAC,KAAK,CACV,gCAAgC,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,WAAW,EAAE,CAClF,CAAC;YACJ,CAAC;YAED,IAAA,wBAAU,EAAC,GAAG,EAAE,UAAU,EAAE;gBAC1B,oBAAoB;gBACpB,WAAW;gBACX,aAAa;gBACb,iBAAiB;gBACjB,UAAU;gBACV,cAAc;gBACd,eAAe;gBACf,YAAY;gBACZ,cAAc;gBACd,qBAAqB;gBACrB,aAAa;aACd,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;YAC9C,+EAA+E;YAC/E,IAAI,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CACvD,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CACzC,CAAC;YACF,qBAAqB;YACrB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,2DAA2D,CAAC;gBAC5E,eAAM,CAAC,IAAI,CACT;oBACE,UAAU,EAAE,MAAM,CAAC,WAAW;oBAC9B,MAAM,EAAE,UAAU;iBACnB,EACD,OAAO,CACR,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;oBAC1B,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YACD,mEAAmE;YACnE,MAAM,GAAG,MAAM,IAAA,iCAAiB,EAC9B,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EACvC,YAAY,CACb,CAAC;YACF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAChB,KAAK,EAAE,MAAM,CAAC,WAAW;wBACzB,OAAO,EAAE,+BAA+B,MAAM,CAAC,SAAS,QAAQ,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,WAAW,EAAE;qBAClH,CAAC,CAAC;oBACH,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;gBACD,WAAW,GAAG,WAAW,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,KAAK,aAAa;oBAC3B,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY;wBACzB,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAC9D,CAAC;YACJ,CAAC;YACD,kDAAkD;YAClD,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE;YACJ,cAAc;YACd,kBAAkB,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,YAAa,CAAC,CACxE,CAAC;YACF,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;gBAClC,eAAM,CAAC,KAAK,CACV,sCAAsC,MAAM,CAAC,UAAU,cAAc,CACtE,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;gBACxD,MAAM,QAAQ,GAAG,IAAA,4BAAiB,EAAC,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;gBACvE,qBAAqB;gBACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAChB,KAAK,EAAE,MAAM,CAAC,WAAW;wBACzB,uBAAuB;wBACvB,OAAO,EAAE,+BAA+B,YAAa,QACnD,MAAM,CAAC,UACT,YAAY,MAAM,CAAC,WAAW,EAAE;qBACjC,CAAC,CAAC;oBACH,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;gBACD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,aAAa,GAAG,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;YAE7C,uBAAuB;YACvB,IACE,MAAM,CAAC,oBAAoB;gBAC3B,aAAa,KAAK,iBAAiB;gBACnC,CAAC,MAAM,CAAC,aAAa,EACrB,CAAC;gBACD,aAAa,GAAG,MAAM,CAAC;YACzB,CAAC;YACD,wCAAwC;YACxC,IACE,MAAM,CAAC,oBAAoB;gBAC3B,CAAC,MAAM,CAAC,YAAY;gBACpB,MAAM,CAAC,aAAa,EACpB,CAAC;gBACD,aAAa,GAAG,iBAAiB,CAAC;YACpC,CAAC;YACD,MAAM,qBAAqB,GAAG,UAAU,CAAC,QAAQ;iBAC9C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;iBAC1C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,cAAsB,CAAC;YAC3B,IAAI,aAAa,KAAK,iBAAiB,EAAE,CAAC;gBACxC,cAAc,GAAG,MAAM,CAAC,aAAc,CAAC;YACzC,CAAC;iBAAM,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,EAAE,CAAC;gBAC/D,cAAc,GAAG,YAAa,CAAC;YACjC,CAAC;YACD,cAAc;YACd,cAAc;gBACZ,IAAA,2BAAiB,EACf,YAAa,EACb,MAAM,CAAC,aAAc,EACrB,aAAa,EACb,aAAc,EACd,aAAc,EACd,qBAAqB,CACtB;oBACD,IAAA,2BAAiB,EACf,YAAa,EACb,MAAM,CAAC,aAAc,EACrB,aAAa,EACb,aAAc,EACd,aAAc,EACd,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CACjC,CAAC;YAEL,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;oBAC1B,eAAM,CAAC,KAAK,CACV,gDAAgD,MAAM,CAAC,WAAW,EAAE,CACrE,CAAC;oBACF,GAAG,CAAC,UAAU,GAAG,eAAe,CAAC;gBACnC,CAAC;gBACD,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YAED,GAAG,CAAC,cAAc,GAAG,cAAe,CAAC;YACrC,MAAM,uBAAuB,GAAG,MAAM,YAAY,CAChD,MAAM,EACN,WAAW,EACX,cAAc,EACd,aAAa,CACd,CAAC;YAEF,IAAI,YAAE,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC/C,GAAG,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;gBACtD,GAAG,CAAC,uBAAuB,GAAG,IAAA,qBAAc,EAAC,uBAAuB,CAAC,CAAC;gBAEtE,IACE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACjC,YAAE,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CACxC,EACD,CAAC;oBACD,6DAA6D;oBAC7D,MAAM,GAAG,MAAM,IAAA,iCAAiB,EAC9B,EAAE,GAAG,MAAM,EAAE,uBAAuB,EAAE,EACtC,mBAAmB,CACpB,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IACE,YAAY;gBACZ,cAAc;gBACd,aAAa,KAAK,KAAK;gBACvB,CAAC,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,EAC5C,CAAC;gBACD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;oBACf,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,IAAI;oBACX,uCAAuC;oBACvC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC;wBAClC,YAAY,EAAE,YAAY;wBAC1B,aAAa;wBACb,cAAc;wBACd,UAAU,EAAE,cAAc;qBAC3B,CAAE;oBACH,UAAU,EAAE,cAAc;oBAC1B,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAE;iBAClD,CAAC,CAAC;YACL,CAAC;YACD,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;gBAC5B,kDAAkD;gBAClD,aAAa,GAAG,SAAS,CAAC;YAC5B,CAAC;YACD,qBAAqB;YACrB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,cAAe,CAAC,EAAE,CAAC;gBAC9C,GAAG,CAAC,UAAU,GAAG,iBAAiB,CAAC;gBACnC,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YACD,+BAA+B;YAC/B,cAAc;YACd,IAAI,gBAAgB,GAAG,IAAA,uBAAc,EACnC,MAAM,EACN,cAAe,EACf,aAAc,EACd,MAAM,CAAC,aAAa,KAAK,eAAe;gBACtC,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,WAAW,EACf,aAAa,CACd,CAAC,MAAM,CACN,CAAC,CAAC,EAAE,EAAE;YACJ,iCAAiC;YACjC,kBAAkB;gBAClB,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CACtD,CAAC;YACF,IAAI,wBAAwB,GAAG,KAAK,CAAC;YACrC,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;gBAChC,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;oBACnC,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;oBAC7D,GAAG,CAAC,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;oBAC/D,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC;wBAC1D,IAAI,qBAAqB,CAAC;wBAC1B,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC;4BAC5D,gEAAgE;4BAChE,qBAAqB,GAAG,gBAAgB,CAAC,MAAM,CAC7C,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,aAAa,CAAC,aAAa,CAC1B,MAAM,CAAC,uBAAwB,EAC/B,OAAO,CAAC,OAAO,CAChB,CACJ,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,oDAAoD;4BACpD,qBAAqB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1D,aAAa,CAAC,OAAO,CACnB,OAAO,CAAC,OAAO,EACf,MAAM,CAAC,uBAAwB,CAChC,CACF,CAAC;wBACJ,CAAC;wBACD,sDAAsD;wBACtD,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;4BAClE,eAAM,CAAC,IAAI,CACT;gCACE,QAAQ,EAAE,gBAAgB;gCAC1B,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;gCACvD,WAAW,EAAE,MAAM,CAAC,WAAW;6BAChC,EACD,6CAA6C,CAC9C,CAAC;wBACJ,CAAC;wBACD,yCAAyC;wBACzC,gBAAgB,GAAG,qBAAqB,CAAC;oBAC3C,CAAC;yBAAM,CAAC;wBACN,eAAM,CAAC,IAAI,CACT;4BACE,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;4BACvD,WAAW,EAAE,MAAM,CAAC,WAAW;yBAChC,EACD,sCAAsC,CACvC,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,wBAAwB,KAAK,SAAS,EAAE,CAAC;oBAClD,wEAAwE;oBACxE,eAAM,CAAC,IAAI,CAAC,KAAK,CACf,8CAA8C,MAAM,CAAC,WAAW,EAAE,CACnE,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,0DAA0D;oBAC1D,eAAM,CAAC,IAAI,CAAC,KAAK,CACf,6CAA6C,MAAM,CAAC,WAAW,EAAE,CAClE,CAAC;oBACF,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChD,wBAAwB,GAAG,IAAI,CAAC;gBAClC,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAA8B,EAAE,CAAC;YAC9C,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,IAAA,kBAAS,EACtB,MAAM;gBACN,cAAc;gBACd,cAAe,EACf,OAAO,CAAC,OAAO,EACf,aAAa,CACd,CAAC;gBACF,IAAI,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtB,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;wBACpB,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,eAAe,GAAG,IAAA,yBAAgB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACtD,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzD,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAC9C,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CACnD,CAAC;gBACF,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,GAC/C,MAAM,IAAA,oCAAoB,EACxB,eAAe,EACf,aAAa,EACb,MAAM,EACN,cAAc,CACf,CAAC;gBACJ,uBAAuB;gBACvB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;gBACD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAc,EACjC,MAAM,EACN,YAAY,EACZ,aAAa;gBACb,cAAc;gBAEd,aAAc,EACd,MAAM,CAAC,aAAa,IAAI,cAAe,EACvC,MAAM,EACN,OAAO,CACR,CAAC;gBAEF,SAAS;gBACT,IACE,MAAM,CAAC,OAAO,KAAK,OAAO;oBAC1B,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC;oBACnC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC;oBACtC,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,SAAS,EACzC,CAAC;oBACD,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAC/B,CAAC;gBAED,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;gBACvC,CAAC;gBAED,cAAc;gBACd,IAAI,eAAgB,CAAC,MAAM,EAAE,CAAC;oBAC5B,MAAM,CAAC,eAAe,GAAG,eAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAClE,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;oBACzD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;wBAC1B,SAAS;oBACX,CAAC;oBACD,qBAAqB;oBACrB,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;wBAC7B,eAAM,CAAC,KAAK,CACV;4BACE,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,aAAa,EAAE,MAAM,CAAC,aAAa;4BACnC,UAAU;yBACX,EACD,4CAA4C,CAC7C,CAAC;wBACF,SAAS;oBACX,CAAC;oBACD,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC7B,CAAC;gBACD,GAAG,CAAC,eAAe;oBACjB,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;wBAC1B,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACjD,qBAAqB;gBACrB,IACE,MAAM,CAAC,UAAU,KAAK,WAAkB;oBACxC,MAAM,CAAC,UAAU,KAAK,UAAU;oBAChC,MAAM,CAAC,QAAQ;oBACf,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACxC,YAAY;oBACZ,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC;oBACrC,aAAa,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,EAC1D,CAAC;oBACD,eAAM,CAAC,IAAI,CACT;wBACE,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;wBACjC,YAAY;wBACZ,cAAc,EAAE,MAAM,CAAC,cAAc;wBACrC,MAAM;wBACN,iBAAiB,EAAE,WAAW,CAAC,MAAM;wBACrC,uBAAuB,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;wBAC/D,wBAAwB;qBACzB,EACD,yCAAyC,CAC1C,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,eAAM,CAAC,KAAK,CACV,cAAc,MAAM,CAAC,WAAW,sCAAsC,YAAY,gBAAgB,MAAM,CAAC,UAAU,GAAG,CACvH,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAChD,eAAM,CAAC,KAAK,CACV,YAAY,MAAM,CAAC,WAAW,yCAAyC,CACxE,CAAC;gBACF,GAAG,CAAC,UAAU,GAAG,eAAe,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,CAAC,UAAU,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,UAAU,GAAG,eAAe,CAAC;QACnC,CAAC;QAED,IAAI,IAAA,oCAA4B,EAAC,MAAM,CAAC,EAAE,CAAC;YACzC,IAAA,mCAA2B,EAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,UAAU,EAAE,eAAe,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACxE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,aAAa;gBACzB,OAAO,EAAE,UAAU,CAAC,eAAe;gBACnC,QAAQ,EAAE,UAAU,CAAC,kBAAkB;aACxC,CAAC,CAAC;QACL,CAAC;QAED,0CAA0C;QAC1C,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;YAC1C,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,CAAC;aAAM,IAAI,YAAY,IAAI,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,+BAA+B;QAC/B,IACE,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;YAC9B,YAAE,CAAC,MAAM,CAAC,YAAY,CAAC;YACvB,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EACtC,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBACzB,IAAI,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAC3C,YAAY,EACZ,MAAM,CAAC,QAAQ,CAChB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAA,4BAAe,EAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACpD,gBAAgB;oBAChB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBACf,UAAU,EAAE,QAAQ;wBACpB,QAAQ,EAAE,MAAM,CAAC,YAAY;qBAC9B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC7B,kDAAkD;gBAClD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,CAAC;oBAC/D,aAAa;oBACb,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBACf,WAAW,EAAE,IAAI;wBACjB,UAAU,EAAE,WAAW;wBACvB,QAAQ,EAAE,MAAM,CAAC,YAAY;qBAC9B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,IAAI,aAAa,CAAC,cAAc,EAAE,CAAC;gBACjC,cAAc;gBACd,GAAG,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,cAAe,CAAC,CAAC;gBACvE,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,yBAAyB,CAAC,EAAE,EAAE,CAAC;oBACjE,cAAc;oBACd,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,UAAW,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;YACD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBACpB,MAAM,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC1C,CAAC;YAED,wBAAwB;YACxB,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;oBACvD,MAAM,eAAe,GAAyB;wBAC5C,GAAG,MAAM;wBACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW;wBAClD,UAAU,EAAE,GAAG,CAAC,UAAU;qBAC3B,CAAC;oBAEF,wFAAwF;oBACxF,IAAI,MAAM,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;wBACxC,OAAO,eAAe,CAAC,eAAe,CAAC;oBACzC,CAAC;oBAED,2EAA2E;oBAC3E,IACE,MAAM,CAAC,UAAU,KAAK,aAAa;wBACnC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,WAAW,EACrC,CAAC;wBACD,OAAO,eAAe,CAAC,UAAU,CAAC;wBAClC,OAAO,eAAe,CAAC,aAAa,CAAC;oBACvC,CAAC;oBAED,cAAc;oBACd,MAAM,CAAC,SAAS;wBACd,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,QAAQ,CAAC;4BAC7D,EAAE,SAAS;4BACb,CAAC,MAAM,IAAA,sBAAS,EAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAE,CAAC;oBAEvD,sEAAsE;oBACtE,kDAAkD;oBAClD,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;wBAC9B,eAAM,CAAC,KAAK,CACV;4BACE,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,MAAM,EAAE,MAAM,CAAC,MAAM;yBACtB,EACD,4CAA4C,CAC7C,CAAC;wBAEF,sDAAsD;wBACtD,sFAAsF;wBACtF,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;4BACzB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gCAChB,OAAO,EAAE,8CAA8C,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,WAAW,GAAG;gCACzG,KAAK,EAAE,MAAM,CAAC,WAAW;6BAC1B,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,MAAM,CAAC,SAAS,CAAC;gBAC1B,CAAC;gBACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtB,MAAM,WAAW,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,CAC5C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,UAAU,CACnD,EAAE,WAAW,CAAC;oBACf,IAAI,WAAW,IAAI,WAAW,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;wBACnD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,UAAU,CAAC;QACxB,CAAC;QACD,iCAAiC;QACjC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO;aACtB,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,CACrE;aACA,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC;aAC7C,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CACT,CAAC,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YACxB,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,WAAW,CAAC;YACxC,MAAM,CAAC,aAAa,KAAK,IAAI;YAC7B,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,YAAY;YACvC,MAAM,CAAC,gBAAgB,KAAK,IAAI;YAChC,cAAc;YACd,CAAC,MAAM,CAAC,SAAS;gBACf,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,aAAc,CAAC,CAAC,CACzD,CAAC;QACJ,mHAAmH;QACnH,IAAI,MAAM,CAAC,aAAa,KAAK,eAAe,EAAE,CAAC;YAC7C,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAC9B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,YAAY,CACpD,CAAC;QACJ,CAAC;QACD,6DAA6D;QAC7D,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3C,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAC9B,CAAC,MAAM,EAAE,EAAE,CACT,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBACxB,0BAA0B,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,0BAA0B,CAAC,CAAC;QACxC,IAAI,GAAG,YAAY,uCAAiB,EAAE,CAAC;YACrC,OAAO,eAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,kCAAiB,EAAE,CAAC;YAC9D,OAAO,eAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,eAAM,CAAC,KAAK,CACV;YACE,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;YACzD,GAAG;SACJ,EACD,qBAAqB,CACtB,CAAC;QACF,GAAG,CAAC,UAAU,GAAG,gBAAgB,CAAC;IACpC,CAAC;IACD,OAAO,eAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC","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 { calculateLatestReleaseBump } 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) => calculateLatestReleaseBump(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 } 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": "40.41.
|
4
|
+
"version": "40.41.4",
|
5
5
|
"type": "commonjs",
|
6
6
|
"bin": {
|
7
7
|
"renovate": "dist/renovate.js",
|
@@ -261,7 +261,7 @@
|
|
261
261
|
"vuln-vects": "1.1.0",
|
262
262
|
"xmldoc": "1.3.0",
|
263
263
|
"yaml": "2.8.0",
|
264
|
-
"zod": "3.25.
|
264
|
+
"zod": "3.25.34"
|
265
265
|
},
|
266
266
|
"optionalDependencies": {
|
267
267
|
"better-sqlite3": "11.10.0",
|