renovate 44.211.0 → 44.212.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/data/monorepo.js +8 -0
- package/dist/modules/datasource/common.d.ts +9 -0
- package/dist/modules/datasource/common.js +20 -2
- package/dist/modules/datasource/common.js.map +1 -1
- package/dist/modules/manager/apm/extract.js +44 -17
- package/dist/modules/manager/apm/extract.js.map +1 -1
- package/dist/modules/manager/apm/index.js +5 -1
- package/dist/modules/manager/apm/index.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +2 -2
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/nix/extract.js +1 -2
- package/dist/modules/manager/nix/extract.js.map +1 -1
- package/dist/modules/platform/azure/index.js +3 -3
- package/dist/modules/platform/azure/index.js.map +1 -1
- package/dist/modules/platform/github/index.js +1 -1
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/util/git/private-key.js +5 -0
- package/dist/util/git/private-key.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/release-notes.js +3 -1
- package/dist/workers/repository/update/pr/changelog/release-notes.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
package/dist/data/monorepo.js
CHANGED
|
@@ -126,11 +126,14 @@ var repoGroups = {
|
|
|
126
126
|
"capacitor": "https://github.com/ionic-team/capacitor",
|
|
127
127
|
"cedar": "https://github.com/cedarjs/cedar",
|
|
128
128
|
"chakra-ui": "https://github.com/chakra-ui/chakra-ui",
|
|
129
|
+
"chat-sdk": "https://github.com/vercel/chat",
|
|
129
130
|
"chromely": "https://github.com/chromelyapps/Chromely",
|
|
130
131
|
"citation-js": "https://github.com/citation-js/citation-js",
|
|
131
132
|
"ckeditor": ["https://github.com/ckeditor/ckeditor5", "https://github.com/ckeditor/ckeditor5-premium-features"],
|
|
132
133
|
"clarity": "https://github.com/vmware/clarity",
|
|
133
134
|
"clearscript": ["https://github.com/microsoft/ClearScript", "https://github.com/Microsoft/ClearScript"],
|
|
135
|
+
"cloudevents-sdk-csharp": "https://github.com/cloudevents/sdk-csharp",
|
|
136
|
+
"cloudevents-sdk-java": "https://github.com/cloudevents/sdk-java",
|
|
134
137
|
"commitlint": "https://github.com/conventional-changelog/commitlint",
|
|
135
138
|
"confect": "https://github.com/rjdellecese/confect",
|
|
136
139
|
"conform": "https://github.com/edmundhung/conform",
|
|
@@ -366,6 +369,11 @@ var repoGroups = {
|
|
|
366
369
|
"eslint": "https://github.com/eslint/eslint",
|
|
367
370
|
"eslint-config-globex": "https://github.com/GlobexDesignsInc/eslint-config-globex",
|
|
368
371
|
"eslint-stylistic": "https://github.com/eslint-stylistic/eslint-stylistic",
|
|
372
|
+
"excel-dna": [
|
|
373
|
+
"https://github.com/Excel-DNA/ExcelDna",
|
|
374
|
+
"https://github.com/Excel-DNA/IntelliSense",
|
|
375
|
+
"https://github.com/Excel-DNA/Registration"
|
|
376
|
+
],
|
|
369
377
|
"expo": "https://github.com/expo/expo",
|
|
370
378
|
"fabric-chaincode-node": "https://github.com/hyperledger/fabric-chaincode-node",
|
|
371
379
|
"fabric8-kubernetes-client": "https://github.com/fabric8io/kubernetes-client",
|
|
@@ -7,6 +7,15 @@ export declare function getDatasourceHostType(datasource: string): string | null
|
|
|
7
7
|
export declare function getDefaultVersioning(datasourceName: string | undefined): string;
|
|
8
8
|
export declare function isGetPkgReleasesConfig(input: unknown): input is GetPkgReleasesConfig;
|
|
9
9
|
export declare function applyVersionCompatibility(releaseResult: ReleaseResult, versionCompatibility: string | undefined, currentCompatibility: string | undefined): ReleaseResult;
|
|
10
|
+
/**
|
|
11
|
+
* Extracts a version string from regex named capture groups.
|
|
12
|
+
*
|
|
13
|
+
* Supports two modes:
|
|
14
|
+
* 1. A `version` group: returned as-is.
|
|
15
|
+
* 2. SemVer-part groups (`major`, `minor`, `patch`, `prerelease`, `build`):
|
|
16
|
+
* assembled into `MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function extractVersionFromGroups(groups: Record<string, string> | undefined): string | undefined;
|
|
10
19
|
export declare function applyExtractVersion(releaseResult: ReleaseResult, extractVersion: string | undefined): ReleaseResult;
|
|
11
20
|
export declare function filterValidVersions<Config extends Pick<GetPkgReleasesConfig, 'versioning' | 'datasource'>>(releaseResult: ReleaseResult, config: Config): ReleaseResult;
|
|
12
21
|
export declare function sortAndRemoveDuplicates<Config extends Pick<GetPkgReleasesConfig, 'versioning' | 'datasource'>>(releaseResult: ReleaseResult, config: Config): ReleaseResult;
|
|
@@ -70,11 +70,29 @@ function applyVersionCompatibility(releaseResult, versionCompatibility, currentC
|
|
|
70
70
|
});
|
|
71
71
|
return releaseResult;
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Extracts a version string from regex named capture groups.
|
|
75
|
+
*
|
|
76
|
+
* Supports two modes:
|
|
77
|
+
* 1. A `version` group: returned as-is.
|
|
78
|
+
* 2. SemVer-part groups (`major`, `minor`, `patch`, `prerelease`, `build`):
|
|
79
|
+
* assembled into `MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]`.
|
|
80
|
+
*/
|
|
81
|
+
function extractVersionFromGroups(groups) {
|
|
82
|
+
if (!groups) return;
|
|
83
|
+
if (groups.version) return groups.version;
|
|
84
|
+
if (!groups.major) return;
|
|
85
|
+
let version = `${groups.major}.${groups.minor ?? "0"}.${groups.patch ?? "0"}`;
|
|
86
|
+
if (groups.prerelease) version += `-${groups.prerelease}`;
|
|
87
|
+
if (groups.build) version += `+${groups.build}`;
|
|
88
|
+
return version;
|
|
89
|
+
}
|
|
73
90
|
function applyExtractVersion(releaseResult, extractVersion) {
|
|
74
91
|
if (!extractVersion) return releaseResult;
|
|
75
92
|
const extractVersionRegEx = regEx(extractVersion);
|
|
76
93
|
releaseResult.releases = filterMap(releaseResult.releases, (release) => {
|
|
77
|
-
const
|
|
94
|
+
const groups = extractVersionRegEx.exec(release.version)?.groups;
|
|
95
|
+
const version = extractVersionFromGroups(groups);
|
|
78
96
|
if (!version) return null;
|
|
79
97
|
release.versionOrig = release.version;
|
|
80
98
|
release.version = version;
|
|
@@ -256,6 +274,6 @@ function applyConstraintsFiltering(releaseResult, config) {
|
|
|
256
274
|
}
|
|
257
275
|
return releaseResult;
|
|
258
276
|
}
|
|
259
|
-
export { applyConstraintsFiltering, applyExtractVersion, applyVersionCompatibility, filterValidVersions, getDatasourceFor, getDatasourceHostType, getDefaultVersioning, isGetPkgReleasesConfig, sortAndRemoveDuplicates };
|
|
277
|
+
export { applyConstraintsFiltering, applyExtractVersion, applyVersionCompatibility, extractVersionFromGroups, filterValidVersions, getDatasourceFor, getDatasourceHostType, getDefaultVersioning, isGetPkgReleasesConfig, sortAndRemoveDuplicates };
|
|
260
278
|
|
|
261
279
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","names":["datasources","allVersioning.get"],"sources":["../../../lib/modules/datasource/common.ts"],"sourcesContent":["import {\n isNonEmptyArray,\n isNonEmptyStringAndNotWhitespace,\n} from '@sindresorhus/is';\nimport { logger } from '../../logger/index.ts';\nimport {\n type ConstraintName,\n isAdditionalConstraintName,\n} from '../../util/exec/types.ts';\nimport { filterMap } from '../../util/filter-map.ts';\nimport { regEx } from '../../util/regex.ts';\nimport * as allVersioning from '../versioning/index.ts';\nimport { defaultVersioning } from '../versioning/index.ts';\nimport datasources from './api.ts';\nimport { CustomDatasource } from './custom/index.ts';\nimport type {\n DatasourceApi,\n GetPkgReleasesConfig,\n ReleaseResult,\n} from './types.ts';\n\nexport function getDatasourceFor(datasource: string): DatasourceApi | null {\n if (datasource?.startsWith('custom.')) {\n return getDatasourceFor(CustomDatasource.id);\n }\n return datasources.get(datasource) ?? null;\n}\n\n/**\n * The host types of the datasources whose requests use another host type than their id.\n */\nconst datasourceHostTypes: Record<string, string> = {\n 'sbt-package': 'sbt',\n 'sbt-plugin': 'sbt',\n};\n\n/**\n * Returns the host type the requests of `datasource` use, such as `custom` for `custom.<name>`, or `null` when there is no such datasource.\n */\nexport function getDatasourceHostType(datasource: string): string | null {\n const id = getDatasourceFor(datasource)?.id;\n if (!id) {\n return null;\n }\n return datasourceHostTypes[id] ?? id;\n}\n\nexport function getDefaultVersioning(\n datasourceName: string | undefined,\n): string {\n if (!datasourceName) {\n return defaultVersioning.id;\n }\n\n const datasource = getDatasourceFor(datasourceName);\n\n if (!datasource) {\n logger.warn({ datasourceName }, 'Missing datasource!');\n return defaultVersioning.id;\n }\n\n if (!datasource.defaultVersioning) {\n return defaultVersioning.id;\n }\n\n return datasource.defaultVersioning;\n}\n\nexport function isGetPkgReleasesConfig(\n input: unknown,\n): input is GetPkgReleasesConfig {\n return (\n isNonEmptyStringAndNotWhitespace(\n (input as GetPkgReleasesConfig).datasource,\n ) &&\n isNonEmptyStringAndNotWhitespace(\n (input as GetPkgReleasesConfig).packageName,\n )\n );\n}\n\nexport function applyVersionCompatibility(\n releaseResult: ReleaseResult,\n versionCompatibility: string | undefined,\n currentCompatibility: string | undefined,\n): ReleaseResult {\n if (!versionCompatibility) {\n return releaseResult;\n }\n\n const versionCompatibilityRegEx = regEx(versionCompatibility);\n releaseResult.releases = filterMap(releaseResult.releases, (release) => {\n const regexResult = versionCompatibilityRegEx.exec(release.version);\n if (!regexResult?.groups?.version) {\n logger.trace(\n { releaseVersion: release.version, versionCompatibility },\n 'versionCompatibility: Does not match regex',\n );\n return null;\n }\n if (regexResult?.groups?.compatibility !== currentCompatibility) {\n logger.trace(\n { releaseVersion: release.version, versionCompatibility },\n 'versionCompatibility: Does not match compatibility',\n );\n return null;\n }\n logger.trace(\n {\n releaseVersion: release.version,\n versionCompatibility,\n version: regexResult.groups.version,\n compatibility: regexResult.groups.compatibility,\n },\n 'versionCompatibility: matches',\n );\n release.versionOrig ??= release.version;\n release.version = regexResult.groups.version;\n return release;\n });\n\n return releaseResult;\n}\n\nexport function applyExtractVersion(\n releaseResult: ReleaseResult,\n extractVersion: string | undefined,\n): ReleaseResult {\n if (!extractVersion) {\n return releaseResult;\n }\n\n const extractVersionRegEx = regEx(extractVersion);\n releaseResult.releases = filterMap(releaseResult.releases, (release) => {\n const version = extractVersionRegEx.exec(release.version)?.groups?.version;\n if (!version) {\n return null;\n }\n\n release.versionOrig = release.version;\n release.version = version;\n return release;\n });\n\n return releaseResult;\n}\n\nexport function filterValidVersions<\n Config extends Pick<GetPkgReleasesConfig, 'versioning' | 'datasource'>,\n>(releaseResult: ReleaseResult, config: Config): ReleaseResult {\n const versioningName =\n config.versioning ?? getDefaultVersioning(config.datasource);\n const versioning = allVersioning.get(versioningName);\n\n releaseResult.releases = filterMap(releaseResult.releases, (release) =>\n versioning.isVersion(release.version) ? release : null,\n );\n\n return releaseResult;\n}\n\nexport function sortAndRemoveDuplicates<\n Config extends Pick<GetPkgReleasesConfig, 'versioning' | 'datasource'>,\n>(releaseResult: ReleaseResult, config: Config): ReleaseResult {\n const versioningName =\n config.versioning ?? getDefaultVersioning(config.datasource);\n const versioning = allVersioning.get(versioningName);\n\n releaseResult.releases = releaseResult.releases.sort((a, b) =>\n versioning.sortVersions(a.version, b.version),\n );\n\n // Once releases are sorted, deduplication is straightforward and efficient\n let previousVersion: string | null = null;\n releaseResult.releases = filterMap(releaseResult.releases, (release) => {\n if (previousVersion === release.version) {\n return null;\n }\n previousVersion = release.version;\n return release;\n });\n\n return releaseResult;\n}\n\nexport function applyConstraintsFiltering<\n Config extends Pick<\n GetPkgReleasesConfig,\n | 'constraintsFiltering'\n | 'constraintsVersioning'\n | 'versioning'\n | 'datasource'\n | 'constraints'\n | 'packageName'\n >,\n>(releaseResult: ReleaseResult, config: Config): ReleaseResult {\n if (config?.constraintsFiltering !== 'strict') {\n for (const release of releaseResult.releases) {\n delete release.constraints;\n }\n\n return releaseResult;\n }\n\n const versioningName =\n config.versioning ?? getDefaultVersioning(config.datasource);\n\n const configConstraints = config.constraints;\n const filteredReleases: string[] = [];\n const startingLength = releaseResult.releases.length;\n releaseResult.releases = filterMap(releaseResult.releases, (release) => {\n logger.trace(\n {\n release,\n versioning: versioningName,\n },\n `applyConstraintsFiltering(${release.version})`,\n );\n const releaseConstraints = release.constraints;\n delete release.constraints;\n\n logger.trace(\n {\n release,\n versioning: versioningName,\n configConstraints: configConstraints ?? 'undefined',\n releaseConstraints: releaseConstraints ?? 'undefined',\n },\n `applyConstraintsFiltering(${release.version}): checking constraints`,\n );\n if (!configConstraints || !releaseConstraints) {\n return release;\n }\n\n for (const [name, configConstraint] of Object.entries(\n configConstraints,\n ) as [ConstraintName, string][]) {\n let constraintVersioningName = versioningName;\n if (\n isAdditionalConstraintName(name) &&\n config.constraintsVersioning?.[name]\n ) {\n const val = config.constraintsVersioning[name];\n logger.once.debug(\n { packageName: config.packageName, release },\n `applyConstraintsFiltering(${config.packageName}, ${name}): overriding constraintsVersioning from ${constraintVersioningName} to ${val}`,\n );\n logger.trace(\n { packageName: config.packageName, release },\n `applyConstraintsFiltering(${release.version}): overriding constraintsVersioning from ${constraintVersioningName} to ${val}`,\n );\n constraintVersioningName = val;\n }\n const constraintVersioning = allVersioning.get(constraintVersioningName);\n\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n constraintName: name,\n constraint: configConstraint,\n },\n `applyConstraintsFiltering(${release.version}) for constraint ${name}`,\n );\n\n const isValid = constraintVersioning.isValid(configConstraint);\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n },\n `applyConstraintsFiltering(${release.version}): versioning.isValid(${configConstraint})=${isValid}`,\n );\n if (!isValid) {\n logger.once.warn(\n {\n packageName: config.packageName,\n constraint: configConstraint,\n versioning: constraintVersioningName,\n },\n 'Invalid constraint used with strict constraintsFiltering',\n );\n continue;\n }\n\n const constraint = releaseConstraints[name];\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n },\n `applyConstraintsFiltering(${release.version}): releaseConstraints[${name}]=${JSON.stringify(constraint)}`,\n );\n if (!isNonEmptyArray(constraint)) {\n // A release with no constraints is OK\n continue;\n }\n\n let satisfiesConstraints = false;\n for (const releaseConstraint of constraint) {\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): releaseConstraint=${releaseConstraint}`,\n );\n if (!releaseConstraint) {\n satisfiesConstraints = true;\n logger.once.debug(\n {\n packageName: config.packageName,\n versioning: constraintVersioningName,\n constraint: releaseConstraint,\n },\n 'Undefined release constraint',\n );\n break;\n }\n\n const isValidConstraintVersion =\n constraintVersioning.isValid(releaseConstraint);\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): constraintVersioning.isValid(${releaseConstraint})=${isValidConstraintVersion}`,\n );\n if (!isValidConstraintVersion) {\n logger.once.debug(\n {\n packageName: config.packageName,\n versioning: constraintVersioningName,\n constraint: releaseConstraint,\n },\n 'Invalid release constraint',\n );\n break;\n }\n\n const isEqual = configConstraint === releaseConstraint;\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n configConstraint,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): ${configConstraint} === ${releaseConstraint}=${isEqual}`,\n );\n if (isEqual) {\n satisfiesConstraints = true;\n break;\n }\n\n const isSubset = constraintVersioning.subset?.(\n configConstraint,\n releaseConstraint,\n );\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n configConstraint,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): versioning.subset?.(${configConstraint}, ${releaseConstraint})=${isSubset}`,\n );\n if (isSubset) {\n satisfiesConstraints = true;\n break;\n }\n\n const doesMatchConfig = constraintVersioning.matches(\n configConstraint,\n releaseConstraint,\n );\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n configConstraint,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): versioning.matches(${configConstraint}, ${releaseConstraint})=${doesMatchConfig}`,\n );\n const doesMatchRelease = constraintVersioning.matches(\n releaseConstraint,\n configConstraint,\n );\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n configConstraint,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): versioning.matches(${releaseConstraint}, ${configConstraint})=${doesMatchRelease}`,\n );\n if (doesMatchConfig || doesMatchRelease) {\n satisfiesConstraints = true;\n break;\n }\n }\n\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n },\n `applyConstraintsFiltering(${release.version}): satisfiesConstraints=${satisfiesConstraints}`,\n );\n if (!satisfiesConstraints) {\n filteredReleases.push(release.version);\n return null;\n }\n }\n\n return release;\n });\n\n if (filteredReleases.length) {\n const count = filteredReleases.length;\n const packageName = config.packageName;\n const releases = filteredReleases.join(', ');\n logger.debug(\n {\n datasource: config.datasource,\n packageName: config.packageName,\n },\n `Filtered out ${count} non-matching releases out of ${startingLength} total for ${packageName} due to constraintsFiltering=strict: ${releases}`,\n );\n }\n\n return releaseResult;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.js","names":["datasources","allVersioning.get"],"sources":["../../../lib/modules/datasource/common.ts"],"sourcesContent":["import {\n isNonEmptyArray,\n isNonEmptyStringAndNotWhitespace,\n} from '@sindresorhus/is';\nimport { logger } from '../../logger/index.ts';\nimport {\n type ConstraintName,\n isAdditionalConstraintName,\n} from '../../util/exec/types.ts';\nimport { filterMap } from '../../util/filter-map.ts';\nimport { regEx } from '../../util/regex.ts';\nimport * as allVersioning from '../versioning/index.ts';\nimport { defaultVersioning } from '../versioning/index.ts';\nimport datasources from './api.ts';\nimport { CustomDatasource } from './custom/index.ts';\nimport type {\n DatasourceApi,\n GetPkgReleasesConfig,\n ReleaseResult,\n} from './types.ts';\n\nexport function getDatasourceFor(datasource: string): DatasourceApi | null {\n if (datasource?.startsWith('custom.')) {\n return getDatasourceFor(CustomDatasource.id);\n }\n return datasources.get(datasource) ?? null;\n}\n\n/**\n * The host types of the datasources whose requests use another host type than their id.\n */\nconst datasourceHostTypes: Record<string, string> = {\n 'sbt-package': 'sbt',\n 'sbt-plugin': 'sbt',\n};\n\n/**\n * Returns the host type the requests of `datasource` use, such as `custom` for `custom.<name>`, or `null` when there is no such datasource.\n */\nexport function getDatasourceHostType(datasource: string): string | null {\n const id = getDatasourceFor(datasource)?.id;\n if (!id) {\n return null;\n }\n return datasourceHostTypes[id] ?? id;\n}\n\nexport function getDefaultVersioning(\n datasourceName: string | undefined,\n): string {\n if (!datasourceName) {\n return defaultVersioning.id;\n }\n\n const datasource = getDatasourceFor(datasourceName);\n\n if (!datasource) {\n logger.warn({ datasourceName }, 'Missing datasource!');\n return defaultVersioning.id;\n }\n\n if (!datasource.defaultVersioning) {\n return defaultVersioning.id;\n }\n\n return datasource.defaultVersioning;\n}\n\nexport function isGetPkgReleasesConfig(\n input: unknown,\n): input is GetPkgReleasesConfig {\n return (\n isNonEmptyStringAndNotWhitespace(\n (input as GetPkgReleasesConfig).datasource,\n ) &&\n isNonEmptyStringAndNotWhitespace(\n (input as GetPkgReleasesConfig).packageName,\n )\n );\n}\n\nexport function applyVersionCompatibility(\n releaseResult: ReleaseResult,\n versionCompatibility: string | undefined,\n currentCompatibility: string | undefined,\n): ReleaseResult {\n if (!versionCompatibility) {\n return releaseResult;\n }\n\n const versionCompatibilityRegEx = regEx(versionCompatibility);\n releaseResult.releases = filterMap(releaseResult.releases, (release) => {\n const regexResult = versionCompatibilityRegEx.exec(release.version);\n if (!regexResult?.groups?.version) {\n logger.trace(\n { releaseVersion: release.version, versionCompatibility },\n 'versionCompatibility: Does not match regex',\n );\n return null;\n }\n if (regexResult?.groups?.compatibility !== currentCompatibility) {\n logger.trace(\n { releaseVersion: release.version, versionCompatibility },\n 'versionCompatibility: Does not match compatibility',\n );\n return null;\n }\n logger.trace(\n {\n releaseVersion: release.version,\n versionCompatibility,\n version: regexResult.groups.version,\n compatibility: regexResult.groups.compatibility,\n },\n 'versionCompatibility: matches',\n );\n release.versionOrig ??= release.version;\n release.version = regexResult.groups.version;\n return release;\n });\n\n return releaseResult;\n}\n\n/**\n * Extracts a version string from regex named capture groups.\n *\n * Supports two modes:\n * 1. A `version` group: returned as-is.\n * 2. SemVer-part groups (`major`, `minor`, `patch`, `prerelease`, `build`):\n * assembled into `MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]`.\n */\nexport function extractVersionFromGroups(\n groups: Record<string, string> | undefined,\n): string | undefined {\n if (!groups) {\n return undefined;\n }\n\n if (groups.version) {\n return groups.version;\n }\n\n if (!groups.major) {\n return undefined;\n }\n\n let version = `${groups.major}.${groups.minor ?? '0'}.${groups.patch ?? '0'}`;\n if (groups.prerelease) {\n version += `-${groups.prerelease}`;\n }\n if (groups.build) {\n version += `+${groups.build}`;\n }\n return version;\n}\n\nexport function applyExtractVersion(\n releaseResult: ReleaseResult,\n extractVersion: string | undefined,\n): ReleaseResult {\n if (!extractVersion) {\n return releaseResult;\n }\n\n const extractVersionRegEx = regEx(extractVersion);\n releaseResult.releases = filterMap(releaseResult.releases, (release) => {\n const groups = extractVersionRegEx.exec(release.version)?.groups;\n const version = extractVersionFromGroups(groups);\n if (!version) {\n return null;\n }\n\n release.versionOrig = release.version;\n release.version = version;\n return release;\n });\n\n return releaseResult;\n}\n\nexport function filterValidVersions<\n Config extends Pick<GetPkgReleasesConfig, 'versioning' | 'datasource'>,\n>(releaseResult: ReleaseResult, config: Config): ReleaseResult {\n const versioningName =\n config.versioning ?? getDefaultVersioning(config.datasource);\n const versioning = allVersioning.get(versioningName);\n\n releaseResult.releases = filterMap(releaseResult.releases, (release) =>\n versioning.isVersion(release.version) ? release : null,\n );\n\n return releaseResult;\n}\n\nexport function sortAndRemoveDuplicates<\n Config extends Pick<GetPkgReleasesConfig, 'versioning' | 'datasource'>,\n>(releaseResult: ReleaseResult, config: Config): ReleaseResult {\n const versioningName =\n config.versioning ?? getDefaultVersioning(config.datasource);\n const versioning = allVersioning.get(versioningName);\n\n releaseResult.releases = releaseResult.releases.sort((a, b) =>\n versioning.sortVersions(a.version, b.version),\n );\n\n // Once releases are sorted, deduplication is straightforward and efficient\n let previousVersion: string | null = null;\n releaseResult.releases = filterMap(releaseResult.releases, (release) => {\n if (previousVersion === release.version) {\n return null;\n }\n previousVersion = release.version;\n return release;\n });\n\n return releaseResult;\n}\n\nexport function applyConstraintsFiltering<\n Config extends Pick<\n GetPkgReleasesConfig,\n | 'constraintsFiltering'\n | 'constraintsVersioning'\n | 'versioning'\n | 'datasource'\n | 'constraints'\n | 'packageName'\n >,\n>(releaseResult: ReleaseResult, config: Config): ReleaseResult {\n if (config?.constraintsFiltering !== 'strict') {\n for (const release of releaseResult.releases) {\n delete release.constraints;\n }\n\n return releaseResult;\n }\n\n const versioningName =\n config.versioning ?? getDefaultVersioning(config.datasource);\n\n const configConstraints = config.constraints;\n const filteredReleases: string[] = [];\n const startingLength = releaseResult.releases.length;\n releaseResult.releases = filterMap(releaseResult.releases, (release) => {\n logger.trace(\n {\n release,\n versioning: versioningName,\n },\n `applyConstraintsFiltering(${release.version})`,\n );\n const releaseConstraints = release.constraints;\n delete release.constraints;\n\n logger.trace(\n {\n release,\n versioning: versioningName,\n configConstraints: configConstraints ?? 'undefined',\n releaseConstraints: releaseConstraints ?? 'undefined',\n },\n `applyConstraintsFiltering(${release.version}): checking constraints`,\n );\n if (!configConstraints || !releaseConstraints) {\n return release;\n }\n\n for (const [name, configConstraint] of Object.entries(\n configConstraints,\n ) as [ConstraintName, string][]) {\n let constraintVersioningName = versioningName;\n if (\n isAdditionalConstraintName(name) &&\n config.constraintsVersioning?.[name]\n ) {\n const val = config.constraintsVersioning[name];\n logger.once.debug(\n { packageName: config.packageName, release },\n `applyConstraintsFiltering(${config.packageName}, ${name}): overriding constraintsVersioning from ${constraintVersioningName} to ${val}`,\n );\n logger.trace(\n { packageName: config.packageName, release },\n `applyConstraintsFiltering(${release.version}): overriding constraintsVersioning from ${constraintVersioningName} to ${val}`,\n );\n constraintVersioningName = val;\n }\n const constraintVersioning = allVersioning.get(constraintVersioningName);\n\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n constraintName: name,\n constraint: configConstraint,\n },\n `applyConstraintsFiltering(${release.version}) for constraint ${name}`,\n );\n\n const isValid = constraintVersioning.isValid(configConstraint);\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n },\n `applyConstraintsFiltering(${release.version}): versioning.isValid(${configConstraint})=${isValid}`,\n );\n if (!isValid) {\n logger.once.warn(\n {\n packageName: config.packageName,\n constraint: configConstraint,\n versioning: constraintVersioningName,\n },\n 'Invalid constraint used with strict constraintsFiltering',\n );\n continue;\n }\n\n const constraint = releaseConstraints[name];\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n },\n `applyConstraintsFiltering(${release.version}): releaseConstraints[${name}]=${JSON.stringify(constraint)}`,\n );\n if (!isNonEmptyArray(constraint)) {\n // A release with no constraints is OK\n continue;\n }\n\n let satisfiesConstraints = false;\n for (const releaseConstraint of constraint) {\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): releaseConstraint=${releaseConstraint}`,\n );\n if (!releaseConstraint) {\n satisfiesConstraints = true;\n logger.once.debug(\n {\n packageName: config.packageName,\n versioning: constraintVersioningName,\n constraint: releaseConstraint,\n },\n 'Undefined release constraint',\n );\n break;\n }\n\n const isValidConstraintVersion =\n constraintVersioning.isValid(releaseConstraint);\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): constraintVersioning.isValid(${releaseConstraint})=${isValidConstraintVersion}`,\n );\n if (!isValidConstraintVersion) {\n logger.once.debug(\n {\n packageName: config.packageName,\n versioning: constraintVersioningName,\n constraint: releaseConstraint,\n },\n 'Invalid release constraint',\n );\n break;\n }\n\n const isEqual = configConstraint === releaseConstraint;\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n configConstraint,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): ${configConstraint} === ${releaseConstraint}=${isEqual}`,\n );\n if (isEqual) {\n satisfiesConstraints = true;\n break;\n }\n\n const isSubset = constraintVersioning.subset?.(\n configConstraint,\n releaseConstraint,\n );\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n configConstraint,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): versioning.subset?.(${configConstraint}, ${releaseConstraint})=${isSubset}`,\n );\n if (isSubset) {\n satisfiesConstraints = true;\n break;\n }\n\n const doesMatchConfig = constraintVersioning.matches(\n configConstraint,\n releaseConstraint,\n );\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n configConstraint,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): versioning.matches(${configConstraint}, ${releaseConstraint})=${doesMatchConfig}`,\n );\n const doesMatchRelease = constraintVersioning.matches(\n releaseConstraint,\n configConstraint,\n );\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n configConstraint,\n releaseConstraint,\n },\n `applyConstraintsFiltering(${release.version}): versioning.matches(${releaseConstraint}, ${configConstraint})=${doesMatchRelease}`,\n );\n if (doesMatchConfig || doesMatchRelease) {\n satisfiesConstraints = true;\n break;\n }\n }\n\n logger.trace(\n {\n release,\n versioning: constraintVersioningName,\n },\n `applyConstraintsFiltering(${release.version}): satisfiesConstraints=${satisfiesConstraints}`,\n );\n if (!satisfiesConstraints) {\n filteredReleases.push(release.version);\n return null;\n }\n }\n\n return release;\n });\n\n if (filteredReleases.length) {\n const count = filteredReleases.length;\n const packageName = config.packageName;\n const releases = filteredReleases.join(', ');\n logger.debug(\n {\n datasource: config.datasource,\n packageName: config.packageName,\n },\n `Filtered out ${count} non-matching releases out of ${startingLength} total for ${packageName} due to constraintsFiltering=strict: ${releases}`,\n );\n }\n\n return releaseResult;\n}\n"],"mappings":"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"}
|
|
@@ -3,8 +3,12 @@ import { coerceArray } from "../../../util/array.js";
|
|
|
3
3
|
import { logger } from "../../../logger/index.js";
|
|
4
4
|
import { detectPlatform } from "../../../util/common.js";
|
|
5
5
|
import { parseSingleYaml } from "../../../util/yaml.js";
|
|
6
|
+
import { id } from "../../versioning/exact/index.js";
|
|
7
|
+
import { api } from "../../versioning/semver-coerced/index.js";
|
|
6
8
|
import { isLongCommitSha } from "../../../util/schema-utils/git.js";
|
|
9
|
+
import { GitRefsDatasource } from "../../datasource/git-refs/index.js";
|
|
7
10
|
import { GitTagsDatasource } from "../../datasource/git-tags/index.js";
|
|
11
|
+
import { GithubDigestDatasource } from "../../datasource/github-digest/index.js";
|
|
8
12
|
import { GithubTagsDatasource } from "../../datasource/github-tags/index.js";
|
|
9
13
|
import { GitlabTagsDatasource } from "../../datasource/gitlab-tags/index.js";
|
|
10
14
|
import { ApmManifest } from "./schema.js";
|
|
@@ -33,6 +37,26 @@ function determineDatasource(host, platform, repoPath) {
|
|
|
33
37
|
packageName: `https://${host}/${repoPath}`
|
|
34
38
|
};
|
|
35
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Determine the datasource for a ref that the default versioning can't read as
|
|
42
|
+
* a version, such as a branch. It has no tag to look up, so Renovate follows
|
|
43
|
+
* the ref's commit instead, as github-actions does for `uses: owner/action@main`:
|
|
44
|
+
* with `github-digest` on GitHub hosts, and `git-refs` on every other host, both
|
|
45
|
+
* with `exact` versioning so the branch name itself counts as a valid value.
|
|
46
|
+
*/
|
|
47
|
+
function determineRefDatasource(host, platform, repoPath) {
|
|
48
|
+
if (platform === "github") return {
|
|
49
|
+
datasource: GithubDigestDatasource.id,
|
|
50
|
+
packageName: repoPath,
|
|
51
|
+
versioning: id,
|
|
52
|
+
...host === "github.com" ? {} : { registryUrls: [`https://${host}`] }
|
|
53
|
+
};
|
|
54
|
+
return {
|
|
55
|
+
datasource: GitRefsDatasource.id,
|
|
56
|
+
packageName: `https://${host}/${repoPath}`,
|
|
57
|
+
versioning: id
|
|
58
|
+
};
|
|
59
|
+
}
|
|
36
60
|
/** A trailing ` # <tag>` comment on a manifest line. */
|
|
37
61
|
const commentTagRegex = regEx(/^\s+#\s*(?<tag>\S.*?)\s*$/);
|
|
38
62
|
/**
|
|
@@ -146,32 +170,35 @@ function parseApmDependency(entry, depType, findPinnedTail) {
|
|
|
146
170
|
skipReason: "invalid-dependency-specification"
|
|
147
171
|
};
|
|
148
172
|
}
|
|
149
|
-
|
|
150
|
-
const dep = {
|
|
151
|
-
...base,
|
|
152
|
-
datasource,
|
|
153
|
-
packageName,
|
|
154
|
-
...registryUrls ? { registryUrls } : {},
|
|
155
|
-
autoReplaceStringTemplate
|
|
156
|
-
};
|
|
173
|
+
let tail;
|
|
157
174
|
if (isLongCommitSha(ref)) {
|
|
158
|
-
|
|
175
|
+
tail = findPinnedTail(entry);
|
|
159
176
|
if (!tail) return {
|
|
160
177
|
...base,
|
|
161
178
|
currentDigest: ref,
|
|
162
179
|
skipReason: "unversioned-reference"
|
|
163
180
|
};
|
|
164
|
-
return {
|
|
165
|
-
...dep,
|
|
166
|
-
currentValue: tail.currentValue,
|
|
167
|
-
currentDigest: ref,
|
|
168
|
-
replaceString: tail.replaceString,
|
|
169
|
-
...packageTagConfig(tail.currentValue)
|
|
170
|
-
};
|
|
171
181
|
}
|
|
182
|
+
const currentValue = tail?.currentValue ?? ref;
|
|
183
|
+
const { datasource, packageName, registryUrls, versioning } = api.isValid(currentValue) ? determineDatasource(host, platform, repoPath) : determineRefDatasource(host, platform, repoPath);
|
|
184
|
+
const dep = {
|
|
185
|
+
...base,
|
|
186
|
+
datasource,
|
|
187
|
+
packageName,
|
|
188
|
+
...registryUrls ? { registryUrls } : {},
|
|
189
|
+
...versioning ? { versioning } : {},
|
|
190
|
+
autoReplaceStringTemplate
|
|
191
|
+
};
|
|
192
|
+
if (tail) return {
|
|
193
|
+
...dep,
|
|
194
|
+
currentValue,
|
|
195
|
+
currentDigest: ref,
|
|
196
|
+
replaceString: tail.replaceString,
|
|
197
|
+
...packageTagConfig(tail.currentValue)
|
|
198
|
+
};
|
|
172
199
|
return {
|
|
173
200
|
...dep,
|
|
174
|
-
currentValue
|
|
201
|
+
currentValue,
|
|
175
202
|
replaceString: entry,
|
|
176
203
|
...packageTagConfig(ref)
|
|
177
204
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/apm/extract.ts"],"sourcesContent":["import { isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { detectPlatform } from '../../../util/common.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { isLongCommitSha } from '../../../util/schema-utils/git.ts';\nimport { parseSingleYaml } from '../../../util/yaml.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport { ApmManifest } from './schema.ts';\n\ninterface DatasourceResult {\n datasource: string;\n packageName: string;\n registryUrls?: string[];\n}\n\n/**\n * Determine which Renovate datasource to use for an APM dependency, based on\n * the git host `platform` (already resolved via `detectPlatform`, which honors\n * `hostRules`). github/gitlab (and their self-hosted variants) map to the\n * `github-tags` / `gitlab-tags` datasources; every other host (Bitbucket, Azure\n * DevOps, etc.) falls back to the generic `git-tags` datasource.\n */\nfunction determineDatasource(\n host: string,\n platform: string | null,\n repoPath: string,\n): DatasourceResult {\n if (platform === 'github') {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: repoPath,\n ...(host === 'github.com' ? {} : { registryUrls: [`https://${host}`] }),\n };\n }\n\n if (platform === 'gitlab') {\n return {\n datasource: GitlabTagsDatasource.id,\n packageName: repoPath,\n ...(host === 'gitlab.com' ? {} : { registryUrls: [`https://${host}`] }),\n };\n }\n\n return {\n datasource: GitTagsDatasource.id,\n packageName: `https://${host}/${repoPath}`,\n };\n}\n\n/** A trailing ` # <tag>` comment on a manifest line. */\nconst commentTagRegex = regEx(/^\\s+#\\s*(?<tag>\\S.*?)\\s*$/);\n\n/**\n * Renders both `owner/repo#<tag>` and the digest-pinned\n * `owner/repo#<sha> # <tag>` form, mirroring the github-actions\n * `uses: owner/action@<sha> # v4` behaviour so `pinDigests` can pin a bare tag\n * to a SHA and keep the trailing tag comment current.\n */\nconst autoReplaceStringTemplate =\n '{{depName}}#{{#if newDigest}}{{newDigest}} # {{newValue}}{{else}}{{newValue}}{{/if}}';\n\n/**\n * Match `<name>--v<version>`, `<name>-v<version>`, and `<name>_v<version>` tags.\n */\nconst packageTagRegex = regEx(\n /^(?<compatibility>.+?[-_])v(?<version>\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$/,\n);\n\nfunction packageTagConfig(\n currentValue: string,\n): Pick<PackageDependency, 'versionCompatibility'> {\n return packageTagRegex.test(currentValue)\n ? { versionCompatibility: packageTagRegex.source }\n : {};\n}\n\n/**\n * APM virtual-package subpaths (skills/prompts/etc.) begin at one of these\n * \"primitive\" directories or at a file with a virtual extension. APM only uses\n * these to find where a repo path ends for hosts with nested namespaces; see\n * `_GITLAB_VIRTUAL_ROOT_SEGMENTS` / `VIRTUAL_FILE_EXTENSIONS` in apm.\n */\nconst virtualRootSegments = new Set(['prompts', 'instructions', 'collections']);\nconst virtualFileRegex = regEx(/\\.(?:prompt|instructions|chatmode|agent)\\.md$/);\n\n/**\n * Resolve the repository path from the host-stripped path segments.\n *\n * GitHub repos are always `owner/repo`. GitLab (and other hosts) allow nested\n * groups, so the project slug can span 3+ segments; the virtual-package subpath,\n * if any, begins at a primitive directory or virtual file (index >= 2). Returns\n * `null` when there is no `owner/repo` (fewer than two segments).\n */\nfunction resolveRepoPath(\n platform: string | null,\n segments: string[],\n): string | null {\n if (segments.length < 2) {\n return null;\n }\n if (platform === 'github') {\n return segments.slice(0, 2).join('/');\n }\n let boundary = segments.length;\n for (let i = 2; i < segments.length; i++) {\n if (\n virtualRootSegments.has(segments[i]) ||\n virtualFileRegex.test(segments[i])\n ) {\n boundary = i;\n break;\n }\n }\n return segments.slice(0, boundary).join('/');\n}\n\ninterface PinnedTail {\n replaceString: string;\n currentValue: string;\n}\n\n/**\n * APM keeps the release tag for a SHA-pinned dependency in a trailing YAML\n * comment (`owner/repo#<sha> # v2.0.0`), which the structured parse strips.\n *\n * Returns a matcher that scans the raw manifest for the (unquoted) entry to\n * recover the tag as `currentValue` and the exact text to replace, so\n * `pinDigests` can update both the SHA and the tag. Each line is consumed at\n * most once (in file order), so the same `owner/repo#<sha>` pinned in more than\n * one section maps to distinct lines rather than all resolving to the first\n * match. Yields `undefined` for a bare SHA (no tag comment) or a form we can't\n * recover verbatim (e.g. quoted), which the caller then skips.\n */\nfunction createPinnedTailFinder(\n content: string,\n): (value: string) => PinnedTail | undefined {\n const lines = content.split(newlineRegex);\n const consumed = new Set<number>();\n return (value) => {\n for (let i = 0; i < lines.length; i++) {\n if (consumed.has(i)) {\n continue;\n }\n const item = lines[i].trimStart();\n if (!item.startsWith('-')) {\n continue;\n }\n const afterDash = item.slice(1).trimStart();\n if (!afterDash.startsWith(value)) {\n continue;\n }\n consumed.add(i);\n const tail = commentTagRegex.exec(afterDash.slice(value.length));\n if (!tail?.groups?.tag) {\n return undefined;\n }\n return {\n replaceString: afterDash.trimEnd(),\n currentValue: tail.groups.tag,\n };\n }\n return undefined;\n };\n}\n\n/**\n * Parse a single APM dependency string of the form\n * `[host/]owner/repo[/subpath...][#<ref>]`, where `<ref>` is a semver tag/range,\n * a branch, or a commit SHA.\n *\n * For a SHA-pinned entry the release tag lives in a trailing YAML comment; when\n * present it is recovered from `content` so the entry updates as a digest\n * (`currentDigest` + `currentValue`). A bare SHA with no tag comment has no\n * version to track and is skipped.\n */\nexport function parseApmDependency(\n entry: string,\n depType: string,\n findPinnedTail: (value: string) => PinnedTail | undefined,\n): PackageDependency {\n const hashIndex = entry.indexOf('#');\n const pathPart = hashIndex === -1 ? entry : entry.slice(0, hashIndex);\n const ref = hashIndex === -1 ? '' : entry.slice(hashIndex + 1).trim();\n\n const base: PackageDependency = {\n depName: pathPart,\n depType,\n };\n\n if (!ref) {\n // Unpinned dependency (no `#ref`) - nothing for Renovate to update.\n return { ...base, skipReason: 'unspecified-version' };\n }\n\n // The optional host prefix is a hostname (so it contains a dot); git host\n // owner names never do, which disambiguates the leading segment.\n const segments = pathPart.split('/').filter(isTruthy);\n const hasHost = (segments[0] ?? '').includes('.');\n const host = hasHost ? segments[0] : 'github.com';\n const platform = detectPlatform(`https://${host}`);\n const repoPath = resolveRepoPath(\n platform,\n hasHost ? segments.slice(1) : segments,\n );\n\n if (!repoPath) {\n logger.debug({ entry }, 'apm: could not determine owner/repo');\n return {\n ...base,\n currentValue: ref,\n skipReason: 'invalid-dependency-specification',\n };\n }\n\n const { datasource, packageName, registryUrls } = determineDatasource(\n host,\n platform,\n repoPath,\n );\n const dep: PackageDependency = {\n ...base,\n datasource,\n packageName,\n ...(registryUrls ? { registryUrls } : {}),\n autoReplaceStringTemplate,\n };\n\n if (isLongCommitSha(ref)) {\n const tail = findPinnedTail(entry);\n if (!tail) {\n // Bare SHA with no recoverable tag comment - no version to track.\n return {\n ...base,\n currentDigest: ref,\n skipReason: 'unversioned-reference',\n };\n }\n return {\n ...dep,\n currentValue: tail.currentValue,\n currentDigest: ref,\n replaceString: tail.replaceString,\n ...packageTagConfig(tail.currentValue),\n };\n }\n\n return {\n ...dep,\n currentValue: ref,\n replaceString: entry,\n ...packageTagConfig(ref),\n };\n}\n\nfunction extractSection(\n entries: string[] | undefined,\n depType: string,\n findPinnedTail: (value: string) => PinnedTail | undefined,\n): PackageDependency[] {\n return coerceArray(entries).map((entry) =>\n parseApmDependency(entry, depType, findPinnedTail),\n );\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): PackageFileContent | null {\n let manifest: ApmManifest;\n try {\n manifest = parseSingleYaml(content, { customSchema: ApmManifest });\n } catch (err) {\n logger.debug({ packageFile, err }, 'apm: failed to parse manifest');\n return null;\n }\n\n const findPinnedTail = createPinnedTailFinder(content);\n const deps = [\n ...extractSection(manifest.dependencies?.apm, 'apm', findPinnedTail),\n ...extractSection(manifest.devDependencies?.apm, 'apm-dev', findPinnedTail),\n ];\n\n if (!deps.length) {\n return null;\n }\n\n return { deps };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","names":["exactVersioning.id"],"sources":["../../../../lib/modules/manager/apm/extract.ts"],"sourcesContent":["import { isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { detectPlatform } from '../../../util/common.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { isLongCommitSha } from '../../../util/schema-utils/git.ts';\nimport { parseSingleYaml } from '../../../util/yaml.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubDigestDatasource } from '../../datasource/github-digest/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport * as exactVersioning from '../../versioning/exact/index.ts';\nimport * as semverCoerced from '../../versioning/semver-coerced/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport { ApmManifest } from './schema.ts';\n\ninterface DatasourceResult {\n datasource: string;\n packageName: string;\n registryUrls?: string[];\n versioning?: string;\n}\n\n/**\n * Determine which Renovate datasource to use for an APM dependency, based on\n * the git host `platform` (already resolved via `detectPlatform`, which honors\n * `hostRules`). github/gitlab (and their self-hosted variants) map to the\n * `github-tags` / `gitlab-tags` datasources; every other host (Bitbucket, Azure\n * DevOps, etc.) falls back to the generic `git-tags` datasource.\n */\nfunction determineDatasource(\n host: string,\n platform: string | null,\n repoPath: string,\n): DatasourceResult {\n if (platform === 'github') {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: repoPath,\n ...(host === 'github.com' ? {} : { registryUrls: [`https://${host}`] }),\n };\n }\n\n if (platform === 'gitlab') {\n return {\n datasource: GitlabTagsDatasource.id,\n packageName: repoPath,\n ...(host === 'gitlab.com' ? {} : { registryUrls: [`https://${host}`] }),\n };\n }\n\n return {\n datasource: GitTagsDatasource.id,\n packageName: `https://${host}/${repoPath}`,\n };\n}\n\n/**\n * Determine the datasource for a ref that the default versioning can't read as\n * a version, such as a branch. It has no tag to look up, so Renovate follows\n * the ref's commit instead, as github-actions does for `uses: owner/action@main`:\n * with `github-digest` on GitHub hosts, and `git-refs` on every other host, both\n * with `exact` versioning so the branch name itself counts as a valid value.\n */\nfunction determineRefDatasource(\n host: string,\n platform: string | null,\n repoPath: string,\n): DatasourceResult {\n if (platform === 'github') {\n return {\n datasource: GithubDigestDatasource.id,\n packageName: repoPath,\n versioning: exactVersioning.id,\n ...(host === 'github.com' ? {} : { registryUrls: [`https://${host}`] }),\n };\n }\n\n return {\n datasource: GitRefsDatasource.id,\n packageName: `https://${host}/${repoPath}`,\n versioning: exactVersioning.id,\n };\n}\n\n/** A trailing ` # <tag>` comment on a manifest line. */\nconst commentTagRegex = regEx(/^\\s+#\\s*(?<tag>\\S.*?)\\s*$/);\n\n/**\n * Renders both `owner/repo#<tag>` and the digest-pinned\n * `owner/repo#<sha> # <tag>` form, mirroring the github-actions\n * `uses: owner/action@<sha> # v4` behaviour so `pinDigests` can pin a bare tag\n * to a SHA and keep the trailing tag comment current.\n */\nconst autoReplaceStringTemplate =\n '{{depName}}#{{#if newDigest}}{{newDigest}} # {{newValue}}{{else}}{{newValue}}{{/if}}';\n\n/**\n * Match `<name>--v<version>`, `<name>-v<version>`, and `<name>_v<version>` tags.\n */\nconst packageTagRegex = regEx(\n /^(?<compatibility>.+?[-_])v(?<version>\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$/,\n);\n\nfunction packageTagConfig(\n currentValue: string,\n): Pick<PackageDependency, 'versionCompatibility'> {\n return packageTagRegex.test(currentValue)\n ? { versionCompatibility: packageTagRegex.source }\n : {};\n}\n\n/**\n * APM virtual-package subpaths (skills/prompts/etc.) begin at one of these\n * \"primitive\" directories or at a file with a virtual extension. APM only uses\n * these to find where a repo path ends for hosts with nested namespaces; see\n * `_GITLAB_VIRTUAL_ROOT_SEGMENTS` / `VIRTUAL_FILE_EXTENSIONS` in apm.\n */\nconst virtualRootSegments = new Set(['prompts', 'instructions', 'collections']);\nconst virtualFileRegex = regEx(/\\.(?:prompt|instructions|chatmode|agent)\\.md$/);\n\n/**\n * Resolve the repository path from the host-stripped path segments.\n *\n * GitHub repos are always `owner/repo`. GitLab (and other hosts) allow nested\n * groups, so the project slug can span 3+ segments; the virtual-package subpath,\n * if any, begins at a primitive directory or virtual file (index >= 2). Returns\n * `null` when there is no `owner/repo` (fewer than two segments).\n */\nfunction resolveRepoPath(\n platform: string | null,\n segments: string[],\n): string | null {\n if (segments.length < 2) {\n return null;\n }\n if (platform === 'github') {\n return segments.slice(0, 2).join('/');\n }\n let boundary = segments.length;\n for (let i = 2; i < segments.length; i++) {\n if (\n virtualRootSegments.has(segments[i]) ||\n virtualFileRegex.test(segments[i])\n ) {\n boundary = i;\n break;\n }\n }\n return segments.slice(0, boundary).join('/');\n}\n\ninterface PinnedTail {\n replaceString: string;\n currentValue: string;\n}\n\n/**\n * APM keeps the release tag for a SHA-pinned dependency in a trailing YAML\n * comment (`owner/repo#<sha> # v2.0.0`), which the structured parse strips.\n *\n * Returns a matcher that scans the raw manifest for the (unquoted) entry to\n * recover the tag as `currentValue` and the exact text to replace, so\n * `pinDigests` can update both the SHA and the tag. Each line is consumed at\n * most once (in file order), so the same `owner/repo#<sha>` pinned in more than\n * one section maps to distinct lines rather than all resolving to the first\n * match. Yields `undefined` for a bare SHA (no tag comment) or a form we can't\n * recover verbatim (e.g. quoted), which the caller then skips.\n */\nfunction createPinnedTailFinder(\n content: string,\n): (value: string) => PinnedTail | undefined {\n const lines = content.split(newlineRegex);\n const consumed = new Set<number>();\n return (value) => {\n for (let i = 0; i < lines.length; i++) {\n if (consumed.has(i)) {\n continue;\n }\n const item = lines[i].trimStart();\n if (!item.startsWith('-')) {\n continue;\n }\n const afterDash = item.slice(1).trimStart();\n if (!afterDash.startsWith(value)) {\n continue;\n }\n consumed.add(i);\n const tail = commentTagRegex.exec(afterDash.slice(value.length));\n if (!tail?.groups?.tag) {\n return undefined;\n }\n return {\n replaceString: afterDash.trimEnd(),\n currentValue: tail.groups.tag,\n };\n }\n return undefined;\n };\n}\n\n/**\n * Parse a single APM dependency string of the form\n * `[host/]owner/repo[/subpath...][#<ref>]`, where `<ref>` is a semver tag/range,\n * a branch, or a commit SHA.\n *\n * For a SHA-pinned entry the release tag lives in a trailing YAML comment; when\n * present it is recovered from `content` so the entry updates as a digest\n * (`currentDigest` + `currentValue`). A bare SHA with no tag comment has no\n * version to track and is skipped.\n */\nexport function parseApmDependency(\n entry: string,\n depType: string,\n findPinnedTail: (value: string) => PinnedTail | undefined,\n): PackageDependency {\n const hashIndex = entry.indexOf('#');\n const pathPart = hashIndex === -1 ? entry : entry.slice(0, hashIndex);\n const ref = hashIndex === -1 ? '' : entry.slice(hashIndex + 1).trim();\n\n const base: PackageDependency = {\n depName: pathPart,\n depType,\n };\n\n if (!ref) {\n // Unpinned dependency (no `#ref`) - nothing for Renovate to update.\n return { ...base, skipReason: 'unspecified-version' };\n }\n\n // The optional host prefix is a hostname (so it contains a dot); git host\n // owner names never do, which disambiguates the leading segment.\n const segments = pathPart.split('/').filter(isTruthy);\n const hasHost = (segments[0] ?? '').includes('.');\n const host = hasHost ? segments[0] : 'github.com';\n const platform = detectPlatform(`https://${host}`);\n const repoPath = resolveRepoPath(\n platform,\n hasHost ? segments.slice(1) : segments,\n );\n\n if (!repoPath) {\n logger.debug({ entry }, 'apm: could not determine owner/repo');\n return {\n ...base,\n currentValue: ref,\n skipReason: 'invalid-dependency-specification',\n };\n }\n\n let tail: PinnedTail | undefined;\n if (isLongCommitSha(ref)) {\n tail = findPinnedTail(entry);\n if (!tail) {\n // Bare SHA with no recoverable tag comment - no version to track.\n return {\n ...base,\n currentDigest: ref,\n skipReason: 'unversioned-reference',\n };\n }\n }\n const currentValue = tail?.currentValue ?? ref;\n\n // This checks Renovate's default versioning, not the dependency's effective\n // one, on purpose: extraction runs before packageRules are applied, so a\n // `versioning` set for this dependency isn't known yet.\n const { datasource, packageName, registryUrls, versioning } =\n semverCoerced.api.isValid(currentValue)\n ? determineDatasource(host, platform, repoPath)\n : determineRefDatasource(host, platform, repoPath);\n const dep: PackageDependency = {\n ...base,\n datasource,\n packageName,\n ...(registryUrls ? { registryUrls } : {}),\n ...(versioning ? { versioning } : {}),\n autoReplaceStringTemplate,\n };\n\n if (tail) {\n return {\n ...dep,\n currentValue,\n currentDigest: ref,\n replaceString: tail.replaceString,\n ...packageTagConfig(tail.currentValue),\n };\n }\n\n return {\n ...dep,\n currentValue,\n replaceString: entry,\n ...packageTagConfig(ref),\n };\n}\n\nfunction extractSection(\n entries: string[] | undefined,\n depType: string,\n findPinnedTail: (value: string) => PinnedTail | undefined,\n): PackageDependency[] {\n return coerceArray(entries).map((entry) =>\n parseApmDependency(entry, depType, findPinnedTail),\n );\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): PackageFileContent | null {\n let manifest: ApmManifest;\n try {\n manifest = parseSingleYaml(content, { customSchema: ApmManifest });\n } catch (err) {\n logger.debug({ packageFile, err }, 'apm: failed to parse manifest');\n return null;\n }\n\n const findPinnedTail = createPinnedTailFinder(content);\n const deps = [\n ...extractSection(manifest.dependencies?.apm, 'apm', findPinnedTail),\n ...extractSection(manifest.devDependencies?.apm, 'apm-dev', findPinnedTail),\n ];\n\n if (!deps.length) {\n return null;\n }\n\n return { deps };\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { GitRefsDatasource } from "../../datasource/git-refs/index.js";
|
|
2
3
|
import { GitTagsDatasource } from "../../datasource/git-tags/index.js";
|
|
4
|
+
import { GithubDigestDatasource } from "../../datasource/github-digest/index.js";
|
|
3
5
|
import { GithubTagsDatasource } from "../../datasource/github-tags/index.js";
|
|
4
6
|
import { GitlabTagsDatasource } from "../../datasource/gitlab-tags/index.js";
|
|
5
7
|
import { updateArtifacts } from "./artifacts.js";
|
|
@@ -22,7 +24,9 @@ const defaultConfig = { managerFilePatterns: ["/(^|/)apm\\.ya?ml$/"] };
|
|
|
22
24
|
const supportedDatasources = [
|
|
23
25
|
GithubTagsDatasource.id,
|
|
24
26
|
GitlabTagsDatasource.id,
|
|
25
|
-
GitTagsDatasource.id
|
|
27
|
+
GitTagsDatasource.id,
|
|
28
|
+
GithubDigestDatasource.id,
|
|
29
|
+
GitRefsDatasource.id
|
|
26
30
|
];
|
|
27
31
|
export { apm_exports, defaultConfig, extractPackageFile, lockFileNames, supportedDatasources, updateArtifacts, url };
|
|
28
32
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/manager/apm/index.ts"],"sourcesContent":["import { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\n\nexport { updateArtifacts } from './artifacts.ts';\nexport { extractPackageFile } from './extract.ts';\n\nexport const displayName = 'APM';\nexport const url = 'https://github.com/microsoft/apm';\n\nexport const supportsLockFileMaintenance = true;\n// `apm install` regenerates `apm.lock.yaml` (and the deployed harness files).\nexport const lockFileMaintenanceIsDelegatedToPackageManager = true;\nexport const lockFileNames = ['apm.lock.yaml'];\n\nexport const defaultConfig = {\n managerFilePatterns: ['/(^|/)apm\\\\.ya?ml$/'],\n};\n\nexport const supportedDatasources = [\n GithubTagsDatasource.id,\n GitlabTagsDatasource.id,\n GitTagsDatasource.id,\n];\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/manager/apm/index.ts"],"sourcesContent":["import { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubDigestDatasource } from '../../datasource/github-digest/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\n\nexport { updateArtifacts } from './artifacts.ts';\nexport { extractPackageFile } from './extract.ts';\n\nexport const displayName = 'APM';\nexport const url = 'https://github.com/microsoft/apm';\n\nexport const supportsLockFileMaintenance = true;\n// `apm install` regenerates `apm.lock.yaml` (and the deployed harness files).\nexport const lockFileMaintenanceIsDelegatedToPackageManager = true;\nexport const lockFileNames = ['apm.lock.yaml'];\n\nexport const defaultConfig = {\n managerFilePatterns: ['/(^|/)apm\\\\.ya?ml$/'],\n};\n\nexport const supportedDatasources = [\n GithubTagsDatasource.id,\n GitlabTagsDatasource.id,\n GitTagsDatasource.id,\n GithubDigestDatasource.id,\n GitRefsDatasource.id,\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAUA,MAAa,MAAM;AAKnB,MAAa,gBAAgB,CAAC,eAAe;AAE7C,MAAa,gBAAgB,EAC3B,qBAAqB,CAAC,qBAAqB,EAC7C;AAEA,MAAa,uBAAuB;CAClC,qBAAqB;CACrB,qBAAqB;CACrB,kBAAkB;CAClB,uBAAuB;CACvB,kBAAkB;AACpB"}
|
|
@@ -3,7 +3,7 @@ const hashMap = /* @__PURE__ */ new Map();
|
|
|
3
3
|
hashMap.set("ansible", "a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81");
|
|
4
4
|
hashMap.set("ansible-galaxy", "8e11293c8f61b4cbae77a3b1634a47213031c59df2c9833d89db65bf4e6edc64");
|
|
5
5
|
hashMap.set("ant", "2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17");
|
|
6
|
-
hashMap.set("apm", "
|
|
6
|
+
hashMap.set("apm", "b804a297488db65b99b6f3af966bf3f02ddb4a3ae6f4bfe418fb7023d895d261");
|
|
7
7
|
hashMap.set("argocd", "cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5");
|
|
8
8
|
hashMap.set("asdf", "430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb");
|
|
9
9
|
hashMap.set("azure-pipelines", "04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a");
|
|
@@ -73,7 +73,7 @@ hashMap.set("meteor", "4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8
|
|
|
73
73
|
hashMap.set("mint", "248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e");
|
|
74
74
|
hashMap.set("mise", "49077fd316618114cea787f4d165dee2abd9afb7c3b52e5213a70645c35dfb70");
|
|
75
75
|
hashMap.set("mix", "0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872");
|
|
76
|
-
hashMap.set("nix", "
|
|
76
|
+
hashMap.set("nix", "422242f1714be6972fc7006c37f4a497dbbd44ba9c3f68f7b73e7dd3d81fd74d");
|
|
77
77
|
hashMap.set("nodenv", "ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8");
|
|
78
78
|
hashMap.set("npm", "cd2b909d892ef3e41e51b5df5b1b0b7e34e795845b0640225e41621416c1ee7d");
|
|
79
79
|
hashMap.set("nuget", "fb02247c67a198ffe414a44d23c7894bd114dcc53803334f82e39479e7b27f6f");
|
|
@@ -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','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','8e11293c8f61b4cbae77a3b1634a47213031c59df2c9833d89db65bf4e6edc64');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','66c207983960b1a1f49b972f77efe3bfd3097e19b0ee4034ccf9ac6c0d13e05b');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4d4f1d9a6519ba552b316b396db13ff0654a2663d8ed976188899a2d57d306a2');\nhashMap.set('bazel-module','9fbba0339f9f7785d52ab85c5f0f6385003093c063483c13feccba13ae438bef');\nhashMap.set('bazelisk','770f75a746dc6ba90c518788d5987d7df4243ef9eee122d1bb0556a93d6e1b11');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','77a06471b8aec434457bcbde14a7473bc1c20a5fbe203ecc188bcc7a4fec1718');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','74ac02207de7b297d66dfed5b77c7fdeffcdcf2eac639798ba434d0571a90384');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','bbca094a652544845c147bd801b04ce4aae3719cb27acfb68b2ebac616940538');\nhashMap.set('conan','03cdeeffe4e688fb403766100cc1fc617dd388629f1c769ba54a966db3b23414');\nhashMap.set('copier','a0678cc1eec36301328780966eec215c6e18748ea80c98873c8e13291a684cfa');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','41e6a8b7b8bae08f07b3e4b69c8c095db5da984bb23c004cd1ebf755a6317794');\nhashMap.set('deps-edn','06783dbc8b9c7bb84e162d1f75b7db56dfa021cc6f809dfd2314cee8b64af08d');\nhashMap.set('devbox','a40050cc61bd9b5d500ec111abb17bb15d5f82ab5b7699f66f628307ba8382c9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','fba87b82cb0f2bfd66526631fbe928b8153e7ca701a5790d02b944df17417bb9');\nhashMap.set('dockerfile','b5faeb8f31d238e0d05a4aeebf9a837273687908ab8078b34e738bb0e369c80c');\nhashMap.set('droneci','661d2a2d7295af8dd7a1234c7090c42a89306bd574c3adf1fc67782efaad3998');\nhashMap.set('fleet','ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6427c97');\nhashMap.set('flux','f881de9cb1b09788f78a3de7c7bbfd8407f88a4af49a39b99f4f91634584249f');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','064fa55369f11feec61b699cb122df6ea81f8e0c09ea9f7dbb96796c87be6950');\nhashMap.set('github-actions','ab06f8778662cdb79f4593d2c57cbd80e713537d885bbcef88be1db27c7a4f2c');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','5e9b9f5f914afe5ed7b526c06c65111e3716d2dea9b0cbe7907bbc96db1064a3');\nhashMap.set('gomod','80d7fb1da9b45957a11bea7dbe359ef2c13131e5325cf977cab32e4224f3cd5f');\nhashMap.set('gradle','14ffeecba62452d47d3796e68753da745de2614b6e5ecc346da4f0067ed4bc6e');\nhashMap.set('gradle-wrapper','73ba30c34955fab7737454b5cff9aca6d1b5607d53c17c9e13d8ad96f6eaae87');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','22f61344565f87ca3512c0ba8fac32627fde8ee919b7badae07b2116e285f049');\nhashMap.set('helm-values','0aa79bb0257d0d72e54dfd2653e59bfef63b97e46c035b7443593bdf6e6382aa');\nhashMap.set('helmfile','ab63e5bc2bb381939a6b75911947e3fc79d31827423ded07f61ea1c98d95a542');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','927798e082caf46a0da703389ba07e9e61fa73ef571ab551301b8fc6b06957d1');\nhashMap.set('hermit','abf066a64be5e5112e4da68896cf14583691e817d8bf2fc5ec65aebcc0fde53b');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','dffe954a4e18c2dc4bfdaa12222fe8ddc3395869afd5afa603fc2b6264747984');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7fda0e7e0f3d5e18088ccb3594f727f4cfc48b064706bdaaf1a0a075b6a2cff5');\nhashMap.set('jsonnet-bundler','4cedeb0394e5c38361d1868ff45b4f34747ab8c492378b6e63dcaf1f4f3c024d');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','11b17044d29321b3b0ad8cee40ba00cd3297b9e94648556211043f1e8635c8e7');\nhashMap.set('leiningen','c8397e376f1717c2f771ae9ea3ba6b720d2422b133cf937e762c44e42be146a2');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','f9df7bfca0f8ffc2eff230aec09a53c8ae3e4012ac499a38622b31df203f047a');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','49077fd316618114cea787f4d165dee2abd9afb7c3b52e5213a70645c35dfb70');\nhashMap.set('mix','0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872');\nhashMap.set('nix','9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','cd2b909d892ef3e41e51b5df5b1b0b7e34e795845b0640225e41621416c1ee7d');\nhashMap.set('nuget','fb02247c67a198ffe414a44d23c7894bd114dcc53803334f82e39479e7b27f6f');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('paket','0cf8ff9b040ecf28f29b23bbe2ab2544ab3c94822bc1fb53ee4df7b74f000dea');\nhashMap.set('pep621','02ba97d9d2bbd696417ea0ea26c0ed27f4e8cf296f1afdbb27ec07bcc3bd987c');\nhashMap.set('pep723','77022a0eae6a3cbb74a1e6d596db1276e379768e40448192b3fa81edd14ca73f');\nhashMap.set('pip-compile','a98dc76a002e1dc21662237f009ff8fea36236bb4e24cb82ee30c6a78f57271f');\nhashMap.set('pip_requirements','bf3a407f72abf711230247bef94ba5dc84c08a35107b0f017912fad66afa716a');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','9b8ac4f9432f2789f60847c80582966d5ed4f735d2f678c82416d0eb9548b4fa');\nhashMap.set('pixi','e31c397982ffa34222b061f23f3b3683f42523dd5dca45ecce2448b0ebc55ea2');\nhashMap.set('poetry','2c74e8e94c484c8bfc93ba1272078d531a52e4faaa978fc90ddb654064bb85bc');\nhashMap.set('pre-commit','760f2c291ae084db889f722390798a0e2d431ccdc3bc676e73b14901ebea19ac');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','8e7c65dfd1999de4f7c44392e949a4d8f4701eb86df59d550e4657feb06b1872');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','40927b98dd2bac45dba60e66b5fd0e6b84b61d02db8be536fda7b14546a4feb7');\nhashMap.set('renovate-config','890cabf707d01b58394e0bec05e3a29b73de8f0b43fcbe8a42cd26e328608d70');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e1eb5c7f0171a9bb1b6bd4a36a91039a31b6c84e0983d91d930be31a69506d9e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','cdf063debdbf36888523ff8cec6d2d1b0ec6f49b37b2fbcd80b0d4f6a31114e1');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','6788a8569ba9c50c763ffa2bed952a4314ae8e696c29f93d3eb7c4a12d99ce20');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','300f8fb3c09667654412d2f5dd8ab4882e0f5d1d7a8bc39794993d2e7e58d1b7');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','f423bfa2b42a2bfc0e38a33ebd4f9d452473e7ed4e7ad6384a99eb9a35d97479');\nhashMap.set('travis','f3e2f38e699c390b00ff481be5e91dceaa81609e93caf9a4214933de759c84fc');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','30774cd456c443be2cd236fd5b8cd1cb821f1437c6309842e34960832df3557f');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"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','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','8e11293c8f61b4cbae77a3b1634a47213031c59df2c9833d89db65bf4e6edc64');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','b804a297488db65b99b6f3af966bf3f02ddb4a3ae6f4bfe418fb7023d895d261');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4d4f1d9a6519ba552b316b396db13ff0654a2663d8ed976188899a2d57d306a2');\nhashMap.set('bazel-module','9fbba0339f9f7785d52ab85c5f0f6385003093c063483c13feccba13ae438bef');\nhashMap.set('bazelisk','770f75a746dc6ba90c518788d5987d7df4243ef9eee122d1bb0556a93d6e1b11');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','77a06471b8aec434457bcbde14a7473bc1c20a5fbe203ecc188bcc7a4fec1718');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','74ac02207de7b297d66dfed5b77c7fdeffcdcf2eac639798ba434d0571a90384');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','bbca094a652544845c147bd801b04ce4aae3719cb27acfb68b2ebac616940538');\nhashMap.set('conan','03cdeeffe4e688fb403766100cc1fc617dd388629f1c769ba54a966db3b23414');\nhashMap.set('copier','a0678cc1eec36301328780966eec215c6e18748ea80c98873c8e13291a684cfa');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','41e6a8b7b8bae08f07b3e4b69c8c095db5da984bb23c004cd1ebf755a6317794');\nhashMap.set('deps-edn','06783dbc8b9c7bb84e162d1f75b7db56dfa021cc6f809dfd2314cee8b64af08d');\nhashMap.set('devbox','a40050cc61bd9b5d500ec111abb17bb15d5f82ab5b7699f66f628307ba8382c9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','fba87b82cb0f2bfd66526631fbe928b8153e7ca701a5790d02b944df17417bb9');\nhashMap.set('dockerfile','b5faeb8f31d238e0d05a4aeebf9a837273687908ab8078b34e738bb0e369c80c');\nhashMap.set('droneci','661d2a2d7295af8dd7a1234c7090c42a89306bd574c3adf1fc67782efaad3998');\nhashMap.set('fleet','ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6427c97');\nhashMap.set('flux','f881de9cb1b09788f78a3de7c7bbfd8407f88a4af49a39b99f4f91634584249f');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','064fa55369f11feec61b699cb122df6ea81f8e0c09ea9f7dbb96796c87be6950');\nhashMap.set('github-actions','ab06f8778662cdb79f4593d2c57cbd80e713537d885bbcef88be1db27c7a4f2c');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','5e9b9f5f914afe5ed7b526c06c65111e3716d2dea9b0cbe7907bbc96db1064a3');\nhashMap.set('gomod','80d7fb1da9b45957a11bea7dbe359ef2c13131e5325cf977cab32e4224f3cd5f');\nhashMap.set('gradle','14ffeecba62452d47d3796e68753da745de2614b6e5ecc346da4f0067ed4bc6e');\nhashMap.set('gradle-wrapper','73ba30c34955fab7737454b5cff9aca6d1b5607d53c17c9e13d8ad96f6eaae87');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','22f61344565f87ca3512c0ba8fac32627fde8ee919b7badae07b2116e285f049');\nhashMap.set('helm-values','0aa79bb0257d0d72e54dfd2653e59bfef63b97e46c035b7443593bdf6e6382aa');\nhashMap.set('helmfile','ab63e5bc2bb381939a6b75911947e3fc79d31827423ded07f61ea1c98d95a542');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','927798e082caf46a0da703389ba07e9e61fa73ef571ab551301b8fc6b06957d1');\nhashMap.set('hermit','abf066a64be5e5112e4da68896cf14583691e817d8bf2fc5ec65aebcc0fde53b');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','dffe954a4e18c2dc4bfdaa12222fe8ddc3395869afd5afa603fc2b6264747984');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7fda0e7e0f3d5e18088ccb3594f727f4cfc48b064706bdaaf1a0a075b6a2cff5');\nhashMap.set('jsonnet-bundler','4cedeb0394e5c38361d1868ff45b4f34747ab8c492378b6e63dcaf1f4f3c024d');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','11b17044d29321b3b0ad8cee40ba00cd3297b9e94648556211043f1e8635c8e7');\nhashMap.set('leiningen','c8397e376f1717c2f771ae9ea3ba6b720d2422b133cf937e762c44e42be146a2');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','f9df7bfca0f8ffc2eff230aec09a53c8ae3e4012ac499a38622b31df203f047a');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','49077fd316618114cea787f4d165dee2abd9afb7c3b52e5213a70645c35dfb70');\nhashMap.set('mix','0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872');\nhashMap.set('nix','422242f1714be6972fc7006c37f4a497dbbd44ba9c3f68f7b73e7dd3d81fd74d');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','cd2b909d892ef3e41e51b5df5b1b0b7e34e795845b0640225e41621416c1ee7d');\nhashMap.set('nuget','fb02247c67a198ffe414a44d23c7894bd114dcc53803334f82e39479e7b27f6f');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('paket','0cf8ff9b040ecf28f29b23bbe2ab2544ab3c94822bc1fb53ee4df7b74f000dea');\nhashMap.set('pep621','02ba97d9d2bbd696417ea0ea26c0ed27f4e8cf296f1afdbb27ec07bcc3bd987c');\nhashMap.set('pep723','77022a0eae6a3cbb74a1e6d596db1276e379768e40448192b3fa81edd14ca73f');\nhashMap.set('pip-compile','a98dc76a002e1dc21662237f009ff8fea36236bb4e24cb82ee30c6a78f57271f');\nhashMap.set('pip_requirements','bf3a407f72abf711230247bef94ba5dc84c08a35107b0f017912fad66afa716a');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','9b8ac4f9432f2789f60847c80582966d5ed4f735d2f678c82416d0eb9548b4fa');\nhashMap.set('pixi','e31c397982ffa34222b061f23f3b3683f42523dd5dca45ecce2448b0ebc55ea2');\nhashMap.set('poetry','2c74e8e94c484c8bfc93ba1272078d531a52e4faaa978fc90ddb654064bb85bc');\nhashMap.set('pre-commit','760f2c291ae084db889f722390798a0e2d431ccdc3bc676e73b14901ebea19ac');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','8e7c65dfd1999de4f7c44392e949a4d8f4701eb86df59d550e4657feb06b1872');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','40927b98dd2bac45dba60e66b5fd0e6b84b61d02db8be536fda7b14546a4feb7');\nhashMap.set('renovate-config','890cabf707d01b58394e0bec05e3a29b73de8f0b43fcbe8a42cd26e328608d70');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e1eb5c7f0171a9bb1b6bd4a36a91039a31b6c84e0983d91d930be31a69506d9e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','cdf063debdbf36888523ff8cec6d2d1b0ec6f49b37b2fbcd80b0d4f6a31114e1');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','6788a8569ba9c50c763ffa2bed952a4314ae8e696c29f93d3eb7c4a12d99ce20');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','300f8fb3c09667654412d2f5dd8ab4882e0f5d1d7a8bc39794993d2e7e58d1b7');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','f423bfa2b42a2bfc0e38a33ebd4f9d452473e7ed4e7ad6384a99eb9a35d97479');\nhashMap.set('travis','f3e2f38e699c390b00ff481be5e91dceaa81609e93caf9a4214933de759c84fc');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','30774cd456c443be2cd236fd5b8cd1cb821f1437c6309842e34960832df3557f');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":["nixpkgsVersioning"],"sources":["../../../../lib/modules/manager/nix/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { getSiblingFileName, readLocalFile } from '../../../util/fs/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { id as gitRefVersioning } from '../../versioning/git/index.ts';\nimport { id as nixpkgsVersioning } from '../../versioning/nixpkgs/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport { NixFlakeLock } from './schema.ts';\n\n// as documented upstream\n// https://github.com/NixOS/nix/blob/master/doc/manual/source/protocols/tarball-fetcher.md#gitea-and-forgejo-support\nconst lockableHTTPTarballProtocol = regEx(\n '^https://(?<domain>[^/]+)/(?<owner>[^/]+)/(?<repo>[^/]+)/archive/(?<rev>.+).tar.gz$',\n);\n\nconst lockableChannelOriginalUrl = regEx(\n '^https://(?:channels\\\\.nixos\\\\.org|nixos\\\\.org/channels)/(?<channel>[^/]+)/nixexprs\\\\.tar\\\\.(?:xz|zst)$',\n);\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config?: ExtractConfig,\n): Promise<PackageFileContent | null> {\n const flakeLockFile = getSiblingFileName(packageFile, 'flake.lock');\n const flakeLockContents = await readLocalFile(flakeLockFile, 'utf8');\n\n logger.trace(`nix.extractPackageFile(${flakeLockFile})`);\n\n const deps: PackageDependency[] = [];\n\n const flakeLockParsed = NixFlakeLock.safeParse(flakeLockContents);\n if (!flakeLockParsed.success) {\n logger.debug(\n { flakeLockFile, err: flakeLockParsed.error },\n `invalid flake.lock file`,\n );\n return null;\n }\n\n const flakeLock = flakeLockParsed.data;\n const rootInputs = flakeLock.nodes.root.inputs;\n\n if (!rootInputs) {\n logger.debug(\n { flakeLockFile, err: flakeLockParsed.error },\n `flake.lock is missing \"root\" node`,\n );\n return null;\n }\n\n for (const [depName, flakeInput] of Object.entries(flakeLock.nodes)) {\n // the root input is a magic string for the entrypoint and only references other flake inputs\n if (depName === 'root') {\n continue;\n }\n\n // skip all locked and transitivie nodes as they cannot be updated by regular means\n if (!(depName in rootInputs)) {\n continue;\n }\n\n // flakeLocked example: { rev: '56a49ffef2908dad1e9a8adef1f18802bc760962', type: 'github' }\n const flakeLocked = flakeInput.locked;\n // flakeOriginal example: { owner: 'NuschtOS', repo: 'search', type: 'github' }\n const flakeOriginal = flakeInput.original;\n\n if (flakeLocked === undefined) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is missing locked, skipping`,\n );\n continue;\n }\n\n if (flakeOriginal === undefined) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is missing original, skipping`,\n );\n continue;\n }\n\n // indirect inputs cannot be reliably updated because they depend on the flake registry\n if (flakeOriginal.type === 'indirect' || flakeLocked.type === 'indirect') {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is type indirect, skipping`,\n );\n continue;\n }\n\n // cannot update local path inputs\n if (flakeOriginal.type === 'path' || flakeLocked.type === 'path') {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is type path, skipping`,\n );\n continue;\n }\n\n // if no rev is being tracked, we cannot update this input\n if (flakeLocked.rev === undefined) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `locked input is not tracking a rev, skipping`,\n );\n continue;\n }\n\n // if there's a new digest, set the corresponding digest in the lockfile so confirmations pass\n const currentDigest = config?.currentDigest;\n const newDigest = config?.newDigest;\n if (\n currentDigest &&\n newDigest &&\n flakeOriginal.rev &&\n flakeOriginal.rev === currentDigest && // currentDigest is the old digest\n content.includes(newDigest) // flake.nix contains the new digest\n ) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `overriding rev ${flakeOriginal.rev} with new digest ${newDigest}`,\n );\n flakeOriginal.rev = newDigest;\n }\n\n const dep: PackageDependency = {\n depName,\n datasource: GitRefsDatasource.id,\n versioning: gitRefVersioning,\n };\n\n // if rev is set, the flake contains a digest and can be updated directly\n // otherwise set lockedVersion so it is updated during lock file maintenance\n if (flakeOriginal.rev) {\n dep.currentValue = flakeOriginal.ref;\n dep.currentDigest = flakeOriginal.rev;\n dep.replaceString = flakeOriginal.rev;\n } else {\n dep.lockedVersion = flakeLocked.rev;\n }\n\n switch (flakeLocked.type) {\n case 'github':\n // set to nixpkgs if it is a nixpkgs reference\n if (\n flakeOriginal.owner?.toLowerCase() === 'nixos' &&\n flakeOriginal.repo?.toLowerCase() === 'nixpkgs'\n ) {\n dep.packageName = 'https://github.com/NixOS/nixpkgs';\n dep.currentValue = flakeOriginal.ref;\n dep.versioning = nixpkgsVersioning;\n break;\n }\n\n dep.packageName = `https://${flakeOriginal.host ?? 'github.com'}/${flakeOriginal.owner}/${flakeOriginal.repo}`;\n break;\n\n case 'gitlab':\n dep.packageName = `https://${flakeOriginal.host ?? 'gitlab.com'}/${decodeURIComponent(flakeOriginal.owner!)}/${flakeOriginal.repo}`;\n break;\n\n case 'git':\n dep.packageName = flakeOriginal.url;\n break;\n\n case 'sourcehut':\n dep.packageName = `https://${flakeOriginal.host ?? 'git.sr.ht'}/${flakeOriginal.owner}/${flakeOriginal.repo}`;\n break;\n\n case 'tarball':\n // set to nixpkgs if it is a lockable channel URL\n if (\n flakeOriginal.url &&\n lockableChannelOriginalUrl.test(flakeOriginal.url)\n ) {\n dep.packageName = 'https://github.com/NixOS/nixpkgs';\n dep.currentValue = flakeOriginal.url.replace(\n lockableChannelOriginalUrl,\n '$<channel>',\n );\n dep.versioning = nixpkgsVersioning;\n break;\n }\n\n dep.packageName = flakeOriginal.url!.replace(\n lockableHTTPTarballProtocol,\n 'https://$<domain>/$<owner>/$<repo>',\n );\n break;\n }\n\n deps.push(dep);\n }\n\n
|
|
1
|
+
{"version":3,"file":"extract.js","names":["nixpkgsVersioning"],"sources":["../../../../lib/modules/manager/nix/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { getSiblingFileName, readLocalFile } from '../../../util/fs/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { id as gitRefVersioning } from '../../versioning/git/index.ts';\nimport { id as nixpkgsVersioning } from '../../versioning/nixpkgs/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport { NixFlakeLock } from './schema.ts';\n\n// as documented upstream\n// https://github.com/NixOS/nix/blob/master/doc/manual/source/protocols/tarball-fetcher.md#gitea-and-forgejo-support\nconst lockableHTTPTarballProtocol = regEx(\n '^https://(?<domain>[^/]+)/(?<owner>[^/]+)/(?<repo>[^/]+)/archive/(?<rev>.+).tar.gz$',\n);\n\nconst lockableChannelOriginalUrl = regEx(\n '^https://(?:channels\\\\.nixos\\\\.org|nixos\\\\.org/channels)/(?<channel>[^/]+)/nixexprs\\\\.tar\\\\.(?:xz|zst)$',\n);\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config?: ExtractConfig,\n): Promise<PackageFileContent | null> {\n const flakeLockFile = getSiblingFileName(packageFile, 'flake.lock');\n const flakeLockContents = await readLocalFile(flakeLockFile, 'utf8');\n\n logger.trace(`nix.extractPackageFile(${flakeLockFile})`);\n\n const deps: PackageDependency[] = [];\n\n const flakeLockParsed = NixFlakeLock.safeParse(flakeLockContents);\n if (!flakeLockParsed.success) {\n logger.debug(\n { flakeLockFile, err: flakeLockParsed.error },\n `invalid flake.lock file`,\n );\n return null;\n }\n\n const flakeLock = flakeLockParsed.data;\n const rootInputs = flakeLock.nodes.root.inputs;\n\n if (!rootInputs) {\n logger.debug(\n { flakeLockFile, err: flakeLockParsed.error },\n `flake.lock is missing \"root\" node`,\n );\n return null;\n }\n\n for (const [depName, flakeInput] of Object.entries(flakeLock.nodes)) {\n // the root input is a magic string for the entrypoint and only references other flake inputs\n if (depName === 'root') {\n continue;\n }\n\n // skip all locked and transitivie nodes as they cannot be updated by regular means\n if (!(depName in rootInputs)) {\n continue;\n }\n\n // flakeLocked example: { rev: '56a49ffef2908dad1e9a8adef1f18802bc760962', type: 'github' }\n const flakeLocked = flakeInput.locked;\n // flakeOriginal example: { owner: 'NuschtOS', repo: 'search', type: 'github' }\n const flakeOriginal = flakeInput.original;\n\n if (flakeLocked === undefined) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is missing locked, skipping`,\n );\n continue;\n }\n\n if (flakeOriginal === undefined) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is missing original, skipping`,\n );\n continue;\n }\n\n // indirect inputs cannot be reliably updated because they depend on the flake registry\n if (flakeOriginal.type === 'indirect' || flakeLocked.type === 'indirect') {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is type indirect, skipping`,\n );\n continue;\n }\n\n // cannot update local path inputs\n if (flakeOriginal.type === 'path' || flakeLocked.type === 'path') {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is type path, skipping`,\n );\n continue;\n }\n\n // if no rev is being tracked, we cannot update this input\n if (flakeLocked.rev === undefined) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `locked input is not tracking a rev, skipping`,\n );\n continue;\n }\n\n // if there's a new digest, set the corresponding digest in the lockfile so confirmations pass\n const currentDigest = config?.currentDigest;\n const newDigest = config?.newDigest;\n if (\n currentDigest &&\n newDigest &&\n flakeOriginal.rev &&\n flakeOriginal.rev === currentDigest && // currentDigest is the old digest\n content.includes(newDigest) // flake.nix contains the new digest\n ) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `overriding rev ${flakeOriginal.rev} with new digest ${newDigest}`,\n );\n flakeOriginal.rev = newDigest;\n }\n\n const dep: PackageDependency = {\n depName,\n datasource: GitRefsDatasource.id,\n versioning: gitRefVersioning,\n };\n\n // if rev is set, the flake contains a digest and can be updated directly\n // otherwise set lockedVersion so it is updated during lock file maintenance\n if (flakeOriginal.rev) {\n dep.currentValue = flakeOriginal.ref;\n dep.currentDigest = flakeOriginal.rev;\n dep.replaceString = flakeOriginal.rev;\n } else {\n dep.lockedVersion = flakeLocked.rev;\n }\n\n switch (flakeLocked.type) {\n case 'github':\n // set to nixpkgs if it is a nixpkgs reference\n if (\n flakeOriginal.owner?.toLowerCase() === 'nixos' &&\n flakeOriginal.repo?.toLowerCase() === 'nixpkgs'\n ) {\n dep.packageName = 'https://github.com/NixOS/nixpkgs';\n dep.currentValue = flakeOriginal.ref;\n dep.versioning = nixpkgsVersioning;\n break;\n }\n\n dep.packageName = `https://${flakeOriginal.host ?? 'github.com'}/${flakeOriginal.owner}/${flakeOriginal.repo}`;\n break;\n\n case 'gitlab':\n dep.packageName = `https://${flakeOriginal.host ?? 'gitlab.com'}/${decodeURIComponent(flakeOriginal.owner!)}/${flakeOriginal.repo}`;\n break;\n\n case 'git':\n dep.packageName = flakeOriginal.url;\n break;\n\n case 'sourcehut':\n dep.packageName = `https://${flakeOriginal.host ?? 'git.sr.ht'}/${flakeOriginal.owner}/${flakeOriginal.repo}`;\n break;\n\n case 'tarball':\n // set to nixpkgs if it is a lockable channel URL\n if (\n flakeOriginal.url &&\n lockableChannelOriginalUrl.test(flakeOriginal.url)\n ) {\n dep.packageName = 'https://github.com/NixOS/nixpkgs';\n dep.currentValue = flakeOriginal.url.replace(\n lockableChannelOriginalUrl,\n '$<channel>',\n );\n dep.versioning = nixpkgsVersioning;\n break;\n }\n\n dep.packageName = flakeOriginal.url!.replace(\n lockableHTTPTarballProtocol,\n 'https://$<domain>/$<owner>/$<repo>',\n );\n break;\n }\n\n deps.push(dep);\n }\n\n return { deps };\n}\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { regEx } from "../../../util/regex.js";
|
|
|
5
5
|
import { GlobalConfig } from "../../../config/global.js";
|
|
6
6
|
import { sanitize } from "../../../util/sanitize.js";
|
|
7
7
|
import { logger } from "../../../logger/index.js";
|
|
8
|
-
import { ensureTrailingSlash } from "../../../util/url.js";
|
|
8
|
+
import { ensureTrailingSlash, parseUrl } from "../../../util/url.js";
|
|
9
9
|
import { isServerError } from "../../../util/http/status.js";
|
|
10
10
|
import { find } from "../../../util/host-rules.js";
|
|
11
11
|
import { parseJson } from "../../../util/common.js";
|
|
@@ -166,7 +166,7 @@ async function initRepo({ repository, cloneSubmodules, cloneSubmodulesFilter, az
|
|
|
166
166
|
url: defaults.endpoint
|
|
167
167
|
});
|
|
168
168
|
const manualUrl = `${defaults.endpoint}${encodeURIComponent(projectName)}/_git/${encodeURIComponent(repoName)}`;
|
|
169
|
-
const url = repo.remoteUrl ?? manualUrl;
|
|
169
|
+
const url = parseUrl(repo.remoteUrl)?.toString() ?? manualUrl;
|
|
170
170
|
await initRepo$1({
|
|
171
171
|
...config,
|
|
172
172
|
url,
|
|
@@ -540,7 +540,7 @@ async function mergePr({ branchName, id: pullRequestId, strategy }) {
|
|
|
540
540
|
}
|
|
541
541
|
}
|
|
542
542
|
function massageMarkdown(input) {
|
|
543
|
-
return smartTruncate(readOnlyIssueBody(input), maxBodyLength()).replace("you tick the rebase/retry checkbox", "PR is renamed to start with \"rebase!\"").replace("checking the rebase/retry box above", "renaming the PR to start with \"rebase!\"").replace(regEx(`\n---\n\n.*?<!-- rebase-check -->.*?\n`), "").replace(regEx(/<!--renovate-(?:debug|config-hash):.*?-->/g), "").replace(regEx(/\]\(\.\.\/pull\//g), "](!").replace(regEx(/(?<lead>^|[\s(])#(?<num>\d+)/g), "$<lead>!$<num>");
|
|
543
|
+
return smartTruncate(readOnlyIssueBody(input), maxBodyLength()).replace("you tick the rebase/retry checkbox", "PR is renamed to start with \"rebase!\"").replace("checking the rebase/retry box above", "renaming the PR to start with \"rebase!\"").replace(regEx(`\n---\n\n.*?<!-- rebase-check -->.*?\n`), "").replace(regEx(/<!--renovate-(?:debug|config-hash):.*?-->/g), "").replace(regEx(/\]\(\.\.\/pull\//g), "](!").replace(regEx(/(?<lead>^|[\s(])#(?<num>\d+)/g), "$<lead>!$<num>").replace(regEx(/​/g), "");
|
|
544
544
|
}
|
|
545
545
|
function maxBodyLength() {
|
|
546
546
|
return 4e3;
|