renovate 43.263.1 → 43.263.2

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.
Files changed (253) hide show
  1. package/dist/config/app-strings.js +1 -1
  2. package/dist/config/app-strings.js.map +1 -1
  3. package/dist/config/decrypt/bcpgp.js +7 -4
  4. package/dist/config/decrypt/bcpgp.js.map +1 -1
  5. package/dist/config/migration.js +4 -6
  6. package/dist/config/migration.js.map +1 -1
  7. package/dist/config/options/index.js +1 -1
  8. package/dist/config/options/index.js.map +1 -1
  9. package/dist/config/validation-helpers/match-base-branches.js +4 -6
  10. package/dist/config/validation-helpers/match-base-branches.js.map +1 -1
  11. package/dist/config/validation-helpers/regex-glob-matchers.js +4 -6
  12. package/dist/config/validation-helpers/regex-glob-matchers.js.map +1 -1
  13. package/dist/config/validation-helpers/utils.js +2 -4
  14. package/dist/config/validation-helpers/utils.js.map +1 -1
  15. package/dist/config/validation.js +4 -6
  16. package/dist/config/validation.js.map +1 -1
  17. package/dist/config-validator.js +1 -3
  18. package/dist/config-validator.js.map +1 -1
  19. package/dist/global-config-option-defaults.generated.js +1 -1
  20. package/dist/global-config-option-defaults.generated.js.map +1 -1
  21. package/dist/modules/datasource/artifactory/index.js +6 -8
  22. package/dist/modules/datasource/artifactory/index.js.map +1 -1
  23. package/dist/modules/datasource/aws-machine-image/index.js +1 -2
  24. package/dist/modules/datasource/aws-machine-image/index.js.map +1 -1
  25. package/dist/modules/datasource/azure-pipelines-tasks/index.js +2 -3
  26. package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
  27. package/dist/modules/datasource/conda/index.js +1 -3
  28. package/dist/modules/datasource/conda/index.js.map +1 -1
  29. package/dist/modules/datasource/dart-version/index.js +1 -2
  30. package/dist/modules/datasource/dart-version/index.js.map +1 -1
  31. package/dist/modules/datasource/datasource.js +1 -3
  32. package/dist/modules/datasource/datasource.js.map +1 -1
  33. package/dist/modules/datasource/devbox/index.js +1 -3
  34. package/dist/modules/datasource/devbox/index.js.map +1 -1
  35. package/dist/modules/datasource/docker/ecr.js +2 -1
  36. package/dist/modules/datasource/docker/ecr.js.map +1 -1
  37. package/dist/modules/datasource/docker/index.js +1 -1
  38. package/dist/modules/datasource/docker/index.js.map +1 -1
  39. package/dist/modules/datasource/galaxy-collection/index.js +1 -1
  40. package/dist/modules/datasource/galaxy-collection/index.js.map +1 -1
  41. package/dist/modules/datasource/go/releases-goproxy.js +2 -2
  42. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  43. package/dist/modules/datasource/java-version/index.js +1 -3
  44. package/dist/modules/datasource/java-version/index.js.map +1 -1
  45. package/dist/modules/datasource/maven/util.js +2 -1
  46. package/dist/modules/datasource/maven/util.js.map +1 -1
  47. package/dist/modules/datasource/nuget/common.js +6 -4
  48. package/dist/modules/datasource/nuget/common.js.map +1 -1
  49. package/dist/modules/datasource/util.js +3 -2
  50. package/dist/modules/datasource/util.js.map +1 -1
  51. package/dist/modules/manager/azure-pipelines/extract.js +1 -1
  52. package/dist/modules/manager/azure-pipelines/extract.js.map +1 -1
  53. package/dist/modules/manager/bazel/extract.js +1 -3
  54. package/dist/modules/manager/bazel/extract.js.map +1 -1
  55. package/dist/modules/manager/bazel/parser.js +1 -1
  56. package/dist/modules/manager/bazel/parser.js.map +1 -1
  57. package/dist/modules/manager/buildpacks/extract.js +1 -1
  58. package/dist/modules/manager/buildpacks/extract.js.map +1 -1
  59. package/dist/modules/manager/bundler/common.js +23 -25
  60. package/dist/modules/manager/bundler/common.js.map +1 -1
  61. package/dist/modules/manager/bundler/extract.js +2 -6
  62. package/dist/modules/manager/bundler/extract.js.map +1 -1
  63. package/dist/modules/manager/cargo/extract.js +4 -6
  64. package/dist/modules/manager/cargo/extract.js.map +1 -1
  65. package/dist/modules/manager/dockerfile/extract.js +3 -3
  66. package/dist/modules/manager/dockerfile/extract.js.map +1 -1
  67. package/dist/modules/manager/fingerprint.generated.js +11 -11
  68. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  69. package/dist/modules/manager/flux/extract.js +2 -1
  70. package/dist/modules/manager/flux/extract.js.map +1 -1
  71. package/dist/modules/manager/github-actions/parse.js +1 -1
  72. package/dist/modules/manager/github-actions/parse.js.map +1 -1
  73. package/dist/modules/manager/gradle/extract/catalog.js +4 -3
  74. package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
  75. package/dist/modules/manager/gradle/extract.js +2 -2
  76. package/dist/modules/manager/gradle/extract.js.map +1 -1
  77. package/dist/modules/manager/gradle/parser/common.js +1 -1
  78. package/dist/modules/manager/gradle/parser/common.js.map +1 -1
  79. package/dist/modules/manager/gradle/parser/handlers.js +1 -1
  80. package/dist/modules/manager/gradle/parser/handlers.js.map +1 -1
  81. package/dist/modules/manager/helm-values/extract.js.map +1 -1
  82. package/dist/modules/manager/helmfile/extract.js +1 -1
  83. package/dist/modules/manager/helmfile/extract.js.map +1 -1
  84. package/dist/modules/manager/maven/extract.js.map +1 -1
  85. package/dist/modules/manager/maven/update.js +2 -1
  86. package/dist/modules/manager/maven/update.js.map +1 -1
  87. package/dist/modules/manager/mise/utils.js +5 -7
  88. package/dist/modules/manager/mise/utils.js.map +1 -1
  89. package/dist/modules/manager/npm/extract/common/overrides.js +1 -1
  90. package/dist/modules/manager/npm/extract/common/overrides.js.map +1 -1
  91. package/dist/modules/manager/npm/extract/yarn.js +1 -1
  92. package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
  93. package/dist/modules/manager/npm/npmrc.js +1 -3
  94. package/dist/modules/manager/npm/npmrc.js.map +1 -1
  95. package/dist/modules/manager/npm/update/dependency/common.js +2 -3
  96. package/dist/modules/manager/npm/update/dependency/common.js.map +1 -1
  97. package/dist/modules/manager/npm/update/dependency/index.js +1 -1
  98. package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
  99. package/dist/modules/manager/npm/update/dependency/pnpm.js +1 -1
  100. package/dist/modules/manager/npm/update/dependency/pnpm.js.map +1 -1
  101. package/dist/modules/manager/npm/update/dependency/yarn.js +1 -1
  102. package/dist/modules/manager/npm/update/dependency/yarn.js.map +1 -1
  103. package/dist/modules/manager/osgi/extract.js +1 -1
  104. package/dist/modules/manager/osgi/extract.js.map +1 -1
  105. package/dist/modules/manager/pep621/processors/uv.js +1 -1
  106. package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
  107. package/dist/modules/manager/pep621/schema.js.map +1 -1
  108. package/dist/modules/manager/pip_setup/extract.js +1 -1
  109. package/dist/modules/manager/pip_setup/extract.js.map +1 -1
  110. package/dist/modules/manager/pipenv/artifacts.js.map +1 -1
  111. package/dist/modules/manager/poetry/schema.js +2 -2
  112. package/dist/modules/manager/poetry/schema.js.map +1 -1
  113. package/dist/modules/manager/pub/artifacts.js +4 -6
  114. package/dist/modules/manager/pub/artifacts.js.map +1 -1
  115. package/dist/modules/manager/pub/utils.js +2 -2
  116. package/dist/modules/manager/pub/utils.js.map +1 -1
  117. package/dist/modules/manager/puppet/common.js +4 -6
  118. package/dist/modules/manager/puppet/common.js.map +1 -1
  119. package/dist/modules/manager/sbt/extract.js +1 -1
  120. package/dist/modules/manager/sbt/extract.js.map +1 -1
  121. package/dist/modules/manager/sbt/util.js +4 -2
  122. package/dist/modules/manager/sbt/util.js.map +1 -1
  123. package/dist/modules/manager/terraform/lockfile/util.js +1 -1
  124. package/dist/modules/manager/terraform/lockfile/util.js.map +1 -1
  125. package/dist/modules/platform/azure/index.js +15 -19
  126. package/dist/modules/platform/azure/index.js.map +1 -1
  127. package/dist/modules/platform/azure/issue.js +4 -2
  128. package/dist/modules/platform/azure/issue.js.map +1 -1
  129. package/dist/modules/platform/bitbucket/index.js +1 -3
  130. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  131. package/dist/modules/platform/forgejo/index.js +5 -3
  132. package/dist/modules/platform/forgejo/index.js.map +1 -1
  133. package/dist/modules/platform/gerrit/scm.js +5 -7
  134. package/dist/modules/platform/gerrit/scm.js.map +1 -1
  135. package/dist/modules/platform/gitea/index.js +5 -3
  136. package/dist/modules/platform/gitea/index.js.map +1 -1
  137. package/dist/modules/platform/github/index.js +5 -7
  138. package/dist/modules/platform/github/index.js.map +1 -1
  139. package/dist/modules/platform/github/pr.js +1 -1
  140. package/dist/modules/platform/github/pr.js.map +1 -1
  141. package/dist/modules/platform/github/schema.d.ts +4 -4
  142. package/dist/modules/platform/gitlab/index.js +2 -1
  143. package/dist/modules/platform/gitlab/index.js.map +1 -1
  144. package/dist/modules/platform/utils/pr-body.js +2 -1
  145. package/dist/modules/platform/utils/pr-body.js.map +1 -1
  146. package/dist/modules/versioning/apk/index.js +3 -3
  147. package/dist/modules/versioning/apk/index.js.map +1 -1
  148. package/dist/modules/versioning/composer/index.js +4 -7
  149. package/dist/modules/versioning/composer/index.js.map +1 -1
  150. package/dist/modules/versioning/conan/common.js +4 -6
  151. package/dist/modules/versioning/conan/common.js.map +1 -1
  152. package/dist/modules/versioning/conan/index.js +1 -3
  153. package/dist/modules/versioning/conan/index.js.map +1 -1
  154. package/dist/modules/versioning/conan/range.js +4 -5
  155. package/dist/modules/versioning/conan/range.js.map +1 -1
  156. package/dist/modules/versioning/conda/index.js +1 -1
  157. package/dist/modules/versioning/conda/index.js.map +1 -1
  158. package/dist/modules/versioning/gradle/index.js +7 -3
  159. package/dist/modules/versioning/gradle/index.js.map +1 -1
  160. package/dist/modules/versioning/hermit/index.js +2 -2
  161. package/dist/modules/versioning/hermit/index.js.map +1 -1
  162. package/dist/modules/versioning/ivy/index.js +1 -1
  163. package/dist/modules/versioning/ivy/index.js.map +1 -1
  164. package/dist/modules/versioning/maven/compare.js +4 -6
  165. package/dist/modules/versioning/maven/compare.js.map +1 -1
  166. package/dist/modules/versioning/npm/range.js +5 -7
  167. package/dist/modules/versioning/npm/range.js.map +1 -1
  168. package/dist/modules/versioning/nuget/version.js +6 -6
  169. package/dist/modules/versioning/nuget/version.js.map +1 -1
  170. package/dist/modules/versioning/pep440/index.js +1 -1
  171. package/dist/modules/versioning/pep440/index.js.map +1 -1
  172. package/dist/modules/versioning/pep440/range.js +2 -6
  173. package/dist/modules/versioning/pep440/range.js.map +1 -1
  174. package/dist/modules/versioning/poetry/index.js +1 -1
  175. package/dist/modules/versioning/poetry/index.js.map +1 -1
  176. package/dist/modules/versioning/pvp/index.js +2 -2
  177. package/dist/modules/versioning/pvp/index.js.map +1 -1
  178. package/dist/modules/versioning/rpm/index.js +4 -3
  179. package/dist/modules/versioning/rpm/index.js.map +1 -1
  180. package/dist/modules/versioning/ruby/range.js +2 -2
  181. package/dist/modules/versioning/ruby/range.js.map +1 -1
  182. package/dist/modules/versioning/ruby/strategies/bump.js +1 -1
  183. package/dist/modules/versioning/ruby/strategies/bump.js.map +1 -1
  184. package/dist/modules/versioning/ruby/strategies/replace.js +13 -12
  185. package/dist/modules/versioning/ruby/strategies/replace.js.map +1 -1
  186. package/dist/modules/versioning/ruby/version.js +1 -1
  187. package/dist/modules/versioning/ruby/version.js.map +1 -1
  188. package/dist/modules/versioning/rust-release-channel/index.js +1 -1
  189. package/dist/modules/versioning/rust-release-channel/index.js.map +1 -1
  190. package/dist/modules/versioning/rust-release-channel/util.js +4 -4
  191. package/dist/modules/versioning/rust-release-channel/util.js.map +1 -1
  192. package/dist/util/common.js +1 -3
  193. package/dist/util/common.js.map +1 -1
  194. package/dist/util/exec/common.js +4 -6
  195. package/dist/util/exec/common.js.map +1 -1
  196. package/dist/util/exec/containerbase.js +1 -3
  197. package/dist/util/exec/containerbase.js.map +1 -1
  198. package/dist/util/git/instrument.js +3 -3
  199. package/dist/util/git/instrument.js.map +1 -1
  200. package/dist/util/github/graphql/datasource-fetcher.js +5 -4
  201. package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
  202. package/dist/util/http/cache/package-http-cache-provider.js.map +1 -1
  203. package/dist/util/http/github.js +3 -2
  204. package/dist/util/http/github.js.map +1 -1
  205. package/dist/util/http/http.d.ts +1 -1
  206. package/dist/util/http/http.js.map +1 -1
  207. package/dist/util/result.d.ts +8 -8
  208. package/dist/util/result.js +1 -1
  209. package/dist/util/result.js.map +1 -1
  210. package/dist/util/url.js +2 -2
  211. package/dist/util/url.js.map +1 -1
  212. package/dist/workers/global/config/parse/cli.js +18 -20
  213. package/dist/workers/global/config/parse/cli.js.map +1 -1
  214. package/dist/workers/global/config/parse/env.js +3 -5
  215. package/dist/workers/global/config/parse/env.js.map +1 -1
  216. package/dist/workers/repository/config-migration/branch/index.js +3 -5
  217. package/dist/workers/repository/config-migration/branch/index.js.map +1 -1
  218. package/dist/workers/repository/init/merge.js +2 -3
  219. package/dist/workers/repository/init/merge.js.map +1 -1
  220. package/dist/workers/repository/onboarding/branch/check.js +7 -9
  221. package/dist/workers/repository/onboarding/branch/check.js.map +1 -1
  222. package/dist/workers/repository/onboarding/branch/index.js +4 -8
  223. package/dist/workers/repository/onboarding/branch/index.js.map +1 -1
  224. package/dist/workers/repository/onboarding/branch/onboarding-branch-cache.js +2 -2
  225. package/dist/workers/repository/onboarding/branch/onboarding-branch-cache.js.map +1 -1
  226. package/dist/workers/repository/process/extract-update.js.map +1 -1
  227. package/dist/workers/repository/process/fetch.js.map +1 -1
  228. package/dist/workers/repository/process/libyear.js +1 -3
  229. package/dist/workers/repository/process/libyear.js.map +1 -1
  230. package/dist/workers/repository/process/lookup/filter-checks.js +9 -11
  231. package/dist/workers/repository/process/lookup/filter-checks.js.map +1 -1
  232. package/dist/workers/repository/process/lookup/index.js +5 -8
  233. package/dist/workers/repository/process/lookup/index.js.map +1 -1
  234. package/dist/workers/repository/process/vulnerabilities.js +3 -3
  235. package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
  236. package/dist/workers/repository/reconfigure/index.js +3 -5
  237. package/dist/workers/repository/reconfigure/index.js.map +1 -1
  238. package/dist/workers/repository/update/branch/bump-versions.js +1 -1
  239. package/dist/workers/repository/update/branch/bump-versions.js.map +1 -1
  240. package/dist/workers/repository/update/branch/get-updated.js +3 -5
  241. package/dist/workers/repository/update/branch/get-updated.js.map +1 -1
  242. package/dist/workers/repository/update/pr/body/updates-table.js +1 -3
  243. package/dist/workers/repository/update/pr/body/updates-table.js.map +1 -1
  244. package/dist/workers/repository/update/pr/changelog/common.js +1 -1
  245. package/dist/workers/repository/update/pr/changelog/common.js.map +1 -1
  246. package/dist/workers/repository/update/pr/index.js +6 -7
  247. package/dist/workers/repository/update/pr/index.js.map +1 -1
  248. package/dist/workers/repository/updates/flatten.js +1 -1
  249. package/dist/workers/repository/updates/flatten.js.map +1 -1
  250. package/dist/workers/repository/updates/generate.js +1 -1
  251. package/dist/workers/repository/updates/generate.js.map +1 -1
  252. package/package.json +2 -2
  253. package/renovate-schema.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/bundler/extract.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { isHttpUrl } from '../../../util/url.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RubygemsDatasource } from '../../datasource/rubygems/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport { delimiters, extractRubyVersion, getLockFilePath } from './common.ts';\nimport { extractLockFileEntries } from './locked-version.ts';\n\nfunction formatContent(input: string): string {\n return `${input.replace(regEx(/^ {2}/), '')}\\n`; //remove leading whitespace and add a new line at the end\n}\n\nconst variableMatchRegex = regEx(\n `^(?<key>\\\\w+)\\\\s*=\\\\s*['\"](?<value>[^'\"]+)['\"]`,\n);\nconst gemMatchRegex = regEx(\n `^\\\\s*gem\\\\s+(['\"])(?<depName>[^'\"]+)(['\"])(\\\\s*,\\\\s*(?<currentValue>(['\"])[^'\"]+['\"](\\\\s*,\\\\s*['\"][^'\"]+['\"])?))?`,\n);\nconst sourceMatchRegex = regEx(\n `source:\\\\s*((?:['\"](?<registryUrl>[^'\"]+)['\"])|(?<sourceName>\\\\w+))?`,\n);\nconst gitRefsMatchRegex = regEx(\n `((git:\\\\s*['\"](?<gitUrl>[^'\"]+)['\"])|(\\\\s*,\\\\s*github:\\\\s*['\"](?<repoName>[^'\"]+)['\"]))(\\\\s*,\\\\s*branch:\\\\s*['\"](?<branchName>[^'\"]+)['\"])?(\\\\s*,\\\\s*ref:\\\\s*['\"](?<refName>[^'\"]+)['\"])?(\\\\s*,\\\\s*tag:\\\\s*['\"](?<tagName>[^'\"]+)['\"])?`,\n);\nconst pathMatchRegex = regEx(`path:\\\\s*['\"](?<path>[^'\"]+)['\"]`);\n\nexport async function extractPackageFile(\n content: string,\n packageFile?: string,\n): Promise<PackageFileContent | null> {\n let lineNumber: number;\n async function processGroupBlock(\n line: string,\n repositoryUrl?: string,\n trimGroupLine = false,\n ): Promise<void> {\n const groupMatch = regEx(/^group\\s+(.*?)\\s+do/).exec(line);\n if (groupMatch) {\n const depTypes = groupMatch[1]\n .split(',')\n .map((group) => group.trim())\n .map((group) => group.replace(regEx(/^:/), ''));\n\n const groupLineNumber = lineNumber;\n let groupContent = '';\n let groupLine = '';\n\n while (\n lineNumber < lines.length &&\n (trimGroupLine ? groupLine.trim() !== 'end' : groupLine !== 'end')\n ) {\n lineNumber += 1;\n groupLine = lines[lineNumber];\n\n // istanbul ignore if\n if (!isString(groupLine)) {\n logger.debug(\n { content, packageFile, type: 'groupLine' },\n 'Bundler parsing error',\n );\n groupLine = 'end';\n }\n if (trimGroupLine ? groupLine.trim() !== 'end' : groupLine !== 'end') {\n groupContent += formatContent(groupLine);\n }\n }\n\n const groupRes = await extractPackageFile(groupContent);\n if (groupRes) {\n res.deps = res.deps.concat(\n groupRes.deps.map((dep) => {\n const depObject = {\n ...dep,\n depTypes,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + groupLineNumber + 1,\n },\n };\n if (repositoryUrl) {\n depObject.registryUrls = [repositoryUrl];\n }\n return depObject;\n }),\n );\n }\n }\n }\n const res: PackageFileContent = {\n registryUrls: [],\n deps: [],\n };\n\n const variables: Record<string, string> = {};\n\n const lines = content.split(newlineRegex);\n for (lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {\n const line = lines[lineNumber];\n let sourceMatch: RegExpMatchArray | null = null;\n for (const delimiter of delimiters) {\n sourceMatch =\n sourceMatch ??\n regEx(\n `^source ((${delimiter}(?<registryUrl>[^${delimiter}]+)${delimiter})|(?<sourceName>\\\\w+))\\\\s*$`,\n ).exec(line);\n }\n if (sourceMatch) {\n if (sourceMatch.groups?.registryUrl) {\n res.registryUrls?.push(sourceMatch.groups.registryUrl);\n }\n if (sourceMatch.groups?.sourceName) {\n const registryUrl = variables[sourceMatch.groups.sourceName];\n if (registryUrl) {\n res.registryUrls?.push(registryUrl);\n }\n }\n }\n\n const rubyMatch = extractRubyVersion(line);\n if (rubyMatch) {\n res.deps.push({\n depName: 'ruby',\n currentValue: rubyMatch,\n datasource: RubyVersionDatasource.id,\n registryUrls: null,\n });\n }\n\n const variableMatch = variableMatchRegex.exec(line);\n if (variableMatch) {\n if (variableMatch.groups?.key) {\n variables[variableMatch.groups?.key] = variableMatch.groups?.value;\n }\n }\n\n const gemMatch = gemMatchRegex.exec(line)?.groups;\n\n if (gemMatch) {\n const dep: PackageDependency = {\n depName: gemMatch.depName,\n managerData: { lineNumber },\n datasource: RubygemsDatasource.id,\n };\n\n if (gemMatch.currentValue) {\n const currentValue = gemMatch.currentValue;\n dep.currentValue = currentValue;\n }\n\n const pathMatch = pathMatchRegex.exec(line)?.groups;\n if (pathMatch) {\n dep.skipReason = 'internal-package';\n }\n\n const sourceMatch = sourceMatchRegex.exec(line)?.groups;\n if (sourceMatch) {\n if (sourceMatch.registryUrl) {\n dep.registryUrls = [sourceMatch.registryUrl];\n } else if (sourceMatch.sourceName) {\n dep.registryUrls = [variables[sourceMatch.sourceName]];\n }\n }\n\n const gitRefsMatch = gitRefsMatchRegex.exec(line)?.groups;\n if (gitRefsMatch) {\n if (gitRefsMatch.gitUrl) {\n const gitUrl = gitRefsMatch.gitUrl;\n dep.packageName = gitUrl;\n\n if (isHttpUrl(gitUrl)) {\n dep.sourceUrl = gitUrl.replace(/\\.git$/, '');\n }\n } else if (gitRefsMatch.repoName) {\n dep.packageName = `https://github.com/${gitRefsMatch.repoName}`;\n dep.sourceUrl = dep.packageName;\n }\n if (gitRefsMatch.refName) {\n dep.currentDigest = gitRefsMatch.refName;\n } else if (gitRefsMatch.branchName) {\n dep.currentValue = gitRefsMatch.branchName;\n } else if (gitRefsMatch.tagName) {\n dep.currentValue = gitRefsMatch.tagName;\n }\n dep.datasource = GitRefsDatasource.id;\n }\n res.deps.push(dep);\n }\n\n await processGroupBlock(line);\n\n for (const delimiter of delimiters) {\n const sourceBlockMatch = regEx(\n `^source\\\\s+((${delimiter}(?<registryUrl>[^${delimiter}]+)${delimiter})|(?<sourceName>\\\\w+))\\\\s+do`,\n ).exec(line);\n if (sourceBlockMatch) {\n let repositoryUrl = '';\n if (sourceBlockMatch.groups?.registryUrl) {\n repositoryUrl = sourceBlockMatch.groups.registryUrl;\n }\n if (sourceBlockMatch.groups?.sourceName) {\n if (variables[sourceBlockMatch.groups.sourceName]) {\n repositoryUrl = variables[sourceBlockMatch.groups.sourceName];\n }\n }\n const sourceLineNumber = lineNumber;\n let sourceContent = '';\n let sourceLine = '';\n\n while (lineNumber < lines.length && sourceLine.trim() !== 'end') {\n lineNumber += 1;\n sourceLine = lines[lineNumber];\n // istanbul ignore if\n if (!isString(sourceLine)) {\n logger.debug(\n { content, packageFile, type: 'sourceLine' },\n 'Bundler parsing error',\n );\n sourceLine = 'end';\n }\n\n await processGroupBlock(sourceLine.trim(), repositoryUrl, true);\n\n if (sourceLine.trim() !== 'end') {\n sourceContent += formatContent(sourceLine);\n }\n }\n\n const sourceRes = await extractPackageFile(sourceContent);\n\n if (sourceRes) {\n res.deps = res.deps.concat(\n sourceRes.deps.map((dep) => ({\n ...dep,\n registryUrls: [repositoryUrl],\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + sourceLineNumber + 1,\n },\n })),\n );\n }\n }\n }\n const platformsMatch = regEx(/^platforms\\s+(.*?)\\s+do/).test(line);\n if (platformsMatch) {\n const platformsLineNumber = lineNumber;\n let platformsContent = '';\n let platformsLine = '';\n while (lineNumber < lines.length && platformsLine !== 'end') {\n lineNumber += 1;\n platformsLine = lines[lineNumber];\n // istanbul ignore if\n if (!isString(platformsLine)) {\n logger.debug(\n { content, packageFile, type: 'platformsLine' },\n 'Bundler parsing error',\n );\n platformsLine = 'end';\n }\n if (platformsLine !== 'end') {\n platformsContent += formatContent(platformsLine);\n }\n }\n const platformsRes = await extractPackageFile(platformsContent);\n if (platformsRes) {\n res.deps = res.deps.concat(\n platformsRes.deps.map((dep) => ({\n ...dep,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + platformsLineNumber + 1,\n },\n })),\n );\n }\n }\n const ifMatch = regEx(/^if\\s+(.*?)/).test(line);\n if (ifMatch) {\n const ifLineNumber = lineNumber;\n let ifContent = '';\n let ifLine = '';\n while (lineNumber < lines.length && ifLine !== 'end') {\n lineNumber += 1;\n ifLine = lines[lineNumber];\n // istanbul ignore if\n if (!isString(ifLine)) {\n logger.debug(\n { content, packageFile, type: 'ifLine' },\n 'Bundler parsing error',\n );\n ifLine = 'end';\n }\n if (ifLine !== 'end') {\n ifContent += formatContent(ifLine);\n }\n }\n const ifRes = await extractPackageFile(ifContent);\n if (ifRes) {\n res.deps = res.deps.concat(\n ifRes.deps.map((dep) => ({\n ...dep,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + ifLineNumber + 1,\n },\n })),\n );\n }\n }\n }\n if (!res.deps.length && !res.registryUrls?.length) {\n return null;\n }\n\n if (packageFile) {\n const gemfileLockPath = await getLockFilePath(packageFile);\n const lockContent = await readLocalFile(gemfileLockPath, 'utf8');\n if (lockContent) {\n logger.debug(\n `Found lock file ${gemfileLockPath} for packageFile: ${packageFile}`,\n );\n res.lockFiles = [gemfileLockPath];\n const lockedEntries = extractLockFileEntries(lockContent);\n for (const dep of res.deps) {\n // TODO: types (#22198)\n const lockedDepValue = lockedEntries.get(`${dep.depName!}`);\n if (lockedDepValue) {\n dep.lockedVersion = lockedDepValue;\n }\n }\n }\n }\n return res;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/bundler/extract.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { isHttpUrl } from '../../../util/url.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RubygemsDatasource } from '../../datasource/rubygems/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport { delimiters, extractRubyVersion, getLockFilePath } from './common.ts';\nimport { extractLockFileEntries } from './locked-version.ts';\n\nfunction formatContent(input: string): string {\n return `${input.replace(regEx(/^ {2}/), '')}\\n`; //remove leading whitespace and add a new line at the end\n}\n\nconst variableMatchRegex = regEx(\n `^(?<key>\\\\w+)\\\\s*=\\\\s*['\"](?<value>[^'\"]+)['\"]`,\n);\nconst gemMatchRegex = regEx(\n `^\\\\s*gem\\\\s+(['\"])(?<depName>[^'\"]+)(['\"])(\\\\s*,\\\\s*(?<currentValue>(['\"])[^'\"]+['\"](\\\\s*,\\\\s*['\"][^'\"]+['\"])?))?`,\n);\nconst sourceMatchRegex = regEx(\n `source:\\\\s*((?:['\"](?<registryUrl>[^'\"]+)['\"])|(?<sourceName>\\\\w+))?`,\n);\nconst gitRefsMatchRegex = regEx(\n `((git:\\\\s*['\"](?<gitUrl>[^'\"]+)['\"])|(\\\\s*,\\\\s*github:\\\\s*['\"](?<repoName>[^'\"]+)['\"]))(\\\\s*,\\\\s*branch:\\\\s*['\"](?<branchName>[^'\"]+)['\"])?(\\\\s*,\\\\s*ref:\\\\s*['\"](?<refName>[^'\"]+)['\"])?(\\\\s*,\\\\s*tag:\\\\s*['\"](?<tagName>[^'\"]+)['\"])?`,\n);\nconst pathMatchRegex = regEx(`path:\\\\s*['\"](?<path>[^'\"]+)['\"]`);\n\nexport async function extractPackageFile(\n content: string,\n packageFile?: string,\n): Promise<PackageFileContent | null> {\n let lineNumber: number;\n async function processGroupBlock(\n line: string,\n repositoryUrl?: string,\n trimGroupLine = false,\n ): Promise<void> {\n const groupMatch = regEx(/^group\\s+(.*?)\\s+do/).exec(line);\n if (groupMatch) {\n const depTypes = groupMatch[1]\n .split(',')\n .map((group) => group.trim())\n .map((group) => group.replace(regEx(/^:/), ''));\n\n const groupLineNumber = lineNumber;\n let groupContent = '';\n let groupLine = '';\n\n while (\n lineNumber < lines.length &&\n (trimGroupLine ? groupLine.trim() !== 'end' : groupLine !== 'end')\n ) {\n lineNumber += 1;\n groupLine = lines[lineNumber];\n\n // istanbul ignore if\n if (!isString(groupLine)) {\n logger.debug(\n { content, packageFile, type: 'groupLine' },\n 'Bundler parsing error',\n );\n groupLine = 'end';\n }\n if (trimGroupLine ? groupLine.trim() !== 'end' : groupLine !== 'end') {\n groupContent += formatContent(groupLine);\n }\n }\n\n const groupRes = await extractPackageFile(groupContent);\n if (groupRes) {\n res.deps = res.deps.concat(\n groupRes.deps.map((dep) => {\n const depObject = {\n ...dep,\n depTypes,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + groupLineNumber + 1,\n },\n };\n if (repositoryUrl) {\n depObject.registryUrls = [repositoryUrl];\n }\n return depObject;\n }),\n );\n }\n }\n }\n const res: PackageFileContent = {\n registryUrls: [],\n deps: [],\n };\n\n const variables: Record<string, string> = {};\n\n const lines = content.split(newlineRegex);\n for (lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {\n const line = lines[lineNumber];\n let sourceMatch: RegExpMatchArray | null = null;\n for (const delimiter of delimiters) {\n sourceMatch =\n sourceMatch ??\n regEx(\n `^source ((${delimiter}(?<registryUrl>[^${delimiter}]+)${delimiter})|(?<sourceName>\\\\w+))\\\\s*$`,\n ).exec(line);\n }\n if (sourceMatch) {\n if (sourceMatch.groups?.registryUrl) {\n res.registryUrls?.push(sourceMatch.groups.registryUrl);\n }\n if (sourceMatch.groups?.sourceName) {\n const registryUrl = variables[sourceMatch.groups.sourceName];\n if (registryUrl) {\n res.registryUrls?.push(registryUrl);\n }\n }\n }\n\n const rubyMatch = extractRubyVersion(line);\n if (rubyMatch) {\n res.deps.push({\n depName: 'ruby',\n currentValue: rubyMatch,\n datasource: RubyVersionDatasource.id,\n registryUrls: null,\n });\n }\n\n const variableMatch = variableMatchRegex.exec(line);\n if (variableMatch?.groups?.key) {\n variables[variableMatch.groups?.key] = variableMatch.groups?.value;\n }\n\n const gemMatch = gemMatchRegex.exec(line)?.groups;\n\n if (gemMatch) {\n const dep: PackageDependency = {\n depName: gemMatch.depName,\n managerData: { lineNumber },\n datasource: RubygemsDatasource.id,\n };\n\n if (gemMatch.currentValue) {\n const currentValue = gemMatch.currentValue;\n dep.currentValue = currentValue;\n }\n\n const pathMatch = pathMatchRegex.exec(line)?.groups;\n if (pathMatch) {\n dep.skipReason = 'internal-package';\n }\n\n const sourceMatch = sourceMatchRegex.exec(line)?.groups;\n if (sourceMatch) {\n if (sourceMatch.registryUrl) {\n dep.registryUrls = [sourceMatch.registryUrl];\n } else if (sourceMatch.sourceName) {\n dep.registryUrls = [variables[sourceMatch.sourceName]];\n }\n }\n\n const gitRefsMatch = gitRefsMatchRegex.exec(line)?.groups;\n if (gitRefsMatch) {\n if (gitRefsMatch.gitUrl) {\n const gitUrl = gitRefsMatch.gitUrl;\n dep.packageName = gitUrl;\n\n if (isHttpUrl(gitUrl)) {\n dep.sourceUrl = gitUrl.replace(/\\.git$/, '');\n }\n } else if (gitRefsMatch.repoName) {\n dep.packageName = `https://github.com/${gitRefsMatch.repoName}`;\n dep.sourceUrl = dep.packageName;\n }\n if (gitRefsMatch.refName) {\n dep.currentDigest = gitRefsMatch.refName;\n } else if (gitRefsMatch.branchName) {\n dep.currentValue = gitRefsMatch.branchName;\n } else if (gitRefsMatch.tagName) {\n dep.currentValue = gitRefsMatch.tagName;\n }\n dep.datasource = GitRefsDatasource.id;\n }\n res.deps.push(dep);\n }\n\n await processGroupBlock(line);\n\n for (const delimiter of delimiters) {\n const sourceBlockMatch = regEx(\n `^source\\\\s+((${delimiter}(?<registryUrl>[^${delimiter}]+)${delimiter})|(?<sourceName>\\\\w+))\\\\s+do`,\n ).exec(line);\n if (sourceBlockMatch) {\n let repositoryUrl = '';\n if (sourceBlockMatch.groups?.registryUrl) {\n repositoryUrl = sourceBlockMatch.groups.registryUrl;\n }\n if (\n sourceBlockMatch.groups?.sourceName &&\n variables[sourceBlockMatch.groups.sourceName]\n ) {\n repositoryUrl = variables[sourceBlockMatch.groups.sourceName];\n }\n const sourceLineNumber = lineNumber;\n let sourceContent = '';\n let sourceLine = '';\n\n while (lineNumber < lines.length && sourceLine.trim() !== 'end') {\n lineNumber += 1;\n sourceLine = lines[lineNumber];\n // istanbul ignore if\n if (!isString(sourceLine)) {\n logger.debug(\n { content, packageFile, type: 'sourceLine' },\n 'Bundler parsing error',\n );\n sourceLine = 'end';\n }\n\n await processGroupBlock(sourceLine.trim(), repositoryUrl, true);\n\n if (sourceLine.trim() !== 'end') {\n sourceContent += formatContent(sourceLine);\n }\n }\n\n const sourceRes = await extractPackageFile(sourceContent);\n\n if (sourceRes) {\n res.deps = res.deps.concat(\n sourceRes.deps.map((dep) => ({\n ...dep,\n registryUrls: [repositoryUrl],\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + sourceLineNumber + 1,\n },\n })),\n );\n }\n }\n }\n const platformsMatch = regEx(/^platforms\\s+(.*?)\\s+do/).test(line);\n if (platformsMatch) {\n const platformsLineNumber = lineNumber;\n let platformsContent = '';\n let platformsLine = '';\n while (lineNumber < lines.length && platformsLine !== 'end') {\n lineNumber += 1;\n platformsLine = lines[lineNumber];\n // istanbul ignore if\n if (!isString(platformsLine)) {\n logger.debug(\n { content, packageFile, type: 'platformsLine' },\n 'Bundler parsing error',\n );\n platformsLine = 'end';\n }\n if (platformsLine !== 'end') {\n platformsContent += formatContent(platformsLine);\n }\n }\n const platformsRes = await extractPackageFile(platformsContent);\n if (platformsRes) {\n res.deps = res.deps.concat(\n platformsRes.deps.map((dep) => ({\n ...dep,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + platformsLineNumber + 1,\n },\n })),\n );\n }\n }\n const ifMatch = regEx(/^if\\s+(.*?)/).test(line);\n if (ifMatch) {\n const ifLineNumber = lineNumber;\n let ifContent = '';\n let ifLine = '';\n while (lineNumber < lines.length && ifLine !== 'end') {\n lineNumber += 1;\n ifLine = lines[lineNumber];\n // istanbul ignore if\n if (!isString(ifLine)) {\n logger.debug(\n { content, packageFile, type: 'ifLine' },\n 'Bundler parsing error',\n );\n ifLine = 'end';\n }\n if (ifLine !== 'end') {\n ifContent += formatContent(ifLine);\n }\n }\n const ifRes = await extractPackageFile(ifContent);\n if (ifRes) {\n res.deps = res.deps.concat(\n ifRes.deps.map((dep) => ({\n ...dep,\n managerData: {\n lineNumber:\n Number(dep.managerData?.lineNumber) + ifLineNumber + 1,\n },\n })),\n );\n }\n }\n }\n if (!res.deps.length && !res.registryUrls?.length) {\n return null;\n }\n\n if (packageFile) {\n const gemfileLockPath = await getLockFilePath(packageFile);\n const lockContent = await readLocalFile(gemfileLockPath, 'utf8');\n if (lockContent) {\n logger.debug(\n `Found lock file ${gemfileLockPath} for packageFile: ${packageFile}`,\n );\n res.lockFiles = [gemfileLockPath];\n const lockedEntries = extractLockFileEntries(lockContent);\n for (const dep of res.deps) {\n // TODO: types (#22198)\n const lockedDepValue = lockedEntries.get(`${dep.depName!}`);\n if (lockedDepValue) {\n dep.lockedVersion = lockedDepValue;\n }\n }\n }\n }\n return res;\n}\n"],"mappings":"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"}
@@ -41,7 +41,7 @@ async function readCargoConfig() {
41
41
  if (payload) {
42
42
  const parsedCargoConfig = CargoConfig.safeParse(payload);
43
43
  if (parsedCargoConfig.success) return parsedCargoConfig.data;
44
- else logger.debug({
44
+ logger.debug({
45
45
  err: parsedCargoConfig.error,
46
46
  path
47
47
  }, `Error parsing cargo config`);
@@ -75,11 +75,9 @@ function resolveRegistryIndex(registryName, config, originalNames = /* @__PURE__
75
75
  }
76
76
  const registryIndex = config.registries?.[registryName]?.index;
77
77
  if (registryIndex) return registryIndex;
78
- else if (registryName === DEFAULT_REGISTRY_ID) return DEFAULT_REGISTRY_URL;
79
- else {
80
- logger.debug(`${registryName} cargo registry is missing index`);
81
- return null;
82
- }
78
+ if (registryName === DEFAULT_REGISTRY_ID) return DEFAULT_REGISTRY_URL;
79
+ logger.debug(`${registryName} cargo registry is missing index`);
80
+ return null;
83
81
  }
84
82
  async function extractPackageFile(content, packageFile, _config) {
85
83
  logger.trace(`cargo.extractPackageFile(${packageFile})`);
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":["versioning"],"sources":["../../../../lib/modules/manager/cargo/extract.ts"],"sourcesContent":["import { isObject, isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { getEnv } from '../../../util/env.ts';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n} from '../../../util/fs/index.ts';\nimport { api as versioning } from '../../versioning/cargo/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport { extractLockFileVersions } from './locked-version.ts';\nimport { CargoConfig, CargoManifest } from './schema.ts';\nimport type {\n CargoManagerData,\n CargoRegistries,\n CargoRegistryUrl,\n} from './types.ts';\nimport { DEFAULT_REGISTRY_URL } from './utils.ts';\n\nconst DEFAULT_REGISTRY_ID = 'crates-io';\n\nfunction getCargoIndexEnv(registryName: string): string | null {\n const registry = registryName.toUpperCase().replaceAll('-', '_');\n return getEnv()[`CARGO_REGISTRIES_${registry}_INDEX`] ?? null;\n}\n\nfunction extractFromSection(\n dependencies: PackageDependency<CargoManagerData>[] | undefined,\n cargoRegistries: CargoRegistries,\n target?: string,\n): PackageDependency[] {\n if (!dependencies) {\n return [];\n }\n\n const deps: PackageDependency<CargoManagerData>[] = [];\n\n for (const dep of Object.values(dependencies)) {\n let registryUrls: string[] | undefined;\n\n if (dep.managerData?.registryName) {\n const registryUrl =\n getCargoIndexEnv(dep.managerData.registryName) ??\n cargoRegistries[dep.managerData?.registryName];\n if (registryUrl) {\n if (registryUrl !== DEFAULT_REGISTRY_URL) {\n registryUrls = [registryUrl];\n }\n } else {\n dep.skipReason = 'unknown-registry';\n }\n }\n\n if (registryUrls) {\n dep.registryUrls = registryUrls;\n } else {\n // if we don't have an explicit registry URL check if the default registry has a non-standard url\n if (cargoRegistries[DEFAULT_REGISTRY_ID]) {\n if (cargoRegistries[DEFAULT_REGISTRY_ID] !== DEFAULT_REGISTRY_URL) {\n dep.registryUrls = [cargoRegistries[DEFAULT_REGISTRY_ID]];\n }\n } else {\n // we always expect to have DEFAULT_REGISTRY_ID set, if it's not it means the config defines an alternative\n // registry that we couldn't resolve.\n dep.skipReason = 'unknown-registry';\n }\n }\n\n if (target) {\n dep.target = target;\n }\n deps.push(dep);\n }\n\n return deps;\n}\n\n/** Reads `.cargo/config.toml`, or, if not found, `.cargo/config` */\nasync function readCargoConfig(): Promise<CargoConfig | null> {\n for (const configName of ['config.toml', 'config']) {\n const path = `.cargo/${configName}`;\n const payload = await readLocalFile(path, 'utf8');\n if (payload) {\n const parsedCargoConfig = CargoConfig.safeParse(payload);\n if (parsedCargoConfig.success) {\n return parsedCargoConfig.data;\n } else {\n logger.debug(\n { err: parsedCargoConfig.error, path },\n `Error parsing cargo config`,\n );\n }\n }\n }\n\n logger.debug('Neither .cargo/config nor .cargo/config.toml found');\n return null;\n}\n\n/** Extracts a map of cargo registries from a CargoConfig */\nfunction extractCargoRegistries(config: CargoConfig): CargoRegistries {\n const result: CargoRegistries = {};\n // check if we're overriding our default registry index\n result[DEFAULT_REGISTRY_ID] = resolveRegistryIndex(\n DEFAULT_REGISTRY_ID,\n config,\n );\n\n const registryNames = new Set([\n ...Object.keys(config.registries ?? {}),\n ...Object.keys(config.source ?? {}),\n ]);\n for (const registryName of registryNames) {\n result[registryName] = resolveRegistryIndex(registryName, config);\n }\n\n return result;\n}\n\nfunction resolveRegistryIndex(\n registryName: string,\n config: CargoConfig,\n originalNames = new Set<string>(),\n): CargoRegistryUrl {\n // if we have a source replacement, follow that.\n // https://doc.rust-lang.org/cargo/reference/source-replacement.html\n const replacementName = config.source?.[registryName]?.['replace-with'];\n if (replacementName) {\n logger.debug(\n `Replacing index of cargo registry ${registryName} with ${replacementName}`,\n );\n if (originalNames.has(replacementName)) {\n logger.warn({ registryName }, 'cargo registry resolves to itself');\n return null;\n }\n return resolveRegistryIndex(\n replacementName,\n config,\n originalNames.add(replacementName),\n );\n }\n\n const sourceRegistry = config.source?.[registryName]?.registry;\n if (sourceRegistry) {\n logger.debug(\n `Replacing cargo source registry with ${sourceRegistry} for ${registryName}`,\n );\n return sourceRegistry;\n }\n\n const registryIndex = config.registries?.[registryName]?.index;\n if (registryIndex) {\n return registryIndex;\n } else {\n // we don't need an explicit index if we're using the default registry\n if (registryName === DEFAULT_REGISTRY_ID) {\n return DEFAULT_REGISTRY_URL;\n } else {\n logger.debug(`${registryName} cargo registry is missing index`);\n return null;\n }\n }\n}\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n _config?: ExtractConfig,\n): Promise<PackageFileContent<CargoManagerData> | null> {\n logger.trace(`cargo.extractPackageFile(${packageFile})`);\n\n const cargoConfig = (await readCargoConfig()) ?? {};\n const cargoRegistries = extractCargoRegistries(cargoConfig);\n\n const parsedCargoManifest = CargoManifest.safeParse(content);\n if (!parsedCargoManifest.success) {\n logger.debug(\n { err: parsedCargoManifest.error, packageFile },\n 'Error parsing Cargo.toml file',\n );\n return null;\n }\n\n const cargoManifest = parsedCargoManifest.data;\n\n /*\n There are the following sections in Cargo.toml:\n [package]\n [dependencies]\n [dev-dependencies]\n [build-dependencies]\n [target.*.dependencies]\n [workspace.dependencies]\n */\n const targetSection = cargoManifest.target;\n // An array of all dependencies in the target section\n let targetDeps: PackageDependency[] = [];\n if (targetSection) {\n const targets = Object.keys(targetSection);\n targets.forEach((target) => {\n const targetContent = targetSection[target];\n // Dependencies for `${target}`\n const deps = [\n ...extractFromSection(\n targetContent.dependencies,\n cargoRegistries,\n target,\n ),\n ...extractFromSection(\n targetContent['dev-dependencies'],\n cargoRegistries,\n target,\n ),\n ...extractFromSection(\n targetContent['build-dependencies'],\n cargoRegistries,\n target,\n ),\n ];\n targetDeps = targetDeps.concat(deps);\n });\n }\n\n const workspaceSection = cargoManifest.workspace;\n let workspaceDeps: PackageDependency[] = [];\n if (workspaceSection) {\n workspaceDeps = extractFromSection(\n workspaceSection.dependencies,\n cargoRegistries,\n undefined,\n );\n }\n\n const deps = [\n ...extractFromSection(cargoManifest.dependencies, cargoRegistries),\n ...extractFromSection(cargoManifest['dev-dependencies'], cargoRegistries),\n ...extractFromSection(cargoManifest['build-dependencies'], cargoRegistries),\n ...targetDeps,\n ...workspaceDeps,\n ];\n if (!deps.length) {\n return null;\n }\n\n const packageSection = cargoManifest.package;\n let version: string | undefined = undefined;\n if (packageSection) {\n if (isString(packageSection.version)) {\n version = packageSection.version;\n } else if (\n isObject(packageSection.version) &&\n cargoManifest.workspace?.package?.version\n ) {\n // TODO: Support reading from parent workspace manifest?\n version = cargoManifest.workspace.package.version;\n }\n }\n\n const lockFileName = await findLocalSiblingOrParent(\n packageFile,\n 'Cargo.lock',\n );\n const res: PackageFileContent = { deps, packageFileVersion: version };\n if (lockFileName) {\n logger.debug(\n `Found lock file ${lockFileName} for packageFile: ${packageFile}`,\n );\n\n const versionsByPackage = await extractLockFileVersions(lockFileName);\n if (!versionsByPackage) {\n logger.debug(\n `Could not extract lock file versions from ${lockFileName}.`,\n );\n return res;\n }\n\n res.lockFiles = [lockFileName];\n\n for (const dep of deps) {\n const packageName = dep.packageName ?? dep.depName!;\n const versions = coerceArray(versionsByPackage.get(packageName));\n\n let lockedVersion: string | null = null;\n if (dep.currentValue) {\n lockedVersion = versioning.getSatisfyingVersion(\n versions,\n dep.currentValue,\n );\n }\n\n if (lockedVersion) {\n dep.lockedVersion = lockedVersion;\n } else {\n logger.debug(\n `No locked version found for package ${dep.depName} in the range of ${dep.currentValue}.`,\n );\n }\n }\n }\n\n return res;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","names":["versioning"],"sources":["../../../../lib/modules/manager/cargo/extract.ts"],"sourcesContent":["import { isObject, isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { getEnv } from '../../../util/env.ts';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n} from '../../../util/fs/index.ts';\nimport { api as versioning } from '../../versioning/cargo/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport { extractLockFileVersions } from './locked-version.ts';\nimport { CargoConfig, CargoManifest } from './schema.ts';\nimport type {\n CargoManagerData,\n CargoRegistries,\n CargoRegistryUrl,\n} from './types.ts';\nimport { DEFAULT_REGISTRY_URL } from './utils.ts';\n\nconst DEFAULT_REGISTRY_ID = 'crates-io';\n\nfunction getCargoIndexEnv(registryName: string): string | null {\n const registry = registryName.toUpperCase().replaceAll('-', '_');\n return getEnv()[`CARGO_REGISTRIES_${registry}_INDEX`] ?? null;\n}\n\nfunction extractFromSection(\n dependencies: PackageDependency<CargoManagerData>[] | undefined,\n cargoRegistries: CargoRegistries,\n target?: string,\n): PackageDependency[] {\n if (!dependencies) {\n return [];\n }\n\n const deps: PackageDependency<CargoManagerData>[] = [];\n\n for (const dep of Object.values(dependencies)) {\n let registryUrls: string[] | undefined;\n\n if (dep.managerData?.registryName) {\n const registryUrl =\n getCargoIndexEnv(dep.managerData.registryName) ??\n cargoRegistries[dep.managerData?.registryName];\n if (registryUrl) {\n if (registryUrl !== DEFAULT_REGISTRY_URL) {\n registryUrls = [registryUrl];\n }\n } else {\n dep.skipReason = 'unknown-registry';\n }\n }\n\n if (registryUrls) {\n dep.registryUrls = registryUrls;\n } else {\n // if we don't have an explicit registry URL check if the default registry has a non-standard url\n if (cargoRegistries[DEFAULT_REGISTRY_ID]) {\n if (cargoRegistries[DEFAULT_REGISTRY_ID] !== DEFAULT_REGISTRY_URL) {\n dep.registryUrls = [cargoRegistries[DEFAULT_REGISTRY_ID]];\n }\n } else {\n // we always expect to have DEFAULT_REGISTRY_ID set, if it's not it means the config defines an alternative\n // registry that we couldn't resolve.\n dep.skipReason = 'unknown-registry';\n }\n }\n\n if (target) {\n dep.target = target;\n }\n deps.push(dep);\n }\n\n return deps;\n}\n\n/** Reads `.cargo/config.toml`, or, if not found, `.cargo/config` */\nasync function readCargoConfig(): Promise<CargoConfig | null> {\n for (const configName of ['config.toml', 'config']) {\n const path = `.cargo/${configName}`;\n const payload = await readLocalFile(path, 'utf8');\n if (payload) {\n const parsedCargoConfig = CargoConfig.safeParse(payload);\n if (parsedCargoConfig.success) {\n return parsedCargoConfig.data;\n }\n logger.debug(\n { err: parsedCargoConfig.error, path },\n `Error parsing cargo config`,\n );\n }\n }\n\n logger.debug('Neither .cargo/config nor .cargo/config.toml found');\n return null;\n}\n\n/** Extracts a map of cargo registries from a CargoConfig */\nfunction extractCargoRegistries(config: CargoConfig): CargoRegistries {\n const result: CargoRegistries = {};\n // check if we're overriding our default registry index\n result[DEFAULT_REGISTRY_ID] = resolveRegistryIndex(\n DEFAULT_REGISTRY_ID,\n config,\n );\n\n const registryNames = new Set([\n ...Object.keys(config.registries ?? {}),\n ...Object.keys(config.source ?? {}),\n ]);\n for (const registryName of registryNames) {\n result[registryName] = resolveRegistryIndex(registryName, config);\n }\n\n return result;\n}\n\nfunction resolveRegistryIndex(\n registryName: string,\n config: CargoConfig,\n originalNames = new Set<string>(),\n): CargoRegistryUrl {\n // if we have a source replacement, follow that.\n // https://doc.rust-lang.org/cargo/reference/source-replacement.html\n const replacementName = config.source?.[registryName]?.['replace-with'];\n if (replacementName) {\n logger.debug(\n `Replacing index of cargo registry ${registryName} with ${replacementName}`,\n );\n if (originalNames.has(replacementName)) {\n logger.warn({ registryName }, 'cargo registry resolves to itself');\n return null;\n }\n return resolveRegistryIndex(\n replacementName,\n config,\n originalNames.add(replacementName),\n );\n }\n\n const sourceRegistry = config.source?.[registryName]?.registry;\n if (sourceRegistry) {\n logger.debug(\n `Replacing cargo source registry with ${sourceRegistry} for ${registryName}`,\n );\n return sourceRegistry;\n }\n\n const registryIndex = config.registries?.[registryName]?.index;\n if (registryIndex) {\n return registryIndex;\n }\n // we don't need an explicit index if we're using the default registry\n if (registryName === DEFAULT_REGISTRY_ID) {\n return DEFAULT_REGISTRY_URL;\n }\n logger.debug(`${registryName} cargo registry is missing index`);\n return null;\n}\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n _config?: ExtractConfig,\n): Promise<PackageFileContent<CargoManagerData> | null> {\n logger.trace(`cargo.extractPackageFile(${packageFile})`);\n\n const cargoConfig = (await readCargoConfig()) ?? {};\n const cargoRegistries = extractCargoRegistries(cargoConfig);\n\n const parsedCargoManifest = CargoManifest.safeParse(content);\n if (!parsedCargoManifest.success) {\n logger.debug(\n { err: parsedCargoManifest.error, packageFile },\n 'Error parsing Cargo.toml file',\n );\n return null;\n }\n\n const cargoManifest = parsedCargoManifest.data;\n\n /*\n There are the following sections in Cargo.toml:\n [package]\n [dependencies]\n [dev-dependencies]\n [build-dependencies]\n [target.*.dependencies]\n [workspace.dependencies]\n */\n const targetSection = cargoManifest.target;\n // An array of all dependencies in the target section\n let targetDeps: PackageDependency[] = [];\n if (targetSection) {\n const targets = Object.keys(targetSection);\n targets.forEach((target) => {\n const targetContent = targetSection[target];\n // Dependencies for `${target}`\n const deps = [\n ...extractFromSection(\n targetContent.dependencies,\n cargoRegistries,\n target,\n ),\n ...extractFromSection(\n targetContent['dev-dependencies'],\n cargoRegistries,\n target,\n ),\n ...extractFromSection(\n targetContent['build-dependencies'],\n cargoRegistries,\n target,\n ),\n ];\n targetDeps = targetDeps.concat(deps);\n });\n }\n\n const workspaceSection = cargoManifest.workspace;\n let workspaceDeps: PackageDependency[] = [];\n if (workspaceSection) {\n workspaceDeps = extractFromSection(\n workspaceSection.dependencies,\n cargoRegistries,\n undefined,\n );\n }\n\n const deps = [\n ...extractFromSection(cargoManifest.dependencies, cargoRegistries),\n ...extractFromSection(cargoManifest['dev-dependencies'], cargoRegistries),\n ...extractFromSection(cargoManifest['build-dependencies'], cargoRegistries),\n ...targetDeps,\n ...workspaceDeps,\n ];\n if (!deps.length) {\n return null;\n }\n\n const packageSection = cargoManifest.package;\n let version: string | undefined = undefined;\n if (packageSection) {\n if (isString(packageSection.version)) {\n version = packageSection.version;\n } else if (\n isObject(packageSection.version) &&\n cargoManifest.workspace?.package?.version\n ) {\n // TODO: Support reading from parent workspace manifest?\n version = cargoManifest.workspace.package.version;\n }\n }\n\n const lockFileName = await findLocalSiblingOrParent(\n packageFile,\n 'Cargo.lock',\n );\n const res: PackageFileContent = { deps, packageFileVersion: version };\n if (lockFileName) {\n logger.debug(\n `Found lock file ${lockFileName} for packageFile: ${packageFile}`,\n );\n\n const versionsByPackage = await extractLockFileVersions(lockFileName);\n if (!versionsByPackage) {\n logger.debug(\n `Could not extract lock file versions from ${lockFileName}.`,\n );\n return res;\n }\n\n res.lockFiles = [lockFileName];\n\n for (const dep of deps) {\n const packageName = dep.packageName ?? dep.depName!;\n const versions = coerceArray(versionsByPackage.get(packageName));\n\n let lockedVersion: string | null = null;\n if (dep.currentValue) {\n lockedVersion = versioning.getSatisfyingVersion(\n versions,\n dep.currentValue,\n );\n }\n\n if (lockedVersion) {\n dep.lockedVersion = lockedVersion;\n } else {\n logger.debug(\n `No locked version found for package ${dep.depName} in the range of ${dep.currentValue}.`,\n );\n }\n }\n }\n\n return res;\n}\n"],"mappings":"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"}
@@ -33,7 +33,7 @@ function processDepForAutoReplace(dep, lineNumberRanges, lines, linefeed) {
33
33
  return a[0] - b[0];
34
34
  });
35
35
  const minLine = lineNumberRangesToReplace[0]?.[0];
36
- const maxLine = lineNumberRangesToReplace[lineNumberRangesToReplace.length - 1]?.[1];
36
+ const maxLine = lineNumberRangesToReplace.at(-1)?.[1];
37
37
  if (lineNumberRanges.length === 1 || minLine === void 0 || maxLine === void 0) return;
38
38
  dep.replaceString = Array.from({ length: maxLine - minLine + 1 }, (_v, k) => k + minLine).map((lineNumber) => lines[lineNumber]).join(linefeed);
39
39
  if (!dep.currentDigest) dep.replaceString += linefeed;
@@ -54,7 +54,7 @@ function splitImageParts(currentFrom) {
54
54
  const depTagSplit = currentDepTag.split(":");
55
55
  let depName;
56
56
  let currentValue;
57
- if (depTagSplit.length === 1 || depTagSplit[depTagSplit.length - 1].includes("/")) depName = currentDepTag;
57
+ if (depTagSplit.length === 1 || depTagSplit.at(-1).includes("/")) depName = currentDepTag;
58
58
  else {
59
59
  currentValue = depTagSplit.pop();
60
60
  depName = depTagSplit.join(":");
@@ -229,7 +229,7 @@ function extractPackageFile(content, _packageFile, config) {
229
229
  }
230
230
  if (!deps.length) return null;
231
231
  for (const d of deps) d.depType ??= "stage";
232
- deps[deps.length - 1].depType = "final";
232
+ deps.at(-1).depType = "final";
233
233
  return { deps };
234
234
  }
235
235
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":["ubuntuVersioning.id","debianVersioning.id"],"sources":["../../../../lib/modules/manager/dockerfile/extract.ts"],"sourcesContent":["import { isNonEmptyStringAndNotWhitespace, isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport * as debianVersioning from '../../versioning/debian/index.ts';\nimport * as ubuntuVersioning from '../../versioning/ubuntu/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\n\nconst variableMarker = '$';\n\nexport function extractVariables(image: string): Record<string, string> {\n const variables: Record<string, string> = {};\n const variableRegex = regEx(\n /(?<fullvariable>\\\\?\\$(?<simplearg>\\w+)|\\\\?\\${(?<complexarg>\\w+)(?::.+?)?}+)/gi,\n );\n\n let match: RegExpExecArray | null;\n do {\n match = variableRegex.exec(image);\n if (match?.groups?.fullvariable) {\n variables[match.groups.fullvariable] =\n match.groups?.simplearg || match.groups?.complexarg;\n }\n } while (match);\n\n return variables;\n}\n\nfunction getAutoReplaceTemplate(dep: PackageDependency): string | undefined {\n let template = dep.replaceString;\n\n if (dep.currentValue) {\n let placeholder = '{{#if newValue}}{{newValue}}{{/if}}';\n if (!dep.currentDigest) {\n placeholder += '{{#if newDigest}}@{{newDigest}}{{/if}}';\n }\n template = template?.replace(dep.currentValue, placeholder);\n }\n\n if (dep.currentDigest) {\n template = template?.replace(\n dep.currentDigest,\n '{{#if newDigest}}{{newDigest}}{{/if}}',\n );\n }\n\n return template;\n}\n\nfunction processDepForAutoReplace(\n dep: PackageDependency,\n lineNumberRanges: number[][],\n lines: string[],\n linefeed: string,\n): void {\n const lineNumberRangesToReplace: number[][] = [];\n for (const lineNumberRange of lineNumberRanges) {\n for (const lineNumber of lineNumberRange) {\n if (\n (isString(dep.currentValue) &&\n lines[lineNumber].includes(dep.currentValue)) ||\n (isString(dep.currentDigest) &&\n lines[lineNumber].includes(dep.currentDigest))\n ) {\n lineNumberRangesToReplace.push(lineNumberRange);\n }\n }\n }\n\n lineNumberRangesToReplace.sort((a, b) => {\n return a[0] - b[0];\n });\n\n const minLine = lineNumberRangesToReplace[0]?.[0];\n const maxLine =\n lineNumberRangesToReplace[lineNumberRangesToReplace.length - 1]?.[1];\n if (\n lineNumberRanges.length === 1 ||\n minLine === undefined ||\n maxLine === undefined\n ) {\n return;\n }\n\n const unfoldedLineNumbers = Array.from(\n { length: maxLine - minLine + 1 },\n (_v, k) => k + minLine,\n );\n\n dep.replaceString = unfoldedLineNumbers\n .map((lineNumber) => lines[lineNumber])\n .join(linefeed);\n\n if (!dep.currentDigest) {\n dep.replaceString += linefeed;\n }\n\n dep.autoReplaceStringTemplate = getAutoReplaceTemplate(dep);\n}\n\nexport function splitImageParts(currentFrom: string): PackageDependency {\n let isVariable = false;\n let cleanedCurrentFrom = currentFrom;\n\n // Check if we have a variable in format of \"${VARIABLE:-<image>:<defaultVal>@<digest>}\"\n // If so, remove everything except the image, defaultVal and digest.\n if (cleanedCurrentFrom?.includes(variableMarker)) {\n const defaultValueRegex = regEx(/^\\${.+?:-\"?(?<value>.*?)\"?}$/);\n const defaultValueMatch =\n defaultValueRegex.exec(cleanedCurrentFrom)?.groups;\n if (defaultValueMatch?.value) {\n isVariable = true;\n cleanedCurrentFrom = defaultValueMatch.value;\n }\n\n if (cleanedCurrentFrom?.includes(variableMarker)) {\n // If cleanedCurrentFrom contains a variable, after cleaning, e.g. \"$REGISTRY/alpine\", we do not support this.\n return {\n skipReason: 'contains-variable',\n };\n }\n }\n\n const [currentDepTag, currentDigest] = cleanedCurrentFrom.split('@');\n const depTagSplit = currentDepTag.split(':');\n let depName: string;\n let currentValue: string | undefined;\n if (\n depTagSplit.length === 1 ||\n depTagSplit[depTagSplit.length - 1].includes('/')\n ) {\n depName = currentDepTag;\n } else {\n currentValue = depTagSplit.pop();\n depName = depTagSplit.join(':');\n }\n\n const dep: PackageDependency = {\n depName,\n packageName: depName,\n currentValue,\n currentDigest,\n };\n\n if (isVariable) {\n dep.replaceString = cleanedCurrentFrom;\n\n if (!dep.currentValue) {\n delete dep.currentValue;\n }\n\n if (!dep.currentDigest) {\n delete dep.currentDigest;\n }\n }\n\n return dep;\n}\n\nconst quayRegex = regEx(/^quay\\.io(?::[1-9][0-9]{0,4})?/i);\n\nexport function getDep(\n currentFrom: string | null | undefined,\n specifyReplaceString = true,\n registryAliases?: Record<string, string>,\n): PackageDependency {\n if (\n !isString(currentFrom) ||\n !isNonEmptyStringAndNotWhitespace(currentFrom)\n ) {\n return {\n skipReason: 'invalid-value',\n };\n }\n\n // Resolve registry aliases first so that we don't need special casing later on:\n for (const [name, value] of Object.entries(registryAliases ?? {})) {\n if (currentFrom.startsWith(`${name}/`)) {\n const depName = currentFrom.substring(name.length + 1);\n const dep = getDep(`${value}/${depName}`, false);\n // retain depName, not sure if condition is necessary\n if (dep.depName?.startsWith(value)) {\n dep.packageName = dep.depName;\n dep.depName = `${name}/${dep.depName.substring(value.length + 1)}`;\n }\n if (specifyReplaceString) {\n dep.replaceString = currentFrom;\n dep.autoReplaceStringTemplate = getAutoReplaceTemplate(dep);\n }\n return dep;\n }\n }\n\n const dep = splitImageParts(currentFrom);\n if (specifyReplaceString) {\n dep.replaceString ??= currentFrom;\n dep.autoReplaceStringTemplate =\n '{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}';\n }\n dep.datasource = DockerDatasource.id;\n\n // Pretty up special prefixes\n if (dep.depName) {\n const specialPrefixes = ['amd64', 'arm64', 'library'];\n for (const prefix of specialPrefixes) {\n if (dep.depName.startsWith(`${prefix}/`)) {\n dep.depName = dep.depName.replace(`${prefix}/`, '');\n if (specifyReplaceString) {\n dep.autoReplaceStringTemplate =\n '{{packageName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}';\n }\n }\n }\n }\n\n if (dep.depName === 'ubuntu' || dep.depName?.endsWith('/ubuntu')) {\n dep.versioning = ubuntuVersioning.id;\n }\n\n if (\n (dep.depName === 'debian' || dep.depName?.endsWith('/debian')) &&\n debianVersioning.api.isVersion(dep.currentValue)\n ) {\n dep.versioning = debianVersioning.id;\n }\n\n // Don't display quay.io ports\n if (dep.depName && quayRegex.test(dep.depName)) {\n const depName = dep.depName.replace(quayRegex, 'quay.io');\n if (depName !== dep.depName) {\n dep.depName = depName;\n dep.autoReplaceStringTemplate =\n '{{packageName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}';\n }\n }\n\n return dep;\n}\n\nexport function extractPackageFile(\n content: string,\n _packageFile: string,\n config: ExtractConfig,\n): PackageFileContent | null {\n const sanitizedContent = content.replace(regEx(/^\\uFEFF/), ''); // remove bom marker\n const deps: PackageDependency[] = [];\n const stageNames: string[] = [];\n const args: Record<string, string> = {};\n const argsLines: Record<string, number[]> = {};\n\n let escapeChar = '\\\\\\\\';\n let lookForEscapeChar = true;\n let lookForSyntaxDirective = true;\n\n const lineFeed = sanitizedContent.includes('\\r\\n') ? '\\r\\n' : '\\n';\n const lines = sanitizedContent.split(newlineRegex);\n for (let lineNumber = 0; lineNumber < lines.length; ) {\n const lineNumberInstrStart = lineNumber;\n let instruction = lines[lineNumber];\n\n if (lookForEscapeChar) {\n const directivesMatch = regEx(\n /^[ \\t]*#[ \\t]*(?<directive>syntax|escape)[ \\t]*=[ \\t]*(?<escapeChar>\\S)/i,\n ).exec(instruction);\n if (!directivesMatch) {\n lookForEscapeChar = false;\n } else if (directivesMatch.groups?.directive.toLowerCase() === 'escape') {\n if (directivesMatch.groups?.escapeChar === '`') {\n escapeChar = '`';\n }\n lookForEscapeChar = false;\n }\n }\n\n if (lookForSyntaxDirective) {\n const syntaxRegex = regEx(\n '^#[ \\\\t]*syntax[ \\\\t]*=[ \\\\t]*(?<image>\\\\S+)',\n 'im',\n );\n const syntaxMatch = instruction.match(syntaxRegex);\n if (syntaxMatch?.groups?.image) {\n const syntaxImage = syntaxMatch.groups.image;\n const lineNumberRanges: number[][] = [\n [lineNumberInstrStart, lineNumber],\n ];\n const dep = getDep(syntaxImage, true, config.registryAliases);\n dep.depType = 'syntax';\n processDepForAutoReplace(dep, lineNumberRanges, lines, lineFeed);\n logger.trace(\n {\n depName: dep.depName,\n currentValue: dep.currentValue,\n currentDigest: dep.currentDigest,\n },\n 'Dockerfile # syntax',\n );\n deps.push(dep);\n }\n lookForSyntaxDirective = false;\n }\n\n const lineContinuationRegex = regEx(`${escapeChar}[ \\\\t]*$|^[ \\\\t]*#`, 'm');\n let lineLookahead = instruction;\n while (\n !lookForEscapeChar &&\n !instruction.trimStart().startsWith('#') &&\n lineContinuationRegex.test(lineLookahead)\n ) {\n lineLookahead = lines[++lineNumber] || '';\n instruction += `\\n${lineLookahead}`;\n }\n\n const argRegex = regEx(\n `^[ \\\\t]*ARG(?:${escapeChar}[ \\\\t]*\\\\r?\\\\n| |\\\\t|#.*?\\\\r?\\\\n)+(?<name>\\\\w+)[ =](?<value>\\\\S*)`,\n 'im',\n );\n const argMatch = argRegex.exec(instruction);\n if (argMatch?.groups?.name) {\n argsLines[argMatch.groups.name] = [lineNumberInstrStart, lineNumber];\n let argMatchValue = argMatch.groups?.value;\n\n if (argMatchValue.startsWith('\"') && argMatchValue.endsWith('\"')) {\n argMatchValue = argMatchValue.slice(1, -1);\n }\n\n args[argMatch.groups.name] = argMatchValue || '';\n }\n\n const fromRegex = new RegExp(\n `^[ \\\\t]*FROM(?:${escapeChar}[ \\\\t]*\\\\r?\\\\n| |\\\\t|#.*?\\\\r?\\\\n|--platform=\\\\S+)+(?<image>\\\\S+)(?:(?:${escapeChar}[ \\\\t]*\\\\r?\\\\n| |\\\\t|#.*?\\\\r?\\\\n)+as[ \\\\t]+(?<name>\\\\S+))?`,\n 'im',\n ); // TODO #12875 complex for re2 has too many not supported groups\n const fromMatch = instruction.match(fromRegex);\n if (fromMatch?.groups?.image) {\n let fromImage = fromMatch.groups.image;\n const lineNumberRanges: number[][] = [[lineNumberInstrStart, lineNumber]];\n\n if (fromImage.includes(variableMarker)) {\n const variables = extractVariables(fromImage);\n for (const [fullVariable, argName] of Object.entries(variables)) {\n const resolvedArgValue = args[argName];\n if (resolvedArgValue || resolvedArgValue === '') {\n fromImage = fromImage.replaceAll(fullVariable, resolvedArgValue);\n lineNumberRanges.push(argsLines[argName]);\n }\n }\n }\n\n if (fromMatch.groups?.name) {\n logger.debug(\n `Found a multistage build stage name: ${fromMatch.groups.name}`,\n );\n stageNames.push(fromMatch.groups.name);\n }\n if (fromImage === 'scratch') {\n logger.debug('Skipping scratch');\n } else if (fromImage && stageNames.includes(fromImage)) {\n logger.debug(`Skipping alias FROM image:${fromImage}`);\n } else {\n const dep = getDep(fromImage, true, config.registryAliases);\n processDepForAutoReplace(dep, lineNumberRanges, lines, lineFeed);\n logger.trace(\n {\n depName: dep.depName,\n currentValue: dep.currentValue,\n currentDigest: dep.currentDigest,\n },\n 'Dockerfile FROM',\n );\n deps.push(dep);\n }\n }\n\n const copyFromRegex = new RegExp(\n `^[ \\\\t]*COPY(?:${escapeChar}[ \\\\t]*\\\\r?\\\\n| |\\\\t|#.*?\\\\r?\\\\n|--[a-z]+(?:=[a-zA-Z0-9_.:-]+?)?)+--from=(?<image>\\\\S+)`,\n 'im',\n ); // TODO #12875 complex for re2 has too many not supported groups\n const copyFromMatch = instruction.match(copyFromRegex);\n if (copyFromMatch?.groups?.image) {\n if (stageNames.includes(copyFromMatch.groups.image)) {\n logger.debug(\n { image: copyFromMatch.groups.image },\n 'Skipping alias COPY --from',\n );\n } else if (Number.isNaN(Number(copyFromMatch.groups.image))) {\n const dep = getDep(\n copyFromMatch.groups.image,\n true,\n config.registryAliases,\n );\n const lineNumberRanges: number[][] = [\n [lineNumberInstrStart, lineNumber],\n ];\n processDepForAutoReplace(dep, lineNumberRanges, lines, lineFeed);\n logger.debug(\n {\n depName: dep.depName,\n currentValue: dep.currentValue,\n currentDigest: dep.currentDigest,\n },\n 'Dockerfile COPY --from',\n );\n deps.push(dep);\n } else {\n logger.debug(\n { image: copyFromMatch.groups.image },\n 'Skipping index reference COPY --from',\n );\n }\n }\n\n const runMountFromRegex = regEx(\n `^[ \\\\t]*RUN(?:${escapeChar}[ \\\\t]*\\\\r?\\\\n| |\\\\t|#.*?\\\\r?\\\\n|--[a-z]+(?:=[a-zA-Z0-9_.:-]+?)?)+--mount=(?:\\\\S*=\\\\S*,)*from=(?<image>[^, ]+)`,\n 'im',\n );\n const runMountFromMatch = instruction.match(runMountFromRegex);\n if (runMountFromMatch?.groups?.image) {\n if (stageNames.includes(runMountFromMatch.groups.image)) {\n logger.debug(\n { image: runMountFromMatch.groups.image },\n 'Skipping alias RUN --mount=from',\n );\n } else {\n const dep = getDep(\n runMountFromMatch.groups.image,\n true,\n config.registryAliases,\n );\n const lineNumberRanges: number[][] = [\n [lineNumberInstrStart, lineNumber],\n ];\n processDepForAutoReplace(dep, lineNumberRanges, lines, lineFeed);\n logger.debug(\n {\n depName: dep.depName,\n currentValue: dep.currentValue,\n currentDigest: dep.currentDigest,\n },\n 'Dockerfile RUN --mount=from',\n );\n deps.push(dep);\n }\n }\n\n lineNumber += 1;\n }\n\n if (!deps.length) {\n return null;\n }\n for (const d of deps) {\n d.depType ??= 'stage';\n }\n deps[deps.length - 1].depType = 'final';\n return { deps };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","names":["ubuntuVersioning.id","debianVersioning.id"],"sources":["../../../../lib/modules/manager/dockerfile/extract.ts"],"sourcesContent":["import { isNonEmptyStringAndNotWhitespace, isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport * as debianVersioning from '../../versioning/debian/index.ts';\nimport * as ubuntuVersioning from '../../versioning/ubuntu/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\n\nconst variableMarker = '$';\n\nexport function extractVariables(image: string): Record<string, string> {\n const variables: Record<string, string> = {};\n const variableRegex = regEx(\n /(?<fullvariable>\\\\?\\$(?<simplearg>\\w+)|\\\\?\\${(?<complexarg>\\w+)(?::.+?)?}+)/gi,\n );\n\n let match: RegExpExecArray | null;\n do {\n match = variableRegex.exec(image);\n if (match?.groups?.fullvariable) {\n variables[match.groups.fullvariable] =\n match.groups?.simplearg || match.groups?.complexarg;\n }\n } while (match);\n\n return variables;\n}\n\nfunction getAutoReplaceTemplate(dep: PackageDependency): string | undefined {\n let template = dep.replaceString;\n\n if (dep.currentValue) {\n let placeholder = '{{#if newValue}}{{newValue}}{{/if}}';\n if (!dep.currentDigest) {\n placeholder += '{{#if newDigest}}@{{newDigest}}{{/if}}';\n }\n template = template?.replace(dep.currentValue, placeholder);\n }\n\n if (dep.currentDigest) {\n template = template?.replace(\n dep.currentDigest,\n '{{#if newDigest}}{{newDigest}}{{/if}}',\n );\n }\n\n return template;\n}\n\nfunction processDepForAutoReplace(\n dep: PackageDependency,\n lineNumberRanges: number[][],\n lines: string[],\n linefeed: string,\n): void {\n const lineNumberRangesToReplace: number[][] = [];\n for (const lineNumberRange of lineNumberRanges) {\n for (const lineNumber of lineNumberRange) {\n if (\n (isString(dep.currentValue) &&\n lines[lineNumber].includes(dep.currentValue)) ||\n (isString(dep.currentDigest) &&\n lines[lineNumber].includes(dep.currentDigest))\n ) {\n lineNumberRangesToReplace.push(lineNumberRange);\n }\n }\n }\n\n lineNumberRangesToReplace.sort((a, b) => {\n return a[0] - b[0];\n });\n\n const minLine = lineNumberRangesToReplace[0]?.[0];\n const maxLine = lineNumberRangesToReplace.at(-1)?.[1];\n if (\n lineNumberRanges.length === 1 ||\n minLine === undefined ||\n maxLine === undefined\n ) {\n return;\n }\n\n const unfoldedLineNumbers = Array.from(\n { length: maxLine - minLine + 1 },\n (_v, k) => k + minLine,\n );\n\n dep.replaceString = unfoldedLineNumbers\n .map((lineNumber) => lines[lineNumber])\n .join(linefeed);\n\n if (!dep.currentDigest) {\n dep.replaceString += linefeed;\n }\n\n dep.autoReplaceStringTemplate = getAutoReplaceTemplate(dep);\n}\n\nexport function splitImageParts(currentFrom: string): PackageDependency {\n let isVariable = false;\n let cleanedCurrentFrom = currentFrom;\n\n // Check if we have a variable in format of \"${VARIABLE:-<image>:<defaultVal>@<digest>}\"\n // If so, remove everything except the image, defaultVal and digest.\n if (cleanedCurrentFrom?.includes(variableMarker)) {\n const defaultValueRegex = regEx(/^\\${.+?:-\"?(?<value>.*?)\"?}$/);\n const defaultValueMatch =\n defaultValueRegex.exec(cleanedCurrentFrom)?.groups;\n if (defaultValueMatch?.value) {\n isVariable = true;\n cleanedCurrentFrom = defaultValueMatch.value;\n }\n\n if (cleanedCurrentFrom?.includes(variableMarker)) {\n // If cleanedCurrentFrom contains a variable, after cleaning, e.g. \"$REGISTRY/alpine\", we do not support this.\n return {\n skipReason: 'contains-variable',\n };\n }\n }\n\n const [currentDepTag, currentDigest] = cleanedCurrentFrom.split('@');\n const depTagSplit = currentDepTag.split(':');\n let depName: string;\n let currentValue: string | undefined;\n if (depTagSplit.length === 1 || depTagSplit.at(-1)!.includes('/')) {\n depName = currentDepTag;\n } else {\n currentValue = depTagSplit.pop();\n depName = depTagSplit.join(':');\n }\n\n const dep: PackageDependency = {\n depName,\n packageName: depName,\n currentValue,\n currentDigest,\n };\n\n if (isVariable) {\n dep.replaceString = cleanedCurrentFrom;\n\n if (!dep.currentValue) {\n delete dep.currentValue;\n }\n\n if (!dep.currentDigest) {\n delete dep.currentDigest;\n }\n }\n\n return dep;\n}\n\nconst quayRegex = regEx(/^quay\\.io(?::[1-9][0-9]{0,4})?/i);\n\nexport function getDep(\n currentFrom: string | null | undefined,\n specifyReplaceString = true,\n registryAliases?: Record<string, string>,\n): PackageDependency {\n if (\n !isString(currentFrom) ||\n !isNonEmptyStringAndNotWhitespace(currentFrom)\n ) {\n return {\n skipReason: 'invalid-value',\n };\n }\n\n // Resolve registry aliases first so that we don't need special casing later on:\n for (const [name, value] of Object.entries(registryAliases ?? {})) {\n if (currentFrom.startsWith(`${name}/`)) {\n const depName = currentFrom.substring(name.length + 1);\n const dep = getDep(`${value}/${depName}`, false);\n // retain depName, not sure if condition is necessary\n if (dep.depName?.startsWith(value)) {\n dep.packageName = dep.depName;\n dep.depName = `${name}/${dep.depName.substring(value.length + 1)}`;\n }\n if (specifyReplaceString) {\n dep.replaceString = currentFrom;\n dep.autoReplaceStringTemplate = getAutoReplaceTemplate(dep);\n }\n return dep;\n }\n }\n\n const dep = splitImageParts(currentFrom);\n if (specifyReplaceString) {\n dep.replaceString ??= currentFrom;\n dep.autoReplaceStringTemplate =\n '{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}';\n }\n dep.datasource = DockerDatasource.id;\n\n // Pretty up special prefixes\n if (dep.depName) {\n const specialPrefixes = ['amd64', 'arm64', 'library'];\n for (const prefix of specialPrefixes) {\n if (dep.depName.startsWith(`${prefix}/`)) {\n dep.depName = dep.depName.replace(`${prefix}/`, '');\n if (specifyReplaceString) {\n dep.autoReplaceStringTemplate =\n '{{packageName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}';\n }\n }\n }\n }\n\n if (dep.depName === 'ubuntu' || dep.depName?.endsWith('/ubuntu')) {\n dep.versioning = ubuntuVersioning.id;\n }\n\n if (\n (dep.depName === 'debian' || dep.depName?.endsWith('/debian')) &&\n debianVersioning.api.isVersion(dep.currentValue)\n ) {\n dep.versioning = debianVersioning.id;\n }\n\n // Don't display quay.io ports\n if (dep.depName && quayRegex.test(dep.depName)) {\n const depName = dep.depName.replace(quayRegex, 'quay.io');\n if (depName !== dep.depName) {\n dep.depName = depName;\n dep.autoReplaceStringTemplate =\n '{{packageName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}';\n }\n }\n\n return dep;\n}\n\nexport function extractPackageFile(\n content: string,\n _packageFile: string,\n config: ExtractConfig,\n): PackageFileContent | null {\n const sanitizedContent = content.replace(regEx(/^\\uFEFF/), ''); // remove bom marker\n const deps: PackageDependency[] = [];\n const stageNames: string[] = [];\n const args: Record<string, string> = {};\n const argsLines: Record<string, number[]> = {};\n\n let escapeChar = '\\\\\\\\';\n let lookForEscapeChar = true;\n let lookForSyntaxDirective = true;\n\n const lineFeed = sanitizedContent.includes('\\r\\n') ? '\\r\\n' : '\\n';\n const lines = sanitizedContent.split(newlineRegex);\n for (let lineNumber = 0; lineNumber < lines.length; ) {\n const lineNumberInstrStart = lineNumber;\n let instruction = lines[lineNumber];\n\n if (lookForEscapeChar) {\n const directivesMatch = regEx(\n /^[ \\t]*#[ \\t]*(?<directive>syntax|escape)[ \\t]*=[ \\t]*(?<escapeChar>\\S)/i,\n ).exec(instruction);\n if (!directivesMatch) {\n lookForEscapeChar = false;\n } else if (directivesMatch.groups?.directive.toLowerCase() === 'escape') {\n if (directivesMatch.groups?.escapeChar === '`') {\n escapeChar = '`';\n }\n lookForEscapeChar = false;\n }\n }\n\n if (lookForSyntaxDirective) {\n const syntaxRegex = regEx(\n '^#[ \\\\t]*syntax[ \\\\t]*=[ \\\\t]*(?<image>\\\\S+)',\n 'im',\n );\n const syntaxMatch = instruction.match(syntaxRegex);\n if (syntaxMatch?.groups?.image) {\n const syntaxImage = syntaxMatch.groups.image;\n const lineNumberRanges: number[][] = [\n [lineNumberInstrStart, lineNumber],\n ];\n const dep = getDep(syntaxImage, true, config.registryAliases);\n dep.depType = 'syntax';\n processDepForAutoReplace(dep, lineNumberRanges, lines, lineFeed);\n logger.trace(\n {\n depName: dep.depName,\n currentValue: dep.currentValue,\n currentDigest: dep.currentDigest,\n },\n 'Dockerfile # syntax',\n );\n deps.push(dep);\n }\n lookForSyntaxDirective = false;\n }\n\n const lineContinuationRegex = regEx(`${escapeChar}[ \\\\t]*$|^[ \\\\t]*#`, 'm');\n let lineLookahead = instruction;\n while (\n !lookForEscapeChar &&\n !instruction.trimStart().startsWith('#') &&\n lineContinuationRegex.test(lineLookahead)\n ) {\n lineLookahead = lines[++lineNumber] || '';\n instruction += `\\n${lineLookahead}`;\n }\n\n const argRegex = regEx(\n `^[ \\\\t]*ARG(?:${escapeChar}[ \\\\t]*\\\\r?\\\\n| |\\\\t|#.*?\\\\r?\\\\n)+(?<name>\\\\w+)[ =](?<value>\\\\S*)`,\n 'im',\n );\n const argMatch = argRegex.exec(instruction);\n if (argMatch?.groups?.name) {\n argsLines[argMatch.groups.name] = [lineNumberInstrStart, lineNumber];\n let argMatchValue = argMatch.groups?.value;\n\n if (argMatchValue.startsWith('\"') && argMatchValue.endsWith('\"')) {\n argMatchValue = argMatchValue.slice(1, -1);\n }\n\n args[argMatch.groups.name] = argMatchValue || '';\n }\n\n const fromRegex = new RegExp(\n `^[ \\\\t]*FROM(?:${escapeChar}[ \\\\t]*\\\\r?\\\\n| |\\\\t|#.*?\\\\r?\\\\n|--platform=\\\\S+)+(?<image>\\\\S+)(?:(?:${escapeChar}[ \\\\t]*\\\\r?\\\\n| |\\\\t|#.*?\\\\r?\\\\n)+as[ \\\\t]+(?<name>\\\\S+))?`,\n 'im',\n ); // TODO #12875 complex for re2 has too many not supported groups\n const fromMatch = instruction.match(fromRegex);\n if (fromMatch?.groups?.image) {\n let fromImage = fromMatch.groups.image;\n const lineNumberRanges: number[][] = [[lineNumberInstrStart, lineNumber]];\n\n if (fromImage.includes(variableMarker)) {\n const variables = extractVariables(fromImage);\n for (const [fullVariable, argName] of Object.entries(variables)) {\n const resolvedArgValue = args[argName];\n if (resolvedArgValue || resolvedArgValue === '') {\n fromImage = fromImage.replaceAll(fullVariable, resolvedArgValue);\n lineNumberRanges.push(argsLines[argName]);\n }\n }\n }\n\n if (fromMatch.groups?.name) {\n logger.debug(\n `Found a multistage build stage name: ${fromMatch.groups.name}`,\n );\n stageNames.push(fromMatch.groups.name);\n }\n if (fromImage === 'scratch') {\n logger.debug('Skipping scratch');\n } else if (fromImage && stageNames.includes(fromImage)) {\n logger.debug(`Skipping alias FROM image:${fromImage}`);\n } else {\n const dep = getDep(fromImage, true, config.registryAliases);\n processDepForAutoReplace(dep, lineNumberRanges, lines, lineFeed);\n logger.trace(\n {\n depName: dep.depName,\n currentValue: dep.currentValue,\n currentDigest: dep.currentDigest,\n },\n 'Dockerfile FROM',\n );\n deps.push(dep);\n }\n }\n\n const copyFromRegex = new RegExp(\n `^[ \\\\t]*COPY(?:${escapeChar}[ \\\\t]*\\\\r?\\\\n| |\\\\t|#.*?\\\\r?\\\\n|--[a-z]+(?:=[a-zA-Z0-9_.:-]+?)?)+--from=(?<image>\\\\S+)`,\n 'im',\n ); // TODO #12875 complex for re2 has too many not supported groups\n const copyFromMatch = instruction.match(copyFromRegex);\n if (copyFromMatch?.groups?.image) {\n if (stageNames.includes(copyFromMatch.groups.image)) {\n logger.debug(\n { image: copyFromMatch.groups.image },\n 'Skipping alias COPY --from',\n );\n } else if (Number.isNaN(Number(copyFromMatch.groups.image))) {\n const dep = getDep(\n copyFromMatch.groups.image,\n true,\n config.registryAliases,\n );\n const lineNumberRanges: number[][] = [\n [lineNumberInstrStart, lineNumber],\n ];\n processDepForAutoReplace(dep, lineNumberRanges, lines, lineFeed);\n logger.debug(\n {\n depName: dep.depName,\n currentValue: dep.currentValue,\n currentDigest: dep.currentDigest,\n },\n 'Dockerfile COPY --from',\n );\n deps.push(dep);\n } else {\n logger.debug(\n { image: copyFromMatch.groups.image },\n 'Skipping index reference COPY --from',\n );\n }\n }\n\n const runMountFromRegex = regEx(\n `^[ \\\\t]*RUN(?:${escapeChar}[ \\\\t]*\\\\r?\\\\n| |\\\\t|#.*?\\\\r?\\\\n|--[a-z]+(?:=[a-zA-Z0-9_.:-]+?)?)+--mount=(?:\\\\S*=\\\\S*,)*from=(?<image>[^, ]+)`,\n 'im',\n );\n const runMountFromMatch = instruction.match(runMountFromRegex);\n if (runMountFromMatch?.groups?.image) {\n if (stageNames.includes(runMountFromMatch.groups.image)) {\n logger.debug(\n { image: runMountFromMatch.groups.image },\n 'Skipping alias RUN --mount=from',\n );\n } else {\n const dep = getDep(\n runMountFromMatch.groups.image,\n true,\n config.registryAliases,\n );\n const lineNumberRanges: number[][] = [\n [lineNumberInstrStart, lineNumber],\n ];\n processDepForAutoReplace(dep, lineNumberRanges, lines, lineFeed);\n logger.debug(\n {\n depName: dep.depName,\n currentValue: dep.currentValue,\n currentDigest: dep.currentDigest,\n },\n 'Dockerfile RUN --mount=from',\n );\n deps.push(dep);\n }\n }\n\n lineNumber += 1;\n }\n\n if (!deps.length) {\n return null;\n }\n for (const d of deps) {\n d.depType ??= 'stage';\n }\n deps.at(-1)!.depType = 'final';\n return { deps };\n}\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  //#region lib/modules/manager/fingerprint.generated.ts
2
2
  const hashMap = /* @__PURE__ */ new Map();
3
- hashMap.set("ansible", "1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04");
3
+ hashMap.set("ansible", "1d3568f42393d697f8f96d461b72077ee7a1044b654e87667a12f861b3083111");
4
4
  hashMap.set("ansible-galaxy", "8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f");
5
5
  hashMap.set("ant", "2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17");
6
6
  hashMap.set("argocd", "5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce");
7
- hashMap.set("asdf", "a599d9834f33a92e7c25753f933621f0b1b076ba8a068628a3f64e1dc545b739");
7
+ hashMap.set("asdf", "0407066010ebb3d7ad4c1afe6b9a3615a3c11d64dc3cf0674cb9dfc3ea272273");
8
8
  hashMap.set("azure-pipelines", "4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796");
9
9
  hashMap.set("batect", "fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21");
10
10
  hashMap.set("batect-wrapper", "d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939");
@@ -18,7 +18,7 @@ hashMap.set("buildkite", "a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1
18
18
  hashMap.set("buildpacks", "6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f");
19
19
  hashMap.set("bun", "2df1756b14b3d690e5ad1295bc1e78d8a8d7b967a552fd7b8e3274866a5acf3e");
20
20
  hashMap.set("bun-version", "df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4");
21
- hashMap.set("bundler", "cf7b07339eec46097c479fc5d9aa1c699d74b11954aea156eef7b893251b070d");
21
+ hashMap.set("bundler", "a2fbfa9f12971e70e740b362d0cd488f6489e7c65bc9617b52b2ac67e6040551");
22
22
  hashMap.set("cake", "65ad4f28c318675b9edb49dbd11d677f42c762b01b3f5a25dd3b2f345ecd387e");
23
23
  hashMap.set("cargo", "23fcc425ccd3a50559210e0ab8c84c1d47cf5c617cd5d58afdcf258ab862bafa");
24
24
  hashMap.set("cdnurl", "d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177");
@@ -28,7 +28,7 @@ hashMap.set("cocoapods", "08310c39254947632d42058f74f755e9d3f3019c2edeeaf52b5142
28
28
  hashMap.set("composer", "991a845be7ede562df4abfb005caf5e22cded077cec46711f8c008e468fbd633");
29
29
  hashMap.set("conan", "b846e8812d65d4201dc0bf7c1d5c344e3a1edaaff6441010875171028be2f0fb");
30
30
  hashMap.set("copier", "3ff250122cf49d52f23fcd3686274b0e86a99d0cb8bfa7e3e2ee3dd3b3babd56");
31
- hashMap.set("cpanfile", "6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01");
31
+ hashMap.set("cpanfile", "07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3");
32
32
  hashMap.set("crossplane", "5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40");
33
33
  hashMap.set("crow", "eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0");
34
34
  hashMap.set("deno", "1c418ca043ad0cbba47282c9cd602ed0945b4adcfcdb2d968fb1bcafe727190e");
@@ -41,16 +41,16 @@ hashMap.set("droneci", "237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99
41
41
  hashMap.set("fleet", "d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e");
42
42
  hashMap.set("flux", "22de4afb277e579dcbc7ec765eca2ddc5e4b1bb39d49e762e8af026fa062c53f");
43
43
  hashMap.set("fvm", "9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90");
44
- hashMap.set("git-submodules", "475d08a1a75e5732dd6003f63bd98c91ce09e42229cdcd9d2d060c60ce474e49");
44
+ hashMap.set("git-submodules", "4b633aedb8a792727f5e5d0b123a6b5a1b01429ea3153c567e2258523816205c");
45
45
  hashMap.set("github-actions", "100d3ecacf720978aef32ec929d879b6392485ecaab0cb395d497f24a0ab3850");
46
46
  hashMap.set("gitlabci", "0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6");
47
- hashMap.set("gitlabci-include", "354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab");
47
+ hashMap.set("gitlabci-include", "ef696c478c2ac1723b3aca070ba9779be0e702fff0844054251ba0029523d0eb");
48
48
  hashMap.set("glasskube", "253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70");
49
49
  hashMap.set("gleam", "e7ee3392d1f900fc1299308c8e930db9288790c6d0b6c35f1a62e55683090d34");
50
50
  hashMap.set("gomod", "9ab033fb37fbf3b212232019ba2d36e247acc9831f7c17818a40cb155606abfe");
51
51
  hashMap.set("gradle", "1108234b4fcfebf95c453111f652ab75f5c6cc6c4472efb60b7bc29cbe683612");
52
52
  hashMap.set("gradle-wrapper", "f85031e7feb4e811aa5f29c589a30f8076a078e5bbf366fb65fb28b5a47d2c44");
53
- hashMap.set("haskell-cabal", "89bfcc4c52dd2556ce50bb00e86a9e6ff5ec842e6bbf91b3608049205da109a5");
53
+ hashMap.set("haskell-cabal", "f232d0e883235f74ed71fd9de4a7468e5fcbda9a1af5beb56c24657f7bf2e891");
54
54
  hashMap.set("helm-requirements", "4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b");
55
55
  hashMap.set("helm-values", "b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af");
56
56
  hashMap.set("helmfile", "5bbc18bf059640191e2237408ca3b442556834e5c1c05d3317e82e7e097ae1f2");
@@ -74,15 +74,15 @@ hashMap.set("mise", "633e7e325055c9a39413dbce346c32cda6dec83ed9f20d6cdfc7d1255b9
74
74
  hashMap.set("mix", "ead2078c33550ec8695298c053f549866e1701fa096440d4228e3e51f8f1e49c");
75
75
  hashMap.set("nix", "95f0827f7ec9a3bfd5119534f129aad6cf26b28e99d55aec0945f08bbfff9fb1");
76
76
  hashMap.set("nodenv", "ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8");
77
- hashMap.set("npm", "e678d3f9b386632766452c93fd1b04eb6849fdb4a6dcc5c9e0fff10ce4d293fa");
77
+ hashMap.set("npm", "8c173b17fcce19d1be44d0d548809de5fb3d7e45adf3ce5fd6d7ebe699e94d6c");
78
78
  hashMap.set("nuget", "54c1e149b47e4f588e99857e3e62b420f50649a868a28944a0c82a7b7fb530e7");
79
79
  hashMap.set("nvm", "3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322");
80
80
  hashMap.set("ocb", "032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca");
81
81
  hashMap.set("osgi", "32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10");
82
82
  hashMap.set("pep621", "fffd093eaf6de3cab7b2f6b57e57715aa240fcd958954f31fbc47f18e1730a4d");
83
83
  hashMap.set("pep723", "b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1");
84
- hashMap.set("pip-compile", "5bf2798666b36b613ce61ca8101b6d17100e062a6dd5866a4e91c6a266f19333");
85
- hashMap.set("pip_requirements", "5ef648e398281294c79ec5dc56a868af904efddc536c9ce8d693a8425afd9677");
84
+ hashMap.set("pip-compile", "fd26981e4e865b8fece492ff78faf34701af62bb8f39397445780eb81b66b7db");
85
+ hashMap.set("pip_requirements", "edaf5ec21e63fd252e6737b294f215d59068b0bba1dea92b9d4510dbb872c837");
86
86
  hashMap.set("pip_setup", "0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61");
87
87
  hashMap.set("pipenv", "1d0af710667f6dce377feae9aa238b21fe5e0e75e75758a70f5e9758c6cb6678");
88
88
  hashMap.set("pixi", "7d183aaae4370a0c62496bbff60ad12fd4dd46822630541f712f437dcea021e1");
@@ -115,7 +115,7 @@ hashMap.set("velaci", "fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac
115
115
  hashMap.set("vendir", "dfd7b905577b362093ce72e6ee597308f97c83678ddb15d6455a1627969b8b7d");
116
116
  hashMap.set("woodpecker", "6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045");
117
117
  hashMap.set("xcodegen", "dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683");
118
- hashMap.set("jsonata", "06d83ae6bf80f77b12638d5c785f30bfce4195a37a63026f60e4c16c960ae18b");
118
+ hashMap.set("jsonata", "46efac5bda6737cccacf2d89ce1d384ee410876c5557b4c02be2275b7c1d862d");
119
119
  hashMap.set("regex", "dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e");
120
120
  //#endregion
121
121
  export { hashMap };
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','a599d9834f33a92e7c25753f933621f0b1b076ba8a068628a3f64e1dc545b739');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','8d5314f630038df8a974a285ab5066a0b4d69bc4dcd0a4fa2e9e6c6747073229');\nhashMap.set('bazelisk','49e6bd1fc8f03facd06e517dc64596833b90ee0a079a45cff78f0eeb3c3566f8');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','2df1756b14b3d690e5ad1295bc1e78d8a8d7b967a552fd7b8e3274866a5acf3e');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','cf7b07339eec46097c479fc5d9aa1c699d74b11954aea156eef7b893251b070d');\nhashMap.set('cake','65ad4f28c318675b9edb49dbd11d677f42c762b01b3f5a25dd3b2f345ecd387e');\nhashMap.set('cargo','23fcc425ccd3a50559210e0ab8c84c1d47cf5c617cd5d58afdcf258ab862bafa');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','08310c39254947632d42058f74f755e9d3f3019c2edeeaf52b5142917085e2df');\nhashMap.set('composer','991a845be7ede562df4abfb005caf5e22cded077cec46711f8c008e468fbd633');\nhashMap.set('conan','b846e8812d65d4201dc0bf7c1d5c344e3a1edaaff6441010875171028be2f0fb');\nhashMap.set('copier','3ff250122cf49d52f23fcd3686274b0e86a99d0cb8bfa7e3e2ee3dd3b3babd56');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','1c418ca043ad0cbba47282c9cd602ed0945b4adcfcdb2d968fb1bcafe727190e');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','ac472ae4897dc1df85326dbd89a8c3488579ae2b180014ffcf085ce422e19dbd');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','22de4afb277e579dcbc7ec765eca2ddc5e4b1bb39d49e762e8af026fa062c53f');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','475d08a1a75e5732dd6003f63bd98c91ce09e42229cdcd9d2d060c60ce474e49');\nhashMap.set('github-actions','100d3ecacf720978aef32ec929d879b6392485ecaab0cb395d497f24a0ab3850');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','e7ee3392d1f900fc1299308c8e930db9288790c6d0b6c35f1a62e55683090d34');\nhashMap.set('gomod','9ab033fb37fbf3b212232019ba2d36e247acc9831f7c17818a40cb155606abfe');\nhashMap.set('gradle','1108234b4fcfebf95c453111f652ab75f5c6cc6c4472efb60b7bc29cbe683612');\nhashMap.set('gradle-wrapper','f85031e7feb4e811aa5f29c589a30f8076a078e5bbf366fb65fb28b5a47d2c44');\nhashMap.set('haskell-cabal','89bfcc4c52dd2556ce50bb00e86a9e6ff5ec842e6bbf91b3608049205da109a5');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','5bbc18bf059640191e2237408ca3b442556834e5c1c05d3317e82e7e097ae1f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','86799a6d3fba17b1f4c8017d308cba44a1efcf6d6290371263b8cf14be9e16ae');\nhashMap.set('hermit','f30ba5fe8ee46997c1f3d15235e6ff64c96d7ce5e439ee99f8008580348fe0da');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','f918a7f378dc207cadf291e7481006008c69623f690902ed921e1e33db270b78');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','c6ee547378d5c5619a0fe94be35f9838e0f006b4807a896e9caefefa20efacf7');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','2bf7b65d51718daf3eec4f30c0fc7f2f045f4f8f24862bebe17c2174abb606b9');\nhashMap.set('maven-wrapper','976ed8a59cf43b0c765b1a49ebc5669478e78278cf48f4ce3d0deb49647d10e3');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','633e7e325055c9a39413dbce346c32cda6dec83ed9f20d6cdfc7d1255b94bafb');\nhashMap.set('mix','ead2078c33550ec8695298c053f549866e1701fa096440d4228e3e51f8f1e49c');\nhashMap.set('nix','95f0827f7ec9a3bfd5119534f129aad6cf26b28e99d55aec0945f08bbfff9fb1');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','e678d3f9b386632766452c93fd1b04eb6849fdb4a6dcc5c9e0fff10ce4d293fa');\nhashMap.set('nuget','54c1e149b47e4f588e99857e3e62b420f50649a868a28944a0c82a7b7fb530e7');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','fffd093eaf6de3cab7b2f6b57e57715aa240fcd958954f31fbc47f18e1730a4d');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','5bf2798666b36b613ce61ca8101b6d17100e062a6dd5866a4e91c6a266f19333');\nhashMap.set('pip_requirements','5ef648e398281294c79ec5dc56a868af904efddc536c9ce8d693a8425afd9677');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','1d0af710667f6dce377feae9aa238b21fe5e0e75e75758a70f5e9758c6cb6678');\nhashMap.set('pixi','7d183aaae4370a0c62496bbff60ad12fd4dd46822630541f712f437dcea021e1');\nhashMap.set('poetry','0211739556f8193c70fa69cbf66c60e688042fd7dc7a2fe08f9f328b35ad1f82');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','aad0dd6524158fda5345d75662f337b275c6c46b29f051ba94201d42c22b0da8');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config','2a4e4fb671aed5d0c900b8d54c31bfef46ca36d0f4e16b00ff73377b9c09fb69');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','e957f1f1563af4e5fbd1c552ca15632b7808d9d2e51ec0da6022a1f84372caec');\nhashMap.set('sbt','74125bd9c76a5724092258cd1dee1ea99fc0d735b463a2b64fedc5d950efde2a');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','05b3158e88771ed4629e171592cf4f1bf0ff342f8aeae89be0b340c630cc6d8e');\nhashMap.set('swift','56cdc6fe4cd00519f953459f94323c71677f6bde007537eef891154fb8696db1');\nhashMap.set('tekton','fdc5b9b5edec2a90cda2f858f3ebc532aa8efb1187d1e0b7c89b07796e9cb6cd');\nhashMap.set('terraform','045931e1d5ae5607fb7fbcdfe6d2cd9cf45020432de7c78fbb3432579c8b3310');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','142c3f0549c4152297615b5bbf3a78ba8f7ce6a0cebcea63b81e9815dca40494');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','dfd7b905577b362093ce72e6ee597308f97c83678ddb15d6455a1627969b8b7d');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','06d83ae6bf80f77b12638d5c785f30bfce4195a37a63026f60e4c16c960ae18b');\nhashMap.set('regex','dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e');"],"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','1d3568f42393d697f8f96d461b72077ee7a1044b654e87667a12f861b3083111');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','0407066010ebb3d7ad4c1afe6b9a3615a3c11d64dc3cf0674cb9dfc3ea272273');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','8d5314f630038df8a974a285ab5066a0b4d69bc4dcd0a4fa2e9e6c6747073229');\nhashMap.set('bazelisk','49e6bd1fc8f03facd06e517dc64596833b90ee0a079a45cff78f0eeb3c3566f8');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','2df1756b14b3d690e5ad1295bc1e78d8a8d7b967a552fd7b8e3274866a5acf3e');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','a2fbfa9f12971e70e740b362d0cd488f6489e7c65bc9617b52b2ac67e6040551');\nhashMap.set('cake','65ad4f28c318675b9edb49dbd11d677f42c762b01b3f5a25dd3b2f345ecd387e');\nhashMap.set('cargo','23fcc425ccd3a50559210e0ab8c84c1d47cf5c617cd5d58afdcf258ab862bafa');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','08310c39254947632d42058f74f755e9d3f3019c2edeeaf52b5142917085e2df');\nhashMap.set('composer','991a845be7ede562df4abfb005caf5e22cded077cec46711f8c008e468fbd633');\nhashMap.set('conan','b846e8812d65d4201dc0bf7c1d5c344e3a1edaaff6441010875171028be2f0fb');\nhashMap.set('copier','3ff250122cf49d52f23fcd3686274b0e86a99d0cb8bfa7e3e2ee3dd3b3babd56');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','1c418ca043ad0cbba47282c9cd602ed0945b4adcfcdb2d968fb1bcafe727190e');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','ac472ae4897dc1df85326dbd89a8c3488579ae2b180014ffcf085ce422e19dbd');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','22de4afb277e579dcbc7ec765eca2ddc5e4b1bb39d49e762e8af026fa062c53f');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','4b633aedb8a792727f5e5d0b123a6b5a1b01429ea3153c567e2258523816205c');\nhashMap.set('github-actions','100d3ecacf720978aef32ec929d879b6392485ecaab0cb395d497f24a0ab3850');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','ef696c478c2ac1723b3aca070ba9779be0e702fff0844054251ba0029523d0eb');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','e7ee3392d1f900fc1299308c8e930db9288790c6d0b6c35f1a62e55683090d34');\nhashMap.set('gomod','9ab033fb37fbf3b212232019ba2d36e247acc9831f7c17818a40cb155606abfe');\nhashMap.set('gradle','1108234b4fcfebf95c453111f652ab75f5c6cc6c4472efb60b7bc29cbe683612');\nhashMap.set('gradle-wrapper','f85031e7feb4e811aa5f29c589a30f8076a078e5bbf366fb65fb28b5a47d2c44');\nhashMap.set('haskell-cabal','f232d0e883235f74ed71fd9de4a7468e5fcbda9a1af5beb56c24657f7bf2e891');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','5bbc18bf059640191e2237408ca3b442556834e5c1c05d3317e82e7e097ae1f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','86799a6d3fba17b1f4c8017d308cba44a1efcf6d6290371263b8cf14be9e16ae');\nhashMap.set('hermit','f30ba5fe8ee46997c1f3d15235e6ff64c96d7ce5e439ee99f8008580348fe0da');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','f918a7f378dc207cadf291e7481006008c69623f690902ed921e1e33db270b78');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','c6ee547378d5c5619a0fe94be35f9838e0f006b4807a896e9caefefa20efacf7');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','2bf7b65d51718daf3eec4f30c0fc7f2f045f4f8f24862bebe17c2174abb606b9');\nhashMap.set('maven-wrapper','976ed8a59cf43b0c765b1a49ebc5669478e78278cf48f4ce3d0deb49647d10e3');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','633e7e325055c9a39413dbce346c32cda6dec83ed9f20d6cdfc7d1255b94bafb');\nhashMap.set('mix','ead2078c33550ec8695298c053f549866e1701fa096440d4228e3e51f8f1e49c');\nhashMap.set('nix','95f0827f7ec9a3bfd5119534f129aad6cf26b28e99d55aec0945f08bbfff9fb1');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','8c173b17fcce19d1be44d0d548809de5fb3d7e45adf3ce5fd6d7ebe699e94d6c');\nhashMap.set('nuget','54c1e149b47e4f588e99857e3e62b420f50649a868a28944a0c82a7b7fb530e7');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','fffd093eaf6de3cab7b2f6b57e57715aa240fcd958954f31fbc47f18e1730a4d');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','fd26981e4e865b8fece492ff78faf34701af62bb8f39397445780eb81b66b7db');\nhashMap.set('pip_requirements','edaf5ec21e63fd252e6737b294f215d59068b0bba1dea92b9d4510dbb872c837');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','1d0af710667f6dce377feae9aa238b21fe5e0e75e75758a70f5e9758c6cb6678');\nhashMap.set('pixi','7d183aaae4370a0c62496bbff60ad12fd4dd46822630541f712f437dcea021e1');\nhashMap.set('poetry','0211739556f8193c70fa69cbf66c60e688042fd7dc7a2fe08f9f328b35ad1f82');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','aad0dd6524158fda5345d75662f337b275c6c46b29f051ba94201d42c22b0da8');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config','2a4e4fb671aed5d0c900b8d54c31bfef46ca36d0f4e16b00ff73377b9c09fb69');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','e957f1f1563af4e5fbd1c552ca15632b7808d9d2e51ec0da6022a1f84372caec');\nhashMap.set('sbt','74125bd9c76a5724092258cd1dee1ea99fc0d735b463a2b64fedc5d950efde2a');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','05b3158e88771ed4629e171592cf4f1bf0ff342f8aeae89be0b340c630cc6d8e');\nhashMap.set('swift','56cdc6fe4cd00519f953459f94323c71677f6bde007537eef891154fb8696db1');\nhashMap.set('tekton','fdc5b9b5edec2a90cda2f858f3ebc532aa8efb1187d1e0b7c89b07796e9cb6cd');\nhashMap.set('terraform','045931e1d5ae5607fb7fbcdfe6d2cd9cf45020432de7c78fbb3432579c8b3310');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','142c3f0549c4152297615b5bbf3a78ba8f7ce6a0cebcea63b81e9815dca40494');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','dfd7b905577b362093ce72e6ee597308f97c83678ddb15d6455a1627969b8b7d');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','46efac5bda6737cccacf2d89ce1d384ee410876c5557b4c02be2275b7c1d862d');\nhashMap.set('regex','dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e');"],"mappings":"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"}
@@ -79,7 +79,8 @@ function resolveHelmRepository(dep, matchingRepositories, registryAliases, sourc
79
79
  dep.datasource = DockerDatasource.id;
80
80
  dep.packageName = getDep(`${removeOCIPrefix(repo.spec.url)}/${dep.depName}`, false, registryAliases).packageName;
81
81
  return null;
82
- } else return repo.spec.url;
82
+ }
83
+ return repo.spec.url;
83
84
  }).filter(isString);
84
85
  if (!dep.registryUrls?.length) delete dep.registryUrls;
85
86
  return;