{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:best-practices",
    ":approveMajorUpdates",
    ":maintainLockFilesWeekly",
    "group:postcss",
    "group:linters",
    "schedule:daily",
    "schedule:automergeDaily"
  ],
  "ignorePresets": [
    ":semanticPrefixFixDepsChoreOthers",
    "docker:pinDigests",
    "helpers:pinGitHubActionDigests"
  ],
  "semanticCommits": "disabled",
  "automergeStrategy": "merge-commit",
  "postUpdateOptions": ["gomodTidy", "gomodUpdateImportPaths", "npmDedupe"],
  "prConcurrentLimit": 5,
  "internalChecksFilter": "strict",
  "packageRules": [
    {
      "description": "Require approval for go and python minor version",
      "matchDepNames": [
        "go",
        "python",
        "golang",
        "docker.io/golang",
        "docker.io/library/golang"
      ],
      "matchUpdateTypes": ["minor"],
      "dependencyDashboardApproval": true
    },
    {
      "description": "Require dashboard approval for some deps",
      "matchDepNames": [
        "bitnami/minio",
        "github.com/go-ap/activitypub",
        "github.com/nektos/act",
        "gitea.com/gitea/act"
      ],
      "dependencyDashboardApproval": true
    },
    {
      "description": "Schedule some deps less frequently",
      "matchDepNames": ["github.com/google/pprof"],
      "extends": ["schedule:quarterly"]
    },
    {
      "description": "Group golang packages",
      "matchDepNames": [
        "go",
        "golang",
        "docker.io/golang",
        "docker.io/library/golang"
      ],
      "groupName": "golang packages"
    },
    {
      "description": "Group nodejs packages",
      "matchDepNames": ["node", "docker.io/node", "docker.io/library/node"],
      "groupName": "nodejs packages",
      "versionCompatibility": "^(?<version>[^-]+)(?<compatibility>-.*)?$",
      "versioning": "node"
    },
    {
      "description": "Automerge renovate updates",
      "matchDatasources": ["docker"],
      "matchPackageNames": ["ghcr.io/visualon/renovate"],
      "matchUpdateTypes": ["minor", "patch", "digest"],
      "automerge": true
    },
    {
      "description": "Split minor and patch updates",
      "matchDepNames": ["vue", "github.com/urfave/cli/v2", "swagger-ui-dist"],
      "separateMinorPatch": true
    },
    {
      "description": "Automerge patch updates",
      "matchDepNames": ["vue", "github.com/urfave/cli/v2", "swagger-ui-dist"],
      "matchUpdateTypes": ["patch"],
      "automerge": true
    },
    {
      "description": "Update renovate with higher prio to come through rate limit",
      "matchDatasources": ["docker"],
      "matchDepNames": ["ghcr.io/visualon/renovate"],
      "prPriority": 10
    },
    {
      "description": "Disable actions/cascading-pr for now <https://github.com/renovatebot/renovate/issues/28120>",
      "matchDepNames": ["actions/cascading-pr"],
      "matchManagers": ["github-actions"],
      "enabled": false
    },
    {
      "description": "Automerge some packages when ci succeeds",
      "extends": ["packages:linters"],
      "matchDepNames": ["vitest"],
      "automerge": true
    },
    {
      "description": "Hold back on some package updates for a few days",
      "matchDepNames": ["monaco-editor"],
      "minimumReleaseAge": "30 days"
    }
  ],
  "customManagers": [
    {
      "description": "Update go-version in forgejo workflows",
      "customType": "regex",
      "fileMatch": ["^.forgejo/workflows/.+\\.yml$"],
      "matchStrings": ["\\s+go-version: ['\"]?(?<currentValue>.+?)['\"]?\\s"],
      "depNameTemplate": "go",
      "datasourceTemplate": "golang-version",
      "versioningTemplate": "go-mod-directive"
    },
    {
      "description": "Update node-version in forgejo workflows",
      "customType": "regex",
      "fileMatch": ["^.forgejo/workflows/.+\\.yml$"],
      "matchStrings": ["\\s+node-version: ['\"]?(?<currentValue>.+?)['\"]?\\s"],
      "depNameTemplate": "node",
      "datasourceTemplate": "node-version"
    },
    {
      "description": "Update deps inside Makefile",
      "customType": "regex",
      "fileMatch": ["^Makefile$"],
      "matchStrings": [
        " \\?= (?<depName>.+?)@(?<currentValue>.+?) # renovate: datasource=(?<datasource>.+?)\\s"
      ]
    }
  ]
}
