renovate 43.136.2 → 43.137.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/datasource/pypi/index.js +30 -8
- package/dist/modules/datasource/pypi/index.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/github-actions/community.js +104 -186
- package/dist/modules/manager/github-actions/community.js.map +1 -1
- package/dist/modules/versioning/github-actions/index.js +3 -3
- package/dist/modules/versioning/github-actions/index.js.map +1 -1
- package/dist/modules/versioning/types.d.ts +1 -1
- package/dist/workers/repository/process/lookup/generate.js.map +1 -1
- package/dist/workers/repository/process/lookup/index.js +1 -1
- package/dist/workers/repository/process/lookup/index.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -55,26 +55,48 @@ var PypiDatasource = class PypiDatasource extends Datasource {
|
|
|
55
55
|
}
|
|
56
56
|
return dependency;
|
|
57
57
|
}
|
|
58
|
+
sanitizeLookupUrl(lookupUrl, parsedUrl) {
|
|
59
|
+
if (!parsedUrl.username && !parsedUrl.password) return lookupUrl;
|
|
60
|
+
parsedUrl.username = "";
|
|
61
|
+
parsedUrl.password = "";
|
|
62
|
+
return parsedUrl.toString();
|
|
63
|
+
}
|
|
58
64
|
async getAuthHeaders(lookupUrl) {
|
|
59
65
|
const parsedUrl = parseUrl(lookupUrl);
|
|
66
|
+
// v8 ignore if -- TODO: refactor to cover this branch through public behavior again
|
|
60
67
|
if (!parsedUrl) {
|
|
61
68
|
logger.once.debug({ lookupUrl }, "Failed to parse URL");
|
|
62
|
-
return {
|
|
69
|
+
return {
|
|
70
|
+
headers: {},
|
|
71
|
+
lookupUrl
|
|
72
|
+
};
|
|
63
73
|
}
|
|
64
74
|
if (parsedUrl.hostname.endsWith(".pkg.dev")) {
|
|
65
75
|
const auth = await getGoogleAuthToken();
|
|
66
|
-
if (auth)
|
|
76
|
+
if (auth) {
|
|
77
|
+
const sanitizedLookupUrl = this.sanitizeLookupUrl(lookupUrl, parsedUrl);
|
|
78
|
+
return {
|
|
79
|
+
headers: { authorization: `Basic ${auth}` },
|
|
80
|
+
lookupUrl: sanitizedLookupUrl
|
|
81
|
+
};
|
|
82
|
+
}
|
|
67
83
|
logger.once.debug({ lookupUrl }, "Could not get Google access token");
|
|
68
|
-
return {
|
|
84
|
+
return {
|
|
85
|
+
headers: {},
|
|
86
|
+
lookupUrl
|
|
87
|
+
};
|
|
69
88
|
}
|
|
70
|
-
return {
|
|
89
|
+
return {
|
|
90
|
+
headers: {},
|
|
91
|
+
lookupUrl
|
|
92
|
+
};
|
|
71
93
|
}
|
|
72
94
|
async getDependency(packageName, hostUrl) {
|
|
73
95
|
const lookupUrl = new URL(`${normalizePythonDepName(packageName)}/json`, hostUrl).href;
|
|
74
96
|
const dependency = { releases: [] };
|
|
75
97
|
logger.trace({ lookupUrl }, "Pypi api got lookup");
|
|
76
|
-
const headers = await this.getAuthHeaders(lookupUrl);
|
|
77
|
-
const rep = await this.http.getJsonUnchecked(
|
|
98
|
+
const { headers, lookupUrl: sanitizedUrl } = await this.getAuthHeaders(lookupUrl);
|
|
99
|
+
const rep = await this.http.getJsonUnchecked(sanitizedUrl, { headers });
|
|
78
100
|
const dep = rep?.body;
|
|
79
101
|
if (!dep) {
|
|
80
102
|
logger.trace({ dependency: packageName }, "pip package not found");
|
|
@@ -137,8 +159,8 @@ var PypiDatasource = class PypiDatasource extends Datasource {
|
|
|
137
159
|
async getSimpleDependency(packageName, hostUrl) {
|
|
138
160
|
const lookupUrl = new URL(ensureTrailingSlash(normalizePythonDepName(packageName)), hostUrl).href;
|
|
139
161
|
const dependency = { releases: [] };
|
|
140
|
-
const headers = await this.getAuthHeaders(lookupUrl);
|
|
141
|
-
const response = await this.http.getText(
|
|
162
|
+
const { headers, lookupUrl: sanitizedUrl } = await this.getAuthHeaders(lookupUrl);
|
|
163
|
+
const response = await this.http.getText(sanitizedUrl, { headers });
|
|
142
164
|
const dep = response?.body;
|
|
143
165
|
if (!dep) {
|
|
144
166
|
logger.trace({ dependency: packageName }, "pip package not found");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["pep440.id"],"sources":["../../../../lib/modules/datasource/pypi/index.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport changelogFilenameRegex from 'changelog-filename-regex';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { getEnv } from '../../../util/env.ts';\nimport { parse } from '../../../util/html.ts';\nimport type { OutgoingHttpHeaders } from '../../../util/http/types.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { ensureTrailingSlash, parseUrl } from '../../../util/url.ts';\nimport * as pep440 from '../../versioning/pep440/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport { getGoogleAuthToken } from '../util.ts';\nimport { isGitHubRepo, normalizePythonDepName } from './common.ts';\nimport type { PypiJSON, PypiJSONRelease, Releases } from './types.ts';\n\nexport class PypiDatasource extends Datasource {\n static readonly id = 'pypi';\n\n constructor() {\n super(PypiDatasource.id);\n }\n\n override readonly caching = true;\n\n override readonly customRegistrySupport = true;\n\n static readonly defaultURL =\n getEnv().PIP_INDEX_URL ?? 'https://pypi.org/pypi/';\n override readonly defaultRegistryUrls = [PypiDatasource.defaultURL];\n\n override readonly defaultVersioning = pep440.id;\n\n override readonly registryStrategy = 'merge';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The relase timestamp is determined from the `upload_time` field in the results. This field is not available when using the simple API.';\n override readonly sourceUrlSupport = 'release';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `homepage` field if it is a github repository, else we use the `project_urls` field.';\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n let dependency: ReleaseResult | null = null;\n // TODO: null check (#22198)\n const hostUrl = ensureTrailingSlash(\n registryUrl!.replace('https://pypi.org/simple', 'https://pypi.org/pypi'),\n );\n const normalizedLookupName = normalizePythonDepName(packageName);\n\n // not all simple indexes use this identifier, but most do\n if (hostUrl.endsWith('/simple/') || hostUrl.endsWith('/+simple/')) {\n logger.trace(\n { packageName, hostUrl },\n 'Looking up pypi simple dependency',\n );\n dependency = await this.getSimpleDependency(\n normalizedLookupName,\n hostUrl,\n );\n } else {\n logger.trace({ packageName, hostUrl }, 'Looking up pypi api dependency');\n try {\n // we need to resolve early here so we can catch any 404s and fallback to a simple lookup\n dependency = await this.getDependency(normalizedLookupName, hostUrl);\n } catch (err) {\n // error contacting json-style api -- attempt to fallback to a simple-style api\n logger.trace(\n { packageName, hostUrl, err },\n 'Looking up pypi simple dependency via fallback',\n );\n dependency = await this.getSimpleDependency(\n normalizedLookupName,\n hostUrl,\n );\n }\n }\n return dependency;\n }\n\n private async getAuthHeaders(\n lookupUrl: string,\n ): Promise<OutgoingHttpHeaders> {\n const parsedUrl = parseUrl(lookupUrl);\n if (!parsedUrl) {\n logger.once.debug({ lookupUrl }, 'Failed to parse URL');\n return {};\n }\n if (parsedUrl.hostname.endsWith('.pkg.dev')) {\n const auth = await getGoogleAuthToken();\n if (auth) {\n return { authorization: `Basic ${auth}` };\n }\n logger.once.debug({ lookupUrl }, 'Could not get Google access token');\n return {};\n }\n return {};\n }\n\n private async getDependency(\n packageName: string,\n hostUrl: string,\n ): Promise<ReleaseResult | null> {\n const lookupUrl = new URL(\n `${normalizePythonDepName(packageName)}/json`,\n hostUrl,\n ).href;\n const dependency: ReleaseResult = { releases: [] };\n logger.trace({ lookupUrl }, 'Pypi api got lookup');\n const headers = await this.getAuthHeaders(lookupUrl);\n const rep = await this.http.getJsonUnchecked<PypiJSON>(lookupUrl, {\n headers,\n });\n const dep = rep?.body;\n if (!dep) {\n logger.trace({ dependency: packageName }, 'pip package not found');\n return null;\n }\n if (rep.authorization) {\n dependency.isPrivate = true;\n }\n logger.trace({ lookupUrl }, 'Got pypi api result');\n\n if (dep.info?.home_page) {\n dependency.homepage = dep.info.home_page;\n if (isGitHubRepo(dep.info.home_page)) {\n dependency.sourceUrl = dep.info.home_page.replace(\n 'http://',\n 'https://',\n );\n }\n }\n\n if (dep.info?.project_urls) {\n for (const [name, projectUrl] of Object.entries(dep.info.project_urls)) {\n const lower = name.toLowerCase();\n\n if (\n !dependency.sourceUrl &&\n (lower.startsWith('repo') ||\n lower === 'code' ||\n lower === 'source' ||\n isGitHubRepo(projectUrl))\n ) {\n dependency.sourceUrl = projectUrl;\n }\n\n if (\n !dependency.changelogUrl &&\n ([\n 'changelog',\n 'change log',\n 'changes',\n 'release notes',\n 'news',\n \"what's new\",\n ].includes(lower) ||\n changelogFilenameRegex.exec(lower))\n ) {\n // from https://github.com/pypa/warehouse/blob/418c7511dc367fb410c71be139545d0134ccb0df/warehouse/templates/packaging/detail.html#L24\n dependency.changelogUrl = projectUrl;\n }\n }\n }\n\n if (dep.releases) {\n const versions = Object.keys(dep.releases);\n dependency.releases = versions.map((version) => {\n const releases = coerceArray(dep.releases?.[version]);\n const { upload_time: releaseTimestamp } = releases[0] || {};\n const isDeprecated = releases.some(({ yanked }) => yanked);\n const result: Release = {\n version,\n releaseTimestamp: asTimestamp(releaseTimestamp),\n };\n if (isDeprecated) {\n result.isDeprecated = isDeprecated;\n }\n // There may be multiple releases with different requires_python, so we return all in an array\n const pythonConstraints = releases\n .map(({ requires_python }) => requires_python)\n .filter(isString);\n result.constraints = {\n python: Array.from(new Set(pythonConstraints)),\n };\n return result;\n });\n }\n return dependency;\n }\n\n private static extractVersionFromLinkText(\n text: string,\n packageName: string,\n ): string | null {\n // source packages\n const lcText = text.toLowerCase();\n const normalizedSrcText = normalizePythonDepName(text);\n const srcPrefix = `${packageName}-`;\n\n // source distribution format: `{name}-{version}.tar.gz` (https://packaging.python.org/en/latest/specifications/source-distribution-format/#source-distribution-file-name)\n // binary distribution: `{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl` (https://packaging.python.org/en/latest/specifications/binary-distribution-format/#file-name-convention)\n // officially both `name` and `distribution` should be normalized and then the - replaced with _, but in reality this is not the case\n // We therefore normalize the name we have (replacing `_-.` with -) and then check if the text starts with the normalized name\n\n if (!normalizedSrcText.startsWith(srcPrefix)) {\n return null;\n }\n\n // strip off the prefix using the prefix length as we may have normalized the srcPrefix/packageName\n // We assume that neither the version nor the suffix contains multiple `-` like `0.1.2---rc1.tar.gz`\n // and use the difference in length to strip off the prefix in case the name contains double `--` characters\n const normalizedLengthDiff = lcText.length - normalizedSrcText.length;\n const res = lcText.slice(srcPrefix.length + normalizedLengthDiff);\n\n // source distribution\n const srcSuffixes = ['.tar.gz', '.tar.bz2', '.tar.xz', '.zip', '.tgz'];\n const srcSuffix = srcSuffixes.find((suffix) => lcText.endsWith(suffix));\n if (srcSuffix) {\n // strip off the suffix using character length\n return res.slice(0, -srcSuffix.length);\n }\n\n // binary distribution\n // for binary distributions the version is the first part after the removed distribution name\n const wheelSuffix = '.whl';\n if (lcText.endsWith(wheelSuffix) && lcText.split('-').length > 2) {\n return res.split('-')[0];\n }\n return null;\n }\n\n private static cleanSimpleHtml(html: string): string {\n return (\n html\n .replace(regEx(/<\\/?pre>/), '')\n // Certain simple repositories like artifactory don't escape > and <\n .replace(\n regEx(/data-requires-python=\"([^\"]*?)>([^\"]*?)\"/g),\n 'data-requires-python=\"$1>$2\"',\n )\n .replace(\n regEx(/data-requires-python=\"([^\"]*?)<([^\"]*?)\"/g),\n 'data-requires-python=\"$1<$2\"',\n )\n );\n }\n\n private async getSimpleDependency(\n packageName: string,\n hostUrl: string,\n ): Promise<ReleaseResult | null> {\n const lookupUrl = new URL(\n ensureTrailingSlash(normalizePythonDepName(packageName)),\n hostUrl,\n ).href;\n const dependency: ReleaseResult = { releases: [] };\n const headers = await this.getAuthHeaders(lookupUrl);\n const response = await this.http.getText(lookupUrl, { headers });\n const dep = response?.body;\n if (!dep) {\n logger.trace({ dependency: packageName }, 'pip package not found');\n return null;\n }\n if (response.authorization) {\n dependency.isPrivate = true;\n }\n const root = parse(PypiDatasource.cleanSimpleHtml(dep));\n const links = root.querySelectorAll('a');\n const releases: Releases = {};\n for (const link of Array.from(links)) {\n const version = PypiDatasource.extractVersionFromLinkText(\n link.text?.trim(),\n packageName,\n );\n if (version) {\n const release: PypiJSONRelease = {\n yanked: link.hasAttribute('data-yanked'),\n };\n const requiresPython = link.getAttribute('data-requires-python');\n if (requiresPython) {\n release.requires_python = requiresPython;\n }\n if (!releases[version]) {\n releases[version] = [];\n }\n releases[version].push(release);\n }\n }\n const versions = Object.keys(releases);\n dependency.releases = versions.map((version) => {\n const versionReleases = coerceArray(releases[version]);\n const isDeprecated = versionReleases.some(({ yanked }) => yanked);\n const result: Release = { version };\n if (isDeprecated) {\n result.isDeprecated = isDeprecated;\n }\n // There may be multiple releases with different requires_python, so we return all in an array\n result.constraints = {\n // TODO: string[] isn't allowed here\n python: versionReleases.map(\n ({ requires_python }) => requires_python,\n ) as any,\n };\n return result;\n });\n return dependency;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["pep440.id"],"sources":["../../../../lib/modules/datasource/pypi/index.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport changelogFilenameRegex from 'changelog-filename-regex';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { getEnv } from '../../../util/env.ts';\nimport { parse } from '../../../util/html.ts';\nimport type { OutgoingHttpHeaders } from '../../../util/http/types.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { ensureTrailingSlash, parseUrl } from '../../../util/url.ts';\nimport * as pep440 from '../../versioning/pep440/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport { getGoogleAuthToken } from '../util.ts';\nimport { isGitHubRepo, normalizePythonDepName } from './common.ts';\nimport type { PypiJSON, PypiJSONRelease, Releases } from './types.ts';\n\nexport class PypiDatasource extends Datasource {\n static readonly id = 'pypi';\n\n constructor() {\n super(PypiDatasource.id);\n }\n\n override readonly caching = true;\n\n override readonly customRegistrySupport = true;\n\n static readonly defaultURL =\n getEnv().PIP_INDEX_URL ?? 'https://pypi.org/pypi/';\n override readonly defaultRegistryUrls = [PypiDatasource.defaultURL];\n\n override readonly defaultVersioning = pep440.id;\n\n override readonly registryStrategy = 'merge';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The relase timestamp is determined from the `upload_time` field in the results. This field is not available when using the simple API.';\n override readonly sourceUrlSupport = 'release';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `homepage` field if it is a github repository, else we use the `project_urls` field.';\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n let dependency: ReleaseResult | null = null;\n // TODO: null check (#22198)\n const hostUrl = ensureTrailingSlash(\n registryUrl!.replace('https://pypi.org/simple', 'https://pypi.org/pypi'),\n );\n const normalizedLookupName = normalizePythonDepName(packageName);\n\n // not all simple indexes use this identifier, but most do\n if (hostUrl.endsWith('/simple/') || hostUrl.endsWith('/+simple/')) {\n logger.trace(\n { packageName, hostUrl },\n 'Looking up pypi simple dependency',\n );\n dependency = await this.getSimpleDependency(\n normalizedLookupName,\n hostUrl,\n );\n } else {\n logger.trace({ packageName, hostUrl }, 'Looking up pypi api dependency');\n try {\n // we need to resolve early here so we can catch any 404s and fallback to a simple lookup\n dependency = await this.getDependency(normalizedLookupName, hostUrl);\n } catch (err) {\n // error contacting json-style api -- attempt to fallback to a simple-style api\n logger.trace(\n { packageName, hostUrl, err },\n 'Looking up pypi simple dependency via fallback',\n );\n dependency = await this.getSimpleDependency(\n normalizedLookupName,\n hostUrl,\n );\n }\n }\n return dependency;\n }\n\n private sanitizeLookupUrl(lookupUrl: string, parsedUrl: URL): string {\n if (!parsedUrl.username && !parsedUrl.password) {\n return lookupUrl;\n }\n\n parsedUrl.username = '';\n parsedUrl.password = '';\n return parsedUrl.toString();\n }\n\n private async getAuthHeaders(\n lookupUrl: string,\n ): Promise<{ headers: OutgoingHttpHeaders; lookupUrl: string }> {\n const parsedUrl = parseUrl(lookupUrl);\n // v8 ignore if -- TODO: refactor to cover this branch through public behavior again\n if (!parsedUrl) {\n logger.once.debug({ lookupUrl }, 'Failed to parse URL');\n return { headers: {}, lookupUrl };\n }\n if (parsedUrl.hostname.endsWith('.pkg.dev')) {\n const auth = await getGoogleAuthToken();\n if (auth) {\n const sanitizedLookupUrl = this.sanitizeLookupUrl(lookupUrl, parsedUrl);\n return {\n headers: { authorization: `Basic ${auth}` },\n lookupUrl: sanitizedLookupUrl,\n };\n }\n logger.once.debug({ lookupUrl }, 'Could not get Google access token');\n return { headers: {}, lookupUrl };\n }\n return { headers: {}, lookupUrl };\n }\n\n private async getDependency(\n packageName: string,\n hostUrl: string,\n ): Promise<ReleaseResult | null> {\n const lookupUrl = new URL(\n `${normalizePythonDepName(packageName)}/json`,\n hostUrl,\n ).href;\n const dependency: ReleaseResult = { releases: [] };\n logger.trace({ lookupUrl }, 'Pypi api got lookup');\n const { headers, lookupUrl: sanitizedUrl } =\n await this.getAuthHeaders(lookupUrl);\n const rep = await this.http.getJsonUnchecked<PypiJSON>(sanitizedUrl, {\n headers,\n });\n const dep = rep?.body;\n if (!dep) {\n logger.trace({ dependency: packageName }, 'pip package not found');\n return null;\n }\n if (rep.authorization) {\n dependency.isPrivate = true;\n }\n logger.trace({ lookupUrl }, 'Got pypi api result');\n\n if (dep.info?.home_page) {\n dependency.homepage = dep.info.home_page;\n if (isGitHubRepo(dep.info.home_page)) {\n dependency.sourceUrl = dep.info.home_page.replace(\n 'http://',\n 'https://',\n );\n }\n }\n\n if (dep.info?.project_urls) {\n for (const [name, projectUrl] of Object.entries(dep.info.project_urls)) {\n const lower = name.toLowerCase();\n\n if (\n !dependency.sourceUrl &&\n (lower.startsWith('repo') ||\n lower === 'code' ||\n lower === 'source' ||\n isGitHubRepo(projectUrl))\n ) {\n dependency.sourceUrl = projectUrl;\n }\n\n if (\n !dependency.changelogUrl &&\n ([\n 'changelog',\n 'change log',\n 'changes',\n 'release notes',\n 'news',\n \"what's new\",\n ].includes(lower) ||\n changelogFilenameRegex.exec(lower))\n ) {\n // from https://github.com/pypa/warehouse/blob/418c7511dc367fb410c71be139545d0134ccb0df/warehouse/templates/packaging/detail.html#L24\n dependency.changelogUrl = projectUrl;\n }\n }\n }\n\n if (dep.releases) {\n const versions = Object.keys(dep.releases);\n dependency.releases = versions.map((version) => {\n const releases = coerceArray(dep.releases?.[version]);\n const { upload_time: releaseTimestamp } = releases[0] || {};\n const isDeprecated = releases.some(({ yanked }) => yanked);\n const result: Release = {\n version,\n releaseTimestamp: asTimestamp(releaseTimestamp),\n };\n if (isDeprecated) {\n result.isDeprecated = isDeprecated;\n }\n // There may be multiple releases with different requires_python, so we return all in an array\n const pythonConstraints = releases\n .map(({ requires_python }) => requires_python)\n .filter(isString);\n result.constraints = {\n python: Array.from(new Set(pythonConstraints)),\n };\n return result;\n });\n }\n return dependency;\n }\n\n private static extractVersionFromLinkText(\n text: string,\n packageName: string,\n ): string | null {\n // source packages\n const lcText = text.toLowerCase();\n const normalizedSrcText = normalizePythonDepName(text);\n const srcPrefix = `${packageName}-`;\n\n // source distribution format: `{name}-{version}.tar.gz` (https://packaging.python.org/en/latest/specifications/source-distribution-format/#source-distribution-file-name)\n // binary distribution: `{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl` (https://packaging.python.org/en/latest/specifications/binary-distribution-format/#file-name-convention)\n // officially both `name` and `distribution` should be normalized and then the - replaced with _, but in reality this is not the case\n // We therefore normalize the name we have (replacing `_-.` with -) and then check if the text starts with the normalized name\n\n if (!normalizedSrcText.startsWith(srcPrefix)) {\n return null;\n }\n\n // strip off the prefix using the prefix length as we may have normalized the srcPrefix/packageName\n // We assume that neither the version nor the suffix contains multiple `-` like `0.1.2---rc1.tar.gz`\n // and use the difference in length to strip off the prefix in case the name contains double `--` characters\n const normalizedLengthDiff = lcText.length - normalizedSrcText.length;\n const res = lcText.slice(srcPrefix.length + normalizedLengthDiff);\n\n // source distribution\n const srcSuffixes = ['.tar.gz', '.tar.bz2', '.tar.xz', '.zip', '.tgz'];\n const srcSuffix = srcSuffixes.find((suffix) => lcText.endsWith(suffix));\n if (srcSuffix) {\n // strip off the suffix using character length\n return res.slice(0, -srcSuffix.length);\n }\n\n // binary distribution\n // for binary distributions the version is the first part after the removed distribution name\n const wheelSuffix = '.whl';\n if (lcText.endsWith(wheelSuffix) && lcText.split('-').length > 2) {\n return res.split('-')[0];\n }\n return null;\n }\n\n private static cleanSimpleHtml(html: string): string {\n return (\n html\n .replace(regEx(/<\\/?pre>/), '')\n // Certain simple repositories like artifactory don't escape > and <\n .replace(\n regEx(/data-requires-python=\"([^\"]*?)>([^\"]*?)\"/g),\n 'data-requires-python=\"$1>$2\"',\n )\n .replace(\n regEx(/data-requires-python=\"([^\"]*?)<([^\"]*?)\"/g),\n 'data-requires-python=\"$1<$2\"',\n )\n );\n }\n\n private async getSimpleDependency(\n packageName: string,\n hostUrl: string,\n ): Promise<ReleaseResult | null> {\n const lookupUrl = new URL(\n ensureTrailingSlash(normalizePythonDepName(packageName)),\n hostUrl,\n ).href;\n const dependency: ReleaseResult = { releases: [] };\n const { headers, lookupUrl: sanitizedUrl } =\n await this.getAuthHeaders(lookupUrl);\n const response = await this.http.getText(sanitizedUrl, { headers });\n const dep = response?.body;\n if (!dep) {\n logger.trace({ dependency: packageName }, 'pip package not found');\n return null;\n }\n if (response.authorization) {\n dependency.isPrivate = true;\n }\n const root = parse(PypiDatasource.cleanSimpleHtml(dep));\n const links = root.querySelectorAll('a');\n const releases: Releases = {};\n for (const link of Array.from(links)) {\n const version = PypiDatasource.extractVersionFromLinkText(\n link.text?.trim(),\n packageName,\n );\n if (version) {\n const release: PypiJSONRelease = {\n yanked: link.hasAttribute('data-yanked'),\n };\n const requiresPython = link.getAttribute('data-requires-python');\n if (requiresPython) {\n release.requires_python = requiresPython;\n }\n if (!releases[version]) {\n releases[version] = [];\n }\n releases[version].push(release);\n }\n }\n const versions = Object.keys(releases);\n dependency.releases = versions.map((version) => {\n const versionReleases = coerceArray(releases[version]);\n const isDeprecated = versionReleases.some(({ yanked }) => yanked);\n const result: Release = { version };\n if (isDeprecated) {\n result.isDeprecated = isDeprecated;\n }\n // There may be multiple releases with different requires_python, so we return all in an array\n result.constraints = {\n // TODO: string[] isn't allowed here\n python: versionReleases.map(\n ({ requires_python }) => requires_python,\n ) as any,\n };\n return result;\n });\n return dependency;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAiBA,IAAa,iBAAb,MAAa,uBAAuB,WAAW;CAC7C,OAAgB,KAAK;CAErB,cAAc;AACZ,QAAM,eAAe,GAAG;;CAG1B,UAA4B;CAE5B,wBAA0C;CAE1C,OAAgB,aACd,QAAQ,CAAC,iBAAiB;CAC5B,sBAAwC,CAAC,eAAe,WAAW;CAEnE,oBAAsCA;CAEtC,mBAAqC;CAErC,0BAA4C;CAC5C,uBACE;CACF,mBAAqC;CACrC,gBACE;CAEF,MAAM,YAAY,EAChB,aACA,eACmD;EACnD,IAAI,aAAmC;EAEvC,MAAM,UAAU,oBACd,YAAa,QAAQ,2BAA2B,wBAAwB,CACzE;EACD,MAAM,uBAAuB,uBAAuB,YAAY;AAGhE,MAAI,QAAQ,SAAS,WAAW,IAAI,QAAQ,SAAS,YAAY,EAAE;AACjE,UAAO,MACL;IAAE;IAAa;IAAS,EACxB,oCACD;AACD,gBAAa,MAAM,KAAK,oBACtB,sBACA,QACD;SACI;AACL,UAAO,MAAM;IAAE;IAAa;IAAS,EAAE,iCAAiC;AACxE,OAAI;AAEF,iBAAa,MAAM,KAAK,cAAc,sBAAsB,QAAQ;YAC7D,KAAK;AAEZ,WAAO,MACL;KAAE;KAAa;KAAS;KAAK,EAC7B,iDACD;AACD,iBAAa,MAAM,KAAK,oBACtB,sBACA,QACD;;;AAGL,SAAO;;CAGT,kBAA0B,WAAmB,WAAwB;AACnE,MAAI,CAAC,UAAU,YAAY,CAAC,UAAU,SACpC,QAAO;AAGT,YAAU,WAAW;AACrB,YAAU,WAAW;AACrB,SAAO,UAAU,UAAU;;CAG7B,MAAc,eACZ,WAC8D;EAC9D,MAAM,YAAY,SAAS,UAAU;;AAErC,MAAI,CAAC,WAAW;AACd,UAAO,KAAK,MAAM,EAAE,WAAW,EAAE,sBAAsB;AACvD,UAAO;IAAE,SAAS,EAAE;IAAE;IAAW;;AAEnC,MAAI,UAAU,SAAS,SAAS,WAAW,EAAE;GAC3C,MAAM,OAAO,MAAM,oBAAoB;AACvC,OAAI,MAAM;IACR,MAAM,qBAAqB,KAAK,kBAAkB,WAAW,UAAU;AACvE,WAAO;KACL,SAAS,EAAE,eAAe,SAAS,QAAQ;KAC3C,WAAW;KACZ;;AAEH,UAAO,KAAK,MAAM,EAAE,WAAW,EAAE,oCAAoC;AACrE,UAAO;IAAE,SAAS,EAAE;IAAE;IAAW;;AAEnC,SAAO;GAAE,SAAS,EAAE;GAAE;GAAW;;CAGnC,MAAc,cACZ,aACA,SAC+B;EAC/B,MAAM,YAAY,IAAI,IACpB,GAAG,uBAAuB,YAAY,CAAC,QACvC,QACD,CAAC;EACF,MAAM,aAA4B,EAAE,UAAU,EAAE,EAAE;AAClD,SAAO,MAAM,EAAE,WAAW,EAAE,sBAAsB;EAClD,MAAM,EAAE,SAAS,WAAW,iBAC1B,MAAM,KAAK,eAAe,UAAU;EACtC,MAAM,MAAM,MAAM,KAAK,KAAK,iBAA2B,cAAc,EACnE,SACD,CAAC;EACF,MAAM,MAAM,KAAK;AACjB,MAAI,CAAC,KAAK;AACR,UAAO,MAAM,EAAE,YAAY,aAAa,EAAE,wBAAwB;AAClE,UAAO;;AAET,MAAI,IAAI,cACN,YAAW,YAAY;AAEzB,SAAO,MAAM,EAAE,WAAW,EAAE,sBAAsB;AAElD,MAAI,IAAI,MAAM,WAAW;AACvB,cAAW,WAAW,IAAI,KAAK;AAC/B,OAAI,aAAa,IAAI,KAAK,UAAU,CAClC,YAAW,YAAY,IAAI,KAAK,UAAU,QACxC,WACA,WACD;;AAIL,MAAI,IAAI,MAAM,aACZ,MAAK,MAAM,CAAC,MAAM,eAAe,OAAO,QAAQ,IAAI,KAAK,aAAa,EAAE;GACtE,MAAM,QAAQ,KAAK,aAAa;AAEhC,OACE,CAAC,WAAW,cACX,MAAM,WAAW,OAAO,IACvB,UAAU,UACV,UAAU,YACV,aAAa,WAAW,EAE1B,YAAW,YAAY;AAGzB,OACE,CAAC,WAAW,iBACX;IACC;IACA;IACA;IACA;IACA;IACA;IACD,CAAC,SAAS,MAAM,IACf,uBAAuB,KAAK,MAAM,EAGpC,YAAW,eAAe;;AAKhC,MAAI,IAAI,SAEN,YAAW,WADM,OAAO,KAAK,IAAI,SAAS,CACX,KAAK,YAAY;GAC9C,MAAM,WAAW,YAAY,IAAI,WAAW,SAAS;GACrD,MAAM,EAAE,aAAa,qBAAqB,SAAS,MAAM,EAAE;GAC3D,MAAM,eAAe,SAAS,MAAM,EAAE,aAAa,OAAO;GAC1D,MAAM,SAAkB;IACtB;IACA,kBAAkB,YAAY,iBAAiB;IAChD;AACD,OAAI,aACF,QAAO,eAAe;GAGxB,MAAM,oBAAoB,SACvB,KAAK,EAAE,sBAAsB,gBAAgB,CAC7C,OAAO,SAAS;AACnB,UAAO,cAAc,EACnB,QAAQ,MAAM,KAAK,IAAI,IAAI,kBAAkB,CAAC,EAC/C;AACD,UAAO;IACP;AAEJ,SAAO;;CAGT,OAAe,2BACb,MACA,aACe;EAEf,MAAM,SAAS,KAAK,aAAa;EACjC,MAAM,oBAAoB,uBAAuB,KAAK;EACtD,MAAM,YAAY,GAAG,YAAY;AAOjC,MAAI,CAAC,kBAAkB,WAAW,UAAU,CAC1C,QAAO;EAMT,MAAM,uBAAuB,OAAO,SAAS,kBAAkB;EAC/D,MAAM,MAAM,OAAO,MAAM,UAAU,SAAS,qBAAqB;EAIjE,MAAM,YADc;GAAC;GAAW;GAAY;GAAW;GAAQ;GAAO,CACxC,MAAM,WAAW,OAAO,SAAS,OAAO,CAAC;AACvE,MAAI,UAEF,QAAO,IAAI,MAAM,GAAG,CAAC,UAAU,OAAO;AAMxC,MAAI,OAAO,SADS,OACY,IAAI,OAAO,MAAM,IAAI,CAAC,SAAS,EAC7D,QAAO,IAAI,MAAM,IAAI,CAAC;AAExB,SAAO;;CAGT,OAAe,gBAAgB,MAAsB;AACnD,SACE,KACG,QAAQ,MAAM,WAAW,EAAE,GAAG,CAE9B,QACC,MAAM,4CAA4C,EAClD,oCACD,CACA,QACC,MAAM,4CAA4C,EAClD,oCACD;;CAIP,MAAc,oBACZ,aACA,SAC+B;EAC/B,MAAM,YAAY,IAAI,IACpB,oBAAoB,uBAAuB,YAAY,CAAC,EACxD,QACD,CAAC;EACF,MAAM,aAA4B,EAAE,UAAU,EAAE,EAAE;EAClD,MAAM,EAAE,SAAS,WAAW,iBAC1B,MAAM,KAAK,eAAe,UAAU;EACtC,MAAM,WAAW,MAAM,KAAK,KAAK,QAAQ,cAAc,EAAE,SAAS,CAAC;EACnE,MAAM,MAAM,UAAU;AACtB,MAAI,CAAC,KAAK;AACR,UAAO,MAAM,EAAE,YAAY,aAAa,EAAE,wBAAwB;AAClE,UAAO;;AAET,MAAI,SAAS,cACX,YAAW,YAAY;EAGzB,MAAM,QADO,MAAM,eAAe,gBAAgB,IAAI,CAAC,CACpC,iBAAiB,IAAI;EACxC,MAAM,WAAqB,EAAE;AAC7B,OAAK,MAAM,QAAQ,MAAM,KAAK,MAAM,EAAE;GACpC,MAAM,UAAU,eAAe,2BAC7B,KAAK,MAAM,MAAM,EACjB,YACD;AACD,OAAI,SAAS;IACX,MAAM,UAA2B,EAC/B,QAAQ,KAAK,aAAa,cAAc,EACzC;IACD,MAAM,iBAAiB,KAAK,aAAa,uBAAuB;AAChE,QAAI,eACF,SAAQ,kBAAkB;AAE5B,QAAI,CAAC,SAAS,SACZ,UAAS,WAAW,EAAE;AAExB,aAAS,SAAS,KAAK,QAAQ;;;AAInC,aAAW,WADM,OAAO,KAAK,SAAS,CACP,KAAK,YAAY;GAC9C,MAAM,kBAAkB,YAAY,SAAS,SAAS;GACtD,MAAM,eAAe,gBAAgB,MAAM,EAAE,aAAa,OAAO;GACjE,MAAM,SAAkB,EAAE,SAAS;AACnC,OAAI,aACF,QAAO,eAAe;AAGxB,UAAO,cAAc,EAEnB,QAAQ,gBAAgB,KACrB,EAAE,sBAAsB,gBAC1B,EACF;AACD,UAAO;IACP;AACF,SAAO"}
|
|
@@ -41,7 +41,7 @@ hashMap.set("fleet", "d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f2
|
|
|
41
41
|
hashMap.set("flux", "427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6");
|
|
42
42
|
hashMap.set("fvm", "9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90");
|
|
43
43
|
hashMap.set("git-submodules", "fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071");
|
|
44
|
-
hashMap.set("github-actions", "
|
|
44
|
+
hashMap.set("github-actions", "d4b664f2ae7bb2c6fdd8794df578a44b7370437a5b8bd499684b579ebbb0adb0");
|
|
45
45
|
hashMap.set("gitlabci", "0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6");
|
|
46
46
|
hashMap.set("gitlabci-include", "354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab");
|
|
47
47
|
hashMap.set("glasskube", "253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','8640868d2249c9a0fbc57680fa81cf0c8c35f170258c50ac3ffb3a4f798cc5ae');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ff071fcf8b53036956627d2a430ccdf256e30bee4d7e80c329379879d836a931');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','65ad4f28c318675b9edb49dbd11d677f42c762b01b3f5a25dd3b2f345ecd387e');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','faa3b79991256a6fc0957fdcd530a1bc8aee65913d5aff2b1b4d226dcd44d008');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071');\nhashMap.set('github-actions','49c1733a35ee643fbc4cbd169004c851f0f4636cc8683341bfa5266f12fb0615');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976');\nhashMap.set('gradle','882a835107334db9a6fe1b830d8230f020436b5152b35d87142916281639479f');\nhashMap.set('gradle-wrapper','90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','672c328e4baea3a1ccd2cde2364db01c8033a8c077bf63a5b914fc20ee1de838');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','fd6bfc21be851ed076eabea1a91a89b25eb82129734c7cb0c2e684385cf1ea69');\nhashMap.set('maven-wrapper','9a868d1328f911eb72f9e65a64d46c86ae347aab0153d1cf4e9a62ad9e0d6cb0');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','38177382f3785cfe7cce92994bfb429b68f5165e6eef1bdcd2c7a3d8d5414da2');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','eaf9fe4981de8f7504227f3be88445f60f87ba74f9b9c7e54284bc2bb41320b3');\nhashMap.set('nuget','5cc468acb3b3a721c70c1a4674382e8e50999873a84ecaa32c4f02d0107ddab1');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','395114828787d8fcc3b3bd9f6df9507eafecacdd9061c1ad10f9ecf803e7fc30');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','74125bd9c76a5724092258cd1dee1ea99fc0d735b463a2b64fedc5d950efde2a');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','51aa6b0a49001494e7ee718d01312961c7fbd244831b42ceefd690d75404e795');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','8640868d2249c9a0fbc57680fa81cf0c8c35f170258c50ac3ffb3a4f798cc5ae');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ff071fcf8b53036956627d2a430ccdf256e30bee4d7e80c329379879d836a931');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','65ad4f28c318675b9edb49dbd11d677f42c762b01b3f5a25dd3b2f345ecd387e');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','faa3b79991256a6fc0957fdcd530a1bc8aee65913d5aff2b1b4d226dcd44d008');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071');\nhashMap.set('github-actions','d4b664f2ae7bb2c6fdd8794df578a44b7370437a5b8bd499684b579ebbb0adb0');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976');\nhashMap.set('gradle','882a835107334db9a6fe1b830d8230f020436b5152b35d87142916281639479f');\nhashMap.set('gradle-wrapper','90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','672c328e4baea3a1ccd2cde2364db01c8033a8c077bf63a5b914fc20ee1de838');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','fd6bfc21be851ed076eabea1a91a89b25eb82129734c7cb0c2e684385cf1ea69');\nhashMap.set('maven-wrapper','9a868d1328f911eb72f9e65a64d46c86ae347aab0153d1cf4e9a62ad9e0d6cb0');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','38177382f3785cfe7cce92994bfb429b68f5165e6eef1bdcd2c7a3d8d5414da2');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','eaf9fe4981de8f7504227f3be88445f60f87ba74f9b9c7e54284bc2bb41320b3');\nhashMap.set('nuget','5cc468acb3b3a721c70c1a4674382e8e50999873a84ecaa32c4f02d0107ddab1');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','395114828787d8fcc3b3bd9f6df9507eafecacdd9061c1ad10f9ecf803e7fc30');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','74125bd9c76a5724092258cd1dee1ea99fc0d735b463a2b64fedc5d950efde2a');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','51aa6b0a49001494e7ee718d01312961c7fbd244831b42ceefd690d75404e795');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":"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"}
|
|
@@ -1,144 +1,94 @@
|
|
|
1
1
|
import { escapeRegExp, regEx } from "../../../util/regex.js";
|
|
2
2
|
import { DockerDatasource } from "../../datasource/docker/index.js";
|
|
3
|
-
import { id } from "../../versioning/pep440/index.js";
|
|
4
3
|
import "../../versioning/npm/index.js";
|
|
5
4
|
import { GithubReleasesDatasource } from "../../datasource/github-releases/index.js";
|
|
6
5
|
import { NpmDatasource } from "../../datasource/npm/index.js";
|
|
7
6
|
import { PypiDatasource } from "../../datasource/pypi/index.js";
|
|
8
|
-
import { id as id$1 } from "../../versioning/ruby/index.js";
|
|
9
7
|
import { RubyVersionDatasource } from "../../datasource/ruby-version/index.js";
|
|
10
|
-
import { id
|
|
8
|
+
import { id } from "../../versioning/conda/index.js";
|
|
11
9
|
import { z } from "zod/v3";
|
|
12
10
|
//#region lib/modules/manager/github-actions/community.ts
|
|
11
|
+
/**
|
|
12
|
+
* Update readme if new actions are added here.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* match actions
|
|
16
|
+
*/
|
|
13
17
|
function matchAction(action) {
|
|
14
18
|
return z.string().regex(regEx(`(?:https?://[^/]+/)?${escapeRegExp(action)}(?:@.+)?$`));
|
|
15
19
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
skipStage
|
|
24
|
-
skipReason
|
|
25
|
-
|
|
20
|
+
function parseValue(currentValue, validator) {
|
|
21
|
+
if (!currentValue) return {
|
|
22
|
+
skipStage: "extract",
|
|
23
|
+
skipReason: "unspecified-version",
|
|
24
|
+
depType: "uses-with"
|
|
25
|
+
};
|
|
26
|
+
if (validator?.() === true) return {
|
|
27
|
+
skipStage: "extract",
|
|
28
|
+
skipReason: "invalid-version",
|
|
29
|
+
depType: "uses-with",
|
|
30
|
+
currentValue
|
|
31
|
+
};
|
|
26
32
|
return {
|
|
27
|
-
|
|
28
|
-
depName: "astral-sh/uv",
|
|
29
|
-
versioning: "npm",
|
|
30
|
-
packageName: "astral-sh/uv",
|
|
31
|
-
...skipStage && { skipStage },
|
|
32
|
-
...skipReason && { skipReason },
|
|
33
|
-
currentValue: val.version,
|
|
33
|
+
currentValue,
|
|
34
34
|
depType: "uses-with"
|
|
35
35
|
};
|
|
36
|
-
}
|
|
36
|
+
}
|
|
37
|
+
const SetupUV = z.object({
|
|
38
|
+
uses: matchAction("astral-sh/setup-uv"),
|
|
39
|
+
with: z.object({ version: z.string().optional() })
|
|
40
|
+
}).transform(({ with: val }) => ({
|
|
41
|
+
datasource: GithubReleasesDatasource.id,
|
|
42
|
+
depName: "astral-sh/uv",
|
|
43
|
+
versioning: "npm",
|
|
44
|
+
packageName: "astral-sh/uv",
|
|
45
|
+
...parseValue(val.version)
|
|
46
|
+
}));
|
|
37
47
|
const SetupPnpm = z.object({
|
|
38
48
|
uses: matchAction("pnpm/action-setup"),
|
|
39
49
|
with: z.object({ version: z.string().optional() })
|
|
40
|
-
}).transform(({ with: val }) => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
datasource: NpmDatasource.id,
|
|
49
|
-
depName: "pnpm",
|
|
50
|
-
versioning: "npm",
|
|
51
|
-
packageName: "pnpm",
|
|
52
|
-
...skipStage && { skipStage },
|
|
53
|
-
...skipReason && { skipReason },
|
|
54
|
-
currentValue: val.version,
|
|
55
|
-
depType: "uses-with"
|
|
56
|
-
};
|
|
57
|
-
});
|
|
50
|
+
}).transform(({ with: val }) => ({
|
|
51
|
+
datasource: NpmDatasource.id,
|
|
52
|
+
depName: "pnpm",
|
|
53
|
+
packageName: "pnpm",
|
|
54
|
+
...parseValue(val.version)
|
|
55
|
+
}));
|
|
58
56
|
const SetupBun = z.object({
|
|
59
57
|
uses: matchAction("oven-sh/setup-bun"),
|
|
60
58
|
with: z.object({ "bun-version": z.string().optional() })
|
|
61
|
-
}).transform(({ with: val }) => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
datasource: NpmDatasource.id,
|
|
70
|
-
depName: "bun",
|
|
71
|
-
versioning: "npm",
|
|
72
|
-
packageName: "bun",
|
|
73
|
-
...skipStage && { skipStage },
|
|
74
|
-
...skipReason && { skipReason },
|
|
75
|
-
currentValue: val["bun-version"],
|
|
76
|
-
depType: "uses-with"
|
|
77
|
-
};
|
|
78
|
-
});
|
|
59
|
+
}).transform(({ with: val }) => ({
|
|
60
|
+
datasource: NpmDatasource.id,
|
|
61
|
+
depName: "bun",
|
|
62
|
+
packageName: "bun",
|
|
63
|
+
...parseValue(val["bun-version"])
|
|
64
|
+
}));
|
|
79
65
|
const SetupDeno = z.object({
|
|
80
66
|
uses: matchAction("denoland/setup-deno"),
|
|
81
67
|
with: z.object({ "deno-version": z.string().optional() })
|
|
82
|
-
}).transform(({ with: val }) => {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
datasource: NpmDatasource.id,
|
|
91
|
-
depName: "deno",
|
|
92
|
-
versioning: "npm",
|
|
93
|
-
packageName: "deno",
|
|
94
|
-
...skipStage && { skipStage },
|
|
95
|
-
...skipReason && { skipReason },
|
|
96
|
-
currentValue: val["deno-version"],
|
|
97
|
-
depType: "uses-with"
|
|
98
|
-
};
|
|
99
|
-
});
|
|
68
|
+
}).transform(({ with: val }) => ({
|
|
69
|
+
datasource: NpmDatasource.id,
|
|
70
|
+
depName: "deno",
|
|
71
|
+
packageName: "deno",
|
|
72
|
+
...parseValue(val["deno-version"])
|
|
73
|
+
}));
|
|
100
74
|
const SetupRuby = z.object({
|
|
101
75
|
uses: matchAction("ruby/setup-ruby"),
|
|
102
76
|
with: z.object({ "ruby-version": z.string().optional() })
|
|
103
|
-
}).transform(({ with: val }) => {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
return {
|
|
111
|
-
datasource: RubyVersionDatasource.id,
|
|
112
|
-
depName: "ruby",
|
|
113
|
-
versioning: id$1,
|
|
114
|
-
packageName: "ruby",
|
|
115
|
-
...skipStage && { skipStage },
|
|
116
|
-
...skipReason && { skipReason },
|
|
117
|
-
currentValue: val["ruby-version"],
|
|
118
|
-
depType: "uses-with"
|
|
119
|
-
};
|
|
120
|
-
});
|
|
77
|
+
}).transform(({ with: val }) => ({
|
|
78
|
+
datasource: RubyVersionDatasource.id,
|
|
79
|
+
depName: "ruby",
|
|
80
|
+
packageName: "ruby",
|
|
81
|
+
...parseValue(val["ruby-version"])
|
|
82
|
+
}));
|
|
121
83
|
const SetupPDM = z.object({
|
|
122
84
|
uses: matchAction("pdm-project/setup-pdm"),
|
|
123
85
|
with: z.object({ version: z.string().optional() })
|
|
124
|
-
}).transform(({ with: val }) => {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
return {
|
|
132
|
-
datasource: PypiDatasource.id,
|
|
133
|
-
depName: "pdm",
|
|
134
|
-
versioning: id,
|
|
135
|
-
packageName: "pdm",
|
|
136
|
-
currentValue: val.version,
|
|
137
|
-
...skipStage && { skipStage },
|
|
138
|
-
...skipReason && { skipReason },
|
|
139
|
-
depType: "uses-with"
|
|
140
|
-
};
|
|
141
|
-
});
|
|
86
|
+
}).transform(({ with: val }) => ({
|
|
87
|
+
datasource: PypiDatasource.id,
|
|
88
|
+
depName: "pdm",
|
|
89
|
+
packageName: "pdm",
|
|
90
|
+
...parseValue(val.version)
|
|
91
|
+
}));
|
|
142
92
|
const InstallBinary = z.object({
|
|
143
93
|
uses: z.union([matchAction("jaxxstorm/action-install-gh-release"), matchAction("sigoden/install-binary")]),
|
|
144
94
|
with: z.object({
|
|
@@ -150,8 +100,7 @@ const InstallBinary = z.object({
|
|
|
150
100
|
datasource: GithubReleasesDatasource.id,
|
|
151
101
|
depName: val.repo,
|
|
152
102
|
packageName: val.repo,
|
|
153
|
-
|
|
154
|
-
depType: "uses-with"
|
|
103
|
+
...parseValue(val.tag)
|
|
155
104
|
};
|
|
156
105
|
});
|
|
157
106
|
const SetupPixi = z.object({
|
|
@@ -160,95 +109,63 @@ const SetupPixi = z.object({
|
|
|
160
109
|
}).transform(({ with: val }) => {
|
|
161
110
|
return {
|
|
162
111
|
datasource: GithubReleasesDatasource.id,
|
|
163
|
-
versioning: id
|
|
112
|
+
versioning: id,
|
|
164
113
|
depName: "prefix-dev/pixi",
|
|
165
114
|
packageName: "prefix-dev/pixi",
|
|
166
|
-
|
|
167
|
-
depType: "uses-with"
|
|
115
|
+
...parseValue(val["pixi-version"])
|
|
168
116
|
};
|
|
169
117
|
});
|
|
170
118
|
const SetupHatch = z.object({
|
|
171
119
|
uses: matchAction("pypa/hatch"),
|
|
172
120
|
with: z.object({ version: z.string().optional() })
|
|
173
|
-
}).transform(({ with: val }) => {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
return {
|
|
181
|
-
datasource: GithubReleasesDatasource.id,
|
|
182
|
-
depName: "pypa/hatch",
|
|
183
|
-
packageName: "pypa/hatch",
|
|
184
|
-
...skipStage && { skipStage },
|
|
185
|
-
...skipReason && { skipReason },
|
|
186
|
-
currentValue: val.version,
|
|
187
|
-
depType: "uses-with",
|
|
188
|
-
extractVersion: "^hatch-(?<version>.+)$"
|
|
189
|
-
};
|
|
190
|
-
});
|
|
121
|
+
}).transform(({ with: val }) => ({
|
|
122
|
+
datasource: GithubReleasesDatasource.id,
|
|
123
|
+
depName: "pypa/hatch",
|
|
124
|
+
packageName: "pypa/hatch",
|
|
125
|
+
...parseValue(val.version),
|
|
126
|
+
extractVersion: "^hatch-(?<version>.+)$"
|
|
127
|
+
}));
|
|
191
128
|
const SetupGolangciLint = z.object({
|
|
192
129
|
uses: matchAction("golangci/golangci-lint-action"),
|
|
193
130
|
with: z.object({ version: z.string().optional() })
|
|
194
|
-
}).transform(({ with: val }) => {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
return {
|
|
202
|
-
datasource: GithubReleasesDatasource.id,
|
|
203
|
-
depName: "golangci/golangci-lint",
|
|
204
|
-
packageName: "golangci/golangci-lint",
|
|
205
|
-
...skipStage && { skipStage },
|
|
206
|
-
...skipReason && { skipReason },
|
|
207
|
-
currentValue: val.version,
|
|
208
|
-
depType: "uses-with"
|
|
209
|
-
};
|
|
210
|
-
});
|
|
131
|
+
}).transform(({ with: val }) => ({
|
|
132
|
+
datasource: GithubReleasesDatasource.id,
|
|
133
|
+
depName: "golangci/golangci-lint",
|
|
134
|
+
packageName: "golangci/golangci-lint",
|
|
135
|
+
...parseValue(val.version)
|
|
136
|
+
}));
|
|
211
137
|
const ZizmorcoreZizmorAction = z.object({
|
|
212
138
|
uses: matchAction("zizmorcore/zizmor-action"),
|
|
213
139
|
with: z.object({ version: z.string().optional() })
|
|
214
|
-
}).transform(({ with: val }) => {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
}
|
|
221
|
-
return {
|
|
222
|
-
datasource: DockerDatasource.id,
|
|
223
|
-
depName: "ghcr.io/zizmorcore/zizmor",
|
|
224
|
-
packageName: "ghcr.io/zizmorcore/zizmor",
|
|
225
|
-
...skipStage && { skipStage },
|
|
226
|
-
...skipReason && { skipReason },
|
|
227
|
-
currentValue: val.version,
|
|
228
|
-
depType: "uses-with"
|
|
229
|
-
};
|
|
230
|
-
});
|
|
140
|
+
}).transform(({ with: val }) => ({
|
|
141
|
+
datasource: DockerDatasource.id,
|
|
142
|
+
depName: "ghcr.io/zizmorcore/zizmor",
|
|
143
|
+
packageName: "ghcr.io/zizmorcore/zizmor",
|
|
144
|
+
...parseValue(val.version)
|
|
145
|
+
}));
|
|
231
146
|
const SetupPyright = z.object({
|
|
232
147
|
uses: matchAction("jakebailey/pyright-action"),
|
|
233
148
|
with: z.object({ version: z.string().optional() })
|
|
234
|
-
}).transform(({ with: val }) => {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
149
|
+
}).transform(({ with: val }) => ({
|
|
150
|
+
datasource: NpmDatasource.id,
|
|
151
|
+
depName: "pyright",
|
|
152
|
+
packageName: "pyright",
|
|
153
|
+
...parseValue(val.version, () => val.version === "PATH")
|
|
154
|
+
}));
|
|
155
|
+
/**
|
|
156
|
+
* Both actions are used to setup trivy.
|
|
157
|
+
* - https://github.com/aquasecurity/setup-trivy
|
|
158
|
+
* - https://github.com/aquasecurity/trivy-action
|
|
159
|
+
*/
|
|
160
|
+
const AquaSecurityTrivy = z.object({
|
|
161
|
+
uses: z.union([matchAction("aquasecurity/setup-trivy"), matchAction("aquasecurity/trivy-action")]),
|
|
162
|
+
with: z.object({ version: z.string().optional() })
|
|
163
|
+
}).transform(({ with: val }) => ({
|
|
164
|
+
datasource: GithubReleasesDatasource.id,
|
|
165
|
+
depName: "aquasecurity/trivy",
|
|
166
|
+
packageName: "aquasecurity/trivy",
|
|
167
|
+
...parseValue(val.version)
|
|
168
|
+
}));
|
|
252
169
|
/**
|
|
253
170
|
* schema here should match the whole step,
|
|
254
171
|
* there may be some actions use env as arguments version.
|
|
@@ -256,6 +173,7 @@ const SetupPyright = z.object({
|
|
|
256
173
|
* each type should return `PackageDependency | undefined`
|
|
257
174
|
*/
|
|
258
175
|
const CommunityActions = z.union([
|
|
176
|
+
AquaSecurityTrivy,
|
|
259
177
|
InstallBinary,
|
|
260
178
|
SetupPDM,
|
|
261
179
|
SetupPixi,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"community.js","names":["rubyVersioning.id","pep440versioning.id","condaVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/community.ts"],"sourcesContent":["import { z } from 'zod/v3';\n\nimport type { SkipReason, StageName } from '../../../types/index.ts';\nimport { escapeRegExp, regEx } from '../../../util/regex.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport * as condaVersioning from '../../versioning/conda/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport * as pep440versioning from '../../versioning/pep440/index.ts';\nimport * as rubyVersioning from '../../versioning/ruby/index.ts';\nimport type { PackageDependency } from '../types.ts';\n\nfunction matchAction(action: string): z.Schema {\n return z\n .string()\n .regex(regEx(`(?:https?://[^/]+/)?${escapeRegExp(action)}(?:@.+)?$`));\n}\n\nconst SetupUV = z\n .object({\n // https://github.com/astral-sh/setup-uv\n uses: matchAction('astral-sh/setup-uv'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(({ with: val }): PackageDependency => {\n let skipStage: StageName | undefined;\n let skipReason: SkipReason | undefined;\n\n if (!val.version) {\n skipStage = 'extract';\n skipReason = 'unspecified-version';\n }\n\n return {\n datasource: GithubReleasesDatasource.id,\n depName: 'astral-sh/uv',\n versioning: npmVersioning.id,\n packageName: 'astral-sh/uv',\n ...(skipStage && { skipStage }),\n ...(skipReason && { skipReason }),\n currentValue: val.version,\n depType: 'uses-with',\n };\n });\n\nconst SetupPnpm = z\n .object({\n uses: matchAction('pnpm/action-setup'),\n with: z.object({\n version: z.string().optional(),\n }),\n })\n .transform(({ with: val }): PackageDependency => {\n let skipStage: StageName | undefined;\n let skipReason: SkipReason | undefined;\n if (!val.version) {\n skipStage = 'extract';\n skipReason = 'unspecified-version';\n }\n\n return {\n datasource: NpmDatasource.id,\n depName: 'pnpm',\n versioning: npmVersioning.id,\n packageName: 'pnpm',\n ...(skipStage && { skipStage }),\n ...(skipReason && { skipReason }),\n currentValue: val.version,\n depType: 'uses-with',\n };\n });\n\nconst SetupBun = z\n .object({\n uses: matchAction('oven-sh/setup-bun'),\n with: z.object({\n 'bun-version': z.string().optional(),\n }),\n })\n .transform(({ with: val }): PackageDependency => {\n let skipStage: StageName | undefined;\n let skipReason: SkipReason | undefined;\n if (!val['bun-version']) {\n skipStage = 'extract';\n skipReason = 'unspecified-version';\n }\n\n return {\n datasource: NpmDatasource.id,\n depName: 'bun',\n versioning: npmVersioning.id,\n packageName: 'bun',\n ...(skipStage && { skipStage }),\n ...(skipReason && { skipReason }),\n currentValue: val['bun-version'],\n depType: 'uses-with',\n };\n });\n\nconst SetupDeno = z\n .object({\n uses: matchAction('denoland/setup-deno'),\n with: z.object({\n 'deno-version': z.string().optional(),\n }),\n })\n .transform(({ with: val }): PackageDependency => {\n let skipStage: StageName | undefined;\n let skipReason: SkipReason | undefined;\n if (!val['deno-version']) {\n skipStage = 'extract';\n skipReason = 'unspecified-version';\n }\n\n return {\n datasource: NpmDatasource.id,\n depName: 'deno',\n versioning: npmVersioning.id,\n packageName: 'deno',\n ...(skipStage && { skipStage }),\n ...(skipReason && { skipReason }),\n currentValue: val['deno-version'],\n depType: 'uses-with',\n };\n });\n\nconst SetupRuby = z\n .object({\n uses: matchAction('ruby/setup-ruby'),\n with: z.object({\n 'ruby-version': z.string().optional(),\n }),\n })\n .transform(({ with: val }): PackageDependency => {\n let skipStage: StageName | undefined;\n let skipReason: SkipReason | undefined;\n if (!val['ruby-version']) {\n skipStage = 'extract';\n skipReason = 'unspecified-version';\n }\n\n return {\n datasource: RubyVersionDatasource.id,\n depName: 'ruby',\n versioning: rubyVersioning.id,\n packageName: 'ruby',\n ...(skipStage && { skipStage }),\n ...(skipReason && { skipReason }),\n currentValue: val['ruby-version'],\n depType: 'uses-with',\n };\n });\n\nconst SetupPDM = z\n .object({\n uses: matchAction('pdm-project/setup-pdm'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(({ with: val }): PackageDependency => {\n let skipStage: StageName | undefined;\n let skipReason: SkipReason | undefined;\n if (!val.version) {\n skipStage = 'extract';\n skipReason = 'unspecified-version';\n }\n\n return {\n datasource: PypiDatasource.id,\n depName: 'pdm',\n versioning: pep440versioning.id,\n packageName: 'pdm',\n currentValue: val.version,\n ...(skipStage && { skipStage }),\n ...(skipReason && { skipReason }),\n depType: 'uses-with',\n };\n });\n\nconst InstallBinary = z\n .object({\n uses: z.union([\n matchAction('jaxxstorm/action-install-gh-release'),\n matchAction('sigoden/install-binary'),\n ]),\n with: z.object({ repo: z.string(), tag: z.string() }),\n })\n .transform(({ with: val }): PackageDependency => {\n return {\n datasource: GithubReleasesDatasource.id,\n depName: val.repo,\n packageName: val.repo,\n currentValue: val.tag,\n depType: 'uses-with',\n };\n });\n\nconst SetupPixi = z\n .object({\n uses: matchAction('prefix-dev/setup-pixi'),\n with: z.object({ 'pixi-version': z.string() }),\n })\n .transform(({ with: val }): PackageDependency => {\n return {\n datasource: GithubReleasesDatasource.id,\n versioning: condaVersioning.id,\n depName: 'prefix-dev/pixi',\n packageName: 'prefix-dev/pixi',\n currentValue: val['pixi-version'],\n depType: 'uses-with',\n };\n });\n\nconst SetupHatch = z\n .object({\n // https://github.com/pypa/hatch/tree/install\n uses: matchAction('pypa/hatch'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(({ with: val }): PackageDependency => {\n let skipStage: StageName | undefined;\n let skipReason: SkipReason | undefined;\n\n if (!val.version) {\n skipStage = 'extract';\n skipReason = 'unspecified-version';\n }\n\n return {\n datasource: GithubReleasesDatasource.id,\n depName: 'pypa/hatch',\n packageName: 'pypa/hatch',\n ...(skipStage && { skipStage }),\n ...(skipReason && { skipReason }),\n currentValue: val.version,\n depType: 'uses-with',\n // Strip hatch- prefix from release tags\n extractVersion: '^hatch-(?<version>.+)$',\n };\n });\n\nconst SetupGolangciLint = z\n .object({\n uses: matchAction('golangci/golangci-lint-action'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(({ with: val }): PackageDependency => {\n let skipStage: StageName | undefined;\n let skipReason: SkipReason | undefined;\n\n if (!val.version) {\n skipStage = 'extract';\n skipReason = 'unspecified-version';\n }\n\n return {\n datasource: GithubReleasesDatasource.id,\n depName: 'golangci/golangci-lint',\n packageName: 'golangci/golangci-lint',\n ...(skipStage && { skipStage }),\n ...(skipReason && { skipReason }),\n currentValue: val.version,\n depType: 'uses-with',\n };\n });\n\nconst ZizmorcoreZizmorAction = z\n .object({\n uses: matchAction('zizmorcore/zizmor-action'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(({ with: val }): PackageDependency => {\n let skipStage: StageName | undefined;\n let skipReason: SkipReason | undefined;\n\n if (!val.version) {\n skipStage = 'extract';\n skipReason = 'unspecified-version';\n }\n\n return {\n datasource: DockerDatasource.id,\n depName: 'ghcr.io/zizmorcore/zizmor',\n packageName: 'ghcr.io/zizmorcore/zizmor',\n ...(skipStage && { skipStage }),\n ...(skipReason && { skipReason }),\n currentValue: val.version,\n depType: 'uses-with',\n };\n });\n\nconst SetupPyright = z\n .object({\n uses: matchAction('jakebailey/pyright-action'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(({ with: val }): PackageDependency => {\n let skipStage: StageName | undefined;\n let skipReason: SkipReason | undefined;\n\n if (!val.version || val.version === 'PATH') {\n skipStage = 'extract';\n skipReason = 'unspecified-version';\n }\n\n return {\n datasource: NpmDatasource.id,\n depName: 'pyright',\n versioning: npmVersioning.id,\n packageName: 'pyright',\n ...(skipStage && { skipStage }),\n ...(skipReason && { skipReason }),\n currentValue: val.version,\n depType: 'uses-with',\n };\n });\n\n/**\n * schema here should match the whole step,\n * there may be some actions use env as arguments version.\n *\n * each type should return `PackageDependency | undefined`\n */\nexport const CommunityActions = z.union([\n InstallBinary,\n SetupPDM,\n SetupPixi,\n SetupPnpm,\n SetupPyright,\n SetupUV,\n SetupBun,\n SetupDeno,\n SetupRuby,\n SetupHatch,\n SetupGolangciLint,\n ZizmorcoreZizmorAction,\n]);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"community.js","names":["condaVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/community.ts"],"sourcesContent":["/**\n * Update readme if new actions are added here.\n */\nimport { z } from 'zod/v3';\n\nimport { escapeRegExp, regEx } from '../../../util/regex.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport * as condaVersioning from '../../versioning/conda/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport type { PackageDependency } from '../types.ts';\n\n/**\n * match actions\n */\nfunction matchAction(action: string): z.ZodString {\n return z\n .string()\n .regex(regEx(`(?:https?://[^/]+/)?${escapeRegExp(action)}(?:@.+)?$`));\n}\n\nfunction parseValue(\n currentValue: string | undefined,\n validator?: () => boolean,\n): PackageDependency {\n if (!currentValue) {\n return {\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n depType: 'uses-with',\n };\n }\n if (validator?.() === true) {\n return {\n skipStage: 'extract',\n skipReason: 'invalid-version',\n depType: 'uses-with',\n currentValue,\n };\n }\n return { currentValue, depType: 'uses-with' };\n}\n\nconst SetupUV = z\n .object({\n // https://github.com/astral-sh/setup-uv\n uses: matchAction('astral-sh/setup-uv'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: GithubReleasesDatasource.id,\n depName: 'astral-sh/uv',\n versioning: npmVersioning.id,\n packageName: 'astral-sh/uv',\n ...parseValue(val.version),\n }),\n );\n\nconst SetupPnpm = z\n .object({\n uses: matchAction('pnpm/action-setup'),\n with: z.object({\n version: z.string().optional(),\n }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: NpmDatasource.id,\n depName: 'pnpm',\n packageName: 'pnpm',\n ...parseValue(val.version),\n }),\n );\n\nconst SetupBun = z\n .object({\n uses: matchAction('oven-sh/setup-bun'),\n with: z.object({\n 'bun-version': z.string().optional(),\n }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: NpmDatasource.id,\n depName: 'bun',\n packageName: 'bun',\n ...parseValue(val['bun-version']),\n }),\n );\n\nconst SetupDeno = z\n .object({\n uses: matchAction('denoland/setup-deno'),\n with: z.object({\n 'deno-version': z.string().optional(),\n }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: NpmDatasource.id,\n depName: 'deno',\n packageName: 'deno',\n ...parseValue(val['deno-version']),\n }),\n );\n\nconst SetupRuby = z\n .object({\n uses: matchAction('ruby/setup-ruby'),\n with: z.object({\n 'ruby-version': z.string().optional(),\n }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: RubyVersionDatasource.id,\n depName: 'ruby',\n packageName: 'ruby',\n ...parseValue(val['ruby-version']),\n }),\n );\n\nconst SetupPDM = z\n .object({\n uses: matchAction('pdm-project/setup-pdm'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: PypiDatasource.id,\n depName: 'pdm',\n packageName: 'pdm',\n ...parseValue(val.version),\n }),\n );\n\nconst InstallBinary = z\n .object({\n uses: z.union([\n matchAction('jaxxstorm/action-install-gh-release'),\n matchAction('sigoden/install-binary'),\n ]),\n with: z.object({ repo: z.string(), tag: z.string() }),\n })\n .transform(({ with: val }): PackageDependency => {\n return {\n datasource: GithubReleasesDatasource.id,\n depName: val.repo,\n packageName: val.repo,\n ...parseValue(val.tag),\n };\n });\n\nconst SetupPixi = z\n .object({\n uses: matchAction('prefix-dev/setup-pixi'),\n with: z.object({ 'pixi-version': z.string() }),\n })\n .transform(({ with: val }): PackageDependency => {\n return {\n datasource: GithubReleasesDatasource.id,\n versioning: condaVersioning.id,\n depName: 'prefix-dev/pixi',\n packageName: 'prefix-dev/pixi',\n ...parseValue(val['pixi-version']),\n };\n });\n\nconst SetupHatch = z\n .object({\n // https://github.com/pypa/hatch/tree/install\n uses: matchAction('pypa/hatch'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: GithubReleasesDatasource.id,\n depName: 'pypa/hatch',\n packageName: 'pypa/hatch',\n ...parseValue(val.version),\n // Strip hatch- prefix from release tags\n extractVersion: '^hatch-(?<version>.+)$',\n }),\n );\n\nconst SetupGolangciLint = z\n .object({\n uses: matchAction('golangci/golangci-lint-action'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: GithubReleasesDatasource.id,\n depName: 'golangci/golangci-lint',\n packageName: 'golangci/golangci-lint',\n ...parseValue(val.version),\n }),\n );\n\nconst ZizmorcoreZizmorAction = z\n .object({\n uses: matchAction('zizmorcore/zizmor-action'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: DockerDatasource.id,\n depName: 'ghcr.io/zizmorcore/zizmor',\n packageName: 'ghcr.io/zizmorcore/zizmor',\n ...parseValue(val.version),\n }),\n );\n\nconst SetupPyright = z\n .object({\n uses: matchAction('jakebailey/pyright-action'),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: NpmDatasource.id,\n depName: 'pyright',\n packageName: 'pyright',\n ...parseValue(val.version, () => val.version === 'PATH'),\n }),\n );\n\n/**\n * Both actions are used to setup trivy.\n * - https://github.com/aquasecurity/setup-trivy\n * - https://github.com/aquasecurity/trivy-action\n */\nconst AquaSecurityTrivy = z\n .object({\n uses: z.union([\n matchAction('aquasecurity/setup-trivy'),\n matchAction('aquasecurity/trivy-action'),\n ]),\n with: z.object({ version: z.string().optional() }),\n })\n .transform(\n ({ with: val }): PackageDependency => ({\n datasource: GithubReleasesDatasource.id,\n depName: 'aquasecurity/trivy',\n packageName: 'aquasecurity/trivy',\n ...parseValue(val.version),\n }),\n );\n\n/**\n * schema here should match the whole step,\n * there may be some actions use env as arguments version.\n *\n * each type should return `PackageDependency | undefined`\n */\nexport const CommunityActions = z.union([\n AquaSecurityTrivy,\n InstallBinary,\n SetupPDM,\n SetupPixi,\n SetupPnpm,\n SetupPyright,\n SetupUV,\n SetupBun,\n SetupDeno,\n SetupRuby,\n SetupHatch,\n SetupGolangciLint,\n ZizmorcoreZizmorAction,\n]);\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { regEx } from "../../../util/regex.js";
|
|
2
2
|
import { logger } from "../../../logger/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { isUndefined } from "@sindresorhus/is";
|
|
4
4
|
import semver from "semver";
|
|
5
5
|
//#region lib/modules/versioning/github-actions/index.ts
|
|
6
6
|
const id = "github-actions";
|
|
@@ -112,7 +112,7 @@ function getNewValue({ currentValue, currentVersion, rangeStrategy, newVersion,
|
|
|
112
112
|
if (!newParsed) return newVersion;
|
|
113
113
|
if (parseVersion(currentValue)) return newVersion;
|
|
114
114
|
const [prefix] = currentValue.split(massageValue(currentValue));
|
|
115
|
-
if (isUndefined(allVersions) ||
|
|
115
|
+
if (isUndefined(allVersions) || allVersions.size === 0) {
|
|
116
116
|
if (isUndefined(range.minor)) return `${prefix}${newParsed.major}`;
|
|
117
117
|
return `${prefix}${newParsed.major}.${newParsed.minor}`;
|
|
118
118
|
}
|
|
@@ -135,7 +135,7 @@ function getShortestMatchingVersion(prefix, newParsed, allVersions) {
|
|
|
135
135
|
`${prefix}${newParsed.major}.${newParsed.minor}.${newParsed.patch}`,
|
|
136
136
|
`${prefix}${newParsed.toString()}`
|
|
137
137
|
];
|
|
138
|
-
for (const option of options) if (allVersions.
|
|
138
|
+
for (const option of options) if (allVersions.has(option)) return option;
|
|
139
139
|
return null;
|
|
140
140
|
}
|
|
141
141
|
function isCompatible(version) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/github-actions/index.ts"],"sourcesContent":["import { isEmptyArray, isUndefined } from '@sindresorhus/is';\nimport type { SemVer } from 'semver';\nimport semver from 'semver';\nimport { logger } from '../../../logger/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\n\nexport const id = 'github-actions';\nexport const displayName = 'GitHub Actions';\nexport const urls = [\n 'https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/find-and-customize-actions#using-release-management-for-your-custom-actions',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies = ['pin', 'replace'];\n\nfunction massageValue(input: string): string {\n return input.trim().replace(regEx(/^v/i), '');\n}\n\nfunction parseVersion(input: string): SemVer | null {\n return semver.parse(massageValue(input));\n}\n\ninterface Range {\n major: number;\n minor?: number;\n}\n\nfunction parseRange(input: string): Range | null {\n const stripped = massageValue(input);\n const coerced = semver.coerce(stripped);\n if (!coerced) {\n return null;\n }\n const { major, minor } = coerced;\n\n if (regEx(/^\\d+$/).test(stripped)) {\n return { major };\n }\n\n return { major, minor };\n}\n\n/*\n * Like parseVersion but also accepts floating tags (e.g. `v1`, `v1.2`)\n * by coercing them to full semver.\n */\nfunction parseVersionCoerced(input: string): SemVer | null {\n const v = parseVersion(input);\n if (v) {\n return v;\n }\n const stripped = massageValue(input);\n if (!regEx(/^\\d/).test(stripped)) {\n return null;\n }\n return semver.coerce(stripped);\n}\n\nfunction isValid(input: string): boolean {\n return !!parseVersion(input) || !!parseRange(input);\n}\n\nfunction isVersion(input: string | undefined | null): boolean {\n if (!input) {\n return false;\n }\n\n if (parseVersion(input)) {\n return true;\n }\n\n const stripped = massageValue(input);\n if (!regEx(/^\\d/).test(stripped)) {\n return false;\n }\n\n return parseRange(input) !== null;\n}\n\nfunction isStable(version: string): boolean {\n const v = parseVersionCoerced(version);\n if (!v) {\n return false;\n }\n\n return v.prerelease.length === 0;\n}\n\nfunction isSingleVersion(input: string): boolean {\n return !!parseVersion(input);\n}\n\nfunction getMajor(version: string): number | null {\n return parseVersionCoerced(version)?.major ?? null;\n}\n\nfunction getMinor(version: string): number | null {\n return parseVersionCoerced(version)?.minor ?? null;\n}\n\nfunction getPatch(version: string): number | null {\n return parseVersionCoerced(version)?.patch ?? null;\n}\n\nfunction sortVersions(x: string, y: string): number {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return 0;\n }\n return semver.compare(a, b);\n}\n\nfunction equals(x: string, y: string): boolean {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return false;\n }\n return semver.eq(a, b);\n}\n\nfunction isGreaterThan(x: string, y: string): boolean {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return false;\n }\n return semver.gt(a, b);\n}\n\nfunction matches(version: string, range: string): boolean {\n const v = parseVersion(version);\n if (!v) {\n return false;\n }\n\n const rv = parseVersion(range);\n if (rv) {\n return semver.eq(v, rv);\n }\n\n const r = parseRange(range);\n if (!r) {\n return false;\n }\n\n if (v.prerelease.length > 0) {\n return false;\n }\n\n if (v.major !== r.major) {\n return false;\n }\n\n if (isUndefined(r.minor)) {\n return true;\n }\n\n return v.minor === r.minor;\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const sortedVersions = versions.sort(sortVersions).reverse();\n for (const version of sortedVersions) {\n if (matches(version, range)) {\n return version;\n }\n }\n return null;\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const sortedVersions = versions.sort(sortVersions);\n for (const version of sortedVersions) {\n if (matches(version, range)) {\n return version;\n }\n }\n return null;\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n const v = parseVersionCoerced(version);\n const r = parseRange(range);\n\n if (!v || !r) {\n return false;\n }\n\n if (v.major !== r.major) {\n return v.major < r.major;\n }\n\n if (isUndefined(r.minor)) {\n return false;\n }\n\n if (v.minor !== r.minor) {\n return v.minor < r.minor;\n }\n\n return false;\n}\n\nfunction getNewValue({\n currentValue,\n currentVersion,\n rangeStrategy,\n newVersion,\n allVersions,\n}: NewValueConfig): string | null {\n if (rangeStrategy === 'pin') {\n return newVersion;\n }\n\n const range = parseRange(currentValue);\n if (!range) {\n return newVersion;\n }\n\n const newParsed = parseVersion(newVersion);\n if (!newParsed) {\n return newVersion;\n }\n\n // Check if currentValue is a full version (has patch component)\n const currentParsed = parseVersion(currentValue);\n if (currentParsed) {\n // currentValue is a full version, return full newVersion\n return newVersion;\n }\n\n const [prefix] = currentValue.split(massageValue(currentValue));\n\n if (isUndefined(allVersions) || isEmptyArray(allVersions)) {\n if (isUndefined(range.minor)) {\n return `${prefix}${newParsed.major}`;\n }\n\n return `${prefix}${newParsed.major}.${newParsed.minor}`;\n }\n\n const shortest = getShortestMatchingVersion(prefix, newParsed, allVersions);\n if (shortest) {\n return shortest;\n }\n\n logger.once.debug(\n {\n versioning: id,\n currentValue,\n currentVersion,\n newVersion,\n rangeStrategy,\n allVersions,\n },\n `Suggested newValue \\`${newVersion}\\` was not included in allVersions, but it should have been. Returning it anyway`,\n );\n\n return newVersion;\n}\n\nfunction getShortestMatchingVersion(\n prefix: string,\n newParsed: SemVer,\n allVersions: string[],\n): string | null {\n // in shortest-first order\n const options = [\n `${prefix}${newParsed.major}`,\n `${prefix}${newParsed.major}.${newParsed.minor}`,\n `${prefix}${newParsed.major}.${newParsed.minor}.${newParsed.patch}`,\n `${prefix}${newParsed.toString()}`,\n ];\n\n for (const option of options) {\n if (allVersions.includes(option)) {\n return option;\n }\n }\n\n return null;\n}\n\nfunction isCompatible(version: string): boolean {\n return isValid(version);\n}\n\nfunction isBreaking(version: string, current: string): boolean {\n const versionParsed = parseVersion(version);\n const currentParsed = parseVersion(current);\n\n if (!versionParsed || !currentParsed) {\n return false;\n }\n\n if (currentParsed.major === 0) {\n return versionParsed.major > 0 || versionParsed.minor > currentParsed.minor;\n }\n\n return versionParsed.major > currentParsed.major;\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isBreaking,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions,\n};\n\nexport default api;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/github-actions/index.ts"],"sourcesContent":["import { isUndefined } from '@sindresorhus/is';\nimport type { SemVer } from 'semver';\nimport semver from 'semver';\nimport { logger } from '../../../logger/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\n\nexport const id = 'github-actions';\nexport const displayName = 'GitHub Actions';\nexport const urls = [\n 'https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/find-and-customize-actions#using-release-management-for-your-custom-actions',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies = ['pin', 'replace'];\n\nfunction massageValue(input: string): string {\n return input.trim().replace(regEx(/^v/i), '');\n}\n\nfunction parseVersion(input: string): SemVer | null {\n return semver.parse(massageValue(input));\n}\n\ninterface Range {\n major: number;\n minor?: number;\n}\n\nfunction parseRange(input: string): Range | null {\n const stripped = massageValue(input);\n const coerced = semver.coerce(stripped);\n if (!coerced) {\n return null;\n }\n const { major, minor } = coerced;\n\n if (regEx(/^\\d+$/).test(stripped)) {\n return { major };\n }\n\n return { major, minor };\n}\n\n/*\n * Like parseVersion but also accepts floating tags (e.g. `v1`, `v1.2`)\n * by coercing them to full semver.\n */\nfunction parseVersionCoerced(input: string): SemVer | null {\n const v = parseVersion(input);\n if (v) {\n return v;\n }\n const stripped = massageValue(input);\n if (!regEx(/^\\d/).test(stripped)) {\n return null;\n }\n return semver.coerce(stripped);\n}\n\nfunction isValid(input: string): boolean {\n return !!parseVersion(input) || !!parseRange(input);\n}\n\nfunction isVersion(input: string | undefined | null): boolean {\n if (!input) {\n return false;\n }\n\n if (parseVersion(input)) {\n return true;\n }\n\n const stripped = massageValue(input);\n if (!regEx(/^\\d/).test(stripped)) {\n return false;\n }\n\n return parseRange(input) !== null;\n}\n\nfunction isStable(version: string): boolean {\n const v = parseVersionCoerced(version);\n if (!v) {\n return false;\n }\n\n return v.prerelease.length === 0;\n}\n\nfunction isSingleVersion(input: string): boolean {\n return !!parseVersion(input);\n}\n\nfunction getMajor(version: string): number | null {\n return parseVersionCoerced(version)?.major ?? null;\n}\n\nfunction getMinor(version: string): number | null {\n return parseVersionCoerced(version)?.minor ?? null;\n}\n\nfunction getPatch(version: string): number | null {\n return parseVersionCoerced(version)?.patch ?? null;\n}\n\nfunction sortVersions(x: string, y: string): number {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return 0;\n }\n return semver.compare(a, b);\n}\n\nfunction equals(x: string, y: string): boolean {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return false;\n }\n return semver.eq(a, b);\n}\n\nfunction isGreaterThan(x: string, y: string): boolean {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return false;\n }\n return semver.gt(a, b);\n}\n\nfunction matches(version: string, range: string): boolean {\n const v = parseVersion(version);\n if (!v) {\n return false;\n }\n\n const rv = parseVersion(range);\n if (rv) {\n return semver.eq(v, rv);\n }\n\n const r = parseRange(range);\n if (!r) {\n return false;\n }\n\n if (v.prerelease.length > 0) {\n return false;\n }\n\n if (v.major !== r.major) {\n return false;\n }\n\n if (isUndefined(r.minor)) {\n return true;\n }\n\n return v.minor === r.minor;\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const sortedVersions = versions.sort(sortVersions).reverse();\n for (const version of sortedVersions) {\n if (matches(version, range)) {\n return version;\n }\n }\n return null;\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const sortedVersions = versions.sort(sortVersions);\n for (const version of sortedVersions) {\n if (matches(version, range)) {\n return version;\n }\n }\n return null;\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n const v = parseVersionCoerced(version);\n const r = parseRange(range);\n\n if (!v || !r) {\n return false;\n }\n\n if (v.major !== r.major) {\n return v.major < r.major;\n }\n\n if (isUndefined(r.minor)) {\n return false;\n }\n\n if (v.minor !== r.minor) {\n return v.minor < r.minor;\n }\n\n return false;\n}\n\nfunction getNewValue({\n currentValue,\n currentVersion,\n rangeStrategy,\n newVersion,\n allVersions,\n}: NewValueConfig): string | null {\n if (rangeStrategy === 'pin') {\n return newVersion;\n }\n\n const range = parseRange(currentValue);\n if (!range) {\n return newVersion;\n }\n\n const newParsed = parseVersion(newVersion);\n if (!newParsed) {\n return newVersion;\n }\n\n // Check if currentValue is a full version (has patch component)\n const currentParsed = parseVersion(currentValue);\n if (currentParsed) {\n // currentValue is a full version, return full newVersion\n return newVersion;\n }\n\n const [prefix] = currentValue.split(massageValue(currentValue));\n\n if (isUndefined(allVersions) || allVersions.size === 0) {\n if (isUndefined(range.minor)) {\n return `${prefix}${newParsed.major}`;\n }\n\n return `${prefix}${newParsed.major}.${newParsed.minor}`;\n }\n\n const shortest = getShortestMatchingVersion(prefix, newParsed, allVersions);\n if (shortest) {\n return shortest;\n }\n\n logger.once.debug(\n {\n versioning: id,\n currentValue,\n currentVersion,\n newVersion,\n rangeStrategy,\n allVersions,\n },\n `Suggested newValue \\`${newVersion}\\` was not included in allVersions, but it should have been. Returning it anyway`,\n );\n\n return newVersion;\n}\n\nfunction getShortestMatchingVersion(\n prefix: string,\n newParsed: SemVer,\n allVersions: Set<string>,\n): string | null {\n // in shortest-first order\n const options = [\n `${prefix}${newParsed.major}`,\n `${prefix}${newParsed.major}.${newParsed.minor}`,\n `${prefix}${newParsed.major}.${newParsed.minor}.${newParsed.patch}`,\n `${prefix}${newParsed.toString()}`,\n ];\n\n for (const option of options) {\n if (allVersions.has(option)) {\n return option;\n }\n }\n\n return null;\n}\n\nfunction isCompatible(version: string): boolean {\n return isValid(version);\n}\n\nfunction isBreaking(version: string, current: string): boolean {\n const versionParsed = parseVersion(version);\n const currentParsed = parseVersion(current);\n\n if (!versionParsed || !currentParsed) {\n return false;\n }\n\n if (currentParsed.major === 0) {\n return versionParsed.major > 0 || versionParsed.minor > currentParsed.minor;\n }\n\n return versionParsed.major > currentParsed.major;\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isBreaking,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions,\n};\n\nexport default api;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","names":[],"sources":["../../../../../lib/workers/repository/process/lookup/generate.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport { logger } from '../../../../logger/index.ts';\nimport type { Release } from '../../../../modules/datasource/index.ts';\nimport type { LookupUpdate } from '../../../../modules/manager/types.ts';\nimport type { VersioningApi } from '../../../../modules/versioning/index.ts';\nimport type { RangeStrategy } from '../../../../types/index.ts';\nimport { getElapsedDays } from '../../../../util/date.ts';\nimport { getMergeConfidenceLevel } from '../../../../util/merge-confidence/index.ts';\nimport type { LookupUpdateConfig } from './types.ts';\nimport { getUpdateType } from './update-type.ts';\n\nexport async function generateUpdate(\n config: LookupUpdateConfig,\n currentValue: string | undefined,\n versioningApi: VersioningApi,\n rangeStrategy: RangeStrategy,\n currentVersion: string,\n bucket: string,\n release: Release,\n allVersions: string
|
|
1
|
+
{"version":3,"file":"generate.js","names":[],"sources":["../../../../../lib/workers/repository/process/lookup/generate.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport { logger } from '../../../../logger/index.ts';\nimport type { Release } from '../../../../modules/datasource/index.ts';\nimport type { LookupUpdate } from '../../../../modules/manager/types.ts';\nimport type { VersioningApi } from '../../../../modules/versioning/index.ts';\nimport type { RangeStrategy } from '../../../../types/index.ts';\nimport { getElapsedDays } from '../../../../util/date.ts';\nimport { getMergeConfidenceLevel } from '../../../../util/merge-confidence/index.ts';\nimport type { LookupUpdateConfig } from './types.ts';\nimport { getUpdateType } from './update-type.ts';\n\nexport async function generateUpdate(\n config: LookupUpdateConfig,\n currentValue: string | undefined,\n versioningApi: VersioningApi,\n rangeStrategy: RangeStrategy,\n currentVersion: string,\n bucket: string,\n release: Release,\n allVersions: Set<string>,\n): Promise<LookupUpdate> {\n const newVersion = release.version;\n const update: LookupUpdate = {\n bucket,\n newVersion,\n newValue: null!,\n hasAttestation: release.attestation,\n };\n\n // istanbul ignore if\n if (release.checksumUrl !== undefined) {\n update.checksumUrl = release.checksumUrl;\n }\n // istanbul ignore if\n if (release.downloadUrl !== undefined) {\n update.downloadUrl = release.downloadUrl;\n }\n // istanbul ignore if\n if (release.newDigest !== undefined) {\n update.newDigest = release.newDigest;\n }\n // istanbul ignore if\n if (release.releaseTimestamp) {\n update.releaseTimestamp = release.releaseTimestamp;\n update.newVersionAgeInDays = getElapsedDays(release.releaseTimestamp);\n }\n // istanbul ignore if\n if (release.registryUrl !== undefined) {\n /**\n * This means:\n * - registry strategy is set to merge\n * - releases were fetched from multiple registry urls\n */\n update.registryUrl = release.registryUrl;\n }\n\n if (currentValue) {\n try {\n update.newValue = versioningApi.getNewValue({\n currentValue,\n rangeStrategy,\n currentVersion,\n newVersion,\n allVersions,\n })!;\n } catch (err) /* istanbul ignore next */ {\n logger.warn(\n { err, currentValue, rangeStrategy, currentVersion, newVersion },\n 'getNewValue error',\n );\n update.newValue = currentValue;\n }\n } else {\n update.newValue = currentValue;\n }\n update.newMajor = versioningApi.getMajor(newVersion)!;\n update.newMinor = versioningApi.getMinor(newVersion)!;\n update.newPatch = versioningApi.getPatch(newVersion)!;\n // istanbul ignore if\n if (!update.updateType && !currentVersion) {\n logger.debug({ update }, 'Update has no currentVersion');\n update.newValue = currentValue!;\n return update;\n }\n update.updateType =\n update.updateType ??\n getUpdateType(config, versioningApi, currentVersion, newVersion);\n if (versioningApi.isBreaking) {\n // This versioning scheme has breaking awareness\n update.isBreaking = versioningApi.isBreaking(currentVersion, newVersion);\n } else {\n // This versioning scheme does not have breaking awareness - assume only major updates are breaking\n // Updates from, or to, unstable releases should be treated as breaking too.\n // But we should not add that as default behavior until we stop treating non-LTS versions as unstable first\n update.isBreaking = update.updateType === 'major';\n }\n const { datasource, packageName, packageRules } = config;\n if (packageRules?.some((pr) => isNonEmptyArray(pr.matchConfidence))) {\n update.mergeConfidenceLevel = await getMergeConfidenceLevel(\n datasource,\n packageName,\n currentVersion,\n newVersion,\n update.updateType,\n );\n }\n if (!versioningApi.isVersion(update.newValue)) {\n update.isRange = true;\n }\n if (rangeStrategy === 'update-lockfile' && currentValue === update.newValue) {\n update.isLockfileUpdate = true;\n }\n if (\n rangeStrategy === 'bump' &&\n // TODO #22198\n versioningApi.matches(newVersion, currentValue!)\n ) {\n update.isBump = true;\n }\n return update;\n}\n"],"mappings":";;;;;;AAWA,eAAsB,eACpB,QACA,cACA,eACA,eACA,gBACA,QACA,SACA,aACuB;CACvB,MAAM,aAAa,QAAQ;CAC3B,MAAM,SAAuB;EAC3B;EACA;EACA,UAAU;EACV,gBAAgB,QAAQ;EACzB;;AAGD,KAAI,QAAQ,gBAAgB,KAAA,EAC1B,QAAO,cAAc,QAAQ;;AAG/B,KAAI,QAAQ,gBAAgB,KAAA,EAC1B,QAAO,cAAc,QAAQ;;AAG/B,KAAI,QAAQ,cAAc,KAAA,EACxB,QAAO,YAAY,QAAQ;;AAG7B,KAAI,QAAQ,kBAAkB;AAC5B,SAAO,mBAAmB,QAAQ;AAClC,SAAO,sBAAsB,eAAe,QAAQ,iBAAiB;;;AAGvE,KAAI,QAAQ,gBAAgB,KAAA;;;;;;AAM1B,QAAO,cAAc,QAAQ;AAG/B,KAAI,aACF,KAAI;AACF,SAAO,WAAW,cAAc,YAAY;GAC1C;GACA;GACA;GACA;GACA;GACD,CAAC;UACK,iCAAgC;AACvC,SAAO,KACL;GAAE;GAAK;GAAc;GAAe;GAAgB;GAAY,EAChE,oBACD;AACD,SAAO,WAAW;;KAGpB,QAAO,WAAW;AAEpB,QAAO,WAAW,cAAc,SAAS,WAAW;AACpD,QAAO,WAAW,cAAc,SAAS,WAAW;AACpD,QAAO,WAAW,cAAc,SAAS,WAAW;;AAEpD,KAAI,CAAC,OAAO,cAAc,CAAC,gBAAgB;AACzC,SAAO,MAAM,EAAE,QAAQ,EAAE,+BAA+B;AACxD,SAAO,WAAW;AAClB,SAAO;;AAET,QAAO,aACL,OAAO,cACP,cAAc,QAAQ,eAAe,gBAAgB,WAAW;AAClE,KAAI,cAAc,WAEhB,QAAO,aAAa,cAAc,WAAW,gBAAgB,WAAW;KAKxE,QAAO,aAAa,OAAO,eAAe;CAE5C,MAAM,EAAE,YAAY,aAAa,iBAAiB;AAClD,KAAI,cAAc,MAAM,OAAO,gBAAgB,GAAG,gBAAgB,CAAC,CACjE,QAAO,uBAAuB,MAAM,wBAClC,YACA,aACA,gBACA,YACA,OAAO,WACR;AAEH,KAAI,CAAC,cAAc,UAAU,OAAO,SAAS,CAC3C,QAAO,UAAU;AAEnB,KAAI,kBAAkB,qBAAqB,iBAAiB,OAAO,SACjE,QAAO,mBAAmB;AAE5B,KACE,kBAAkB,UAElB,cAAc,QAAQ,YAAY,aAAc,CAEhD,QAAO,SAAS;AAElB,QAAO"}
|
|
@@ -113,7 +113,7 @@ async function lookupUpdates(inconfig) {
|
|
|
113
113
|
]);
|
|
114
114
|
const latestVersion = dependency.tags?.latest;
|
|
115
115
|
let allVersions = dependency.releases.filter((release) => versioningApi.isVersion(release.version));
|
|
116
|
-
const allReleaseVersions = allVersions.map((r) => r.version);
|
|
116
|
+
const allReleaseVersions = new Set(allVersions.map((r) => r.version));
|
|
117
117
|
// istanbul ignore if
|
|
118
118
|
if (allVersions.length === 0) {
|
|
119
119
|
logger.info({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["allVersioning.get"],"sources":["../../../../../lib/workers/repository/process/lookup/index.ts"],"sourcesContent":["import { isNonEmptyString, isString, isUndefined } from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../../config/index.ts';\nimport type { ValidationMessage } from '../../../../config/types.ts';\nimport { CONFIG_VALIDATION } from '../../../../constants/error-messages.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport {\n getDatasourceFor,\n getDefaultVersioning,\n} from '../../../../modules/datasource/common.ts';\nimport type {\n GetDigestInputConfig,\n Release,\n ReleaseResult,\n} from '../../../../modules/datasource/index.ts';\nimport {\n applyDatasourceFilters,\n getDigest,\n getRawPkgReleases,\n isGetPkgReleasesConfig,\n supportsDigests,\n} from '../../../../modules/datasource/index.ts';\nimport { postprocessRelease } from '../../../../modules/datasource/postprocess-release.ts';\nimport { getRangeStrategy } from '../../../../modules/manager/index.ts';\nimport { id as dockerVersioningId } from '../../../../modules/versioning/docker/index.ts';\nimport * as allVersioning from '../../../../modules/versioning/index.ts';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error.ts';\nimport { assignKeys } from '../../../../util/assign-keys.ts';\nimport { getElapsedDays } from '../../../../util/date.ts';\nimport { applyPackageRules } from '../../../../util/package-rules/index.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { Result } from '../../../../util/result.ts';\nimport type { Timestamp } from '../../../../util/timestamp.ts';\nimport { calculateAbandonment } from './abandonment.ts';\nimport { getBucket } from './bucket.ts';\nimport { getCurrentVersion } from './current.ts';\nimport { filterVersions } from './filter.ts';\nimport { filterInternalChecks } from './filter-checks.ts';\nimport { generateUpdate } from './generate.ts';\nimport { getRollbackUpdate } from './rollback.ts';\nimport { calculateMostRecentTimestamp } from './timestamps.ts';\nimport type { LookupUpdateConfig, UpdateResult } from './types.ts';\nimport {\n addReplacementUpdateIfValid,\n isReplacementRulesConfigured,\n} from './utils.ts';\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 && !isString(config.currentValue)) {\n // If currentValue is not a string, then it's invalid\n // v8 ignore else -- TODO: add test #40625\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 isString(config.currentValue) &&\n isString(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 isString(compareValue) && versioningApi.isValid(compareValue);\n\n const unconstrainedValue =\n !!config.lockedVersion && isUndefined(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}: ${lookupError}`,\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 'respectLatest',\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 const allReleaseVersions = allVersions.map((r) => r.version);\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\n const inRangeOnlyStrategy = config.rangeStrategy === 'in-range-only';\n // Check that existing constraint can be satisfied\n const allSatisfyingVersions =\n (inRangeOnlyStrategy || config.rollbackPrs) && !unconstrainedValue\n ? allVersions.filter((v) =>\n // TODO #22198\n versioningApi.matches(v.version, compareValue!),\n )\n : allVersions;\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 // v8 ignore else -- TODO: add test #40625\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 (isNonEmptyString(currentVersionTimestamp)) {\n res.currentVersionTimestamp = currentVersionTimestamp;\n res.currentVersionAgeInDays = getElapsedDays(currentVersionTimestamp);\n\n if (\n config.packageRules?.some((rule) =>\n isNonEmptyString(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 const newValue =\n versioningApi.getPinnedValue?.(currentVersion) ?? currentVersion;\n res.updates.push({\n updateType: 'pin',\n isPin: true,\n newValue,\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 inRangeOnlyStrategy ? allSatisfyingVersions : 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 // v8 ignore else -- TODO: add test #40625\n if (isString(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 allReleaseVersions,\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 isString(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 isString(config.currentValue) &&\n isString(compareValue) &&\n isString(config.versionCompatibility)\n ) {\n for (const update of res.updates) {\n logger.debug({ update });\n // v8 ignore else -- TODO: add test #40625\n if (isString(config.currentValue) && isString(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 // v8 ignore else -- TODO: add test #40625\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) {\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 getDigestConfig.replacementName = update.newName;\n }\n\n // Don't use current releases if replacement changes name, otherwise we use the wrong new digest.\n // This happens on datasources which return the digest in release info like `github-tags`.\n // We can still use it when only version is changing.\n if (\n update.updateType !== 'replacement' ||\n update.newName === config.packageName\n ) {\n update.newDigest ??= dependency?.releases.find(\n (r) => r.version === update.newValue,\n )?.newDigest;\n }\n\n update.newDigest ??= await getDigest(\n getDigestConfig,\n update.newValue,\n );\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 (isString(update.newName) && 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 update.updateType !== 'rollback' || res.updates.length === 1,\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["allVersioning.get"],"sources":["../../../../../lib/workers/repository/process/lookup/index.ts"],"sourcesContent":["import { isNonEmptyString, isString, isUndefined } from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../../config/index.ts';\nimport type { ValidationMessage } from '../../../../config/types.ts';\nimport { CONFIG_VALIDATION } from '../../../../constants/error-messages.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport {\n getDatasourceFor,\n getDefaultVersioning,\n} from '../../../../modules/datasource/common.ts';\nimport type {\n GetDigestInputConfig,\n Release,\n ReleaseResult,\n} from '../../../../modules/datasource/index.ts';\nimport {\n applyDatasourceFilters,\n getDigest,\n getRawPkgReleases,\n isGetPkgReleasesConfig,\n supportsDigests,\n} from '../../../../modules/datasource/index.ts';\nimport { postprocessRelease } from '../../../../modules/datasource/postprocess-release.ts';\nimport { getRangeStrategy } from '../../../../modules/manager/index.ts';\nimport { id as dockerVersioningId } from '../../../../modules/versioning/docker/index.ts';\nimport * as allVersioning from '../../../../modules/versioning/index.ts';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error.ts';\nimport { assignKeys } from '../../../../util/assign-keys.ts';\nimport { getElapsedDays } from '../../../../util/date.ts';\nimport { applyPackageRules } from '../../../../util/package-rules/index.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { Result } from '../../../../util/result.ts';\nimport type { Timestamp } from '../../../../util/timestamp.ts';\nimport { calculateAbandonment } from './abandonment.ts';\nimport { getBucket } from './bucket.ts';\nimport { getCurrentVersion } from './current.ts';\nimport { filterVersions } from './filter.ts';\nimport { filterInternalChecks } from './filter-checks.ts';\nimport { generateUpdate } from './generate.ts';\nimport { getRollbackUpdate } from './rollback.ts';\nimport { calculateMostRecentTimestamp } from './timestamps.ts';\nimport type { LookupUpdateConfig, UpdateResult } from './types.ts';\nimport {\n addReplacementUpdateIfValid,\n isReplacementRulesConfigured,\n} from './utils.ts';\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 && !isString(config.currentValue)) {\n // If currentValue is not a string, then it's invalid\n // v8 ignore else -- TODO: add test #40625\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 isString(config.currentValue) &&\n isString(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 isString(compareValue) && versioningApi.isValid(compareValue);\n\n const unconstrainedValue =\n !!config.lockedVersion && isUndefined(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}: ${lookupError}`,\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 'respectLatest',\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 const allReleaseVersions = new Set(allVersions.map((r) => r.version));\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\n const inRangeOnlyStrategy = config.rangeStrategy === 'in-range-only';\n // Check that existing constraint can be satisfied\n const allSatisfyingVersions =\n (inRangeOnlyStrategy || config.rollbackPrs) && !unconstrainedValue\n ? allVersions.filter((v) =>\n // TODO #22198\n versioningApi.matches(v.version, compareValue!),\n )\n : allVersions;\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 // v8 ignore else -- TODO: add test #40625\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 (isNonEmptyString(currentVersionTimestamp)) {\n res.currentVersionTimestamp = currentVersionTimestamp;\n res.currentVersionAgeInDays = getElapsedDays(currentVersionTimestamp);\n\n if (\n config.packageRules?.some((rule) =>\n isNonEmptyString(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 const newValue =\n versioningApi.getPinnedValue?.(currentVersion) ?? currentVersion;\n res.updates.push({\n updateType: 'pin',\n isPin: true,\n newValue,\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 inRangeOnlyStrategy ? allSatisfyingVersions : 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 // v8 ignore else -- TODO: add test #40625\n if (isString(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 allReleaseVersions,\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 isString(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 isString(config.currentValue) &&\n isString(compareValue) &&\n isString(config.versionCompatibility)\n ) {\n for (const update of res.updates) {\n logger.debug({ update });\n // v8 ignore else -- TODO: add test #40625\n if (isString(config.currentValue) && isString(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 // v8 ignore else -- TODO: add test #40625\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) {\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 getDigestConfig.replacementName = update.newName;\n }\n\n // Don't use current releases if replacement changes name, otherwise we use the wrong new digest.\n // This happens on datasources which return the digest in release info like `github-tags`.\n // We can still use it when only version is changing.\n if (\n update.updateType !== 'replacement' ||\n update.newName === config.packageName\n ) {\n update.newDigest ??= dependency?.releases.find(\n (r) => r.version === update.newValue,\n )?.newDigest;\n }\n\n update.newDigest ??= await getDigest(\n getDigestConfig,\n update.newValue,\n );\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 (isString(update.newName) && 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 update.updateType !== 'rollback' || res.updates.length === 1,\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,eAAe,aACb,QACA,UACA,SACA,eACuC;CACvC,MAAM,iBAAiB,SAAS,MAC7B,MACC,cAAc,QAAQ,EAAE,QAAQ,IAChC,cAAc,OAAO,EAAE,SAAS,QAAQ,CAC3C;AAED,KAAI,CAAC,eACH,QAAO;AAGT,KAAI,eAAe,iBACjB,QAAO,eAAe;AAIxB,SADsB,MAAM,mBAAmB,QAAQ,eAAe,GAChD;;AAGxB,eAAsB,cACpB,UACsC;CACtC,IAAI,SAA6B,EAAE,GAAG,UAAU;AAChD,QAAO,eAAe,qBAAqB,OAAO,WAAW;CAE7D,MAAM,gBAAgBA,IAAkB,OAAO,WAAW;CAE1D,IAAI,aAAmC;CACvC,MAAM,MAAoB;EACxB,YAAY,OAAO;EACnB,SAAS,EAAE;EACX,UAAU,EAAE;EACb;AAED,KAAI;AACF,SAAO,MACL;GACE,YAAY,OAAO;GACnB,cAAc,OAAO;GACtB,EACD,gBACD;AACD,MAAI,OAAO,gBAAgB,CAAC,SAAS,OAAO,aAAa,EAAE;;AAGzD,OAAI,OAAO,aACT,QAAO,MACL,4BAA4B,OAAO,YAAY,IAAI,KAAK,UAAU,OAAO,aAAa,CAAC,IAAI,OAAO,OAAO,aAAa,GACvH;AAEH,OAAI,aAAa;AACjB,UAAO,OAAO,GAAG,IAAI;;AAEvB,MACE,CAAC,uBAAuB,OAAO,IAC/B,CAAC,iBAAiB,OAAO,WAAW,EACpC;AACA,OAAI,aAAa;AACjB,UAAO,OAAO,GAAG,IAAI;;EAEvB,IAAI,eAAe,OAAO;AAC1B,MACE,SAAS,OAAO,aAAa,IAC7B,SAAS,OAAO,qBAAqB,EACrC;GAEA,MAAM,aAD2B,MAAM,OAAO,qBAAqB,CACvB,KAAK,OAAO,aAAa;AACrE,OAAI,YAAY,QAAQ;AACtB,WAAO,MACL;KACE,sBAAsB,OAAO;KAC7B,cAAc,OAAO;KACrB,aAAa,OAAO;KACpB,QAAQ,WAAW;KACpB,EACD,oCACD;AACD,WAAO,uBAAuB,WAAW,OAAO;AAChD,mBAAe,WAAW,OAAO;SAEjC,QAAO,MACL;IACE,sBAAsB,OAAO;IAC7B,cAAc,OAAO;IACrB,aAAa,OAAO;IACrB,EACD,uCACD;;EAIL,MAAM,UACJ,SAAS,aAAa,IAAI,cAAc,QAAQ,aAAa;EAE/D,MAAM,qBACJ,CAAC,CAAC,OAAO,iBAAiB,YAAY,OAAO,aAAa;AAE5D,MAAI,WAAW,oBAAoB;AACjC,OACE,CAAC,OAAO,4BAER,cAAc,gBAAgB,aAAc,EAC5C;AACA,QAAI,aAAa;AACjB,WAAO,OAAO,GAAG,IAAI;;GAGvB,MAAM,EAAE,KAAK,eAAe,KAAK,gBAAgB,MAAM,kBACrD,OACD,CACE,WAAW,QAAQ,6BAA6B,eAAe,IAAI,CAAC,CACpE,WAAW,QAAQ,qBAAqB,KAAK,OAAO,CAAC,CACrD,WAAW,QAAQ,uBAAuB,KAAK,OAAO,CAAC,CACvD,QAAQ;AAEX,OAAI,uBAAuB,MACzB,OAAM;AAGR,OAAI,aAAa;IAEf,MAAM,UAA6B;KACjC,OAAO,OAAO;KACd,SAAS,qBAAqB,OAAO,WAAW,WAAW,OAAO,YAAY,IAAI;KACnF;AACD,WAAO,MACL;KACE,YAAY,OAAO;KACnB,aAAa,OAAO;KACrB,EACD,QAAQ,QACT;AAED,QAAI,SAAS,KAAK,QAAQ;AAC1B,WAAO,OAAO,GAAG,IAAI;;AAGvB,gBAAa;AAEb,OAAI,WAAW,mBACb,QAAO,MACL,gCAAgC,OAAO,WAAW,WAAW,OAAO,cACrE;AAGH,cAAW,KAAK,YAAY;IAC1B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACD,CAAC;GAEF,MAAM,gBAAgB,WAAW,MAAM;GAEvC,IAAI,cAAc,WAAW,SAAS,QAAQ,YAC5C,cAAc,UAAU,QAAQ,QAAQ,CACzC;GACD,MAAM,qBAAqB,IAAI,IAAI,YAAY,KAAK,MAAM,EAAE,QAAQ,CAAC;;AAErE,OAAI,YAAY,WAAW,GAAG;AAE5B,WAAO,KACL;KACE,YAAY,OAAO;KACnB,QAAQ;KACT,EALa,4DAOf;AACD,QAAI,CAAC,OAAO,cACV,QAAO,OAAO,GAAG,IAAI;;AAIzB,YAAS,MAAM,kBACb;IAAE,GAAG;IAAQ,WAAW,IAAI;IAAW,EACvC,aACD;AACD,OAAI,OAAO,WAAW;IACpB,MAAM,gBAAgB,WAAW,OAAO,OAAO;AAC/C,QAAI,CAAC,eAAe;AAClB,SAAI,SAAS,KAAK;MAChB,OAAO,OAAO;MACd,SAAS,+BAA+B,OAAO,UAAU,OAAO,OAAO,WAAW,WAAW,OAAO;MACrG,CAAC;AACF,YAAO,OAAO,GAAG,IAAI;;AAEvB,kBAAc,YAAY,QACvB,MACC,EAAE,YAAY,iBACb,EAAE,YAAY,gBACb,cAAc,cAAc,eAAe,aAAa,CAC7D;;GAGH,MAAM,sBAAsB,OAAO,kBAAkB;GAErD,MAAM,yBACH,uBAAuB,OAAO,gBAAgB,CAAC,qBAC5C,YAAY,QAAQ,MAElB,cAAc,QAAQ,EAAE,SAAS,aAAc,CAChD,GACD;AACN,OAAI,CAAC,sBAAsB,OACzB,QAAO,MACL,sCAAsC,OAAO,WAAW,cACzD;AAGH,OAAI,OAAO,eAAe,CAAC,sBAAsB,QAAQ;IACvD,MAAM,WAAW,kBAAkB,QAAQ,aAAa,cAAc;;AAEtE,QAAI,CAAC,UAAU;AACb,SAAI,SAAS,KAAK;MAChB,OAAO,OAAO;MAEd,SAAS,+BAA+B,aAAc,OACpD,OAAO,WACR,WAAW,OAAO;MACpB,CAAC;AACF,YAAO,OAAO,GAAG,IAAI;;AAEvB,QAAI,QAAQ,KAAK,SAAS;;GAE5B,IAAI,gBAAgB,iBAAiB,OAAO;;AAG5C,OACE,OAAO,wBACP,kBAAkB,qBAClB,CAAC,OAAO,cAER,iBAAgB;AAGlB,OACE,OAAO,wBACP,CAAC,OAAO,gBACR,OAAO,cAEP,iBAAgB;GAElB,MAAM,wBAAwB,WAAW,SACtC,QAAQ,YAAY,CAAC,QAAQ,aAAa,CAC1C,KAAK,YAAY,QAAQ,QAAQ;GACpC,IAAI;AACJ,OAAI,kBAAkB,kBACpB,kBAAiB,OAAO;YACf,YAAY,MAAM,MAAM,EAAE,YAAY,aAAa,CAC5D,kBAAiB;AAGnB,sBACE,kBACE,cACA,OAAO,eACP,eACA,eACA,eACA,sBACD,IACD,kBACE,cACA,OAAO,eACP,eACA,eACA,eACA,YAAY,KAAK,MAAM,EAAE,QAAQ,CAClC;AAEH,OAAI,CAAC,gBAAgB;;AAEnB,QAAI,CAAC,OAAO,eAAe;AACzB,YAAO,MACL,gDAAgD,OAAO,cACxD;AACD,SAAI,aAAa;;AAEnB,WAAO,OAAO,GAAG,IAAI;;AAGvB,OAAI,iBAAiB;GACrB,MAAM,0BAA0B,MAAM,aACpC,QACA,aACA,gBACA,cACD;AAED,OAAI,iBAAiB,wBAAwB,EAAE;AAC7C,QAAI,0BAA0B;AAC9B,QAAI,0BAA0B,eAAe,wBAAwB;AAErE,QACE,OAAO,cAAc,MAAM,SACzB,iBAAiB,KAAK,gBAAgB,CACvC,CAGD,UAAS,MAAM,kBACb;KAAE,GAAG;KAAQ;KAAyB,EACtC,oBACD;;AAIL,OACE,gBACA,kBACA,kBAAkB,SAClB,CAAC,cAAc,gBAAgB,aAAa,EAC5C;IACA,MAAM,WACJ,cAAc,iBAAiB,eAAe,IAAI;AACpD,QAAI,QAAQ,KAAK;KACf,YAAY;KACZ,OAAO;KACP;KACA,YAAY;KACZ,UAAU,cAAc,SAAS,eAAe;KACjD,CAAC;;AAEJ,OAAI,kBAAkB,MAEpB,iBAAgB;;AAGlB,OAAI,CAAC,cAAc,UAAU,eAAgB,EAAE;AAC7C,QAAI,aAAa;AACjB,WAAO,OAAO,GAAG,IAAI;;GAIvB,IAAI,mBAAmB,eACrB,QACA,gBACA,eACA,sBAAsB,wBAAwB,aAC9C,cACD,CAAC,QACC,MAEC,sBACA,cAAc,aAAa,EAAE,SAAS,aAAa,CACtD;GACD,IAAI,2BAA2B;AAC/B,OAAI,OAAO,sBAAsB;AAC/B,QAAI,OAAO,yBAAyB;AAClC,SAAI,0BAA0B,OAAO;AACrC,SAAI,2BAA2B,OAAO;AACtC,SAAI,cAAc,QAAQ,OAAO,wBAAwB,EAAE;MACzD,IAAI;AACJ,UAAI,cAAc,UAAU,OAAO,wBAAwB,CAEzD,yBAAwB,iBAAiB,QACtC,YACC,CAAC,cAAc,cACb,OAAO,yBACP,QAAQ,QACT,CACJ;UAGD,yBAAwB,iBAAiB,QAAQ,YAC/C,cAAc,QACZ,QAAQ,SACR,OAAO,wBACR,CACF;AAGH,UAAI,sBAAsB,WAAW,KAAK,iBAAiB,OACzD,QAAO,KACL;OACE,UAAU;OACV,yBAAyB,OAAO;OAChC,aAAa,OAAO;OACrB,EACD,8CACD;AAGH,yBAAmB;WAEnB,QAAO,KACL;MACE,yBAAyB,OAAO;MAChC,aAAa,OAAO;MACrB,EACD,uCACD;;AAGL,QAAI,OAAO,6BAA6B,UAEtC,QAAO,KAAK,MACV,8CAA8C,OAAO,cACtD;SACI;AAEL,YAAO,KAAK,MACV,6CAA6C,OAAO,cACrD;AACD,wBAAmB,iBAAiB,MAAM,GAAG,EAAE;AAC/C,gCAA2B;;;GAG/B,MAAM,UAAqC,EAAE;AAC7C,QAAK,MAAM,WAAW,kBAAkB;IACtC,MAAM,SAAS,UACb,QAEA,gBACA,QAAQ,SACR,cACD;;AAED,QAAI,SAAS,OAAO,CAClB,KAAI,QAAQ,QACV,SAAQ,QAAQ,KAAK,QAAQ;QAE7B,SAAQ,UAAU,CAAC,QAAQ;;GAIjC,MAAM,kBAAkB,iBAAiB,QAAQ,IAAI;AACrD,QAAK,MAAM,CAAC,QAAQ,aAAa,OAAO,QAAQ,QAAQ,EAAE;IAIxD,MAAM,EAAE,SAAS,eAAe,oBAC9B,MAAM,qBACJ,iBACA,eACA,QAPmB,SAAS,MAAM,IAAI,OACxC,cAAc,aAAa,GAAG,SAAS,GAAG,QAAQ,CACnD,CAOE;;AAEH,QAAI,CAAC,QACH,QAAO,OAAO,GAAG,IAAI;IAEvB,MAAM,aAAa,QAAQ;IAC3B,MAAM,SAAS,MAAM,eACnB,QACA,cACA,eAGA,eACA,OAAO,iBAAiB,gBACxB,QACA,SACA,mBACD;AAGD,QACE,OAAO,YAAY,WACnB,cAAc,WAAW,UAAU,IACnC,OAAO,UAAU,WAAW,UAAU,IACtC,OAAO,kBAAkB,OAAO,UAEhC,QAAO,aAAa;AAGtB,QAAI,cACF,QAAO,gBAAgB;AAGzB,QAAI,gBAAgB,OAClB,QAAO,kBAAkB,gBAAgB,KAAK,MAAM,EAAE,QAAQ;AAEhE,QAAI,CAAC,OAAO,YAAY,OAAO,aAAa,cAAc;AACxD,SAAI,CAAC,OAAO,cACV;;AAGF,SAAI,kBAAkB,QAAQ;AAC5B,aAAO,MACL;OACE,aAAa,OAAO;OACpB,cAAc,OAAO;OACrB,eAAe,OAAO;OACtB;OACD,EACD,6CACD;AACD;;AAEF,SAAI,kBAAkB;;AAExB,QAAI,oBACF,SAAS,OAAO,SAAS,IACzB,cAAc,gBAAgB,OAAO,SAAS;;AAEhD,QACE,OAAO,eAAA,YACP,OAAO,eAAe,cACtB,OAAO,YACP,cAAc,UAAU,OAAO,SAAS,IACxC,gBACA,cAAc,UAAU,aAAa,IACrC,cAAc,cAAc,cAAc,OAAO,SAAS,CAE1D,QAAO,KACL;KACE,aAAa,OAAO;KACpB,cAAc,OAAO;KACrB;KACA,gBAAgB,OAAO;KACvB;KACA,mBAAmB,YAAY;KAC/B,yBAAyB,iBAAiB,KAAK,MAAM,EAAE,QAAQ;KAC/D;KACD,EACD,0CACD;QAED,KAAI,QAAQ,KAAK,OAAO;;aAGnB,cAAc;AACvB,UAAO,MACL,cAAc,OAAO,YAAY,qCAAqC,aAAa,eAAe,OAAO,WAAW,GACrH;AAED,OAAI,CAAC,OAAO,cAAc,CAAC,OAAO,eAAe;AAC/C,WAAO,MACL,YAAY,OAAO,YAAY,yCAChC;AACD,QAAI,aAAa;SAEjB,QAAO,IAAI;QAGb,KAAI,aAAa;AAGnB,MAAI,6BAA6B,OAAO,CACtC,6BAA4B,IAAI,SAAS,OAAO;WACvC,YAAY,mBAAmB,WAAW,mBACnD,KAAI,QAAQ,KAAK;GACf,YAAY;GACZ,SAAS,WAAW;GACpB,UAAU,WAAW;GACtB,CAAC;AAIJ,MAAI,OAAO,eAAe;AACxB,OAAI,iBAAiB,OAAO;AAC5B,OAAI,eAAe,OAAO;aACjB,gBAAgB,cAAc,gBAAgB,aAAa,CACpE,KAAI,eAAe,aAAa,QAAQ,MAAM,MAAM,EAAE,GAAG;AAI3D,MACE,SAAS,OAAO,aAAa,IAC7B,SAAS,aAAa,IACtB,SAAS,OAAO,qBAAqB,CAErC,MAAK,MAAM,UAAU,IAAI,SAAS;AAChC,UAAO,MAAM,EAAE,QAAQ,CAAC;;AAExB,OAAI,SAAS,OAAO,aAAa,IAAI,SAAS,OAAO,SAAS,CAC5D,QAAO,WAAW,OAAO,aAAa,QACpC,cACA,OAAO,SACR;;AAMP,MAAI,gBAAgB,OAAO,WAAW,EAAE;AACtC,OAAI,OAAO;QACL,CAAC,OAAO,oBAAoB,CAAC,IAAI,QAAQ,OAE3C,KAAI,QAAQ,KAAK;KACf,YAAY;KACZ,UAAU,OAAO;KAClB,CAAC;cAEK,OAAO;;QAGZ,CAAC,IAAI,QAAQ,MAAM,WAAW,OAAO,eAAe,MAAM,CAE5D,KAAI,QAAQ,KAAK;KACf,aAAa;KACb,YAAY;KACZ,UAAU,OAAO;KAClB,CAAC;;AAGN,OAAI,cAAc,gBAAgB;AAEhC,QAAI,iBAAiB,cAAc,eAAe,IAAI,eAAgB;AACtE,SAAK,MAAM,UAAU,IAAI,QAEvB,QAAO,aAAa,cAAc,eAAe,OAAO,WAAY;;AAGxE,OAAI,IAAI,YACN,QAAO,eAAe,CAAC,IAAI,YAAY;AAIzC,QAAK,MAAM,UAAU,IAAI,SAAS;AAChC,QAAI,OAAO,eAAe,QAAQ,OAAO,eAAe;KACtD,MAAM,kBAAwC;MAC5C,GAAG;MACH,aAAa,OAAO,eAAe,IAAI;MACvC,YAAY,IAAI;MACjB;AAGD,SAAI,OAAO,eAAe,cACxB,QAAO,gBAAgB;AAIzB,SACE,OAAO,eAAe,iBACtB,OAAO,YAAY,OAAO,aAC1B;AACA,aAAO,gBAAgB;AACvB,aAAO,gBAAgB;AACvB,sBAAgB,kBAAkB,OAAO;;AAM3C,SACE,OAAO,eAAe,iBACtB,OAAO,YAAY,OAAO,YAE1B,QAAO,cAAc,YAAY,SAAS,MACvC,MAAM,EAAE,YAAY,OAAO,SAC7B,EAAE;AAGL,YAAO,cAAc,MAAM,UACzB,iBACA,OAAO,SACR;AAID,SAAI,OAAO,cAAc,MAAM;AAC7B,aAAO,MACL;OACE,aAAa,OAAO;OACpB,cAAc,OAAO;OACrB,YAAY,OAAO;OACnB,UAAU,OAAO;OACjB,QAAQ,OAAO;OAChB,EACD,6CACD;AAID,UAAI,OAAO,cACT,KAAI,SAAS,KAAK;OAChB,SAAS,8CAA8C,OAAO,WAAW,WAAW,OAAO,YAAY;OACvG,OAAO,OAAO;OACf,CAAC;;UAIN,QAAO,OAAO;AAEhB,QAAI,OAAO,YAAY;KACrB,MAAM,cAAc,YAAY,UAAU,MACvC,YAAY,QAAQ,YAAY,OAAO,WACzC,EAAE;AACH,SAAI,eAAe,gBAAgB,IAAI,YACrC,QAAO,cAAc;;;;AAM7B,MAAI,IAAI,QAAQ,OACd,QAAO,IAAI;AAGb,MAAI,UAAU,IAAI,QACf,QACE,WAAW,OAAO,aAAa,QAAQ,OAAO,iBAAiB,KACjE,CACA,QAAQ,WAAW,OAAO,cAAc,KAAK,CAC7C,QACE,WACE,SAAS,OAAO,QAAQ,IAAI,OAAO,YAAY,OAAO,eACvD,OAAO,kBAAkB,QACzB,OAAO,aAAa,OAAO,gBAC3B,OAAO,qBAAqB,QAE3B,OAAO,aACN,CAAC,OAAO,UAAU,WAAW,OAAO,cAAe,CACxD;AAEH,MAAI,OAAO,kBAAkB,gBAC3B,KAAI,UAAU,IAAI,QAAQ,QACvB,WAAW,OAAO,aAAa,OAAO,aACxC;AAGH,MAAI,OAAO,eAAe,OAAO,UAC/B,KAAI,UAAU,IAAI,QAAQ,QACvB,WACC,OAAO,eAAe,cAAc,IAAI,QAAQ,WAAW,EAC9D;EAGH,MAAM,UACJ,IAAI,QAAQ,SAAS,IACjB,YAAY,SAAS,MAClB,MAAM,EAAE,YAAY,IAAI,QAAQ,GAAG,SACrC,GACD;AAEN,MAAI,SAAS,kBAAkB;AAC7B,OAAI,mBAAmB,QAAQ;AAC/B,OAAI,eAAe,QAAQ;;UAEtB,iCAAgC;AACvC,MAAI,eAAe,kBACjB,QAAO,OAAO,IAAI,IAAI;AAGxB,MAAI,eAAe,SAAS,IAAI,YAAA,oBAC9B,QAAO,OAAO,IAAI,IAAI;AAGxB,SAAO,MACL;GACE,eAAe,OAAO;GACtB,cAAc,OAAO;GACrB,YAAY,OAAO;GACnB,aAAa,OAAO;GACpB,kBAAkB,OAAO;GACzB,WAAW,OAAO;GAClB,eAAe,OAAO;GACtB,aAAa,OAAO;GACpB,YAAY,OAAO;GACnB,aAAa,OAAO;GACpB,sBAAsB,OAAO;GAC7B,0BAA0B,OAAO;GACjC;GACD,EACD,sBACD;AACD,MAAI,aAAa;;AAEnB,QAAO,OAAO,GAAG,IAAI"}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 43.
|
|
3
|
+
"title": "JSON schema for Renovate 43.137.0 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "43.
|
|
5
|
+
"x-renovate-version": "43.137.0",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|