renovate 39.176.3 → 40.0.0-next.1

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 (244) hide show
  1. package/dist/config/migrations/custom/package-rules-migration.js.map +1 -1
  2. package/dist/config/migrations/migrations-service.d.ts +2 -2
  3. package/dist/config/migrations/migrations-service.js.map +1 -1
  4. package/dist/config/migrations/types.d.ts +1 -3
  5. package/dist/config/migrations/types.js.map +1 -1
  6. package/dist/config/options/index.js +1 -1
  7. package/dist/config/options/index.js.map +1 -1
  8. package/dist/config/presets/internal/group.js +0 -1
  9. package/dist/config/presets/internal/group.js.map +1 -1
  10. package/dist/config/presets/types.d.ts +4 -4
  11. package/dist/config/presets/types.js.map +1 -1
  12. package/dist/config-validator.js.map +1 -1
  13. package/dist/logger/utils.js +4 -2
  14. package/dist/logger/utils.js.map +1 -1
  15. package/dist/modules/datasource/artifactory/index.js +1 -1
  16. package/dist/modules/datasource/artifactory/index.js.map +1 -1
  17. package/dist/modules/datasource/conan/index.js +1 -1
  18. package/dist/modules/datasource/conan/index.js.map +1 -1
  19. package/dist/modules/datasource/crate/index.js.map +1 -1
  20. package/dist/modules/datasource/datasource.d.ts +1 -1
  21. package/dist/modules/datasource/datasource.js +3 -1
  22. package/dist/modules/datasource/datasource.js.map +1 -1
  23. package/dist/modules/datasource/deb/common.d.ts +3 -3
  24. package/dist/modules/datasource/deb/common.js.map +1 -1
  25. package/dist/modules/datasource/docker/ecr.js +1 -1
  26. package/dist/modules/datasource/docker/ecr.js.map +1 -1
  27. package/dist/modules/datasource/docker/index.js.map +1 -1
  28. package/dist/modules/datasource/hexpm-bob/index.js +1 -1
  29. package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
  30. package/dist/modules/datasource/nuget/v2.js +1 -1
  31. package/dist/modules/datasource/nuget/v2.js.map +1 -1
  32. package/dist/modules/datasource/pod/index.js +1 -2
  33. package/dist/modules/datasource/pod/index.js.map +1 -1
  34. package/dist/modules/datasource/rubygems/metadata-cache.js.map +1 -1
  35. package/dist/modules/datasource/sbt-plugin/index.js +1 -2
  36. package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
  37. package/dist/modules/manager/ansible-galaxy/collections-metadata.js +1 -2
  38. package/dist/modules/manager/ansible-galaxy/collections-metadata.js.map +1 -1
  39. package/dist/modules/manager/asdf/upgradeable-tooling.js +4 -4
  40. package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
  41. package/dist/modules/manager/batect/extract.js.map +1 -1
  42. package/dist/modules/manager/bazel/artifacts.js +2 -2
  43. package/dist/modules/manager/bazel/artifacts.js.map +1 -1
  44. package/dist/modules/manager/bazel/common.js +1 -2
  45. package/dist/modules/manager/bazel/common.js.map +1 -1
  46. package/dist/modules/manager/bazel/parser.js +1 -1
  47. package/dist/modules/manager/bazel/parser.js.map +1 -1
  48. package/dist/modules/manager/bazel-module/parser/context.d.ts +4 -3
  49. package/dist/modules/manager/bazel-module/parser/context.js +9 -6
  50. package/dist/modules/manager/bazel-module/parser/context.js.map +1 -1
  51. package/dist/modules/manager/bazel-module/parser/extension-tags.js +10 -2
  52. package/dist/modules/manager/bazel-module/parser/extension-tags.js.map +1 -1
  53. package/dist/modules/manager/bazel-module/parser/fragments.d.ts +20 -2
  54. package/dist/modules/manager/bazel-module/parser/fragments.js +8 -2
  55. package/dist/modules/manager/bazel-module/parser/fragments.js.map +1 -1
  56. package/dist/modules/manager/bazel-module/parser/index.js +1 -1
  57. package/dist/modules/manager/bazel-module/parser/index.js.map +1 -1
  58. package/dist/modules/manager/bazel-module/parser/maven.d.ts +16 -0
  59. package/dist/modules/manager/bazel-module/parser/oci.d.ts +8 -0
  60. package/dist/modules/manager/bazel-module/parser/oci.js +4 -1
  61. package/dist/modules/manager/bazel-module/parser/oci.js.map +1 -1
  62. package/dist/modules/manager/bun/artifacts.js +1 -1
  63. package/dist/modules/manager/bun/artifacts.js.map +1 -1
  64. package/dist/modules/manager/bundler/extract.js.map +1 -1
  65. package/dist/modules/manager/cargo/artifacts.js +1 -1
  66. package/dist/modules/manager/cargo/artifacts.js.map +1 -1
  67. package/dist/modules/manager/cargo/extract.js.map +1 -1
  68. package/dist/modules/manager/cargo/types.d.ts +1 -3
  69. package/dist/modules/manager/cargo/types.js.map +1 -1
  70. package/dist/modules/manager/composer/utils.js +4 -4
  71. package/dist/modules/manager/composer/utils.js.map +1 -1
  72. package/dist/modules/manager/deps-edn/extract.js +3 -3
  73. package/dist/modules/manager/deps-edn/extract.js.map +1 -1
  74. package/dist/modules/manager/deps-edn/types.js.map +1 -1
  75. package/dist/modules/manager/dockerfile/extract.js +2 -3
  76. package/dist/modules/manager/dockerfile/extract.js.map +1 -1
  77. package/dist/modules/manager/fingerprint.generated.js +17 -17
  78. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  79. package/dist/modules/manager/flux/types.d.ts +3 -3
  80. package/dist/modules/manager/flux/types.js.map +1 -1
  81. package/dist/modules/manager/git-submodules/types.d.ts +2 -2
  82. package/dist/modules/manager/git-submodules/types.js.map +1 -1
  83. package/dist/modules/manager/github-actions/extract.js +2 -2
  84. package/dist/modules/manager/github-actions/extract.js.map +1 -1
  85. package/dist/modules/manager/glasskube/types.d.ts +2 -2
  86. package/dist/modules/manager/glasskube/types.js.map +1 -1
  87. package/dist/modules/manager/gleam/artifacts.js +1 -1
  88. package/dist/modules/manager/gleam/artifacts.js.map +1 -1
  89. package/dist/modules/manager/gradle/utils.js +6 -2
  90. package/dist/modules/manager/gradle/utils.js.map +1 -1
  91. package/dist/modules/manager/haskell-cabal/extract.js +1 -1
  92. package/dist/modules/manager/haskell-cabal/extract.js.map +1 -1
  93. package/dist/modules/manager/helmfile/artifacts.js +1 -1
  94. package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
  95. package/dist/modules/manager/helmfile/extract.js +2 -2
  96. package/dist/modules/manager/helmfile/extract.js.map +1 -1
  97. package/dist/modules/manager/helmv3/artifacts.js +1 -1
  98. package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
  99. package/dist/modules/manager/helmv3/extract.js.map +1 -1
  100. package/dist/modules/manager/helmv3/utils.js +1 -1
  101. package/dist/modules/manager/helmv3/utils.js.map +1 -1
  102. package/dist/modules/manager/homebrew/util.js +1 -2
  103. package/dist/modules/manager/homebrew/util.js.map +1 -1
  104. package/dist/modules/manager/jsonnet-bundler/extract.js +1 -1
  105. package/dist/modules/manager/jsonnet-bundler/extract.js.map +1 -1
  106. package/dist/modules/manager/leiningen/extract.js +1 -2
  107. package/dist/modules/manager/leiningen/extract.js.map +1 -1
  108. package/dist/modules/manager/maven/extract.js.map +1 -1
  109. package/dist/modules/manager/maven/update.js.map +1 -1
  110. package/dist/modules/manager/mise/upgradeable-tooling.js +7 -7
  111. package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
  112. package/dist/modules/manager/nix/extract.js +1 -1
  113. package/dist/modules/manager/nix/extract.js.map +1 -1
  114. package/dist/modules/manager/npm/extract/pnpm.js +1 -1
  115. package/dist/modules/manager/npm/extract/pnpm.js.map +1 -1
  116. package/dist/modules/manager/npm/post-update/index.js +1 -1
  117. package/dist/modules/manager/npm/post-update/index.js.map +1 -1
  118. package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
  119. package/dist/modules/manager/npm/update/dependency/index.js +1 -1
  120. package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
  121. package/dist/modules/manager/nuget/config-formatter.js +1 -2
  122. package/dist/modules/manager/nuget/config-formatter.js.map +1 -1
  123. package/dist/modules/manager/nuget/package-tree.js +1 -1
  124. package/dist/modules/manager/nuget/package-tree.js.map +1 -1
  125. package/dist/modules/manager/nuget/util.js +2 -2
  126. package/dist/modules/manager/nuget/util.js.map +1 -1
  127. package/dist/modules/manager/osgi/extract.js +3 -3
  128. package/dist/modules/manager/osgi/extract.js.map +1 -1
  129. package/dist/modules/manager/pep621/processors/pdm.js +1 -1
  130. package/dist/modules/manager/pep621/processors/pdm.js.map +1 -1
  131. package/dist/modules/manager/pep621/processors/uv.js +3 -2
  132. package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
  133. package/dist/modules/manager/pip-compile/artifacts.js +8 -2
  134. package/dist/modules/manager/pip-compile/artifacts.js.map +1 -1
  135. package/dist/modules/manager/pip-compile/common.d.ts +5 -3
  136. package/dist/modules/manager/pip-compile/common.js +34 -13
  137. package/dist/modules/manager/pip-compile/common.js.map +1 -1
  138. package/dist/modules/manager/pip-compile/extract.js.map +1 -1
  139. package/dist/modules/manager/pip-compile/types.d.ts +1 -0
  140. package/dist/modules/manager/pip-compile/types.js.map +1 -1
  141. package/dist/modules/manager/poetry/artifacts.js +2 -2
  142. package/dist/modules/manager/poetry/artifacts.js.map +1 -1
  143. package/dist/modules/manager/pre-commit/types.d.ts +2 -2
  144. package/dist/modules/manager/pre-commit/types.js.map +1 -1
  145. package/dist/modules/manager/pub/artifacts.js +1 -1
  146. package/dist/modules/manager/pub/artifacts.js.map +1 -1
  147. package/dist/modules/manager/swift/extract.js +1 -2
  148. package/dist/modules/manager/swift/extract.js.map +1 -1
  149. package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js +2 -2
  150. package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js.map +1 -1
  151. package/dist/modules/manager/terraform/hcl/types.d.ts +1 -3
  152. package/dist/modules/manager/terraform/hcl/types.js.map +1 -1
  153. package/dist/modules/manager/terraform/lockfile/index.js +1 -1
  154. package/dist/modules/manager/terraform/lockfile/index.js.map +1 -1
  155. package/dist/modules/manager/terragrunt/artifacts.js +1 -1
  156. package/dist/modules/manager/terragrunt/artifacts.js.map +1 -1
  157. package/dist/modules/manager/types.d.ts +1 -0
  158. package/dist/modules/manager/types.js.map +1 -1
  159. package/dist/modules/manager/woodpecker/types.d.ts +2 -2
  160. package/dist/modules/manager/woodpecker/types.js.map +1 -1
  161. package/dist/modules/platform/azure/azure-helper.js.map +1 -1
  162. package/dist/modules/platform/azure/index.js +1 -1
  163. package/dist/modules/platform/azure/index.js.map +1 -1
  164. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  165. package/dist/modules/platform/bitbucket/utils.js.map +1 -1
  166. package/dist/modules/platform/bitbucket-server/index.js +2 -2
  167. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  168. package/dist/modules/platform/gerrit/scm.js +1 -1
  169. package/dist/modules/platform/gerrit/scm.js.map +1 -1
  170. package/dist/modules/platform/gitea/index.js +6 -5
  171. package/dist/modules/platform/gitea/index.js.map +1 -1
  172. package/dist/modules/platform/gitea/pr-cache.d.ts +3 -2
  173. package/dist/modules/platform/gitea/pr-cache.js +21 -12
  174. package/dist/modules/platform/gitea/pr-cache.js.map +1 -1
  175. package/dist/modules/platform/github/index.js.map +1 -1
  176. package/dist/modules/platform/gitlab/index.js +20 -16
  177. package/dist/modules/platform/gitlab/index.js.map +1 -1
  178. package/dist/modules/platform/types.d.ts +2 -2
  179. package/dist/modules/platform/types.js.map +1 -1
  180. package/dist/modules/versioning/bazel-module/bzlmod-version.d.ts +1 -1
  181. package/dist/modules/versioning/bazel-module/bzlmod-version.js.map +1 -1
  182. package/dist/modules/versioning/generic.d.ts +2 -6
  183. package/dist/modules/versioning/generic.js.map +1 -1
  184. package/dist/modules/versioning/gradle/compare.d.ts +2 -2
  185. package/dist/modules/versioning/gradle/compare.js.map +1 -1
  186. package/dist/modules/versioning/gradle/index.js +1 -1
  187. package/dist/modules/versioning/gradle/index.js.map +1 -1
  188. package/dist/modules/versioning/pvp/range.js +2 -2
  189. package/dist/modules/versioning/pvp/range.js.map +1 -1
  190. package/dist/modules/versioning/rpm/index.js +5 -5
  191. package/dist/modules/versioning/rpm/index.js.map +1 -1
  192. package/dist/modules/versioning/semver-coerced/index.js +4 -4
  193. package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
  194. package/dist/modules/versioning/types.d.ts +1 -3
  195. package/dist/modules/versioning/types.js.map +1 -1
  196. package/dist/types/git.d.ts +2 -2
  197. package/dist/types/git.js.map +1 -1
  198. package/dist/types/platform/github/index.d.ts +4 -4
  199. package/dist/types/platform/github/index.js.map +1 -1
  200. package/dist/types/platform/gitlab/index.d.ts +2 -2
  201. package/dist/types/platform/gitlab/index.js.map +1 -1
  202. package/dist/util/assign-keys.d.ts +1 -3
  203. package/dist/util/assign-keys.js.map +1 -1
  204. package/dist/util/cache/repository/http-cache.js +1 -1
  205. package/dist/util/cache/repository/http-cache.js.map +1 -1
  206. package/dist/util/exec/types.d.ts +2 -2
  207. package/dist/util/exec/types.js.map +1 -1
  208. package/dist/util/git/auth.js +1 -1
  209. package/dist/util/git/auth.js.map +1 -1
  210. package/dist/util/git/index.d.ts +10 -10
  211. package/dist/util/git/index.js +22 -26
  212. package/dist/util/git/index.js.map +1 -1
  213. package/dist/util/http/bitbucket.js.map +1 -1
  214. package/dist/util/http/cache/abstract-http-cache-provider.js +1 -1
  215. package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
  216. package/dist/util/http/index.js.map +1 -1
  217. package/dist/util/http/types.d.ts +3 -5
  218. package/dist/util/http/types.js.map +1 -1
  219. package/dist/util/pretty-time.js.map +1 -1
  220. package/dist/util/schema-utils.js.map +1 -1
  221. package/dist/util/stats.js +1 -0
  222. package/dist/util/stats.js.map +1 -1
  223. package/dist/workers/repository/dependency-dashboard.js +2 -2
  224. package/dist/workers/repository/dependency-dashboard.js.map +1 -1
  225. package/dist/workers/repository/init/config.d.ts +1 -2
  226. package/dist/workers/repository/init/config.js +0 -13
  227. package/dist/workers/repository/init/config.js.map +1 -1
  228. package/dist/workers/repository/init/merge.d.ts +2 -1
  229. package/dist/workers/repository/init/merge.js +13 -3
  230. package/dist/workers/repository/init/merge.js.map +1 -1
  231. package/dist/workers/repository/model/commit-message.js.map +1 -1
  232. package/dist/workers/repository/process/vulnerabilities.js +3 -1
  233. package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
  234. package/dist/workers/repository/process/write.js +1 -1
  235. package/dist/workers/repository/process/write.js.map +1 -1
  236. package/dist/workers/repository/reconfigure/validate.js +3 -1
  237. package/dist/workers/repository/reconfigure/validate.js.map +1 -1
  238. package/dist/workers/repository/update/branch/schedule.js +1 -1
  239. package/dist/workers/repository/update/branch/schedule.js.map +1 -1
  240. package/dist/workers/repository/update/pr/body/updates-table.js.map +1 -1
  241. package/dist/workers/repository/updates/generate.js +9 -0
  242. package/dist/workers/repository/updates/generate.js.map +1 -1
  243. package/package.json +32 -25
  244. package/renovate-schema.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/pod/index.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from 'node:crypto';\nimport { HOST_DISABLED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport type { HttpError } from '../../../util/http';\nimport { GithubHttp } from '../../../util/http/github';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { Datasource } from '../datasource';\nimport { massageGithubUrl } from '../metadata';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\n\ntype URLFormatOptions =\n | 'withShardWithSpec'\n | 'withShardWithoutSpec'\n | 'withSpecsWithoutShard'\n | 'withoutSpecsWithoutShard';\n\nfunction shardParts(packageName: string): string[] {\n return crypto\n .createHash('md5')\n .update(packageName)\n .digest('hex')\n .slice(0, 3)\n .split('');\n}\n\nconst githubRegex = regEx(\n /(?<hostURL>^https:\\/\\/[a-zA-Z0-9-.]+)\\/(?<account>[^/]+)\\/(?<repo>[^/]+?)(?:\\.git|\\/.*)?$/,\n);\n\nfunction releasesGithubUrl(\n packageName: string,\n opts: {\n hostURL: string;\n account: string;\n repo: string;\n useShard: boolean;\n useSpecs: boolean;\n },\n): string {\n const { hostURL, account, repo, useShard, useSpecs } = opts;\n const prefix =\n hostURL && hostURL !== 'https://github.com'\n ? `${hostURL}/api/v3/repos`\n : 'https://api.github.com/repos';\n const shard = shardParts(packageName).join('/');\n // `Specs` in the pods repo URL is a new requirement for legacy support also allow pod repo URL without `Specs`\n const packageNamePath = useSpecs ? `Specs/${packageName}` : packageName;\n const shardPath = useSpecs\n ? `Specs/${shard}/${packageName}`\n : `${shard}/${packageName}`;\n const suffix = useShard ? shardPath : packageNamePath;\n return `${prefix}/${account}/${repo}/contents/${suffix}`;\n}\n\nfunction handleError(packageName: string, err: HttpError): void {\n const errorData = { packageName, err };\n\n const statusCode = err.response?.statusCode ?? 0;\n if (statusCode === 429 || (statusCode >= 500 && statusCode < 600)) {\n logger.warn({ packageName, err }, `CocoaPods registry failure`);\n throw new ExternalHostError(err);\n }\n\n if (statusCode === 401) {\n logger.debug(errorData, 'Authorization error');\n } else if (statusCode === 404) {\n logger.debug(errorData, 'Package lookup error');\n } else if (err.message === HOST_DISABLED) {\n logger.trace(errorData, 'Host disabled');\n } else {\n logger.warn(errorData, 'CocoaPods lookup failure: Unknown error');\n }\n}\n\nfunction isDefaultRepo(url: string): boolean {\n const match = githubRegex.exec(url);\n if (match?.groups) {\n const { account, repo } = match.groups;\n return (\n account.toLowerCase() === 'cocoapods' && repo.toLowerCase() === 'specs'\n ); // https://github.com/CocoaPods/Specs.git\n }\n return false;\n}\n\nfunction releasesCDNUrl(packageName: string, registryUrl: string): string {\n const shard = shardParts(packageName).join('_');\n return `${registryUrl}/all_pods_versions_${shard}.txt`;\n}\n\nexport class PodDatasource extends Datasource {\n static readonly id = 'pod';\n\n override readonly defaultRegistryUrls = ['https://cdn.cocoapods.org'];\n\n override readonly registryStrategy = 'hunt';\n\n githubHttp: GithubHttp;\n\n constructor() {\n super(PodDatasource.id);\n this.githubHttp = new GithubHttp(PodDatasource.id);\n }\n\n private async requestCDN(\n url: string,\n packageName: string,\n ): Promise<string | null> {\n try {\n const resp = await this.http.get(url);\n if (resp?.body) {\n return resp.body;\n }\n } catch (err) {\n handleError(packageName, err);\n }\n\n return null;\n }\n\n private async requestGithub<T = unknown>(\n url: string,\n packageName: string,\n ): Promise<T | null> {\n try {\n const resp = await this.githubHttp.getJsonUnchecked<T>(url);\n if (resp?.body) {\n return resp.body;\n }\n } catch (err) {\n handleError(packageName, err);\n }\n\n return null;\n }\n\n private async getReleasesFromGithub(\n packageName: string,\n opts: { hostURL: string; account: string; repo: string },\n useShard = true,\n useSpecs = true,\n urlFormatOptions: URLFormatOptions = 'withShardWithSpec',\n ): Promise<ReleaseResult | null> {\n const url = releasesGithubUrl(packageName, { ...opts, useShard, useSpecs });\n const resp = await this.requestGithub<{ name: string }[]>(url, packageName);\n if (resp) {\n const releases = resp.map(({ name }) => ({ version: name }));\n return { releases };\n }\n\n // support different url formats\n switch (urlFormatOptions) {\n case 'withShardWithSpec':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n true,\n false,\n 'withShardWithoutSpec',\n );\n case 'withShardWithoutSpec':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n false,\n true,\n 'withSpecsWithoutShard',\n );\n case 'withSpecsWithoutShard':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n false,\n false,\n 'withoutSpecsWithoutShard',\n );\n case 'withoutSpecsWithoutShard':\n default:\n return null;\n }\n }\n\n private async getReleasesFromCDN(\n packageName: string,\n registryUrl: string,\n ): Promise<ReleaseResult | null> {\n const url = releasesCDNUrl(packageName, registryUrl);\n const resp = await this.requestCDN(url, packageName);\n if (resp) {\n const lines = resp.split(newlineRegex);\n for (let idx = 0; idx < lines.length; idx += 1) {\n const line = lines[idx];\n const [name, ...versions] = line.split('/');\n if (name === packageName.replace(regEx(/\\/.*$/), '')) {\n const releases = versions.map((version) => ({ version }));\n return { releases };\n }\n }\n }\n return null;\n }\n\n @cache({\n ttlMinutes: 30,\n namespace: `datasource-${PodDatasource.id}`,\n key: ({ packageName, registryUrl }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `${registryUrl}:${packageName}`,\n })\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n\n const podName = packageName.replace(regEx(/\\/.*$/), '');\n let baseUrl = registryUrl.replace(regEx(/\\/+$/), '');\n // In order to not abuse github API limits, query CDN instead\n if (isDefaultRepo(baseUrl)) {\n [baseUrl] = this.defaultRegistryUrls;\n }\n\n let result: ReleaseResult | null = null;\n const match = githubRegex.exec(baseUrl);\n if (match?.groups) {\n baseUrl = massageGithubUrl(baseUrl);\n const { hostURL, account, repo } = match.groups;\n const opts = { hostURL, account, repo };\n result = await this.getReleasesFromGithub(podName, opts);\n } else {\n result = await this.getReleasesFromCDN(podName, baseUrl);\n }\n\n return result;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/pod/index.ts"],"names":[],"mappings":";;;;AAAA,sEAAiC;AACjC,sEAAkE;AAClE,4CAAyC;AACzC,mFAA8E;AAC9E,qEAA8D;AAE9D,sDAAuD;AACvD,+CAA0D;AAC1D,8CAA2C;AAC3C,0CAA+C;AAS/C,SAAS,UAAU,CAAC,WAAmB;IACrC,OAAO,qBAAM;SACV,UAAU,CAAC,KAAK,CAAC;SACjB,MAAM,CAAC,WAAW,CAAC;SACnB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,KAAK,CAAC,EAAE,CAAC,CAAC;AACf,CAAC;AAED,MAAM,WAAW,GAAG,IAAA,aAAK,EACvB,2FAA2F,CAC5F,CAAC;AAEF,SAAS,iBAAiB,CACxB,WAAmB,EACnB,IAMC;IAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC5D,MAAM,MAAM,GACV,OAAO,IAAI,OAAO,KAAK,oBAAoB;QACzC,CAAC,CAAC,GAAG,OAAO,eAAe;QAC3B,CAAC,CAAC,8BAA8B,CAAC;IACrC,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,+GAA+G;IAC/G,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IACxE,MAAM,SAAS,GAAG,QAAQ;QACxB,CAAC,CAAC,SAAS,KAAK,IAAI,WAAW,EAAE;QACjC,CAAC,CAAC,GAAG,KAAK,IAAI,WAAW,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;IACtD,OAAO,GAAG,MAAM,IAAI,OAAO,IAAI,IAAI,aAAa,MAAM,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB,EAAE,GAAc;IACtD,MAAM,SAAS,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;IAEvC,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC;IACjD,IAAI,UAAU,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC;QAClE,eAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,4BAA4B,CAAC,CAAC;QAChE,MAAM,IAAI,uCAAiB,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,eAAM,CAAC,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC9B,eAAM,CAAC,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,GAAG,CAAC,OAAO,KAAK,8BAAa,EAAE,CAAC;QACzC,eAAM,CAAC,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,eAAM,CAAC,IAAI,CAAC,SAAS,EAAE,yCAAyC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACvC,OAAO,CACL,OAAO,CAAC,WAAW,EAAE,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CACxE,CAAC,CAAC,yCAAyC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,WAAmB,EAAE,WAAmB;IAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,GAAG,WAAW,sBAAsB,KAAK,MAAM,CAAC;AACzD,CAAC;AAED,MAAa,aAAc,SAAQ,uBAAU;IAC3C,MAAM,CAAU,EAAE,GAAG,KAAK,CAAC;IAET,mBAAmB,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEpD,gBAAgB,GAAG,MAAM,CAAC;IAE5C,UAAU,CAAa;IAEvB;QACE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,mBAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,GAAW,EACX,WAAmB;QAEnB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,GAAW,EACX,WAAmB;QAEnB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAI,GAAG,CAAC,CAAC;YAC5D,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,WAAmB,EACnB,IAAwD,EACxD,QAAQ,GAAG,IAAI,EACf,QAAQ,GAAG,IAAI,EACf,mBAAqC,mBAAmB;QAExD,MAAM,GAAG,GAAG,iBAAiB,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAqB,GAAG,EAAE,WAAW,CAAC,CAAC;QAC5E,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO,EAAE,QAAQ,EAAE,CAAC;QACtB,CAAC;QAED,gCAAgC;QAChC,QAAQ,gBAAgB,EAAE,CAAC;YACzB,KAAK,mBAAmB;gBACtB,OAAO,IAAI,CAAC,qBAAqB,CAC/B,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,sBAAsB,CACvB,CAAC;YACJ,KAAK,sBAAsB;gBACzB,OAAO,IAAI,CAAC,qBAAqB,CAC/B,WAAW,EACX,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,uBAAuB,CACxB,CAAC;YACJ,KAAK,uBAAuB;gBAC1B,OAAO,IAAI,CAAC,qBAAqB,CAC/B,WAAW,EACX,IAAI,EACJ,KAAK,EACL,KAAK,EACL,0BAA0B,CAC3B,CAAC;YACJ,KAAK,0BAA0B,CAAC;YAChC;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,WAAmB,EACnB,WAAmB;QAEnB,MAAM,GAAG,GAAG,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAY,CAAC,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAI,IAAI,KAAK,WAAW,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;oBAC1D,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IASK,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,qBAAqB;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACrD,6DAA6D;QAC7D,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACvC,CAAC;QAED,IAAI,MAAM,GAAyB,IAAI,CAAC;QACxC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;YAClB,OAAO,GAAG,IAAA,2BAAgB,EAAC,OAAO,CAAC,CAAC;YACpC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;YAChD,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACxC,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;;AAlJH,sCAmJC;AA7BO;IAPL,IAAA,iBAAK,EAAC;QACL,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,cAAc,aAAa,CAAC,EAAE,EAAE;QAC3C,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAqB,EAAE,EAAE;QACvD,uBAAuB;QACvB,GAAG,WAAW,IAAI,WAAW,EAAE;KAClC,CAAC;gDA6BD","sourcesContent":["import crypto from 'node:crypto';\nimport { HOST_DISABLED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport type { HttpError } from '../../../util/http';\nimport { GithubHttp } from '../../../util/http/github';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { Datasource } from '../datasource';\nimport { massageGithubUrl } from '../metadata';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\n\ntype URLFormatOptions =\n | 'withShardWithSpec'\n | 'withShardWithoutSpec'\n | 'withSpecsWithoutShard'\n | 'withoutSpecsWithoutShard';\n\nfunction shardParts(packageName: string): string[] {\n return crypto\n .createHash('md5')\n .update(packageName)\n .digest('hex')\n .slice(0, 3)\n .split('');\n}\n\nconst githubRegex = regEx(\n /(?<hostURL>^https:\\/\\/[a-zA-Z0-9-.]+)\\/(?<account>[^/]+)\\/(?<repo>[^/]+?)(?:\\.git|\\/.*)?$/,\n);\n\nfunction releasesGithubUrl(\n packageName: string,\n opts: {\n hostURL: string;\n account: string;\n repo: string;\n useShard: boolean;\n useSpecs: boolean;\n },\n): string {\n const { hostURL, account, repo, useShard, useSpecs } = opts;\n const prefix =\n hostURL && hostURL !== 'https://github.com'\n ? `${hostURL}/api/v3/repos`\n : 'https://api.github.com/repos';\n const shard = shardParts(packageName).join('/');\n // `Specs` in the pods repo URL is a new requirement for legacy support also allow pod repo URL without `Specs`\n const packageNamePath = useSpecs ? `Specs/${packageName}` : packageName;\n const shardPath = useSpecs\n ? `Specs/${shard}/${packageName}`\n : `${shard}/${packageName}`;\n const suffix = useShard ? shardPath : packageNamePath;\n return `${prefix}/${account}/${repo}/contents/${suffix}`;\n}\n\nfunction handleError(packageName: string, err: HttpError): void {\n const errorData = { packageName, err };\n\n const statusCode = err.response?.statusCode ?? 0;\n if (statusCode === 429 || (statusCode >= 500 && statusCode < 600)) {\n logger.warn({ packageName, err }, `CocoaPods registry failure`);\n throw new ExternalHostError(err);\n }\n\n if (statusCode === 401) {\n logger.debug(errorData, 'Authorization error');\n } else if (statusCode === 404) {\n logger.debug(errorData, 'Package lookup error');\n } else if (err.message === HOST_DISABLED) {\n logger.trace(errorData, 'Host disabled');\n } else {\n logger.warn(errorData, 'CocoaPods lookup failure: Unknown error');\n }\n}\n\nfunction isDefaultRepo(url: string): boolean {\n const match = githubRegex.exec(url);\n if (match?.groups) {\n const { account, repo } = match.groups;\n return (\n account.toLowerCase() === 'cocoapods' && repo.toLowerCase() === 'specs'\n ); // https://github.com/CocoaPods/Specs.git\n }\n return false;\n}\n\nfunction releasesCDNUrl(packageName: string, registryUrl: string): string {\n const shard = shardParts(packageName).join('_');\n return `${registryUrl}/all_pods_versions_${shard}.txt`;\n}\n\nexport class PodDatasource extends Datasource {\n static readonly id = 'pod';\n\n override readonly defaultRegistryUrls = ['https://cdn.cocoapods.org'];\n\n override readonly registryStrategy = 'hunt';\n\n githubHttp: GithubHttp;\n\n constructor() {\n super(PodDatasource.id);\n this.githubHttp = new GithubHttp(PodDatasource.id);\n }\n\n private async requestCDN(\n url: string,\n packageName: string,\n ): Promise<string | null> {\n try {\n const resp = await this.http.get(url);\n if (resp?.body) {\n return resp.body;\n }\n } catch (err) {\n handleError(packageName, err);\n }\n\n return null;\n }\n\n private async requestGithub<T = unknown>(\n url: string,\n packageName: string,\n ): Promise<T | null> {\n try {\n const resp = await this.githubHttp.getJsonUnchecked<T>(url);\n if (resp?.body) {\n return resp.body;\n }\n } catch (err) {\n handleError(packageName, err);\n }\n\n return null;\n }\n\n private async getReleasesFromGithub(\n packageName: string,\n opts: { hostURL: string; account: string; repo: string },\n useShard = true,\n useSpecs = true,\n urlFormatOptions: URLFormatOptions = 'withShardWithSpec',\n ): Promise<ReleaseResult | null> {\n const url = releasesGithubUrl(packageName, { ...opts, useShard, useSpecs });\n const resp = await this.requestGithub<{ name: string }[]>(url, packageName);\n if (resp) {\n const releases = resp.map(({ name }) => ({ version: name }));\n return { releases };\n }\n\n // support different url formats\n switch (urlFormatOptions) {\n case 'withShardWithSpec':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n true,\n false,\n 'withShardWithoutSpec',\n );\n case 'withShardWithoutSpec':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n false,\n true,\n 'withSpecsWithoutShard',\n );\n case 'withSpecsWithoutShard':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n false,\n false,\n 'withoutSpecsWithoutShard',\n );\n case 'withoutSpecsWithoutShard':\n default:\n return null;\n }\n }\n\n private async getReleasesFromCDN(\n packageName: string,\n registryUrl: string,\n ): Promise<ReleaseResult | null> {\n const url = releasesCDNUrl(packageName, registryUrl);\n const resp = await this.requestCDN(url, packageName);\n if (resp) {\n const lines = resp.split(newlineRegex);\n for (const line of lines) {\n const [name, ...versions] = line.split('/');\n if (name === packageName.replace(regEx(/\\/.*$/), '')) {\n const releases = versions.map((version) => ({ version }));\n return { releases };\n }\n }\n }\n return null;\n }\n\n @cache({\n ttlMinutes: 30,\n namespace: `datasource-${PodDatasource.id}`,\n key: ({ packageName, registryUrl }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `${registryUrl}:${packageName}`,\n })\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n\n const podName = packageName.replace(regEx(/\\/.*$/), '');\n let baseUrl = registryUrl.replace(regEx(/\\/+$/), '');\n // In order to not abuse github API limits, query CDN instead\n if (isDefaultRepo(baseUrl)) {\n [baseUrl] = this.defaultRegistryUrls;\n }\n\n let result: ReleaseResult | null = null;\n const match = githubRegex.exec(baseUrl);\n if (match?.groups) {\n baseUrl = massageGithubUrl(baseUrl);\n const { hostURL, account, repo } = match.groups;\n const opts = { hostURL, account, repo };\n result = await this.getReleasesFromGithub(podName, opts);\n } else {\n result = await this.getReleasesFromCDN(podName, baseUrl);\n }\n\n return result;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-cache.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/rubygems/metadata-cache.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport * as packageCache from '../../../util/cache/package';\nimport { toSha256 } from '../../../util/hash';\nimport type { Http } from '../../../util/http';\nimport type { AsyncResult } from '../../../util/result';\nimport { Result } from '../../../util/result';\nimport { parseUrl } from '../../../util/url';\nimport type { ReleaseResult } from '../types';\nimport { getV1Releases } from './common';\n\ninterface CacheRecord {\n hash: string;\n data: ReleaseResult;\n isFallback?: true;\n}\n\nfunction hashVersions(versions: string[]): string {\n return toSha256(versions.sort().join(','));\n}\n\nfunction hashReleases(releases: ReleaseResult): string {\n return hashVersions(releases.releases.map((release) => release.version));\n}\n\ntype CacheNotFoundError = { type: 'cache-not-found' };\ntype CacheStaleError = {\n type: 'cache-stale';\n cache: CacheRecord;\n};\ntype CacheInvalidError = { type: 'cache-invalid' };\ntype CacheLoadError = CacheNotFoundError | CacheStaleError;\ntype CacheError = CacheNotFoundError | CacheStaleError | CacheInvalidError;\n\nexport class MetadataCache {\n constructor(private readonly http: Http) {}\n\n async getRelease(\n registryUrl: string,\n packageName: string,\n versions: string[],\n ): Promise<ReleaseResult> {\n const cacheNs = `datasource-rubygems`;\n const cacheKey = `metadata-cache:${registryUrl}:${packageName}`;\n const versionsHash = hashVersions(versions);\n\n const loadCache = (): AsyncResult<ReleaseResult, CacheLoadError> =>\n Result.wrapNullable<CacheRecord, CacheLoadError, CacheLoadError>(\n packageCache.get<CacheRecord>(cacheNs, cacheKey),\n { type: 'cache-not-found' },\n ).transform((cache) => {\n return versionsHash === cache.hash\n ? Result.ok(cache.data)\n : Result.err({ type: 'cache-stale', cache });\n });\n\n const saveCache = async (\n cache: CacheRecord,\n ttlMinutes = 100 * 24 * 60,\n ttlDelta = 10 * 24 * 60,\n ): Promise<void> => {\n const registryHostname = parseUrl(registryUrl)?.hostname;\n if (registryHostname === 'rubygems.org') {\n const ttlRandomDelta = Math.floor(Math.random() * ttlDelta);\n const ttl = ttlMinutes + ttlRandomDelta;\n await packageCache.set(cacheNs, cacheKey, cache, ttl);\n }\n };\n\n return await loadCache()\n .catch((err) =>\n getV1Releases(this.http, registryUrl, packageName).transform(\n async (\n data: ReleaseResult,\n ): Promise<Result<ReleaseResult, CacheError>> => {\n const dataHash = hashReleases(data);\n if (dataHash === versionsHash) {\n await saveCache({\n hash: dataHash,\n data,\n });\n return Result.ok(data);\n }\n\n /**\n * Return stale cache for 24 hours,\n * if metadata is inconsistent with versions list.\n */\n if (err.type === 'cache-stale') {\n const staleCache = err.cache;\n if (!staleCache.isFallback) {\n await saveCache(\n { ...staleCache, isFallback: true },\n 24 * 60,\n 0,\n );\n }\n return Result.ok(staleCache.data);\n }\n\n return Result.err({ type: 'cache-invalid' });\n },\n ),\n )\n .catch((err) => {\n logger.debug(\n { err },\n 'Rubygems: error fetching rubygems data, falling back to versions-only result',\n );\n const releases = versions.map((version) => ({ version }));\n return Result.ok({ releases } as ReleaseResult);\n })\n .unwrapOrThrow();\n }\n}\n"]}
1
+ {"version":3,"file":"metadata-cache.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/rubygems/metadata-cache.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport * as packageCache from '../../../util/cache/package';\nimport { toSha256 } from '../../../util/hash';\nimport type { Http } from '../../../util/http';\nimport type { AsyncResult } from '../../../util/result';\nimport { Result } from '../../../util/result';\nimport { parseUrl } from '../../../util/url';\nimport type { ReleaseResult } from '../types';\nimport { getV1Releases } from './common';\n\ninterface CacheRecord {\n hash: string;\n data: ReleaseResult;\n isFallback?: true;\n}\n\nfunction hashVersions(versions: string[]): string {\n return toSha256(versions.sort().join(','));\n}\n\nfunction hashReleases(releases: ReleaseResult): string {\n return hashVersions(releases.releases.map((release) => release.version));\n}\n\ninterface CacheNotFoundError {\n type: 'cache-not-found';\n}\ninterface CacheStaleError {\n type: 'cache-stale';\n cache: CacheRecord;\n}\ninterface CacheInvalidError {\n type: 'cache-invalid';\n}\ntype CacheLoadError = CacheNotFoundError | CacheStaleError;\ntype CacheError = CacheNotFoundError | CacheStaleError | CacheInvalidError;\n\nexport class MetadataCache {\n constructor(private readonly http: Http) {}\n\n async getRelease(\n registryUrl: string,\n packageName: string,\n versions: string[],\n ): Promise<ReleaseResult> {\n const cacheNs = `datasource-rubygems`;\n const cacheKey = `metadata-cache:${registryUrl}:${packageName}`;\n const versionsHash = hashVersions(versions);\n\n const loadCache = (): AsyncResult<ReleaseResult, CacheLoadError> =>\n Result.wrapNullable<CacheRecord, CacheLoadError, CacheLoadError>(\n packageCache.get<CacheRecord>(cacheNs, cacheKey),\n { type: 'cache-not-found' },\n ).transform((cache) => {\n return versionsHash === cache.hash\n ? Result.ok(cache.data)\n : Result.err({ type: 'cache-stale', cache });\n });\n\n const saveCache = async (\n cache: CacheRecord,\n ttlMinutes = 100 * 24 * 60,\n ttlDelta = 10 * 24 * 60,\n ): Promise<void> => {\n const registryHostname = parseUrl(registryUrl)?.hostname;\n if (registryHostname === 'rubygems.org') {\n const ttlRandomDelta = Math.floor(Math.random() * ttlDelta);\n const ttl = ttlMinutes + ttlRandomDelta;\n await packageCache.set(cacheNs, cacheKey, cache, ttl);\n }\n };\n\n return await loadCache()\n .catch((err) =>\n getV1Releases(this.http, registryUrl, packageName).transform(\n async (\n data: ReleaseResult,\n ): Promise<Result<ReleaseResult, CacheError>> => {\n const dataHash = hashReleases(data);\n if (dataHash === versionsHash) {\n await saveCache({\n hash: dataHash,\n data,\n });\n return Result.ok(data);\n }\n\n /**\n * Return stale cache for 24 hours,\n * if metadata is inconsistent with versions list.\n */\n if (err.type === 'cache-stale') {\n const staleCache = err.cache;\n if (!staleCache.isFallback) {\n await saveCache(\n { ...staleCache, isFallback: true },\n 24 * 60,\n 0,\n );\n }\n return Result.ok(staleCache.data);\n }\n\n return Result.err({ type: 'cache-invalid' });\n },\n ),\n )\n .catch((err) => {\n logger.debug(\n { err },\n 'Rubygems: error fetching rubygems data, falling back to versions-only result',\n );\n const releases = versions.map((version) => ({ version }));\n return Result.ok({ releases } as ReleaseResult);\n })\n .unwrapOrThrow();\n }\n}\n"]}
@@ -166,8 +166,7 @@ class SbtPluginDatasource extends datasource_1.Datasource {
166
166
  searchRoots.push(`${repoRoot}${groupIdSplit.join('.')}`);
167
167
  }
168
168
  searchRoots.push(`${repoRoot}${groupIdSplit.join('/')}`);
169
- for (let idx = 0; idx < searchRoots.length; idx += 1) {
170
- const searchRoot = searchRoots[idx];
169
+ for (const searchRoot of searchRoots) {
171
170
  let versions = await this.resolvePluginReleases(searchRoot, artifact, scalaVersion);
172
171
  let urls = {};
173
172
  if (!versions?.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/sbt-plugin/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { XmlDocument } from 'xmldoc';\nimport { logger } from '../../../logger';\nimport { Http } from '../../../util/http';\nimport { regEx } from '../../../util/regex';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport * as ivyVersioning from '../../versioning/ivy';\nimport { compare } from '../../versioning/maven/compare';\nimport { Datasource } from '../datasource';\nimport { MAVEN_REPO } from '../maven/common';\nimport { downloadHttpContent } from '../maven/util';\nimport { extractPageLinks, getLatestVersion } from '../sbt-package/util';\nimport type {\n GetReleasesConfig,\n RegistryStrategy,\n ReleaseResult,\n} from '../types';\n\nexport const SBT_PLUGINS_REPO =\n 'https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases';\n\nexport class SbtPluginDatasource extends Datasource {\n static readonly id = 'sbt-plugin';\n\n override readonly defaultRegistryUrls = [SBT_PLUGINS_REPO, MAVEN_REPO];\n\n override readonly defaultVersioning = ivyVersioning.id;\n\n override readonly registryStrategy: RegistryStrategy = 'merge';\n\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `scm` tags in the results.';\n\n constructor() {\n super(SbtPluginDatasource.id);\n this.http = new Http('sbt');\n }\n\n // istanbul ignore next: to be rewritten\n async getArtifactSubdirs(\n searchRoot: string,\n artifact: string,\n scalaVersion: string,\n ): Promise<string[] | null> {\n const pkgUrl = ensureTrailingSlash(searchRoot);\n const indexContent = await downloadHttpContent(this.http, pkgUrl);\n if (indexContent) {\n const rootPath = new URL(pkgUrl).pathname;\n let artifactSubdirs = extractPageLinks(indexContent, (href) => {\n const path = href.replace(rootPath, '');\n if (\n path.startsWith(`${artifact}_native`) ||\n path.startsWith(`${artifact}_sjs`)\n ) {\n return null;\n }\n\n if (path === artifact || path.startsWith(`${artifact}_`)) {\n return path;\n }\n\n return null;\n });\n\n if (\n scalaVersion &&\n artifactSubdirs.includes(`${artifact}_${scalaVersion}`)\n ) {\n artifactSubdirs = [`${artifact}_${scalaVersion}`];\n }\n return artifactSubdirs;\n }\n\n return null;\n }\n\n // istanbul ignore next: to be rewritten\n async getPackageReleases(\n searchRoot: string,\n artifactSubdirs: string[] | null,\n ): Promise<string[] | null> {\n if (artifactSubdirs) {\n const releases: string[] = [];\n for (const searchSubdir of artifactSubdirs) {\n const pkgUrl = ensureTrailingSlash(`${searchRoot}/${searchSubdir}`);\n const content = await downloadHttpContent(this.http, pkgUrl);\n if (content) {\n const rootPath = new URL(pkgUrl).pathname;\n const subdirReleases = extractPageLinks(content, (href) => {\n const path = href.replace(rootPath, '');\n if (path.startsWith('.')) {\n return null;\n }\n\n return path;\n });\n\n subdirReleases.forEach((x) => releases.push(x));\n }\n }\n if (releases.length) {\n return [...new Set(releases)].sort(compare);\n }\n }\n\n return null;\n }\n\n // istanbul ignore next: to be rewritten\n async getUrls(\n searchRoot: string,\n artifactDirs: string[] | null,\n version: string | null,\n ): Promise<Partial<ReleaseResult>> {\n const result: Partial<ReleaseResult> = {};\n\n if (!artifactDirs?.length) {\n return result;\n }\n\n if (!version) {\n return result;\n }\n\n for (const artifactDir of artifactDirs) {\n const [artifact] = artifactDir.split('_');\n const pomFileNames = [\n `${artifactDir}-${version}.pom`,\n `${artifact}-${version}.pom`,\n ];\n\n for (const pomFileName of pomFileNames) {\n const pomUrl = `${searchRoot}/${artifactDir}/${version}/${pomFileName}`;\n const content = await downloadHttpContent(this.http, pomUrl);\n if (content) {\n const pomXml = new XmlDocument(content);\n\n const homepage = pomXml.valueWithPath('url');\n if (homepage) {\n result.homepage = homepage;\n }\n\n const sourceUrl = pomXml.valueWithPath('scm.url');\n if (sourceUrl) {\n result.sourceUrl = sourceUrl\n .replace(regEx(/^scm:/), '')\n .replace(regEx(/^git:/), '')\n .replace(regEx(/^git@github.com:/), 'https://github.com/')\n .replace(regEx(/\\.git$/), '');\n }\n\n return result;\n }\n }\n }\n\n return result;\n }\n\n async resolvePluginReleases(\n rootUrl: string,\n artifact: string,\n scalaVersion: string,\n ): Promise<string[] | null> {\n const searchRoot = `${rootUrl}/${artifact}`;\n const hrefFilterMap = (href: string): string | null => {\n if (href.startsWith('.')) {\n return null;\n }\n\n return href;\n };\n const searchRootContent = await downloadHttpContent(\n this.http,\n ensureTrailingSlash(searchRoot),\n );\n if (searchRootContent) {\n const releases: string[] = [];\n const scalaVersionItems = extractPageLinks(\n searchRootContent,\n hrefFilterMap,\n );\n const scalaVersions = scalaVersionItems.map((x) =>\n x.replace(regEx(/^scala_/), ''),\n );\n const searchVersions = scalaVersions.includes(scalaVersion)\n ? [scalaVersion]\n : scalaVersions;\n for (const searchVersion of searchVersions) {\n const searchSubRoot = `${searchRoot}/scala_${searchVersion}`;\n const subRootContent = await downloadHttpContent(\n this.http,\n ensureTrailingSlash(searchSubRoot),\n );\n if (subRootContent) {\n const sbtVersionItems = extractPageLinks(\n subRootContent,\n hrefFilterMap,\n );\n for (const sbtItem of sbtVersionItems) {\n const releasesRoot = `${searchSubRoot}/${sbtItem}`;\n const releasesIndexContent = await downloadHttpContent(\n this.http,\n ensureTrailingSlash(releasesRoot),\n );\n if (releasesIndexContent) {\n const releasesParsed = extractPageLinks(\n releasesIndexContent,\n hrefFilterMap,\n );\n releasesParsed.forEach((x) => releases.push(x));\n }\n }\n }\n }\n if (releases.length) {\n return [...new Set(releases)].sort(compare);\n }\n }\n return null;\n }\n\n override async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n\n const [groupId, artifactId] = packageName.split(':');\n const groupIdSplit = groupId.split('.');\n const artifactIdSplit = artifactId.split('_');\n const [artifact, scalaVersion] = artifactIdSplit;\n\n const repoRoot = ensureTrailingSlash(registryUrl);\n const searchRoots: string[] = [];\n // Optimize lookup order\n if (!registryUrl.startsWith(MAVEN_REPO)) {\n searchRoots.push(`${repoRoot}${groupIdSplit.join('.')}`);\n }\n searchRoots.push(`${repoRoot}${groupIdSplit.join('/')}`);\n\n for (let idx = 0; idx < searchRoots.length; idx += 1) {\n const searchRoot = searchRoots[idx];\n let versions = await this.resolvePluginReleases(\n searchRoot,\n artifact,\n scalaVersion,\n );\n let urls = {};\n\n if (!versions?.length) {\n const artifactSubdirs = await this.getArtifactSubdirs(\n searchRoot,\n artifact,\n scalaVersion,\n );\n versions = await this.getPackageReleases(searchRoot, artifactSubdirs);\n const latestVersion = getLatestVersion(versions);\n urls = await this.getUrls(searchRoot, artifactSubdirs, latestVersion);\n }\n\n const dependencyUrl = `${searchRoot}/${artifact}`;\n\n logger.trace({ dependency: packageName, versions }, `Package versions`);\n if (versions) {\n return {\n ...urls,\n dependencyUrl,\n releases: versions.map((v) => ({ version: v })),\n };\n }\n }\n\n logger.debug(\n `No versions found for ${packageName} in ${searchRoots.length} repositories`,\n );\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/sbt-plugin/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { XmlDocument } from 'xmldoc';\nimport { logger } from '../../../logger';\nimport { Http } from '../../../util/http';\nimport { regEx } from '../../../util/regex';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport * as ivyVersioning from '../../versioning/ivy';\nimport { compare } from '../../versioning/maven/compare';\nimport { Datasource } from '../datasource';\nimport { MAVEN_REPO } from '../maven/common';\nimport { downloadHttpContent } from '../maven/util';\nimport { extractPageLinks, getLatestVersion } from '../sbt-package/util';\nimport type {\n GetReleasesConfig,\n RegistryStrategy,\n ReleaseResult,\n} from '../types';\n\nexport const SBT_PLUGINS_REPO =\n 'https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases';\n\nexport class SbtPluginDatasource extends Datasource {\n static readonly id = 'sbt-plugin';\n\n override readonly defaultRegistryUrls = [SBT_PLUGINS_REPO, MAVEN_REPO];\n\n override readonly defaultVersioning = ivyVersioning.id;\n\n override readonly registryStrategy: RegistryStrategy = 'merge';\n\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `scm` tags in the results.';\n\n constructor() {\n super(SbtPluginDatasource.id);\n this.http = new Http('sbt');\n }\n\n // istanbul ignore next: to be rewritten\n async getArtifactSubdirs(\n searchRoot: string,\n artifact: string,\n scalaVersion: string,\n ): Promise<string[] | null> {\n const pkgUrl = ensureTrailingSlash(searchRoot);\n const indexContent = await downloadHttpContent(this.http, pkgUrl);\n if (indexContent) {\n const rootPath = new URL(pkgUrl).pathname;\n let artifactSubdirs = extractPageLinks(indexContent, (href) => {\n const path = href.replace(rootPath, '');\n if (\n path.startsWith(`${artifact}_native`) ||\n path.startsWith(`${artifact}_sjs`)\n ) {\n return null;\n }\n\n if (path === artifact || path.startsWith(`${artifact}_`)) {\n return path;\n }\n\n return null;\n });\n\n if (\n scalaVersion &&\n artifactSubdirs.includes(`${artifact}_${scalaVersion}`)\n ) {\n artifactSubdirs = [`${artifact}_${scalaVersion}`];\n }\n return artifactSubdirs;\n }\n\n return null;\n }\n\n // istanbul ignore next: to be rewritten\n async getPackageReleases(\n searchRoot: string,\n artifactSubdirs: string[] | null,\n ): Promise<string[] | null> {\n if (artifactSubdirs) {\n const releases: string[] = [];\n for (const searchSubdir of artifactSubdirs) {\n const pkgUrl = ensureTrailingSlash(`${searchRoot}/${searchSubdir}`);\n const content = await downloadHttpContent(this.http, pkgUrl);\n if (content) {\n const rootPath = new URL(pkgUrl).pathname;\n const subdirReleases = extractPageLinks(content, (href) => {\n const path = href.replace(rootPath, '');\n if (path.startsWith('.')) {\n return null;\n }\n\n return path;\n });\n\n subdirReleases.forEach((x) => releases.push(x));\n }\n }\n if (releases.length) {\n return [...new Set(releases)].sort(compare);\n }\n }\n\n return null;\n }\n\n // istanbul ignore next: to be rewritten\n async getUrls(\n searchRoot: string,\n artifactDirs: string[] | null,\n version: string | null,\n ): Promise<Partial<ReleaseResult>> {\n const result: Partial<ReleaseResult> = {};\n\n if (!artifactDirs?.length) {\n return result;\n }\n\n if (!version) {\n return result;\n }\n\n for (const artifactDir of artifactDirs) {\n const [artifact] = artifactDir.split('_');\n const pomFileNames = [\n `${artifactDir}-${version}.pom`,\n `${artifact}-${version}.pom`,\n ];\n\n for (const pomFileName of pomFileNames) {\n const pomUrl = `${searchRoot}/${artifactDir}/${version}/${pomFileName}`;\n const content = await downloadHttpContent(this.http, pomUrl);\n if (content) {\n const pomXml = new XmlDocument(content);\n\n const homepage = pomXml.valueWithPath('url');\n if (homepage) {\n result.homepage = homepage;\n }\n\n const sourceUrl = pomXml.valueWithPath('scm.url');\n if (sourceUrl) {\n result.sourceUrl = sourceUrl\n .replace(regEx(/^scm:/), '')\n .replace(regEx(/^git:/), '')\n .replace(regEx(/^git@github.com:/), 'https://github.com/')\n .replace(regEx(/\\.git$/), '');\n }\n\n return result;\n }\n }\n }\n\n return result;\n }\n\n async resolvePluginReleases(\n rootUrl: string,\n artifact: string,\n scalaVersion: string,\n ): Promise<string[] | null> {\n const searchRoot = `${rootUrl}/${artifact}`;\n const hrefFilterMap = (href: string): string | null => {\n if (href.startsWith('.')) {\n return null;\n }\n\n return href;\n };\n const searchRootContent = await downloadHttpContent(\n this.http,\n ensureTrailingSlash(searchRoot),\n );\n if (searchRootContent) {\n const releases: string[] = [];\n const scalaVersionItems = extractPageLinks(\n searchRootContent,\n hrefFilterMap,\n );\n const scalaVersions = scalaVersionItems.map((x) =>\n x.replace(regEx(/^scala_/), ''),\n );\n const searchVersions = scalaVersions.includes(scalaVersion)\n ? [scalaVersion]\n : scalaVersions;\n for (const searchVersion of searchVersions) {\n const searchSubRoot = `${searchRoot}/scala_${searchVersion}`;\n const subRootContent = await downloadHttpContent(\n this.http,\n ensureTrailingSlash(searchSubRoot),\n );\n if (subRootContent) {\n const sbtVersionItems = extractPageLinks(\n subRootContent,\n hrefFilterMap,\n );\n for (const sbtItem of sbtVersionItems) {\n const releasesRoot = `${searchSubRoot}/${sbtItem}`;\n const releasesIndexContent = await downloadHttpContent(\n this.http,\n ensureTrailingSlash(releasesRoot),\n );\n if (releasesIndexContent) {\n const releasesParsed = extractPageLinks(\n releasesIndexContent,\n hrefFilterMap,\n );\n releasesParsed.forEach((x) => releases.push(x));\n }\n }\n }\n }\n if (releases.length) {\n return [...new Set(releases)].sort(compare);\n }\n }\n return null;\n }\n\n override async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n\n const [groupId, artifactId] = packageName.split(':');\n const groupIdSplit = groupId.split('.');\n const artifactIdSplit = artifactId.split('_');\n const [artifact, scalaVersion] = artifactIdSplit;\n\n const repoRoot = ensureTrailingSlash(registryUrl);\n const searchRoots: string[] = [];\n // Optimize lookup order\n if (!registryUrl.startsWith(MAVEN_REPO)) {\n searchRoots.push(`${repoRoot}${groupIdSplit.join('.')}`);\n }\n searchRoots.push(`${repoRoot}${groupIdSplit.join('/')}`);\n\n for (const searchRoot of searchRoots) {\n let versions = await this.resolvePluginReleases(\n searchRoot,\n artifact,\n scalaVersion,\n );\n let urls = {};\n\n if (!versions?.length) {\n const artifactSubdirs = await this.getArtifactSubdirs(\n searchRoot,\n artifact,\n scalaVersion,\n );\n versions = await this.getPackageReleases(searchRoot, artifactSubdirs);\n const latestVersion = getLatestVersion(versions);\n urls = await this.getUrls(searchRoot, artifactSubdirs, latestVersion);\n }\n\n const dependencyUrl = `${searchRoot}/${artifact}`;\n\n logger.trace({ dependency: packageName, versions }, `Package versions`);\n if (versions) {\n return {\n ...urls,\n dependencyUrl,\n releases: versions.map((v) => ({ version: v })),\n };\n }\n }\n\n logger.debug(\n `No versions found for ${packageName} in ${searchRoots.length} repositories`,\n );\n return null;\n }\n}\n"]}
@@ -7,8 +7,7 @@ function extractCollectionsMetaDataFile(lines) {
7
7
  const deps = [];
8
8
  // in a galaxy.yml the dependency map is inside a `dependencies:` block
9
9
  let foundDependencyBlock = false;
10
- for (let lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {
11
- const line = lines[lineNumber];
10
+ for (const line of lines) {
12
11
  if (util_1.dependencyRegex.exec(line)) {
13
12
  foundDependencyBlock = true;
14
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"collections-metadata.js","sourceRoot":"","sources":["../../../../lib/modules/manager/ansible-galaxy/collections-metadata.ts"],"names":[],"mappings":";;AAIA,wEA6BC;AAjCD,0EAAgF;AAEhF,iCAAsD;AAEtD,SAAgB,8BAA8B,CAC5C,KAAe;IAEf,MAAM,IAAI,GAAwB,EAAE,CAAC;IACrC,uEAAuE;IACvE,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QAE/B,IAAI,sBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC;aAAM,IAAI,oBAAoB,EAAE,CAAC;YAChC,wDAAwD;YACxD,MAAM,iBAAiB,GAAG,kBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,iBAAiB,EAAE,MAAM,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAsB;oBAC7B,OAAO,EAAE,mBAAmB;oBAC5B,UAAU,EAAE,8CAA0B,CAAC,EAAE;oBACzC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,WAAW;oBAC7C,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO;iBAC/C,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,6DAA6D;gBAC7D,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import { GalaxyCollectionDatasource } from '../../datasource/galaxy-collection';\nimport type { PackageDependency } from '../types';\nimport { dependencyRegex, galaxyRegEx } from './util';\n\nexport function extractCollectionsMetaDataFile(\n lines: string[],\n): PackageDependency[] {\n const deps: PackageDependency[] = [];\n // in a galaxy.yml the dependency map is inside a `dependencies:` block\n let foundDependencyBlock = false;\n for (let lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {\n const line = lines[lineNumber];\n\n if (dependencyRegex.exec(line)) {\n foundDependencyBlock = true;\n } else if (foundDependencyBlock) {\n // expects a line like this ` ansible.windows: \"1.4.0\"`\n const galaxyRegExResult = galaxyRegEx.exec(line);\n if (galaxyRegExResult?.groups) {\n const dep: PackageDependency = {\n depType: 'galaxy-collection',\n datasource: GalaxyCollectionDatasource.id,\n depName: galaxyRegExResult.groups.packageName,\n currentValue: galaxyRegExResult.groups.version,\n };\n deps.push(dep);\n } else {\n // if we can not match additional lines, the block has ended.\n break;\n }\n }\n }\n return deps;\n}\n"]}
1
+ {"version":3,"file":"collections-metadata.js","sourceRoot":"","sources":["../../../../lib/modules/manager/ansible-galaxy/collections-metadata.ts"],"names":[],"mappings":";;AAIA,wEA2BC;AA/BD,0EAAgF;AAEhF,iCAAsD;AAEtD,SAAgB,8BAA8B,CAC5C,KAAe;IAEf,MAAM,IAAI,GAAwB,EAAE,CAAC;IACrC,uEAAuE;IACvE,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,sBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC;aAAM,IAAI,oBAAoB,EAAE,CAAC;YAChC,wDAAwD;YACxD,MAAM,iBAAiB,GAAG,kBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,iBAAiB,EAAE,MAAM,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAsB;oBAC7B,OAAO,EAAE,mBAAmB;oBAC5B,UAAU,EAAE,8CAA0B,CAAC,EAAE;oBACzC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,WAAW;oBAC7C,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO;iBAC/C,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,6DAA6D;gBAC7D,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import { GalaxyCollectionDatasource } from '../../datasource/galaxy-collection';\nimport type { PackageDependency } from '../types';\nimport { dependencyRegex, galaxyRegEx } from './util';\n\nexport function extractCollectionsMetaDataFile(\n lines: string[],\n): PackageDependency[] {\n const deps: PackageDependency[] = [];\n // in a galaxy.yml the dependency map is inside a `dependencies:` block\n let foundDependencyBlock = false;\n for (const line of lines) {\n if (dependencyRegex.exec(line)) {\n foundDependencyBlock = true;\n } else if (foundDependencyBlock) {\n // expects a line like this ` ansible.windows: \"1.4.0\"`\n const galaxyRegExResult = galaxyRegEx.exec(line);\n if (galaxyRegExResult?.groups) {\n const dep: PackageDependency = {\n depType: 'galaxy-collection',\n datasource: GalaxyCollectionDatasource.id,\n depName: galaxyRegExResult.groups.packageName,\n currentValue: galaxyRegExResult.groups.version,\n };\n deps.push(dep);\n } else {\n // if we can not match additional lines, the block has ended.\n break;\n }\n }\n }\n return deps;\n}\n"]}
@@ -343,7 +343,7 @@ exports.upgradeableTooling = {
343
343
  java: {
344
344
  asdfPluginUrl: 'https://github.com/halcyon/asdf-java',
345
345
  config: (version) => {
346
- const adoptOpenJdkMatches = version.match(/^adoptopenjdk-(?<version>\d\S+)/)?.groups;
346
+ const adoptOpenJdkMatches = /^adoptopenjdk-(?<version>\d\S+)/.exec(version)?.groups;
347
347
  if (adoptOpenJdkMatches) {
348
348
  return {
349
349
  datasource: java_version_1.JavaVersionDatasource.id,
@@ -351,7 +351,7 @@ exports.upgradeableTooling = {
351
351
  currentValue: adoptOpenJdkMatches.version,
352
352
  };
353
353
  }
354
- const adoptOpenJreMatches = version.match(/^adoptopenjdk-jre-(?<version>\d\S+)/)?.groups;
354
+ const adoptOpenJreMatches = /^adoptopenjdk-jre-(?<version>\d\S+)/.exec(version)?.groups;
355
355
  if (adoptOpenJreMatches) {
356
356
  return {
357
357
  datasource: java_version_1.JavaVersionDatasource.id,
@@ -359,7 +359,7 @@ exports.upgradeableTooling = {
359
359
  currentValue: adoptOpenJreMatches.version,
360
360
  };
361
361
  }
362
- const temurinJdkMatches = version.match(/^temurin-(?<version>\d\S+)/)?.groups;
362
+ const temurinJdkMatches = /^temurin-(?<version>\d\S+)/.exec(version)?.groups;
363
363
  if (temurinJdkMatches) {
364
364
  return {
365
365
  datasource: java_version_1.JavaVersionDatasource.id,
@@ -367,7 +367,7 @@ exports.upgradeableTooling = {
367
367
  currentValue: temurinJdkMatches.version,
368
368
  };
369
369
  }
370
- const temurinJreMatches = version.match(/^temurin-jre-(?<version>\d\S+)/)?.groups;
370
+ const temurinJreMatches = /^temurin-jre-(?<version>\d\S+)/.exec(version)?.groups;
371
371
  if (temurinJreMatches) {
372
372
  return {
373
373
  datasource: java_version_1.JavaVersionDatasource.id,
@@ -1 +1 @@
1
- {"version":3,"file":"upgradeable-tooling.js","sourceRoot":"","sources":["../../../../lib/modules/manager/asdf/upgradeable-tooling.ts"],"names":[],"mappings":"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","sourcesContent":["import { regEx } from '../../../util/regex';\nimport { DartVersionDatasource } from '../../datasource/dart-version';\nimport { DockerDatasource } from '../../datasource/docker';\nimport { DotnetVersionDatasource } from '../../datasource/dotnet-version';\nimport { FlutterVersionDatasource } from '../../datasource/flutter-version';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases';\nimport { GithubTagsDatasource } from '../../datasource/github-tags';\nimport { HexpmBobDatasource } from '../../datasource/hexpm-bob';\nimport { JavaVersionDatasource } from '../../datasource/java-version';\nimport { NodeVersionDatasource } from '../../datasource/node-version';\nimport { NpmDatasource } from '../../datasource/npm';\nimport { PypiDatasource } from '../../datasource/pypi';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version';\nimport * as regexVersioning from '../../versioning/regex';\nimport * as semverVersioning from '../../versioning/semver';\nimport type { PackageDependency } from '../types';\n\nexport type StaticTooling = Partial<PackageDependency> &\n Required<Pick<PackageDependency, 'datasource'>>;\n\nexport type DynamicTooling = (version: string) => StaticTooling | undefined;\n\nexport type ToolingConfig = StaticTooling | DynamicTooling;\nexport interface ToolingDefinition {\n config: ToolingConfig;\n asdfPluginUrl: string;\n}\n\nconst hugoDefinition: ToolingDefinition = {\n // This plugin supports the names `hugo` & `gohugo`\n asdfPluginUrl: 'https://github.com/NeoHsu/asdf-hugo',\n config: (version) => ({\n datasource: GithubReleasesDatasource.id,\n packageName: 'gohugoio/hugo',\n extractVersion: '^v(?<version>\\\\S+)',\n // The asdf hugo plugin supports prefixing the version with\n // `extended_`. Extended versions feature Sass support.\n currentValue: version.replace(/^extended_/, ''),\n }),\n};\n\nexport const upgradeableTooling: Record<string, ToolingDefinition> = {\n act: {\n asdfPluginUrl: 'https://github.com/grimoh/asdf-act.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'nektos/act',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n actionlint: {\n asdfPluginUrl: 'https://github.com/crazy-matt/asdf-actionlint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'rhysd/actionlint',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'adr-tools': {\n asdfPluginUrl: 'https://gitlab.com/td7x/asdf/adr-tools.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'npryce/adr-tools',\n },\n },\n argocd: {\n asdfPluginUrl: 'https://github.com/beardix/asdf-argocd',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'argoproj/argo-cd',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'asdf-plugin-manager': {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-plugin-manager',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'asdf-community/asdf-plugin-manager',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n atmos: {\n asdfPluginUrl: 'https://github.com/cloudposse/asdf-atmos',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cloudposse/atmos',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n awscli: {\n asdfPluginUrl: 'https://github.com/MetricMike/asdf-awscli',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'aws/aws-cli',\n },\n },\n bun: {\n asdfPluginUrl: 'https://github.com/cometkim/asdf-bun',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'oven-sh/bun',\n extractVersion: '^bun-v(?<version>\\\\S+)',\n },\n },\n 'cargo-make': {\n asdfPluginUrl: 'https://github.com/mise-plugins/asdf-cargo-make',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sagiegurari/cargo-make',\n },\n },\n checkov: {\n asdfPluginUrl: 'https://github.com/bosmak/asdf-checkov.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'bridgecrewio/checkov',\n },\n },\n clojure: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-clojure',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'clojure/brew-install',\n versioning: `${regexVersioning.id}:^(?<major>\\\\d+?)\\\\.(?<minor>\\\\d+?)\\\\.(?<patch>\\\\d+)\\\\.(?<build>\\\\d+)$`,\n },\n },\n conftest: {\n asdfPluginUrl: 'https://github.com/looztra/asdf-conftest',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'open-policy-agent/conftest',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n cookiecutter: {\n asdfPluginUrl: 'https://github.com/shawon-crosen/asdf-cookiecutter',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cookiecutter/cookiecutter',\n versioning: semverVersioning.id,\n },\n },\n cosign: {\n asdfPluginUrl: 'https://gitlab.com/wt0f/asdf-cosign',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n crystal: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-crystal',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'crystal-lang/crystal',\n },\n },\n dart: {\n asdfPluginUrl: 'https://github.com/PatOConnor43/asdf-dart',\n config: {\n datasource: DartVersionDatasource.id,\n },\n },\n deno: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-deno',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'denoland/deno',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n direnv: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-direnv',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'direnv/direnv',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'dotnet-core': {\n asdfPluginUrl: 'https://github.com/emersonsoares/asdf-dotnet-core',\n config: {\n datasource: DotnetVersionDatasource.id,\n packageName: 'dotnet-sdk',\n },\n },\n dprint: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-dprint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'dprint/dprint',\n },\n },\n ecspresso: {\n asdfPluginUrl: 'https://github.com/kayac/asdf-ecspresso',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kayac/ecspresso',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'editorconfig-checker': {\n asdfPluginUrl: 'https://github.com/gabitchov/asdf-editorconfig-checker',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'editorconfig-checker/editorconfig-checker',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n elixir: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-elixir',\n config: {\n datasource: HexpmBobDatasource.id,\n },\n },\n elm: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-elm',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'elm/compiler',\n },\n },\n erlang: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-erlang',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'erlang/otp',\n extractVersion: '^OTP-(?<version>\\\\S+)',\n versioning: `${regexVersioning.id}:^(?<major>\\\\d+?)\\\\.(?<minor>\\\\d+?)(\\\\.(?<patch>\\\\d+))?$`,\n },\n },\n flutter: {\n asdfPluginUrl: 'https://github.com/oae/asdf-flutter',\n config: (version) => ({\n datasource: FlutterVersionDatasource.id,\n // asdf-flutter plugin supports channel on version suffix.\n currentValue: version.replace(regEx(/-(stable|beta|dev)$/), ''),\n }),\n },\n flux2: {\n asdfPluginUrl: 'https://github.com/tablexi/asdf-flux2.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'fluxcd/flux2',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gauche: {\n asdfPluginUrl: 'https://github.com/sakuro/asdf-gauche',\n config: {\n datasource: DockerDatasource.id,\n packageName: 'practicalscheme/gauche',\n },\n },\n 'github-cli': {\n asdfPluginUrl: 'https://github.com/bartlomiejdanek/asdf-github-cli.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cli/cli',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n gitleaks: {\n asdfPluginUrl: 'https://github.com/jmcvetta/asdf-gitleaks',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'gitleaks/gitleaks',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n gleam: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-gleam.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'gleam-lang/gleam',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gohugo: hugoDefinition,\n golang: {\n asdfPluginUrl: 'https://github.com/kennyp/asdf-golang',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'golang/go',\n extractVersion: '^go(?<version>\\\\S+)',\n },\n },\n 'golangci-lint': {\n asdfPluginUrl: 'https://github.com/hypnoglow/asdf-golangci-lint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'golangci/golangci-lint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gomplate: {\n asdfPluginUrl: 'https://github.com/sneakybeaky/asdf-gomplate',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hairyhenderson/gomplate',\n extractVersion: '^v(?<version>.+)',\n },\n },\n hadolint: {\n asdfPluginUrl: 'https://github.com/looztra/asdf-hadolint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'hadolint/hadolint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n haskell: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-haskell',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'ghc/ghc',\n extractVersion: '^ghc-(?<version>\\\\S+?)-release',\n },\n },\n helm: {\n asdfPluginUrl: 'https://github.com/Antiarchitect/asdf-helm',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'helm/helm',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n helmfile: {\n asdfPluginUrl: 'https://github.com/feniix/asdf-helmfile',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'helmfile/helmfile',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n hugo: hugoDefinition,\n idris: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-idris',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'idris-lang/Idris-dev',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n istioctl: {\n asdfPluginUrl: 'https://github.com/virtualstaticvoid/asdf-istioctl',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'istio/istio',\n versioning: semverVersioning.id,\n },\n },\n java: {\n asdfPluginUrl: 'https://github.com/halcyon/asdf-java',\n config: (version) => {\n const adoptOpenJdkMatches = version.match(\n /^adoptopenjdk-(?<version>\\d\\S+)/,\n )?.groups;\n if (adoptOpenJdkMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jdk',\n currentValue: adoptOpenJdkMatches.version,\n };\n }\n const adoptOpenJreMatches = version.match(\n /^adoptopenjdk-jre-(?<version>\\d\\S+)/,\n )?.groups;\n if (adoptOpenJreMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jre',\n currentValue: adoptOpenJreMatches.version,\n };\n }\n const temurinJdkMatches = version.match(\n /^temurin-(?<version>\\d\\S+)/,\n )?.groups;\n if (temurinJdkMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jdk',\n currentValue: temurinJdkMatches.version,\n };\n }\n const temurinJreMatches = version.match(\n /^temurin-jre-(?<version>\\d\\S+)/,\n )?.groups;\n if (temurinJreMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jre',\n currentValue: temurinJreMatches.version,\n };\n }\n\n return undefined;\n },\n },\n julia: {\n asdfPluginUrl: 'https://github.com/rkyleg/asdf-julia',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'JuliaLang/julia',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n just: {\n asdfPluginUrl: 'https://github.com/olofvndrhr/asdf-just',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'casey/just',\n },\n },\n k3s: {\n asdfPluginUrl: 'https://github.com/dmpe/asdf-k3s',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'k3s-io/k3s',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n kind: {\n asdfPluginUrl: 'https://github.com/johnlayton/asdf-kind',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes-sigs/kind',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n kotlin: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-kotlin',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'JetBrains/kotlin',\n extractVersion: '^(Kotlin |v)(?<version>\\\\S+)',\n },\n },\n kubectl: {\n asdfPluginUrl: 'https://github.com/Banno/asdf-kubectl.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'kubernetes/kubernetes',\n extractVersion: '^v(?<version>.+)',\n },\n },\n kustomize: {\n asdfPluginUrl: 'https://github.com/Banno/asdf-kustomize',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes-sigs/kustomize',\n extractVersion: '^kustomize/v(?<version>\\\\S+)',\n },\n },\n lua: {\n asdfPluginUrl: 'https://github.com/Stratus3D/asdf-lua',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'lua/lua',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'markdownlint-cli2': {\n asdfPluginUrl:\n 'https://github.com/paulo-ferraz-oliveira/asdf-markdownlint-cli2',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'DavidAnson/markdownlint-cli2',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n maven: {\n asdfPluginUrl: 'https://github.com/halcyon/asdf-maven',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'apache/maven',\n },\n },\n mimirtool: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-mimirtool',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'grafana/mimir',\n extractVersion: '^mimir-(?<version>\\\\S+)',\n },\n },\n minikube: {\n asdfPluginUrl: 'https://github.com/alvarobp/asdf-minikube.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes/minikube',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n nim: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-nim',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'nim-lang/Nim',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n nodejs: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-nodejs',\n config: {\n depName: 'node',\n datasource: NodeVersionDatasource.id,\n },\n },\n ocaml: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-ocaml',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'ocaml/ocaml',\n },\n },\n oci: {\n asdfPluginUrl: 'https://github.com/yasn77/asdf-oci',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'oracle/oci-cli',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n opentofu: {\n asdfPluginUrl: 'https://github.com/virtualroot/asdf-opentofu',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'opentofu/opentofu',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n packer: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/packer',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n perl: {\n asdfPluginUrl: 'https://github.com/ouest/asdf-perl',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'Perl/perl5',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n php: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-php',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'php/php-src',\n extractVersion: '^php-(?<version>\\\\S+)',\n },\n },\n pnpm: {\n asdfPluginUrl: 'https://github.com/jonathanmorley/asdf-pnpm',\n config: {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n versioning: semverVersioning.id,\n },\n },\n poetry: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-poetry',\n config: {\n datasource: PypiDatasource.id,\n packageName: 'poetry',\n },\n },\n 'pre-commit': {\n asdfPluginUrl: 'https://github.com/jonathanmorley/asdf-pre-commit.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'pre-commit/pre-commit',\n extractVersion: '^v(?<version>.+)',\n },\n },\n protoc: {\n asdfPluginUrl: 'https://github.com/paxosglobal/asdf-protoc.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'protocolbuffers/protobuf',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n pulumi: {\n asdfPluginUrl: 'https://github.com/canha/asdf-pulumi.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pulumi/pulumi',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n python: {\n asdfPluginUrl: 'https://github.com/danhper/asdf-python',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'python/cpython',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n rebar: {\n asdfPluginUrl: 'https://github.com/Stratus3D/asdf-rebar.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'erlang/rebar3',\n },\n },\n ruby: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-ruby',\n config: {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby-version',\n versioning: semverVersioning.id,\n },\n },\n rust: {\n asdfPluginUrl: 'https://github.com/code-lever/asdf-rust',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'rust-lang/rust',\n },\n },\n sbt: {\n asdfPluginUrl: 'https://github.com/bram2000/asdf-sbt.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sbt/sbt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n scala: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-scala',\n config: (version) => {\n if (version.startsWith('2')) {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: 'scala/scala',\n extractVersion: '^v(?<version>\\\\S+)',\n };\n }\n if (version.startsWith('3')) {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: 'lampepfl/dotty',\n };\n }\n\n return undefined;\n },\n },\n shellcheck: {\n asdfPluginUrl: 'https://github.com/luizm/asdf-shellcheck',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'koalaman/shellcheck',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n shfmt: {\n asdfPluginUrl: 'https://github.com/luizm/asdf-shfmt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mvdan/sh',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n sops: {\n asdfPluginUrl: 'https://github.com/feniix/asdf-sops',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mozilla/sops',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n steampipe: {\n asdfPluginUrl: 'https://github.com/carnei-ro/asdf-steampipe',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'turbot/steampipe',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n terraform: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/terraform',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'terraform-docs': {\n asdfPluginUrl: 'https://github.com/looztra/asdf-terraform-docs.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'terraform-docs/terraform-docs',\n extractVersion: '^v(?<version>.+)',\n },\n },\n terragrunt: {\n asdfPluginUrl: 'https://github.com/ohmer/asdf-terragrunt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'gruntwork-io/terragrunt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n tflint: {\n asdfPluginUrl: 'https://github.com/skyzyx/asdf-tflint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'terraform-linters/tflint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n tfsec: {\n asdfPluginUrl: 'https://github.com/woneill/asdf-tfsec.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'aquasecurity/tfsec',\n extractVersion: '^v(?<version>.+)',\n },\n },\n trivy: {\n asdfPluginUrl: 'https://github.com/zufardhiyaulhaq/asdf-trivy',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n vault: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/vault',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n yamllint: {\n asdfPluginUrl: 'https://github.com/ericcornelissen/asdf-yamllint',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'adrienverge/yamllint',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n yq: {\n asdfPluginUrl: 'https://github.com/sudermanjr/asdf-yq',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mikefarah/yq',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n zig: {\n asdfPluginUrl: 'https://github.com/cheetah/asdf-zig',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'ziglang/zig',\n },\n },\n maestro: {\n asdfPluginUrl: 'https://github.com/dotanuki-labs/asdf-maestro',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mobile-dev-inc/maestro',\n extractVersion: '^cli-(?<version>\\\\S+)',\n },\n },\n detekt: {\n asdfPluginUrl: 'https://github.com/dotanuki-labs/asdf-detekt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'detekt/detekt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n ktlint: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-ktlint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pinterest/ktlint',\n },\n },\n yamlfmt: {\n asdfPluginUrl: 'https://github.com/mise-plugins/asdf-yamlfmt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'google/yamlfmt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n tuist: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-tuist',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'tuist/tuist',\n },\n },\n typos: {\n asdfPluginUrl: 'https://github.com/aschiavon91/asdf-typos',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'crate-ci/typos',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n uv: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-uv',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'astral-sh/uv',\n },\n },\n};\n"]}
1
+ {"version":3,"file":"upgradeable-tooling.js","sourceRoot":"","sources":["../../../../lib/modules/manager/asdf/upgradeable-tooling.ts"],"names":[],"mappings":";;;;AAAA,+CAA4C;AAC5C,gEAAsE;AACtE,oDAA2D;AAC3D,oEAA0E;AAC1E,sEAA4E;AAC5E,sEAA4E;AAC5E,8DAAoE;AACpE,0DAAgE;AAChE,gEAAsE;AACtE,gEAAsE;AACtE,8CAAqD;AACrD,gDAAuD;AACvD,gEAAsE;AACtE,gFAA0D;AAC1D,kFAA4D;AAc5D,MAAM,cAAc,GAAsB;IACxC,mDAAmD;IACnD,aAAa,EAAE,qCAAqC;IACpD,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACpB,UAAU,EAAE,0CAAwB,CAAC,EAAE;QACvC,WAAW,EAAE,eAAe;QAC5B,cAAc,EAAE,oBAAoB;QACpC,2DAA2D;QAC3D,uDAAuD;QACvD,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;KAChD,CAAC;CACH,CAAC;AAEW,QAAA,kBAAkB,GAAsC;IACnE,GAAG,EAAE;QACH,aAAa,EAAE,wCAAwC;QACvD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,YAAY;YACzB,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,UAAU,EAAE;QACV,aAAa,EAAE,+CAA+C;QAC9D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,kBAAkB;YAC/B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,WAAW,EAAE;QACX,aAAa,EAAE,4CAA4C;QAC3D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,kBAAkB;SAChC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,wCAAwC;QACvD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,kBAAkB;YAC/B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,qBAAqB,EAAE;QACrB,aAAa,EAAE,uDAAuD;QACtE,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,oCAAoC;YACjD,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,0CAA0C;QACzD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,kBAAkB;YAC/B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,2CAA2C;QAC1D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,aAAa;SAC3B;KACF;IACD,GAAG,EAAE;QACH,aAAa,EAAE,sCAAsC;QACrD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,aAAa;YAC1B,cAAc,EAAE,wBAAwB;SACzC;KACF;IACD,YAAY,EAAE;QACZ,aAAa,EAAE,iDAAiD;QAChE,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,wBAAwB;SACtC;KACF;IACD,OAAO,EAAE;QACP,aAAa,EAAE,4CAA4C;QAC3D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,sBAAsB;SACpC;KACF;IACD,OAAO,EAAE;QACP,aAAa,EAAE,gDAAgD;QAC/D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,sBAAsB;YACnC,UAAU,EAAE,GAAG,eAAe,CAAC,EAAE,wEAAwE;SAC1G;KACF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,0CAA0C;QACzD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,4BAA4B;YACzC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,YAAY,EAAE;QACZ,aAAa,EAAE,oDAAoD;QACnE,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,2BAA2B;YACxC,UAAU,EAAE,gBAAgB,CAAC,EAAE;SAChC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,qCAAqC;QACpD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,iBAAiB;YAC9B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,OAAO,EAAE;QACP,aAAa,EAAE,gDAAgD;QAC/D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,sBAAsB;SACpC;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,2CAA2C;QAC1D,MAAM,EAAE;YACN,UAAU,EAAE,oCAAqB,CAAC,EAAE;SACrC;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,6CAA6C;QAC5D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,+CAA+C;QAC9D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,aAAa,EAAE;QACb,aAAa,EAAE,mDAAmD;QAClE,MAAM,EAAE;YACN,UAAU,EAAE,wCAAuB,CAAC,EAAE;YACtC,WAAW,EAAE,YAAY;SAC1B;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,+CAA+C;QAC9D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,eAAe;SAC7B;KACF;IACD,SAAS,EAAE;QACT,aAAa,EAAE,yCAAyC;QACxD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,iBAAiB;YAC9B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,sBAAsB,EAAE;QACtB,aAAa,EAAE,wDAAwD;QACvE,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,2CAA2C;YACxD,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,wCAAwC;QACvD,MAAM,EAAE;YACN,UAAU,EAAE,8BAAkB,CAAC,EAAE;SAClC;KACF;IACD,GAAG,EAAE;QACH,aAAa,EAAE,4CAA4C;QAC3D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,cAAc;SAC5B;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,wCAAwC;QACvD,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,YAAY;YACzB,cAAc,EAAE,uBAAuB;YACvC,UAAU,EAAE,GAAG,eAAe,CAAC,EAAE,0DAA0D;SAC5F;KACF;IACD,OAAO,EAAE;QACP,aAAa,EAAE,qCAAqC;QACpD,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACpB,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,0DAA0D;YAC1D,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC;SAChE,CAAC;KACH;IACD,KAAK,EAAE;QACL,aAAa,EAAE,2CAA2C;QAC1D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,cAAc;YAC3B,cAAc,EAAE,kBAAkB;SACnC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,uCAAuC;QACtD,MAAM,EAAE;YACN,UAAU,EAAE,yBAAgB,CAAC,EAAE;YAC/B,WAAW,EAAE,wBAAwB;SACtC;KACF;IACD,YAAY,EAAE;QACZ,aAAa,EAAE,wDAAwD;QACvE,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,SAAS;YACtB,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,2CAA2C;QAC1D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,mBAAmB;YAChC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,kDAAkD;QACjE,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,kBAAkB;YAC/B,cAAc,EAAE,kBAAkB;SACnC;KACF;IACD,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,uCAAuC;QACtD,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,WAAW;YACxB,cAAc,EAAE,qBAAqB;SACtC;KACF;IACD,eAAe,EAAE;QACf,aAAa,EAAE,qDAAqD;QACpE,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,wBAAwB;YACrC,cAAc,EAAE,kBAAkB;SACnC;KACF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,8CAA8C;QAC7D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,yBAAyB;YACtC,cAAc,EAAE,kBAAkB;SACnC;KACF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,8CAA8C;QAC7D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,mBAAmB;YAChC,cAAc,EAAE,kBAAkB;SACnC;KACF;IACD,OAAO,EAAE;QACP,aAAa,EAAE,gDAAgD;QAC/D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,SAAS;YACtB,cAAc,EAAE,gCAAgC;SACjD;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,4CAA4C;QAC3D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,WAAW;YACxB,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,yCAAyC;QACxD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,mBAAmB;YAChC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE;QACL,aAAa,EAAE,8CAA8C;QAC7D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,sBAAsB;YACnC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,oDAAoD;QACnE,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,aAAa;YAC1B,UAAU,EAAE,gBAAgB,CAAC,EAAE;SAChC;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,sCAAsC;QACrD,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;YAClB,MAAM,mBAAmB,GAAG,iCAAiC,CAAC,IAAI,CAChE,OAAO,CACR,EAAE,MAAM,CAAC;YACV,IAAI,mBAAmB,EAAE,CAAC;gBACxB,OAAO;oBACL,UAAU,EAAE,oCAAqB,CAAC,EAAE;oBACpC,WAAW,EAAE,UAAU;oBACvB,YAAY,EAAE,mBAAmB,CAAC,OAAO;iBAC1C,CAAC;YACJ,CAAC;YACD,MAAM,mBAAmB,GAAG,qCAAqC,CAAC,IAAI,CACpE,OAAO,CACR,EAAE,MAAM,CAAC;YACV,IAAI,mBAAmB,EAAE,CAAC;gBACxB,OAAO;oBACL,UAAU,EAAE,oCAAqB,CAAC,EAAE;oBACpC,WAAW,EAAE,UAAU;oBACvB,YAAY,EAAE,mBAAmB,CAAC,OAAO;iBAC1C,CAAC;YACJ,CAAC;YACD,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,IAAI,CACzD,OAAO,CACR,EAAE,MAAM,CAAC;YACV,IAAI,iBAAiB,EAAE,CAAC;gBACtB,OAAO;oBACL,UAAU,EAAE,oCAAqB,CAAC,EAAE;oBACpC,WAAW,EAAE,UAAU;oBACvB,YAAY,EAAE,iBAAiB,CAAC,OAAO;iBACxC,CAAC;YACJ,CAAC;YACD,MAAM,iBAAiB,GAAG,gCAAgC,CAAC,IAAI,CAC7D,OAAO,CACR,EAAE,MAAM,CAAC;YACV,IAAI,iBAAiB,EAAE,CAAC;gBACtB,OAAO;oBACL,UAAU,EAAE,oCAAqB,CAAC,EAAE;oBACpC,WAAW,EAAE,UAAU;oBACvB,YAAY,EAAE,iBAAiB,CAAC,OAAO;iBACxC,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,sCAAsC;QACrD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,iBAAiB;YAC9B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,yCAAyC;QACxD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,YAAY;SAC1B;KACF;IACD,GAAG,EAAE;QACH,aAAa,EAAE,kCAAkC;QACjD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,YAAY;YACzB,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,yCAAyC;QACxD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,sBAAsB;YACnC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,+CAA+C;QAC9D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,kBAAkB;YAC/B,cAAc,EAAE,8BAA8B;SAC/C;KACF;IACD,OAAO,EAAE;QACP,aAAa,EAAE,2CAA2C;QAC1D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,uBAAuB;YACpC,cAAc,EAAE,kBAAkB;SACnC;KACF;IACD,SAAS,EAAE;QACT,aAAa,EAAE,yCAAyC;QACxD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,2BAA2B;YACxC,cAAc,EAAE,8BAA8B;SAC/C;KACF;IACD,GAAG,EAAE;QACH,aAAa,EAAE,uCAAuC;QACtD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,SAAS;YACtB,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,mBAAmB,EAAE;QACnB,aAAa,EACX,iEAAiE;QACnE,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,8BAA8B;YAC3C,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,uCAAuC;QACtD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,cAAc;SAC5B;KACF;IACD,SAAS,EAAE;QACT,aAAa,EAAE,kDAAkD;QACjE,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,yBAAyB;SAC1C;KACF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,+CAA+C;QAC9D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,qBAAqB;YAClC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,GAAG,EAAE;QACH,aAAa,EAAE,4CAA4C;QAC3D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,cAAc;YAC3B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,wCAAwC;QACvD,MAAM,EAAE;YACN,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,oCAAqB,CAAC,EAAE;SACrC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,8CAA8C;QAC7D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,aAAa;SAC3B;KACF;IACD,GAAG,EAAE;QACH,aAAa,EAAE,oCAAoC;QACnD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,gBAAgB;YAC7B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,8CAA8C;QAC7D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,mBAAmB;YAChC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,kDAAkD;QACjE,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,kBAAkB;YAC/B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,oCAAoC;QACnD,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,YAAY;YACzB,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,GAAG,EAAE;QACH,aAAa,EAAE,4CAA4C;QAC3D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,aAAa;YAC1B,cAAc,EAAE,uBAAuB;SACxC;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,6CAA6C;QAC5D,MAAM,EAAE;YACN,UAAU,EAAE,mBAAa,CAAC,EAAE;YAC5B,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,gBAAgB,CAAC,EAAE;SAChC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,+CAA+C;QAC9D,MAAM,EAAE;YACN,UAAU,EAAE,qBAAc,CAAC,EAAE;YAC7B,WAAW,EAAE,QAAQ;SACtB;KACF;IACD,YAAY,EAAE;QACZ,aAAa,EAAE,uDAAuD;QACtE,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,uBAAuB;YACpC,cAAc,EAAE,kBAAkB;SACnC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,gDAAgD;QAC/D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,0BAA0B;YACvC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,0CAA0C;QACzD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,wCAAwC;QACvD,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,gBAAgB;YAC7B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,6CAA6C;QAC5D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,eAAe;SAC7B;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,sCAAsC;QACrD,MAAM,EAAE;YACN,UAAU,EAAE,oCAAqB,CAAC,EAAE;YACpC,WAAW,EAAE,cAAc;YAC3B,UAAU,EAAE,gBAAgB,CAAC,EAAE;SAChC;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,yCAAyC;QACxD,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,gBAAgB;SAC9B;KACF;IACD,GAAG,EAAE;QACH,aAAa,EAAE,0CAA0C;QACzD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,SAAS;YACtB,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,8CAA8C;QAC7D,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO;oBACL,UAAU,EAAE,kCAAoB,CAAC,EAAE;oBACnC,WAAW,EAAE,aAAa;oBAC1B,cAAc,EAAE,oBAAoB;iBACrC,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO;oBACL,UAAU,EAAE,kCAAoB,CAAC,EAAE;oBACnC,WAAW,EAAE,gBAAgB;iBAC9B,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;KACF;IACD,UAAU,EAAE;QACV,aAAa,EAAE,0CAA0C;QACzD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,qBAAqB;YAClC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,qCAAqC;QACpD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,UAAU;YACvB,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,qCAAqC;QACpD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,cAAc;YAC3B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,SAAS,EAAE;QACT,aAAa,EAAE,6CAA6C;QAC5D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,kBAAkB;YAC/B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,SAAS,EAAE;QACT,aAAa,EAAE,kDAAkD;QACjE,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,qBAAqB;YAClC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,gBAAgB,EAAE;QAChB,aAAa,EAAE,oDAAoD;QACnE,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,+BAA+B;YAC5C,cAAc,EAAE,kBAAkB;SACnC;KACF;IACD,UAAU,EAAE;QACV,aAAa,EAAE,0CAA0C;QACzD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,yBAAyB;YACtC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,2CAA2C;QAC1D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,0BAA0B;YACvC,cAAc,EAAE,kBAAkB;SACnC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,2CAA2C;QAC1D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,oBAAoB;YACjC,cAAc,EAAE,kBAAkB;SACnC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,+CAA+C;QAC9D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,oBAAoB;YACjC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,kDAAkD;QACjE,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,iBAAiB;YAC9B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,kDAAkD;QACjE,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,sBAAsB;YACnC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,EAAE,EAAE;QACF,aAAa,EAAE,uCAAuC;QACtD,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,cAAc;YAC3B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,GAAG,EAAE;QACH,aAAa,EAAE,qCAAqC;QACpD,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,aAAa;SAC3B;KACF;IACD,OAAO,EAAE;QACP,aAAa,EAAE,+CAA+C;QAC9D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,wBAAwB;YACrC,cAAc,EAAE,uBAAuB;SACxC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,8CAA8C;QAC7D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,MAAM,EAAE;QACN,aAAa,EAAE,+CAA+C;QAC9D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,kBAAkB;SAChC;KACF;IACD,OAAO,EAAE;QACP,aAAa,EAAE,8CAA8C;QAC7D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,gBAAgB;YAC7B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,8CAA8C;QAC7D,MAAM,EAAE;YACN,UAAU,EAAE,kCAAoB,CAAC,EAAE;YACnC,WAAW,EAAE,aAAa;SAC3B;KACF;IACD,KAAK,EAAE;QACL,aAAa,EAAE,2CAA2C;QAC1D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,gBAAgB;YAC7B,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,EAAE,EAAE;QACF,aAAa,EAAE,2CAA2C;QAC1D,MAAM,EAAE;YACN,UAAU,EAAE,0CAAwB,CAAC,EAAE;YACvC,WAAW,EAAE,cAAc;SAC5B;KACF;CACF,CAAC","sourcesContent":["import { regEx } from '../../../util/regex';\nimport { DartVersionDatasource } from '../../datasource/dart-version';\nimport { DockerDatasource } from '../../datasource/docker';\nimport { DotnetVersionDatasource } from '../../datasource/dotnet-version';\nimport { FlutterVersionDatasource } from '../../datasource/flutter-version';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases';\nimport { GithubTagsDatasource } from '../../datasource/github-tags';\nimport { HexpmBobDatasource } from '../../datasource/hexpm-bob';\nimport { JavaVersionDatasource } from '../../datasource/java-version';\nimport { NodeVersionDatasource } from '../../datasource/node-version';\nimport { NpmDatasource } from '../../datasource/npm';\nimport { PypiDatasource } from '../../datasource/pypi';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version';\nimport * as regexVersioning from '../../versioning/regex';\nimport * as semverVersioning from '../../versioning/semver';\nimport type { PackageDependency } from '../types';\n\nexport type StaticTooling = Partial<PackageDependency> &\n Required<Pick<PackageDependency, 'datasource'>>;\n\nexport type DynamicTooling = (version: string) => StaticTooling | undefined;\n\nexport type ToolingConfig = StaticTooling | DynamicTooling;\nexport interface ToolingDefinition {\n config: ToolingConfig;\n asdfPluginUrl: string;\n}\n\nconst hugoDefinition: ToolingDefinition = {\n // This plugin supports the names `hugo` & `gohugo`\n asdfPluginUrl: 'https://github.com/NeoHsu/asdf-hugo',\n config: (version) => ({\n datasource: GithubReleasesDatasource.id,\n packageName: 'gohugoio/hugo',\n extractVersion: '^v(?<version>\\\\S+)',\n // The asdf hugo plugin supports prefixing the version with\n // `extended_`. Extended versions feature Sass support.\n currentValue: version.replace(/^extended_/, ''),\n }),\n};\n\nexport const upgradeableTooling: Record<string, ToolingDefinition> = {\n act: {\n asdfPluginUrl: 'https://github.com/grimoh/asdf-act.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'nektos/act',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n actionlint: {\n asdfPluginUrl: 'https://github.com/crazy-matt/asdf-actionlint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'rhysd/actionlint',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'adr-tools': {\n asdfPluginUrl: 'https://gitlab.com/td7x/asdf/adr-tools.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'npryce/adr-tools',\n },\n },\n argocd: {\n asdfPluginUrl: 'https://github.com/beardix/asdf-argocd',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'argoproj/argo-cd',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'asdf-plugin-manager': {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-plugin-manager',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'asdf-community/asdf-plugin-manager',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n atmos: {\n asdfPluginUrl: 'https://github.com/cloudposse/asdf-atmos',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cloudposse/atmos',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n awscli: {\n asdfPluginUrl: 'https://github.com/MetricMike/asdf-awscli',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'aws/aws-cli',\n },\n },\n bun: {\n asdfPluginUrl: 'https://github.com/cometkim/asdf-bun',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'oven-sh/bun',\n extractVersion: '^bun-v(?<version>\\\\S+)',\n },\n },\n 'cargo-make': {\n asdfPluginUrl: 'https://github.com/mise-plugins/asdf-cargo-make',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sagiegurari/cargo-make',\n },\n },\n checkov: {\n asdfPluginUrl: 'https://github.com/bosmak/asdf-checkov.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'bridgecrewio/checkov',\n },\n },\n clojure: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-clojure',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'clojure/brew-install',\n versioning: `${regexVersioning.id}:^(?<major>\\\\d+?)\\\\.(?<minor>\\\\d+?)\\\\.(?<patch>\\\\d+)\\\\.(?<build>\\\\d+)$`,\n },\n },\n conftest: {\n asdfPluginUrl: 'https://github.com/looztra/asdf-conftest',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'open-policy-agent/conftest',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n cookiecutter: {\n asdfPluginUrl: 'https://github.com/shawon-crosen/asdf-cookiecutter',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cookiecutter/cookiecutter',\n versioning: semverVersioning.id,\n },\n },\n cosign: {\n asdfPluginUrl: 'https://gitlab.com/wt0f/asdf-cosign',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n crystal: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-crystal',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'crystal-lang/crystal',\n },\n },\n dart: {\n asdfPluginUrl: 'https://github.com/PatOConnor43/asdf-dart',\n config: {\n datasource: DartVersionDatasource.id,\n },\n },\n deno: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-deno',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'denoland/deno',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n direnv: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-direnv',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'direnv/direnv',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'dotnet-core': {\n asdfPluginUrl: 'https://github.com/emersonsoares/asdf-dotnet-core',\n config: {\n datasource: DotnetVersionDatasource.id,\n packageName: 'dotnet-sdk',\n },\n },\n dprint: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-dprint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'dprint/dprint',\n },\n },\n ecspresso: {\n asdfPluginUrl: 'https://github.com/kayac/asdf-ecspresso',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kayac/ecspresso',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'editorconfig-checker': {\n asdfPluginUrl: 'https://github.com/gabitchov/asdf-editorconfig-checker',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'editorconfig-checker/editorconfig-checker',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n elixir: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-elixir',\n config: {\n datasource: HexpmBobDatasource.id,\n },\n },\n elm: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-elm',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'elm/compiler',\n },\n },\n erlang: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-erlang',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'erlang/otp',\n extractVersion: '^OTP-(?<version>\\\\S+)',\n versioning: `${regexVersioning.id}:^(?<major>\\\\d+?)\\\\.(?<minor>\\\\d+?)(\\\\.(?<patch>\\\\d+))?$`,\n },\n },\n flutter: {\n asdfPluginUrl: 'https://github.com/oae/asdf-flutter',\n config: (version) => ({\n datasource: FlutterVersionDatasource.id,\n // asdf-flutter plugin supports channel on version suffix.\n currentValue: version.replace(regEx(/-(stable|beta|dev)$/), ''),\n }),\n },\n flux2: {\n asdfPluginUrl: 'https://github.com/tablexi/asdf-flux2.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'fluxcd/flux2',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gauche: {\n asdfPluginUrl: 'https://github.com/sakuro/asdf-gauche',\n config: {\n datasource: DockerDatasource.id,\n packageName: 'practicalscheme/gauche',\n },\n },\n 'github-cli': {\n asdfPluginUrl: 'https://github.com/bartlomiejdanek/asdf-github-cli.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cli/cli',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n gitleaks: {\n asdfPluginUrl: 'https://github.com/jmcvetta/asdf-gitleaks',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'gitleaks/gitleaks',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n gleam: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-gleam.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'gleam-lang/gleam',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gohugo: hugoDefinition,\n golang: {\n asdfPluginUrl: 'https://github.com/kennyp/asdf-golang',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'golang/go',\n extractVersion: '^go(?<version>\\\\S+)',\n },\n },\n 'golangci-lint': {\n asdfPluginUrl: 'https://github.com/hypnoglow/asdf-golangci-lint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'golangci/golangci-lint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gomplate: {\n asdfPluginUrl: 'https://github.com/sneakybeaky/asdf-gomplate',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hairyhenderson/gomplate',\n extractVersion: '^v(?<version>.+)',\n },\n },\n hadolint: {\n asdfPluginUrl: 'https://github.com/looztra/asdf-hadolint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'hadolint/hadolint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n haskell: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-haskell',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'ghc/ghc',\n extractVersion: '^ghc-(?<version>\\\\S+?)-release',\n },\n },\n helm: {\n asdfPluginUrl: 'https://github.com/Antiarchitect/asdf-helm',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'helm/helm',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n helmfile: {\n asdfPluginUrl: 'https://github.com/feniix/asdf-helmfile',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'helmfile/helmfile',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n hugo: hugoDefinition,\n idris: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-idris',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'idris-lang/Idris-dev',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n istioctl: {\n asdfPluginUrl: 'https://github.com/virtualstaticvoid/asdf-istioctl',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'istio/istio',\n versioning: semverVersioning.id,\n },\n },\n java: {\n asdfPluginUrl: 'https://github.com/halcyon/asdf-java',\n config: (version) => {\n const adoptOpenJdkMatches = /^adoptopenjdk-(?<version>\\d\\S+)/.exec(\n version,\n )?.groups;\n if (adoptOpenJdkMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jdk',\n currentValue: adoptOpenJdkMatches.version,\n };\n }\n const adoptOpenJreMatches = /^adoptopenjdk-jre-(?<version>\\d\\S+)/.exec(\n version,\n )?.groups;\n if (adoptOpenJreMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jre',\n currentValue: adoptOpenJreMatches.version,\n };\n }\n const temurinJdkMatches = /^temurin-(?<version>\\d\\S+)/.exec(\n version,\n )?.groups;\n if (temurinJdkMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jdk',\n currentValue: temurinJdkMatches.version,\n };\n }\n const temurinJreMatches = /^temurin-jre-(?<version>\\d\\S+)/.exec(\n version,\n )?.groups;\n if (temurinJreMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jre',\n currentValue: temurinJreMatches.version,\n };\n }\n\n return undefined;\n },\n },\n julia: {\n asdfPluginUrl: 'https://github.com/rkyleg/asdf-julia',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'JuliaLang/julia',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n just: {\n asdfPluginUrl: 'https://github.com/olofvndrhr/asdf-just',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'casey/just',\n },\n },\n k3s: {\n asdfPluginUrl: 'https://github.com/dmpe/asdf-k3s',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'k3s-io/k3s',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n kind: {\n asdfPluginUrl: 'https://github.com/johnlayton/asdf-kind',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes-sigs/kind',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n kotlin: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-kotlin',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'JetBrains/kotlin',\n extractVersion: '^(Kotlin |v)(?<version>\\\\S+)',\n },\n },\n kubectl: {\n asdfPluginUrl: 'https://github.com/Banno/asdf-kubectl.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'kubernetes/kubernetes',\n extractVersion: '^v(?<version>.+)',\n },\n },\n kustomize: {\n asdfPluginUrl: 'https://github.com/Banno/asdf-kustomize',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes-sigs/kustomize',\n extractVersion: '^kustomize/v(?<version>\\\\S+)',\n },\n },\n lua: {\n asdfPluginUrl: 'https://github.com/Stratus3D/asdf-lua',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'lua/lua',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'markdownlint-cli2': {\n asdfPluginUrl:\n 'https://github.com/paulo-ferraz-oliveira/asdf-markdownlint-cli2',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'DavidAnson/markdownlint-cli2',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n maven: {\n asdfPluginUrl: 'https://github.com/halcyon/asdf-maven',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'apache/maven',\n },\n },\n mimirtool: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-mimirtool',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'grafana/mimir',\n extractVersion: '^mimir-(?<version>\\\\S+)',\n },\n },\n minikube: {\n asdfPluginUrl: 'https://github.com/alvarobp/asdf-minikube.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes/minikube',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n nim: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-nim',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'nim-lang/Nim',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n nodejs: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-nodejs',\n config: {\n depName: 'node',\n datasource: NodeVersionDatasource.id,\n },\n },\n ocaml: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-ocaml',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'ocaml/ocaml',\n },\n },\n oci: {\n asdfPluginUrl: 'https://github.com/yasn77/asdf-oci',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'oracle/oci-cli',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n opentofu: {\n asdfPluginUrl: 'https://github.com/virtualroot/asdf-opentofu',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'opentofu/opentofu',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n packer: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/packer',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n perl: {\n asdfPluginUrl: 'https://github.com/ouest/asdf-perl',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'Perl/perl5',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n php: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-php',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'php/php-src',\n extractVersion: '^php-(?<version>\\\\S+)',\n },\n },\n pnpm: {\n asdfPluginUrl: 'https://github.com/jonathanmorley/asdf-pnpm',\n config: {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n versioning: semverVersioning.id,\n },\n },\n poetry: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-poetry',\n config: {\n datasource: PypiDatasource.id,\n packageName: 'poetry',\n },\n },\n 'pre-commit': {\n asdfPluginUrl: 'https://github.com/jonathanmorley/asdf-pre-commit.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'pre-commit/pre-commit',\n extractVersion: '^v(?<version>.+)',\n },\n },\n protoc: {\n asdfPluginUrl: 'https://github.com/paxosglobal/asdf-protoc.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'protocolbuffers/protobuf',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n pulumi: {\n asdfPluginUrl: 'https://github.com/canha/asdf-pulumi.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pulumi/pulumi',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n python: {\n asdfPluginUrl: 'https://github.com/danhper/asdf-python',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'python/cpython',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n rebar: {\n asdfPluginUrl: 'https://github.com/Stratus3D/asdf-rebar.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'erlang/rebar3',\n },\n },\n ruby: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-ruby',\n config: {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby-version',\n versioning: semverVersioning.id,\n },\n },\n rust: {\n asdfPluginUrl: 'https://github.com/code-lever/asdf-rust',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'rust-lang/rust',\n },\n },\n sbt: {\n asdfPluginUrl: 'https://github.com/bram2000/asdf-sbt.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sbt/sbt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n scala: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-scala',\n config: (version) => {\n if (version.startsWith('2')) {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: 'scala/scala',\n extractVersion: '^v(?<version>\\\\S+)',\n };\n }\n if (version.startsWith('3')) {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: 'lampepfl/dotty',\n };\n }\n\n return undefined;\n },\n },\n shellcheck: {\n asdfPluginUrl: 'https://github.com/luizm/asdf-shellcheck',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'koalaman/shellcheck',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n shfmt: {\n asdfPluginUrl: 'https://github.com/luizm/asdf-shfmt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mvdan/sh',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n sops: {\n asdfPluginUrl: 'https://github.com/feniix/asdf-sops',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mozilla/sops',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n steampipe: {\n asdfPluginUrl: 'https://github.com/carnei-ro/asdf-steampipe',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'turbot/steampipe',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n terraform: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/terraform',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'terraform-docs': {\n asdfPluginUrl: 'https://github.com/looztra/asdf-terraform-docs.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'terraform-docs/terraform-docs',\n extractVersion: '^v(?<version>.+)',\n },\n },\n terragrunt: {\n asdfPluginUrl: 'https://github.com/ohmer/asdf-terragrunt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'gruntwork-io/terragrunt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n tflint: {\n asdfPluginUrl: 'https://github.com/skyzyx/asdf-tflint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'terraform-linters/tflint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n tfsec: {\n asdfPluginUrl: 'https://github.com/woneill/asdf-tfsec.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'aquasecurity/tfsec',\n extractVersion: '^v(?<version>.+)',\n },\n },\n trivy: {\n asdfPluginUrl: 'https://github.com/zufardhiyaulhaq/asdf-trivy',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n vault: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/vault',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n yamllint: {\n asdfPluginUrl: 'https://github.com/ericcornelissen/asdf-yamllint',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'adrienverge/yamllint',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n yq: {\n asdfPluginUrl: 'https://github.com/sudermanjr/asdf-yq',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mikefarah/yq',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n zig: {\n asdfPluginUrl: 'https://github.com/cheetah/asdf-zig',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'ziglang/zig',\n },\n },\n maestro: {\n asdfPluginUrl: 'https://github.com/dotanuki-labs/asdf-maestro',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mobile-dev-inc/maestro',\n extractVersion: '^cli-(?<version>\\\\S+)',\n },\n },\n detekt: {\n asdfPluginUrl: 'https://github.com/dotanuki-labs/asdf-detekt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'detekt/detekt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n ktlint: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-ktlint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pinterest/ktlint',\n },\n },\n yamlfmt: {\n asdfPluginUrl: 'https://github.com/mise-plugins/asdf-yamlfmt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'google/yamlfmt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n tuist: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-tuist',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'tuist/tuist',\n },\n },\n typos: {\n asdfPluginUrl: 'https://github.com/aschiavon91/asdf-typos',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'crate-ci/typos',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n uv: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-uv',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'astral-sh/uv',\n },\n },\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/batect/extract.ts"],"names":[],"mappings":";;AAOA,gDAyBC;AAED,wDAgCC;;AAlED,0DAA0B;AAC1B,4CAAyC;AACzC,yCAAiD;AAEjD,qCAA8C;AAG9C,SAAgB,kBAAkB,CAChC,OAAe,EACf,WAAmB;IAEnB,eAAM,CAAC,KAAK,CAAC,6BAA6B,WAAW,GAAG,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAC3D,2BAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,eAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,qBAAqB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtD,eAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAC1B,CAAC;QAEF,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,WAAW,EAAE,EACpB,+DAA+D,CAChE,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,MAAqB,EACrB,YAAsB;IAEtB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,YAAY,CAAC,CAAC;IACrD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,OAAO,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC;QACnE,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACnC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEtC,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAa,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACzD,cAAc;QACd,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAQ,EAAE,WAAW,CAAC,CAAC;QAEzD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,IAAI,CAAC;gBACX,WAAW;gBACX,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import upath from 'upath';\nimport { logger } from '../../../logger';\nimport { readLocalFile } from '../../../util/fs';\nimport type { ExtractConfig, PackageFile } from '../types';\nimport { BatectConfigSchema } from './schema';\nimport type { ExtractionResult } from './types';\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): ExtractionResult | null {\n logger.trace(`batect.extractPackageFile(${packageFile})`);\n\n try {\n const { imageDependencies, bundleDependencies, fileIncludes } =\n BatectConfigSchema.parse(content);\n const deps = [...imageDependencies, ...bundleDependencies];\n\n const dirName = upath.dirname(packageFile);\n const referencedConfigFiles = fileIncludes.map((file) =>\n upath.join(dirName, file),\n );\n\n return { deps, referencedConfigFiles };\n } catch (err) {\n logger.debug(\n { err, packageFile },\n 'Extracting dependencies from Batect configuration file failed',\n );\n\n return null;\n }\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const filesToExamine = new Set<string>(packageFiles);\n const filesAlreadyExamined = new Set<string>();\n const results: PackageFile[] = [];\n\n while (filesToExamine.size > 0) {\n const packageFile = filesToExamine.values().next().value as string;\n filesToExamine.delete(packageFile);\n filesAlreadyExamined.add(packageFile);\n\n const content = await readLocalFile(packageFile, 'utf8');\n // TODO #22198\n const result = extractPackageFile(content!, packageFile);\n\n if (result !== null) {\n result.referencedConfigFiles.forEach((f) => {\n if (!filesAlreadyExamined.has(f) && !filesToExamine.has(f)) {\n filesToExamine.add(f);\n }\n });\n\n results.push({\n packageFile,\n deps: result.deps,\n });\n }\n }\n\n return results;\n}\n"]}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/batect/extract.ts"],"names":[],"mappings":";;AAOA,gDAyBC;AAED,wDAgCC;;AAlED,0DAA0B;AAC1B,4CAAyC;AACzC,yCAAiD;AAEjD,qCAA8C;AAG9C,SAAgB,kBAAkB,CAChC,OAAe,EACf,WAAmB;IAEnB,eAAM,CAAC,KAAK,CAAC,6BAA6B,WAAW,GAAG,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAC3D,2BAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,eAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,qBAAqB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtD,eAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAC1B,CAAC;QAEF,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,WAAW,EAAE,EACpB,+DAA+D,CAChE,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,MAAqB,EACrB,YAAsB;IAEtB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,YAAY,CAAC,CAAC;IACrD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,OAAO,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC;QAC1D,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACnC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEtC,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAa,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACzD,cAAc;QACd,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAQ,EAAE,WAAW,CAAC,CAAC;QAEzD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,IAAI,CAAC;gBACX,WAAW;gBACX,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import upath from 'upath';\nimport { logger } from '../../../logger';\nimport { readLocalFile } from '../../../util/fs';\nimport type { ExtractConfig, PackageFile } from '../types';\nimport { BatectConfigSchema } from './schema';\nimport type { ExtractionResult } from './types';\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): ExtractionResult | null {\n logger.trace(`batect.extractPackageFile(${packageFile})`);\n\n try {\n const { imageDependencies, bundleDependencies, fileIncludes } =\n BatectConfigSchema.parse(content);\n const deps = [...imageDependencies, ...bundleDependencies];\n\n const dirName = upath.dirname(packageFile);\n const referencedConfigFiles = fileIncludes.map((file) =>\n upath.join(dirName, file),\n );\n\n return { deps, referencedConfigFiles };\n } catch (err) {\n logger.debug(\n { err, packageFile },\n 'Extracting dependencies from Batect configuration file failed',\n );\n\n return null;\n }\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const filesToExamine = new Set<string>(packageFiles);\n const filesAlreadyExamined = new Set<string>();\n const results: PackageFile[] = [];\n\n while (filesToExamine.size > 0) {\n const packageFile = filesToExamine.values().next().value!;\n filesToExamine.delete(packageFile);\n filesAlreadyExamined.add(packageFile);\n\n const content = await readLocalFile(packageFile, 'utf8');\n // TODO #22198\n const result = extractPackageFile(content!, packageFile);\n\n if (result !== null) {\n result.referencedConfigFiles.forEach((f) => {\n if (!filesAlreadyExamined.has(f) && !filesToExamine.has(f)) {\n filesToExamine.add(f);\n }\n });\n\n results.push({\n packageFile,\n deps: result.deps,\n });\n }\n }\n\n return results;\n}\n"]}
@@ -13,11 +13,11 @@ const common_1 = require("./common");
13
13
  const http = new http_1.Http('bazel');
14
14
  function getUrlFragments(rule) {
15
15
  const urls = [];
16
- const urlRecord = rule.children['url'];
16
+ const urlRecord = rule.children.url;
17
17
  if (urlRecord?.type === 'string') {
18
18
  urls.push(urlRecord);
19
19
  }
20
- const urlsRecord = rule.children['urls'];
20
+ const urlsRecord = rule.children.urls;
21
21
  if (urlsRecord?.type === 'array') {
22
22
  for (const urlRecord of urlsRecord.children) {
23
23
  if (urlRecord.type === 'string') {
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/bazel/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport * as packageCache from '../../../util/cache/package';\nimport { hashStream } from '../../../util/hash';\nimport { Http } from '../../../util/http';\nimport { map as pMap } from '../../../util/promises';\nimport { regEx } from '../../../util/regex';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types';\nimport { findCodeFragment, patchCodeAtFragments, updateCode } from './common';\nimport type { RecordFragment, StringFragment } from './types';\n\nconst http = new Http('bazel');\n\nfunction getUrlFragments(rule: RecordFragment): StringFragment[] {\n const urls: StringFragment[] = [];\n\n const urlRecord = rule.children['url'];\n if (urlRecord?.type === 'string') {\n urls.push(urlRecord);\n }\n\n const urlsRecord = rule.children['urls'];\n if (urlsRecord?.type === 'array') {\n for (const urlRecord of urlsRecord.children) {\n if (urlRecord.type === 'string') {\n urls.push(urlRecord);\n }\n }\n }\n\n return urls;\n}\n\nconst urlMassages = {\n 'bazel-skylib.': 'bazel_skylib-',\n '/bazel-gazelle/releases/download/0': '/bazel-gazelle/releases/download/v0',\n '/bazel-gazelle-0': '/bazel-gazelle-v0',\n '/rules_go/releases/download/0': '/rules_go/releases/download/v0',\n '/rules_go-0': '/rules_go-v0',\n};\n\nfunction massageUrl(url: string): string {\n let result = url;\n for (const [from, to] of Object.entries(urlMassages)) {\n result = result.replace(from, to);\n }\n return result;\n}\n\nfunction replaceAll(input: string, from: string, to: string): string {\n return input.split(from).join(to);\n}\n\nfunction replaceValues(\n content: string,\n from: string | null | undefined,\n to: string | null | undefined,\n): string {\n // istanbul ignore if\n if (!from || !to || from === to) {\n return content;\n }\n const massagedFrom = from.replace(regEx(/^v/), '');\n const massagedTo = to.replace(regEx(/^v/), '');\n return replaceAll(content, massagedFrom, massagedTo);\n}\n\nasync function getHashFromUrl(url: string): Promise<string | null> {\n const cacheNamespace = 'url-sha256';\n const cachedResult = await packageCache.get<string | null>(\n cacheNamespace,\n url,\n );\n /* istanbul ignore next line */\n if (cachedResult) {\n return cachedResult;\n }\n try {\n const hash = await hashStream(http.stream(url), 'sha256');\n const cacheMinutes = 3 * 24 * 60; // 3 days\n await packageCache.set(cacheNamespace, url, hash, cacheMinutes);\n return hash;\n } catch /* istanbul ignore next */ {\n return null;\n }\n}\n\nasync function getHashFromUrls(urls: string[]): Promise<string | null> {\n const hashes = (\n await pMap(urls, (url) => getHashFromUrl(massageUrl(url)))\n ).filter(is.truthy);\n if (!hashes.length) {\n logger.debug({ urls }, 'Could not calculate hash for URLs');\n return null;\n }\n\n const distinctHashes = new Set(hashes);\n // istanbul ignore if\n if (distinctHashes.size > 1) {\n logger.warn({ urls }, 'Found multiple hashes for single def');\n }\n\n return hashes[0];\n}\n\nexport async function updateArtifacts(\n updateArtifact: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n const { packageFileName: path, updatedDeps: upgrades } = updateArtifact;\n let { newPackageFileContent: contents } = updateArtifact;\n for (const upgrade of upgrades) {\n const { managerData } = upgrade;\n const idx = managerData?.idx as number;\n\n if (upgrade.depType === 'http_file' || upgrade.depType === 'http_archive') {\n const rule = findCodeFragment(contents, [idx]);\n // istanbul ignore if\n if (rule?.type !== 'record') {\n return null;\n }\n\n const urlFragments = getUrlFragments(rule);\n if (!urlFragments?.length) {\n logger.debug(`def: ${rule.value}, urls is empty`);\n return null;\n }\n\n const updateValues = (oldUrl: string): string => {\n let url = oldUrl;\n url = replaceValues(url, upgrade.currentValue, upgrade.newValue);\n url = replaceValues(url, upgrade.currentDigest, upgrade.newDigest);\n return url;\n };\n\n const urls = urlFragments.map(({ value }) => updateValues(value));\n const hash = await getHashFromUrls(urls);\n if (!hash) {\n return null;\n }\n\n contents = patchCodeAtFragments(contents, urlFragments, updateValues);\n contents = updateCode(contents, [idx, 'strip_prefix'], updateValues);\n contents = updateCode(contents, [idx, 'sha256'], hash);\n }\n }\n\n return [\n {\n file: {\n type: 'addition',\n path,\n contents,\n },\n },\n ];\n}\n"]}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/bazel/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport * as packageCache from '../../../util/cache/package';\nimport { hashStream } from '../../../util/hash';\nimport { Http } from '../../../util/http';\nimport { map as pMap } from '../../../util/promises';\nimport { regEx } from '../../../util/regex';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types';\nimport { findCodeFragment, patchCodeAtFragments, updateCode } from './common';\nimport type { RecordFragment, StringFragment } from './types';\n\nconst http = new Http('bazel');\n\nfunction getUrlFragments(rule: RecordFragment): StringFragment[] {\n const urls: StringFragment[] = [];\n\n const urlRecord = rule.children.url;\n if (urlRecord?.type === 'string') {\n urls.push(urlRecord);\n }\n\n const urlsRecord = rule.children.urls;\n if (urlsRecord?.type === 'array') {\n for (const urlRecord of urlsRecord.children) {\n if (urlRecord.type === 'string') {\n urls.push(urlRecord);\n }\n }\n }\n\n return urls;\n}\n\nconst urlMassages = {\n 'bazel-skylib.': 'bazel_skylib-',\n '/bazel-gazelle/releases/download/0': '/bazel-gazelle/releases/download/v0',\n '/bazel-gazelle-0': '/bazel-gazelle-v0',\n '/rules_go/releases/download/0': '/rules_go/releases/download/v0',\n '/rules_go-0': '/rules_go-v0',\n};\n\nfunction massageUrl(url: string): string {\n let result = url;\n for (const [from, to] of Object.entries(urlMassages)) {\n result = result.replace(from, to);\n }\n return result;\n}\n\nfunction replaceAll(input: string, from: string, to: string): string {\n return input.split(from).join(to);\n}\n\nfunction replaceValues(\n content: string,\n from: string | null | undefined,\n to: string | null | undefined,\n): string {\n // istanbul ignore if\n if (!from || !to || from === to) {\n return content;\n }\n const massagedFrom = from.replace(regEx(/^v/), '');\n const massagedTo = to.replace(regEx(/^v/), '');\n return replaceAll(content, massagedFrom, massagedTo);\n}\n\nasync function getHashFromUrl(url: string): Promise<string | null> {\n const cacheNamespace = 'url-sha256';\n const cachedResult = await packageCache.get<string | null>(\n cacheNamespace,\n url,\n );\n /* istanbul ignore next line */\n if (cachedResult) {\n return cachedResult;\n }\n try {\n const hash = await hashStream(http.stream(url), 'sha256');\n const cacheMinutes = 3 * 24 * 60; // 3 days\n await packageCache.set(cacheNamespace, url, hash, cacheMinutes);\n return hash;\n } catch /* istanbul ignore next */ {\n return null;\n }\n}\n\nasync function getHashFromUrls(urls: string[]): Promise<string | null> {\n const hashes = (\n await pMap(urls, (url) => getHashFromUrl(massageUrl(url)))\n ).filter(is.truthy);\n if (!hashes.length) {\n logger.debug({ urls }, 'Could not calculate hash for URLs');\n return null;\n }\n\n const distinctHashes = new Set(hashes);\n // istanbul ignore if\n if (distinctHashes.size > 1) {\n logger.warn({ urls }, 'Found multiple hashes for single def');\n }\n\n return hashes[0];\n}\n\nexport async function updateArtifacts(\n updateArtifact: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n const { packageFileName: path, updatedDeps: upgrades } = updateArtifact;\n let { newPackageFileContent: contents } = updateArtifact;\n for (const upgrade of upgrades) {\n const { managerData } = upgrade;\n const idx = managerData?.idx as number;\n\n if (upgrade.depType === 'http_file' || upgrade.depType === 'http_archive') {\n const rule = findCodeFragment(contents, [idx]);\n // istanbul ignore if\n if (rule?.type !== 'record') {\n return null;\n }\n\n const urlFragments = getUrlFragments(rule);\n if (!urlFragments?.length) {\n logger.debug(`def: ${rule.value}, urls is empty`);\n return null;\n }\n\n const updateValues = (oldUrl: string): string => {\n let url = oldUrl;\n url = replaceValues(url, upgrade.currentValue, upgrade.newValue);\n url = replaceValues(url, upgrade.currentDigest, upgrade.newDigest);\n return url;\n };\n\n const urls = urlFragments.map(({ value }) => updateValues(value));\n const hash = await getHashFromUrls(urls);\n if (!hash) {\n return null;\n }\n\n contents = patchCodeAtFragments(contents, urlFragments, updateValues);\n contents = updateCode(contents, [idx, 'strip_prefix'], updateValues);\n contents = updateCode(contents, [idx, 'sha256'], hash);\n }\n }\n\n return [\n {\n file: {\n type: 'addition',\n path,\n contents,\n },\n },\n ];\n}\n"]}
@@ -14,11 +14,10 @@ function findCodeFragment(input, path) {
14
14
  }
15
15
  const [ruleIndex, ...restPath] = path;
16
16
  let fragment = parsed[ruleIndex];
17
- for (let pathIndex = 0; pathIndex < restPath.length; pathIndex += 1) {
17
+ for (const key of restPath) {
18
18
  if (!fragment) {
19
19
  break;
20
20
  }
21
- const key = restPath[pathIndex];
22
21
  if (fragment.type === 'array' && is_1.default.number(key)) {
23
22
  fragment = fragment.children[key];
24
23
  }