renovate 44.165.2 → 44.166.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/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/validation-helpers/types.js.map +1 -1
- package/dist/global-config-option-defaults.generated.js +1 -1
- package/dist/global-config-option-defaults.generated.js.map +1 -1
- package/dist/modules/manager/ant/extract.js.map +1 -1
- package/dist/modules/manager/argocd/util.js +1 -1
- package/dist/modules/manager/argocd/util.js.map +1 -1
- package/dist/modules/manager/pixi/schema.js +1 -2
- package/dist/modules/manager/pixi/schema.js.map +1 -1
- package/dist/modules/manager/terragrunt/providers.js +2 -2
- package/dist/modules/manager/terragrunt/providers.js.map +1 -1
- package/dist/util/exec/containerbase.js.map +1 -1
- package/dist/util/exec/types.d.ts +0 -2
- package/dist/util/exec/types.js.map +1 -1
- package/dist/util/git/types.js.map +1 -1
- package/dist/util/http/index.js.map +1 -1
- package/package.json +6 -13
- package/renovate-schema.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../lib/config/validation-helpers/types.ts"],"sourcesContent":["import type { PackageRule } from '../types.ts';\n\n/**\n * Known `topic`s for Config Validation errors.\n *\n * This is particularly important for `Security`, which callers use to decide that a violation must always fail validation.\n */\nexport const ConfigValidationTopic = {\n Error: 'Configuration Error',\n Warning: 'Configuration Warning',\n Deprecation: 'Deprecation Warning',\n Security: 'Config security error',\n} as const;\n\nexport type ConfigValidationTopic =\n (typeof ConfigValidationTopic)[keyof typeof ConfigValidationTopic];\n\nexport interface
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../lib/config/validation-helpers/types.ts"],"sourcesContent":["import type { PackageRule } from '../types.ts';\n\n/**\n * Known `topic`s for Config Validation errors.\n *\n * This is particularly important for `Security`, which callers use to decide that a violation must always fail validation.\n */\nexport const ConfigValidationTopic = {\n Error: 'Configuration Error',\n Warning: 'Configuration Warning',\n Deprecation: 'Deprecation Warning',\n Security: 'Config security error',\n} as const;\n\nexport type ConfigValidationTopic =\n (typeof ConfigValidationTopic)[keyof typeof ConfigValidationTopic];\n\nexport interface CheckMatcherArgs {\n val: unknown;\n currentPath: string;\n}\n\nexport interface CheckBaseBranchesArgs {\n resolvedRule: PackageRule;\n currentPath: string;\n /** user configurable base branch patterns*/\n baseBranchPatterns?: string[];\n}\n"],"mappings":";;;;;;AAOA,MAAa,wBAAwB;CACnC,OAAO;CACP,SAAS;CACT,aAAa;CACb,UAAU;AACZ"}
|
|
@@ -23,7 +23,7 @@ const globalConfigOptionDefaults = {
|
|
|
23
23
|
"detectHostRulesFromEnv": false,
|
|
24
24
|
"dockerChildPrefix": "renovate_",
|
|
25
25
|
"dockerMaxPages": 20,
|
|
26
|
-
"dockerSidecarImage": "ghcr.io/renovatebot/base-image:13.
|
|
26
|
+
"dockerSidecarImage": "ghcr.io/renovatebot/base-image:13.133.0",
|
|
27
27
|
"dockerUser": "12021",
|
|
28
28
|
"executionTimeout": 15,
|
|
29
29
|
"exitCodeForErrors": false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-config-option-defaults.generated.js","names":[],"sources":["../lib/global-config-option-defaults.generated.ts"],"sourcesContent":["\nexport const globalConfigOptionDefaults: Record<string, unknown> = {\n \"allowCustomCrateGitRegistries\": false,\n \"allowedCommands\": [],\n \"allowedEnv\": [],\n \"allowedHeaders\": [\n \"X-*\"\n ],\n \"allowedUnsafeExecutions\": [],\n \"allowPlugins\": false,\n \"allowScripts\": false,\n \"allowShellExecutorForPostUpgradeCommands\": false,\n \"autodiscover\": false,\n \"bbUseDevelopmentBranch\": false,\n \"binarySource\": \"install\",\n \"cacheHardTtlMinutes\": 10080,\n \"cachePrivatePackages\": false,\n \"cacheTtlOverride\": {},\n \"checkedBranches\": [],\n \"configValidationError\": false,\n \"customEnvVariables\": {},\n \"deleteAdditionalConfigFile\": false,\n \"deleteConfigFile\": false,\n \"detectGlobalManagerConfig\": false,\n \"detectHostRulesFromEnv\": false,\n \"dockerChildPrefix\": \"renovate_\",\n \"dockerMaxPages\": 20,\n \"dockerSidecarImage\": \"ghcr.io/renovatebot/base-image:13.
|
|
1
|
+
{"version":3,"file":"global-config-option-defaults.generated.js","names":[],"sources":["../lib/global-config-option-defaults.generated.ts"],"sourcesContent":["\nexport const globalConfigOptionDefaults: Record<string, unknown> = {\n \"allowCustomCrateGitRegistries\": false,\n \"allowedCommands\": [],\n \"allowedEnv\": [],\n \"allowedHeaders\": [\n \"X-*\"\n ],\n \"allowedUnsafeExecutions\": [],\n \"allowPlugins\": false,\n \"allowScripts\": false,\n \"allowShellExecutorForPostUpgradeCommands\": false,\n \"autodiscover\": false,\n \"bbUseDevelopmentBranch\": false,\n \"binarySource\": \"install\",\n \"cacheHardTtlMinutes\": 10080,\n \"cachePrivatePackages\": false,\n \"cacheTtlOverride\": {},\n \"checkedBranches\": [],\n \"configValidationError\": false,\n \"customEnvVariables\": {},\n \"deleteAdditionalConfigFile\": false,\n \"deleteConfigFile\": false,\n \"detectGlobalManagerConfig\": false,\n \"detectHostRulesFromEnv\": false,\n \"dockerChildPrefix\": \"renovate_\",\n \"dockerMaxPages\": 20,\n \"dockerSidecarImage\": \"ghcr.io/renovatebot/base-image:13.133.0\",\n \"dockerUser\": \"12021\",\n \"executionTimeout\": 15,\n \"exitCodeForErrors\": false,\n \"exposeAllEnv\": false,\n \"forceCli\": true,\n \"forkCreation\": true,\n \"githubTokenWarn\": true,\n \"gitNoVerify\": [\n \"commit\",\n \"push\"\n ],\n \"gitTimeout\": 0,\n \"gitUrl\": \"default\",\n \"httpCacheTtlDays\": 90,\n \"ignorePrAuthor\": false,\n \"includeMirrors\": false,\n \"inheritConfig\": false,\n \"inheritConfigFileName\": \"org-inherited-config.json\",\n \"inheritConfigRepoName\": \"{{parentOrg}}/renovate-config\",\n \"inheritConfigStrict\": false,\n \"inheritConfigTrusted\": false,\n \"internalHostAccess\": \"warn\",\n \"mergeConfidenceDatasources\": [\n \"go\",\n \"maven\",\n \"npm\",\n \"nuget\",\n \"packagist\",\n \"pypi\",\n \"rubygems\"\n ],\n \"mergeConfidenceEndpoint\": \"https://developer.mend.io/\",\n \"migratePresets\": {},\n \"onboardingBranch\": \"renovate/configure\",\n \"onboardingConfig\": {\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\"\n },\n \"onboardingConfigFileName\": \"renovate.json\",\n \"onboardingNoDeps\": \"auto\",\n \"onboardingPrTitle\": \"Configure Renovate\",\n \"onboardingRebaseCheckbox\": false,\n \"optimizeForDisabled\": false,\n \"persistRepoData\": false,\n \"platform\": \"github\",\n \"prCacheSyncMaxPages\": 100,\n \"prCommitsPerRunLimit\": 0,\n \"presetCachePersistence\": false,\n \"processEnv\": {},\n \"productLinks\": {\n \"documentation\": \"https://docs.renovatebot.com/\",\n \"help\": \"https://github.com/renovatebot/renovate/discussions\",\n \"homepage\": \"https://github.com/renovatebot/renovate\"\n },\n \"rebaseAllOpenBranches\": false,\n \"reportFormatting\": false,\n \"repositoryCache\": \"disabled\",\n \"repositoryCacheForceLocal\": false,\n \"repositoryCacheType\": \"local\",\n \"requireConfig\": \"required\",\n \"s3PathStyle\": false,\n \"secrets\": {},\n \"unicodeEmoji\": true,\n \"useCloudMetadataServices\": true,\n \"userAgent\": \"Renovate/{{renovateVersion}} (https://github.com/renovatebot/renovate)\",\n \"variables\": {}\n};\n"],"mappings":";AACA,MAAa,6BAAsD;CACjE,iCAAiC;CACjC,mBAAmB,CAAC;CACpB,cAAc,CAAC;CACf,kBAAkB,CAChB,KACF;CACA,2BAA2B,CAAC;CAC5B,gBAAgB;CAChB,gBAAgB;CAChB,4CAA4C;CAC5C,gBAAgB;CAChB,0BAA0B;CAC1B,gBAAgB;CAChB,uBAAuB;CACvB,wBAAwB;CACxB,oBAAoB,CAAC;CACrB,mBAAmB,CAAC;CACpB,yBAAyB;CACzB,sBAAsB,CAAC;CACvB,8BAA8B;CAC9B,oBAAoB;CACpB,6BAA6B;CAC7B,0BAA0B;CAC1B,qBAAqB;CACrB,kBAAkB;CAClB,sBAAsB;CACtB,cAAc;CACd,oBAAoB;CACpB,qBAAqB;CACrB,gBAAgB;CAChB,YAAY;CACZ,gBAAgB;CAChB,mBAAmB;CACnB,eAAe,CACb,UACA,MACF;CACA,cAAc;CACd,UAAU;CACV,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,yBAAyB;CACzB,yBAAyB;CACzB,uBAAuB;CACvB,wBAAwB;CACxB,sBAAsB;CACtB,8BAA8B;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,2BAA2B;CAC3B,kBAAkB,CAAC;CACnB,oBAAoB;CACpB,oBAAoB,EAClB,WAAW,oDACb;CACA,4BAA4B;CAC5B,oBAAoB;CACpB,qBAAqB;CACrB,4BAA4B;CAC5B,uBAAuB;CACvB,mBAAmB;CACnB,YAAY;CACZ,uBAAuB;CACvB,wBAAwB;CACxB,0BAA0B;CAC1B,cAAc,CAAC;CACf,gBAAgB;EACd,iBAAiB;EACjB,QAAQ;EACR,YAAY;CACd;CACA,yBAAyB;CACzB,oBAAoB;CACpB,mBAAmB;CACnB,6BAA6B;CAC7B,uBAAuB;CACvB,iBAAiB;CACjB,eAAe;CACf,WAAW,CAAC;CACZ,gBAAgB;CAChB,4BAA4B;CAC5B,aAAa;CACb,aAAa,CAAC;AAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/ant/extract.ts"],"sourcesContent":["import upath from 'upath';\nimport type { XmlElement } from 'xmldoc';\nimport { XmlDocument } from 'xmldoc';\nimport { logger } from '../../../logger/index.ts';\nimport { isValidLocalPath, readLocalFile } from '../../../util/fs/index.ts';\nimport { MavenDatasource } from '../../datasource/maven/index.ts';\nimport { extractRegistries } from '../maven/extract.ts';\nimport { isXmlElement } from '../nuget/util.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport {\n applyProps,\n containsPlaceholder,\n findAttrValuePosition,\n parsePropertiesFile,\n resolveChainedProps,\n} from './properties.ts';\nimport type { AntProp } from './types.ts';\n\nexport { parsePropertiesFile } from './properties.ts';\n\nconst scopeNames = new Set([\n 'compile',\n 'runtime',\n 'test',\n 'provided',\n 'system',\n]);\n\nfunction getDependencyType(scope: string | undefined): string {\n if (scope && scopeNames.has(scope)) {\n return scope;\n }\n return 'compile';\n}\n\nfunction parseCoords(coordsStr: string): {\n groupId: string;\n artifactId: string;\n rawVersion: string;\n scope: string | undefined;\n} | null {\n const parts = coordsStr.split(':');\n if (parts.length < 3) {\n logger.trace({ coordsStr }, 'ant manager: coords has fewer than 3 parts');\n return null;\n }\n\n const [groupId, artifactId] = parts;\n if (!groupId || !artifactId) {\n logger.trace(\n { coordsStr },\n 'ant manager: coords has empty groupId or artifactId',\n );\n return null;\n }\n\n let scope: string | undefined;\n let rawVersion: string;\n\n if (parts.length >= 4 && scopeNames.has(parts.at(-1)!)) {\n scope = parts.at(-1);\n rawVersion = parts.at(-2)!;\n } else {\n rawVersion = parts.at(-1)!;\n }\n\n return { groupId, artifactId, rawVersion, scope };\n}\n\ninterface RawDep {\n dep: PackageDependency;\n depPackageFile: string;\n}\n\nasync function readSettingsRegistries(\n settingsFile: string,\n baseDir: string,\n): Promise<string[]> {\n const settingsPath = settingsFile.startsWith('/')\n ? settingsFile\n : upath.join(baseDir, settingsFile);\n\n if (!isValidLocalPath(settingsPath)) {\n logger.debug(\n `ant manager: skipping settings file outside repository: ${settingsPath}`,\n );\n return [];\n }\n\n const settingsContent = await readLocalFile(settingsPath, 'utf8');\n if (!settingsContent) {\n logger.debug(`ant manager: could not read settings file ${settingsPath}`);\n return [];\n }\n\n return extractRegistries(settingsContent);\n}\n\nasync function collectRegistryUrls(\n node: XmlElement,\n baseDir: string,\n): Promise<string[]> {\n const urls: string[] = [];\n\n const settingsFile = node.attr.settingsFile;\n if (settingsFile) {\n urls.push(...(await readSettingsRegistries(settingsFile, baseDir)));\n }\n\n for (const child of node.children) {\n if (\n isXmlElement(child) &&\n child.name === 'remoteRepository' &&\n child.attr.url\n ) {\n urls.push(child.attr.url);\n }\n }\n\n return [...new Set(urls)];\n}\n\nfunction collectCoordsDependency(\n node: XmlElement,\n packageFile: string,\n content: string,\n registryUrls: string[],\n): RawDep | null {\n const coordsStr = node.attr.coords;\n\n const parsed = parseCoords(coordsStr);\n if (!parsed) {\n return null;\n }\n\n const dep: PackageDependency = {\n datasource: MavenDatasource.id,\n depName: `${parsed.groupId}:${parsed.artifactId}`,\n currentValue: parsed.rawVersion,\n depType: getDependencyType(parsed.scope ?? node.attr.scope),\n ...(registryUrls?.length && { registryUrls }),\n };\n\n // Position at the version substring within the coords attribute value\n const coordsValuePos = findAttrValuePosition(content, node, 'coords');\n const versionOffset = coordsStr.lastIndexOf(parsed.rawVersion);\n dep.fileReplacePosition = coordsValuePos + versionOffset;\n\n return { dep, depPackageFile: packageFile };\n}\n\nfunction collectDependency(\n node: XmlElement,\n packageFile: string,\n content: string,\n registryUrls: string[] = [],\n): RawDep | null {\n if (node.attr.coords) {\n return collectCoordsDependency(node, packageFile, content, registryUrls);\n }\n\n const { groupId, artifactId, version, scope } = node.attr;\n\n if (!version || !groupId || !artifactId) {\n return null;\n }\n\n const dep: PackageDependency = {\n datasource: MavenDatasource.id,\n depName: `${groupId}:${artifactId}`,\n currentValue: version,\n depType: getDependencyType(scope),\n ...(registryUrls?.length && { registryUrls }),\n };\n\n dep.fileReplacePosition = findAttrValuePosition(content, node, 'version');\n\n return { dep, depPackageFile: packageFile };\n}\n\nfunction walkNode(\n node: XmlElement | XmlDocument,\n rawDeps: RawDep[],\n packageFile: string,\n content: string,\n): void {\n for (const child of node.children) {\n if (!isXmlElement(child)) {\n continue;\n }\n\n if (child.name === 'dependency') {\n const rawDep = collectDependency(child, packageFile, content);\n if (rawDep) {\n rawDeps.push(rawDep);\n }\n } else {\n walkNode(child, rawDeps, packageFile, content);\n }\n }\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): PackageFileContent | null {\n let doc: XmlDocument;\n try {\n doc = new XmlDocument(content);\n } catch {\n logger.debug(`ant manager: could not parse XML ${packageFile}`);\n return null;\n }\n\n const rawDeps: RawDep[] = [];\n walkNode(doc, rawDeps, packageFile, content);\n\n const deps = rawDeps.map((rd) => rd.dep);\n\n if (deps.length === 0) {\n return null;\n }\n\n return { deps };\n}\n\nasync function loadPropertyFile(\n file: string,\n baseDir: string,\n visitedFiles: Set<string>,\n allProps: Record<string, AntProp>,\n): Promise<void> {\n if (containsPlaceholder(file)) {\n logger.debug(\n `ant manager: skipping properties file with unresolved placeholders in path: ${file}`,\n );\n return;\n }\n\n const propFilePath = file.startsWith('/') ? file : upath.join(baseDir, file);\n\n if (!isValidLocalPath(propFilePath)) {\n logger.debug(\n `ant manager: skipping properties file outside repository: ${propFilePath}`,\n );\n return;\n }\n\n if (visitedFiles.has(propFilePath)) {\n return;\n }\n visitedFiles.add(propFilePath);\n\n const propContent = await readLocalFile(propFilePath, 'utf8');\n if (!propContent) {\n logger.debug(`ant manager: could not read properties file ${propFilePath}`);\n return;\n }\n\n parsePropertiesFile(propContent, propFilePath, allProps);\n}\n\nasync function loadImportedFile(\n file: string,\n baseDir: string,\n visitedFiles: Set<string>,\n allProps: Record<string, AntProp>,\n allRawDeps: RawDep[],\n): Promise<void> {\n if (containsPlaceholder(file)) {\n logger.debug(\n `ant manager: skipping import file with unresolved placeholders in path: ${file}`,\n );\n return;\n }\n\n const importedFile = upath.normalize(upath.join(baseDir, file));\n if (!isValidLocalPath(importedFile)) {\n logger.debug(\n `ant manager: skipping import file outside repository: ${importedFile}`,\n );\n return;\n }\n\n await walkXmlFile(importedFile, visitedFiles, allProps, allRawDeps);\n}\n\n/**\n * Walk an XML node tree in document order, processing properties,\n * property file references, and dependencies as they appear.\n */\nasync function walkNodeInOrder(\n node: XmlElement | XmlDocument,\n packageFile: string,\n content: string,\n visitedFiles: Set<string>,\n allProps: Record<string, AntProp>,\n allRawDeps: RawDep[],\n registryUrls: string[] = [],\n): Promise<void> {\n const baseDir = upath.dirname(packageFile);\n\n for (const child of node.children) {\n if (!isXmlElement(child)) {\n continue;\n }\n\n if (child.name === 'property') {\n const name = child.attr.name;\n const value = child.attr.value;\n if (name && value && !(name in allProps)) {\n const pos = findAttrValuePosition(content, child, 'value');\n allProps[name] = { val: value, fileReplacePosition: pos, packageFile };\n }\n\n if (child.attr.file) {\n await loadPropertyFile(\n child.attr.file,\n baseDir,\n visitedFiles,\n allProps,\n );\n }\n } else if (child.name === 'import' && child.attr.file) {\n await loadImportedFile(\n child.attr.file,\n baseDir,\n visitedFiles,\n allProps,\n allRawDeps,\n );\n } else if (child.name === 'dependency') {\n const rawDep = collectDependency(\n child,\n packageFile,\n content,\n registryUrls,\n );\n if (rawDep) {\n allRawDeps.push(rawDep);\n }\n } else {\n // Collect registry URLs from settingsFile and remoteRepository\n const childRegistries = await collectRegistryUrls(child, baseDir);\n const mergedUrls =\n childRegistries.length > 0 ? childRegistries : registryUrls;\n await walkNodeInOrder(\n child,\n packageFile,\n content,\n visitedFiles,\n allProps,\n allRawDeps,\n mergedUrls,\n );\n }\n }\n}\n\nasync function walkXmlFile(\n packageFile: string,\n visitedFiles: Set<string>,\n allProps: Record<string, AntProp>,\n allRawDeps: RawDep[],\n): Promise<void> {\n if (visitedFiles.has(packageFile)) {\n return;\n }\n visitedFiles.add(packageFile);\n\n const content = await readLocalFile(packageFile, 'utf8');\n if (!content) {\n logger.debug(`ant manager: could not read ${packageFile}`);\n return;\n }\n\n let doc: XmlDocument;\n try {\n doc = new XmlDocument(content);\n } catch {\n logger.debug(`ant manager: could not parse XML ${packageFile}`);\n return;\n }\n\n await walkNodeInOrder(\n doc,\n packageFile,\n content,\n visitedFiles,\n allProps,\n allRawDeps,\n );\n}\n\nexport async function extractAllPackageFiles(\n _config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const results: PackageFile[] = [];\n const seen = new Set<string>();\n\n for (const packageFile of packageFiles) {\n if (seen.has(packageFile)) {\n continue;\n }\n seen.add(packageFile);\n\n const visitedFiles = new Set<string>();\n const allProps: Record<string, AntProp> = {};\n const allRawDeps: RawDep[] = [];\n\n await walkXmlFile(packageFile, visitedFiles, allProps, allRawDeps);\n\n // Resolve chained property values before applying to deps\n resolveChainedProps(allProps);\n\n // Apply property resolution to all dependencies\n const resolvedDeps = allRawDeps.map((rawDep) =>\n applyProps(rawDep.dep, rawDep.depPackageFile, allProps),\n );\n\n if (resolvedDeps.length === 0) {\n continue;\n }\n\n // Group deps by their target file (propSource or original packageFile)\n const fileMap = new Map<string, PackageDependency[]>();\n for (let i = 0; i < resolvedDeps.length; i++) {\n const dep = resolvedDeps[i];\n const targetFile = dep.propSource ?? allRawDeps[i].depPackageFile;\n if (!fileMap.has(targetFile)) {\n fileMap.set(targetFile, []);\n }\n fileMap.get(targetFile)!.push(dep);\n }\n\n for (const [pkgFile, deps] of fileMap) {\n // Clean up internal propSource field\n for (const dep of deps) {\n delete dep.propSource;\n }\n results.push({ packageFile: pkgFile, deps });\n }\n }\n\n return results.length > 0 ? results : null;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/ant/extract.ts"],"sourcesContent":["import upath from 'upath';\nimport type { XmlElement } from 'xmldoc';\nimport { XmlDocument } from 'xmldoc';\nimport { logger } from '../../../logger/index.ts';\nimport { isValidLocalPath, readLocalFile } from '../../../util/fs/index.ts';\nimport { MavenDatasource } from '../../datasource/maven/index.ts';\nimport { extractRegistries } from '../maven/extract.ts';\nimport { isXmlElement } from '../nuget/util.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport {\n applyProps,\n containsPlaceholder,\n findAttrValuePosition,\n parsePropertiesFile,\n resolveChainedProps,\n} from './properties.ts';\nimport type { AntProp } from './types.ts';\n\nconst scopeNames = new Set([\n 'compile',\n 'runtime',\n 'test',\n 'provided',\n 'system',\n]);\n\nfunction getDependencyType(scope: string | undefined): string {\n if (scope && scopeNames.has(scope)) {\n return scope;\n }\n return 'compile';\n}\n\nfunction parseCoords(coordsStr: string): {\n groupId: string;\n artifactId: string;\n rawVersion: string;\n scope: string | undefined;\n} | null {\n const parts = coordsStr.split(':');\n if (parts.length < 3) {\n logger.trace({ coordsStr }, 'ant manager: coords has fewer than 3 parts');\n return null;\n }\n\n const [groupId, artifactId] = parts;\n if (!groupId || !artifactId) {\n logger.trace(\n { coordsStr },\n 'ant manager: coords has empty groupId or artifactId',\n );\n return null;\n }\n\n let scope: string | undefined;\n let rawVersion: string;\n\n if (parts.length >= 4 && scopeNames.has(parts.at(-1)!)) {\n scope = parts.at(-1);\n rawVersion = parts.at(-2)!;\n } else {\n rawVersion = parts.at(-1)!;\n }\n\n return { groupId, artifactId, rawVersion, scope };\n}\n\ninterface RawDep {\n dep: PackageDependency;\n depPackageFile: string;\n}\n\nasync function readSettingsRegistries(\n settingsFile: string,\n baseDir: string,\n): Promise<string[]> {\n const settingsPath = settingsFile.startsWith('/')\n ? settingsFile\n : upath.join(baseDir, settingsFile);\n\n if (!isValidLocalPath(settingsPath)) {\n logger.debug(\n `ant manager: skipping settings file outside repository: ${settingsPath}`,\n );\n return [];\n }\n\n const settingsContent = await readLocalFile(settingsPath, 'utf8');\n if (!settingsContent) {\n logger.debug(`ant manager: could not read settings file ${settingsPath}`);\n return [];\n }\n\n return extractRegistries(settingsContent);\n}\n\nasync function collectRegistryUrls(\n node: XmlElement,\n baseDir: string,\n): Promise<string[]> {\n const urls: string[] = [];\n\n const settingsFile = node.attr.settingsFile;\n if (settingsFile) {\n urls.push(...(await readSettingsRegistries(settingsFile, baseDir)));\n }\n\n for (const child of node.children) {\n if (\n isXmlElement(child) &&\n child.name === 'remoteRepository' &&\n child.attr.url\n ) {\n urls.push(child.attr.url);\n }\n }\n\n return [...new Set(urls)];\n}\n\nfunction collectCoordsDependency(\n node: XmlElement,\n packageFile: string,\n content: string,\n registryUrls: string[],\n): RawDep | null {\n const coordsStr = node.attr.coords;\n\n const parsed = parseCoords(coordsStr);\n if (!parsed) {\n return null;\n }\n\n const dep: PackageDependency = {\n datasource: MavenDatasource.id,\n depName: `${parsed.groupId}:${parsed.artifactId}`,\n currentValue: parsed.rawVersion,\n depType: getDependencyType(parsed.scope ?? node.attr.scope),\n ...(registryUrls?.length && { registryUrls }),\n };\n\n // Position at the version substring within the coords attribute value\n const coordsValuePos = findAttrValuePosition(content, node, 'coords');\n const versionOffset = coordsStr.lastIndexOf(parsed.rawVersion);\n dep.fileReplacePosition = coordsValuePos + versionOffset;\n\n return { dep, depPackageFile: packageFile };\n}\n\nfunction collectDependency(\n node: XmlElement,\n packageFile: string,\n content: string,\n registryUrls: string[] = [],\n): RawDep | null {\n if (node.attr.coords) {\n return collectCoordsDependency(node, packageFile, content, registryUrls);\n }\n\n const { groupId, artifactId, version, scope } = node.attr;\n\n if (!version || !groupId || !artifactId) {\n return null;\n }\n\n const dep: PackageDependency = {\n datasource: MavenDatasource.id,\n depName: `${groupId}:${artifactId}`,\n currentValue: version,\n depType: getDependencyType(scope),\n ...(registryUrls?.length && { registryUrls }),\n };\n\n dep.fileReplacePosition = findAttrValuePosition(content, node, 'version');\n\n return { dep, depPackageFile: packageFile };\n}\n\nfunction walkNode(\n node: XmlElement | XmlDocument,\n rawDeps: RawDep[],\n packageFile: string,\n content: string,\n): void {\n for (const child of node.children) {\n if (!isXmlElement(child)) {\n continue;\n }\n\n if (child.name === 'dependency') {\n const rawDep = collectDependency(child, packageFile, content);\n if (rawDep) {\n rawDeps.push(rawDep);\n }\n } else {\n walkNode(child, rawDeps, packageFile, content);\n }\n }\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): PackageFileContent | null {\n let doc: XmlDocument;\n try {\n doc = new XmlDocument(content);\n } catch {\n logger.debug(`ant manager: could not parse XML ${packageFile}`);\n return null;\n }\n\n const rawDeps: RawDep[] = [];\n walkNode(doc, rawDeps, packageFile, content);\n\n const deps = rawDeps.map((rd) => rd.dep);\n\n if (deps.length === 0) {\n return null;\n }\n\n return { deps };\n}\n\nasync function loadPropertyFile(\n file: string,\n baseDir: string,\n visitedFiles: Set<string>,\n allProps: Record<string, AntProp>,\n): Promise<void> {\n if (containsPlaceholder(file)) {\n logger.debug(\n `ant manager: skipping properties file with unresolved placeholders in path: ${file}`,\n );\n return;\n }\n\n const propFilePath = file.startsWith('/') ? file : upath.join(baseDir, file);\n\n if (!isValidLocalPath(propFilePath)) {\n logger.debug(\n `ant manager: skipping properties file outside repository: ${propFilePath}`,\n );\n return;\n }\n\n if (visitedFiles.has(propFilePath)) {\n return;\n }\n visitedFiles.add(propFilePath);\n\n const propContent = await readLocalFile(propFilePath, 'utf8');\n if (!propContent) {\n logger.debug(`ant manager: could not read properties file ${propFilePath}`);\n return;\n }\n\n parsePropertiesFile(propContent, propFilePath, allProps);\n}\n\nasync function loadImportedFile(\n file: string,\n baseDir: string,\n visitedFiles: Set<string>,\n allProps: Record<string, AntProp>,\n allRawDeps: RawDep[],\n): Promise<void> {\n if (containsPlaceholder(file)) {\n logger.debug(\n `ant manager: skipping import file with unresolved placeholders in path: ${file}`,\n );\n return;\n }\n\n const importedFile = upath.normalize(upath.join(baseDir, file));\n if (!isValidLocalPath(importedFile)) {\n logger.debug(\n `ant manager: skipping import file outside repository: ${importedFile}`,\n );\n return;\n }\n\n await walkXmlFile(importedFile, visitedFiles, allProps, allRawDeps);\n}\n\n/**\n * Walk an XML node tree in document order, processing properties,\n * property file references, and dependencies as they appear.\n */\nasync function walkNodeInOrder(\n node: XmlElement | XmlDocument,\n packageFile: string,\n content: string,\n visitedFiles: Set<string>,\n allProps: Record<string, AntProp>,\n allRawDeps: RawDep[],\n registryUrls: string[] = [],\n): Promise<void> {\n const baseDir = upath.dirname(packageFile);\n\n for (const child of node.children) {\n if (!isXmlElement(child)) {\n continue;\n }\n\n if (child.name === 'property') {\n const name = child.attr.name;\n const value = child.attr.value;\n if (name && value && !(name in allProps)) {\n const pos = findAttrValuePosition(content, child, 'value');\n allProps[name] = { val: value, fileReplacePosition: pos, packageFile };\n }\n\n if (child.attr.file) {\n await loadPropertyFile(\n child.attr.file,\n baseDir,\n visitedFiles,\n allProps,\n );\n }\n } else if (child.name === 'import' && child.attr.file) {\n await loadImportedFile(\n child.attr.file,\n baseDir,\n visitedFiles,\n allProps,\n allRawDeps,\n );\n } else if (child.name === 'dependency') {\n const rawDep = collectDependency(\n child,\n packageFile,\n content,\n registryUrls,\n );\n if (rawDep) {\n allRawDeps.push(rawDep);\n }\n } else {\n // Collect registry URLs from settingsFile and remoteRepository\n const childRegistries = await collectRegistryUrls(child, baseDir);\n const mergedUrls =\n childRegistries.length > 0 ? childRegistries : registryUrls;\n await walkNodeInOrder(\n child,\n packageFile,\n content,\n visitedFiles,\n allProps,\n allRawDeps,\n mergedUrls,\n );\n }\n }\n}\n\nasync function walkXmlFile(\n packageFile: string,\n visitedFiles: Set<string>,\n allProps: Record<string, AntProp>,\n allRawDeps: RawDep[],\n): Promise<void> {\n if (visitedFiles.has(packageFile)) {\n return;\n }\n visitedFiles.add(packageFile);\n\n const content = await readLocalFile(packageFile, 'utf8');\n if (!content) {\n logger.debug(`ant manager: could not read ${packageFile}`);\n return;\n }\n\n let doc: XmlDocument;\n try {\n doc = new XmlDocument(content);\n } catch {\n logger.debug(`ant manager: could not parse XML ${packageFile}`);\n return;\n }\n\n await walkNodeInOrder(\n doc,\n packageFile,\n content,\n visitedFiles,\n allProps,\n allRawDeps,\n );\n}\n\nexport async function extractAllPackageFiles(\n _config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const results: PackageFile[] = [];\n const seen = new Set<string>();\n\n for (const packageFile of packageFiles) {\n if (seen.has(packageFile)) {\n continue;\n }\n seen.add(packageFile);\n\n const visitedFiles = new Set<string>();\n const allProps: Record<string, AntProp> = {};\n const allRawDeps: RawDep[] = [];\n\n await walkXmlFile(packageFile, visitedFiles, allProps, allRawDeps);\n\n // Resolve chained property values before applying to deps\n resolveChainedProps(allProps);\n\n // Apply property resolution to all dependencies\n const resolvedDeps = allRawDeps.map((rawDep) =>\n applyProps(rawDep.dep, rawDep.depPackageFile, allProps),\n );\n\n if (resolvedDeps.length === 0) {\n continue;\n }\n\n // Group deps by their target file (propSource or original packageFile)\n const fileMap = new Map<string, PackageDependency[]>();\n for (let i = 0; i < resolvedDeps.length; i++) {\n const dep = resolvedDeps[i];\n const targetFile = dep.propSource ?? allRawDeps[i].depPackageFile;\n if (!fileMap.has(targetFile)) {\n fileMap.set(targetFile, []);\n }\n fileMap.get(targetFile)!.push(dep);\n }\n\n for (const [pkgFile, deps] of fileMap) {\n // Clean up internal propSource field\n for (const dep of deps) {\n delete dep.propSource;\n }\n results.push({ packageFile: pkgFile, deps });\n }\n }\n\n return results.length > 0 ? results : null;\n}\n"],"mappings":";;;;;;;;;AAuBA,MAAM,6BAAa,IAAI,IAAI;CACzB;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAS,kBAAkB,OAAmC;CAC5D,IAAI,SAAS,WAAW,IAAI,KAAK,GAC/B,OAAO;CAET,OAAO;AACT;AAEA,SAAS,YAAY,WAKZ;CACP,MAAM,QAAQ,UAAU,MAAM,GAAG;CACjC,IAAI,MAAM,SAAS,GAAG;EACpB,OAAO,MAAM,EAAE,UAAU,GAAG,4CAA4C;EACxE,OAAO;CACT;CAEA,MAAM,CAAC,SAAS,cAAc;CAC9B,IAAI,CAAC,WAAW,CAAC,YAAY;EAC3B,OAAO,MACL,EAAE,UAAU,GACZ,qDACF;EACA,OAAO;CACT;CAEA,IAAI;CACJ,IAAI;CAEJ,IAAI,MAAM,UAAU,KAAK,WAAW,IAAI,MAAM,GAAG,EAAE,CAAE,GAAG;EACtD,QAAQ,MAAM,GAAG,EAAE;EACnB,aAAa,MAAM,GAAG,EAAE;CAC1B,OACE,aAAa,MAAM,GAAG,EAAE;CAG1B,OAAO;EAAE;EAAS;EAAY;EAAY;CAAM;AAClD;AAOA,eAAe,uBACb,cACA,SACmB;CACnB,MAAM,eAAe,aAAa,WAAW,GAAG,IAC5C,eACA,MAAM,KAAK,SAAS,YAAY;CAEpC,IAAI,CAAC,iBAAiB,YAAY,GAAG;EACnC,OAAO,MACL,2DAA2D,cAC7D;EACA,OAAO,CAAC;CACV;CAEA,MAAM,kBAAkB,MAAM,cAAc,cAAc,MAAM;CAChE,IAAI,CAAC,iBAAiB;EACpB,OAAO,MAAM,6CAA6C,cAAc;EACxE,OAAO,CAAC;CACV;CAEA,OAAO,kBAAkB,eAAe;AAC1C;AAEA,eAAe,oBACb,MACA,SACmB;CACnB,MAAM,OAAiB,CAAC;CAExB,MAAM,eAAe,KAAK,KAAK;CAC/B,IAAI,cACF,KAAK,KAAK,GAAI,MAAM,uBAAuB,cAAc,OAAO,CAAE;CAGpE,KAAK,MAAM,SAAS,KAAK,UACvB,IACE,aAAa,KAAK,KAClB,MAAM,SAAS,sBACf,MAAM,KAAK,KAEX,KAAK,KAAK,MAAM,KAAK,GAAG;CAI5B,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;AAC1B;AAEA,SAAS,wBACP,MACA,aACA,SACA,cACe;CACf,MAAM,YAAY,KAAK,KAAK;CAE5B,MAAM,SAAS,YAAY,SAAS;CACpC,IAAI,CAAC,QACH,OAAO;CAGT,MAAM,MAAyB;EAC7B,YAAY,gBAAgB;EAC5B,SAAS,GAAG,OAAO,QAAQ,GAAG,OAAO;EACrC,cAAc,OAAO;EACrB,SAAS,kBAAkB,OAAO,SAAS,KAAK,KAAK,KAAK;EAC1D,GAAI,cAAc,UAAU,EAAE,aAAa;CAC7C;CAKA,IAAI,sBAFmB,sBAAsB,SAAS,MAAM,QAErB,IADjB,UAAU,YAAY,OAAO,UACI;CAEvD,OAAO;EAAE;EAAK,gBAAgB;CAAY;AAC5C;AAEA,SAAS,kBACP,MACA,aACA,SACA,eAAyB,CAAC,GACX;CACf,IAAI,KAAK,KAAK,QACZ,OAAO,wBAAwB,MAAM,aAAa,SAAS,YAAY;CAGzE,MAAM,EAAE,SAAS,YAAY,SAAS,UAAU,KAAK;CAErD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,YAC3B,OAAO;CAGT,MAAM,MAAyB;EAC7B,YAAY,gBAAgB;EAC5B,SAAS,GAAG,QAAQ,GAAG;EACvB,cAAc;EACd,SAAS,kBAAkB,KAAK;EAChC,GAAI,cAAc,UAAU,EAAE,aAAa;CAC7C;CAEA,IAAI,sBAAsB,sBAAsB,SAAS,MAAM,SAAS;CAExE,OAAO;EAAE;EAAK,gBAAgB;CAAY;AAC5C;AAEA,SAAS,SACP,MACA,SACA,aACA,SACM;CACN,KAAK,MAAM,SAAS,KAAK,UAAU;EACjC,IAAI,CAAC,aAAa,KAAK,GACrB;EAGF,IAAI,MAAM,SAAS,cAAc;GAC/B,MAAM,SAAS,kBAAkB,OAAO,aAAa,OAAO;GAC5D,IAAI,QACF,QAAQ,KAAK,MAAM;EAEvB,OACE,SAAS,OAAO,SAAS,aAAa,OAAO;CAEjD;AACF;AAEA,SAAgB,mBACd,SACA,aAC2B;CAC3B,IAAI;CACJ,IAAI;EACF,MAAM,IAAI,YAAY,OAAO;CAC/B,QAAQ;EACN,OAAO,MAAM,oCAAoC,aAAa;EAC9D,OAAO;CACT;CAEA,MAAM,UAAoB,CAAC;CAC3B,SAAS,KAAK,SAAS,aAAa,OAAO;CAE3C,MAAM,OAAO,QAAQ,KAAK,OAAO,GAAG,GAAG;CAEvC,IAAI,KAAK,WAAW,GAClB,OAAO;CAGT,OAAO,EAAE,KAAK;AAChB;AAEA,eAAe,iBACb,MACA,SACA,cACA,UACe;CACf,IAAI,oBAAoB,IAAI,GAAG;EAC7B,OAAO,MACL,+EAA+E,MACjF;EACA;CACF;CAEA,MAAM,eAAe,KAAK,WAAW,GAAG,IAAI,OAAO,MAAM,KAAK,SAAS,IAAI;CAE3E,IAAI,CAAC,iBAAiB,YAAY,GAAG;EACnC,OAAO,MACL,6DAA6D,cAC/D;EACA;CACF;CAEA,IAAI,aAAa,IAAI,YAAY,GAC/B;CAEF,aAAa,IAAI,YAAY;CAE7B,MAAM,cAAc,MAAM,cAAc,cAAc,MAAM;CAC5D,IAAI,CAAC,aAAa;EAChB,OAAO,MAAM,+CAA+C,cAAc;EAC1E;CACF;CAEA,oBAAoB,aAAa,cAAc,QAAQ;AACzD;AAEA,eAAe,iBACb,MACA,SACA,cACA,UACA,YACe;CACf,IAAI,oBAAoB,IAAI,GAAG;EAC7B,OAAO,MACL,2EAA2E,MAC7E;EACA;CACF;CAEA,MAAM,eAAe,MAAM,UAAU,MAAM,KAAK,SAAS,IAAI,CAAC;CAC9D,IAAI,CAAC,iBAAiB,YAAY,GAAG;EACnC,OAAO,MACL,yDAAyD,cAC3D;EACA;CACF;CAEA,MAAM,YAAY,cAAc,cAAc,UAAU,UAAU;AACpE;;;;;AAMA,eAAe,gBACb,MACA,aACA,SACA,cACA,UACA,YACA,eAAyB,CAAC,GACX;CACf,MAAM,UAAU,MAAM,QAAQ,WAAW;CAEzC,KAAK,MAAM,SAAS,KAAK,UAAU;EACjC,IAAI,CAAC,aAAa,KAAK,GACrB;EAGF,IAAI,MAAM,SAAS,YAAY;GAC7B,MAAM,OAAO,MAAM,KAAK;GACxB,MAAM,QAAQ,MAAM,KAAK;GACzB,IAAI,QAAQ,SAAS,EAAE,QAAQ,WAE7B,SAAS,QAAQ;IAAE,KAAK;IAAO,qBADnB,sBAAsB,SAAS,OAAO,OACI;IAAG;GAAY;GAGvE,IAAI,MAAM,KAAK,MACb,MAAM,iBACJ,MAAM,KAAK,MACX,SACA,cACA,QACF;EAEJ,OAAO,IAAI,MAAM,SAAS,YAAY,MAAM,KAAK,MAC/C,MAAM,iBACJ,MAAM,KAAK,MACX,SACA,cACA,UACA,UACF;OACK,IAAI,MAAM,SAAS,cAAc;GACtC,MAAM,SAAS,kBACb,OACA,aACA,SACA,YACF;GACA,IAAI,QACF,WAAW,KAAK,MAAM;EAE1B,OAAO;GAEL,MAAM,kBAAkB,MAAM,oBAAoB,OAAO,OAAO;GAGhE,MAAM,gBACJ,OACA,aACA,SACA,cACA,UACA,YAPA,gBAAgB,SAAS,IAAI,kBAAkB,YASjD;EACF;CACF;AACF;AAEA,eAAe,YACb,aACA,cACA,UACA,YACe;CACf,IAAI,aAAa,IAAI,WAAW,GAC9B;CAEF,aAAa,IAAI,WAAW;CAE5B,MAAM,UAAU,MAAM,cAAc,aAAa,MAAM;CACvD,IAAI,CAAC,SAAS;EACZ,OAAO,MAAM,+BAA+B,aAAa;EACzD;CACF;CAEA,IAAI;CACJ,IAAI;EACF,MAAM,IAAI,YAAY,OAAO;CAC/B,QAAQ;EACN,OAAO,MAAM,oCAAoC,aAAa;EAC9D;CACF;CAEA,MAAM,gBACJ,KACA,aACA,SACA,cACA,UACA,UACF;AACF;AAEA,eAAsB,uBACpB,SACA,cAC+B;CAC/B,MAAM,UAAyB,CAAC;CAChC,MAAM,uBAAO,IAAI,IAAY;CAE7B,KAAK,MAAM,eAAe,cAAc;EACtC,IAAI,KAAK,IAAI,WAAW,GACtB;EAEF,KAAK,IAAI,WAAW;EAEpB,MAAM,+BAAe,IAAI,IAAY;EACrC,MAAM,WAAoC,CAAC;EAC3C,MAAM,aAAuB,CAAC;EAE9B,MAAM,YAAY,aAAa,cAAc,UAAU,UAAU;EAGjE,oBAAoB,QAAQ;EAG5B,MAAM,eAAe,WAAW,KAAK,WACnC,WAAW,OAAO,KAAK,OAAO,gBAAgB,QAAQ,CACxD;EAEA,IAAI,aAAa,WAAW,GAC1B;EAIF,MAAM,0BAAU,IAAI,IAAiC;EACrD,KAAK,IAAI,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;GAC5C,MAAM,MAAM,aAAa;GACzB,MAAM,aAAa,IAAI,cAAc,WAAW,EAAE,CAAC;GACnD,IAAI,CAAC,QAAQ,IAAI,UAAU,GACzB,QAAQ,IAAI,YAAY,CAAC,CAAC;GAE5B,QAAQ,IAAI,UAAU,CAAC,CAAE,KAAK,GAAG;EACnC;EAEA,KAAK,MAAM,CAAC,SAAS,SAAS,SAAS;GAErC,KAAK,MAAM,OAAO,MAChB,OAAO,IAAI;GAEb,QAAQ,KAAK;IAAE,aAAa;IAAS;GAAK,CAAC;EAC7C;CACF;CAEA,OAAO,QAAQ,SAAS,IAAI,UAAU;AACxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","names":[],"sources":["../../../../lib/modules/manager/argocd/util.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\n\
|
|
1
|
+
{"version":3,"file":"util.js","names":[],"sources":["../../../../lib/modules/manager/argocd/util.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\n\n// looks for `apiVersion: argoproj.io/` with optional quoting of the value\nexport const fileTestRegex = regEx(/\\s*apiVersion:\\s*'?\"?argoproj.io\\//);\n"],"mappings":";;AAGA,MAAa,gBAAgB,MAAM,oCAAoC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { regEx } from "../../../util/regex.js";
|
|
2
|
-
import { LooseRecord, Toml
|
|
2
|
+
import { LooseRecord, Toml } from "../../../util/schema-utils/index.js";
|
|
3
3
|
import { id } from "../../versioning/pep440/index.js";
|
|
4
4
|
import { id as id$1 } from "../../versioning/conda/index.js";
|
|
5
5
|
import "../../versioning/git/index.js";
|
|
@@ -133,7 +133,6 @@ const PixiConfig = z.union([PixiWorkspace, PixiProject]).and(z.object({ feature:
|
|
|
133
133
|
}) })).and(DependenciesMixin);
|
|
134
134
|
const PixiFile = Toml.pipe(PixiConfig);
|
|
135
135
|
const PixiPyProject = Toml.pipe(PyProject.extend({ tool: z.object({ pixi: PixiConfig.optional().catch(void 0) }).optional().catch(void 0) }));
|
|
136
|
-
Yaml.pipe(z.object({ version: z.number() }));
|
|
137
136
|
//#endregion
|
|
138
137
|
export { PixiConfig, PixiFile, PixiPyProject };
|
|
139
138
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","names":["pep440VersionID","condaVersion.id"],"sources":["../../../../lib/modules/manager/pixi/schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { regEx } from '../../../util/regex.ts';\nimport { LooseRecord, Toml
|
|
1
|
+
{"version":3,"file":"schema.js","names":["pep440VersionID","condaVersion.id"],"sources":["../../../../lib/modules/manager/pixi/schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { regEx } from '../../../util/regex.ts';\nimport { LooseRecord, Toml } from '../../../util/schema-utils/index.ts';\nimport { CondaDatasource } from '../../datasource/conda//index.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport * as condaVersion from '../../versioning/conda//index.ts';\nimport { id as gitRefVersionID } from '../../versioning/git/index.ts';\nimport { id as pep440VersionID } from '../../versioning/pep440//index.ts';\nimport { PyProject } from '../pep621/schema.ts';\nimport type { PackageDependency } from '../types.ts';\n\nexport type Channels = z.infer<typeof Channel>[];\n\nconst Channel = z.union([\n z.string(),\n z.object({\n channel: z.string(),\n priority: z.number().optional(),\n 'exclude-newer': z.string().optional(),\n }),\n]);\n\nexport interface PixiPackageDependency extends PackageDependency {\n channel?: string;\n channels?: Channels;\n}\n\nfunction collectNamedPackages(\n packages: Record<string, PackageDependency>,\n): PackageDependency[] {\n return Object.entries(packages).map(([depName, config]) => {\n return {\n ...config,\n depName,\n };\n });\n}\n\nconst PypiDependency = z\n .union([\n z.string().transform((version) => ({ version })),\n z.object({ version: z.string() }),\n ])\n .transform(({ version }) => {\n const dep: PixiPackageDependency = {\n currentValue: version,\n versioning: pep440VersionID,\n datasource: PypiDatasource.id,\n };\n if (version.startsWith('==')) {\n dep.currentVersion = version.replace(regEx(/^==\\s*/), '');\n }\n return dep;\n });\n\nconst PypiGitDependency = z\n .object({ git: z.string(), rev: z.optional(z.string()) })\n .transform(({ git, rev }) => {\n // empty ref default to HEAD, so do we not need to do anything\n if (!rev) {\n return {\n currentValue: rev,\n packageName: git,\n datasource: GitRefsDatasource.id,\n versioning: gitRefVersionID,\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n } satisfies PixiPackageDependency;\n }\n\n return {\n currentValue: rev,\n packageName: git,\n datasource: GitRefsDatasource.id,\n versioning: gitRefVersionID,\n } satisfies PixiPackageDependency;\n });\n\nconst PypiDependencies = LooseRecord(\n z.string(),\n z.union([PypiDependency, PypiGitDependency]),\n).transform(collectNamedPackages);\n\nconst CondaDependency = z\n .union([\n z.string().transform((version) => ({ version, channel: undefined })),\n z.object({ version: z.string(), channel: z.optional(z.string()) }),\n ])\n .transform(({ version, channel }) => {\n return {\n currentValue: version,\n versioning: condaVersion.id,\n datasource: CondaDatasource.id,\n channel,\n } satisfies PixiPackageDependency;\n });\n\nconst CondaDependencies = LooseRecord(z.string(), CondaDependency).transform(\n collectNamedPackages,\n);\n\nconst Targets = LooseRecord(\n z.string(),\n z.object({\n dependencies: z.optional(CondaDependencies).default([]),\n 'pypi-dependencies': z.optional(PypiDependencies).default([]),\n }),\n).transform((val) => {\n const conda: PixiPackageDependency[] = [];\n const pypi: PixiPackageDependency[] = [];\n for (const value of Object.values(val)) {\n pypi.push(...value['pypi-dependencies']);\n\n conda.push(...value.dependencies);\n }\n\n return { pypi, conda };\n});\n\nconst Project = z.object({\n channels: z.array(Channel).default([]),\n 'requires-pixi': z.string().optional(),\n 'channel-priority': z\n .union([z.literal('strict'), z.literal('disabled')])\n .default('strict'),\n});\n\nconst DependenciesMixin = z\n .object({\n dependencies: z.optional(CondaDependencies).default([]),\n 'pypi-dependencies': z.optional(PypiDependencies).default([]),\n target: z.optional(Targets).default({ pypi: [], conda: [] }),\n })\n .transform(\n (\n val,\n ): { pypi: PixiPackageDependency[]; conda: PixiPackageDependency[] } => {\n return {\n conda: [...val.dependencies, ...val.target.conda],\n pypi: [...val['pypi-dependencies'], ...val.target.pypi],\n };\n },\n );\n\nconst Features = LooseRecord(\n z.string(),\n z\n .object({\n channels: z.array(Channel).optional(),\n })\n .and(DependenciesMixin),\n).transform(\n (\n features,\n ): {\n conda: PixiPackageDependency[];\n pypi: PixiPackageDependency[];\n } => {\n const pypi: PixiPackageDependency[] = [];\n const conda: PixiPackageDependency[] = [];\n\n for (const [name, feature] of Object.entries(features)) {\n conda.push(\n ...feature.conda.map((item) => {\n return {\n ...item,\n depType: `feature-${name}`,\n channels: feature.channels,\n };\n }),\n );\n\n pypi.push(\n ...feature.pypi.map((item) => ({\n depType: `feature-${name}`,\n ...item,\n })),\n );\n }\n\n return { pypi, conda };\n },\n);\n\nconst PixiWorkspace = z\n .object({\n workspace: Project,\n })\n .transform((val) => {\n return { project: val.workspace };\n });\n\nconst PixiProject = z.object({\n project: Project,\n});\n\n/**\n * `$` of `pixi.toml` or `$.tool.pixi` of `pyproject.toml`\n */\nexport const PixiConfig = z\n .union([PixiWorkspace, PixiProject])\n .and(z.object({ feature: Features.default({ pypi: [], conda: [] }) }))\n .and(DependenciesMixin);\n\nexport type PixiConfig = z.infer<typeof PixiConfig>;\n\nexport const PixiFile = Toml.pipe(PixiConfig);\n\nexport const PixiPyProject = Toml.pipe(\n PyProject.extend({\n tool: z\n .object({ pixi: PixiConfig.optional().catch(undefined) })\n .optional()\n .catch(undefined),\n }),\n);\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { newlineRegex
|
|
1
|
+
import { newlineRegex } from "../../../util/regex.js";
|
|
2
2
|
import { keyValueExtractionRegex } from "./util.js";
|
|
3
|
-
|
|
3
|
+
//#region lib/modules/manager/terragrunt/providers.ts
|
|
4
4
|
function extractBracesContent(content) {
|
|
5
5
|
const stack = [];
|
|
6
6
|
let i = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","names":[],"sources":["../../../../lib/modules/manager/terragrunt/providers.ts"],"sourcesContent":["import { newlineRegex
|
|
1
|
+
{"version":3,"file":"providers.js","names":[],"sources":["../../../../lib/modules/manager/terragrunt/providers.ts"],"sourcesContent":["import { newlineRegex } from '../../../util/regex.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type { ExtractionResult, TerraformManagerData } from './types.ts';\nimport { keyValueExtractionRegex } from './util.ts';\n\nfunction extractBracesContent(content: string): number {\n const stack: string[] = [];\n let i = 0;\n for (i; i < content.length; i += 1) {\n if (content[i] === '{') {\n stack.push(content[i]);\n } else if (content[i] === '}') {\n stack.pop();\n if (stack.length === 0) {\n break;\n }\n }\n }\n return i;\n}\n\nexport function extractTerragruntProvider(\n startingLine: number,\n lines: string[],\n moduleName: string,\n): ExtractionResult {\n const lineNumber = startingLine;\n let line: string;\n const deps: PackageDependency<TerraformManagerData>[] = [];\n const managerData: TerraformManagerData = {\n moduleName,\n terragruntDependencyType: 'terraform',\n };\n const dep: PackageDependency<TerraformManagerData> = { managerData };\n const teraformContent = lines\n .slice(lineNumber)\n .join('\\n')\n .substring(0, extractBracesContent(lines.slice(lineNumber).join('\\n')))\n .split(newlineRegex);\n\n for (let lineNo = 0; lineNo < teraformContent.length; lineNo += 1) {\n line = teraformContent[lineNo];\n const kvGroups = keyValueExtractionRegex.exec(line)?.groups;\n if (kvGroups) {\n managerData.source = kvGroups.value;\n managerData.sourceLine = lineNumber + lineNo;\n }\n }\n deps.push(dep);\n return { lineNumber, dependencies: deps };\n}\n"],"mappings":";;;AAKA,SAAS,qBAAqB,SAAyB;CACrD,MAAM,QAAkB,CAAC;CACzB,IAAI,IAAI;CACR,OAAQ,IAAI,QAAQ,QAAQ,KAAK,GAC/B,IAAI,QAAQ,OAAO,KACjB,MAAM,KAAK,QAAQ,EAAE;MAChB,IAAI,QAAQ,OAAO,KAAK;EAC7B,MAAM,IAAI;EACV,IAAI,MAAM,WAAW,GACnB;CAEJ;CAEF,OAAO;AACT;AAEA,SAAgB,0BACd,cACA,OACA,YACkB;CAClB,MAAM,aAAa;CACnB,IAAI;CACJ,MAAM,OAAkD,CAAC;CACzD,MAAM,cAAoC;EACxC;EACA,0BAA0B;CAC5B;CACA,MAAM,MAA+C,EAAE,YAAY;CACnE,MAAM,kBAAkB,MACrB,MAAM,UAAU,CAAC,CACjB,KAAK,IAAI,CAAC,CACV,UAAU,GAAG,qBAAqB,MAAM,MAAM,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CACtE,MAAM,YAAY;CAErB,KAAK,IAAI,SAAS,GAAG,SAAS,gBAAgB,QAAQ,UAAU,GAAG;EACjE,OAAO,gBAAgB;EACvB,MAAM,WAAW,wBAAwB,KAAK,IAAI,CAAC,EAAE;EACrD,IAAI,UAAU;GACZ,YAAY,SAAS,SAAS;GAC9B,YAAY,aAAa,aAAa;EACxC;CACF;CACA,KAAK,KAAK,GAAG;CACb,OAAO;EAAE;EAAY,cAAc;CAAK;AAC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containerbase.js","names":["memCache.get"],"sources":["../../../lib/util/exec/containerbase.ts"],"sourcesContent":["import { type ToolMetadata, tools } from '@renovatebot/base-image';\nimport { isString } from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { GlobalConfig } from '../../config/global.ts';\nimport { logger } from '../../logger/index.ts';\nimport type { ReleaseResult } from '../../modules/datasource/index.ts';\nimport type { VersioningApi } from '../../modules/versioning/types.ts';\nimport { coerceArray } from '../array.ts';\nimport * as memCache from '../cache/memory/index.ts';\nimport { buildCacheKey } from '../cache/package/key.ts';\nimport { getEnv } from '../env.ts';\nimport { regEx } from '../regex.ts';\nimport {\n type ConstraintName,\n type Opt,\n type ToolConfig,\n type ToolConstraint,\n type ToolName,\n isToolName,\n} from './types.ts';\n\n/**\n * A subset of Containerbase tools that are supported by Renovate to look up version numbers for.\n */\nexport const allToolConfig: Partial<Record<ToolName, ToolConfig>> = {\n apm: {\n datasource: 'github-releases',\n packageName: 'microsoft/apm',\n versioning: 'semver',\n extractVersion: '^v(?<version>.*)$',\n },\n bazelisk: {\n datasource: 'github-releases',\n packageName: 'bazelbuild/bazelisk',\n versioning: 'semver',\n },\n bun: {\n datasource: 'github-releases',\n packageName: 'oven-sh/bun',\n extractVersion: '^bun-v(?<version>.*)$',\n versioning: 'npm',\n },\n bundler: {\n datasource: 'rubygems',\n packageName: 'bundler',\n versioning: 'ruby',\n },\n cocoapods: {\n datasource: 'rubygems',\n packageName: 'cocoapods',\n versioning: 'ruby',\n },\n composer: {\n datasource: 'github-releases',\n packageName: 'containerbase/composer-prebuild',\n versioning: 'composer',\n },\n conan: {\n datasource: 'pypi',\n packageName: 'conan',\n versioning: 'pep440',\n },\n copier: {\n datasource: 'pypi',\n packageName: 'copier',\n versioning: 'pep440',\n },\n corepack: {\n datasource: 'npm',\n packageName: 'corepack',\n versioning: 'npm',\n },\n deno: {\n datasource: 'github-releases',\n packageName: 'denoland/deno',\n versioning: 'deno',\n },\n devbox: {\n datasource: 'github-releases',\n packageName: 'jetify-com/devbox',\n versioning: 'semver',\n },\n dotnet: {\n datasource: 'dotnet-version',\n packageName: 'dotnet-sdk',\n versioning: 'semver',\n },\n erlang: {\n datasource: 'github-releases',\n packageName: 'containerbase/erlang-prebuild',\n versioning: 'semver-coerced',\n },\n elixir: {\n datasource: 'github-releases',\n packageName: 'elixir-lang/elixir',\n versioning: 'semver',\n },\n flux: {\n datasource: 'github-releases',\n packageName: 'fluxcd/flux2',\n versioning: 'semver',\n },\n gh: {\n datasource: 'github-releases',\n packageName: 'cli/cli',\n versioning: 'semver',\n },\n gleam: {\n datasource: 'github-releases',\n packageName: 'gleam-lang/gleam',\n versioning: 'semver',\n },\n golang: {\n datasource: 'github-releases',\n packageName: 'containerbase/golang-prebuild',\n versioning: 'npm',\n },\n gradle: {\n datasource: 'gradle-version',\n packageName: 'gradle',\n versioning: 'gradle',\n },\n hashin: {\n datasource: 'pypi',\n packageName: 'hashin',\n versioning: 'pep440',\n },\n helm: {\n datasource: 'github-releases',\n packageName: 'helm/helm',\n versioning: 'semver',\n },\n helmfile: {\n datasource: 'github-releases',\n packageName: 'helmfile/helmfile',\n versioning: 'semver',\n },\n java: {\n datasource: 'java-version',\n packageName: 'java?system=true',\n versioning: 'npm',\n },\n jb: {\n datasource: 'github-releases',\n packageName: 'jsonnet-bundler/jsonnet-bundler',\n versioning: 'semver',\n },\n kustomize: {\n datasource: 'github-releases',\n packageName: 'kubernetes-sigs/kustomize',\n extractVersion: '^kustomize/v(?<version>.*)$',\n versioning: 'semver',\n },\n maven: {\n datasource: 'github-releases',\n packageName: 'containerbase/maven-prebuild',\n versioning: 'maven',\n },\n mise: {\n datasource: 'github-releases',\n packageName: 'jdx/mise',\n versioning: 'npm',\n },\n nix: {\n datasource: 'github-releases',\n packageName: 'containerbase/nix-prebuild',\n versioning: 'semver',\n },\n node: {\n datasource: 'github-releases',\n packageName: 'containerbase/node-prebuild',\n versioning: 'node',\n },\n npm: {\n datasource: 'npm',\n packageName: 'npm',\n versioning: 'npm',\n },\n pdm: {\n datasource: 'github-releases',\n packageName: 'pdm-project/pdm',\n versioning: 'semver',\n },\n php: {\n datasource: 'github-releases',\n packageName: 'containerbase/php-prebuild',\n versioning: 'composer',\n },\n 'pip-tools': {\n datasource: 'pypi',\n packageName: 'pip-tools',\n versioning: 'pep440',\n },\n pipenv: {\n datasource: 'pypi',\n packageName: 'pipenv',\n versioning: 'pep440',\n },\n pnpm: {\n datasource: 'npm',\n packageName: 'pnpm',\n versioning: 'npm',\n },\n pixi: {\n datasource: 'github-releases',\n packageName: 'prefix-dev/pixi',\n versioning: 'conda',\n extractVersion: '^v(?<version>.*)$',\n },\n poetry: {\n datasource: 'pypi',\n packageName: 'poetry',\n versioning: 'pep440',\n },\n python: {\n datasource: 'github-releases',\n packageName: 'containerbase/python-prebuild',\n versioning: 'python',\n },\n ruby: {\n datasource: 'github-releases',\n packageName: 'containerbase/ruby-prebuild',\n versioning: 'ruby',\n },\n rust: {\n datasource: 'rust-version',\n packageName: 'rust',\n versioning: 'rust-release-channel',\n },\n uv: {\n datasource: 'pypi',\n packageName: 'uv',\n versioning: 'pep440',\n },\n yarn: {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: 'npm',\n },\n 'yarn-slim': {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: 'npm',\n },\n dart: {\n datasource: 'dart-version',\n packageName: 'dart',\n versioning: 'npm',\n },\n flutter: {\n datasource: 'github-releases',\n packageName: 'containerbase/flutter-prebuild',\n versioning: 'npm',\n },\n vendir: {\n datasource: 'github-releases',\n packageName: 'carvel-dev/vendir',\n versioning: 'semver',\n },\n} as const;\n\n/**\n * A Containerbase `tool` that Renovate supports configuring the version of.\n */\nexport type SupportedToolNames = keyof typeof allToolConfig;\n\n/**\n * All Containerbase `tool`s that Renovate supports configuring the version of.\n */\nexport function getSupportedToolNames(): readonly ToolName[] {\n return Object.keys(allToolConfig) as readonly ToolName[];\n}\n\nlet _getPkgReleases: Promise<\n typeof import('../../modules/datasource/index.ts')\n> | null = null;\n\nasync function getPkgReleases(\n toolConfig: ToolConfig,\n resolvedTools: Partial<Record<ConstraintName, string>> = {},\n): Promise<ReleaseResult | null> {\n _getPkgReleases ??= import('../../modules/datasource/index.ts');\n const { getPkgReleases } = await _getPkgReleases;\n if (Object.keys(resolvedTools).length) {\n // drop releases whose runtime constraints (e.g. `engines.node`) exclude the runtime versions we install\n const compatible = await getPkgReleases({\n ...toolConfig,\n constraintsFiltering: 'strict',\n constraints: { ...resolvedTools },\n });\n if (compatible?.releases.length) {\n return compatible;\n }\n logger.debug(\n { toolConfig, resolvedTools },\n 'No tool releases compatible with resolved tools - ignoring their constraints',\n );\n }\n return getPkgReleases(toolConfig);\n}\n\nexport function getToolConfig(toolName: ToolName): ToolConfig | undefined {\n return allToolConfig[toolName];\n}\n\nexport function supportsDynamicInstall(toolName: ToolName): boolean {\n return !!allToolConfig[toolName];\n}\n\nexport function isContainerbase(): boolean {\n return !!getEnv().CONTAINERBASE;\n}\n\nexport function isDynamicInstall(\n toolConstraints?: Opt<ToolConstraint[]>,\n): boolean {\n if (GlobalConfig.get('binarySource') !== 'install') {\n return false;\n }\n if (!isContainerbase()) {\n logger.debug('Falling back to binarySource=global');\n return false;\n }\n return (\n !toolConstraints ||\n toolConstraints.every((toolConstraint) =>\n supportsDynamicInstall(toolConstraint.toolName),\n )\n );\n}\n\nfunction isStable(\n version: string,\n versioningApi: VersioningApi,\n latest?: string,\n): boolean {\n if (!versioningApi.isStable(version)) {\n return false;\n }\n if (isString(latest) && versioningApi.isGreaterThan(version, latest)) {\n return false;\n }\n return true;\n}\n\nexport async function resolveConstraint(\n toolConstraint: ToolConstraint,\n resolvedTools: Partial<Record<ConstraintName, string>> = {},\n): Promise<string> {\n const { toolName } = toolConstraint;\n const toolConfig = allToolConfig[toolName];\n if (!toolConfig) {\n throw new Error(`Invalid tool to install: ${toolName}`);\n }\n\n const { get: getVersioning } =\n await import('../../modules/versioning/index.ts');\n const versioning = getVersioning(toolConfig.versioning);\n let constraint = toolConstraint.constraint;\n if (constraint) {\n if (versioning.isValid(constraint)) {\n if (versioning.isSingleVersion(constraint)) {\n return constraint.replace(regEx(/^=+/), '').trim();\n }\n } else {\n logger.warn(\n { toolName, constraint, versioning: toolConfig.versioning },\n 'Invalid tool constraint',\n );\n constraint = undefined;\n }\n }\n\n const pkgReleases = await getPkgReleases(toolConfig, resolvedTools);\n const releases = coerceArray(pkgReleases?.releases);\n\n if (!releases?.length) {\n logger.warn({ toolConfig }, 'No tool releases found.');\n throw new Error('No tool releases found.');\n }\n\n const matchingReleases = releases.filter(\n (r) => !constraint || versioning.matches(r.version, constraint),\n );\n\n const stableMatchingVersion = matchingReleases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: stableMatchingVersion },\n 'Resolved stable matching version',\n );\n return stableMatchingVersion;\n }\n\n const unstableMatchingVersion = matchingReleases.pop()?.version;\n if (unstableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: unstableMatchingVersion },\n 'Resolved unstable matching version',\n );\n return unstableMatchingVersion;\n }\n\n const stableVersion = releases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableVersion) {\n logger.warn(\n { toolName, constraint, stableVersion },\n 'No matching tool versions found for constraint - using latest stable version',\n );\n }\n\n const highestVersion = releases.pop()!.version;\n logger.warn(\n { toolName, constraint, highestVersion },\n 'No matching or stable tool versions found - using an unstable version',\n );\n return highestVersion;\n}\n\n// Docker execs run in a fresh `--rm` container each time, so `memoize` must\n// stay false there - only the persistent-host (binarySource=install) path\n// can safely skip a tool whose requested version is already active.\n// `install-tool` also activates the version it installs, so the memo tracks\n// the active version per tool, not every installed version.\nexport async function generateInstallCommands(\n toolConstraints: Opt<ToolConstraint[]>,\n memoize = false,\n): Promise<string[]> {\n const installCommands: string[] = [];\n if (toolConstraints?.length) {\n // Parents are listed before their tools (e.g. node before npm),\n // so a tool is matched against its parent's already resolved version.\n const resolvedTools: Partial<Record<ToolName, string>> = {};\n for (const toolConstraint of toolConstraints) {\n const { toolName } = toolConstraint;\n const { parent }: ToolMetadata = tools[toolName];\n const parentConstraint: Partial<Record<ConstraintName, string>> = {};\n if (isToolName(parent) && resolvedTools[parent]) {\n parentConstraint[parent] = resolvedTools[parent];\n }\n const toolVersion = await resolveConstraint(\n toolConstraint,\n parentConstraint,\n );\n resolvedTools[toolName] = toolVersion;\n if (memoize) {\n const cacheKey = buildCacheKey('containerbase-active', toolName);\n if (memCache.get<string | undefined>(cacheKey) === toolVersion) {\n continue;\n }\n memCache.set(cacheKey, toolVersion);\n }\n const installCommand = `install-tool ${toolName} ${quote(toolVersion)}`;\n installCommands.push(installCommand);\n }\n }\n return installCommands;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"containerbase.js","names":["memCache.get"],"sources":["../../../lib/util/exec/containerbase.ts"],"sourcesContent":["import { type ToolMetadata, tools } from '@renovatebot/base-image';\nimport { isString } from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { GlobalConfig } from '../../config/global.ts';\nimport { logger } from '../../logger/index.ts';\nimport type { ReleaseResult } from '../../modules/datasource/index.ts';\nimport type { VersioningApi } from '../../modules/versioning/types.ts';\nimport { coerceArray } from '../array.ts';\nimport * as memCache from '../cache/memory/index.ts';\nimport { buildCacheKey } from '../cache/package/key.ts';\nimport { getEnv } from '../env.ts';\nimport { regEx } from '../regex.ts';\nimport {\n type ConstraintName,\n type Opt,\n type ToolConfig,\n type ToolConstraint,\n type ToolName,\n isToolName,\n} from './types.ts';\n\n/**\n * A subset of Containerbase tools that are supported by Renovate to look up version numbers for.\n */\nexport const allToolConfig: Partial<Record<ToolName, ToolConfig>> = {\n apm: {\n datasource: 'github-releases',\n packageName: 'microsoft/apm',\n versioning: 'semver',\n extractVersion: '^v(?<version>.*)$',\n },\n bazelisk: {\n datasource: 'github-releases',\n packageName: 'bazelbuild/bazelisk',\n versioning: 'semver',\n },\n bun: {\n datasource: 'github-releases',\n packageName: 'oven-sh/bun',\n extractVersion: '^bun-v(?<version>.*)$',\n versioning: 'npm',\n },\n bundler: {\n datasource: 'rubygems',\n packageName: 'bundler',\n versioning: 'ruby',\n },\n cocoapods: {\n datasource: 'rubygems',\n packageName: 'cocoapods',\n versioning: 'ruby',\n },\n composer: {\n datasource: 'github-releases',\n packageName: 'containerbase/composer-prebuild',\n versioning: 'composer',\n },\n conan: {\n datasource: 'pypi',\n packageName: 'conan',\n versioning: 'pep440',\n },\n copier: {\n datasource: 'pypi',\n packageName: 'copier',\n versioning: 'pep440',\n },\n corepack: {\n datasource: 'npm',\n packageName: 'corepack',\n versioning: 'npm',\n },\n deno: {\n datasource: 'github-releases',\n packageName: 'denoland/deno',\n versioning: 'deno',\n },\n devbox: {\n datasource: 'github-releases',\n packageName: 'jetify-com/devbox',\n versioning: 'semver',\n },\n dotnet: {\n datasource: 'dotnet-version',\n packageName: 'dotnet-sdk',\n versioning: 'semver',\n },\n erlang: {\n datasource: 'github-releases',\n packageName: 'containerbase/erlang-prebuild',\n versioning: 'semver-coerced',\n },\n elixir: {\n datasource: 'github-releases',\n packageName: 'elixir-lang/elixir',\n versioning: 'semver',\n },\n flux: {\n datasource: 'github-releases',\n packageName: 'fluxcd/flux2',\n versioning: 'semver',\n },\n gh: {\n datasource: 'github-releases',\n packageName: 'cli/cli',\n versioning: 'semver',\n },\n gleam: {\n datasource: 'github-releases',\n packageName: 'gleam-lang/gleam',\n versioning: 'semver',\n },\n golang: {\n datasource: 'github-releases',\n packageName: 'containerbase/golang-prebuild',\n versioning: 'npm',\n },\n gradle: {\n datasource: 'gradle-version',\n packageName: 'gradle',\n versioning: 'gradle',\n },\n hashin: {\n datasource: 'pypi',\n packageName: 'hashin',\n versioning: 'pep440',\n },\n helm: {\n datasource: 'github-releases',\n packageName: 'helm/helm',\n versioning: 'semver',\n },\n helmfile: {\n datasource: 'github-releases',\n packageName: 'helmfile/helmfile',\n versioning: 'semver',\n },\n java: {\n datasource: 'java-version',\n packageName: 'java?system=true',\n versioning: 'npm',\n },\n jb: {\n datasource: 'github-releases',\n packageName: 'jsonnet-bundler/jsonnet-bundler',\n versioning: 'semver',\n },\n kustomize: {\n datasource: 'github-releases',\n packageName: 'kubernetes-sigs/kustomize',\n extractVersion: '^kustomize/v(?<version>.*)$',\n versioning: 'semver',\n },\n maven: {\n datasource: 'github-releases',\n packageName: 'containerbase/maven-prebuild',\n versioning: 'maven',\n },\n mise: {\n datasource: 'github-releases',\n packageName: 'jdx/mise',\n versioning: 'npm',\n },\n nix: {\n datasource: 'github-releases',\n packageName: 'containerbase/nix-prebuild',\n versioning: 'semver',\n },\n node: {\n datasource: 'github-releases',\n packageName: 'containerbase/node-prebuild',\n versioning: 'node',\n },\n npm: {\n datasource: 'npm',\n packageName: 'npm',\n versioning: 'npm',\n },\n pdm: {\n datasource: 'github-releases',\n packageName: 'pdm-project/pdm',\n versioning: 'semver',\n },\n php: {\n datasource: 'github-releases',\n packageName: 'containerbase/php-prebuild',\n versioning: 'composer',\n },\n 'pip-tools': {\n datasource: 'pypi',\n packageName: 'pip-tools',\n versioning: 'pep440',\n },\n pipenv: {\n datasource: 'pypi',\n packageName: 'pipenv',\n versioning: 'pep440',\n },\n pnpm: {\n datasource: 'npm',\n packageName: 'pnpm',\n versioning: 'npm',\n },\n pixi: {\n datasource: 'github-releases',\n packageName: 'prefix-dev/pixi',\n versioning: 'conda',\n extractVersion: '^v(?<version>.*)$',\n },\n poetry: {\n datasource: 'pypi',\n packageName: 'poetry',\n versioning: 'pep440',\n },\n python: {\n datasource: 'github-releases',\n packageName: 'containerbase/python-prebuild',\n versioning: 'python',\n },\n ruby: {\n datasource: 'github-releases',\n packageName: 'containerbase/ruby-prebuild',\n versioning: 'ruby',\n },\n rust: {\n datasource: 'rust-version',\n packageName: 'rust',\n versioning: 'rust-release-channel',\n },\n uv: {\n datasource: 'pypi',\n packageName: 'uv',\n versioning: 'pep440',\n },\n yarn: {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: 'npm',\n },\n 'yarn-slim': {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: 'npm',\n },\n dart: {\n datasource: 'dart-version',\n packageName: 'dart',\n versioning: 'npm',\n },\n flutter: {\n datasource: 'github-releases',\n packageName: 'containerbase/flutter-prebuild',\n versioning: 'npm',\n },\n vendir: {\n datasource: 'github-releases',\n packageName: 'carvel-dev/vendir',\n versioning: 'semver',\n },\n} as const;\n\n/**\n * All Containerbase `tool`s that Renovate supports configuring the version of.\n */\nexport function getSupportedToolNames(): readonly ToolName[] {\n return Object.keys(allToolConfig) as readonly ToolName[];\n}\n\nlet _getPkgReleases: Promise<\n typeof import('../../modules/datasource/index.ts')\n> | null = null;\n\nasync function getPkgReleases(\n toolConfig: ToolConfig,\n resolvedTools: Partial<Record<ConstraintName, string>> = {},\n): Promise<ReleaseResult | null> {\n _getPkgReleases ??= import('../../modules/datasource/index.ts');\n const { getPkgReleases } = await _getPkgReleases;\n if (Object.keys(resolvedTools).length) {\n // drop releases whose runtime constraints (e.g. `engines.node`) exclude the runtime versions we install\n const compatible = await getPkgReleases({\n ...toolConfig,\n constraintsFiltering: 'strict',\n constraints: { ...resolvedTools },\n });\n if (compatible?.releases.length) {\n return compatible;\n }\n logger.debug(\n { toolConfig, resolvedTools },\n 'No tool releases compatible with resolved tools - ignoring their constraints',\n );\n }\n return getPkgReleases(toolConfig);\n}\n\nexport function getToolConfig(toolName: ToolName): ToolConfig | undefined {\n return allToolConfig[toolName];\n}\n\nexport function supportsDynamicInstall(toolName: ToolName): boolean {\n return !!allToolConfig[toolName];\n}\n\nexport function isContainerbase(): boolean {\n return !!getEnv().CONTAINERBASE;\n}\n\nexport function isDynamicInstall(\n toolConstraints?: Opt<ToolConstraint[]>,\n): boolean {\n if (GlobalConfig.get('binarySource') !== 'install') {\n return false;\n }\n if (!isContainerbase()) {\n logger.debug('Falling back to binarySource=global');\n return false;\n }\n return (\n !toolConstraints ||\n toolConstraints.every((toolConstraint) =>\n supportsDynamicInstall(toolConstraint.toolName),\n )\n );\n}\n\nfunction isStable(\n version: string,\n versioningApi: VersioningApi,\n latest?: string,\n): boolean {\n if (!versioningApi.isStable(version)) {\n return false;\n }\n if (isString(latest) && versioningApi.isGreaterThan(version, latest)) {\n return false;\n }\n return true;\n}\n\nexport async function resolveConstraint(\n toolConstraint: ToolConstraint,\n resolvedTools: Partial<Record<ConstraintName, string>> = {},\n): Promise<string> {\n const { toolName } = toolConstraint;\n const toolConfig = allToolConfig[toolName];\n if (!toolConfig) {\n throw new Error(`Invalid tool to install: ${toolName}`);\n }\n\n const { get: getVersioning } =\n await import('../../modules/versioning/index.ts');\n const versioning = getVersioning(toolConfig.versioning);\n let constraint = toolConstraint.constraint;\n if (constraint) {\n if (versioning.isValid(constraint)) {\n if (versioning.isSingleVersion(constraint)) {\n return constraint.replace(regEx(/^=+/), '').trim();\n }\n } else {\n logger.warn(\n { toolName, constraint, versioning: toolConfig.versioning },\n 'Invalid tool constraint',\n );\n constraint = undefined;\n }\n }\n\n const pkgReleases = await getPkgReleases(toolConfig, resolvedTools);\n const releases = coerceArray(pkgReleases?.releases);\n\n if (!releases?.length) {\n logger.warn({ toolConfig }, 'No tool releases found.');\n throw new Error('No tool releases found.');\n }\n\n const matchingReleases = releases.filter(\n (r) => !constraint || versioning.matches(r.version, constraint),\n );\n\n const stableMatchingVersion = matchingReleases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: stableMatchingVersion },\n 'Resolved stable matching version',\n );\n return stableMatchingVersion;\n }\n\n const unstableMatchingVersion = matchingReleases.pop()?.version;\n if (unstableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: unstableMatchingVersion },\n 'Resolved unstable matching version',\n );\n return unstableMatchingVersion;\n }\n\n const stableVersion = releases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableVersion) {\n logger.warn(\n { toolName, constraint, stableVersion },\n 'No matching tool versions found for constraint - using latest stable version',\n );\n }\n\n const highestVersion = releases.pop()!.version;\n logger.warn(\n { toolName, constraint, highestVersion },\n 'No matching or stable tool versions found - using an unstable version',\n );\n return highestVersion;\n}\n\n// Docker execs run in a fresh `--rm` container each time, so `memoize` must\n// stay false there - only the persistent-host (binarySource=install) path\n// can safely skip a tool whose requested version is already active.\n// `install-tool` also activates the version it installs, so the memo tracks\n// the active version per tool, not every installed version.\nexport async function generateInstallCommands(\n toolConstraints: Opt<ToolConstraint[]>,\n memoize = false,\n): Promise<string[]> {\n const installCommands: string[] = [];\n if (toolConstraints?.length) {\n // Parents are listed before their tools (e.g. node before npm),\n // so a tool is matched against its parent's already resolved version.\n const resolvedTools: Partial<Record<ToolName, string>> = {};\n for (const toolConstraint of toolConstraints) {\n const { toolName } = toolConstraint;\n const { parent }: ToolMetadata = tools[toolName];\n const parentConstraint: Partial<Record<ConstraintName, string>> = {};\n if (isToolName(parent) && resolvedTools[parent]) {\n parentConstraint[parent] = resolvedTools[parent];\n }\n const toolVersion = await resolveConstraint(\n toolConstraint,\n parentConstraint,\n );\n resolvedTools[toolName] = toolVersion;\n if (memoize) {\n const cacheKey = buildCacheKey('containerbase-active', toolName);\n if (memCache.get<string | undefined>(cacheKey) === toolVersion) {\n continue;\n }\n memCache.set(cacheKey, toolVersion);\n }\n const installCommand = `install-tool ${toolName} ${quote(toolVersion)}`;\n installCommands.push(installCommand);\n }\n }\n return installCommands;\n}\n"],"mappings":"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"}
|
|
@@ -15,8 +15,6 @@ export declare const toolDefinitionDocumentation: readonly [{
|
|
|
15
15
|
}];
|
|
16
16
|
/**
|
|
17
17
|
* A `tool` that Containerbase supports, but may not be supported by Renovate.
|
|
18
|
-
*
|
|
19
|
-
* @see SupportedToolNames
|
|
20
18
|
*/
|
|
21
19
|
export type ToolName = (typeof toolNames)[number];
|
|
22
20
|
export declare function isToolName(value: unknown): value is ToolName$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../lib/util/exec/types.ts"],"sourcesContent":["import {\n type ToolName as ContainerbaseToolName,\n toolNames,\n} from '@renovatebot/base-image';\nimport { isString } from '@sindresorhus/is';\nimport type { Options as ExecaOptions } from 'execa';\nimport type { VersioningName } from '../../versioning-list.generated.ts';\n\nexport interface ConstraintDefinition {\n name: string;\n description?: string;\n}\n\n/**\n * Additional documentation for `tool`s that Containerbase supports.\n */\nexport const toolDefinitionDocumentation = [\n {\n name: 'ruby',\n description: 'Also used in the `rubygems` Datasource',\n },\n] as const satisfies readonly (ConstraintDefinition & {\n name: ContainerbaseToolName;\n})[];\n\n/**\n * A `tool` that Containerbase supports, but may not be supported by Renovate.\n
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../lib/util/exec/types.ts"],"sourcesContent":["import {\n type ToolName as ContainerbaseToolName,\n toolNames,\n} from '@renovatebot/base-image';\nimport { isString } from '@sindresorhus/is';\nimport type { Options as ExecaOptions } from 'execa';\nimport type { VersioningName } from '../../versioning-list.generated.ts';\n\nexport interface ConstraintDefinition {\n name: string;\n description?: string;\n}\n\n/**\n * Additional documentation for `tool`s that Containerbase supports.\n */\nexport const toolDefinitionDocumentation = [\n {\n name: 'ruby',\n description: 'Also used in the `rubygems` Datasource',\n },\n] as const satisfies readonly (ConstraintDefinition & {\n name: ContainerbaseToolName;\n})[];\n\n/**\n * A `tool` that Containerbase supports, but may not be supported by Renovate.\n */\nexport type ToolName = (typeof toolNames)[number];\n\nexport function isToolName(value: unknown): value is ContainerbaseToolName {\n return isString(value) && (toolNames as readonly string[]).includes(value);\n}\n\ntype NotContainerbaseToolName<Name extends string> =\n Name extends ContainerbaseToolName\n ? `Name \"${Name}\" must not be a Containerbase tool name - see 'ContainerbaseToolName'`\n : Name;\n\nfunction constrainAdditionalConstraintDefinitions<\n const T extends readonly (ConstraintDefinition & { name: string })[],\n>(defs: {\n [K in keyof T]: T[K] extends { name: infer Name extends string }\n ? Omit<T[K], 'name'> & { name: NotContainerbaseToolName<Name> }\n : T[K];\n}): T {\n return defs as unknown as T;\n}\n\n/**\n * Additional constraints that can be specified for some Managers, but are **not** tools that Containerbase supports, with optional description.\n */\nexport const additionalConstraintDefinitions =\n constrainAdditionalConstraintDefinitions([\n {\n name: 'ghActionsLock',\n description: `Used in the \\`github-actions\\` manager to specify a release tag for the [\\`github/gh-actions-lock\\`](https://github.com/github/gh-actions-lock) \\`gh\\` CLI extension, which regenerates \\`.github/workflows/actions.lock\\`.\n\nMust be a full release tag, prefixed with \\`v\\`, such as \\`v0.1.7\\`. Set it to an empty string to always install the latest release.`,\n },\n /**\n * @deprecated TODO remove in #42600\n */\n {\n name: 'go',\n description: `Used in the \\`gomod\\` manager to specify the version of the Go toolchain to use.\n\nIn precedence order:\n\n1. config: \\`constraints.go\\`\n1. \\`go.mod\\`: \\`toolchain\\` directive\n1. \\`go.mod\\`: \\`go\\` directive\n\nNOTE that the \\`constraints.golang\\` is not used (https://github.com/renovatebot/renovate/issues/42601)\n `,\n },\n {\n name: 'gomodMod',\n description: `Used in the \\`gomod\\` manager to specify a tag for [\\`github.com/marwan-at-work/mod\\`](https://github.com/marwan-at-work/mod).\n\nMust be prefixed with \\`v\\`.`,\n },\n {\n name: 'jenkins',\n description:\n 'Used in the `jenkins-plugins` datasource to specify a minimum version of Jenkins that a plugin must support.',\n },\n {\n name: 'pipTools',\n description:\n 'Used in the `pip-compile` manager to specify a version of `pip-tools` to use. @deprecated TODO remove in #42599',\n },\n {\n name: 'platform',\n description:\n 'Used in the `rubygems` datasource to specify the `platform` that the Gem dependency supports.',\n },\n {\n name: 'rubygems',\n description:\n 'Used in the `rubygems` datasource to specify the version of the `rubygems` tool that is needed to use this Gem.',\n },\n {\n name: 'vscode',\n description:\n 'Used in the `npm` manager to track the version of VSCode that the package is compatible with.',\n },\n {\n name: 'dotnet-sdk',\n description:\n 'Used in the `nuget` manager to track .NET SDK version required.',\n },\n {\n name: 'perl',\n description:\n 'Used in the `cpanfile` manager to track Perl version required.',\n },\n {\n name: '%goMod',\n description:\n 'Used in the `gomod` manager to determine the [minimum version of Go required to use this module](https://go.dev/ref/mod#go-mod-file-go).\\n\\nNote that this is prefixed with a `%` to explicitly note that this is not a tool that Containerbase knows.',\n },\n ] as const);\n\n/**\n * Additional constraints that can be specified for some Managers, but are **not** tools that Containerbase supports.\n */\nexport type AdditionalConstraintName =\n (typeof additionalConstraintDefinitions)[number]['name'];\n\n/**\n * Additional constraints that can be specified for some Managers, but are **not** tools that Containerbase supports.\n */\nexport const additionalConstraintNames: AdditionalConstraintName[] =\n additionalConstraintDefinitions.map((c) => c.name);\n\nexport function isAdditionalConstraintName(\n value: unknown,\n): value is AdditionalConstraintName {\n return (\n isString(value) &&\n (additionalConstraintNames as readonly string[]).includes(value)\n );\n}\n\n/**\n * A name usable as a key in a `constraints` record, which may be tools that Containerbase supports.\n */\nexport type ConstraintName = ContainerbaseToolName | AdditionalConstraintName;\n\nexport function isConstraintName(value: unknown): value is ConstraintName {\n return isToolName(value) || isAdditionalConstraintName(value);\n}\n\nexport interface ToolConstraint {\n toolName: ContainerbaseToolName;\n constraint?: string | null;\n}\n\nexport interface ToolConfig {\n datasource: string;\n extractVersion?: string;\n packageName: string;\n versioning: VersioningName;\n}\n\nexport type Opt<T> = T | null | undefined;\n\nexport type VolumesPair = [string, string];\nexport type VolumeOption = Opt<string | VolumesPair>;\n\nexport interface DockerOptions {\n volumes?: Opt<VolumeOption[]>;\n envVars?: Opt<Opt<string>[]>;\n cwd?: Opt<string>;\n}\n\nexport type DataListener = (chunk: any) => void;\nexport interface OutputListeners {\n stdout?: DataListener[];\n stderr?: DataListener[];\n}\n\nexport interface OutputWriter {\n write(chunk: Buffer): void;\n toString(): string;\n}\n\nexport interface OutputWriters {\n stdout?: OutputWriter;\n stderr?: OutputWriter;\n}\n\n/** execa options producing text output, which excludes the binary encodings */\ntype TextExecaOptions = Extract<\n ExecaOptions,\n { readonly encoding?: 'utf8' | 'utf16le' }\n>;\n\nexport interface RawExecOptions extends TextExecaOptions {\n maxBuffer?: number | undefined;\n cwd?: string;\n outputListeners?: OutputListeners;\n outputWriters?: OutputWriters;\n}\n\nexport interface ExecResult {\n stdout: string;\n stderr: string;\n /**\n * The process' exit code in the case of a failure.\n *\n * This is only set if using `ignoreFailure` when executing a command\n *\n */\n exitCode?: number;\n}\n\nexport type ExtraEnv<T = unknown> = Record<string, T>;\n\nexport interface ExecOptions {\n cwd?: string;\n cwdFile?: string;\n env?: Opt<ExtraEnv>;\n extraEnv?: Opt<ExtraEnv>;\n docker?: Opt<DockerOptions>;\n toolConstraints?: Opt<ToolConstraint[]>;\n preCommands?: Opt<string[]>;\n ignoreStdout?: boolean;\n // Following are pass-through to child process\n maxBuffer?: number | undefined;\n timeout?: number | undefined;\n shell?: boolean | string | undefined;\n}\n\n/**\n * configuration that can be configured on a per-command basis, that doesn't make sense to be on the `RawExecOptions`\n */\nexport interface CommandWithOptions {\n command: string[];\n\n /** do not throw errors when a command fails, but do log that an error occurred */\n ignoreFailure?: boolean;\n\n /**\n * Execute the `command` within a shell\n *\n * WARNING this can result in security issues if this includes user-controlled commands\n * **/\n shell?: boolean | string;\n}\n"],"mappings":";;;;;;AAgBA,MAAa,8BAA8B,CACzC;CACE,MAAM;CACN,aAAa;AACf,CACF;AASA,SAAgB,WAAW,OAAgD;CACzE,OAAO,SAAS,KAAK,KAAM,UAAgC,SAAS,KAAK;AAC3E;AAOA,SAAS,yCAEP,MAII;CACJ,OAAO;AACT;;;;AAKA,MAAa,kCACX,yCAAyC;CACvC;EACE,MAAM;EACN,aAAa;;;CAGf;;;;;CAIA;EACE,MAAM;EACN,aAAa;;;;;;;;;;CAUf;CACA;EACE,MAAM;EACN,aAAa;;;CAGf;CACA;EACE,MAAM;EACN,aACE;CACJ;CACA;EACE,MAAM;EACN,aACE;CACJ;CACA;EACE,MAAM;EACN,aACE;CACJ;CACA;EACE,MAAM;EACN,aACE;CACJ;CACA;EACE,MAAM;EACN,aACE;CACJ;CACA;EACE,MAAM;EACN,aACE;CACJ;CACA;EACE,MAAM;EACN,aACE;CACJ;CACA;EACE,MAAM;EACN,aACE;CACJ;AACF,CAAU;;;;AAWZ,MAAa,4BACX,gCAAgC,KAAK,MAAM,EAAE,IAAI;AAEnD,SAAgB,2BACd,OACmC;CACnC,OACE,SAAS,KAAK,KACb,0BAAgD,SAAS,KAAK;AAEnE;AAOA,SAAgB,iBAAiB,OAAyC;CACxE,OAAO,WAAW,KAAK,KAAK,2BAA2B,KAAK;AAC9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../lib/util/git/types.ts"],"sourcesContent":["import type { PlatformCommitOptions } from '../../config/types.ts';\nimport type { GitOptions } from '../../types/git.ts';\nimport type { LongCommitSha } from '../schema-utils/git.ts';\nimport type { EmailAddress } from '../schema-utils/index.ts';\n\nexport type {
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../lib/util/git/types.ts"],"sourcesContent":["import type { PlatformCommitOptions } from '../../config/types.ts';\nimport type { GitOptions } from '../../types/git.ts';\nimport type { LongCommitSha } from '../schema-utils/git.ts';\nimport type { EmailAddress } from '../schema-utils/index.ts';\n\nexport type { StatusResult } from 'simple-git';\n\nexport interface GitAuthor {\n name?: string | null;\n address?: string;\n}\n\nexport type GitNoVerifyOption = 'commit' | 'push';\n\n/**\n * Represents a virtual branch tracked as `refs/remotes/origin/<name>`.\n * Used by platforms like Gerrit where changes are represented as refs\n * (e.g., refs/changes/34/1234/1) instead of regular branches.\n */\nexport interface VirtualBranch {\n /** The ref this virtual branch is fetched from (e.g., 'refs/changes/34/1234/1') */\n ref: string;\n /** The commit SHA this virtual branch points to */\n sha: LongCommitSha;\n}\n\nexport interface StorageConfig {\n currentBranch?: string;\n defaultBranch?: string;\n url: string;\n upstreamUrl?: string | undefined;\n extraCloneOpts?: GitOptions;\n cloneSubmodules?: boolean;\n cloneSubmodulesFilter?: string[];\n fullClone?: boolean;\n /**\n * Virtual branches to initialize from non-standard refs (e.g., Gerrit change refs).\n * Each virtual branch is fetched and stored as refs/remotes/origin/<name>.\n * Keyed by branch name.\n */\n virtualBranches?: Record<string, VirtualBranch>;\n}\n\nexport interface LocalConfig extends StorageConfig {\n additionalBranches: string[];\n currentBranch: string;\n currentBranchSha: LongCommitSha;\n branchCommits: Record<string, LongCommitSha>;\n /** Single registry of virtual branches, always initialized in initRepo. Keyed by branch name. */\n virtualBranches: Record<string, VirtualBranch>;\n branchIsModified: Record<string, boolean>;\n commitBranches: Record<string, string[]>;\n ignoredAuthors: string[];\n gitAuthorName?: string | null;\n gitAuthorEmail?: EmailAddress;\n fileModeEnabled?: boolean;\n\n writeGitDone?: boolean;\n}\n\nexport interface FileAddition {\n /**\n * Addition creates new file or modifies existing one\n */\n type: 'addition';\n\n /**\n * Relative file path\n */\n path: string;\n\n /**\n * File contents\n */\n contents: string | Buffer | null;\n\n /**\n * The executable bit\n */\n isExecutable?: boolean;\n\n isSymlink?: boolean;\n}\n\nexport interface FileDeletion {\n /**\n * Deletion removes the file\n */\n type: 'deletion';\n\n /**\n * Relative file path\n */\n path: string;\n}\n\nexport type FileChange = FileAddition | FileDeletion;\n\nexport interface CommitFilesConfig {\n baseBranch?: string;\n branchName: string;\n files: FileChange[];\n message: string | string[];\n /** Structured git trailers (`Key: value` lines) to add in the final block of the commit message */\n trailers?: string[];\n force?: boolean;\n platformCommit?: PlatformCommitOptions;\n /** Only needed by Gerrit platform */\n prTitle?: string;\n /** Only needed by Gerrit platform */\n autoApprove?: boolean;\n}\n\nexport interface PushFilesConfig {\n sourceRef: string;\n targetRef?: string;\n files: FileChange[];\n pushOptions?: string[];\n}\n\nexport interface CommitResult {\n parentCommitSha: LongCommitSha;\n commitSha: LongCommitSha;\n files: FileChange[];\n}\n\nexport type GitObjectType = 'blob' | 'tree' | 'commit';\n\n/**\n * Git tree entry modes (octal file-type representations).\n * @see https://git-scm.com/docs/gitdatamodel\n */\nexport const GitTreeMode = {\n /** Regular non-executable file */\n RegularFile: '100644',\n /** Regular executable file */\n ExecutableFile: '100755',\n /** Symbolic link */\n SymbolicLink: '120000',\n /** Directory / subtree */\n Directory: '040000',\n /** Gitlink (submodule) */\n Gitlink: '160000',\n} as const;\n\nexport interface DiffTreeItem {\n path: string;\n mode: string;\n type: GitObjectType;\n sha: LongCommitSha | null;\n}\n\n/**\n * Represents a git authentication rule in the form of e.g.:\n * git config --global url.\"https://api@github.com/\".insteadOf \"https://github.com/\"\n */\nexport interface AuthenticationRule {\n url: string;\n insteadOf: string;\n}\n\nexport type GitOperationType =\n /**\n * The `git clone` sub-command.\n */\n | 'clone'\n /**\n * The `git reset` sub-command.\n */\n | 'reset'\n /**\n * The `git checkout` sub-command.\n */\n | 'checkout'\n /**\n * The `git fetch` sub-command.\n */\n | 'fetch'\n /**\n * The `git pull` sub-command.\n */\n | 'pull'\n /**\n * The `git push` sub-command.\n */\n | 'push'\n /**\n * The `git clean` sub-command.\n */\n | 'clean'\n /**\n * The `git merge` sub-command.\n */\n | 'merge'\n /**\n * The `git submodule` sub-command.\n */\n | 'submodule'\n /**\n * The `git commit` sub-command.\n */\n | 'commit'\n /**\n * The `git branch` sub-command.\n */\n | 'branch'\n /**\n * Any internal \"plumbing\" commands\n *\n * - `git update-index`\n *\n * See also: https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain\n */\n | 'plumbing'\n /**\n * Any other operations i.e.\n *\n * - `git add`\n * - `git branch`\n * - `git config`\n * - `git diff`\n * - `git log`\n * - `git ls-remote`\n * - `git remote`\n * - `git rev-parse`\n * - `git status`\n *\n * See also: https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain\n */\n | 'other';\n"],"mappings":";;;;;AAoIA,MAAa,cAAc;;CAEzB,aAAa;;CAEb,gBAAgB;;CAEhB,cAAc;;CAEd,WAAW;;CAEX,SAAS;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../lib/util/http/index.ts"],"sourcesContent":["// v8 ignore file -- barrel re-exports only, no executable logic (#40625)\n// TODO: add test #40625 (zero coverage?)\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../lib/util/http/index.ts"],"sourcesContent":["// v8 ignore file -- barrel re-exports only, no executable logic (#40625)\n// TODO: add test #40625 (zero coverage?)\nimport { RequestError } from './got.ts';\nimport { HttpBase } from './http.ts';\n\nexport type * from './types.ts';\nexport { RequestError as HttpError };\n\nexport class Http extends HttpBase {}\n"],"mappings":";;;;AAQA,IAAa,OAAb,cAA0B,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "renovate",
|
|
3
3
|
"description": "Automated dependency updates. Flexible so you don't need to be.",
|
|
4
|
-
"version": "44.
|
|
4
|
+
"version": "44.166.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"renovate": "dist/renovate.js",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"@pnpm/parse-overrides": "1001.0.4",
|
|
119
119
|
"@qnighy/marshal": "0.1.3",
|
|
120
120
|
"@redis/client": "6.3.0",
|
|
121
|
-
"@renovatebot/base-image": "13.
|
|
121
|
+
"@renovatebot/base-image": "13.133.0",
|
|
122
122
|
"@renovatebot/detect-tools": "4.0.21",
|
|
123
123
|
"@renovatebot/good-enough-parser": "2.0.1",
|
|
124
124
|
"@renovatebot/osv-offline": "3.0.12",
|
|
@@ -171,7 +171,6 @@
|
|
|
171
171
|
"jsonata": "2.2.1",
|
|
172
172
|
"jsonc-weaver": "0.3.1",
|
|
173
173
|
"klona": "2.0.6",
|
|
174
|
-
"lru-cache": "11.5.3",
|
|
175
174
|
"luxon": "3.7.2",
|
|
176
175
|
"markdown-it": "15.0.2",
|
|
177
176
|
"markdown-table": "3.0.4",
|
|
@@ -185,7 +184,7 @@
|
|
|
185
184
|
"p-queue": "9.3.3",
|
|
186
185
|
"p-throttle": "8.1.1",
|
|
187
186
|
"parse-link-header": "2.0.0",
|
|
188
|
-
"prettier": "3.9.
|
|
187
|
+
"prettier": "3.9.10",
|
|
189
188
|
"protobufjs": "8.8.0",
|
|
190
189
|
"punycode": "2.3.1",
|
|
191
190
|
"remark": "15.0.1",
|
|
@@ -203,7 +202,6 @@
|
|
|
203
202
|
"strip-json-comments": "5.0.3",
|
|
204
203
|
"tar": "7.5.22",
|
|
205
204
|
"toml-eslint-parser": "1.0.3",
|
|
206
|
-
"tslib": "2.8.1",
|
|
207
205
|
"upath": "3.0.8",
|
|
208
206
|
"url-join": "5.0.0",
|
|
209
207
|
"validate-npm-package-name": "7.0.2",
|
|
@@ -227,7 +225,6 @@
|
|
|
227
225
|
"@oxlint/plugins": "1.87.0",
|
|
228
226
|
"@semantic-release/exec": "7.1.0",
|
|
229
227
|
"@smithy/util-stream": "4.8.2",
|
|
230
|
-
"@types/adm-zip": "0.5.8",
|
|
231
228
|
"@types/aws4": "1.11.6",
|
|
232
229
|
"@types/breejs__later": "4.1.5",
|
|
233
230
|
"@types/bunyan": "1.8.11",
|
|
@@ -236,17 +233,12 @@
|
|
|
236
233
|
"@types/changelog-filename-regex": "2.0.2",
|
|
237
234
|
"@types/clean-git-ref": "2.0.2",
|
|
238
235
|
"@types/common-tags": "1.8.4",
|
|
239
|
-
"@types/estree": "1.0.9",
|
|
240
236
|
"@types/fs-extra": "11.0.4",
|
|
241
237
|
"@types/github-url-from-git": "1.5.3",
|
|
242
238
|
"@types/global-agent": "3.0.0",
|
|
243
239
|
"@types/ini": "4.1.1",
|
|
244
|
-
"@types/js-yaml": "4.0.9",
|
|
245
240
|
"@types/json-dup-key-validator": "1.0.2",
|
|
246
|
-
"@types/linkify-markdown": "1.0.3",
|
|
247
|
-
"@types/lodash": "4.17.25",
|
|
248
241
|
"@types/luxon": "3.7.6",
|
|
249
|
-
"@types/marshal": "0.5.3",
|
|
250
242
|
"@types/mdast": "4.0.4",
|
|
251
243
|
"@types/moo": "0.5.10",
|
|
252
244
|
"@types/ms": "2.1.0",
|
|
@@ -257,7 +249,6 @@
|
|
|
257
249
|
"@types/semver": "7.8.0",
|
|
258
250
|
"@types/semver-stable": "3.0.2",
|
|
259
251
|
"@types/semver-utils": "1.1.3",
|
|
260
|
-
"@types/tmp": "0.2.6",
|
|
261
252
|
"@types/validate-npm-package-name": "4.0.2",
|
|
262
253
|
"@types/yauzl": "3.4.0",
|
|
263
254
|
"@types/yazl": "3.3.1",
|
|
@@ -273,6 +264,7 @@
|
|
|
273
264
|
"graphql": "17.0.2",
|
|
274
265
|
"husky": "9.1.7",
|
|
275
266
|
"jest-extended": "7.0.0",
|
|
267
|
+
"knip": "6.41.0",
|
|
276
268
|
"lint-staged": "17.6.0",
|
|
277
269
|
"markdownlint-cli2": "0.23.3",
|
|
278
270
|
"markdownlint-cli2-formatter-template": "0.0.4",
|
|
@@ -323,9 +315,10 @@
|
|
|
323
315
|
"git-check": "node tools/check-git-version.mjs",
|
|
324
316
|
"jest": "NODE_ENV=test GIT_ALLOW_PROTOCOL=file GIT_CONFIG_GLOBAL=/dev/null GIT_CONFIG_SYSTEM=/dev/null LOG_LEVEL=fatal vitest run --logHeapUsage",
|
|
325
317
|
"vitest": "NODE_ENV=test GIT_ALLOW_PROTOCOL=file GIT_CONFIG_GLOBAL=/dev/null GIT_CONFIG_SYSTEM=/dev/null LOG_LEVEL=fatal vitest run --logHeapUsage",
|
|
326
|
-
"lint": "run-s ls-lint type-check oxlint biome prettier markdown-lint git-check doc-fence-check",
|
|
318
|
+
"lint": "run-s ls-lint knip type-check oxlint biome prettier markdown-lint git-check doc-fence-check",
|
|
327
319
|
"lint-fix": "run-s oxlint-fix biome-fix prettier-fix markdown-lint-fix",
|
|
328
320
|
"check": "node tools/check/index.ts",
|
|
321
|
+
"knip": "knip --dependencies",
|
|
329
322
|
"ls-lint": "ls-lint",
|
|
330
323
|
"markdown-lint": "markdownlint-cli2",
|
|
331
324
|
"markdown-lint-fix": "markdownlint-cli2 --fix",
|
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.
|
|
3
|
+
"title": "JSON schema for Renovate 44.166.0 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.
|
|
5
|
+
"x-renovate-version": "44.166.0",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|