renovate 44.93.4 → 44.93.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/global-config-option-defaults.generated.js +1 -1
- package/dist/global-config-option-defaults.generated.js.map +1 -1
- package/dist/modules/manager/bazel/rules/http.js.map +1 -1
- package/dist/modules/manager/cargo/extract.js.map +1 -1
- package/dist/modules/manager/composer/schema.js.map +1 -1
- package/dist/modules/manager/deps-edn/extract.js.map +1 -1
- package/dist/modules/manager/docker-compose/extract.js +1 -1
- package/dist/modules/manager/docker-compose/extract.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +21 -21
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/git-submodules/extract.js +1 -1
- package/dist/modules/manager/git-submodules/extract.js.map +1 -1
- package/dist/modules/manager/github-actions/known-actions.js +11 -1
- package/dist/modules/manager/github-actions/known-actions.js.map +1 -1
- package/dist/modules/manager/glasskube/extract.js +2 -2
- package/dist/modules/manager/glasskube/extract.js.map +1 -1
- package/dist/modules/manager/gomod/artifacts-extra.js.map +1 -1
- package/dist/modules/manager/gradle/extract/catalog.js +2 -0
- package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
- package/dist/modules/manager/gradle/extract/consistent-versions-plugin.js +3 -1
- package/dist/modules/manager/gradle/extract/consistent-versions-plugin.js.map +1 -1
- package/dist/modules/manager/gradle/extract.js +5 -2
- package/dist/modules/manager/gradle/extract.js.map +1 -1
- package/dist/modules/manager/gradle/parser/common.js +2 -0
- package/dist/modules/manager/gradle/parser/common.js.map +1 -1
- package/dist/modules/manager/gradle/parser/handlers.js +9 -0
- package/dist/modules/manager/gradle/parser/handlers.js.map +1 -1
- package/dist/modules/manager/gradle/parser/registry-urls.js +1 -0
- package/dist/modules/manager/gradle/parser/registry-urls.js.map +1 -1
- package/dist/modules/manager/gradle/parser.js +1 -0
- package/dist/modules/manager/gradle/parser.js.map +1 -1
- package/dist/modules/manager/helmfile/artifacts.js +1 -0
- package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
- package/dist/modules/manager/hermit/artifacts.js +1 -0
- package/dist/modules/manager/hermit/artifacts.js.map +1 -1
- package/dist/modules/manager/maven/extract.js +14 -4
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/maven/update.js +3 -0
- package/dist/modules/manager/maven/update.js.map +1 -1
- package/dist/modules/manager/mix/artifacts.js +6 -1
- package/dist/modules/manager/mix/artifacts.js.map +1 -1
- package/dist/modules/manager/nuget/config-formatter.js +2 -0
- package/dist/modules/manager/nuget/config-formatter.js.map +1 -1
- package/dist/modules/manager/nuget/extract.js +2 -0
- package/dist/modules/manager/nuget/extract.js.map +1 -1
- package/dist/modules/manager/nuget/util.js +1 -0
- package/dist/modules/manager/nuget/util.js.map +1 -1
- package/dist/modules/manager/ocb/extract.js +1 -0
- package/dist/modules/manager/ocb/extract.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +4 -0
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pep621/schema.js +4 -1
- package/dist/modules/manager/pep621/schema.js.map +1 -1
- package/dist/modules/manager/pip-compile/common.js +2 -0
- package/dist/modules/manager/pip-compile/common.js.map +1 -1
- package/dist/modules/manager/pip-compile/utils.js +3 -1
- package/dist/modules/manager/pip-compile/utils.js.map +1 -1
- package/dist/modules/manager/pipenv/artifacts.js +3 -0
- package/dist/modules/manager/pipenv/artifacts.js.map +1 -1
- package/dist/modules/manager/pipenv/extract.js +1 -0
- package/dist/modules/manager/pipenv/extract.js.map +1 -1
- package/dist/modules/manager/pixi/extract.js +1 -0
- package/dist/modules/manager/pixi/extract.js.map +1 -1
- package/dist/modules/manager/poetry/artifacts.js +1 -0
- package/dist/modules/manager/poetry/artifacts.js.map +1 -1
- package/dist/modules/manager/poetry/extract.js +1 -0
- package/dist/modules/manager/poetry/extract.js.map +1 -1
- package/dist/modules/manager/pre-commit/index.js.map +1 -1
- package/dist/modules/manager/swift/extract.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/others/modules.js.map +1 -1
- package/dist/modules/manager/tflint-plugin/plugins.js.map +1 -1
- package/dist/modules/manager/vendir/artifacts.js +1 -0
- package/dist/modules/manager/vendir/artifacts.js.map +1 -1
- package/dist/util/http/legacy.js +6 -3
- package/dist/util/http/legacy.js.map +1 -1
- package/dist/workers/repository/extract/manager-files.js +4 -2
- package/dist/workers/repository/extract/manager-files.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -61,6 +61,16 @@ function valSchema(key, isInvalid) {
|
|
|
61
61
|
return z.object({ [key]: z.string().optional() }).transform((val) => [parseValue(val[key], isInvalid)]);
|
|
62
62
|
}
|
|
63
63
|
const VersionVal = valSchema("version");
|
|
64
|
+
/**
|
|
65
|
+
* `gradle/actions/setup-gradle` has a few `gradle-version`s that are strings used to denote another source than a specific version number, which shouldn't have an update proposed for.
|
|
66
|
+
*/
|
|
67
|
+
const GradleVersionAliases = /* @__PURE__ */ new Set([
|
|
68
|
+
"wrapper",
|
|
69
|
+
"current",
|
|
70
|
+
"release-candidate",
|
|
71
|
+
"nightly",
|
|
72
|
+
"release-nightly"
|
|
73
|
+
]);
|
|
64
74
|
const actionsVersionsExtractVersion = "^(?<version>\\d+\\.\\d+\\.\\d+)(-\\d+)?$";
|
|
65
75
|
const SetupRustToolchainWith = z.object({ toolchain: z.string().optional() }).transform(({ toolchain }) => [parseValue(toolchain?.split(",").pop()?.trim())]);
|
|
66
76
|
const InstallBinaryWith = z.object({
|
|
@@ -502,7 +512,7 @@ const knownActions = {
|
|
|
502
512
|
depName: "gradle",
|
|
503
513
|
packageName: "gradle/gradle",
|
|
504
514
|
versioning: id$1,
|
|
505
|
-
withSchema: valSchema("gradle-version")
|
|
515
|
+
withSchema: valSchema("gradle-version", (val) => GradleVersionAliases.has(val))
|
|
506
516
|
},
|
|
507
517
|
"hashicorp/setup-packer": {
|
|
508
518
|
datasource: GithubReleasesDatasource.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"known-actions.js","names":["nodeVersioning.id","gradleVersioning.id","condaVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/known-actions.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nimport { regEx } from '../../../util/regex.ts';\nimport { CrateDatasource } from '../../datasource/crate/index.ts';\nimport { DartVersionDatasource } from '../../datasource/dart-version/index.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { DotnetVersionDatasource } from '../../datasource/dotnet-version/index.ts';\nimport { GithubReleaseAttachmentsDatasource } from '../../datasource/github-release-attachments/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GradleVersionDatasource } from '../../datasource/gradle-version/index.ts';\nimport { JavaVersionDatasource } from '../../datasource/java-version/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport * as condaVersioning from '../../versioning/conda/index.ts';\nimport * as gradleVersioning from '../../versioning/gradle/index.ts';\nimport * as nodeVersioning from '../../versioning/node/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport { splitImageParts } from '../dockerfile/extract.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type { ActionSchema, KnownActionConfig } from './types.ts';\n\nexport function actionSchema(\n name: string,\n { withSchema, ...cfg }: KnownActionConfig,\n): ActionSchema {\n return z\n .object({\n uses: matchAction(name),\n with: withSchema ?? VersionVal,\n })\n .transform(({ with: deps }) =>\n deps.map((dep) => {\n const merged = { ...cfg, ...dep };\n merged.depName ??= merged.packageName;\n return merged;\n }),\n );\n}\n\nfunction matchAction(action: string): z.ZodString {\n return z\n .string()\n .regex(regEx(`(?:https?://[^/]+/)?${RegExp.escape(action)}(?:@.+)?$`));\n}\n\nfunction parseValue(\n currentValue: string | undefined,\n isInvalid?: (val: string) => boolean,\n): PackageDependency {\n if (!currentValue) {\n return {\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n depType: 'uses-with',\n };\n }\n if (isInvalid?.(currentValue) === true) {\n return {\n skipStage: 'extract',\n skipReason: 'invalid-version',\n depType: 'uses-with',\n currentValue,\n };\n }\n return { currentValue, depType: 'uses-with' };\n}\n\n/**\n * A single dependency, versioned by the given `with:` input.\n *\n * @param isInvalid should return `true` if the version is invalid and should be skipped\n */\nfunction valSchema(\n key: string,\n isInvalid?: (val: string) => boolean,\n): ActionSchema {\n return z\n .object({ [key]: z.string().optional() })\n .transform((val) => [parseValue(val[key], isInvalid)]);\n}\n\nconst VersionVal = valSchema('version');\n\n// Shared by the `actions/setup-{go,node,python}` entries below, whose\n// releases are published as `actions/{go,node,python}-versions` GitHub\n// releases, tagged like `20.11.0` or `20.11.0-1` (a build number suffix).\nconst actionsVersionsExtractVersion =\n '^(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)(-\\\\d+)?$';\n\n// `actions-rust-lang/setup-rust-toolchain`'s `toolchain` input is a\n// comma-separated list of toolchains; only the LAST one becomes the active\n// default toolchain, so that's the only one worth tracking.\nconst SetupRustToolchainWith: ActionSchema = z\n .object({ toolchain: z.string().optional() })\n .transform(({ toolchain }) => [\n parseValue(toolchain?.split(',').pop()?.trim()),\n ]);\n\nconst InstallBinaryWith: ActionSchema = z\n .object({ repo: z.string(), tag: z.string() })\n .transform(({ repo, tag }) => [{ packageName: repo, ...parseValue(tag) }]);\n\n// Same shape as `InstallBinaryWith` above, but the package name comes from\n// a crates.io crate name rather than a GitHub repo. `version` has a default\n// (`'latest'`), so real workflows commonly omit it from `with:` entirely.\nconst CargoInstallWith: ActionSchema = z\n .object({ crate: z.string(), version: z.string().optional() })\n .transform(({ crate, version }) => [\n { packageName: crate, ...parseValue(version) },\n ]);\n\nfunction parseImageValue(image: string | undefined): PackageDependency {\n if (!image) {\n return {\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n };\n }\n\n const dep = splitImageParts(image);\n return {\n depType: 'uses-with',\n ...dep,\n ...(dep.skipReason ? { skipStage: 'extract' } : {}),\n };\n}\n\nconst EcsRenderTaskDefinitionWith: ActionSchema = z\n .object({ image: z.string().optional() })\n .transform(({ image }) => [parseImageValue(image)]);\n\nconst sha256Regex = regEx(/^[a-f0-9]{64}$/);\nconst MiseWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n sha256: z.string().optional(),\n })\n .transform(({ version, sha256 }) => [\n {\n ...parseValue(version),\n ...(sha256 && sha256Regex.test(sha256) ? { currentDigest: sha256 } : {}),\n },\n ]);\n\n// Runtimes installable by `pnpm/setup`, keyed by the name used in its\n// `runtime:` input. `bun` and `deno` reuse the datasources of their respective\n// `setup-*` actions below.\nconst pnpmRuntimes: Record<string, PackageDependency | undefined> = {\n node: { datasource: NodeVersionDatasource.id, packageName: 'node' },\n bun: { datasource: NpmDatasource.id, packageName: 'bun' },\n deno: { datasource: NpmDatasource.id, packageName: 'deno' },\n};\n\nfunction parsePnpmRuntime(runtime: string | undefined): PackageDependency[] {\n if (!runtime) {\n return [];\n }\n\n // `<name>` or `<name>@<version>`, matching pnpm's `packageManager` field syntax\n const [name, version] = runtime.split('@');\n const cfg = pnpmRuntimes[name];\n if (!cfg) {\n return [\n {\n packageName: name || runtime,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'invalid-name',\n },\n ];\n }\n\n return [{ ...cfg, ...parseValue(version) }];\n}\n\nconst PnpmSetupWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n runtime: z.string().optional(),\n })\n .transform(({ version, runtime }) => [\n parseValue(version),\n ...parsePnpmRuntime(runtime),\n ]);\n\n// Distributions whose version numbering we can reliably track via the\n// java-version datasource (which sources releases from Adoptium/Eclipse\n// Temurin). Other distributions may not follow the same release cadence\n// or versioning, so we don't attempt to track them.\nconst supportedJavaDistributions = new Set(['temurin', 'adopt']);\n\nconst SetupJavaWith: ActionSchema = z\n .object({\n distribution: z.string().optional(),\n 'java-version': z.string().optional(),\n 'java-package': z.string().optional(),\n })\n .transform(\n ({\n distribution,\n 'java-version': version,\n 'java-package': javaPackage,\n }) => {\n const packageName = javaPackage?.startsWith('jre')\n ? 'java-jre'\n : 'java-jdk';\n\n if (\n !distribution ||\n !supportedJavaDistributions.has(distribution.toLowerCase())\n ) {\n return [\n {\n packageName,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unsupported',\n },\n ];\n }\n\n return [{ packageName, ...parseValue(version) }];\n },\n );\n\n// `'latest'` is a valid, documented value for `tflint_version` (it's also the\n// action's own default), but it isn't a version we can pin/bump, so treat it\n// as present-but-unsupported rather than as an invalid value.\nconst TflintWith: ActionSchema = z\n .object({ tflint_version: z.string().optional() })\n .transform(({ tflint_version: version }) => {\n if (version === 'latest') {\n return [\n {\n currentValue: version,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unsupported-version',\n },\n ];\n }\n return [parseValue(version)];\n });\n\n// `helm/kind-action` can yield up to 3 dependencies from a single step: the\n// `kind` binary itself, the `kindest/node` image it boots, and (optionally) a\n// pinned `kubectl` binary. All 3 inputs are optional, so only emit a\n// dependency for the ones a workflow actually sets.\nconst KindActionWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n node_image: z.string().optional(),\n kubectl_version: z.string().optional(),\n })\n .transform(({ version, node_image, kubectl_version }) => {\n const deps: PackageDependency[] = [];\n\n if (version) {\n deps.push({\n packageName: 'kubernetes-sigs/kind',\n ...parseValue(version),\n });\n }\n\n if (node_image) {\n // `node_image` may be pinned by digest (e.g.\n // `kindest/node:v1.31.0@sha256:...`), so reuse the same Docker\n // image-reference parsing as `aws-actions/amazon-ecs-render-task-definition`\n // rather than naively splitting on `:`.\n deps.push({\n datasource: DockerDatasource.id,\n ...parseImageValue(node_image),\n });\n }\n\n if (kubectl_version) {\n deps.push({\n packageName: 'kubernetes/kubernetes',\n ...parseValue(kubectl_version),\n });\n }\n\n return deps;\n });\n\n// `erlef/setup-beam` can yield up to 4 dependencies from a single step: OTP,\n// Elixir, Gleam, and rebar3. All inputs are optional, so only emit a\n// dependency for the ones a workflow actually sets.\nconst ErlefSetupBeamWith: ActionSchema = z\n .object({\n 'otp-version': z.string().optional(),\n 'elixir-version': z.string().optional(),\n 'gleam-version': z.string().optional(),\n 'rebar3-version': z.string().optional(),\n })\n .transform(\n ({\n 'otp-version': otpVersion,\n 'elixir-version': elixirVersion,\n 'gleam-version': gleamVersion,\n 'rebar3-version': rebar3Version,\n }) => {\n const deps: PackageDependency[] = [];\n\n if (otpVersion) {\n deps.push({\n packageName: 'erlang/otp',\n // erlang/otp tags releases like `OTP-27.1.2`\n extractVersion: '^OTP-(?<version>.+)$',\n ...parseValue(otpVersion),\n });\n }\n\n if (elixirVersion) {\n deps.push({\n packageName: 'elixir-lang/elixir',\n ...parseValue(elixirVersion),\n });\n }\n\n if (gleamVersion) {\n deps.push({\n packageName: 'gleam-lang/gleam',\n ...parseValue(gleamVersion),\n });\n }\n\n if (rebar3Version) {\n deps.push({\n packageName: 'erlang/rebar3',\n ...parseValue(rebar3Version),\n });\n }\n\n return deps;\n },\n );\n\n// `graalvm/setup-graalvm` can yield up to 2 dependencies from a single step:\n// the JDK version it's built on, and the GraalVM distribution version\n// itself. Both inputs are optional, so only emit a dependency for the ones\n// a workflow actually sets.\n//\n// `graalvm/graalvm-ce-builds` has used several tag-naming conventions over\n// its history (`vm-ce-`, `vm-`, `jdk-`, `graal-`), and still alternates\n// between `jdk-` and `graal-` prefixes for releases after GraalVM's 2023\n// unification with JDK versioning, so we match both of those current-era\n// prefixes rather than either one alone.\nconst GraalvmSetupWith: ActionSchema = z\n .object({\n 'java-version': z.string().optional(),\n version: z.string().optional(),\n })\n .transform(({ 'java-version': javaVersion, version }) => {\n const deps: PackageDependency[] = [];\n\n if (javaVersion) {\n deps.push({\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jdk',\n ...parseValue(javaVersion),\n });\n }\n\n if (version) {\n deps.push({\n datasource: GithubReleasesDatasource.id,\n packageName: 'graalvm/graalvm-ce-builds',\n extractVersion: '^(?:jdk|graal)-(?<version>.+)$',\n ...parseValue(version),\n });\n }\n\n return deps;\n });\n\n// `moonrepo/setup-toolchain` can yield up to 2 dependencies from a single\n// step: the `moon` binary and the `proto` binary. Both inputs are optional,\n// so only emit a dependency for the ones a workflow actually sets.\nconst MoonrepoSetupToolchainWith: ActionSchema = z\n .object({\n 'moon-version': z.string().optional(),\n 'proto-version': z.string().optional(),\n })\n .transform(\n ({ 'moon-version': moonVersion, 'proto-version': protoVersion }) => {\n const deps: PackageDependency[] = [];\n\n if (moonVersion) {\n deps.push({\n packageName: 'moonrepo/moon',\n ...parseValue(moonVersion),\n });\n }\n\n if (protoVersion) {\n deps.push({\n packageName: 'moonrepo/proto',\n ...parseValue(protoVersion),\n });\n }\n\n return deps;\n },\n );\n\n// `crystal-lang/install-crystal` can yield up to 2 dependencies from a\n// single step: the Crystal compiler itself, and the shards package manager.\n// Both inputs are optional, so only emit a dependency for the ones a\n// workflow actually sets.\nconst InstallCrystalWith: ActionSchema = z\n .object({\n crystal: z.string().optional(),\n shards: z.string().optional(),\n })\n .transform(({ crystal, shards }) => {\n const deps: PackageDependency[] = [];\n\n if (crystal) {\n deps.push({\n packageName: 'crystal-lang/crystal',\n ...parseValue(crystal),\n });\n }\n\n if (shards) {\n deps.push({\n packageName: 'crystal-lang/shards',\n ...parseValue(shards),\n });\n }\n\n return deps;\n });\n\n// `conda-incubator/setup-miniconda` exposes 6 separate version inputs\n// (`miniconda-version`, `miniforge-version`, `conda-version`,\n// `conda-build-version`, `python-version`, `mamba-version`), but only 2 map\n// onto a datasource we can reliably use: `miniforge-version` (GitHub\n// releases of `conda-forge/miniforge`) and `python-version` (the same\n// `actions/python-versions` releases already used for `actions/setup-python`).\n// The other 4 are versioned via anaconda.org channels or an installer\n// archive with no clean Renovate datasource, so they're intentionally not\n// tracked. Both supported inputs are optional, so only emit a dependency\n// for the ones a workflow actually sets.\nconst SetupMinicondaWith: ActionSchema = z\n .object({\n 'miniforge-version': z.string().optional(),\n 'python-version': z.string().optional(),\n })\n .transform(\n ({\n 'miniforge-version': miniforgeVersion,\n 'python-version': pythonVersion,\n }) => {\n const deps: PackageDependency[] = [];\n\n if (miniforgeVersion) {\n deps.push({\n datasource: GithubReleasesDatasource.id,\n depName: 'miniforge',\n packageName: 'conda-forge/miniforge',\n ...parseValue(miniforgeVersion),\n });\n }\n\n if (pythonVersion) {\n deps.push({\n datasource: GithubReleasesDatasource.id,\n depName: 'python',\n packageName: 'actions/python-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n ...parseValue(pythonVersion),\n });\n }\n\n return deps;\n },\n );\n\nconst renovateGithubActionDefaultImage = 'ghcr.io/renovatebot/renovate';\nconst RenovateGithubActionWith: ActionSchema = z\n .object({\n 'renovate-version': z.string().optional(),\n 'renovate-image': z.string().optional(),\n })\n .transform(({ 'renovate-version': version, 'renovate-image': image }) => {\n const [packageName, currentDigest] = (\n image ?? renovateGithubActionDefaultImage\n ).split('@');\n return [\n {\n packageName,\n ...(currentDigest ? { currentDigest } : {}),\n ...parseValue(version),\n },\n ];\n });\n\n/**\n * Community-maintained and first-party (GitHub's own `actions/*`) Actions\n * with known version input schemas.\n */\nexport const knownActions: Record<string, KnownActionConfig> = {\n // https://github.com/abatilo/actions-poetry\n 'abatilo/actions-poetry': {\n datasource: PypiDatasource.id,\n packageName: 'poetry',\n withSchema: valSchema('poetry-version'),\n },\n // https://github.com/actions-rust-lang/setup-rust-toolchain\n 'actions-rust-lang/setup-rust-toolchain': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: SetupRustToolchainWith,\n },\n // https://github.com/actions/setup-dotnet\n 'actions/setup-dotnet': {\n datasource: DotnetVersionDatasource.id,\n packageName: 'dotnet-sdk',\n withSchema: valSchema('dotnet-version', (val) => val.includes('\\n')),\n },\n // https://github.com/actions/setup-go\n 'actions/setup-go': {\n datasource: GithubReleasesDatasource.id,\n depName: 'go',\n packageName: 'actions/go-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('go-version'),\n },\n // https://github.com/actions/setup-java\n 'actions/setup-java': {\n datasource: JavaVersionDatasource.id,\n packageName: '', // determined from `distribution`/`java-package` inputs\n withSchema: SetupJavaWith,\n },\n // https://github.com/actions/setup-node\n 'actions/setup-node': {\n datasource: GithubReleasesDatasource.id,\n depName: 'node',\n packageName: 'actions/node-versions',\n versioning: nodeVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('node-version'),\n },\n // https://github.com/actions/setup-python\n 'actions/setup-python': {\n datasource: GithubReleasesDatasource.id,\n depName: 'python',\n packageName: 'actions/python-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('python-version'),\n },\n // https://github.com/aquaproj/aqua-installer\n 'aquaproj/aqua-installer': {\n datasource: GithubReleasesDatasource.id,\n depName: 'aqua',\n packageName: 'aquaproj/aqua',\n withSchema: valSchema('aqua_version'),\n },\n // https://github.com/aquasecurity/setup-trivy\n 'aquasecurity/setup-trivy': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/aquasecurity/trivy-action\n 'aquasecurity/trivy-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/astral-sh/ruff-action\n 'astral-sh/ruff-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'ruff',\n packageName: 'astral-sh/ruff',\n },\n // https://github.com/astral-sh/setup-uv\n 'astral-sh/setup-uv': {\n datasource: GithubReleasesDatasource.id,\n versioning: npmVersioning.id,\n packageName: 'astral-sh/uv',\n },\n // https://github.com/aws-actions/amazon-ecs-render-task-definition\n 'aws-actions/amazon-ecs-render-task-definition': {\n datasource: DockerDatasource.id,\n packageName: '', // determined from `image` input\n withSchema: EcsRenderTaskDefinitionWith,\n },\n 'azure/setup-helm': {\n datasource: GithubReleasesDatasource.id,\n depName: 'helm',\n packageName: 'helm/helm',\n },\n // https://github.com/azure/setup-kubectl\n 'azure/setup-kubectl': {\n datasource: GithubReleasesDatasource.id,\n depName: 'kubectl',\n packageName: 'kubernetes/kubernetes',\n },\n // https://github.com/baptiste0928/cargo-install\n 'baptiste0928/cargo-install': {\n datasource: CrateDatasource.id,\n packageName: '', // determined from the `crate` input\n withSchema: CargoInstallWith,\n },\n // https://github.com/biomejs/setup-biome\n 'biomejs/setup-biome': {\n datasource: NpmDatasource.id,\n packageName: '@biomejs/biome',\n },\n // https://github.com/bufbuild/buf-setup-action\n 'bufbuild/buf-setup-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'buf',\n packageName: 'bufbuild/buf',\n },\n // https://github.com/cargo-bins/cargo-binstall\n 'cargo-bins/cargo-binstall': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cargo-bins/cargo-binstall',\n // the repo also publishes releases for its internal sub-crates (e.g.\n // `detect-targets-v0.1.91`, `binstalk-v0.28.81`) — only match the bare\n // main-tool release tag\n extractVersion: '^v(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)$',\n },\n // https://github.com/cloudflare/wrangler-action\n 'cloudflare/wrangler-action': {\n datasource: NpmDatasource.id,\n packageName: 'wrangler',\n withSchema: valSchema('wranglerVersion'),\n },\n // https://github.com/conda-incubator/setup-miniconda\n 'conda-incubator/setup-miniconda': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: miniforge-version, python-version\n withSchema: SetupMinicondaWith,\n },\n // https://github.com/crystal-lang/install-crystal\n 'crystal-lang/install-crystal': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: crystal, shards\n withSchema: InstallCrystalWith,\n },\n // https://github.com/cue-lang/setup-cue\n 'cue-lang/setup-cue': {\n datasource: GithubReleasesDatasource.id,\n depName: 'cue',\n packageName: 'cue-lang/cue',\n },\n // https://github.com/cycjimmy/semantic-release-action\n 'cycjimmy/semantic-release-action': {\n datasource: NpmDatasource.id,\n packageName: 'semantic-release',\n // the action's docs describe `semantic_version` as a version range, not\n // a pinned exact version\n versioning: npmVersioning.id,\n withSchema: valSchema('semantic_version'),\n },\n // https://github.com/dagger/dagger-for-github\n 'dagger/dagger-for-github': {\n datasource: GithubReleasesDatasource.id,\n depName: 'dagger',\n packageName: 'dagger/dagger',\n // the repo also publishes per-SDK/component tags sharing the same\n // version (e.g. `sdk/typescript/v0.21.9`, `helm/chart/v0.21.9`) — only\n // match the bare release tag\n extractVersion: '^v(?<version>\\\\d+\\\\..*)$',\n },\n // https://github.com/dart-lang/setup-dart\n 'dart-lang/setup-dart': {\n datasource: DartVersionDatasource.id,\n depName: 'dart',\n packageName: 'dart-lang/sdk',\n withSchema: valSchema('sdk'),\n },\n // https://github.com/azure/setup-helm\n 'denoland/setup-deno': {\n datasource: NpmDatasource.id,\n packageName: 'deno',\n withSchema: valSchema('deno-version'),\n },\n // https://github.com/docker/setup-buildx-action\n 'docker/setup-buildx-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'buildx',\n packageName: 'docker/buildx',\n },\n // https://github.com/docker/setup-compose-action\n 'docker/setup-compose-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'docker/compose',\n },\n // https://github.com/docker/setup-docker-action\n 'docker/setup-docker-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'docker',\n packageName: 'moby/moby',\n extractVersion: '^docker-(?<version>.+)$',\n },\n // https://github.com/dtolnay/rust-toolchain\n 'dtolnay/rust-toolchain': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: valSchema('toolchain'),\n },\n // https://github.com/erlef/setup-beam\n 'erlef/setup-beam': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: OTP, Elixir, Gleam, rebar3\n withSchema: ErlefSetupBeamWith,\n },\n // https://github.com/expo/expo-github-action\n 'expo/expo-github-action': {\n datasource: NpmDatasource.id,\n packageName: 'eas-cli',\n withSchema: valSchema('eas-version'),\n },\n // https://github.com/extractions/setup-just\n 'extractions/setup-just': {\n datasource: GithubReleasesDatasource.id,\n depName: 'just',\n packageName: 'casey/just',\n withSchema: valSchema('just-version'),\n },\n // https://github.com/foundry-rs/foundry-toolchain\n 'foundry-rs/foundry-toolchain': {\n datasource: GithubReleasesDatasource.id,\n depName: 'foundry',\n packageName: 'foundry-rs/foundry',\n },\n // https://github.com/GitTools/actions (there is no root-level Action, only\n // subpaths are usable; the sibling `GitTools/actions/gitreleasemanager/setup`\n // is a separate, unrelated Action)\n 'GitTools/actions/gitversion/setup': {\n datasource: GithubReleasesDatasource.id,\n depName: 'gitversion',\n packageName: 'GitTools/GitVersion',\n withSchema: valSchema('versionSpec'),\n },\n 'golangci/golangci-lint-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'golangci/golangci-lint',\n },\n // https://github.com/goreleaser/goreleaser-action\n 'goreleaser/goreleaser-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'goreleaser/goreleaser',\n // the default value (`~> v2`) is itself a range, not a pinned version\n versioning: npmVersioning.id,\n },\n // https://github.com/graalvm/setup-graalvm\n 'graalvm/setup-graalvm': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: java-version, version\n withSchema: GraalvmSetupWith,\n },\n // https://github.com/gradle/actions (there is no root-level Action, only\n // subpaths such as `setup-gradle` are usable)\n 'gradle/actions/setup-gradle': {\n datasource: GradleVersionDatasource.id,\n depName: 'gradle',\n packageName: 'gradle/gradle',\n versioning: gradleVersioning.id,\n withSchema: valSchema('gradle-version'),\n },\n // https://github.com/hashicorp/setup-packer\n 'hashicorp/setup-packer': {\n datasource: GithubReleasesDatasource.id,\n depName: 'packer',\n packageName: 'hashicorp/packer',\n },\n // https://github.com/hashicorp/setup-terraform\n 'hashicorp/setup-terraform': {\n datasource: GithubReleasesDatasource.id,\n depName: 'terraform',\n packageName: 'hashicorp/terraform',\n withSchema: valSchema('terraform_version'),\n },\n // https://github.com/helm/chart-releaser-action\n 'helm/chart-releaser-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'chart-releaser',\n packageName: 'helm/chart-releaser',\n },\n // https://github.com/helm/chart-testing-action\n 'helm/chart-testing-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'chart-testing',\n packageName: 'helm/chart-testing',\n },\n // https://github.com/helm/kind-action\n 'helm/kind-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: `version`, `node_image`, `kubectl_version`\n withSchema: KindActionWith,\n },\n // https://github.com/j178/prek-action\n 'j178/prek-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'prek',\n packageName: 'j178/prek',\n // the value may be a semver range (e.g. `0.3.x`, `<=1.0.0`), not just a\n // pinned version\n versioning: npmVersioning.id,\n withSchema: valSchema('prek-version'),\n },\n 'jakebailey/pyright-action': {\n datasource: NpmDatasource.id,\n packageName: 'pyright',\n withSchema: valSchema('version', (val) => val === 'PATH'),\n },\n 'jaxxstorm/action-install-gh-release': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'jdx/mise-action': {\n datasource: GithubReleaseAttachmentsDatasource.id,\n packageName: 'jdx/mise',\n withSchema: MiseWith,\n },\n // https://github.com/jfrog/setup-jfrog-cli\n 'jfrog/setup-jfrog-cli': {\n datasource: GithubReleasesDatasource.id,\n depName: 'jfrog-cli',\n packageName: 'jfrog/jfrog-cli',\n },\n // https://github.com/julia-actions/setup-julia\n 'julia-actions/setup-julia': {\n datasource: GithubReleasesDatasource.id,\n depName: 'julia',\n packageName: 'JuliaLang/julia',\n },\n // https://github.com/jwlawson/actions-setup-cmake\n 'jwlawson/actions-setup-cmake': {\n datasource: GithubReleasesDatasource.id,\n depName: 'cmake',\n packageName: 'Kitware/CMake',\n withSchema: valSchema('cmake-version'),\n },\n // https://github.com/moonrepo/setup-rust\n 'moonrepo/setup-rust': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: valSchema('channel'),\n },\n // https://github.com/moonrepo/setup-toolchain\n 'moonrepo/setup-toolchain': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: moon-version, proto-version\n withSchema: MoonrepoSetupToolchainWith,\n },\n // https://github.com/mozilla-actions/sccache-action\n 'mozilla-actions/sccache-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'sccache',\n packageName: 'mozilla/sccache',\n },\n // https://github.com/opentofu/setup-opentofu\n 'opentofu/setup-opentofu': {\n datasource: GithubReleasesDatasource.id,\n depName: 'opentofu',\n packageName: 'opentofu/opentofu',\n withSchema: valSchema('tofu_version'),\n },\n 'oven-sh/setup-bun': {\n datasource: NpmDatasource.id,\n packageName: 'bun',\n withSchema: valSchema('bun-version'),\n },\n 'pdm-project/setup-pdm': {\n datasource: PypiDatasource.id,\n packageName: 'pdm',\n },\n // https://github.com/peaceiris/actions-hugo\n 'peaceiris/actions-hugo': {\n datasource: GithubReleasesDatasource.id,\n depName: 'hugo',\n packageName: 'gohugoio/hugo',\n withSchema: valSchema('hugo-version'),\n },\n 'pnpm/action-setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n },\n 'pnpm/setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n withSchema: PnpmSetupWith,\n },\n 'prefix-dev/setup-pixi': {\n datasource: GithubReleasesDatasource.id,\n versioning: condaVersioning.id,\n packageName: 'prefix-dev/pixi',\n withSchema: valSchema('pixi-version'),\n },\n // https://github.com/pulumi/actions\n 'pulumi/actions': {\n datasource: GithubReleasesDatasource.id,\n depName: 'pulumi',\n packageName: 'pulumi/pulumi',\n withSchema: valSchema('pulumi-version'),\n },\n // https://github.com/PyO3/maturin-action\n 'PyO3/maturin-action': {\n datasource: PypiDatasource.id,\n packageName: 'maturin',\n withSchema: valSchema('maturin-version'),\n },\n // https://github.com/pypa/hatch/tree/install\n 'pypa/hatch': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pypa/hatch',\n // Strip hatch- prefix from release tags\n extractVersion: '^hatch-(?<version>.+)$',\n },\n // https://github.com/raven-actions/actionlint\n 'raven-actions/actionlint': {\n datasource: GithubReleasesDatasource.id,\n depName: 'actionlint',\n packageName: 'rhysd/actionlint',\n },\n // https://github.com/renovatebot/github-action\n 'renovatebot/github-action': {\n datasource: DockerDatasource.id,\n packageName: '', // determined from `renovate-image` input, if set\n withSchema: RenovateGithubActionWith,\n },\n // https://github.com/reviewdog/action-setup\n 'reviewdog/action-setup': {\n datasource: GithubReleasesDatasource.id,\n depName: 'reviewdog',\n packageName: 'reviewdog/reviewdog',\n withSchema: valSchema('reviewdog_version'),\n },\n 'ruby/setup-ruby': {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby',\n withSchema: valSchema('ruby-version'),\n },\n 'sigoden/install-binary': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'sigstore/cosign-installer': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n withSchema: valSchema('cosign-release'),\n },\n // https://github.com/snok/install-poetry\n 'snok/install-poetry': {\n datasource: PypiDatasource.id,\n packageName: 'poetry',\n },\n // https://github.com/stCarolas/setup-maven\n 'stCarolas/setup-maven': {\n datasource: GithubReleasesDatasource.id,\n depName: 'maven',\n packageName: 'apache/maven',\n // apache/maven tags its releases as `maven-X.Y.Z`\n extractVersion: '^maven-(?<version>.+)$',\n // the input also documents range/glob specs (e.g. `10.x`, `>=10.15.0`),\n // not just pinned versions\n versioning: npmVersioning.id,\n withSchema: valSchema('maven-version'),\n },\n // https://github.com/subosito/flutter-action\n 'subosito/flutter-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'flutter',\n packageName: 'flutter/flutter',\n withSchema: valSchema('flutter-version'),\n },\n // https://github.com/supabase/setup-cli\n 'supabase/setup-cli': {\n datasource: NpmDatasource.id,\n packageName: 'supabase',\n },\n // https://github.com/superfly/flyctl-actions (there is no root-level\n // Action for this purpose — the repo root has an unrelated action.yml, and\n // the real usable Action lives at the `setup-flyctl` subpath)\n 'superfly/flyctl-actions/setup-flyctl': {\n datasource: GithubReleasesDatasource.id,\n depName: 'flyctl',\n packageName: 'superfly/flyctl',\n },\n // https://github.com/swift-actions/setup-swift\n 'swift-actions/setup-swift': {\n datasource: GithubReleasesDatasource.id,\n depName: 'swift',\n packageName: 'swiftlang/swift',\n // swiftlang/swift tags releases like `swift-6.3.3-RELEASE`\n extractVersion: '^swift-(?<version>.+)-RELEASE$',\n withSchema: valSchema('swift-version'),\n },\n // https://github.com/terraform-linters/setup-tflint\n 'terraform-linters/setup-tflint': {\n datasource: GithubReleasesDatasource.id,\n depName: 'tflint',\n packageName: 'terraform-linters/tflint',\n withSchema: TflintWith,\n },\n 'UpCloudLtd/upcloud-cli-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'UpCloudLtd/upcloud-cli',\n },\n // https://github.com/WillAbides/setup-go-faster\n 'WillAbides/setup-go-faster': {\n datasource: GithubReleasesDatasource.id,\n depName: 'go',\n packageName: 'actions/go-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('go-version'),\n },\n 'zizmorcore/zizmor-action': {\n datasource: DockerDatasource.id,\n packageName: 'ghcr.io/zizmorcore/zizmor',\n },\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBA,SAAgB,aACd,MACA,EAAE,YAAY,GAAG,OACH;CACd,OAAO,EACJ,OAAO;EACN,MAAM,YAAY,IAAI;EACtB,MAAM,cAAc;CACtB,CAAC,CAAC,CACD,WAAW,EAAE,MAAM,WAClB,KAAK,KAAK,QAAQ;EAChB,MAAM,SAAS;GAAE,GAAG;GAAK,GAAG;EAAI;EAChC,OAAO,YAAY,OAAO;EAC1B,OAAO;CACT,CAAC,CACH;AACJ;AAEA,SAAS,YAAY,QAA6B;CAChD,OAAO,EACJ,OAAO,CAAC,CACR,MAAM,MAAM,uBAAuB,OAAO,OAAO,MAAM,EAAE,UAAU,CAAC;AACzE;AAEA,SAAS,WACP,cACA,WACmB;CACnB,IAAI,CAAC,cACH,OAAO;EACL,WAAW;EACX,YAAY;EACZ,SAAS;CACX;CAEF,IAAI,YAAY,YAAY,MAAM,MAChC,OAAO;EACL,WAAW;EACX,YAAY;EACZ,SAAS;EACT;CACF;CAEF,OAAO;EAAE;EAAc,SAAS;CAAY;AAC9C;;;;;;AAOA,SAAS,UACP,KACA,WACc;CACd,OAAO,EACJ,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CACxC,WAAW,QAAQ,CAAC,WAAW,IAAI,MAAM,SAAS,CAAC,CAAC;AACzD;AAEA,MAAM,aAAa,UAAU,SAAS;AAKtC,MAAM,gCACJ;AAKF,MAAM,yBAAuC,EAC1C,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAC5C,WAAW,EAAE,gBAAgB,CAC5B,WAAW,WAAW,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAChD,CAAC;AAEH,MAAM,oBAAkC,EACrC,OAAO;CAAE,MAAM,EAAE,OAAO;CAAG,KAAK,EAAE,OAAO;AAAE,CAAC,CAAC,CAC7C,WAAW,EAAE,MAAM,UAAU,CAAC;CAAE,aAAa;CAAM,GAAG,WAAW,GAAG;AAAE,CAAC,CAAC;AAK3E,MAAM,mBAAiC,EACpC,OAAO;CAAE,OAAO,EAAE,OAAO;CAAG,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS;AAAE,CAAC,CAAC,CAC7D,WAAW,EAAE,OAAO,cAAc,CACjC;CAAE,aAAa;CAAO,GAAG,WAAW,OAAO;AAAE,CAC/C,CAAC;AAEH,SAAS,gBAAgB,OAA8C;CACrE,IAAI,CAAC,OACH,OAAO;EACL,SAAS;EACT,WAAW;EACX,YAAY;CACd;CAGF,MAAM,MAAM,gBAAgB,KAAK;CACjC,OAAO;EACL,SAAS;EACT,GAAG;EACH,GAAI,IAAI,aAAa,EAAE,WAAW,UAAU,IAAI,CAAC;CACnD;AACF;AAEA,MAAM,8BAA4C,EAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CACxC,WAAW,EAAE,YAAY,CAAC,gBAAgB,KAAK,CAAC,CAAC;AAEpD,MAAM,cAAc,MAAM,gBAAgB;AAC1C,MAAM,WAAyB,EAC5B,OAAO;CACN,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS;CAC7B,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS;AAC9B,CAAC,CAAC,CACD,WAAW,EAAE,SAAS,aAAa,CAClC;CACE,GAAG,WAAW,OAAO;CACrB,GAAI,UAAU,YAAY,KAAK,MAAM,IAAI,EAAE,eAAe,OAAO,IAAI,CAAC;AACxE,CACF,CAAC;AAKH,MAAM,eAA8D;CAClE,MAAM;EAAE,YAAY,sBAAsB;EAAI,aAAa;CAAO;CAClE,KAAK;EAAE,YAAY,cAAc;EAAI,aAAa;CAAM;CACxD,MAAM;EAAE,YAAY,cAAc;EAAI,aAAa;CAAO;AAC5D;AAEA,SAAS,iBAAiB,SAAkD;CAC1E,IAAI,CAAC,SACH,OAAO,CAAC;CAIV,MAAM,CAAC,MAAM,WAAW,QAAQ,MAAM,GAAG;CACzC,MAAM,MAAM,aAAa;CACzB,IAAI,CAAC,KACH,OAAO,CACL;EACE,aAAa,QAAQ;EACrB,SAAS;EACT,WAAW;EACX,YAAY;CACd,CACF;CAGF,OAAO,CAAC;EAAE,GAAG;EAAK,GAAG,WAAW,OAAO;CAAE,CAAC;AAC5C;AAEA,MAAM,gBAA8B,EACjC,OAAO;CACN,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS;CAC7B,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS;AAC/B,CAAC,CAAC,CACD,WAAW,EAAE,SAAS,cAAc,CACnC,WAAW,OAAO,GAClB,GAAG,iBAAiB,OAAO,CAC7B,CAAC;AAMH,MAAM,6CAA6B,IAAI,IAAI,CAAC,WAAW,OAAO,CAAC;AAE/D,MAAM,gBAA8B,EACjC,OAAO;CACN,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS;CAClC,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS;CACpC,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS;AACtC,CAAC,CAAC,CACD,WACE,EACC,cACA,gBAAgB,SAChB,gBAAgB,kBACZ;CACJ,MAAM,cAAc,aAAa,WAAW,KAAK,IAC7C,aACA;CAEJ,IACE,CAAC,gBACD,CAAC,2BAA2B,IAAI,aAAa,YAAY,CAAC,GAE1D,OAAO,CACL;EACE;EACA,SAAS;EACT,WAAW;EACX,YAAY;CACd,CACF;CAGF,OAAO,CAAC;EAAE;EAAa,GAAG,WAAW,OAAO;CAAE,CAAC;AACjD,CACF;AAKF,MAAM,aAA2B,EAC9B,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CACjD,WAAW,EAAE,gBAAgB,cAAc;CAC1C,IAAI,YAAY,UACd,OAAO,CACL;EACE,cAAc;EACd,SAAS;EACT,WAAW;EACX,YAAY;CACd,CACF;CAEF,OAAO,CAAC,WAAW,OAAO,CAAC;AAC7B,CAAC;AAMH,MAAM,iBAA+B,EAClC,OAAO;CACN,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS;CAC7B,YAAY,EAAE,OAAO,CAAC,CAAC,SAAS;CAChC,iBAAiB,EAAE,OAAO,CAAC,CAAC,SAAS;AACvC,CAAC,CAAC,CACD,WAAW,EAAE,SAAS,YAAY,sBAAsB;CACvD,MAAM,OAA4B,CAAC;CAEnC,IAAI,SACF,KAAK,KAAK;EACR,aAAa;EACb,GAAG,WAAW,OAAO;CACvB,CAAC;CAGH,IAAI,YAKF,KAAK,KAAK;EACR,YAAY,iBAAiB;EAC7B,GAAG,gBAAgB,UAAU;CAC/B,CAAC;CAGH,IAAI,iBACF,KAAK,KAAK;EACR,aAAa;EACb,GAAG,WAAW,eAAe;CAC/B,CAAC;CAGH,OAAO;AACT,CAAC;AAKH,MAAM,qBAAmC,EACtC,OAAO;CACN,eAAe,EAAE,OAAO,CAAC,CAAC,SAAS;CACnC,kBAAkB,EAAE,OAAO,CAAC,CAAC,SAAS;CACtC,iBAAiB,EAAE,OAAO,CAAC,CAAC,SAAS;CACrC,kBAAkB,EAAE,OAAO,CAAC,CAAC,SAAS;AACxC,CAAC,CAAC,CACD,WACE,EACC,eAAe,YACf,kBAAkB,eAClB,iBAAiB,cACjB,kBAAkB,oBACd;CACJ,MAAM,OAA4B,CAAC;CAEnC,IAAI,YACF,KAAK,KAAK;EACR,aAAa;EAEb,gBAAgB;EAChB,GAAG,WAAW,UAAU;CAC1B,CAAC;CAGH,IAAI,eACF,KAAK,KAAK;EACR,aAAa;EACb,GAAG,WAAW,aAAa;CAC7B,CAAC;CAGH,IAAI,cACF,KAAK,KAAK;EACR,aAAa;EACb,GAAG,WAAW,YAAY;CAC5B,CAAC;CAGH,IAAI,eACF,KAAK,KAAK;EACR,aAAa;EACb,GAAG,WAAW,aAAa;CAC7B,CAAC;CAGH,OAAO;AACT,CACF;AAYF,MAAM,mBAAiC,EACpC,OAAO;CACN,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS;CACpC,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS;AAC/B,CAAC,CAAC,CACD,WAAW,EAAE,gBAAgB,aAAa,cAAc;CACvD,MAAM,OAA4B,CAAC;CAEnC,IAAI,aACF,KAAK,KAAK;EACR,YAAY,sBAAsB;EAClC,aAAa;EACb,GAAG,WAAW,WAAW;CAC3B,CAAC;CAGH,IAAI,SACF,KAAK,KAAK;EACR,YAAY,yBAAyB;EACrC,aAAa;EACb,gBAAgB;EAChB,GAAG,WAAW,OAAO;CACvB,CAAC;CAGH,OAAO;AACT,CAAC;AAKH,MAAM,6BAA2C,EAC9C,OAAO;CACN,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS;CACpC,iBAAiB,EAAE,OAAO,CAAC,CAAC,SAAS;AACvC,CAAC,CAAC,CACD,WACE,EAAE,gBAAgB,aAAa,iBAAiB,mBAAmB;CAClE,MAAM,OAA4B,CAAC;CAEnC,IAAI,aACF,KAAK,KAAK;EACR,aAAa;EACb,GAAG,WAAW,WAAW;CAC3B,CAAC;CAGH,IAAI,cACF,KAAK,KAAK;EACR,aAAa;EACb,GAAG,WAAW,YAAY;CAC5B,CAAC;CAGH,OAAO;AACT,CACF;AAMF,MAAM,qBAAmC,EACtC,OAAO;CACN,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS;CAC7B,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS;AAC9B,CAAC,CAAC,CACD,WAAW,EAAE,SAAS,aAAa;CAClC,MAAM,OAA4B,CAAC;CAEnC,IAAI,SACF,KAAK,KAAK;EACR,aAAa;EACb,GAAG,WAAW,OAAO;CACvB,CAAC;CAGH,IAAI,QACF,KAAK,KAAK;EACR,aAAa;EACb,GAAG,WAAW,MAAM;CACtB,CAAC;CAGH,OAAO;AACT,CAAC;AAYH,MAAM,qBAAmC,EACtC,OAAO;CACN,qBAAqB,EAAE,OAAO,CAAC,CAAC,SAAS;CACzC,kBAAkB,EAAE,OAAO,CAAC,CAAC,SAAS;AACxC,CAAC,CAAC,CACD,WACE,EACC,qBAAqB,kBACrB,kBAAkB,oBACd;CACJ,MAAM,OAA4B,CAAC;CAEnC,IAAI,kBACF,KAAK,KAAK;EACR,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,GAAG,WAAW,gBAAgB;CAChC,CAAC;CAGH,IAAI,eACF,KAAK,KAAK;EACR,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY;EACZ,gBAAgB;EAChB,GAAG,WAAW,aAAa;CAC7B,CAAC;CAGH,OAAO;AACT,CACF;AAEF,MAAM,mCAAmC;AACzC,MAAM,2BAAyC,EAC5C,OAAO;CACN,oBAAoB,EAAE,OAAO,CAAC,CAAC,SAAS;CACxC,kBAAkB,EAAE,OAAO,CAAC,CAAC,SAAS;AACxC,CAAC,CAAC,CACD,WAAW,EAAE,oBAAoB,SAAS,kBAAkB,YAAY;CACvE,MAAM,CAAC,aAAa,kBAClB,SAAS,iCAAA,CACT,MAAM,GAAG;CACX,OAAO,CACL;EACE;EACA,GAAI,gBAAgB,EAAE,cAAc,IAAI,CAAC;EACzC,GAAG,WAAW,OAAO;CACvB,CACF;AACF,CAAC;;;;;AAMH,MAAa,eAAkD;CAE7D,0BAA0B;EACxB,YAAY,eAAe;EAC3B,aAAa;EACb,YAAY,UAAU,gBAAgB;CACxC;CAEA,0CAA0C;EACxC,YAAY,sBAAsB;EAClC,aAAa;EACb,YAAY;CACd;CAEA,wBAAwB;EACtB,YAAY,wBAAwB;EACpC,aAAa;EACb,YAAY,UAAU,mBAAmB,QAAQ,IAAI,SAAS,IAAI,CAAC;CACrE;CAEA,oBAAoB;EAClB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY;EACZ,gBAAgB;EAChB,YAAY,UAAU,YAAY;CACpC;CAEA,sBAAsB;EACpB,YAAY,sBAAsB;EAClC,aAAa;EACb,YAAY;CACd;CAEA,sBAAsB;EACpB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAYA;EACZ,gBAAgB;EAChB,YAAY,UAAU,cAAc;CACtC;CAEA,wBAAwB;EACtB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY;EACZ,gBAAgB;EAChB,YAAY,UAAU,gBAAgB;CACxC;CAEA,2BAA2B;EACzB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,cAAc;CACtC;CAEA,4BAA4B;EAC1B,YAAY,yBAAyB;EACrC,aAAa;CACf;CAEA,6BAA6B;EAC3B,YAAY,yBAAyB;EACrC,aAAa;CACf;CAEA,yBAAyB;EACvB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,sBAAsB;EACpB,YAAY,yBAAyB;EACrC,YAAY;EACZ,aAAa;CACf;CAEA,iDAAiD;EAC/C,YAAY,iBAAiB;EAC7B,aAAa;EACb,YAAY;CACd;CACA,oBAAoB;EAClB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,uBAAuB;EACrB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,8BAA8B;EAC5B,YAAY,gBAAgB;EAC5B,aAAa;EACb,YAAY;CACd;CAEA,uBAAuB;EACrB,YAAY,cAAc;EAC1B,aAAa;CACf;CAEA,6BAA6B;EAC3B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,6BAA6B;EAC3B,YAAY,yBAAyB;EACrC,aAAa;EAIb,gBAAgB;CAClB;CAEA,8BAA8B;EAC5B,YAAY,cAAc;EAC1B,aAAa;EACb,YAAY,UAAU,iBAAiB;CACzC;CAEA,mCAAmC;EACjC,YAAY,yBAAyB;EACrC,aAAa;EACb,YAAY;CACd;CAEA,gCAAgC;EAC9B,YAAY,yBAAyB;EACrC,aAAa;EACb,YAAY;CACd;CAEA,sBAAsB;EACpB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,oCAAoC;EAClC,YAAY,cAAc;EAC1B,aAAa;EAGb,YAAY;EACZ,YAAY,UAAU,kBAAkB;CAC1C;CAEA,4BAA4B;EAC1B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EAIb,gBAAgB;CAClB;CAEA,wBAAwB;EACtB,YAAY,sBAAsB;EAClC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,KAAK;CAC7B;CAEA,uBAAuB;EACrB,YAAY,cAAc;EAC1B,aAAa;EACb,YAAY,UAAU,cAAc;CACtC;CAEA,8BAA8B;EAC5B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,+BAA+B;EAC7B,YAAY,yBAAyB;EACrC,aAAa;CACf;CAEA,8BAA8B;EAC5B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,gBAAgB;CAClB;CAEA,0BAA0B;EACxB,YAAY,sBAAsB;EAClC,aAAa;EACb,YAAY,UAAU,WAAW;CACnC;CAEA,oBAAoB;EAClB,YAAY,yBAAyB;EACrC,aAAa;EACb,YAAY;CACd;CAEA,2BAA2B;EACzB,YAAY,cAAc;EAC1B,aAAa;EACb,YAAY,UAAU,aAAa;CACrC;CAEA,0BAA0B;EACxB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,cAAc;CACtC;CAEA,gCAAgC;EAC9B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAIA,qCAAqC;EACnC,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,aAAa;CACrC;CACA,iCAAiC;EAC/B,YAAY,yBAAyB;EACrC,aAAa;CACf;CAEA,gCAAgC;EAC9B,YAAY,yBAAyB;EACrC,aAAa;EAEb,YAAY;CACd;CAEA,yBAAyB;EACvB,YAAY,yBAAyB;EACrC,aAAa;EACb,YAAY;CACd;CAGA,+BAA+B;EAC7B,YAAY,wBAAwB;EACpC,SAAS;EACT,aAAa;EACb,YAAYC;EACZ,YAAY,UAAU,gBAAgB;CACxC;CAEA,0BAA0B;EACxB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,6BAA6B;EAC3B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,mBAAmB;CAC3C;CAEA,8BAA8B;EAC5B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,6BAA6B;EAC3B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,oBAAoB;EAClB,YAAY,yBAAyB;EACrC,aAAa;EACb,YAAY;CACd;CAEA,oBAAoB;EAClB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EAGb,YAAY;EACZ,YAAY,UAAU,cAAc;CACtC;CACA,6BAA6B;EAC3B,YAAY,cAAc;EAC1B,aAAa;EACb,YAAY,UAAU,YAAY,QAAQ,QAAQ,MAAM;CAC1D;CACA,uCAAuC;EACrC,YAAY,yBAAyB;EACrC,aAAa;EACb,YAAY;CACd;CACA,mBAAmB;EACjB,YAAY,mCAAmC;EAC/C,aAAa;EACb,YAAY;CACd;CAEA,yBAAyB;EACvB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,6BAA6B;EAC3B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,gCAAgC;EAC9B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,eAAe;CACvC;CAEA,uBAAuB;EACrB,YAAY,sBAAsB;EAClC,aAAa;EACb,YAAY,UAAU,SAAS;CACjC;CAEA,4BAA4B;EAC1B,YAAY,yBAAyB;EACrC,aAAa;EACb,YAAY;CACd;CAEA,kCAAkC;EAChC,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,2BAA2B;EACzB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,cAAc;CACtC;CACA,qBAAqB;EACnB,YAAY,cAAc;EAC1B,aAAa;EACb,YAAY,UAAU,aAAa;CACrC;CACA,yBAAyB;EACvB,YAAY,eAAe;EAC3B,aAAa;CACf;CAEA,0BAA0B;EACxB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,cAAc;CACtC;CACA,qBAAqB;EACnB,YAAY,cAAc;EAC1B,aAAa;CACf;CACA,cAAc;EACZ,YAAY,cAAc;EAC1B,aAAa;EACb,YAAY;CACd;CACA,yBAAyB;EACvB,YAAY,yBAAyB;EACrC,YAAYC;EACZ,aAAa;EACb,YAAY,UAAU,cAAc;CACtC;CAEA,kBAAkB;EAChB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,gBAAgB;CACxC;CAEA,uBAAuB;EACrB,YAAY,eAAe;EAC3B,aAAa;EACb,YAAY,UAAU,iBAAiB;CACzC;CAEA,cAAc;EACZ,YAAY,yBAAyB;EACrC,aAAa;EAEb,gBAAgB;CAClB;CAEA,4BAA4B;EAC1B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,6BAA6B;EAC3B,YAAY,iBAAiB;EAC7B,aAAa;EACb,YAAY;CACd;CAEA,0BAA0B;EACxB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,mBAAmB;CAC3C;CACA,mBAAmB;EACjB,YAAY,sBAAsB;EAClC,aAAa;EACb,YAAY,UAAU,cAAc;CACtC;CACA,0BAA0B;EACxB,YAAY,yBAAyB;EACrC,aAAa;EACb,YAAY;CACd;CACA,6BAA6B;EAC3B,YAAY,yBAAyB;EACrC,aAAa;EACb,YAAY,UAAU,gBAAgB;CACxC;CAEA,uBAAuB;EACrB,YAAY,eAAe;EAC3B,aAAa;CACf;CAEA,yBAAyB;EACvB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EAEb,gBAAgB;EAGhB,YAAY;EACZ,YAAY,UAAU,eAAe;CACvC;CAEA,2BAA2B;EACzB,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY,UAAU,iBAAiB;CACzC;CAEA,sBAAsB;EACpB,YAAY,cAAc;EAC1B,aAAa;CACf;CAIA,wCAAwC;EACtC,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;CACf;CAEA,6BAA6B;EAC3B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EAEb,gBAAgB;EAChB,YAAY,UAAU,eAAe;CACvC;CAEA,kCAAkC;EAChC,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY;CACd;CACA,iCAAiC;EAC/B,YAAY,yBAAyB;EACrC,aAAa;CACf;CAEA,8BAA8B;EAC5B,YAAY,yBAAyB;EACrC,SAAS;EACT,aAAa;EACb,YAAY;EACZ,gBAAgB;EAChB,YAAY,UAAU,YAAY;CACpC;CACA,4BAA4B;EAC1B,YAAY,iBAAiB;EAC7B,aAAa;CACf;AACF"}
|
|
1
|
+
{"version":3,"file":"known-actions.js","names":["nodeVersioning.id","gradleVersioning.id","condaVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/known-actions.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nimport { regEx } from '../../../util/regex.ts';\nimport { CrateDatasource } from '../../datasource/crate/index.ts';\nimport { DartVersionDatasource } from '../../datasource/dart-version/index.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { DotnetVersionDatasource } from '../../datasource/dotnet-version/index.ts';\nimport { GithubReleaseAttachmentsDatasource } from '../../datasource/github-release-attachments/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GradleVersionDatasource } from '../../datasource/gradle-version/index.ts';\nimport { JavaVersionDatasource } from '../../datasource/java-version/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport * as condaVersioning from '../../versioning/conda/index.ts';\nimport * as gradleVersioning from '../../versioning/gradle/index.ts';\nimport * as nodeVersioning from '../../versioning/node/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport { splitImageParts } from '../dockerfile/extract.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type { ActionSchema, KnownActionConfig } from './types.ts';\n\nexport function actionSchema(\n name: string,\n { withSchema, ...cfg }: KnownActionConfig,\n): ActionSchema {\n return z\n .object({\n uses: matchAction(name),\n with: withSchema ?? VersionVal,\n })\n .transform(({ with: deps }) =>\n deps.map((dep) => {\n const merged = { ...cfg, ...dep };\n merged.depName ??= merged.packageName;\n return merged;\n }),\n );\n}\n\nfunction matchAction(action: string): z.ZodString {\n return z\n .string()\n .regex(regEx(`(?:https?://[^/]+/)?${RegExp.escape(action)}(?:@.+)?$`));\n}\n\nfunction parseValue(\n currentValue: string | undefined,\n isInvalid?: (val: string) => boolean,\n): PackageDependency {\n if (!currentValue) {\n return {\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n depType: 'uses-with',\n };\n }\n if (isInvalid?.(currentValue) === true) {\n return {\n skipStage: 'extract',\n skipReason: 'invalid-version',\n depType: 'uses-with',\n currentValue,\n };\n }\n return { currentValue, depType: 'uses-with' };\n}\n\n/**\n * A single dependency, versioned by the given `with:` input.\n *\n * @param isInvalid should return `true` if the version is invalid and should be skipped\n */\nfunction valSchema(\n key: string,\n isInvalid?: (val: string) => boolean,\n): ActionSchema {\n return z\n .object({ [key]: z.string().optional() })\n .transform((val) => [parseValue(val[key], isInvalid)]);\n}\n\nconst VersionVal = valSchema('version');\n\n/**\n * `gradle/actions/setup-gradle` has a few `gradle-version`s that are strings used to denote another source than a specific version number, which shouldn't have an update proposed for.\n */\nconst GradleVersionAliases = new Set([\n 'wrapper',\n 'current',\n 'release-candidate',\n 'nightly',\n 'release-nightly',\n]);\n\n// Shared by the `actions/setup-{go,node,python}` entries below, whose\n// releases are published as `actions/{go,node,python}-versions` GitHub\n// releases, tagged like `20.11.0` or `20.11.0-1` (a build number suffix).\nconst actionsVersionsExtractVersion =\n '^(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)(-\\\\d+)?$';\n\n// `actions-rust-lang/setup-rust-toolchain`'s `toolchain` input is a\n// comma-separated list of toolchains; only the LAST one becomes the active\n// default toolchain, so that's the only one worth tracking.\nconst SetupRustToolchainWith: ActionSchema = z\n .object({ toolchain: z.string().optional() })\n .transform(({ toolchain }) => [\n parseValue(toolchain?.split(',').pop()?.trim()),\n ]);\n\nconst InstallBinaryWith: ActionSchema = z\n .object({ repo: z.string(), tag: z.string() })\n .transform(({ repo, tag }) => [{ packageName: repo, ...parseValue(tag) }]);\n\n// Same shape as `InstallBinaryWith` above, but the package name comes from\n// a crates.io crate name rather than a GitHub repo. `version` has a default\n// (`'latest'`), so real workflows commonly omit it from `with:` entirely.\nconst CargoInstallWith: ActionSchema = z\n .object({ crate: z.string(), version: z.string().optional() })\n .transform(({ crate, version }) => [\n { packageName: crate, ...parseValue(version) },\n ]);\n\nfunction parseImageValue(image: string | undefined): PackageDependency {\n if (!image) {\n return {\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n };\n }\n\n const dep = splitImageParts(image);\n return {\n depType: 'uses-with',\n ...dep,\n ...(dep.skipReason ? { skipStage: 'extract' } : {}),\n };\n}\n\nconst EcsRenderTaskDefinitionWith: ActionSchema = z\n .object({ image: z.string().optional() })\n .transform(({ image }) => [parseImageValue(image)]);\n\nconst sha256Regex = regEx(/^[a-f0-9]{64}$/);\nconst MiseWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n sha256: z.string().optional(),\n })\n .transform(({ version, sha256 }) => [\n {\n ...parseValue(version),\n ...(sha256 && sha256Regex.test(sha256) ? { currentDigest: sha256 } : {}),\n },\n ]);\n\n// Runtimes installable by `pnpm/setup`, keyed by the name used in its\n// `runtime:` input. `bun` and `deno` reuse the datasources of their respective\n// `setup-*` actions below.\nconst pnpmRuntimes: Record<string, PackageDependency | undefined> = {\n node: { datasource: NodeVersionDatasource.id, packageName: 'node' },\n bun: { datasource: NpmDatasource.id, packageName: 'bun' },\n deno: { datasource: NpmDatasource.id, packageName: 'deno' },\n};\n\nfunction parsePnpmRuntime(runtime: string | undefined): PackageDependency[] {\n if (!runtime) {\n return [];\n }\n\n // `<name>` or `<name>@<version>`, matching pnpm's `packageManager` field syntax\n const [name, version] = runtime.split('@');\n const cfg = pnpmRuntimes[name];\n if (!cfg) {\n return [\n {\n packageName: name || runtime,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'invalid-name',\n },\n ];\n }\n\n return [{ ...cfg, ...parseValue(version) }];\n}\n\nconst PnpmSetupWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n runtime: z.string().optional(),\n })\n .transform(({ version, runtime }) => [\n parseValue(version),\n ...parsePnpmRuntime(runtime),\n ]);\n\n// Distributions whose version numbering we can reliably track via the\n// java-version datasource (which sources releases from Adoptium/Eclipse\n// Temurin). Other distributions may not follow the same release cadence\n// or versioning, so we don't attempt to track them.\nconst supportedJavaDistributions = new Set(['temurin', 'adopt']);\n\nconst SetupJavaWith: ActionSchema = z\n .object({\n distribution: z.string().optional(),\n 'java-version': z.string().optional(),\n 'java-package': z.string().optional(),\n })\n .transform(\n ({\n distribution,\n 'java-version': version,\n 'java-package': javaPackage,\n }) => {\n const packageName = javaPackage?.startsWith('jre')\n ? 'java-jre'\n : 'java-jdk';\n\n if (\n !distribution ||\n !supportedJavaDistributions.has(distribution.toLowerCase())\n ) {\n return [\n {\n packageName,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unsupported',\n },\n ];\n }\n\n return [{ packageName, ...parseValue(version) }];\n },\n );\n\n// `'latest'` is a valid, documented value for `tflint_version` (it's also the\n// action's own default), but it isn't a version we can pin/bump, so treat it\n// as present-but-unsupported rather than as an invalid value.\nconst TflintWith: ActionSchema = z\n .object({ tflint_version: z.string().optional() })\n .transform(({ tflint_version: version }) => {\n if (version === 'latest') {\n return [\n {\n currentValue: version,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'unsupported-version',\n },\n ];\n }\n return [parseValue(version)];\n });\n\n// `helm/kind-action` can yield up to 3 dependencies from a single step: the\n// `kind` binary itself, the `kindest/node` image it boots, and (optionally) a\n// pinned `kubectl` binary. All 3 inputs are optional, so only emit a\n// dependency for the ones a workflow actually sets.\nconst KindActionWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n node_image: z.string().optional(),\n kubectl_version: z.string().optional(),\n })\n .transform(({ version, node_image, kubectl_version }) => {\n const deps: PackageDependency[] = [];\n\n if (version) {\n deps.push({\n packageName: 'kubernetes-sigs/kind',\n ...parseValue(version),\n });\n }\n\n if (node_image) {\n // `node_image` may be pinned by digest (e.g.\n // `kindest/node:v1.31.0@sha256:...`), so reuse the same Docker\n // image-reference parsing as `aws-actions/amazon-ecs-render-task-definition`\n // rather than naively splitting on `:`.\n deps.push({\n datasource: DockerDatasource.id,\n ...parseImageValue(node_image),\n });\n }\n\n if (kubectl_version) {\n deps.push({\n packageName: 'kubernetes/kubernetes',\n ...parseValue(kubectl_version),\n });\n }\n\n return deps;\n });\n\n// `erlef/setup-beam` can yield up to 4 dependencies from a single step: OTP,\n// Elixir, Gleam, and rebar3. All inputs are optional, so only emit a\n// dependency for the ones a workflow actually sets.\nconst ErlefSetupBeamWith: ActionSchema = z\n .object({\n 'otp-version': z.string().optional(),\n 'elixir-version': z.string().optional(),\n 'gleam-version': z.string().optional(),\n 'rebar3-version': z.string().optional(),\n })\n .transform(\n ({\n 'otp-version': otpVersion,\n 'elixir-version': elixirVersion,\n 'gleam-version': gleamVersion,\n 'rebar3-version': rebar3Version,\n }) => {\n const deps: PackageDependency[] = [];\n\n if (otpVersion) {\n deps.push({\n packageName: 'erlang/otp',\n // erlang/otp tags releases like `OTP-27.1.2`\n extractVersion: '^OTP-(?<version>.+)$',\n ...parseValue(otpVersion),\n });\n }\n\n if (elixirVersion) {\n deps.push({\n packageName: 'elixir-lang/elixir',\n ...parseValue(elixirVersion),\n });\n }\n\n if (gleamVersion) {\n deps.push({\n packageName: 'gleam-lang/gleam',\n ...parseValue(gleamVersion),\n });\n }\n\n if (rebar3Version) {\n deps.push({\n packageName: 'erlang/rebar3',\n ...parseValue(rebar3Version),\n });\n }\n\n return deps;\n },\n );\n\n// `graalvm/setup-graalvm` can yield up to 2 dependencies from a single step:\n// the JDK version it's built on, and the GraalVM distribution version\n// itself. Both inputs are optional, so only emit a dependency for the ones\n// a workflow actually sets.\n//\n// `graalvm/graalvm-ce-builds` has used several tag-naming conventions over\n// its history (`vm-ce-`, `vm-`, `jdk-`, `graal-`), and still alternates\n// between `jdk-` and `graal-` prefixes for releases after GraalVM's 2023\n// unification with JDK versioning, so we match both of those current-era\n// prefixes rather than either one alone.\nconst GraalvmSetupWith: ActionSchema = z\n .object({\n 'java-version': z.string().optional(),\n version: z.string().optional(),\n })\n .transform(({ 'java-version': javaVersion, version }) => {\n const deps: PackageDependency[] = [];\n\n if (javaVersion) {\n deps.push({\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jdk',\n ...parseValue(javaVersion),\n });\n }\n\n if (version) {\n deps.push({\n datasource: GithubReleasesDatasource.id,\n packageName: 'graalvm/graalvm-ce-builds',\n extractVersion: '^(?:jdk|graal)-(?<version>.+)$',\n ...parseValue(version),\n });\n }\n\n return deps;\n });\n\n// `moonrepo/setup-toolchain` can yield up to 2 dependencies from a single\n// step: the `moon` binary and the `proto` binary. Both inputs are optional,\n// so only emit a dependency for the ones a workflow actually sets.\nconst MoonrepoSetupToolchainWith: ActionSchema = z\n .object({\n 'moon-version': z.string().optional(),\n 'proto-version': z.string().optional(),\n })\n .transform(\n ({ 'moon-version': moonVersion, 'proto-version': protoVersion }) => {\n const deps: PackageDependency[] = [];\n\n if (moonVersion) {\n deps.push({\n packageName: 'moonrepo/moon',\n ...parseValue(moonVersion),\n });\n }\n\n if (protoVersion) {\n deps.push({\n packageName: 'moonrepo/proto',\n ...parseValue(protoVersion),\n });\n }\n\n return deps;\n },\n );\n\n// `crystal-lang/install-crystal` can yield up to 2 dependencies from a\n// single step: the Crystal compiler itself, and the shards package manager.\n// Both inputs are optional, so only emit a dependency for the ones a\n// workflow actually sets.\nconst InstallCrystalWith: ActionSchema = z\n .object({\n crystal: z.string().optional(),\n shards: z.string().optional(),\n })\n .transform(({ crystal, shards }) => {\n const deps: PackageDependency[] = [];\n\n if (crystal) {\n deps.push({\n packageName: 'crystal-lang/crystal',\n ...parseValue(crystal),\n });\n }\n\n if (shards) {\n deps.push({\n packageName: 'crystal-lang/shards',\n ...parseValue(shards),\n });\n }\n\n return deps;\n });\n\n// `conda-incubator/setup-miniconda` exposes 6 separate version inputs\n// (`miniconda-version`, `miniforge-version`, `conda-version`,\n// `conda-build-version`, `python-version`, `mamba-version`), but only 2 map\n// onto a datasource we can reliably use: `miniforge-version` (GitHub\n// releases of `conda-forge/miniforge`) and `python-version` (the same\n// `actions/python-versions` releases already used for `actions/setup-python`).\n// The other 4 are versioned via anaconda.org channels or an installer\n// archive with no clean Renovate datasource, so they're intentionally not\n// tracked. Both supported inputs are optional, so only emit a dependency\n// for the ones a workflow actually sets.\nconst SetupMinicondaWith: ActionSchema = z\n .object({\n 'miniforge-version': z.string().optional(),\n 'python-version': z.string().optional(),\n })\n .transform(\n ({\n 'miniforge-version': miniforgeVersion,\n 'python-version': pythonVersion,\n }) => {\n const deps: PackageDependency[] = [];\n\n if (miniforgeVersion) {\n deps.push({\n datasource: GithubReleasesDatasource.id,\n depName: 'miniforge',\n packageName: 'conda-forge/miniforge',\n ...parseValue(miniforgeVersion),\n });\n }\n\n if (pythonVersion) {\n deps.push({\n datasource: GithubReleasesDatasource.id,\n depName: 'python',\n packageName: 'actions/python-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n ...parseValue(pythonVersion),\n });\n }\n\n return deps;\n },\n );\n\nconst renovateGithubActionDefaultImage = 'ghcr.io/renovatebot/renovate';\nconst RenovateGithubActionWith: ActionSchema = z\n .object({\n 'renovate-version': z.string().optional(),\n 'renovate-image': z.string().optional(),\n })\n .transform(({ 'renovate-version': version, 'renovate-image': image }) => {\n const [packageName, currentDigest] = (\n image ?? renovateGithubActionDefaultImage\n ).split('@');\n return [\n {\n packageName,\n ...(currentDigest ? { currentDigest } : {}),\n ...parseValue(version),\n },\n ];\n });\n\n/**\n * Community-maintained and first-party (GitHub's own `actions/*`) Actions\n * with known version input schemas.\n */\nexport const knownActions: Record<string, KnownActionConfig> = {\n // https://github.com/abatilo/actions-poetry\n 'abatilo/actions-poetry': {\n datasource: PypiDatasource.id,\n packageName: 'poetry',\n withSchema: valSchema('poetry-version'),\n },\n // https://github.com/actions-rust-lang/setup-rust-toolchain\n 'actions-rust-lang/setup-rust-toolchain': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: SetupRustToolchainWith,\n },\n // https://github.com/actions/setup-dotnet\n 'actions/setup-dotnet': {\n datasource: DotnetVersionDatasource.id,\n packageName: 'dotnet-sdk',\n withSchema: valSchema('dotnet-version', (val) => val.includes('\\n')),\n },\n // https://github.com/actions/setup-go\n 'actions/setup-go': {\n datasource: GithubReleasesDatasource.id,\n depName: 'go',\n packageName: 'actions/go-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('go-version'),\n },\n // https://github.com/actions/setup-java\n 'actions/setup-java': {\n datasource: JavaVersionDatasource.id,\n packageName: '', // determined from `distribution`/`java-package` inputs\n withSchema: SetupJavaWith,\n },\n // https://github.com/actions/setup-node\n 'actions/setup-node': {\n datasource: GithubReleasesDatasource.id,\n depName: 'node',\n packageName: 'actions/node-versions',\n versioning: nodeVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('node-version'),\n },\n // https://github.com/actions/setup-python\n 'actions/setup-python': {\n datasource: GithubReleasesDatasource.id,\n depName: 'python',\n packageName: 'actions/python-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('python-version'),\n },\n // https://github.com/aquaproj/aqua-installer\n 'aquaproj/aqua-installer': {\n datasource: GithubReleasesDatasource.id,\n depName: 'aqua',\n packageName: 'aquaproj/aqua',\n withSchema: valSchema('aqua_version'),\n },\n // https://github.com/aquasecurity/setup-trivy\n 'aquasecurity/setup-trivy': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/aquasecurity/trivy-action\n 'aquasecurity/trivy-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/astral-sh/ruff-action\n 'astral-sh/ruff-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'ruff',\n packageName: 'astral-sh/ruff',\n },\n // https://github.com/astral-sh/setup-uv\n 'astral-sh/setup-uv': {\n datasource: GithubReleasesDatasource.id,\n versioning: npmVersioning.id,\n packageName: 'astral-sh/uv',\n },\n // https://github.com/aws-actions/amazon-ecs-render-task-definition\n 'aws-actions/amazon-ecs-render-task-definition': {\n datasource: DockerDatasource.id,\n packageName: '', // determined from `image` input\n withSchema: EcsRenderTaskDefinitionWith,\n },\n 'azure/setup-helm': {\n datasource: GithubReleasesDatasource.id,\n depName: 'helm',\n packageName: 'helm/helm',\n },\n // https://github.com/azure/setup-kubectl\n 'azure/setup-kubectl': {\n datasource: GithubReleasesDatasource.id,\n depName: 'kubectl',\n packageName: 'kubernetes/kubernetes',\n },\n // https://github.com/baptiste0928/cargo-install\n 'baptiste0928/cargo-install': {\n datasource: CrateDatasource.id,\n packageName: '', // determined from the `crate` input\n withSchema: CargoInstallWith,\n },\n // https://github.com/biomejs/setup-biome\n 'biomejs/setup-biome': {\n datasource: NpmDatasource.id,\n packageName: '@biomejs/biome',\n },\n // https://github.com/bufbuild/buf-setup-action\n 'bufbuild/buf-setup-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'buf',\n packageName: 'bufbuild/buf',\n },\n // https://github.com/cargo-bins/cargo-binstall\n 'cargo-bins/cargo-binstall': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cargo-bins/cargo-binstall',\n // the repo also publishes releases for its internal sub-crates (e.g.\n // `detect-targets-v0.1.91`, `binstalk-v0.28.81`) — only match the bare\n // main-tool release tag\n extractVersion: '^v(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)$',\n },\n // https://github.com/cloudflare/wrangler-action\n 'cloudflare/wrangler-action': {\n datasource: NpmDatasource.id,\n packageName: 'wrangler',\n withSchema: valSchema('wranglerVersion'),\n },\n // https://github.com/conda-incubator/setup-miniconda\n 'conda-incubator/setup-miniconda': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: miniforge-version, python-version\n withSchema: SetupMinicondaWith,\n },\n // https://github.com/crystal-lang/install-crystal\n 'crystal-lang/install-crystal': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: crystal, shards\n withSchema: InstallCrystalWith,\n },\n // https://github.com/cue-lang/setup-cue\n 'cue-lang/setup-cue': {\n datasource: GithubReleasesDatasource.id,\n depName: 'cue',\n packageName: 'cue-lang/cue',\n },\n // https://github.com/cycjimmy/semantic-release-action\n 'cycjimmy/semantic-release-action': {\n datasource: NpmDatasource.id,\n packageName: 'semantic-release',\n // the action's docs describe `semantic_version` as a version range, not\n // a pinned exact version\n versioning: npmVersioning.id,\n withSchema: valSchema('semantic_version'),\n },\n // https://github.com/dagger/dagger-for-github\n 'dagger/dagger-for-github': {\n datasource: GithubReleasesDatasource.id,\n depName: 'dagger',\n packageName: 'dagger/dagger',\n // the repo also publishes per-SDK/component tags sharing the same\n // version (e.g. `sdk/typescript/v0.21.9`, `helm/chart/v0.21.9`) — only\n // match the bare release tag\n extractVersion: '^v(?<version>\\\\d+\\\\..*)$',\n },\n // https://github.com/dart-lang/setup-dart\n 'dart-lang/setup-dart': {\n datasource: DartVersionDatasource.id,\n depName: 'dart',\n packageName: 'dart-lang/sdk',\n withSchema: valSchema('sdk'),\n },\n // https://github.com/azure/setup-helm\n 'denoland/setup-deno': {\n datasource: NpmDatasource.id,\n packageName: 'deno',\n withSchema: valSchema('deno-version'),\n },\n // https://github.com/docker/setup-buildx-action\n 'docker/setup-buildx-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'buildx',\n packageName: 'docker/buildx',\n },\n // https://github.com/docker/setup-compose-action\n 'docker/setup-compose-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'docker/compose',\n },\n // https://github.com/docker/setup-docker-action\n 'docker/setup-docker-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'docker',\n packageName: 'moby/moby',\n extractVersion: '^docker-(?<version>.+)$',\n },\n // https://github.com/dtolnay/rust-toolchain\n 'dtolnay/rust-toolchain': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: valSchema('toolchain'),\n },\n // https://github.com/erlef/setup-beam\n 'erlef/setup-beam': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: OTP, Elixir, Gleam, rebar3\n withSchema: ErlefSetupBeamWith,\n },\n // https://github.com/expo/expo-github-action\n 'expo/expo-github-action': {\n datasource: NpmDatasource.id,\n packageName: 'eas-cli',\n withSchema: valSchema('eas-version'),\n },\n // https://github.com/extractions/setup-just\n 'extractions/setup-just': {\n datasource: GithubReleasesDatasource.id,\n depName: 'just',\n packageName: 'casey/just',\n withSchema: valSchema('just-version'),\n },\n // https://github.com/foundry-rs/foundry-toolchain\n 'foundry-rs/foundry-toolchain': {\n datasource: GithubReleasesDatasource.id,\n depName: 'foundry',\n packageName: 'foundry-rs/foundry',\n },\n // https://github.com/GitTools/actions (there is no root-level Action, only\n // subpaths are usable; the sibling `GitTools/actions/gitreleasemanager/setup`\n // is a separate, unrelated Action)\n 'GitTools/actions/gitversion/setup': {\n datasource: GithubReleasesDatasource.id,\n depName: 'gitversion',\n packageName: 'GitTools/GitVersion',\n withSchema: valSchema('versionSpec'),\n },\n 'golangci/golangci-lint-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'golangci/golangci-lint',\n },\n // https://github.com/goreleaser/goreleaser-action\n 'goreleaser/goreleaser-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'goreleaser/goreleaser',\n // the default value (`~> v2`) is itself a range, not a pinned version\n versioning: npmVersioning.id,\n },\n // https://github.com/graalvm/setup-graalvm\n 'graalvm/setup-graalvm': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: java-version, version\n withSchema: GraalvmSetupWith,\n },\n // https://github.com/gradle/actions (there is no root-level Action, only\n // subpaths such as `setup-gradle` are usable)\n 'gradle/actions/setup-gradle': {\n datasource: GradleVersionDatasource.id,\n depName: 'gradle',\n packageName: 'gradle/gradle',\n versioning: gradleVersioning.id,\n withSchema: valSchema('gradle-version', (val) =>\n GradleVersionAliases.has(val),\n ),\n },\n // https://github.com/hashicorp/setup-packer\n 'hashicorp/setup-packer': {\n datasource: GithubReleasesDatasource.id,\n depName: 'packer',\n packageName: 'hashicorp/packer',\n },\n // https://github.com/hashicorp/setup-terraform\n 'hashicorp/setup-terraform': {\n datasource: GithubReleasesDatasource.id,\n depName: 'terraform',\n packageName: 'hashicorp/terraform',\n withSchema: valSchema('terraform_version'),\n },\n // https://github.com/helm/chart-releaser-action\n 'helm/chart-releaser-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'chart-releaser',\n packageName: 'helm/chart-releaser',\n },\n // https://github.com/helm/chart-testing-action\n 'helm/chart-testing-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'chart-testing',\n packageName: 'helm/chart-testing',\n },\n // https://github.com/helm/kind-action\n 'helm/kind-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: `version`, `node_image`, `kubectl_version`\n withSchema: KindActionWith,\n },\n // https://github.com/j178/prek-action\n 'j178/prek-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'prek',\n packageName: 'j178/prek',\n // the value may be a semver range (e.g. `0.3.x`, `<=1.0.0`), not just a\n // pinned version\n versioning: npmVersioning.id,\n withSchema: valSchema('prek-version'),\n },\n 'jakebailey/pyright-action': {\n datasource: NpmDatasource.id,\n packageName: 'pyright',\n withSchema: valSchema('version', (val) => val === 'PATH'),\n },\n 'jaxxstorm/action-install-gh-release': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'jdx/mise-action': {\n datasource: GithubReleaseAttachmentsDatasource.id,\n packageName: 'jdx/mise',\n withSchema: MiseWith,\n },\n // https://github.com/jfrog/setup-jfrog-cli\n 'jfrog/setup-jfrog-cli': {\n datasource: GithubReleasesDatasource.id,\n depName: 'jfrog-cli',\n packageName: 'jfrog/jfrog-cli',\n },\n // https://github.com/julia-actions/setup-julia\n 'julia-actions/setup-julia': {\n datasource: GithubReleasesDatasource.id,\n depName: 'julia',\n packageName: 'JuliaLang/julia',\n },\n // https://github.com/jwlawson/actions-setup-cmake\n 'jwlawson/actions-setup-cmake': {\n datasource: GithubReleasesDatasource.id,\n depName: 'cmake',\n packageName: 'Kitware/CMake',\n withSchema: valSchema('cmake-version'),\n },\n // https://github.com/moonrepo/setup-rust\n 'moonrepo/setup-rust': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: valSchema('channel'),\n },\n // https://github.com/moonrepo/setup-toolchain\n 'moonrepo/setup-toolchain': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined per dependency: moon-version, proto-version\n withSchema: MoonrepoSetupToolchainWith,\n },\n // https://github.com/mozilla-actions/sccache-action\n 'mozilla-actions/sccache-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'sccache',\n packageName: 'mozilla/sccache',\n },\n // https://github.com/opentofu/setup-opentofu\n 'opentofu/setup-opentofu': {\n datasource: GithubReleasesDatasource.id,\n depName: 'opentofu',\n packageName: 'opentofu/opentofu',\n withSchema: valSchema('tofu_version'),\n },\n 'oven-sh/setup-bun': {\n datasource: NpmDatasource.id,\n packageName: 'bun',\n withSchema: valSchema('bun-version'),\n },\n 'pdm-project/setup-pdm': {\n datasource: PypiDatasource.id,\n packageName: 'pdm',\n },\n // https://github.com/peaceiris/actions-hugo\n 'peaceiris/actions-hugo': {\n datasource: GithubReleasesDatasource.id,\n depName: 'hugo',\n packageName: 'gohugoio/hugo',\n withSchema: valSchema('hugo-version'),\n },\n 'pnpm/action-setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n },\n 'pnpm/setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n withSchema: PnpmSetupWith,\n },\n 'prefix-dev/setup-pixi': {\n datasource: GithubReleasesDatasource.id,\n versioning: condaVersioning.id,\n packageName: 'prefix-dev/pixi',\n withSchema: valSchema('pixi-version'),\n },\n // https://github.com/pulumi/actions\n 'pulumi/actions': {\n datasource: GithubReleasesDatasource.id,\n depName: 'pulumi',\n packageName: 'pulumi/pulumi',\n withSchema: valSchema('pulumi-version'),\n },\n // https://github.com/PyO3/maturin-action\n 'PyO3/maturin-action': {\n datasource: PypiDatasource.id,\n packageName: 'maturin',\n withSchema: valSchema('maturin-version'),\n },\n // https://github.com/pypa/hatch/tree/install\n 'pypa/hatch': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pypa/hatch',\n // Strip hatch- prefix from release tags\n extractVersion: '^hatch-(?<version>.+)$',\n },\n // https://github.com/raven-actions/actionlint\n 'raven-actions/actionlint': {\n datasource: GithubReleasesDatasource.id,\n depName: 'actionlint',\n packageName: 'rhysd/actionlint',\n },\n // https://github.com/renovatebot/github-action\n 'renovatebot/github-action': {\n datasource: DockerDatasource.id,\n packageName: '', // determined from `renovate-image` input, if set\n withSchema: RenovateGithubActionWith,\n },\n // https://github.com/reviewdog/action-setup\n 'reviewdog/action-setup': {\n datasource: GithubReleasesDatasource.id,\n depName: 'reviewdog',\n packageName: 'reviewdog/reviewdog',\n withSchema: valSchema('reviewdog_version'),\n },\n 'ruby/setup-ruby': {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby',\n withSchema: valSchema('ruby-version'),\n },\n 'sigoden/install-binary': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'sigstore/cosign-installer': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n withSchema: valSchema('cosign-release'),\n },\n // https://github.com/snok/install-poetry\n 'snok/install-poetry': {\n datasource: PypiDatasource.id,\n packageName: 'poetry',\n },\n // https://github.com/stCarolas/setup-maven\n 'stCarolas/setup-maven': {\n datasource: GithubReleasesDatasource.id,\n depName: 'maven',\n packageName: 'apache/maven',\n // apache/maven tags its releases as `maven-X.Y.Z`\n extractVersion: '^maven-(?<version>.+)$',\n // the input also documents range/glob specs (e.g. `10.x`, `>=10.15.0`),\n // not just pinned versions\n versioning: npmVersioning.id,\n withSchema: valSchema('maven-version'),\n },\n // https://github.com/subosito/flutter-action\n 'subosito/flutter-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'flutter',\n packageName: 'flutter/flutter',\n withSchema: valSchema('flutter-version'),\n },\n // https://github.com/supabase/setup-cli\n 'supabase/setup-cli': {\n datasource: NpmDatasource.id,\n packageName: 'supabase',\n },\n // https://github.com/superfly/flyctl-actions (there is no root-level\n // Action for this purpose — the repo root has an unrelated action.yml, and\n // the real usable Action lives at the `setup-flyctl` subpath)\n 'superfly/flyctl-actions/setup-flyctl': {\n datasource: GithubReleasesDatasource.id,\n depName: 'flyctl',\n packageName: 'superfly/flyctl',\n },\n // https://github.com/swift-actions/setup-swift\n 'swift-actions/setup-swift': {\n datasource: GithubReleasesDatasource.id,\n depName: 'swift',\n packageName: 'swiftlang/swift',\n // swiftlang/swift tags releases like `swift-6.3.3-RELEASE`\n extractVersion: '^swift-(?<version>.+)-RELEASE$',\n withSchema: valSchema('swift-version'),\n },\n // https://github.com/terraform-linters/setup-tflint\n 'terraform-linters/setup-tflint': {\n datasource: GithubReleasesDatasource.id,\n depName: 'tflint',\n packageName: 'terraform-linters/tflint',\n withSchema: TflintWith,\n },\n 'UpCloudLtd/upcloud-cli-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'UpCloudLtd/upcloud-cli',\n },\n // https://github.com/WillAbides/setup-go-faster\n 'WillAbides/setup-go-faster': {\n datasource: GithubReleasesDatasource.id,\n depName: 'go',\n packageName: 'actions/go-versions',\n versioning: npmVersioning.id,\n extractVersion: actionsVersionsExtractVersion,\n withSchema: valSchema('go-version'),\n },\n 'zizmorcore/zizmor-action': {\n datasource: DockerDatasource.id,\n packageName: 'ghcr.io/zizmorcore/zizmor',\n },\n};\n"],"mappings":"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"}
|
|
@@ -11,8 +11,8 @@ function parseResources(content, packageFile) {
|
|
|
11
11
|
});
|
|
12
12
|
const packages = [];
|
|
13
13
|
const repositories = [];
|
|
14
|
-
for (const resource of resources) if (resource.kind === "
|
|
15
|
-
else
|
|
14
|
+
for (const resource of resources) if (resource.kind === "PackageRepository") repositories.push(resource);
|
|
15
|
+
else packages.push(resource);
|
|
16
16
|
return {
|
|
17
17
|
packageFile,
|
|
18
18
|
repositories,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/glasskube/extract.ts"],"sourcesContent":["import { isFalsy } from '@sindresorhus/is';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { GlasskubePackagesDatasource } from '../../datasource/glasskube-packages/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport {\n GlasskubeResource,\n type Package,\n type PackageRepository,\n} from './schema.ts';\nimport type { GlasskubeResources } from './types.ts';\n\nfunction parseResources(\n content: string,\n packageFile: string,\n): GlasskubeResources {\n const resources: GlasskubeResource[] = parseYaml(content, {\n customSchema: GlasskubeResource,\n failureBehaviour: 'filter',\n });\n\n const packages: Package[] = [];\n const repositories: PackageRepository[] = [];\n\n for (const resource of resources) {\n if (resource.kind === '
|
|
1
|
+
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/glasskube/extract.ts"],"sourcesContent":["import { isFalsy } from '@sindresorhus/is';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { GlasskubePackagesDatasource } from '../../datasource/glasskube-packages/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport {\n GlasskubeResource,\n type Package,\n type PackageRepository,\n} from './schema.ts';\nimport type { GlasskubeResources } from './types.ts';\n\nfunction parseResources(\n content: string,\n packageFile: string,\n): GlasskubeResources {\n const resources: GlasskubeResource[] = parseYaml(content, {\n customSchema: GlasskubeResource,\n failureBehaviour: 'filter',\n });\n\n const packages: Package[] = [];\n const repositories: PackageRepository[] = [];\n\n for (const resource of resources) {\n if (resource.kind === 'PackageRepository') {\n repositories.push(resource);\n } else {\n // the schema parses no kind other than `Package` and `ClusterPackage`\n packages.push(resource);\n }\n }\n\n return { packageFile, repositories, packages };\n}\n\nfunction resolvePackageDependencies(\n packages: Package[],\n repositories: PackageRepository[],\n): PackageDependency[] {\n const deps: PackageDependency[] = [];\n for (const pkg of packages) {\n const dep: PackageDependency = {\n depName: pkg.spec.packageInfo.name,\n currentValue: pkg.spec.packageInfo.version,\n datasource: GlasskubePackagesDatasource.id,\n };\n\n const repository = findRepository(\n pkg.spec.packageInfo.repositoryName ?? null,\n repositories,\n );\n\n if (repository === null) {\n dep.skipReason = 'unknown-registry';\n } else {\n dep.registryUrls = [repository.spec.url];\n }\n\n deps.push(dep);\n }\n return deps;\n}\n\nfunction findRepository(\n name: string | null,\n repositories: PackageRepository[],\n): PackageRepository | null {\n for (const repository of repositories) {\n if (name === repository.metadata.name) {\n return repository;\n }\n // v8 ignore else -- needs a manifest whose repositories match no name\n if (isFalsy(name) && isDefaultRepository(repository)) {\n return repository;\n }\n }\n return null;\n}\n\nfunction isDefaultRepository(repository: PackageRepository): boolean {\n return (\n repository.metadata.annotations?.[\n 'packages.glasskube.dev/default-repository'\n ] === 'true'\n );\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n _config?: ExtractConfig,\n): PackageFileContent | null {\n const { packages, repositories } = parseResources(content, packageFile);\n const deps = resolvePackageDependencies(packages, repositories);\n return { deps };\n}\n\nexport async function extractAllPackageFiles(\n _config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const allRepositories: PackageRepository[] = [];\n const glasskubeResourceFiles: GlasskubeResources[] = [];\n for (const packageFile of packageFiles) {\n const content = await readLocalFile(packageFile, 'utf8');\n // v8 ignore else -- needs a listed package file that cannot be read\n if (content !== null) {\n const resources = parseResources(content, packageFile);\n allRepositories.push(...resources.repositories);\n glasskubeResourceFiles.push(resources);\n }\n }\n\n const result: PackageFile[] = [];\n for (const file of glasskubeResourceFiles) {\n const deps = resolvePackageDependencies(file.packages, allRepositories);\n if (deps.length > 0) {\n result.push({ packageFile: file.packageFile, deps });\n }\n }\n return result.length ? result : null;\n}\n"],"mappings":";;;;;;AAiBA,SAAS,eACP,SACA,aACoB;CACpB,MAAM,YAAiC,UAAU,SAAS;EACxD,cAAc;EACd,kBAAkB;CACpB,CAAC;CAED,MAAM,WAAsB,CAAC;CAC7B,MAAM,eAAoC,CAAC;CAE3C,KAAK,MAAM,YAAY,WACrB,IAAI,SAAS,SAAS,qBACpB,aAAa,KAAK,QAAQ;MAG1B,SAAS,KAAK,QAAQ;CAI1B,OAAO;EAAE;EAAa;EAAc;CAAS;AAC/C;AAEA,SAAS,2BACP,UACA,cACqB;CACrB,MAAM,OAA4B,CAAC;CACnC,KAAK,MAAM,OAAO,UAAU;EAC1B,MAAM,MAAyB;GAC7B,SAAS,IAAI,KAAK,YAAY;GAC9B,cAAc,IAAI,KAAK,YAAY;GACnC,YAAY,4BAA4B;EAC1C;EAEA,MAAM,aAAa,eACjB,IAAI,KAAK,YAAY,kBAAkB,MACvC,YACF;EAEA,IAAI,eAAe,MACjB,IAAI,aAAa;OAEjB,IAAI,eAAe,CAAC,WAAW,KAAK,GAAG;EAGzC,KAAK,KAAK,GAAG;CACf;CACA,OAAO;AACT;AAEA,SAAS,eACP,MACA,cAC0B;CAC1B,KAAK,MAAM,cAAc,cAAc;EACrC,IAAI,SAAS,WAAW,SAAS,MAC/B,OAAO;;EAGT,IAAI,QAAQ,IAAI,KAAK,oBAAoB,UAAU,GACjD,OAAO;CAEX;CACA,OAAO;AACT;AAEA,SAAS,oBAAoB,YAAwC;CACnE,OACE,WAAW,SAAS,cAClB,iDACI;AAEV;AAEA,SAAgB,mBACd,SACA,aACA,SAC2B;CAC3B,MAAM,EAAE,UAAU,iBAAiB,eAAe,SAAS,WAAW;CAEtE,OAAO,EAAE,MADI,2BAA2B,UAAU,YACtC,EAAE;AAChB;AAEA,eAAsB,uBACpB,SACA,cAC+B;CAC/B,MAAM,kBAAuC,CAAC;CAC9C,MAAM,yBAA+C,CAAC;CACtD,KAAK,MAAM,eAAe,cAAc;EACtC,MAAM,UAAU,MAAM,cAAc,aAAa,MAAM;;EAEvD,IAAI,YAAY,MAAM;GACpB,MAAM,YAAY,eAAe,SAAS,WAAW;GACrD,gBAAgB,KAAK,GAAG,UAAU,YAAY;GAC9C,uBAAuB,KAAK,SAAS;EACvC;CACF;CAEA,MAAM,SAAwB,CAAC;CAC/B,KAAK,MAAM,QAAQ,wBAAwB;EACzC,MAAM,OAAO,2BAA2B,KAAK,UAAU,eAAe;EACtE,IAAI,KAAK,SAAS,GAChB,OAAO,KAAK;GAAE,aAAa,KAAK;GAAa;EAAK,CAAC;CAEvD;CACA,OAAO,OAAO,SAAS,SAAS;AAClC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts-extra.js","names":[],"sources":["../../../../lib/modules/manager/gomod/artifacts-extra.ts"],"sourcesContent":["import { diffLines } from 'diff';\nimport { markdownTable } from 'markdown-table';\nimport type { UpdateArtifactsConfig } from '../types.ts';\nimport { parseLine } from './line-parser.ts';\nimport type { ExtraDep } from './types.ts';\n\nexport function getExtraDeps(\n goModBefore: string,\n goModAfter: string,\n excludeDeps: string[],\n): ExtraDep[] {\n const result: ExtraDep[] = [];\n\n const diff = diffLines(goModBefore, goModAfter, {\n newlineIsToken: true,\n });\n\n const addDeps: Record<string, string> = {};\n const rmDeps: Record<string, string> = {};\n for (const { added, removed, value } of diff) {\n if (!added && !removed) {\n continue;\n }\n\n const res = parseLine(value);\n if (!res) {\n continue;\n }\n\n const { depName, depType, currentValue } = res;\n if (!depName || !currentValue) {\n continue;\n }\n\n let expandedDepName = depName;\n // NOTE: Right now the only special depType we care about is 'toolchain' because the table\n // rendering prior to this change was ambiguous with regards to go version vs toolchain\n // version updates.\n if (depType === 'toolchain') {\n expandedDepName = `${depName} (${depType})`;\n }\n\n if (added) {\n addDeps[expandedDepName] = currentValue;\n } else {\n rmDeps[expandedDepName] = currentValue;\n }\n }\n\n for (const [depName, currentValue] of Object.entries(rmDeps)) {\n if (excludeDeps.includes(depName)) {\n continue;\n }\n\n const newValue = addDeps[depName];\n // v8 ignore else -- needs a removed dep that is not added back\n if (newValue) {\n result.push({\n depName,\n currentValue,\n newValue,\n });\n }\n }\n\n return result;\n}\n\nexport function extraDepsTable(extraDeps: ExtraDep[]): string {\n const tableLines: string[][] = [];\n\n tableLines.push(['**Package**', '**Change**']);\n\n for (const { depName, currentValue, newValue } of extraDeps) {\n const depNameQuoted = `\\`${depName}\\``;\n const versionChangeQuoted = `\\`${currentValue}\\` -> \\`${newValue}\\``;\n tableLines.push([depNameQuoted, versionChangeQuoted]);\n }\n\n return markdownTable(tableLines, {\n align: ['l', 'l'],\n });\n}\n\nexport function getExtraDepsNotice(\n goModBefore: string | null,\n goModAfter: string | null,\n excludeDeps: string[],\n { minimumReleaseAge }: Pick<UpdateArtifactsConfig, 'minimumReleaseAge'>,\n): string | null {\n if (!goModBefore || !goModAfter) {\n return null;\n }\n\n const extraDeps = getExtraDeps(goModBefore, goModAfter, excludeDeps);\n if (extraDeps.length === 0) {\n return null;\n }\n\n const noticeLines: string[] = [\n 'In order to perform the update(s) described in the table above, Renovate ran the `go get` command, which resulted in the following additional change(s):',\n '\\n',\n ];\n\n const goUpdated = extraDeps.some(({ depName }) => depName === 'go');\n const toolchainUpdated = extraDeps.some(\n ({ depName }) => depName === 'go (toolchain)',\n );\n const otherDepsCount =\n extraDeps.length - (goUpdated ? 1 : 0) - (toolchainUpdated ? 1 : 0);\n\n if (otherDepsCount === 1) {\n noticeLines.push(`- ${otherDepsCount} additional dependency was updated`);\n
|
|
1
|
+
{"version":3,"file":"artifacts-extra.js","names":[],"sources":["../../../../lib/modules/manager/gomod/artifacts-extra.ts"],"sourcesContent":["import { diffLines } from 'diff';\nimport { markdownTable } from 'markdown-table';\nimport type { UpdateArtifactsConfig } from '../types.ts';\nimport { parseLine } from './line-parser.ts';\nimport type { ExtraDep } from './types.ts';\n\nexport function getExtraDeps(\n goModBefore: string,\n goModAfter: string,\n excludeDeps: string[],\n): ExtraDep[] {\n const result: ExtraDep[] = [];\n\n const diff = diffLines(goModBefore, goModAfter, {\n newlineIsToken: true,\n });\n\n const addDeps: Record<string, string> = {};\n const rmDeps: Record<string, string> = {};\n for (const { added, removed, value } of diff) {\n if (!added && !removed) {\n continue;\n }\n\n const res = parseLine(value);\n if (!res) {\n continue;\n }\n\n const { depName, depType, currentValue } = res;\n if (!depName || !currentValue) {\n continue;\n }\n\n let expandedDepName = depName;\n // NOTE: Right now the only special depType we care about is 'toolchain' because the table\n // rendering prior to this change was ambiguous with regards to go version vs toolchain\n // version updates.\n if (depType === 'toolchain') {\n expandedDepName = `${depName} (${depType})`;\n }\n\n if (added) {\n addDeps[expandedDepName] = currentValue;\n } else {\n rmDeps[expandedDepName] = currentValue;\n }\n }\n\n for (const [depName, currentValue] of Object.entries(rmDeps)) {\n if (excludeDeps.includes(depName)) {\n continue;\n }\n\n const newValue = addDeps[depName];\n // v8 ignore else -- needs a removed dep that is not added back\n if (newValue) {\n result.push({\n depName,\n currentValue,\n newValue,\n });\n }\n }\n\n return result;\n}\n\nexport function extraDepsTable(extraDeps: ExtraDep[]): string {\n const tableLines: string[][] = [];\n\n tableLines.push(['**Package**', '**Change**']);\n\n for (const { depName, currentValue, newValue } of extraDeps) {\n const depNameQuoted = `\\`${depName}\\``;\n const versionChangeQuoted = `\\`${currentValue}\\` -> \\`${newValue}\\``;\n tableLines.push([depNameQuoted, versionChangeQuoted]);\n }\n\n return markdownTable(tableLines, {\n align: ['l', 'l'],\n });\n}\n\nexport function getExtraDepsNotice(\n goModBefore: string | null,\n goModAfter: string | null,\n excludeDeps: string[],\n { minimumReleaseAge }: Pick<UpdateArtifactsConfig, 'minimumReleaseAge'>,\n): string | null {\n if (!goModBefore || !goModAfter) {\n return null;\n }\n\n const extraDeps = getExtraDeps(goModBefore, goModAfter, excludeDeps);\n if (extraDeps.length === 0) {\n return null;\n }\n\n const noticeLines: string[] = [\n 'In order to perform the update(s) described in the table above, Renovate ran the `go get` command, which resulted in the following additional change(s):',\n '\\n',\n ];\n\n const goUpdated = extraDeps.some(({ depName }) => depName === 'go');\n const toolchainUpdated = extraDeps.some(\n ({ depName }) => depName === 'go (toolchain)',\n );\n const otherDepsCount =\n extraDeps.length - (goUpdated ? 1 : 0) - (toolchainUpdated ? 1 : 0);\n\n if (otherDepsCount === 1) {\n noticeLines.push(`- ${otherDepsCount} additional dependency was updated`);\n } else if (otherDepsCount > 1) {\n noticeLines.push(\n `- ${otherDepsCount} additional dependencies were updated`,\n );\n }\n\n if (goUpdated) {\n noticeLines.push(\n '- The `go` directive was updated for compatibility reasons',\n );\n }\n\n if (minimumReleaseAge) {\n noticeLines.push('\\n');\n noticeLines.push(\n `Due to Go's usage of [Minimal Version Selection (MVS)](https://go.dev/ref/mod#minimal-version-selection), these packages have been updated to the minimum version available, so will still abide by \\`minimumReleaseAge=${minimumReleaseAge}\\``,\n );\n }\n\n noticeLines.push('\\n');\n noticeLines.push('Details:');\n noticeLines.push('\\n');\n noticeLines.push(extraDepsTable(extraDeps));\n\n return noticeLines.join('\\n');\n}\n"],"mappings":";;;;AAMA,SAAgB,aACd,aACA,YACA,aACY;CACZ,MAAM,SAAqB,CAAC;CAE5B,MAAM,OAAO,UAAU,aAAa,YAAY,EAC9C,gBAAgB,KAClB,CAAC;CAED,MAAM,UAAkC,CAAC;CACzC,MAAM,SAAiC,CAAC;CACxC,KAAK,MAAM,EAAE,OAAO,SAAS,WAAW,MAAM;EAC5C,IAAI,CAAC,SAAS,CAAC,SACb;EAGF,MAAM,MAAM,UAAU,KAAK;EAC3B,IAAI,CAAC,KACH;EAGF,MAAM,EAAE,SAAS,SAAS,iBAAiB;EAC3C,IAAI,CAAC,WAAW,CAAC,cACf;EAGF,IAAI,kBAAkB;EAItB,IAAI,YAAY,aACd,kBAAkB,GAAG,QAAQ,IAAI,QAAQ;EAG3C,IAAI,OACF,QAAQ,mBAAmB;OAE3B,OAAO,mBAAmB;CAE9B;CAEA,KAAK,MAAM,CAAC,SAAS,iBAAiB,OAAO,QAAQ,MAAM,GAAG;EAC5D,IAAI,YAAY,SAAS,OAAO,GAC9B;EAGF,MAAM,WAAW,QAAQ;;EAEzB,IAAI,UACF,OAAO,KAAK;GACV;GACA;GACA;EACF,CAAC;CAEL;CAEA,OAAO;AACT;AAEA,SAAgB,eAAe,WAA+B;CAC5D,MAAM,aAAyB,CAAC;CAEhC,WAAW,KAAK,CAAC,eAAe,YAAY,CAAC;CAE7C,KAAK,MAAM,EAAE,SAAS,cAAc,cAAc,WAAW;EAC3D,MAAM,gBAAgB,KAAK,QAAQ;EACnC,MAAM,sBAAsB,KAAK,aAAa,UAAU,SAAS;EACjE,WAAW,KAAK,CAAC,eAAe,mBAAmB,CAAC;CACtD;CAEA,OAAO,cAAc,YAAY,EAC/B,OAAO,CAAC,KAAK,GAAG,EAClB,CAAC;AACH;AAEA,SAAgB,mBACd,aACA,YACA,aACA,EAAE,qBACa;CACf,IAAI,CAAC,eAAe,CAAC,YACnB,OAAO;CAGT,MAAM,YAAY,aAAa,aAAa,YAAY,WAAW;CACnE,IAAI,UAAU,WAAW,GACvB,OAAO;CAGT,MAAM,cAAwB,CAC5B,4JACA,IACF;CAEA,MAAM,YAAY,UAAU,MAAM,EAAE,cAAc,YAAY,IAAI;CAClE,MAAM,mBAAmB,UAAU,MAChC,EAAE,cAAc,YAAY,gBAC/B;CACA,MAAM,iBACJ,UAAU,UAAU,YAAY,IAAI,MAAM,mBAAmB,IAAI;CAEnE,IAAI,mBAAmB,GACrB,YAAY,KAAK,KAAK,eAAe,mCAAmC;MACnE,IAAI,iBAAiB,GAC1B,YAAY,KACV,KAAK,eAAe,sCACtB;CAGF,IAAI,WACF,YAAY,KACV,4DACF;CAGF,IAAI,mBAAmB;EACrB,YAAY,KAAK,IAAI;EACrB,YAAY,KACV,2NAA2N,kBAAkB,GAC/O;CACF;CAEA,YAAY,KAAK,IAAI;CACrB,YAAY,KAAK,UAAU;CAC3B,YAAY,KAAK,IAAI;CACrB,YAAY,KAAK,eAAe,SAAS,CAAC;CAE1C,OAAO,YAAY,KAAK,IAAI;AAC9B"}
|
|
@@ -9,6 +9,7 @@ function findVersionIndex(content, depName, version) {
|
|
|
9
9
|
const eDn = RegExp.escape(depName);
|
|
10
10
|
const eVer = RegExp.escape(version);
|
|
11
11
|
const match = regEx(`(?:id\\s*=\\s*)?['"]?${eDn}["']?(?:(?:\\s*=\\s*)|:|,\\s*)(?:.*version(?:\\.ref)?(?:\\s*\\=\\s*))?["']?${eVer}['"]?`).exec(content);
|
|
12
|
+
// v8 ignore else -- the fallback below is already marked unreachable
|
|
12
13
|
if (match) return match.index + content.slice(match.index).indexOf(version);
|
|
13
14
|
/* istanbul ignore next */
|
|
14
15
|
return findIndexAfter(content, depName, version);
|
|
@@ -54,6 +55,7 @@ function extractLiteralVersion({ version, depStartIndex, depSubContent, sectionK
|
|
|
54
55
|
currentValue: version,
|
|
55
56
|
fileReplacePosition: depStartIndex + findVersionIndex(depSubContent, sectionKey, version)
|
|
56
57
|
};
|
|
58
|
+
// v8 ignore else -- a version is either a string, handled above, or a table
|
|
57
59
|
if (isPlainObject(version)) {
|
|
58
60
|
const versionKeys = [
|
|
59
61
|
"require",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","names":["parseToml","deepmerge"],"sources":["../../../../../lib/modules/manager/gradle/extract/catalog.ts"],"sourcesContent":["import { isPlainObject, isString } from '@sindresorhus/is';\nimport deepmerge from 'deepmerge';\nimport type { SkipReason } from '../../../../types/index.ts';\nimport { coerceObject, hasKey } from '../../../../util/object.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { massage, parse as parseToml } from '../../../../util/toml.ts';\nimport type { PackageDependency } from '../../types.ts';\nimport type {\n GradleCatalog,\n GradleCatalogArtifactDescriptor,\n GradleCatalogModuleDescriptor,\n GradleManagerData,\n GradleVersionCatalogVersion,\n GradleVersionPointerTarget,\n PackageVariables,\n VersionPointer,\n} from '../types.ts';\nimport { isTOMLFile } from '../utils.ts';\n\nfunction findVersionIndex(\n content: string,\n depName: string,\n version: string,\n): number {\n const eDn = RegExp.escape(depName);\n const eVer = RegExp.escape(version);\n const re = regEx(\n `(?:id\\\\s*=\\\\s*)?['\"]?${eDn}[\"']?(?:(?:\\\\s*=\\\\s*)|:|,\\\\s*)(?:.*version(?:\\\\.ref)?(?:\\\\s*\\\\=\\\\s*))?[\"']?${eVer}['\"]?`,\n );\n const match = re.exec(content);\n if (match) {\n return match.index + content.slice(match.index).indexOf(version);\n }\n // ignoring Fallback because I can't reach it in tests, and code is not supposed to reach it but just in case.\n /* istanbul ignore next */\n return findIndexAfter(content, depName, version);\n}\n\nfunction findIndexAfter(\n content: string,\n sliceAfter: string,\n find: string,\n): number {\n const slicePoint = content.indexOf(sliceAfter) + sliceAfter.length;\n return slicePoint + content.slice(slicePoint).indexOf(find);\n}\n\nfunction isArtifactDescriptor(\n obj: GradleCatalogArtifactDescriptor | GradleCatalogModuleDescriptor,\n): obj is GradleCatalogArtifactDescriptor {\n return hasKey('group', obj);\n}\n\nfunction isVersionPointer(\n obj: GradleVersionCatalogVersion | undefined,\n): obj is VersionPointer {\n return hasKey('ref', obj);\n}\n\nfunction normalizeAlias(alias: string): string {\n return alias.replace(regEx(/[-_]/g), '.');\n}\n\nfunction findOriginalAlias(\n versions: Record<string, GradleVersionPointerTarget>,\n alias: string,\n): string {\n const normalizedAlias = normalizeAlias(alias);\n for (const sectionKey of Object.keys(versions)) {\n if (normalizeAlias(sectionKey) === normalizedAlias) {\n return sectionKey;\n }\n }\n\n return alias;\n}\n\ninterface VersionExtract {\n currentValue?: string;\n fileReplacePosition?: number;\n skipReason?: SkipReason;\n}\n\nfunction extractVersion({\n version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n version: GradleVersionCatalogVersion | undefined;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): VersionExtract {\n if (isVersionPointer(version)) {\n const originalAlias = findOriginalAlias(versions, version.ref);\n return extractLiteralVersion({\n version: versions[originalAlias],\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: originalAlias,\n });\n }\n return extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey: depName,\n });\n}\n\nfunction extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey,\n}: {\n version: GradleVersionPointerTarget | undefined;\n depStartIndex: number;\n depSubContent: string;\n sectionKey: string;\n}): VersionExtract {\n if (!version) {\n return { skipReason: 'unspecified-version' };\n }\n if (isString(version)) {\n const fileReplacePosition =\n depStartIndex + findVersionIndex(depSubContent, sectionKey, version);\n return { currentValue: version, fileReplacePosition };\n }\n if (isPlainObject(version)) {\n // https://github.com/gradle/gradle/blob/d9adf33a57925582988fc512002dcc0e8ce4db95/subprojects/core/src/main/java/org/gradle/api/internal/catalog/parser/TomlCatalogFileParser.java#L368\n // https://docs.gradle.org/current/userguide/rich_versions.html\n // https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format\n const versionKeys = ['require', 'prefer', 'strictly'];\n let found = false;\n let currentValue: string | undefined;\n let fileReplacePosition: number | undefined;\n\n if (version.reject || version.rejectAll) {\n return { skipReason: 'unsupported-version' };\n }\n\n for (const key of versionKeys) {\n if (key in version) {\n if (found) {\n // Currently, we only support one version constraint at a time\n return { skipReason: 'multiple-constraint-dep' };\n }\n found = true;\n\n currentValue = version[key] as string;\n fileReplacePosition =\n depStartIndex +\n findIndexAfter(depSubContent, sectionKey, currentValue);\n }\n }\n\n if (found) {\n return { currentValue, fileReplacePosition };\n }\n }\n\n return { skipReason: 'unspecified-version' };\n}\n\nfunction extractDependency({\n descriptor,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n descriptor:\n string | GradleCatalogModuleDescriptor | GradleCatalogArtifactDescriptor;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): PackageDependency<GradleManagerData> {\n if (isString(descriptor)) {\n const [group, name, currentValue] = descriptor.split(':');\n if (!currentValue) {\n return {\n depName,\n skipReason: 'unspecified-version',\n };\n }\n return {\n depName: `${group}:${name}`,\n currentValue,\n managerData: {\n fileReplacePosition:\n depStartIndex + findIndexAfter(depSubContent, depName, currentValue),\n },\n };\n }\n\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version: descriptor.version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n if (skipReason) {\n return {\n depName,\n skipReason,\n };\n }\n\n const dependency: PackageDependency<GradleManagerData> = {\n currentValue,\n managerData: { fileReplacePosition },\n };\n\n if (isArtifactDescriptor(descriptor)) {\n const { group, name } = descriptor;\n dependency.depName = `${group}:${name}`;\n } else {\n const [depGroupName, name] = descriptor.module.split(':');\n dependency.depName = `${depGroupName}:${name}`;\n }\n\n if (isVersionPointer(descriptor.version)) {\n dependency.sharedVariableName = normalizeAlias(descriptor.version.ref);\n }\n\n return dependency;\n}\n\nexport function parseCatalog(\n packageFile: string,\n content: string,\n): { vars: PackageVariables; deps: PackageDependency<GradleManagerData>[] } {\n const tomlContent = parseToml(massage(content)) as GradleCatalog;\n const versions = coerceObject(tomlContent.versions);\n const libs = coerceObject(tomlContent.libraries);\n const libStartIndex = content.indexOf('libraries');\n const libSubContent = content.slice(libStartIndex);\n const versionStartIndex = content.indexOf('versions');\n const versionSubContent = content.slice(versionStartIndex);\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n const vars: PackageVariables = {};\n\n for (const [key, version] of Object.entries(versions)) {\n const { currentValue, fileReplacePosition } = extractLiteralVersion({\n version,\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: key,\n });\n if (currentValue && fileReplacePosition !== undefined) {\n vars[normalizeAlias(key)] = {\n key: normalizeAlias(key),\n value: currentValue,\n fileReplacePosition,\n packageFile,\n };\n }\n }\n\n for (const libraryName of Object.keys(libs)) {\n const libDescriptor = libs[libraryName];\n const dependency = extractDependency({\n descriptor: libDescriptor,\n versions,\n depStartIndex: libStartIndex,\n depSubContent: libSubContent,\n depName: libraryName,\n versionStartIndex,\n versionSubContent,\n });\n extractedDeps.push(dependency);\n }\n\n const plugins = coerceObject(tomlContent.plugins);\n const pluginsStartIndex = content.indexOf('[plugins]');\n const pluginsSubContent = content.slice(pluginsStartIndex);\n for (const pluginName of Object.keys(plugins)) {\n const pluginDescriptor = plugins[pluginName];\n const [depName, version] = isString(pluginDescriptor)\n ? pluginDescriptor.split(':')\n : [pluginDescriptor.id, pluginDescriptor.version];\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version,\n versions,\n depStartIndex: pluginsStartIndex,\n depSubContent: pluginsSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n const dependency: PackageDependency<GradleManagerData> = {\n depType: 'plugin',\n depName,\n packageName: `${depName}:${depName}.gradle.plugin`,\n currentValue,\n commitMessageTopic: `plugin ${pluginName}`,\n managerData: { fileReplacePosition },\n };\n if (skipReason) {\n dependency.skipReason = skipReason;\n }\n if (isVersionPointer(version) && dependency.commitMessageTopic) {\n dependency.sharedVariableName = normalizeAlias(version.ref);\n delete dependency.commitMessageTopic;\n }\n\n extractedDeps.push(dependency);\n }\n\n const deps = extractedDeps.map((dep) => {\n return deepmerge(dep, { managerData: { packageFile } });\n });\n return { vars, deps };\n}\n\nfunction makeCatalogGroupKey(\n dep: PackageDependency<GradleManagerData>,\n): string {\n return `${dep.managerData!.packageFile}:${dep.managerData!.fileReplacePosition}`;\n}\n\nexport function unifyCatalogSharedVariableNames(\n deps: PackageDependency<GradleManagerData>[],\n): void {\n const aliasMap: Record<string, string[]> = {};\n const catalogDeps: PackageDependency<GradleManagerData>[] = [];\n\n for (const dep of deps) {\n const packageFile = dep.managerData?.packageFile;\n if (\n packageFile &&\n dep.managerData?.fileReplacePosition !== undefined &&\n dep.sharedVariableName &&\n isTOMLFile(packageFile)\n ) {\n catalogDeps.push(dep);\n\n const key = makeCatalogGroupKey(dep);\n (aliasMap[key] ??= []).push(dep.sharedVariableName);\n }\n }\n\n for (const dep of catalogDeps) {\n const key = makeCatalogGroupKey(dep);\n const aliases = aliasMap[key];\n if (aliases.length > 1) {\n const name = aliases[0];\n dep.sharedVariableName = name.replace(regEx(/^[^.]+\\.versions\\./), '');\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.js","names":["parseToml","deepmerge"],"sources":["../../../../../lib/modules/manager/gradle/extract/catalog.ts"],"sourcesContent":["import { isPlainObject, isString } from '@sindresorhus/is';\nimport deepmerge from 'deepmerge';\nimport type { SkipReason } from '../../../../types/index.ts';\nimport { coerceObject, hasKey } from '../../../../util/object.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { massage, parse as parseToml } from '../../../../util/toml.ts';\nimport type { PackageDependency } from '../../types.ts';\nimport type {\n GradleCatalog,\n GradleCatalogArtifactDescriptor,\n GradleCatalogModuleDescriptor,\n GradleManagerData,\n GradleVersionCatalogVersion,\n GradleVersionPointerTarget,\n PackageVariables,\n VersionPointer,\n} from '../types.ts';\nimport { isTOMLFile } from '../utils.ts';\n\nfunction findVersionIndex(\n content: string,\n depName: string,\n version: string,\n): number {\n const eDn = RegExp.escape(depName);\n const eVer = RegExp.escape(version);\n const re = regEx(\n `(?:id\\\\s*=\\\\s*)?['\"]?${eDn}[\"']?(?:(?:\\\\s*=\\\\s*)|:|,\\\\s*)(?:.*version(?:\\\\.ref)?(?:\\\\s*\\\\=\\\\s*))?[\"']?${eVer}['\"]?`,\n );\n const match = re.exec(content);\n // v8 ignore else -- the fallback below is already marked unreachable\n if (match) {\n return match.index + content.slice(match.index).indexOf(version);\n }\n // ignoring Fallback because I can't reach it in tests, and code is not supposed to reach it but just in case.\n /* istanbul ignore next */\n return findIndexAfter(content, depName, version);\n}\n\nfunction findIndexAfter(\n content: string,\n sliceAfter: string,\n find: string,\n): number {\n const slicePoint = content.indexOf(sliceAfter) + sliceAfter.length;\n return slicePoint + content.slice(slicePoint).indexOf(find);\n}\n\nfunction isArtifactDescriptor(\n obj: GradleCatalogArtifactDescriptor | GradleCatalogModuleDescriptor,\n): obj is GradleCatalogArtifactDescriptor {\n return hasKey('group', obj);\n}\n\nfunction isVersionPointer(\n obj: GradleVersionCatalogVersion | undefined,\n): obj is VersionPointer {\n return hasKey('ref', obj);\n}\n\nfunction normalizeAlias(alias: string): string {\n return alias.replace(regEx(/[-_]/g), '.');\n}\n\nfunction findOriginalAlias(\n versions: Record<string, GradleVersionPointerTarget>,\n alias: string,\n): string {\n const normalizedAlias = normalizeAlias(alias);\n for (const sectionKey of Object.keys(versions)) {\n if (normalizeAlias(sectionKey) === normalizedAlias) {\n return sectionKey;\n }\n }\n\n return alias;\n}\n\ninterface VersionExtract {\n currentValue?: string;\n fileReplacePosition?: number;\n skipReason?: SkipReason;\n}\n\nfunction extractVersion({\n version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n version: GradleVersionCatalogVersion | undefined;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): VersionExtract {\n if (isVersionPointer(version)) {\n const originalAlias = findOriginalAlias(versions, version.ref);\n return extractLiteralVersion({\n version: versions[originalAlias],\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: originalAlias,\n });\n }\n return extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey: depName,\n });\n}\n\nfunction extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey,\n}: {\n version: GradleVersionPointerTarget | undefined;\n depStartIndex: number;\n depSubContent: string;\n sectionKey: string;\n}): VersionExtract {\n if (!version) {\n return { skipReason: 'unspecified-version' };\n }\n if (isString(version)) {\n const fileReplacePosition =\n depStartIndex + findVersionIndex(depSubContent, sectionKey, version);\n return { currentValue: version, fileReplacePosition };\n }\n // v8 ignore else -- a version is either a string, handled above, or a table\n if (isPlainObject(version)) {\n // https://github.com/gradle/gradle/blob/d9adf33a57925582988fc512002dcc0e8ce4db95/subprojects/core/src/main/java/org/gradle/api/internal/catalog/parser/TomlCatalogFileParser.java#L368\n // https://docs.gradle.org/current/userguide/rich_versions.html\n // https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format\n const versionKeys = ['require', 'prefer', 'strictly'];\n let found = false;\n let currentValue: string | undefined;\n let fileReplacePosition: number | undefined;\n\n if (version.reject || version.rejectAll) {\n return { skipReason: 'unsupported-version' };\n }\n\n for (const key of versionKeys) {\n if (key in version) {\n if (found) {\n // Currently, we only support one version constraint at a time\n return { skipReason: 'multiple-constraint-dep' };\n }\n found = true;\n\n currentValue = version[key] as string;\n fileReplacePosition =\n depStartIndex +\n findIndexAfter(depSubContent, sectionKey, currentValue);\n }\n }\n\n if (found) {\n return { currentValue, fileReplacePosition };\n }\n }\n\n return { skipReason: 'unspecified-version' };\n}\n\nfunction extractDependency({\n descriptor,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n descriptor:\n string | GradleCatalogModuleDescriptor | GradleCatalogArtifactDescriptor;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): PackageDependency<GradleManagerData> {\n if (isString(descriptor)) {\n const [group, name, currentValue] = descriptor.split(':');\n if (!currentValue) {\n return {\n depName,\n skipReason: 'unspecified-version',\n };\n }\n return {\n depName: `${group}:${name}`,\n currentValue,\n managerData: {\n fileReplacePosition:\n depStartIndex + findIndexAfter(depSubContent, depName, currentValue),\n },\n };\n }\n\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version: descriptor.version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n if (skipReason) {\n return {\n depName,\n skipReason,\n };\n }\n\n const dependency: PackageDependency<GradleManagerData> = {\n currentValue,\n managerData: { fileReplacePosition },\n };\n\n if (isArtifactDescriptor(descriptor)) {\n const { group, name } = descriptor;\n dependency.depName = `${group}:${name}`;\n } else {\n const [depGroupName, name] = descriptor.module.split(':');\n dependency.depName = `${depGroupName}:${name}`;\n }\n\n if (isVersionPointer(descriptor.version)) {\n dependency.sharedVariableName = normalizeAlias(descriptor.version.ref);\n }\n\n return dependency;\n}\n\nexport function parseCatalog(\n packageFile: string,\n content: string,\n): { vars: PackageVariables; deps: PackageDependency<GradleManagerData>[] } {\n const tomlContent = parseToml(massage(content)) as GradleCatalog;\n const versions = coerceObject(tomlContent.versions);\n const libs = coerceObject(tomlContent.libraries);\n const libStartIndex = content.indexOf('libraries');\n const libSubContent = content.slice(libStartIndex);\n const versionStartIndex = content.indexOf('versions');\n const versionSubContent = content.slice(versionStartIndex);\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n const vars: PackageVariables = {};\n\n for (const [key, version] of Object.entries(versions)) {\n const { currentValue, fileReplacePosition } = extractLiteralVersion({\n version,\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: key,\n });\n if (currentValue && fileReplacePosition !== undefined) {\n vars[normalizeAlias(key)] = {\n key: normalizeAlias(key),\n value: currentValue,\n fileReplacePosition,\n packageFile,\n };\n }\n }\n\n for (const libraryName of Object.keys(libs)) {\n const libDescriptor = libs[libraryName];\n const dependency = extractDependency({\n descriptor: libDescriptor,\n versions,\n depStartIndex: libStartIndex,\n depSubContent: libSubContent,\n depName: libraryName,\n versionStartIndex,\n versionSubContent,\n });\n extractedDeps.push(dependency);\n }\n\n const plugins = coerceObject(tomlContent.plugins);\n const pluginsStartIndex = content.indexOf('[plugins]');\n const pluginsSubContent = content.slice(pluginsStartIndex);\n for (const pluginName of Object.keys(plugins)) {\n const pluginDescriptor = plugins[pluginName];\n const [depName, version] = isString(pluginDescriptor)\n ? pluginDescriptor.split(':')\n : [pluginDescriptor.id, pluginDescriptor.version];\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version,\n versions,\n depStartIndex: pluginsStartIndex,\n depSubContent: pluginsSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n const dependency: PackageDependency<GradleManagerData> = {\n depType: 'plugin',\n depName,\n packageName: `${depName}:${depName}.gradle.plugin`,\n currentValue,\n commitMessageTopic: `plugin ${pluginName}`,\n managerData: { fileReplacePosition },\n };\n if (skipReason) {\n dependency.skipReason = skipReason;\n }\n if (isVersionPointer(version) && dependency.commitMessageTopic) {\n dependency.sharedVariableName = normalizeAlias(version.ref);\n delete dependency.commitMessageTopic;\n }\n\n extractedDeps.push(dependency);\n }\n\n const deps = extractedDeps.map((dep) => {\n return deepmerge(dep, { managerData: { packageFile } });\n });\n return { vars, deps };\n}\n\nfunction makeCatalogGroupKey(\n dep: PackageDependency<GradleManagerData>,\n): string {\n return `${dep.managerData!.packageFile}:${dep.managerData!.fileReplacePosition}`;\n}\n\nexport function unifyCatalogSharedVariableNames(\n deps: PackageDependency<GradleManagerData>[],\n): void {\n const aliasMap: Record<string, string[]> = {};\n const catalogDeps: PackageDependency<GradleManagerData>[] = [];\n\n for (const dep of deps) {\n const packageFile = dep.managerData?.packageFile;\n if (\n packageFile &&\n dep.managerData?.fileReplacePosition !== undefined &&\n dep.sharedVariableName &&\n isTOMLFile(packageFile)\n ) {\n catalogDeps.push(dep);\n\n const key = makeCatalogGroupKey(dep);\n (aliasMap[key] ??= []).push(dep.sharedVariableName);\n }\n }\n\n for (const dep of catalogDeps) {\n const key = makeCatalogGroupKey(dep);\n const aliases = aliasMap[key];\n if (aliases.length > 1) {\n const name = aliases[0];\n dep.sharedVariableName = name.replace(regEx(/^[^.]+\\.versions\\./), '');\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -46,7 +46,9 @@ function parseGcv(propsFileName, fileContents) {
|
|
|
46
46
|
const lockFileMap = parseLockFile(coerceString(fileContents[lockFileName]));
|
|
47
47
|
const [propsFileExactMap, propsFileRegexMap] = parsePropsFile(propsFileContent);
|
|
48
48
|
const extractedDeps = [];
|
|
49
|
-
for (const [propDep, versionAndPosition] of propsFileExactMap)
|
|
49
|
+
for (const [propDep, versionAndPosition] of propsFileExactMap)
|
|
50
|
+
// v8 ignore else -- needs a props entry missing from the lock file
|
|
51
|
+
if (lockFileMap.has(propDep)) {
|
|
50
52
|
const newDep = {
|
|
51
53
|
managerData: {
|
|
52
54
|
packageFile: propsFileName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consistent-versions-plugin.js","names":["fs.getSiblingFileName"],"sources":["../../../../../lib/modules/manager/gradle/extract/consistent-versions-plugin.ts"],"sourcesContent":["import { logger } from '../../../../logger/index.ts';\nimport * as fs from '../../../../util/fs/index.ts';\nimport { newlineRegex, regEx } from '../../../../util/regex.ts';\nimport { coerceString } from '../../../../util/string.ts';\nimport type { PackageDependency } from '../../types.ts';\nimport type { GradleManagerData } from '../types.ts';\nimport { isDependencyString, versionLikeSubstring } from '../utils.ts';\n\nexport const VERSIONS_PROPS = 'versions.props';\nexport const VERSIONS_LOCK = 'versions.lock';\nexport const LOCKFIlE_HEADER_TEXT = regEx(\n /^# Run \\.\\/gradlew (?:--write-locks|writeVersionsLock|writeVersionsLocks) to regenerate this file/,\n);\n\n/**\n * Determines if Palantir gradle-consistent-versions is in use, https://github.com/palantir/gradle-consistent-versions.\n * Both `versions.props` and `versions.lock` must exist and the special header line of lock file must match\n *\n * @param versionsPropsFilename is the full file name path of `versions.props`\n * @param fileContents map with file contents of all files\n */\nexport function usesGcv(\n versionsPropsFilename: string,\n fileContents: Record<string, string | null>,\n): boolean {\n const versionsLockFile: string = fs.getSiblingFileName(\n versionsPropsFilename,\n VERSIONS_LOCK,\n );\n\n return !!fileContents[versionsLockFile]?.match(LOCKFIlE_HEADER_TEXT);\n}\n\n/**\n * Confirms whether the provided file name is the props file\n */\nexport function isGcvPropsFile(fileName: string): boolean {\n return fileName === VERSIONS_PROPS || fileName.endsWith(`/${VERSIONS_PROPS}`);\n}\n\n/**\n * Confirms whether the provided file name is the lock file\n */\nexport function isGcvLockFile(fileName: string): boolean {\n return fileName === VERSIONS_LOCK || fileName.endsWith(`/${VERSIONS_LOCK}`);\n}\n\n/**\n * Parses Gradle-Consistent-Versions files to figure out what dependencies, versions\n * and groups they contain. The parsing goes like this:\n * - Parse `versions.props` into deps (or groups) and versions, remembering file offsets\n * - Parse `versions.lock` into deps and lock-versions\n * - For each exact dep in props file, lookup the lock-version from lock file\n * - For each group/regex dep in props file, lookup the set of exact deps and versions in lock file\n *\n * @param propsFileName name and path of the props file\n * @param fileContents text content of all files\n */\nexport function parseGcv(\n propsFileName: string,\n fileContents: Record<string, string | null>,\n): PackageDependency<GradleManagerData>[] {\n const propsFileContent = coerceString(fileContents[propsFileName]);\n const lockFileName = fs.getSiblingFileName(propsFileName, VERSIONS_LOCK);\n const lockFileContent = coerceString(fileContents[lockFileName]);\n const lockFileMap = parseLockFile(lockFileContent);\n const [propsFileExactMap, propsFileRegexMap] =\n parsePropsFile(propsFileContent);\n\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n\n // For each exact dep in props file\n for (const [propDep, versionAndPosition] of propsFileExactMap) {\n if (lockFileMap.has(propDep)) {\n const newDep: Record<string, any> = {\n managerData: {\n packageFile: propsFileName,\n fileReplacePosition: versionAndPosition.filePos,\n },\n depName: propDep,\n currentValue: versionAndPosition.version,\n lockedVersion: lockFileMap.get(propDep)?.version,\n depType: lockFileMap.get(propDep)?.depType,\n } satisfies PackageDependency<GradleManagerData>;\n extractedDeps.push(newDep);\n // Remove from the lockfile map so the same exact lib will not be included in globbing\n lockFileMap.delete(propDep);\n }\n }\n\n // For each regular expression dep in props file (starting with the longest glob string)...\n for (const [propDepGlob, propVerAndPos] of propsFileRegexMap) {\n const globRegex = globToRegex(propDepGlob);\n for (const [exactDep, lockVersionAndDepType] of lockFileMap) {\n if (globRegex.test(exactDep)) {\n const newDep: Record<string, any> = {\n managerData: {\n packageFile: propsFileName,\n fileReplacePosition: propVerAndPos.filePos,\n },\n depName: exactDep,\n currentValue: propVerAndPos.version,\n lockedVersion: lockVersionAndDepType.version,\n depType: lockVersionAndDepType.depType,\n sharedVariableName: propDepGlob,\n } satisfies PackageDependency<GradleManagerData>;\n extractedDeps.push(newDep);\n // Remove from the lockfile map so the same lib will not be included in more generic globs later\n lockFileMap.delete(exactDep);\n }\n }\n }\n return extractedDeps;\n}\n\n// Translate glob syntax to a regex that does the same. Note that we cannot use replaceAll as it does not exist in Node14\n// Loosely borrowed mapping to regex from https://github.com/palantir/gradle-consistent-versions/blob/develop/src/main/java/com/palantir/gradle/versions/FuzzyPatternResolver.java\nfunction globToRegex(depName: string): RegExp {\n return regEx(\n depName\n .replace(regEx(/\\*/g), '_WC_CHAR_')\n .replace(regEx(/[/\\-\\\\^$*+?.()|[\\]{}]/g), '\\\\$&')\n .replace(regEx(/_WC_CHAR_/g), '.*?'),\n );\n}\n\ninterface VersionWithPosition {\n version: string;\n filePos: number;\n}\n\ninterface VersionWithDepType {\n version: string;\n depType: string;\n}\n\n/**\n * Parses `versions.lock`\n */\nexport function parseLockFile(input: string): Map<string, VersionWithDepType> {\n const lockLineRegex = regEx(\n `^(?<depName>[^:]+:[^:]+):(?<lockVersion>[^ ]+) \\\\(\\\\d+ constraints: [0-9a-f]+\\\\)$`,\n );\n\n const depVerMap = new Map<string, VersionWithDepType>();\n let isTestDepType = false;\n for (const line of input.split(newlineRegex)) {\n const lineMatch = lockLineRegex.exec(line);\n if (lineMatch?.groups) {\n const { depName, lockVersion } = lineMatch.groups;\n if (isDependencyString(`${depName}:${lockVersion}`)) {\n depVerMap.set(depName, {\n version: lockVersion,\n depType: isTestDepType ? 'test' : 'dependencies',\n });\n }\n } else if (line === '[Test dependencies]') {\n isTestDepType = true; // We know that all lines below this header are test dependencies\n }\n }\n logger.trace(\n `Found ${depVerMap.size} locked dependencies in ${VERSIONS_LOCK}.`,\n );\n return depVerMap;\n}\n\n/**\n * Parses `versions.props`, this is CR/LF safe\n * @param input the entire property file from file system\n * @return two maps, first being exact matches, second regex matches\n */\nexport function parsePropsFile(\n input: string,\n): [Map<string, VersionWithPosition>, Map<string, VersionWithPosition>] {\n const propsLineRegex = regEx(\n `^(?<depName>[^:]+:[^=]+?) *= *(?<propsVersion>.*)$`,\n );\n const depVerExactMap = new Map<string, VersionWithPosition>();\n const depVerRegexMap = new Map<string, VersionWithPosition>();\n\n let startOfLineIdx = 0;\n const isCrLf = input.indexOf('\\r\\n') > 0;\n const validGlob = regEx(/^[a-zA-Z][-_a-zA-Z0-9.:*]+$/);\n for (const line of input.split(newlineRegex)) {\n const lineMatch = propsLineRegex.exec(line);\n if (lineMatch?.groups) {\n const { depName, propsVersion } = lineMatch.groups;\n if (\n validGlob.test(depName) &&\n versionLikeSubstring(propsVersion) !== null\n ) {\n const startPosInLine = line.lastIndexOf(propsVersion);\n const propVersionPos = startOfLineIdx + startPosInLine;\n if (depName.includes('*')) {\n depVerRegexMap.set(depName, {\n version: propsVersion,\n filePos: propVersionPos,\n });\n } else {\n depVerExactMap.set(depName, {\n version: propsVersion,\n filePos: propVersionPos,\n });\n }\n }\n }\n startOfLineIdx += line.length + (isCrLf ? 2 : 1);\n }\n logger.trace(\n `Found ${depVerExactMap.size} dependencies and ${depVerRegexMap.size} wildcard dependencies in ${VERSIONS_PROPS}.`,\n );\n return [\n depVerExactMap,\n new Map(\n [...depVerRegexMap].sort(([ka], [kb]) => ka.localeCompare(kb)).reverse(),\n ),\n ];\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"consistent-versions-plugin.js","names":["fs.getSiblingFileName"],"sources":["../../../../../lib/modules/manager/gradle/extract/consistent-versions-plugin.ts"],"sourcesContent":["import { logger } from '../../../../logger/index.ts';\nimport * as fs from '../../../../util/fs/index.ts';\nimport { newlineRegex, regEx } from '../../../../util/regex.ts';\nimport { coerceString } from '../../../../util/string.ts';\nimport type { PackageDependency } from '../../types.ts';\nimport type { GradleManagerData } from '../types.ts';\nimport { isDependencyString, versionLikeSubstring } from '../utils.ts';\n\nexport const VERSIONS_PROPS = 'versions.props';\nexport const VERSIONS_LOCK = 'versions.lock';\nexport const LOCKFIlE_HEADER_TEXT = regEx(\n /^# Run \\.\\/gradlew (?:--write-locks|writeVersionsLock|writeVersionsLocks) to regenerate this file/,\n);\n\n/**\n * Determines if Palantir gradle-consistent-versions is in use, https://github.com/palantir/gradle-consistent-versions.\n * Both `versions.props` and `versions.lock` must exist and the special header line of lock file must match\n *\n * @param versionsPropsFilename is the full file name path of `versions.props`\n * @param fileContents map with file contents of all files\n */\nexport function usesGcv(\n versionsPropsFilename: string,\n fileContents: Record<string, string | null>,\n): boolean {\n const versionsLockFile: string = fs.getSiblingFileName(\n versionsPropsFilename,\n VERSIONS_LOCK,\n );\n\n return !!fileContents[versionsLockFile]?.match(LOCKFIlE_HEADER_TEXT);\n}\n\n/**\n * Confirms whether the provided file name is the props file\n */\nexport function isGcvPropsFile(fileName: string): boolean {\n return fileName === VERSIONS_PROPS || fileName.endsWith(`/${VERSIONS_PROPS}`);\n}\n\n/**\n * Confirms whether the provided file name is the lock file\n */\nexport function isGcvLockFile(fileName: string): boolean {\n return fileName === VERSIONS_LOCK || fileName.endsWith(`/${VERSIONS_LOCK}`);\n}\n\n/**\n * Parses Gradle-Consistent-Versions files to figure out what dependencies, versions\n * and groups they contain. The parsing goes like this:\n * - Parse `versions.props` into deps (or groups) and versions, remembering file offsets\n * - Parse `versions.lock` into deps and lock-versions\n * - For each exact dep in props file, lookup the lock-version from lock file\n * - For each group/regex dep in props file, lookup the set of exact deps and versions in lock file\n *\n * @param propsFileName name and path of the props file\n * @param fileContents text content of all files\n */\nexport function parseGcv(\n propsFileName: string,\n fileContents: Record<string, string | null>,\n): PackageDependency<GradleManagerData>[] {\n const propsFileContent = coerceString(fileContents[propsFileName]);\n const lockFileName = fs.getSiblingFileName(propsFileName, VERSIONS_LOCK);\n const lockFileContent = coerceString(fileContents[lockFileName]);\n const lockFileMap = parseLockFile(lockFileContent);\n const [propsFileExactMap, propsFileRegexMap] =\n parsePropsFile(propsFileContent);\n\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n\n // For each exact dep in props file\n for (const [propDep, versionAndPosition] of propsFileExactMap) {\n // v8 ignore else -- needs a props entry missing from the lock file\n if (lockFileMap.has(propDep)) {\n const newDep: Record<string, any> = {\n managerData: {\n packageFile: propsFileName,\n fileReplacePosition: versionAndPosition.filePos,\n },\n depName: propDep,\n currentValue: versionAndPosition.version,\n lockedVersion: lockFileMap.get(propDep)?.version,\n depType: lockFileMap.get(propDep)?.depType,\n } satisfies PackageDependency<GradleManagerData>;\n extractedDeps.push(newDep);\n // Remove from the lockfile map so the same exact lib will not be included in globbing\n lockFileMap.delete(propDep);\n }\n }\n\n // For each regular expression dep in props file (starting with the longest glob string)...\n for (const [propDepGlob, propVerAndPos] of propsFileRegexMap) {\n const globRegex = globToRegex(propDepGlob);\n for (const [exactDep, lockVersionAndDepType] of lockFileMap) {\n if (globRegex.test(exactDep)) {\n const newDep: Record<string, any> = {\n managerData: {\n packageFile: propsFileName,\n fileReplacePosition: propVerAndPos.filePos,\n },\n depName: exactDep,\n currentValue: propVerAndPos.version,\n lockedVersion: lockVersionAndDepType.version,\n depType: lockVersionAndDepType.depType,\n sharedVariableName: propDepGlob,\n } satisfies PackageDependency<GradleManagerData>;\n extractedDeps.push(newDep);\n // Remove from the lockfile map so the same lib will not be included in more generic globs later\n lockFileMap.delete(exactDep);\n }\n }\n }\n return extractedDeps;\n}\n\n// Translate glob syntax to a regex that does the same. Note that we cannot use replaceAll as it does not exist in Node14\n// Loosely borrowed mapping to regex from https://github.com/palantir/gradle-consistent-versions/blob/develop/src/main/java/com/palantir/gradle/versions/FuzzyPatternResolver.java\nfunction globToRegex(depName: string): RegExp {\n return regEx(\n depName\n .replace(regEx(/\\*/g), '_WC_CHAR_')\n .replace(regEx(/[/\\-\\\\^$*+?.()|[\\]{}]/g), '\\\\$&')\n .replace(regEx(/_WC_CHAR_/g), '.*?'),\n );\n}\n\ninterface VersionWithPosition {\n version: string;\n filePos: number;\n}\n\ninterface VersionWithDepType {\n version: string;\n depType: string;\n}\n\n/**\n * Parses `versions.lock`\n */\nexport function parseLockFile(input: string): Map<string, VersionWithDepType> {\n const lockLineRegex = regEx(\n `^(?<depName>[^:]+:[^:]+):(?<lockVersion>[^ ]+) \\\\(\\\\d+ constraints: [0-9a-f]+\\\\)$`,\n );\n\n const depVerMap = new Map<string, VersionWithDepType>();\n let isTestDepType = false;\n for (const line of input.split(newlineRegex)) {\n const lineMatch = lockLineRegex.exec(line);\n if (lineMatch?.groups) {\n const { depName, lockVersion } = lineMatch.groups;\n if (isDependencyString(`${depName}:${lockVersion}`)) {\n depVerMap.set(depName, {\n version: lockVersion,\n depType: isTestDepType ? 'test' : 'dependencies',\n });\n }\n } else if (line === '[Test dependencies]') {\n isTestDepType = true; // We know that all lines below this header are test dependencies\n }\n }\n logger.trace(\n `Found ${depVerMap.size} locked dependencies in ${VERSIONS_LOCK}.`,\n );\n return depVerMap;\n}\n\n/**\n * Parses `versions.props`, this is CR/LF safe\n * @param input the entire property file from file system\n * @return two maps, first being exact matches, second regex matches\n */\nexport function parsePropsFile(\n input: string,\n): [Map<string, VersionWithPosition>, Map<string, VersionWithPosition>] {\n const propsLineRegex = regEx(\n `^(?<depName>[^:]+:[^=]+?) *= *(?<propsVersion>.*)$`,\n );\n const depVerExactMap = new Map<string, VersionWithPosition>();\n const depVerRegexMap = new Map<string, VersionWithPosition>();\n\n let startOfLineIdx = 0;\n const isCrLf = input.indexOf('\\r\\n') > 0;\n const validGlob = regEx(/^[a-zA-Z][-_a-zA-Z0-9.:*]+$/);\n for (const line of input.split(newlineRegex)) {\n const lineMatch = propsLineRegex.exec(line);\n if (lineMatch?.groups) {\n const { depName, propsVersion } = lineMatch.groups;\n if (\n validGlob.test(depName) &&\n versionLikeSubstring(propsVersion) !== null\n ) {\n const startPosInLine = line.lastIndexOf(propsVersion);\n const propVersionPos = startOfLineIdx + startPosInLine;\n if (depName.includes('*')) {\n depVerRegexMap.set(depName, {\n version: propsVersion,\n filePos: propVersionPos,\n });\n } else {\n depVerExactMap.set(depName, {\n version: propsVersion,\n filePos: propVersionPos,\n });\n }\n }\n }\n startOfLineIdx += line.length + (isCrLf ? 2 : 1);\n }\n logger.trace(\n `Found ${depVerExactMap.size} dependencies and ${depVerRegexMap.size} wildcard dependencies in ${VERSIONS_PROPS}.`,\n );\n return [\n depVerExactMap,\n new Map(\n [...depVerRegexMap].sort(([ka], [kb]) => ka.localeCompare(kb)).reverse(),\n ),\n ];\n}\n"],"mappings":"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"}
|
|
@@ -13,7 +13,9 @@ import upath from "upath";
|
|
|
13
13
|
//#region lib/modules/manager/gradle/extract.ts
|
|
14
14
|
const mavenDatasource = MavenDatasource.id;
|
|
15
15
|
function updatePackageRegistries(packageRegistries, urls) {
|
|
16
|
-
for (const url of urls)
|
|
16
|
+
for (const url of urls)
|
|
17
|
+
// v8 ignore else -- needs a registry that is already known
|
|
18
|
+
if (!packageRegistries.some((item) => item.registryUrl === url.registryUrl && item.scope === url.scope && item.registryType === url.registryType && item.content === url.content)) packageRegistries.push(url);
|
|
17
19
|
}
|
|
18
20
|
function matchesContentDescriptor(dep, contentDescriptors) {
|
|
19
21
|
const [groupId, artifactId] = (dep.packageName ?? dep.depName).split(":");
|
|
@@ -41,7 +43,7 @@ function matchesContentDescriptor(dep, contentDescriptors) {
|
|
|
41
43
|
if (mode === "include") {
|
|
42
44
|
hasIncludes = true;
|
|
43
45
|
if (isMatch) matchesInclude = true;
|
|
44
|
-
} else
|
|
46
|
+
} else {
|
|
45
47
|
hasExcludes = true;
|
|
46
48
|
if (isMatch) matchesExclude = true;
|
|
47
49
|
}
|
|
@@ -130,6 +132,7 @@ async function extractAllPackageFiles(config, packageFiles) {
|
|
|
130
132
|
deps: []
|
|
131
133
|
};
|
|
132
134
|
dep.datasource ??= mavenDatasource;
|
|
135
|
+
// v8 ignore else -- every dep here defaults to the maven datasource above
|
|
133
136
|
if (dep.datasource === mavenDatasource) {
|
|
134
137
|
dep.registryUrls = getRegistryUrlsForDep(packageRegistries, dep);
|
|
135
138
|
dep.depType ??= key.startsWith("buildSrc") && !kotlinSourceFiles.length ? "devDependencies" : "dependencies";
|