From fbc485fc337c35825679d4c195f3a07cc2a2d96e Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Wed, 29 Apr 2020 14:45:51 +0200
Subject: [PATCH] feat(presets): internalize presets (#6090)

Moves Renovate's currently external renovatebot/presets data into this repo.
---
 lib/config/presets/__fixtures__/presets.json  | 2568 -----------------
 .../presets/__snapshots__/github.spec.ts.snap |    6 -
 .../presets/__snapshots__/index.spec.ts.snap  | 1042 +------
 lib/config/presets/common.ts                  |    2 +-
 lib/config/presets/github.spec.ts             |   29 -
 lib/config/presets/github.ts                  |   30 -
 lib/config/presets/index.spec.ts              |   13 -
 lib/config/presets/index.ts                   |   15 +-
 lib/config/presets/internal/config.ts         |   50 +
 lib/config/presets/internal/default.ts        |  579 ++++
 lib/config/presets/internal/docker.ts         |   35 +
 lib/config/presets/internal/group.ts          |  560 ++++
 lib/config/presets/internal/helpers.ts        |   31 +
 lib/config/presets/internal/index.spec.ts     |   22 +
 lib/config/presets/internal/index.ts          |   29 +
 lib/config/presets/internal/monorepo.ts       |  134 +
 lib/config/presets/internal/packages.ts       |   81 +
 lib/config/presets/internal/preview.ts        |   27 +
 lib/config/presets/internal/schedule.ts       |   37 +
 19 files changed, 1600 insertions(+), 3690 deletions(-)
 delete mode 100644 lib/config/presets/__fixtures__/presets.json
 create mode 100644 lib/config/presets/internal/config.ts
 create mode 100644 lib/config/presets/internal/default.ts
 create mode 100644 lib/config/presets/internal/docker.ts
 create mode 100644 lib/config/presets/internal/group.ts
 create mode 100644 lib/config/presets/internal/helpers.ts
 create mode 100644 lib/config/presets/internal/index.spec.ts
 create mode 100644 lib/config/presets/internal/index.ts
 create mode 100644 lib/config/presets/internal/monorepo.ts
 create mode 100644 lib/config/presets/internal/packages.ts
 create mode 100644 lib/config/presets/internal/preview.ts
 create mode 100644 lib/config/presets/internal/schedule.ts

diff --git a/lib/config/presets/__fixtures__/presets.json b/lib/config/presets/__fixtures__/presets.json
deleted file mode 100644
index d62b9c939e..0000000000
--- a/lib/config/presets/__fixtures__/presets.json
+++ /dev/null
@@ -1,2568 +0,0 @@
-{
-  "config": {
-    "base": {
-      "description": "Default base configuration for all languages",
-      "extends": [
-        ":separateMajorReleases",
-        ":combinePatchMinorReleases",
-        ":ignoreUnstable",
-        ":prImmediately",
-        ":semanticPrefixFixDepsChoreOthers",
-        ":updateNotScheduled",
-        ":automergeDisabled",
-        ":ignoreModulesAndTests",
-        ":autodetectPinVersions",
-        ":prHourlyLimit2",
-        ":prConcurrentLimit20",
-        "group:monorepos",
-        "group:recommended",
-        "helpers:disableTypesNodeMajor"
-      ]
-    },
-    "base-js": {
-      "description": "Base configuration for Javascript (deprecated)",
-      "extends": ["config:base"]
-    },
-    "js-app": {
-      "description": "Default configuration for webapps",
-      "extends": ["config:base", ":pinAllExceptPeerDependencies"]
-    },
-    "js-lib": {
-      "description": "Default configuration for libraries",
-      "extends": ["config:base", ":pinOnlyDevDependencies"]
-    },
-    "semverAllMonthly": {
-      "description": "Preserve semver ranges and update everything together once a month",
-      "extends": [
-        ":preserveSemverRanges",
-        "group:all",
-        "schedule:monthly",
-        ":maintainLockFilesMonthly"
-      ],
-      "lockFileMaintenance": {
-        "commitMessageAction": "Update",
-        "extends": ["group:all"]
-      },
-      "separateMajorMinor": false
-    }
-  },
-  "default": {
-    "app": {
-      "description": "deprecated alias for config:js-app",
-      "extends": ["config:js-app"]
-    },
-    "assignAndReview": {
-      "description": "Set <code>{{arg0}}</code> as assignee and reviewer of PRs",
-      "extends": [":assignee({{arg0}})", ":reviewer({{arg0}})"]
-    },
-    "assignee": {
-      "assignees": ["{{arg0}}"],
-      "description": "Assign PRs to <code>{{arg0}}</code>"
-    },
-    "autodetectPinVersions": {
-      "description": "Autodetect whether to pin dependencies or maintain ranges",
-      "rangeStrategy": "auto"
-    },
-    "automergeAll": {
-      "automerge": true,
-      "description": "Automerge all upgrades (including major) if they pass tests"
-    },
-    "automergeBranch": {
-      "automergeType": "branch",
-      "description": "If automerging, push the new commit directly to base branch (no PR)"
-    },
-    "automergeBranchMergeCommit": {
-      "automergeType": "branch-merge-commit",
-      "description": "If automerging, perform a merge-commit on branch (no PR) - deprecated, use :automergeBranch instead"
-    },
-    "automergeBranchPush": {
-      "automergeType": "branch-push",
-      "description": "If automerging, push the new commit directly to base branch (no PR) - deprecated, use :automergeBranch instead"
-    },
-    "automergeDigest": {
-      "description": "Automerge digest upgrades if they pass tests",
-      "digest": {"automerge": true}
-    },
-    "automergeDisabled": {
-      "automerge": false,
-      "description": "Disable automerging feature - wait for humans to merge all PRs"
-    },
-    "automergeLinters": {
-      "description": "Update lint packages automatically if tests pass",
-      "packageRules": [{"extends": ["packages:linters"], "automerge": true}]
-    },
-    "automergeMajor": {
-      "automerge": true,
-      "description": "Automerge all upgrades (including major) if they pass tests"
-    },
-    "automergeMinor": {
-      "description": "Automerge patch and minor upgrades if they pass tests",
-      "lockFileMaintenance": {"automerge": true},
-      "minor": {"automerge": true},
-      "patch": {"automerge": true},
-      "pin": {"automerge": true}
-    },
-    "automergePatch": {
-      "description": "Automerge patch upgrades if they pass tests",
-      "lockFileMaintenance": {"automerge": true},
-      "patch": {"automerge": true},
-      "pin": {"automerge": true},
-      "separateMinorPatch": true
-    },
-    "automergePr": {
-      "automergeType": "pr",
-      "description": "Raise a PR first before any automerging"
-    },
-    "automergeRequireAllStatusChecks": {
-      "description": "Require all status checks to pass before any automerging",
-      "requiredStatusChecks": []
-    },
-    "automergeTesters": {
-      "description": "Update testing packages automatically if tests pass",
-      "packageRules": [{"extends": ["packages:test"], "automerge": true}]
-    },
-    "automergeTypes": {
-      "description": "Update @types/* packages automatically if tests pass",
-      "packageRules": [{"packagePatterns": ["^@types/"], "automerge": true}]
-    },
-    "base": {
-      "description": "deprecated alias for config:base",
-      "extends": ["config:base"]
-    },
-    "combinePatchMinorReleases": {
-      "description": "Do not separate patch and minor upgrades into separate PRs for the same dependency",
-      "separateMinorPatch": false
-    },
-    "description": "This presets file is intended for simple and commonly used presets. This is a special preset file, because each element below can be accessed using the `:` prefix e.g `:enableRenovate`.",
-    "disableDevDependencies": {
-      "description": "Do not renovate <code>devDependencies</code> versions/ranges",
-      "packageRules": [{"depTypeList": ["devDependencies"], "enabled": false}]
-    },
-    "disableDigestUpdates": {
-      "description": "Disable digest and git hash updates",
-      "digest": {"enabled": false}
-    },
-    "disableLockFiles": {
-      "description": "Disable lock file updates",
-      "updateLockFiles": false
-    },
-    "disableMajorUpdates": {
-      "description": "Disables major updates",
-      "major": {"enabled": false}
-    },
-    "disablePeerDependencies": {
-      "description": "Do not renovate <code>peerDependencies</code> versions/ranges",
-      "packageRules": [{"depTypeList": ["peerDependencies"], "enabled": false}]
-    },
-    "disableRateLimiting": {
-      "description": "Remove hourly and concurrent rate limits",
-      "prConcurrentLimit": 0,
-      "prHourlyLimit": 0
-    },
-    "disableRenovate": {"description": "Disable renovate", "enabled": false},
-    "disableVulnerabilityAlerts": {
-      "description": "Disable vulnerability alerts completely",
-      "vulnerabilityAlerts": {"enabled": false}
-    },
-    "doNotPinPackage": {
-      "description": "Disable version pinning for <code>{{arg0}}</code>",
-      "packageRules": [
-        {"packageNames": ["{{arg0}}"], "rangeStrategy": "replace"}
-      ]
-    },
-    "docker": {
-      "description": "Keep Dockerfile FROM sources updated",
-      "docker": {"enabled": true}
-    },
-    "enableRenovate": {"description": "Enable renovate", "enabled": true},
-    "enableVulnerabilityAlerts": {
-      "description": "Raise PR when vulnerability alerts are detected",
-      "vulnerabilityAlerts": {"enabled": true}
-    },
-    "enableVulnerabilityAlertsWithLabel": {
-      "description": "Raise PR when vulnerability alerts are detected with label <code>{{arg0}}</code>",
-      "vulnerabilityAlerts": {"enabled": true, "labels": ["{{arg0}}"]}
-    },
-    "followTag": {
-      "description": "For package <code>{{arg0}}</code>, strictly follow release tag <code>{{arg1}}</code>",
-      "packageRules": [{"packageNames": ["{{arg0}}"], "followTag": "{{arg1}}"}]
-    },
-    "gitSignOff": {
-      "commitBody": "Signed-off-by: {{{gitAuthor}}}",
-      "description": "Append git Signed-off-by signature to git commits."
-    },
-    "githubComToken": {
-      "description": "Use provided token for github.com lookups",
-      "hostRules": [
-        {"domainName": "github.com", "encrypted": {"token": "{{arg0}}"}}
-      ]
-    },
-    "gomod": {
-      "description": "Enable Go modules support",
-      "gomod": {"enabled": true}
-    },
-    "group": {
-      "description": "Group {{arg1}} packages into same branch/PR",
-      "packageRules": [{"extends": ["{{arg0}}"], "groupName": "{{arg1}}"}]
-    },
-    "ignoreModulesAndTests": {
-      "description": "Ignore `node_modules`, `bower_components`, `vendor` and various test/tests directories",
-      "ignorePaths": [
-        "**/node_modules/**",
-        "**/bower_components/**",
-        "**/vendor/**",
-        "**/examples/**",
-        "**/__tests__/**",
-        "**/test/**",
-        "**/tests/**",
-        "**/__fixtures__/**"
-      ]
-    },
-    "ignoreUnstable": {
-      "description": "Upgrade to unstable versions only if the existing version is unstable",
-      "ignoreUnstable": true
-    },
-    "includeNodeModules": {
-      "description": "Include <code>package.json</code> files found within <code>node_modules</code> folders or <code>bower_components</code>.",
-      "ignorePaths": []
-    },
-    "label": {
-      "description": "Apply label <code>{{arg0}}</code> to PRs",
-      "labels": ["{{arg0}}"]
-    },
-    "labels": {
-      "description": "Apply labels <code>{{arg0}}</code> and <code>{{arg1}}</code> to PRs",
-      "labels": ["{{arg0}}", "{{arg1}}"]
-    },
-    "library": {
-      "description": "deprecated alias for config:js-lib",
-      "extends": ["config:js-lib"]
-    },
-    "maintainLockFilesDisabled": {
-      "description": "Update existing lock files only when <code>package.json</code> is modified",
-      "lockFileMaintenance": {"enabled": false}
-    },
-    "maintainLockFilesMonthly": {
-      "description": "Run lock file maintenance (updates) on the first day of each month",
-      "lockFileMaintenance": {"enabled": true, "extends": "schedule:monthly"}
-    },
-    "maintainLockFilesWeekly": {
-      "description": "Run lock file maintenance (updates) early Monday mornings",
-      "lockFileMaintenance": {"enabled": true, "extends": "schedule:weekly"}
-    },
-    "masterIssue": {
-      "description": "Enable Renovate master issue creation",
-      "masterIssue": true
-    },
-    "masterIssueApproval": {
-      "description": "Enable Renovate master issue approval workflow",
-      "masterIssueApproval": true
-    },
-    "meteor": {
-      "description": "Keep Meteor Npm.depends packages updated",
-      "meteor": {"enabled": true}
-    },
-    "noUnscheduledUpdates": {
-      "description": "Make no updates to branches when not scheduled",
-      "updateNotScheduled": false
-    },
-    "npm": {
-      "description": "Keep package.json npm dependencies updated",
-      "npm": {"enabled": true}
-    },
-    "onlyNpm": {
-      "description": "Renovate only npm dependencies",
-      "docker": {"enabled": false},
-      "meteor": {"enabled": false}
-    },
-    "pathSemanticCommitType": {
-      "description": "Use semanticCommitType {{arg0}} for all package files matching path {{arg1}}",
-      "packageRules": [
-        {"paths": ["{{arg0}}"], "semanticCommitType": "{{arg1}}"}
-      ]
-    },
-    "pinAllExceptPeerDependencies": {
-      "description": "Pin dependency versions for all except <code>peerDependencies</code>",
-      "packageRules": [
-        {"packagePatterns": ["*"], "rangeStrategy": "pin"},
-        {
-          "depTypeList": ["engines", "peerDependencies"],
-          "rangeStrategy": "auto"
-        }
-      ]
-    },
-    "pinDependencies": {
-      "description": "Pin dependency versions for <code>dependencies</code>",
-      "packageRules": [
-        {"depTypeList": ["dependencies"], "rangeStrategy": "pin"}
-      ]
-    },
-    "pinDevDependencies": {
-      "description": "Pin dependency versions for <code>devDependencies</code>",
-      "packageRules": [
-        {"depTypeList": ["devDependencies"], "rangeStrategy": "pin"}
-      ]
-    },
-    "pinDigestsDisabled": {
-      "description": "Disable pinning of docker dependency digests",
-      "pinDigests": false
-    },
-    "pinOnlyDevDependencies": {
-      "description": "Pin dependency versions for <code>devDependencies</code> and retain semver ranges for others",
-      "packageRules": [
-        {"packagePatterns": ["*"], "rangeStrategy": "replace"},
-        {"depTypeList": ["devDependencies"], "rangeStrategy": "pin"},
-        {"depTypeList": ["peerDependencies"], "rangeStrategy": "widen"}
-      ]
-    },
-    "pinSkipCi": {
-      "description": "Add [skip ci] to commit message body whenever pinning",
-      "pin": {"commitBody": "[skip ci]"}
-    },
-    "pinVersions": {
-      "description": "Use version pinning (maintain a single version only and not semver ranges)",
-      "rangeStrategy": "pin"
-    },
-    "prConcurrentLimit10": {
-      "description": "Limit to maximum 10 open PRs",
-      "prConcurrentLimit": 10
-    },
-    "prConcurrentLimit20": {
-      "description": "Limit to maximum 20 open PRs at any time",
-      "prConcurrentLimit": 20
-    },
-    "prConcurrentLimitNone": {
-      "description": "Remove limit for open PRs",
-      "prConcurrentLimit": 0
-    },
-    "prHourlyLimit1": {
-      "description": "Rate limit PR creation to a maximum of one per hour",
-      "prHourlyLimit": 1
-    },
-    "prHourlyLimit2": {
-      "description": "Rate limit PR creation to a maximum of two per hour",
-      "prHourlyLimit": 2
-    },
-    "prHourlyLimit4": {
-      "description": "Rate limit PR creation to a maximum of four per hour",
-      "prHourlyLimit": 4
-    },
-    "prHourlyLimitNone": {
-      "description": "Removes rate limit for PR creation per hour",
-      "prHourlyLimit": 0
-    },
-    "prImmediately": {
-      "description": "Raise PRs immediately (after branch is created)",
-      "prCreation": "immediate"
-    },
-    "prNotPending": {
-      "description": "Wait until branch tests have passed or failed before creating the PR",
-      "prCreation": "not-pending"
-    },
-    "preserveSemverRanges": {
-      "description": "Preserve (but continue to upgrade) any existing semver ranges",
-      "rangeStrategy": "replace"
-    },
-    "rebaseStalePrs": {
-      "description": "Rebase existing PRs any time the base branch has been updated",
-      "rebaseStalePrs": true
-    },
-    "renovatePrefix": {
-      "branchPrefix": "renovate/",
-      "description": "Use <code>renovate/</code> as prefix for all branch names"
-    },
-    "respectLatest": {
-      "description": "Upgrade versions up to the \"latest\" tag in npm registry",
-      "respectLatest": true
-    },
-    "reviewer": {
-      "description": "Add <code>{{arg0}}</code> as reviewer for PRs",
-      "reviewers": ["{{arg0}}"]
-    },
-    "semanticCommitScope": {
-      "description": "Use semantic commit scope <code>{{arg0}}</code> for all commits and PR titles",
-      "semanticCommitScope": "{{arg0}}"
-    },
-    "semanticCommitScopeDisabled": {
-      "description": "Disable semantic commit scope for all commits and PR titles",
-      "semanticCommitScope": null
-    },
-    "semanticCommitType": {
-      "description": "Use <code>{{arg0}}</code> as semantic commit type for commit messages and PR titles",
-      "semanticCommitType": "{{arg0}}"
-    },
-    "semanticCommitTypeAll": {
-      "description": "If semantic commits detected, use semantic commit type <code>{{arg0}}</code> for all",
-      "packageRules": [
-        {"packagePatterns": ["*"], "semanticCommitType": "{{arg0}}"}
-      ]
-    },
-    "semanticCommits": {
-      "description": "Use semantic prefixes for commit messages and PR titles",
-      "semanticCommits": true
-    },
-    "semanticCommitsDisabled": {
-      "description": "Disable semantic prefixes for commit messages and PR titles",
-      "semanticCommits": false
-    },
-    "semanticPrefixChore": {
-      "description": "Use <code>chore</code> as semantic commit type for commit messages and PR titles",
-      "extends": [":semanticCommitType(chore)"]
-    },
-    "semanticPrefixFix": {
-      "description": "Use <code>fix</code> as semantic commit type for commit messages and PR titles",
-      "extends": [":semanticCommitType(fix)"]
-    },
-    "semanticPrefixFixDepsChoreOthers": {
-      "description": "If semantic commits detected, use semantic commit type <code>fix</code> for dependencies and <code>chore</code> for all others",
-      "packageRules": [
-        {"packagePatterns": ["*"], "semanticCommitType": "chore"},
-        {"depTypeList": ["dependencies"], "semanticCommitType": "fix"}
-      ]
-    },
-    "separateMajorReleases": {
-      "description": "Separate major versions of dependencies into individual branches/PRs",
-      "separateMajorMinor": true
-    },
-    "separateMultipleMajorReleases": {
-      "description": "Separate each available major versions of dependencies into individual branches/PRs",
-      "separateMajorMinor": true,
-      "separateMultipleMajor": true
-    },
-    "separatePatchReleases": {
-      "description": "Separate patch and minor releases of dependencies into separate PRs",
-      "separateMinorPatch": true
-    },
-    "skipStatusChecks": {
-      "description": "Skip status checks and automerge right away",
-      "requiredStatusChecks": null
-    },
-    "timezone": {
-      "description": "Evaluate schedules according to timezone {{arg0}}",
-      "timezone": "{{arg0}}"
-    },
-    "unpublishSafe": {
-      "description": "Set a status check to warn when upgrades <  24 hours old might get unpublished",
-      "unpublishSafe": true
-    },
-    "unpublishSafeDisabled": {
-      "description": "Create branches/PRs for dependency upgrades as soon as they're available",
-      "unpublishSafe": false
-    },
-    "updateNotScheduled": {
-      "description": "Keep existing branches updated even when not scheduled",
-      "updateNotScheduled": true
-    },
-    "widenPeerDependencies": {
-      "description": "Always widen peerDependencies semver ranges when updating, instead of replacing",
-      "packageRules": [
-        {"depTypeList": ["peerDependencies"], "versionStrategy": "widen"}
-      ]
-    }
-  },
-  "docker": {
-    "disable": {
-      "circleci": {"enabled": false},
-      "docker": {"enabled": false},
-      "docker-compose": {"enabled": false}
-    },
-    "disableMajor": {"docker": {"major": {"enabled": false}}},
-    "enableMajor": {"docker": {"major": {"enabled": true}}},
-    "pinDigests": {
-      "description": "Pin Docker digests",
-      "docker": {"pinDigests": true}
-    }
-  },
-  "group": {
-    "SwashbuckleMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from Swashbuckle monorepo together",
-          "extends": "monorepo:Swashbuckle",
-          "groupName": "Swashbuckle monorepo"
-        }
-      ]
-    },
-    "accountsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from accounts monorepo together",
-          "extends": "monorepo:accounts",
-          "groupName": "accounts monorepo"
-        }
-      ]
-    },
-    "ag-gridMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from ag-grid monorepo together",
-          "extends": "monorepo:ag-grid",
-          "groupName": "ag-grid monorepo"
-        }
-      ]
-    },
-    "algolia-react-instantsearchMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from algolia-react-instantsearch monorepo together",
-          "extends": "monorepo:algolia-react-instantsearch",
-          "groupName": "algolia-react-instantsearch monorepo"
-        }
-      ]
-    },
-    "all": {
-      "description": "Group all updates together",
-      "groupName": "all dependencies",
-      "groupSlug": "all",
-      "lockFileMaintenance": {"enabled": false},
-      "packageRules": [
-        {
-          "packagePatterns": ["*"],
-          "groupName": "all dependencies",
-          "groupSlug": "all"
-        }
-      ],
-      "separateMajorMinor": false
-    },
-    "allApollographql": {
-      "description": "Group all packages published by Apollo GraphQL together",
-      "packageRules": [
-        {
-          "extends": "packages:apollographql",
-          "groupName": "Apollo GraphQL packages"
-        }
-      ]
-    },
-    "allNonMajor": {
-      "description": "Group all minor and patch updates together",
-      "packageRules": [
-        {
-          "packagePatterns": ["*"],
-          "minor": {
-            "groupName": "all non-major dependencies",
-            "groupSlug": "all-minor-patch"
-          }
-        }
-      ]
-    },
-    "angular1Monorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from angular1 monorepo together",
-          "extends": "monorepo:angular1",
-          "groupName": "angular1 monorepo"
-        }
-      ]
-    },
-    "angularMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from angular monorepo together",
-          "extends": "monorepo:angular",
-          "groupName": "angular monorepo"
-        }
-      ]
-    },
-    "angularcliMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from angularcli monorepo together",
-          "extends": "monorepo:angularcli",
-          "groupName": "angularcli monorepo"
-        }
-      ]
-    },
-    "angularmaterialMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from angularmaterial monorepo together",
-          "extends": "monorepo:angularmaterial",
-          "groupName": "angularmaterial monorepo"
-        }
-      ]
-    },
-    "apollo-serverMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from apollo-server monorepo together",
-          "extends": "monorepo:apollo-server",
-          "groupName": "apollo-server monorepo"
-        }
-      ]
-    },
-    "apolloclientMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from apolloclient monorepo together",
-          "extends": "monorepo:apolloclient",
-          "groupName": "apolloclient monorepo"
-        }
-      ]
-    },
-    "apollolinkMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from apollolink monorepo together",
-          "extends": "monorepo:apollolink",
-          "groupName": "apollolink monorepo"
-        }
-      ]
-    },
-    "arcus background-jobsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from arcus background-jobs monorepo together",
-          "extends": "monorepo:arcus background-jobs",
-          "groupName": "arcus background-jobs monorepo"
-        }
-      ]
-    },
-    "arcus event-gridMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from arcus event-grid monorepo together",
-          "extends": "monorepo:arcus event-grid",
-          "groupName": "arcus event-grid monorepo"
-        }
-      ]
-    },
-    "arcus messagingMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from arcus messaging monorepo together",
-          "extends": "monorepo:arcus messaging",
-          "groupName": "arcus messaging monorepo"
-        }
-      ]
-    },
-    "arcus observabilityMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from arcus observability monorepo together",
-          "extends": "monorepo:arcus observability",
-          "groupName": "arcus observability monorepo"
-        }
-      ]
-    },
-    "arcus securityMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from arcus security monorepo together",
-          "extends": "monorepo:arcus security",
-          "groupName": "arcus security monorepo"
-        }
-      ]
-    },
-    "arcus webapiMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from arcus webapi monorepo together",
-          "extends": "monorepo:arcus webapi",
-          "groupName": "arcus webapi monorepo"
-        }
-      ]
-    },
-    "aspnet AspNetWebStackMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from aspnet AspNetWebStack monorepo together",
-          "extends": "monorepo:aspnet AspNetWebStack",
-          "groupName": "aspnet AspNetWebStack monorepo"
-        }
-      ]
-    },
-    "aspnet ExtensionsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from aspnet Extensions monorepo together",
-          "extends": "monorepo:aspnet Extensions",
-          "groupName": "aspnet Extensions monorepo"
-        }
-      ]
-    },
-    "aws-cdkMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from aws-cdk monorepo together",
-          "extends": "monorepo:aws-cdk",
-          "groupName": "aws-cdk monorepo"
-        }
-      ]
-    },
-    "aws-java-sdkMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from aws-java-sdk monorepo together",
-          "extends": "monorepo:aws-java-sdk",
-          "groupName": "aws-java-sdk monorepo"
-        }
-      ]
-    },
-    "awsappsyncMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from awsappsync monorepo together",
-          "extends": "monorepo:awsappsync",
-          "groupName": "awsappsync monorepo"
-        }
-      ]
-    },
-    "azure azure-libraries-for-netMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from azure azure-libraries-for-net monorepo together",
-          "extends": "monorepo:azure azure-libraries-for-net",
-          "groupName": "azure azure-libraries-for-net monorepo"
-        }
-      ]
-    },
-    "azure azure-sdk-for-netMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from azure azure-sdk-for-net monorepo together",
-          "extends": "monorepo:azure azure-sdk-for-net",
-          "groupName": "azure azure-sdk-for-net monorepo"
-        }
-      ]
-    },
-    "azure azure-storage-netMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from azure azure-storage-net monorepo together",
-          "extends": "monorepo:azure azure-storage-net",
-          "groupName": "azure azure-storage-net monorepo"
-        }
-      ]
-    },
-    "babel6Monorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from babel6 monorepo together",
-          "extends": "monorepo:babel6",
-          "groupName": "babel6 monorepo"
-        }
-      ]
-    },
-    "babelMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from babel monorepo together",
-          "extends": "monorepo:babel",
-          "groupName": "babel monorepo"
-        }
-      ]
-    },
-    "basetMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from baset monorepo together",
-          "extends": "monorepo:baset",
-          "groupName": "baset monorepo"
-        }
-      ]
-    },
-    "braveMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from brave monorepo together",
-          "extends": "monorepo:brave",
-          "groupName": "brave monorepo"
-        }
-      ]
-    },
-    "bugsnag-jsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from bugsnag-js monorepo together",
-          "extends": "monorepo:bugsnag-js",
-          "groupName": "bugsnag-js monorepo"
-        }
-      ]
-    },
-    "capacitorMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from capacitor monorepo together",
-          "extends": "monorepo:capacitor",
-          "groupName": "capacitor monorepo"
-        }
-      ]
-    },
-    "clarityMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from clarity monorepo together",
-          "extends": "monorepo:clarity",
-          "groupName": "clarity monorepo"
-        }
-      ]
-    },
-    "commitlintMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from commitlint monorepo together",
-          "extends": "monorepo:commitlint",
-          "groupName": "commitlint monorepo"
-        }
-      ]
-    },
-    "definitelyTyped": {
-      "description": "Group all @types packages together",
-      "packageRules": [
-        {"groupName": "definitelyTyped", "packagePatterns": ["^@types/"]}
-      ]
-    },
-    "devextreme-reactiveMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from devextreme-reactive monorepo together",
-          "extends": "monorepo:devextreme-reactive",
-          "groupName": "devextreme-reactive monorepo"
-        }
-      ]
-    },
-    "dotNetCore": {
-      "description": ".NET Core Docker containers",
-      "packageRules": [
-        {
-          "datasources": ["docker"],
-          "packagePatterns": ["^mcr.microsoft.com/dotnet/core/"],
-          "groupName": ".NET Core Docker containers"
-        }
-      ]
-    },
-    "dropwizardMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from dropwizard monorepo together",
-          "extends": "monorepo:dropwizard",
-          "groupName": "dropwizard monorepo"
-        }
-      ]
-    },
-    "electron-forgeMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from electron-forge monorepo together",
-          "extends": "monorepo:electron-forge",
-          "groupName": "electron-forge monorepo"
-        }
-      ]
-    },
-    "ember-decoratorsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from ember-decorators monorepo together",
-          "extends": "monorepo:ember-decorators",
-          "groupName": "ember-decorators monorepo"
-        }
-      ]
-    },
-    "emotionMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from emotion monorepo together",
-          "extends": "monorepo:emotion",
-          "groupName": "emotion monorepo"
-        }
-      ]
-    },
-    "expoMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from expo monorepo together",
-          "extends": "monorepo:expo",
-          "groupName": "expo monorepo"
-        }
-      ]
-    },
-    "fimbullinterMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from fimbullinter monorepo together",
-          "extends": "monorepo:fimbullinter",
-          "groupName": "fimbullinter monorepo"
-        }
-      ]
-    },
-    "flopflipMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from flopflip monorepo together",
-          "extends": "monorepo:flopflip",
-          "groupName": "flopflip monorepo"
-        }
-      ]
-    },
-    "fortawesome": {
-      "description": "Group all packages by Font Awesome together",
-      "packageRules": [
-        {"groupName": "Font Awesome", "packagePatterns": ["^@fortawesome/"]}
-      ]
-    },
-    "framework7Monorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from framework7 monorepo together",
-          "extends": "monorepo:framework7",
-          "groupName": "framework7 monorepo"
-        }
-      ]
-    },
-    "fusionjs": {
-      "description": "Fusion.js packages",
-      "packageNames": [
-        "fusion-cli",
-        "fusion-core",
-        "fusion-test-utils",
-        "fusion-tokens"
-      ],
-      "packagePatterns": [
-        "^fusion-plugin-*",
-        "^fusion-react*",
-        "^fusion-apollo*"
-      ]
-    },
-    "gatsbyMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from gatsby monorepo together",
-          "extends": "monorepo:gatsby",
-          "groupName": "gatsby monorepo"
-        }
-      ]
-    },
-    "goOpenapi": {
-      "description": "Group go-openapi packages together",
-      "packageRules": [
-        {
-          "datasources": ["go"],
-          "groupName": "go-openapi packages",
-          "groupSlug": "go-openapi",
-          "packagePatterns": ["^github.com/go-openapi/"]
-        }
-      ]
-    },
-    "graphql-modulesMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from graphql-modules monorepo together",
-          "extends": "monorepo:graphql-modules",
-          "groupName": "graphql-modules monorepo"
-        }
-      ]
-    },
-    "graphql-toolkitMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from graphql-toolkit monorepo together",
-          "extends": "monorepo:graphql-toolkit",
-          "groupName": "graphql-toolkit monorepo"
-        }
-      ]
-    },
-    "graphqlcodegeneratorMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from graphqlcodegenerator monorepo together",
-          "extends": "monorepo:graphqlcodegenerator",
-          "groupName": "graphqlcodegenerator monorepo"
-        }
-      ]
-    },
-    "hamcrestMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from hamcrest monorepo together",
-          "extends": "monorepo:hamcrest",
-          "groupName": "hamcrest monorepo"
-        }
-      ]
-    },
-    "hapijsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from hapijs monorepo together",
-          "extends": "monorepo:hapijs",
-          "groupName": "hapijs monorepo"
-        }
-      ]
-    },
-    "hibernateCommons": {
-      "description": "Group Java Hibernate Commons packages",
-      "packageRules": [
-        {
-          "packagePatterns": ["^org.hibernate.common:"],
-          "groupName": "hibernate commons"
-        }
-      ]
-    },
-    "hibernateCore": {
-      "description": "Group Java Hibernate Core packages",
-      "packageRules": [
-        {"packagePatterns": ["^org.hibernate:"], "groupName": "hibernate core"}
-      ]
-    },
-    "hibernateOgm": {
-      "description": "Group Java Hibernate OGM packages",
-      "packageRules": [
-        {
-          "packagePatterns": ["^org.hibernate.ogm:"],
-          "groupName": "hibernate ogm"
-        }
-      ]
-    },
-    "hibernateValidator": {
-      "description": "Group Java Hibernate Validator packages",
-      "packageRules": [
-        {
-          "packagePatterns": ["^org.hibernate.validator:"],
-          "groupName": "hibernate validator"
-        }
-      ]
-    },
-    "illuminate": {
-      "description": "Group PHP illuminate packages together",
-      "packageRules": [
-        {
-          "packagePatterns": ["^illuminate/"],
-          "groupName": "illuminate packages",
-          "groupSlug": "illuminate"
-        }
-      ]
-    },
-    "infrastructureMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from infrastructure monorepo together",
-          "extends": "monorepo:infrastructure",
-          "groupName": "infrastructure monorepo"
-        }
-      ]
-    },
-    "ionic-nativeMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from ionic-native monorepo together",
-          "extends": "monorepo:ionic-native",
-          "groupName": "ionic-native monorepo"
-        }
-      ]
-    },
-    "jasmineMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from jasmine monorepo together",
-          "extends": "monorepo:jasmine",
-          "groupName": "jasmine monorepo"
-        }
-      ]
-    },
-    "jekyllEcosystem": {
-      "description": "Group jekyll and related ruby packages together",
-      "packageRules": [
-        {
-          "sourceUrlPrefixes": [
-            "https://github.com/jekyll/",
-            "https://github.com/github/pages-gem"
-          ],
-          "groupName": "jekyll ecosystem packages"
-        }
-      ]
-    },
-    "jerseyMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from jersey monorepo together",
-          "extends": "monorepo:jersey",
-          "groupName": "jersey monorepo"
-        }
-      ]
-    },
-    "jestMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from jest monorepo together",
-          "extends": "monorepo:jest",
-          "groupName": "jest monorepo"
-        }
-      ]
-    },
-    "jsTest": {
-      "description": "Group JS test packages together",
-      "packageRules": [
-        {"extends": "packages:jsTest", "groupName": "JS test packages"}
-      ]
-    },
-    "jsTestMonMajor": {
-      "description": "Group non-major JS test package updates together",
-      "packageRules": [
-        {
-          "extends": "packages:jsTest",
-          "minor": {"groupName": "JS test packages"}
-        }
-      ]
-    },
-    "jsUnitTest": {
-      "description": "Group JS unit test packages together",
-      "packageRules": [
-        {"extends": "packages:jsUnitTest", "groupName": "JS unit test packages"}
-      ]
-    },
-    "jsUnitTestNonMajor": {
-      "description": "Group JS unit test packages together",
-      "packageRules": [
-        {
-          "extends": "packages:jsUnitTest",
-          "minor": {"groupName": "JS unit test packages"}
-        }
-      ]
-    },
-    "lernaMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from lerna monorepo together",
-          "extends": "monorepo:lerna",
-          "groupName": "lerna monorepo"
-        }
-      ]
-    },
-    "linguiMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from lingui monorepo together",
-          "extends": "monorepo:lingui",
-          "groupName": "lingui monorepo"
-        }
-      ]
-    },
-    "linters": {
-      "description": "Group various lint packages together",
-      "packageRules": [{"extends": "packages:linters", "groupName": "linters"}]
-    },
-    "lodashMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from lodash monorepo together",
-          "extends": "monorepo:lodash",
-          "groupName": "lodash monorepo"
-        }
-      ]
-    },
-    "loopbackMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from loopback monorepo together",
-          "extends": "monorepo:loopback",
-          "groupName": "loopback monorepo"
-        }
-      ]
-    },
-    "materialMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from material monorepo together",
-          "extends": "monorepo:material",
-          "groupName": "material monorepo"
-        }
-      ]
-    },
-    "mdc-reactMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from mdc-react monorepo together",
-          "extends": "monorepo:mdc-react",
-          "groupName": "mdc-react monorepo"
-        }
-      ]
-    },
-    "mdxMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from mdx monorepo together",
-          "extends": "monorepo:mdx",
-          "groupName": "mdx monorepo"
-        }
-      ]
-    },
-    "monorepos": {
-      "description": "Group known monorepo packages together",
-      "extends": [
-        "group:ag-gridMonorepo",
-        "group:arcus event-gridMonorepo",
-        "group:arcus securityMonorepo",
-        "group:arcus messagingMonorepo",
-        "group:arcus observabilityMonorepo",
-        "group:arcus webapiMonorepo",
-        "group:arcus background-jobsMonorepo",
-        "group:algolia-react-instantsearchMonorepo",
-        "group:apollo-serverMonorepo",
-        "group:aspnet AspNetWebStackMonorepo",
-        "group:aspnet ExtensionsMonorepo",
-        "group:aws-cdkMonorepo",
-        "group:azure azure-libraries-for-netMonorepo",
-        "group:azure azure-sdk-for-netMonorepo",
-        "group:azure azure-storage-netMonorepo",
-        "group:bugsnag-jsMonorepo",
-        "group:devextreme-reactiveMonorepo",
-        "group:electron-forgeMonorepo",
-        "group:ember-decoratorsMonorepo",
-        "group:graphql-modulesMonorepo",
-        "group:ionic-nativeMonorepo",
-        "group:mdc-reactMonorepo",
-        "group:ngx-formlyMonorepo",
-        "group:ngxs-storeMonorepo",
-        "group:react-apolloMonorepo",
-        "group:react-dndMonorepo",
-        "group:react-navigationMonorepo",
-        "group:reactivestack-cookiesMonorepo",
-        "group:semantic-releaseMonorepo",
-        "group:telus-tdsMonorepo",
-        "group:typescript-eslintMonorepo",
-        "group:typography-jsMonorepo",
-        "group:vue-cliMonorepo",
-        "group:accountsMonorepo",
-        "group:angular1Monorepo",
-        "group:angularMonorepo",
-        "group:angularcliMonorepo",
-        "group:apolloclientMonorepo",
-        "group:apollolinkMonorepo",
-        "group:awsappsyncMonorepo",
-        "group:babelMonorepo",
-        "group:basetMonorepo",
-        "group:braveMonorepo",
-        "group:capacitorMonorepo",
-        "group:clarityMonorepo",
-        "group:commitlintMonorepo",
-        "group:dropwizardMonorepo",
-        "group:emotionMonorepo",
-        "group:expoMonorepo",
-        "group:fimbullinterMonorepo",
-        "group:flopflipMonorepo",
-        "group:framework7Monorepo",
-        "group:gatsbyMonorepo",
-        "group:graphqlcodegeneratorMonorepo",
-        "group:graphql-toolkitMonorepo",
-        "group:hamcrestMonorepo",
-        "group:hapijsMonorepo",
-        "group:infrastructureMonorepo",
-        "group:jasmineMonorepo",
-        "group:jerseyMonorepo",
-        "group:jestMonorepo",
-        "group:lernaMonorepo",
-        "group:linguiMonorepo",
-        "group:lodashMonorepo",
-        "group:loopbackMonorepo",
-        "group:materialMonorepo",
-        "group:mdxMonorepo",
-        "group:muiMonorepo",
-        "group:nestMonorepo",
-        "group:neutrinoMonorepo",
-        "group:nextjsMonorepo",
-        "group:ngrxMonorepo",
-        "group:nrwlMonorepo",
-        "group:nuxtjsMonorepo",
-        "group:openfeignMonorepo",
-        "group:picassoMonorepo",
-        "group:pollyjsMonorepo",
-        "group:pouchdbMonorepo",
-        "group:reactMonorepo",
-        "group:reactrouterMonorepo",
-        "group:reakitMonorepo",
-        "group:remarkMonorepo",
-        "group:router5Monorepo",
-        "group:sentryMonorepo",
-        "group:springfoxMonorepo",
-        "group:sanityMonorepo",
-        "group:storybookMonorepo",
-        "group:strapiMonorepo",
-        "group:strykerMonorepo",
-        "group:surveyjsMonorepo",
-        "group:SwashbuckleMonorepo",
-        "group:treatMonorepo",
-        "group:typefacesMonorepo",
-        "group:uppyMonorepo",
-        "group:vueMonorepo",
-        "group:vuepressMonorepo",
-        "group:webdriverioMonorepo",
-        "group:workboxMonorepo",
-        "group:babel6Monorepo",
-        "group:wordpressMonorepo",
-        "group:angularmaterialMonorepo",
-        "group:aws-java-sdkMonorepo"
-      ],
-      "ignoreDeps": []
-    },
-    "muiMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from mui monorepo together",
-          "extends": "monorepo:mui",
-          "groupName": "mui monorepo"
-        }
-      ]
-    },
-    "nestMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from nest monorepo together",
-          "extends": "monorepo:nest",
-          "groupName": "nest monorepo"
-        }
-      ]
-    },
-    "neutrinoMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from neutrino monorepo together",
-          "extends": "monorepo:neutrino",
-          "groupName": "neutrino monorepo"
-        }
-      ]
-    },
-    "nextjsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from nextjs monorepo together",
-          "extends": "monorepo:nextjs",
-          "groupName": "nextjs monorepo"
-        }
-      ]
-    },
-    "ngrxMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from ngrx monorepo together",
-          "extends": "monorepo:ngrx",
-          "groupName": "ngrx monorepo"
-        }
-      ]
-    },
-    "ngx-formlyMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from ngx-formly monorepo together",
-          "extends": "monorepo:ngx-formly",
-          "groupName": "ngx-formly monorepo"
-        }
-      ]
-    },
-    "ngxs-storeMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from ngxs-store monorepo together",
-          "extends": "monorepo:ngxs-store",
-          "groupName": "ngxs-store monorepo"
-        }
-      ]
-    },
-    "nrwlMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from nrwl monorepo together",
-          "extends": "monorepo:nrwl",
-          "groupName": "nrwl monorepo"
-        }
-      ]
-    },
-    "nuxtjsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from nuxtjs monorepo together",
-          "extends": "monorepo:nuxtjs",
-          "groupName": "nuxtjs monorepo"
-        }
-      ]
-    },
-    "openfeignMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from openfeign monorepo together",
-          "extends": "monorepo:openfeign",
-          "groupName": "openfeign monorepo"
-        }
-      ]
-    },
-    "picassoMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from picasso monorepo together",
-          "extends": "monorepo:picasso",
-          "groupName": "picasso monorepo"
-        }
-      ]
-    },
-    "pollyjsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from pollyjs monorepo together",
-          "extends": "monorepo:pollyjs",
-          "groupName": "pollyjs monorepo"
-        }
-      ]
-    },
-    "polymer": {
-      "description": "Group all @polymer packages together",
-      "packageRules": [
-        {"groupName": "polymer packages", "packagePatterns": ["^@polymer/"]}
-      ]
-    },
-    "postcss": {
-      "description": "Group postcss packages together",
-      "packageRules": [
-        {"extends": "packages:postcss", "groupName": "postcss packages"}
-      ]
-    },
-    "pouchdbMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from pouchdb monorepo together",
-          "extends": "monorepo:pouchdb",
-          "groupName": "pouchdb monorepo"
-        }
-      ]
-    },
-    "react-apolloMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from react-apollo monorepo together",
-          "extends": "monorepo:react-apollo",
-          "groupName": "react-apollo monorepo"
-        }
-      ]
-    },
-    "react-dndMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from react-dnd monorepo together",
-          "extends": "monorepo:react-dnd",
-          "groupName": "react-dnd monorepo"
-        }
-      ]
-    },
-    "react-navigationMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from react-navigation monorepo together",
-          "extends": "monorepo:react-navigation",
-          "groupName": "react-navigation monorepo"
-        }
-      ]
-    },
-    "reactMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from react monorepo together",
-          "extends": "monorepo:react",
-          "groupName": "react monorepo"
-        }
-      ]
-    },
-    "reactivestack-cookiesMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from reactivestack-cookies monorepo together",
-          "extends": "monorepo:reactivestack-cookies",
-          "groupName": "reactivestack-cookies monorepo"
-        }
-      ]
-    },
-    "reactrouterMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from reactrouter monorepo together",
-          "extends": "monorepo:reactrouter",
-          "groupName": "reactrouter monorepo"
-        }
-      ]
-    },
-    "reakitMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from reakit monorepo together",
-          "extends": "monorepo:reakit",
-          "groupName": "reakit monorepo"
-        }
-      ]
-    },
-    "recommended": {
-      "description": "Use curated list of recommended non-monorepo package groupings",
-      "extends": [
-        "group:allApollographql",
-        "group:fortawesome",
-        "group:goOpenapi",
-        "group:fusionjs",
-        "group:hibernateCore",
-        "group:hibernateValidator",
-        "group:hibernateOgm",
-        "group:hibernateCommons",
-        "group:illuminate",
-        "group:jekyllEcosystem",
-        "group:polymer",
-        "group:rubyOmniauth",
-        "group:socketio",
-        "group:springAmqp",
-        "group:springAndroid",
-        "group:springBatch",
-        "group:springBoot",
-        "group:springCloud",
-        "group:springCore",
-        "group:springData",
-        "group:springHateoas",
-        "group:springIntegration",
-        "group:springKafka",
-        "group:springLdap",
-        "group:springMobile",
-        "group:springOsgi",
-        "group:springRestDocs",
-        "group:springRoo",
-        "group:springScala",
-        "group:springSecurity",
-        "group:springSession",
-        "group:springShell",
-        "group:springSocial",
-        "group:springStatemachine",
-        "group:springWebflow",
-        "group:springWs",
-        "group:symfony"
-      ],
-      "ignoreDeps": []
-    },
-    "remarkMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from remark monorepo together",
-          "extends": "monorepo:remark",
-          "groupName": "remark monorepo"
-        }
-      ]
-    },
-    "router5Monorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from router5 monorepo together",
-          "extends": "monorepo:router5",
-          "groupName": "router5 monorepo"
-        }
-      ]
-    },
-    "rubyOmniauth": {
-      "description": "Group omniauth packages together",
-      "packageRules": [
-        {
-          "datasources": ["rubygems"],
-          "packagePatterns": ["^omniauth"],
-          "groupName": "omniauth packages"
-        }
-      ]
-    },
-    "sanityMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from sanity monorepo together",
-          "extends": "monorepo:sanity",
-          "groupName": "sanity monorepo"
-        }
-      ]
-    },
-    "semantic-releaseMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from semantic-release monorepo together",
-          "extends": "monorepo:semantic-release",
-          "groupName": "semantic-release monorepo"
-        }
-      ]
-    },
-    "sentryMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from sentry monorepo together",
-          "extends": "monorepo:sentry",
-          "groupName": "sentry monorepo"
-        }
-      ]
-    },
-    "socketio": {
-      "description": "Group socket.io packages",
-      "packageRules": [
-        {"groupName": "socket.io packages", "packagePatterns": ["^socket.io"]}
-      ]
-    },
-    "springAmqp": {
-      "description": "Group Java Spring AMQP packages",
-      "packageRules": [
-        {
-          "groupName": "spring amqp",
-          "packagePatterns": ["^org.springframework.amqp:"]
-        }
-      ]
-    },
-    "springAndroid": {
-      "description": "Group Java Spring Android packages",
-      "packageRules": [
-        {
-          "groupName": "spring android",
-          "packagePatterns": ["^org.springframework.android:"]
-        }
-      ]
-    },
-    "springBatch": {
-      "description": "Group Java Spring Batch packages",
-      "packageRules": [
-        {
-          "groupName": "spring batch",
-          "packagePatterns": ["^org.springframework.batch:"]
-        }
-      ]
-    },
-    "springBoot": {
-      "description": "Group Java Spring Boot packages",
-      "packageRules": [
-        {
-          "groupName": "spring boot",
-          "packagePatterns": ["^org.springframework.boot:"]
-        }
-      ]
-    },
-    "springCloud": {
-      "description": "Group Java Spring Cloud packages",
-      "packageRules": [
-        {
-          "groupName": "spring cloud",
-          "packagePatterns": ["^org.springframework.cloud:"]
-        }
-      ]
-    },
-    "springCore": {
-      "description": "Group Java Spring Core packages",
-      "packageRules": [
-        {
-          "groupName": "spring core",
-          "packagePatterns": ["^org.springframework:"]
-        }
-      ]
-    },
-    "springData": {
-      "description": "Group Java Spring Data packages",
-      "packageRules": [
-        {
-          "groupName": "spring data",
-          "packagePatterns": ["^org.springframework.data:"]
-        }
-      ]
-    },
-    "springHateoas": {
-      "description": "Group Java Spring HATEOAS packages",
-      "packageRules": [
-        {
-          "groupName": "spring hateoas",
-          "packagePatterns": ["^org.springframework.hateoas:"]
-        }
-      ]
-    },
-    "springIntegration": {
-      "description": "Group Java Spring Integration packages",
-      "packageRules": [
-        {
-          "groupName": "spring integration",
-          "packagePatterns": ["^org.springframework.integration:"]
-        }
-      ]
-    },
-    "springKafka": {
-      "description": "Group Java Spring Kafka packages",
-      "packageRules": [
-        {
-          "groupName": "spring kafka",
-          "packagePatterns": ["^org.springframework.kafka:"]
-        }
-      ]
-    },
-    "springLdap": {
-      "description": "Group Java Spring LDAP packages",
-      "packageRules": [
-        {
-          "groupName": "spring ldap",
-          "packagePatterns": ["^org.springframework.ldap:"]
-        }
-      ]
-    },
-    "springMobile": {
-      "description": "Group Java Spring Mobile packages",
-      "packageRules": [
-        {
-          "groupName": "spring mobile",
-          "packagePatterns": ["^org.springframework.mobile:"]
-        }
-      ]
-    },
-    "springOsgi": {
-      "description": "Group Java Spring OSGi packages",
-      "packageRules": [
-        {
-          "groupName": "spring osgi",
-          "packagePatterns": ["^org.springframework.osgi:"]
-        }
-      ]
-    },
-    "springRestDocs": {
-      "description": "Group Java Spring REST Docs packages",
-      "packageRules": [
-        {
-          "groupName": "spring restdocs",
-          "packagePatterns": ["^org.springframework.restdocs:"]
-        }
-      ]
-    },
-    "springRoo": {
-      "description": "Group Java Spring Roo packages",
-      "packageRules": [
-        {
-          "groupName": "spring roo",
-          "packagePatterns": ["^org.springframework.roo:"]
-        }
-      ]
-    },
-    "springScala": {
-      "description": "Group Java Spring Scala packages",
-      "packageRules": [
-        {
-          "groupName": "spring scala",
-          "packagePatterns": ["^org.springframework.scala:"]
-        }
-      ]
-    },
-    "springSecurity": {
-      "description": "Group Java Spring Security packages",
-      "packageRules": [
-        {
-          "groupName": "spring security",
-          "packagePatterns": ["^org.springframework.security:"]
-        }
-      ]
-    },
-    "springSession": {
-      "description": "Group Java Spring Session packages",
-      "packageRules": [
-        {
-          "groupName": "spring session",
-          "packagePatterns": ["^org.springframework.session:"]
-        }
-      ]
-    },
-    "springShell": {
-      "description": "Group Java Spring Shell packages",
-      "packageRules": [
-        {
-          "groupName": "spring shell",
-          "packagePatterns": ["^org.springframework.shell:"]
-        }
-      ]
-    },
-    "springSocial": {
-      "description": "Group Java Spring Social packages",
-      "packageRules": [
-        {
-          "groupName": "spring social",
-          "packagePatterns": ["^org.springframework.social:"]
-        }
-      ]
-    },
-    "springStatemachine": {
-      "description": "Group Java Spring Statemachine packages",
-      "packageRules": [
-        {
-          "groupName": "spring statemachine",
-          "packagePatterns": ["^org.springframework.statemachine:"]
-        }
-      ]
-    },
-    "springWebflow": {
-      "description": "Group Java Spring WebFlow packages",
-      "packageRules": [
-        {
-          "groupName": "spring webflow",
-          "packagePatterns": ["^org.springframework.webflow:"]
-        }
-      ]
-    },
-    "springWs": {
-      "description": "Group Java Spring WS packages",
-      "packageRules": [
-        {
-          "groupName": "spring ws",
-          "packagePatterns": ["^org.springframework.ws:"]
-        }
-      ]
-    },
-    "springfoxMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from springfox monorepo together",
-          "extends": "monorepo:springfox",
-          "groupName": "springfox monorepo"
-        }
-      ]
-    },
-    "storybookMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from storybook monorepo together",
-          "extends": "monorepo:storybook",
-          "groupName": "storybook monorepo"
-        }
-      ]
-    },
-    "strapiMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from strapi monorepo together",
-          "extends": "monorepo:strapi",
-          "groupName": "strapi monorepo"
-        }
-      ]
-    },
-    "strykerMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from stryker monorepo together",
-          "extends": "monorepo:stryker",
-          "groupName": "stryker monorepo"
-        }
-      ]
-    },
-    "surveyjsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from surveyjs monorepo together",
-          "extends": "monorepo:surveyjs",
-          "groupName": "surveyjs monorepo"
-        }
-      ]
-    },
-    "symfony": {
-      "description": "Group PHP symfony packages together",
-      "packageRules": [
-        {
-          "packagePatterns": ["^symfony/"],
-          "groupName": "symfony packages",
-          "groupSlug": "symfony"
-        }
-      ]
-    },
-    "telus-tdsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from telus-tds monorepo together",
-          "extends": "monorepo:telus-tds",
-          "groupName": "telus-tds monorepo"
-        }
-      ]
-    },
-    "test": {
-      "description": "Group all test packages together",
-      "packageRules": [
-        {"extends": "packages:test", "groupName": "test packages"}
-      ]
-    },
-    "testNonMajor": {
-      "description": "Group all non-major test package updates together",
-      "packageRules": [
-        {"extends": "packages:test", "minor": {"groupName": "test packages"}}
-      ]
-    },
-    "treatMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from treat monorepo together",
-          "extends": "monorepo:treat",
-          "groupName": "treat monorepo"
-        }
-      ]
-    },
-    "typefacesMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from typefaces monorepo together",
-          "extends": "monorepo:typefaces",
-          "groupName": "typefaces monorepo"
-        }
-      ]
-    },
-    "typescript-eslintMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from typescript-eslint monorepo together",
-          "extends": "monorepo:typescript-eslint",
-          "groupName": "typescript-eslint monorepo"
-        }
-      ]
-    },
-    "typography-jsMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from typography-js monorepo together",
-          "extends": "monorepo:typography-js",
-          "groupName": "typography-js monorepo"
-        }
-      ]
-    },
-    "unitTest": {
-      "description": "Group all unit test packages together",
-      "packageRules": [
-        {"extends": "packages:unitTest", "groupName": "unit test packages"}
-      ]
-    },
-    "unitTestNonMajor": {
-      "description": "Group all unit test packages together",
-      "packageRules": [
-        {
-          "extends": "packages:unitTest",
-          "minor": {"groupName": "unit test packages"}
-        }
-      ]
-    },
-    "uppyMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from uppy monorepo together",
-          "extends": "monorepo:uppy",
-          "groupName": "uppy monorepo"
-        }
-      ]
-    },
-    "vue-cliMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from vue-cli monorepo together",
-          "extends": "monorepo:vue-cli",
-          "groupName": "vue-cli monorepo"
-        }
-      ]
-    },
-    "vueMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from vue monorepo together",
-          "extends": "monorepo:vue",
-          "groupName": "vue monorepo"
-        }
-      ]
-    },
-    "vuepressMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from vuepress monorepo together",
-          "extends": "monorepo:vuepress",
-          "groupName": "vuepress monorepo"
-        }
-      ]
-    },
-    "webdriverioMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from webdriverio monorepo together",
-          "extends": "monorepo:webdriverio",
-          "groupName": "webdriverio monorepo"
-        }
-      ]
-    },
-    "wordpressMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from wordpress monorepo together",
-          "extends": "monorepo:wordpress",
-          "groupName": "wordpress monorepo"
-        }
-      ]
-    },
-    "workboxMonorepo": {
-      "packageRules": [
-        {
-          "description": "Group packages from workbox monorepo together",
-          "extends": "monorepo:workbox",
-          "groupName": "workbox monorepo"
-        }
-      ]
-    }
-  },
-  "helpers": {
-    "disableTypesNodeMajor": {
-      "packageRules": [
-        {"packageNames": ["@types/node"], "major": {"enabled": false}}
-      ]
-    },
-    "followTypescriptNext": {
-      "description": "Keep <typescript> version in sync with the <code>next</code> tag",
-      "extends": [":followTag(typescript, next)"]
-    },
-    "followTypescriptRc": {
-      "description": "Keep <typescript> version in sync with the <code>rc</code> tag",
-      "extends": [":followTag(typescript, rc)"]
-    },
-    "oddIsUnstable": {
-      "description": "DEPRECATED: Odd version numbers are classified as unstable"
-    },
-    "oddIsUnstablePackages": {
-      "description": "DEPRECATED: Preconfigure dependencies where an odd major version indicates unstable (Docker-only)"
-    }
-  },
-  "monorepo": {
-    "Swashbuckle": {
-      "description": "Swashbuckle monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/domaindrivendev/Swashbuckle.AspNetCore"
-      ]
-    },
-    "accounts": {
-      "description": "accounts monorepo",
-      "sourceUrlPrefixes": ["https://github.com/accounts-js/accounts"]
-    },
-    "ag-grid": {
-      "description": "ag-grid monorepo",
-      "sourceUrlPrefixes": ["https://github.com/ag-grid/ag-grid"]
-    },
-    "algolia-react-instantsearch": {
-      "description": "algolia-react-instantsearch monorepo",
-      "sourceUrlPrefixes": ["https://github.com/algolia/react-instantsearch"]
-    },
-    "angular": {
-      "description": "angular monorepo",
-      "sourceUrlPrefixes": ["https://github.com/angular/angular"]
-    },
-    "angular1": {
-      "description": "angular1 monorepo",
-      "sourceUrlPrefixes": ["https://github.com/angular/angular.js"]
-    },
-    "angularcli": {
-      "description": "angularcli monorepo",
-      "sourceUrlPrefixes": ["https://github.com/angular/angular-cli"]
-    },
-    "angularmaterial": {
-      "description": "angularmaterial monorepo",
-      "packagePatterns": ["^@angular/material", "^@angular/cdk"]
-    },
-    "apollo-server": {
-      "description": "apollo-server monorepo",
-      "sourceUrlPrefixes": ["https://github.com/apollographql/apollo-server"]
-    },
-    "apolloclient": {
-      "description": "apolloclient monorepo",
-      "sourceUrlPrefixes": ["https://github.com/apollographql/apollo-client"]
-    },
-    "apollolink": {
-      "description": "apollolink monorepo",
-      "sourceUrlPrefixes": ["https://github.com/apollographql/apollo-link"]
-    },
-    "arcus background-jobs": {
-      "description": "arcus background-jobs monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/arcus-azure/arcus.backgroundjobs"
-      ]
-    },
-    "arcus event-grid": {
-      "description": "arcus event-grid monorepo",
-      "sourceUrlPrefixes": ["https://github.com/arcus-azure/arcus.eventgrid"]
-    },
-    "arcus messaging": {
-      "description": "arcus messaging monorepo",
-      "sourceUrlPrefixes": ["https://github.com/arcus-azure/arcus.messaging"]
-    },
-    "arcus observability": {
-      "description": "arcus observability monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/arcus-azure/arcus.observability"
-      ]
-    },
-    "arcus security": {
-      "description": "arcus security monorepo",
-      "sourceUrlPrefixes": ["https://github.com/arcus-azure/arcus.security"]
-    },
-    "arcus webapi": {
-      "description": "arcus webapi monorepo",
-      "sourceUrlPrefixes": ["https://github.com/arcus-azure/arcus.webapi"]
-    },
-    "aspnet AspNetWebStack": {
-      "description": "aspnet AspNetWebStack monorepo",
-      "sourceUrlPrefixes": ["https://github.com/aspnet/AspNetWebStack"]
-    },
-    "aspnet Extensions": {
-      "description": "aspnet Extensions monorepo",
-      "sourceUrlPrefixes": ["https://github.com/aspnet/Extensions"]
-    },
-    "aws-cdk": {
-      "description": "aws-cdk monorepo",
-      "sourceUrlPrefixes": ["https://github.com/aws/aws-cdk"]
-    },
-    "aws-java-sdk": {
-      "description": "aws-java-sdk monorepo",
-      "packagePatterns": ["^com.amazonaws:aws-java-sdk-"]
-    },
-    "awsappsync": {
-      "description": "awsappsync monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/awslabs/aws-mobile-appsync-sdk-js"
-      ]
-    },
-    "azure azure-libraries-for-net": {
-      "description": "azure azure-libraries-for-net monorepo",
-      "sourceUrlPrefixes": ["https://github.com/Azure/azure-libraries-for-net"]
-    },
-    "azure azure-sdk-for-net": {
-      "description": "azure azure-sdk-for-net monorepo",
-      "sourceUrlPrefixes": ["https://github.com/Azure/azure-sdk-for-net"]
-    },
-    "azure azure-storage-net": {
-      "description": "azure azure-storage-net monorepo",
-      "sourceUrlPrefixes": ["https://github.com/Azure/azure-storage-net"]
-    },
-    "babel": {
-      "description": "babel monorepo",
-      "sourceUrlPrefixes": ["https://github.com/babel/babel"]
-    },
-    "babel6": {
-      "description": "babel6 monorepo",
-      "packagePatterns": ["^babel6$"]
-    },
-    "baset": {
-      "description": "baset monorepo",
-      "sourceUrlPrefixes": ["https://github.com/igmat/baset"]
-    },
-    "brave": {
-      "description": "brave monorepo",
-      "sourceUrlPrefixes": ["https://github.com/openzipkin/brave"]
-    },
-    "bugsnag-js": {
-      "description": "bugsnag-js monorepo",
-      "sourceUrlPrefixes": ["https://github.com/bugsnag/bugsnag-js"]
-    },
-    "capacitor": {
-      "description": "capacitor monorepo",
-      "sourceUrlPrefixes": ["https://github.com/ionic-team/capacitor"]
-    },
-    "clarity": {
-      "description": "clarity monorepo",
-      "sourceUrlPrefixes": ["https://github.com/vmware/clarity"]
-    },
-    "commitlint": {
-      "description": "commitlint monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/conventional-changelog/commitlint"
-      ]
-    },
-    "devextreme-reactive": {
-      "description": "devextreme-reactive monorepo",
-      "sourceUrlPrefixes": ["https://github.com/DevExpress/devextreme-reactive"]
-    },
-    "dropwizard": {
-      "description": "dropwizard monorepo",
-      "sourceUrlPrefixes": ["https://github.com/dropwizard/dropwizard"]
-    },
-    "electron-forge": {
-      "description": "electron-forge monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/electron-userland/electron-forge"
-      ]
-    },
-    "ember-decorators": {
-      "description": "ember-decorators monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/ember-decorators/ember-decorators"
-      ]
-    },
-    "emotion": {
-      "description": "emotion monorepo",
-      "sourceUrlPrefixes": ["https://github.com/emotion-js/emotion"]
-    },
-    "expo": {
-      "description": "expo monorepo",
-      "sourceUrlPrefixes": ["https://github.com/expo/expo"]
-    },
-    "fimbullinter": {
-      "description": "fimbullinter monorepo",
-      "sourceUrlPrefixes": ["https://github.com/fimbullinter/wotan"]
-    },
-    "flopflip": {
-      "description": "flopflip monorepo",
-      "sourceUrlPrefixes": ["https://github.com/tdeekens/flopflip"]
-    },
-    "framework7": {
-      "description": "framework7 monorepo",
-      "sourceUrlPrefixes": ["https://github.com/framework7io/framework7"]
-    },
-    "gatsby": {
-      "description": "gatsby monorepo",
-      "sourceUrlPrefixes": ["https://github.com/gatsbyjs/gatsby"]
-    },
-    "graphql-modules": {
-      "description": "graphql-modules monorepo",
-      "sourceUrlPrefixes": ["https://github.com/Urigo/graphql-modules"]
-    },
-    "graphql-toolkit": {
-      "description": "graphql-toolkit monorepo",
-      "sourceUrlPrefixes": ["https://github.com/ardatan/graphql-toolkit"]
-    },
-    "graphqlcodegenerator": {
-      "description": "graphqlcodegenerator monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/dotansimha/graphql-code-generator",
-        "https://github.com/dotansimha/graphql-codegen"
-      ]
-    },
-    "hamcrest": {
-      "description": "hamcrest monorepo",
-      "sourceUrlPrefixes": ["https://github.com/hamcrest/JavaHamcrest"]
-    },
-    "hapijs": {
-      "description": "hapijs monorepo",
-      "sourceUrlPrefixes": ["https://github.com/hapijs"]
-    },
-    "infrastructure": {
-      "description": "infrastructure monorepo",
-      "sourceUrlPrefixes": ["https://github.com/instructure/instructure-ui"]
-    },
-    "ionic-native": {
-      "description": "ionic-native monorepo",
-      "sourceUrlPrefixes": ["https://github.com/ionic-team/ionic-native"]
-    },
-    "jasmine": {
-      "description": "jasmine monorepo",
-      "sourceUrlPrefixes": ["https://github.com/jasmine/jasmine"]
-    },
-    "jersey": {
-      "description": "jersey monorepo",
-      "sourceUrlPrefixes": ["https://github.com/eclipse-ee4j/jersey"]
-    },
-    "jest": {
-      "description": "jest monorepo",
-      "sourceUrlPrefixes": ["https://github.com/facebook/jest"]
-    },
-    "lerna": {
-      "description": "lerna monorepo",
-      "sourceUrlPrefixes": ["https://github.com/lerna/lerna"]
-    },
-    "lingui": {
-      "description": "lingui monorepo",
-      "sourceUrlPrefixes": ["https://github.com/lingui/js-lingui"]
-    },
-    "lodash": {
-      "description": "lodash monorepo",
-      "sourceUrlPrefixes": ["https://github.com/lodash/"]
-    },
-    "loopback": {
-      "description": "loopback monorepo",
-      "sourceUrlPrefixes": ["https://github.com/strongloop/loopback-next"]
-    },
-    "material": {
-      "description": "material monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/material-components/material-components-web"
-      ]
-    },
-    "mdc-react": {
-      "description": "mdc-react monorepo",
-      "sourceUrlPrefixes": ["material-components/material-components-web-react"]
-    },
-    "mdx": {
-      "description": "mdx monorepo",
-      "sourceUrlPrefixes": ["https://github.com/mdx-js/mdx"]
-    },
-    "mui": {
-      "description": "mui monorepo",
-      "sourceUrlPrefixes": ["https://github.com/mui-org/material-ui"]
-    },
-    "nest": {
-      "description": "nest monorepo",
-      "sourceUrlPrefixes": ["https://github.com/nestjs/nest"]
-    },
-    "neutrino": {
-      "description": "neutrino monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/neutrinojs/neutrino",
-        "https://github.com/mozilla-neutrino/neutrino-dev"
-      ]
-    },
-    "nextjs": {
-      "description": "nextjs monorepo",
-      "sourceUrlPrefixes": ["https://github.com/zeit/next.js"]
-    },
-    "ngrx": {
-      "description": "ngrx monorepo",
-      "sourceUrlPrefixes": ["https://github.com/ngrx/"]
-    },
-    "ngx-formly": {
-      "description": "ngx-formly monorepo",
-      "sourceUrlPrefixes": ["https://github.com/ngx-formly/ngx-formly"]
-    },
-    "ngxs-store": {
-      "description": "ngxs-store monorepo",
-      "sourceUrlPrefixes": ["https://github.com/ngxs/store"]
-    },
-    "nrwl": {
-      "description": "nrwl monorepo",
-      "sourceUrlPrefixes": ["https://github.com/nrwl/"]
-    },
-    "nuxtjs": {
-      "description": "nuxtjs monorepo",
-      "sourceUrlPrefixes": ["https://github.com/nuxt/nuxt.js"]
-    },
-    "openfeign": {
-      "description": "openfeign monorepo",
-      "sourceUrlPrefixes": ["https://github.com/OpenFeign/feign"]
-    },
-    "picasso": {
-      "description": "picasso monorepo",
-      "sourceUrlPrefixes": ["https://github.com/qlik-oss/picasso.js"]
-    },
-    "pollyjs": {
-      "description": "pollyjs monorepo",
-      "sourceUrlPrefixes": ["https://github.com/Netflix/pollyjs"]
-    },
-    "pouchdb": {
-      "description": "pouchdb monorepo",
-      "sourceUrlPrefixes": ["https://github.com/pouchdb/pouchdb"]
-    },
-    "react": {
-      "description": "react monorepo",
-      "sourceUrlPrefixes": ["https://github.com/facebook/react"]
-    },
-    "react-apollo": {
-      "description": "react-apollo monorepo",
-      "sourceUrlPrefixes": ["https://github.com/apollographql/react-apollo"]
-    },
-    "react-dnd": {
-      "description": "react-dnd monorepo",
-      "sourceUrlPrefixes": ["https://github.com/react-dnd/react-dnd"]
-    },
-    "react-navigation": {
-      "description": "react-navigation monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/react-navigation/react-navigation"
-      ]
-    },
-    "reactivestack-cookies": {
-      "description": "reactivestack-cookies monorepo",
-      "sourceUrlPrefixes": ["https://github.com/reactivestack/cookies"]
-    },
-    "reactrouter": {
-      "description": "reactrouter monorepo",
-      "sourceUrlPrefixes": ["https://github.com/ReactTraining/react-router"]
-    },
-    "reakit": {
-      "description": "reakit monorepo",
-      "sourceUrlPrefixes": ["https://github.com/reakit/reakit"]
-    },
-    "remark": {
-      "description": "remark monorepo",
-      "sourceUrlPrefixes": ["https://github.com/remarkjs/remark"]
-    },
-    "router5": {
-      "description": "router5 monorepo",
-      "sourceUrlPrefixes": ["https://github.com/router5/router5"]
-    },
-    "sanity": {
-      "description": "sanity monorepo",
-      "sourceUrlPrefixes": ["https://github.com/sanity-io/sanity"]
-    },
-    "semantic-release": {
-      "description": "semantic-release monorepo",
-      "sourceUrlPrefixes": ["https://github.com/semantic-release/"]
-    },
-    "sentry": {
-      "description": "sentry monorepo",
-      "sourceUrlPrefixes": ["https://github.com/getsentry/sentry-javascript"]
-    },
-    "springfox": {
-      "description": "springfox monorepo",
-      "sourceUrlPrefixes": ["https://github.com/springfox/springfox"]
-    },
-    "storybook": {
-      "description": "storybook monorepo",
-      "sourceUrlPrefixes": ["https://github.com/storybookjs/storybook"]
-    },
-    "strapi": {
-      "description": "strapi monorepo",
-      "sourceUrlPrefixes": ["https://github.com/strapi/strapi"]
-    },
-    "stryker": {
-      "description": "stryker monorepo",
-      "sourceUrlPrefixes": ["https://github.com/stryker-mutator/stryker"]
-    },
-    "surveyjs": {
-      "description": "surveyjs monorepo",
-      "sourceUrlPrefixes": ["https://github.com/surveyjs/surveyjs"]
-    },
-    "telus-tds": {
-      "description": "telus-tds monorepo",
-      "sourceUrlPrefixes": ["https://github.com/telusdigital/tds"]
-    },
-    "treat": {
-      "description": "treat monorepo",
-      "sourceUrlPrefixes": ["https://github.com/seek-oss/treat"]
-    },
-    "typefaces": {
-      "description": "typefaces monorepo",
-      "sourceUrlPrefixes": ["https://github.com/KyleAMathews/typefaces"]
-    },
-    "typescript-eslint": {
-      "description": "typescript-eslint monorepo",
-      "sourceUrlPrefixes": [
-        "https://github.com/typescript-eslint/typescript-eslint"
-      ]
-    },
-    "typography-js": {
-      "description": "typography-js monorepo",
-      "sourceUrlPrefixes": ["https://github.com/KyleAMathews/typography.js"]
-    },
-    "uppy": {
-      "description": "uppy monorepo",
-      "sourceUrlPrefixes": ["https://github.com/transloadit/uppy"]
-    },
-    "vue": {
-      "description": "vue monorepo",
-      "sourceUrlPrefixes": ["https://github.com/vuejs/vue"]
-    },
-    "vue-cli": {
-      "description": "vue-cli monorepo",
-      "sourceUrlPrefixes": ["https://github.com/vuejs/vue-cli"]
-    },
-    "vuepress": {
-      "description": "vuepress monorepo",
-      "sourceUrlPrefixes": ["https://github.com/vuejs/vuepress"]
-    },
-    "webdriverio": {
-      "description": "webdriverio monorepo",
-      "sourceUrlPrefixes": ["https://github.com/webdriverio/webdriverio"]
-    },
-    "wordpress": {
-      "description": "wordpress monorepo",
-      "packagePatterns": ["^@wordpress/"]
-    },
-    "workbox": {
-      "description": "workbox monorepo",
-      "sourceUrlPrefixes": ["https://github.com/googlechrome/workbox"]
-    }
-  },
-  "packages": {
-    "angularJs": {
-      "description": "All angular.js packages",
-      "packageNames": [
-        "angular",
-        "angular-animate",
-        "angular-scroll",
-        "angular-sanitize"
-      ]
-    },
-    "apollographql": {
-      "description": "All packages published by Apollo GraphQL",
-      "sourceUrlPrefixes": ["https://github.com/apollographql/"]
-    },
-    "eslint": {
-      "description": "All eslint packages",
-      "packageNames": ["babel-eslint"],
-      "packagePatterns": ["^eslint"]
-    },
-    "gatsby": {
-      "description": "All packages published by Gatsby",
-      "extends": ["monorepo:gatsby"]
-    },
-    "jsTest": {
-      "description": "JavaScript test packages",
-      "extends": ["packages:jsUnitTest"]
-    },
-    "jsUnitTest": {
-      "description": "Unit test packages for javascript",
-      "packageNames": [
-        "coveralls",
-        "istanbul",
-        "mock-fs",
-        "nock",
-        "nyc",
-        "proxyquire",
-        "supertest"
-      ],
-      "packagePatterns": [
-        "^chai",
-        "^jest",
-        "^mocha",
-        "^qunit",
-        "^sinon",
-        "^should"
-      ]
-    },
-    "linters": {
-      "description": "All lint-related packages",
-      "extends": ["packages:eslint", "packages:stylelint", "packages:tslint"],
-      "packageNames": ["remark-lint"]
-    },
-    "mapbox": {
-      "description": "All mapbox-related packages",
-      "packagePatterns": ["^(leaflet|mapbox)"]
-    },
-    "postcss": {
-      "description": "All postcss packages",
-      "packageNames": ["postcss"],
-      "packagePatterns": ["^postcss-"]
-    },
-    "stylelint": {
-      "description": "All stylelint packages",
-      "packagePatterns": ["^stylelint"]
-    },
-    "test": {"description": "Test packages", "extends": ["packages:unitTest"]},
-    "tslint": {
-      "description": "All tslint packages",
-      "packageNames": ["codelyzer"],
-      "packagePatterns": ["\\btslint\\b"]
-    },
-    "unitTest": {
-      "description": "All unit test packages",
-      "extends": ["packages:jsUnitTest"]
-    }
-  },
-  "preview": {
-    "buildkite": {
-      "buildkite": {"enabled": true},
-      "description": "Enable buildkite functionality"
-    },
-    "dockerCompose": {
-      "description": "Enable docker compose image updating",
-      "docker-compose": {"enabled": true}
-    },
-    "dockerVersions": {
-      "description": "Upgrade docker tags to newer versions",
-      "docker": {"major": {"enabled": true}, "minor": {"enabled": true}}
-    }
-  },
-  "schedule": {
-    "daily": {"description": "Schedule daily", "schedule": "before 2am"},
-    "earlyMondays": {
-      "description": "Weekly schedule on early monday mornings",
-      "schedule": "before 3am on Monday"
-    },
-    "monthly": {
-      "description": "Schedule monthly",
-      "schedule": "before 3am on the first day of the month"
-    },
-    "nonOfficeHours": {
-      "description": "Schedule for typical non-office hours (night time and weekends)",
-      "schedule": [
-        "after 10pm every weekday",
-        "before 5am every weekday",
-        "every weekend"
-      ]
-    },
-    "weekdays": {
-      "description": "Schedule for weekdays",
-      "schedule": "every weekday"
-    },
-    "weekends": {
-      "description": "Schedule for weekends",
-      "schedule": "every weekend"
-    },
-    "weekly": {
-      "description": "Schedule weekly",
-      "extends": ["schedule:earlyMondays"]
-    }
-  }
-}
\ No newline at end of file
diff --git a/lib/config/presets/__snapshots__/github.spec.ts.snap b/lib/config/presets/__snapshots__/github.spec.ts.snap
index 9274f8368d..8d45caf789 100644
--- a/lib/config/presets/__snapshots__/github.spec.ts.snap
+++ b/lib/config/presets/__snapshots__/github.spec.ts.snap
@@ -5,9 +5,3 @@ Object {
   "from": "api",
 }
 `;
-
-exports[`config/presets/github fetchJSONFile() returns renovate internal 1`] = `
-Object {
-  "from": "www",
-}
-`;
diff --git a/lib/config/presets/__snapshots__/index.spec.ts.snap b/lib/config/presets/__snapshots__/index.spec.ts.snap
index d6c7eaa15f..cdc6389980 100644
--- a/lib/config/presets/__snapshots__/index.spec.ts.snap
+++ b/lib/config/presets/__snapshots__/index.spec.ts.snap
@@ -146,22 +146,22 @@ Object {
 
 exports[`config/presets parsePreset returns default package name 1`] = `
 Object {
-  "packageName": "renovatebot/presets",
+  "packageName": "default",
   "params": undefined,
-  "presetName": "presets/default/base",
-  "presetSource": "github",
+  "presetName": "base",
+  "presetSource": "internal",
 }
 `;
 
 exports[`config/presets parsePreset returns default package name with params 1`] = `
 Object {
-  "packageName": "renovatebot/presets",
+  "packageName": "default",
   "params": Array [
     "packages/eslint",
     "eslint",
   ],
-  "presetName": "presets/default/group",
-  "presetSource": "github",
+  "presetName": "group",
+  "presetSource": "internal",
 }
 `;
 
@@ -411,1036 +411,6 @@ Object {
 }
 `;
 
-exports[`config/presets resolvePreset resolves group monorepos 1`] = `
-Object {
-  "description": Array [
-    "Group known monorepo packages together",
-  ],
-  "ignoreDeps": Array [],
-  "packageRules": Array [
-    Object {
-      "description": Array [
-        "ag-grid monorepo",
-        "Group packages from ag-grid monorepo together",
-      ],
-      "groupName": "ag-grid monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/ag-grid/ag-grid",
-      ],
-    },
-    Object {
-      "description": Array [
-        "arcus event-grid monorepo",
-        "Group packages from arcus event-grid monorepo together",
-      ],
-      "groupName": "arcus event-grid monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/arcus-azure/arcus.eventgrid",
-      ],
-    },
-    Object {
-      "description": Array [
-        "arcus security monorepo",
-        "Group packages from arcus security monorepo together",
-      ],
-      "groupName": "arcus security monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/arcus-azure/arcus.security",
-      ],
-    },
-    Object {
-      "description": Array [
-        "arcus messaging monorepo",
-        "Group packages from arcus messaging monorepo together",
-      ],
-      "groupName": "arcus messaging monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/arcus-azure/arcus.messaging",
-      ],
-    },
-    Object {
-      "description": Array [
-        "arcus observability monorepo",
-        "Group packages from arcus observability monorepo together",
-      ],
-      "groupName": "arcus observability monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/arcus-azure/arcus.observability",
-      ],
-    },
-    Object {
-      "description": Array [
-        "arcus webapi monorepo",
-        "Group packages from arcus webapi monorepo together",
-      ],
-      "groupName": "arcus webapi monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/arcus-azure/arcus.webapi",
-      ],
-    },
-    Object {
-      "description": Array [
-        "arcus background-jobs monorepo",
-        "Group packages from arcus background-jobs monorepo together",
-      ],
-      "groupName": "arcus background-jobs monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/arcus-azure/arcus.backgroundjobs",
-      ],
-    },
-    Object {
-      "description": Array [
-        "algolia-react-instantsearch monorepo",
-        "Group packages from algolia-react-instantsearch monorepo together",
-      ],
-      "groupName": "algolia-react-instantsearch monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/algolia/react-instantsearch",
-      ],
-    },
-    Object {
-      "description": Array [
-        "apollo-server monorepo",
-        "Group packages from apollo-server monorepo together",
-      ],
-      "groupName": "apollo-server monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/apollographql/apollo-server",
-      ],
-    },
-    Object {
-      "description": Array [
-        "aspnet AspNetWebStack monorepo",
-        "Group packages from aspnet AspNetWebStack monorepo together",
-      ],
-      "groupName": "aspnet AspNetWebStack monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/aspnet/AspNetWebStack",
-      ],
-    },
-    Object {
-      "description": Array [
-        "aspnet Extensions monorepo",
-        "Group packages from aspnet Extensions monorepo together",
-      ],
-      "groupName": "aspnet Extensions monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/aspnet/Extensions",
-      ],
-    },
-    Object {
-      "description": Array [
-        "aws-cdk monorepo",
-        "Group packages from aws-cdk monorepo together",
-      ],
-      "groupName": "aws-cdk monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/aws/aws-cdk",
-      ],
-    },
-    Object {
-      "description": Array [
-        "azure azure-libraries-for-net monorepo",
-        "Group packages from azure azure-libraries-for-net monorepo together",
-      ],
-      "groupName": "azure azure-libraries-for-net monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/Azure/azure-libraries-for-net",
-      ],
-    },
-    Object {
-      "description": Array [
-        "azure azure-sdk-for-net monorepo",
-        "Group packages from azure azure-sdk-for-net monorepo together",
-      ],
-      "groupName": "azure azure-sdk-for-net monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/Azure/azure-sdk-for-net",
-      ],
-    },
-    Object {
-      "description": Array [
-        "azure azure-storage-net monorepo",
-        "Group packages from azure azure-storage-net monorepo together",
-      ],
-      "groupName": "azure azure-storage-net monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/Azure/azure-storage-net",
-      ],
-    },
-    Object {
-      "description": Array [
-        "bugsnag-js monorepo",
-        "Group packages from bugsnag-js monorepo together",
-      ],
-      "groupName": "bugsnag-js monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/bugsnag/bugsnag-js",
-      ],
-    },
-    Object {
-      "description": Array [
-        "devextreme-reactive monorepo",
-        "Group packages from devextreme-reactive monorepo together",
-      ],
-      "groupName": "devextreme-reactive monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/DevExpress/devextreme-reactive",
-      ],
-    },
-    Object {
-      "description": Array [
-        "electron-forge monorepo",
-        "Group packages from electron-forge monorepo together",
-      ],
-      "groupName": "electron-forge monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/electron-userland/electron-forge",
-      ],
-    },
-    Object {
-      "description": Array [
-        "ember-decorators monorepo",
-        "Group packages from ember-decorators monorepo together",
-      ],
-      "groupName": "ember-decorators monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/ember-decorators/ember-decorators",
-      ],
-    },
-    Object {
-      "description": Array [
-        "graphql-modules monorepo",
-        "Group packages from graphql-modules monorepo together",
-      ],
-      "groupName": "graphql-modules monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/Urigo/graphql-modules",
-      ],
-    },
-    Object {
-      "description": Array [
-        "ionic-native monorepo",
-        "Group packages from ionic-native monorepo together",
-      ],
-      "groupName": "ionic-native monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/ionic-team/ionic-native",
-      ],
-    },
-    Object {
-      "description": Array [
-        "mdc-react monorepo",
-        "Group packages from mdc-react monorepo together",
-      ],
-      "groupName": "mdc-react monorepo",
-      "sourceUrlPrefixes": Array [
-        "material-components/material-components-web-react",
-      ],
-    },
-    Object {
-      "description": Array [
-        "ngx-formly monorepo",
-        "Group packages from ngx-formly monorepo together",
-      ],
-      "groupName": "ngx-formly monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/ngx-formly/ngx-formly",
-      ],
-    },
-    Object {
-      "description": Array [
-        "ngxs-store monorepo",
-        "Group packages from ngxs-store monorepo together",
-      ],
-      "groupName": "ngxs-store monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/ngxs/store",
-      ],
-    },
-    Object {
-      "description": Array [
-        "react-apollo monorepo",
-        "Group packages from react-apollo monorepo together",
-      ],
-      "groupName": "react-apollo monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/apollographql/react-apollo",
-      ],
-    },
-    Object {
-      "description": Array [
-        "react-dnd monorepo",
-        "Group packages from react-dnd monorepo together",
-      ],
-      "groupName": "react-dnd monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/react-dnd/react-dnd",
-      ],
-    },
-    Object {
-      "description": Array [
-        "react-navigation monorepo",
-        "Group packages from react-navigation monorepo together",
-      ],
-      "groupName": "react-navigation monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/react-navigation/react-navigation",
-      ],
-    },
-    Object {
-      "description": Array [
-        "reactivestack-cookies monorepo",
-        "Group packages from reactivestack-cookies monorepo together",
-      ],
-      "groupName": "reactivestack-cookies monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/reactivestack/cookies",
-      ],
-    },
-    Object {
-      "description": Array [
-        "semantic-release monorepo",
-        "Group packages from semantic-release monorepo together",
-      ],
-      "groupName": "semantic-release monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/semantic-release/",
-      ],
-    },
-    Object {
-      "description": Array [
-        "telus-tds monorepo",
-        "Group packages from telus-tds monorepo together",
-      ],
-      "groupName": "telus-tds monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/telusdigital/tds",
-      ],
-    },
-    Object {
-      "description": Array [
-        "typescript-eslint monorepo",
-        "Group packages from typescript-eslint monorepo together",
-      ],
-      "groupName": "typescript-eslint monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/typescript-eslint/typescript-eslint",
-      ],
-    },
-    Object {
-      "description": Array [
-        "typography-js monorepo",
-        "Group packages from typography-js monorepo together",
-      ],
-      "groupName": "typography-js monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/KyleAMathews/typography.js",
-      ],
-    },
-    Object {
-      "description": Array [
-        "vue-cli monorepo",
-        "Group packages from vue-cli monorepo together",
-      ],
-      "groupName": "vue-cli monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/vuejs/vue-cli",
-      ],
-    },
-    Object {
-      "description": Array [
-        "accounts monorepo",
-        "Group packages from accounts monorepo together",
-      ],
-      "groupName": "accounts monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/accounts-js/accounts",
-      ],
-    },
-    Object {
-      "description": Array [
-        "angular1 monorepo",
-        "Group packages from angular1 monorepo together",
-      ],
-      "groupName": "angular1 monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/angular/angular.js",
-      ],
-    },
-    Object {
-      "description": Array [
-        "angular monorepo",
-        "Group packages from angular monorepo together",
-      ],
-      "groupName": "angular monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/angular/angular",
-      ],
-    },
-    Object {
-      "description": Array [
-        "angularcli monorepo",
-        "Group packages from angularcli monorepo together",
-      ],
-      "groupName": "angularcli monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/angular/angular-cli",
-      ],
-    },
-    Object {
-      "description": Array [
-        "apolloclient monorepo",
-        "Group packages from apolloclient monorepo together",
-      ],
-      "groupName": "apolloclient monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/apollographql/apollo-client",
-      ],
-    },
-    Object {
-      "description": Array [
-        "apollolink monorepo",
-        "Group packages from apollolink monorepo together",
-      ],
-      "groupName": "apollolink monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/apollographql/apollo-link",
-      ],
-    },
-    Object {
-      "description": Array [
-        "awsappsync monorepo",
-        "Group packages from awsappsync monorepo together",
-      ],
-      "groupName": "awsappsync monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/awslabs/aws-mobile-appsync-sdk-js",
-      ],
-    },
-    Object {
-      "description": Array [
-        "babel monorepo",
-        "Group packages from babel monorepo together",
-      ],
-      "groupName": "babel monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/babel/babel",
-      ],
-    },
-    Object {
-      "description": Array [
-        "baset monorepo",
-        "Group packages from baset monorepo together",
-      ],
-      "groupName": "baset monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/igmat/baset",
-      ],
-    },
-    Object {
-      "description": Array [
-        "brave monorepo",
-        "Group packages from brave monorepo together",
-      ],
-      "groupName": "brave monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/openzipkin/brave",
-      ],
-    },
-    Object {
-      "description": Array [
-        "capacitor monorepo",
-        "Group packages from capacitor monorepo together",
-      ],
-      "groupName": "capacitor monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/ionic-team/capacitor",
-      ],
-    },
-    Object {
-      "description": Array [
-        "clarity monorepo",
-        "Group packages from clarity monorepo together",
-      ],
-      "groupName": "clarity monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/vmware/clarity",
-      ],
-    },
-    Object {
-      "description": Array [
-        "commitlint monorepo",
-        "Group packages from commitlint monorepo together",
-      ],
-      "groupName": "commitlint monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/conventional-changelog/commitlint",
-      ],
-    },
-    Object {
-      "description": Array [
-        "dropwizard monorepo",
-        "Group packages from dropwizard monorepo together",
-      ],
-      "groupName": "dropwizard monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/dropwizard/dropwizard",
-      ],
-    },
-    Object {
-      "description": Array [
-        "emotion monorepo",
-        "Group packages from emotion monorepo together",
-      ],
-      "groupName": "emotion monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/emotion-js/emotion",
-      ],
-    },
-    Object {
-      "description": Array [
-        "expo monorepo",
-        "Group packages from expo monorepo together",
-      ],
-      "groupName": "expo monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/expo/expo",
-      ],
-    },
-    Object {
-      "description": Array [
-        "fimbullinter monorepo",
-        "Group packages from fimbullinter monorepo together",
-      ],
-      "groupName": "fimbullinter monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/fimbullinter/wotan",
-      ],
-    },
-    Object {
-      "description": Array [
-        "flopflip monorepo",
-        "Group packages from flopflip monorepo together",
-      ],
-      "groupName": "flopflip monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/tdeekens/flopflip",
-      ],
-    },
-    Object {
-      "description": Array [
-        "framework7 monorepo",
-        "Group packages from framework7 monorepo together",
-      ],
-      "groupName": "framework7 monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/framework7io/framework7",
-      ],
-    },
-    Object {
-      "description": Array [
-        "gatsby monorepo",
-        "Group packages from gatsby monorepo together",
-      ],
-      "groupName": "gatsby monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/gatsbyjs/gatsby",
-      ],
-    },
-    Object {
-      "description": Array [
-        "graphqlcodegenerator monorepo",
-        "Group packages from graphqlcodegenerator monorepo together",
-      ],
-      "groupName": "graphqlcodegenerator monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/dotansimha/graphql-code-generator",
-        "https://github.com/dotansimha/graphql-codegen",
-      ],
-    },
-    Object {
-      "description": Array [
-        "graphql-toolkit monorepo",
-        "Group packages from graphql-toolkit monorepo together",
-      ],
-      "groupName": "graphql-toolkit monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/ardatan/graphql-toolkit",
-      ],
-    },
-    Object {
-      "description": Array [
-        "hamcrest monorepo",
-        "Group packages from hamcrest monorepo together",
-      ],
-      "groupName": "hamcrest monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/hamcrest/JavaHamcrest",
-      ],
-    },
-    Object {
-      "description": Array [
-        "hapijs monorepo",
-        "Group packages from hapijs monorepo together",
-      ],
-      "groupName": "hapijs monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/hapijs",
-      ],
-    },
-    Object {
-      "description": Array [
-        "infrastructure monorepo",
-        "Group packages from infrastructure monorepo together",
-      ],
-      "groupName": "infrastructure monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/instructure/instructure-ui",
-      ],
-    },
-    Object {
-      "description": Array [
-        "jasmine monorepo",
-        "Group packages from jasmine monorepo together",
-      ],
-      "groupName": "jasmine monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/jasmine/jasmine",
-      ],
-    },
-    Object {
-      "description": Array [
-        "jersey monorepo",
-        "Group packages from jersey monorepo together",
-      ],
-      "groupName": "jersey monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/eclipse-ee4j/jersey",
-      ],
-    },
-    Object {
-      "description": Array [
-        "jest monorepo",
-        "Group packages from jest monorepo together",
-      ],
-      "groupName": "jest monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/facebook/jest",
-      ],
-    },
-    Object {
-      "description": Array [
-        "lerna monorepo",
-        "Group packages from lerna monorepo together",
-      ],
-      "groupName": "lerna monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/lerna/lerna",
-      ],
-    },
-    Object {
-      "description": Array [
-        "lingui monorepo",
-        "Group packages from lingui monorepo together",
-      ],
-      "groupName": "lingui monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/lingui/js-lingui",
-      ],
-    },
-    Object {
-      "description": Array [
-        "lodash monorepo",
-        "Group packages from lodash monorepo together",
-      ],
-      "groupName": "lodash monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/lodash/",
-      ],
-    },
-    Object {
-      "description": Array [
-        "loopback monorepo",
-        "Group packages from loopback monorepo together",
-      ],
-      "groupName": "loopback monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/strongloop/loopback-next",
-      ],
-    },
-    Object {
-      "description": Array [
-        "material monorepo",
-        "Group packages from material monorepo together",
-      ],
-      "groupName": "material monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/material-components/material-components-web",
-      ],
-    },
-    Object {
-      "description": Array [
-        "mdx monorepo",
-        "Group packages from mdx monorepo together",
-      ],
-      "groupName": "mdx monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/mdx-js/mdx",
-      ],
-    },
-    Object {
-      "description": Array [
-        "mui monorepo",
-        "Group packages from mui monorepo together",
-      ],
-      "groupName": "mui monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/mui-org/material-ui",
-      ],
-    },
-    Object {
-      "description": Array [
-        "nest monorepo",
-        "Group packages from nest monorepo together",
-      ],
-      "groupName": "nest monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/nestjs/nest",
-      ],
-    },
-    Object {
-      "description": Array [
-        "neutrino monorepo",
-        "Group packages from neutrino monorepo together",
-      ],
-      "groupName": "neutrino monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/neutrinojs/neutrino",
-        "https://github.com/mozilla-neutrino/neutrino-dev",
-      ],
-    },
-    Object {
-      "description": Array [
-        "nextjs monorepo",
-        "Group packages from nextjs monorepo together",
-      ],
-      "groupName": "nextjs monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/zeit/next.js",
-      ],
-    },
-    Object {
-      "description": Array [
-        "ngrx monorepo",
-        "Group packages from ngrx monorepo together",
-      ],
-      "groupName": "ngrx monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/ngrx/",
-      ],
-    },
-    Object {
-      "description": Array [
-        "nrwl monorepo",
-        "Group packages from nrwl monorepo together",
-      ],
-      "groupName": "nrwl monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/nrwl/",
-      ],
-    },
-    Object {
-      "description": Array [
-        "nuxtjs monorepo",
-        "Group packages from nuxtjs monorepo together",
-      ],
-      "groupName": "nuxtjs monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/nuxt/nuxt.js",
-      ],
-    },
-    Object {
-      "description": Array [
-        "openfeign monorepo",
-        "Group packages from openfeign monorepo together",
-      ],
-      "groupName": "openfeign monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/OpenFeign/feign",
-      ],
-    },
-    Object {
-      "description": Array [
-        "picasso monorepo",
-        "Group packages from picasso monorepo together",
-      ],
-      "groupName": "picasso monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/qlik-oss/picasso.js",
-      ],
-    },
-    Object {
-      "description": Array [
-        "pollyjs monorepo",
-        "Group packages from pollyjs monorepo together",
-      ],
-      "groupName": "pollyjs monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/Netflix/pollyjs",
-      ],
-    },
-    Object {
-      "description": Array [
-        "pouchdb monorepo",
-        "Group packages from pouchdb monorepo together",
-      ],
-      "groupName": "pouchdb monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/pouchdb/pouchdb",
-      ],
-    },
-    Object {
-      "description": Array [
-        "react monorepo",
-        "Group packages from react monorepo together",
-      ],
-      "groupName": "react monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/facebook/react",
-      ],
-    },
-    Object {
-      "description": Array [
-        "reactrouter monorepo",
-        "Group packages from reactrouter monorepo together",
-      ],
-      "groupName": "reactrouter monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/ReactTraining/react-router",
-      ],
-    },
-    Object {
-      "description": Array [
-        "reakit monorepo",
-        "Group packages from reakit monorepo together",
-      ],
-      "groupName": "reakit monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/reakit/reakit",
-      ],
-    },
-    Object {
-      "description": Array [
-        "remark monorepo",
-        "Group packages from remark monorepo together",
-      ],
-      "groupName": "remark monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/remarkjs/remark",
-      ],
-    },
-    Object {
-      "description": Array [
-        "router5 monorepo",
-        "Group packages from router5 monorepo together",
-      ],
-      "groupName": "router5 monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/router5/router5",
-      ],
-    },
-    Object {
-      "description": Array [
-        "sentry monorepo",
-        "Group packages from sentry monorepo together",
-      ],
-      "groupName": "sentry monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/getsentry/sentry-javascript",
-      ],
-    },
-    Object {
-      "description": Array [
-        "springfox monorepo",
-        "Group packages from springfox monorepo together",
-      ],
-      "groupName": "springfox monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/springfox/springfox",
-      ],
-    },
-    Object {
-      "description": Array [
-        "sanity monorepo",
-        "Group packages from sanity monorepo together",
-      ],
-      "groupName": "sanity monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/sanity-io/sanity",
-      ],
-    },
-    Object {
-      "description": Array [
-        "storybook monorepo",
-        "Group packages from storybook monorepo together",
-      ],
-      "groupName": "storybook monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/storybookjs/storybook",
-      ],
-    },
-    Object {
-      "description": Array [
-        "strapi monorepo",
-        "Group packages from strapi monorepo together",
-      ],
-      "groupName": "strapi monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/strapi/strapi",
-      ],
-    },
-    Object {
-      "description": Array [
-        "stryker monorepo",
-        "Group packages from stryker monorepo together",
-      ],
-      "groupName": "stryker monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/stryker-mutator/stryker",
-      ],
-    },
-    Object {
-      "description": Array [
-        "surveyjs monorepo",
-        "Group packages from surveyjs monorepo together",
-      ],
-      "groupName": "surveyjs monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/surveyjs/surveyjs",
-      ],
-    },
-    Object {
-      "description": Array [
-        "Swashbuckle monorepo",
-        "Group packages from Swashbuckle monorepo together",
-      ],
-      "groupName": "Swashbuckle monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/domaindrivendev/Swashbuckle.AspNetCore",
-      ],
-    },
-    Object {
-      "description": Array [
-        "treat monorepo",
-        "Group packages from treat monorepo together",
-      ],
-      "groupName": "treat monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/seek-oss/treat",
-      ],
-    },
-    Object {
-      "description": Array [
-        "typefaces monorepo",
-        "Group packages from typefaces monorepo together",
-      ],
-      "groupName": "typefaces monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/KyleAMathews/typefaces",
-      ],
-    },
-    Object {
-      "description": Array [
-        "uppy monorepo",
-        "Group packages from uppy monorepo together",
-      ],
-      "groupName": "uppy monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/transloadit/uppy",
-      ],
-    },
-    Object {
-      "description": Array [
-        "vue monorepo",
-        "Group packages from vue monorepo together",
-      ],
-      "groupName": "vue monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/vuejs/vue",
-      ],
-    },
-    Object {
-      "description": Array [
-        "vuepress monorepo",
-        "Group packages from vuepress monorepo together",
-      ],
-      "groupName": "vuepress monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/vuejs/vuepress",
-      ],
-    },
-    Object {
-      "description": Array [
-        "webdriverio monorepo",
-        "Group packages from webdriverio monorepo together",
-      ],
-      "groupName": "webdriverio monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/webdriverio/webdriverio",
-      ],
-    },
-    Object {
-      "description": Array [
-        "workbox monorepo",
-        "Group packages from workbox monorepo together",
-      ],
-      "groupName": "workbox monorepo",
-      "sourceUrlPrefixes": Array [
-        "https://github.com/googlechrome/workbox",
-      ],
-    },
-    Object {
-      "description": Array [
-        "Group packages from babel6 monorepo together",
-      ],
-      "groupName": "babel6 monorepo",
-      "packagePatterns": Array [
-        "^babel6$",
-      ],
-    },
-    Object {
-      "description": Array [
-        "Group packages from wordpress monorepo together",
-      ],
-      "groupName": "wordpress monorepo",
-      "packagePatterns": Array [
-        "^@wordpress/",
-      ],
-    },
-    Object {
-      "description": Array [
-        "Group packages from angularmaterial monorepo together",
-      ],
-      "groupName": "angularmaterial monorepo",
-      "packagePatterns": Array [
-        "^@angular/material",
-        "^@angular/cdk",
-      ],
-    },
-    Object {
-      "description": Array [
-        "Group packages from aws-java-sdk monorepo together",
-      ],
-      "groupName": "aws-java-sdk monorepo",
-      "packagePatterns": Array [
-        "^com.amazonaws:aws-java-sdk-",
-      ],
-    },
-  ],
-}
-`;
-
 exports[`config/presets resolvePreset resolves linters 1`] = `
 Object {
   "description": Array [
diff --git a/lib/config/presets/common.ts b/lib/config/presets/common.ts
index b002bd4b64..aa1a13736f 100644
--- a/lib/config/presets/common.ts
+++ b/lib/config/presets/common.ts
@@ -8,5 +8,5 @@ export interface PresetApi {
     pkgName: string,
     presetName?: string,
     baseConfig?: RenovateConfig
-  ): Promise<Preset>;
+  ): Promise<Preset> | Preset;
 }
diff --git a/lib/config/presets/github.spec.ts b/lib/config/presets/github.spec.ts
index 3a3637ef0d..9208344137 100644
--- a/lib/config/presets/github.spec.ts
+++ b/lib/config/presets/github.spec.ts
@@ -19,11 +19,6 @@ describe('config/presets/github', () => {
     got.mockReset();
     return global.renovateCache.rmAll();
   });
-  describe('setInternalPreset()', () => {
-    it('allows override', () => {
-      github.setInternalPreset({ body: {} });
-    });
-  });
   describe('fetchJSONFile()', () => {
     beforeEach(() => {
       clearRepoCache();
@@ -42,30 +37,6 @@ describe('config/presets/github', () => {
       );
       expect(res).toMatchSnapshot();
     });
-    it('returns renovate internal', async () => {
-      hostRules.find.mockReturnValueOnce({ token: 'abc' });
-      got.mockImplementationOnce(() => ({
-        body: { from: 'www' },
-      }));
-      const res = await github.fetchJSONFile(
-        'renovatebot/presets',
-        'presets.json',
-        'https://api.github.com/'
-      );
-      expect(res).toMatchSnapshot();
-    });
-    it('throws platform error', async () => {
-      got.mockImplementationOnce(() => {
-        throw new Error();
-      });
-      await expect(
-        github.fetchJSONFile(
-          'renovatebot/presets',
-          'presets.json',
-          'https://api.github.com/'
-        )
-      ).rejects.toThrow(PLATFORM_FAILURE);
-    });
   });
   describe('getPreset()', () => {
     it('passes up platform-failure', async () => {
diff --git a/lib/config/presets/github.ts b/lib/config/presets/github.ts
index 432a5caa62..88cac43546 100644
--- a/lib/config/presets/github.ts
+++ b/lib/config/presets/github.ts
@@ -4,45 +4,15 @@ import { Http, HttpOptions } from '../../util/http';
 import { PLATFORM_FAILURE } from '../../constants/error-messages';
 import { ensureTrailingSlash } from '../../util/url';
 import { PLATFORM_TYPE_GITHUB } from '../../constants/platforms';
-import { getRepoCache } from '../../util/cache';
 
 const http = new Http(PLATFORM_TYPE_GITHUB);
 
-export function setInternalPreset(content: { body: Preset }): void {
-  const cache = getRepoCache();
-  cache.internalPresets = Promise.resolve(content);
-}
-
-async function fetchInternalPreset(): Promise<Preset> {
-  const res = await http.getJson<Preset>(
-    'https://raw.githubusercontent.com/renovatebot/presets/master/presets.json'
-  );
-  return res.body;
-}
-
-function getInternalPreset(): Promise<Preset> {
-  const cache = getRepoCache();
-  cache.internalPresets = cache.internalPresets || fetchInternalPreset();
-  return cache.internalPresets;
-}
-
 export async function fetchJSONFile(
   repo: string,
   fileName: string,
   endpoint: string
 ): Promise<Preset> {
   const url = `${endpoint}repos/${repo}/contents/${fileName}`;
-  if (
-    url ===
-    'https://api.github.com/repos/renovatebot/presets/contents/presets.json'
-  ) {
-    try {
-      const res = await getInternalPreset();
-      return res;
-    } catch (err) {
-      throw new Error(PLATFORM_FAILURE);
-    }
-  }
   const opts: HttpOptions = {
     headers: {
       accept: global.appMode
diff --git a/lib/config/presets/index.spec.ts b/lib/config/presets/index.spec.ts
index f60dad5fe5..3233ac6b0b 100644
--- a/lib/config/presets/index.spec.ts
+++ b/lib/config/presets/index.spec.ts
@@ -1,15 +1,12 @@
 import * as _npm from './npm';
-import * as _github from './github';
 import * as presets from '.';
 import presetIkatyang from './__fixtures__/renovate-config-ikatyang.json';
-import githubPresets from './__fixtures__/presets.json';
 import { RenovateConfig } from '..';
 
 jest.mock('./npm');
 jest.mock('./github');
 
 const npm: any = _npm;
-const github: any = _github;
 
 npm.getPreset = jest.fn((dep, presetName) => {
   if (dep === 'renovate-config-ikatyang') {
@@ -32,11 +29,6 @@ npm.getPreset = jest.fn((dep, presetName) => {
   return null;
 });
 
-github.getPreset = jest.fn((dep, filePreset) => {
-  const [, presetName, subPresetName] = filePreset.split('/');
-  return githubPresets[presetName][subPresetName];
-});
-
 describe('config/presets', () => {
   describe('resolvePreset', () => {
     let config: RenovateConfig;
@@ -131,11 +123,6 @@ describe('config/presets', () => {
       expect(e.validationError).toMatchSnapshot();
       expect(e.validationMessage).toMatchSnapshot();
     });
-    it('resolves group monorepos', async () => {
-      config.extends = ['group:monorepos'];
-      const res = await presets.resolveConfigPresets(config);
-      expect(res).toMatchSnapshot();
-    });
     it('combines two package alls', async () => {
       config.extends = ['packages:eslint', 'packages:stylelint'];
       const res = await presets.resolveConfigPresets(config);
diff --git a/lib/config/presets/index.ts b/lib/config/presets/index.ts
index dbd9b69bb0..ed76115e1f 100644
--- a/lib/config/presets/index.ts
+++ b/lib/config/presets/index.ts
@@ -6,6 +6,7 @@ import * as github from './github';
 import * as npm from './npm';
 import * as gitlab from './gitlab';
 import * as local from './local';
+import * as internal from './internal';
 import { RenovateConfig } from '../common';
 import { mergeChildConfig } from '../utils';
 import { regEx } from '../../util/regex';
@@ -21,6 +22,7 @@ const presetSources: Record<string, PresetApi> = {
   npm,
   gitlab,
   local,
+  internal,
 };
 
 export function replaceArgs(
@@ -97,14 +99,13 @@ export function parsePreset(input: string): ParsedPreset {
   if (
     presetsPackages.some((presetPackage) => str.startsWith(`${presetPackage}:`))
   ) {
-    presetSource = 'github';
-    packageName = 'renovatebot/presets';
-    presetName = `presets/` + str.replace(':', '/');
+    presetSource = 'internal';
+    [packageName, presetName] = str.split(':');
   } else if (str.startsWith(':')) {
     // default namespace
-    presetSource = 'github';
-    packageName = 'renovatebot/presets';
-    presetName = `presets/default/` + str.slice(1);
+    presetSource = 'internal';
+    packageName = 'default';
+    presetName = str.slice(1);
   } else if (str.startsWith('@')) {
     // scoped namespace
     [, packageName] = /(@.*?)(:|$)/.exec(str);
@@ -204,7 +205,7 @@ export async function resolveConfigPresets(
         try {
           fetchedPreset = await getPreset(preset, baseConfig);
         } catch (err) {
-          logger.debug({ err }, 'Preset fetch error');
+          logger.debug({ preset, err }, 'Preset fetch error');
           // istanbul ignore if
           if (
             err.message === PLATFORM_FAILURE ||
diff --git a/lib/config/presets/internal/config.ts b/lib/config/presets/internal/config.ts
new file mode 100644
index 0000000000..e2f763604c
--- /dev/null
+++ b/lib/config/presets/internal/config.ts
@@ -0,0 +1,50 @@
+import { Preset } from '../common';
+
+export const presets: Record<string, Preset> = {
+  base: {
+    description: 'Default base configuration for all languages',
+    extends: [
+      ':separateMajorReleases',
+      ':combinePatchMinorReleases',
+      ':ignoreUnstable',
+      ':prImmediately',
+      ':semanticPrefixFixDepsChoreOthers',
+      ':updateNotScheduled',
+      ':automergeDisabled',
+      ':ignoreModulesAndTests',
+      ':autodetectPinVersions',
+      ':prHourlyLimit2',
+      ':prConcurrentLimit20',
+      'group:monorepos',
+      'group:recommended',
+      'helpers:disableTypesNodeMajor',
+    ],
+  },
+  'base-js': {
+    description: 'Base configuration for Javascript (deprecated)',
+    extends: ['config:base'],
+  },
+  'js-app': {
+    description: 'Default configuration for webapps',
+    extends: ['config:base', ':pinAllExceptPeerDependencies'],
+  },
+  'js-lib': {
+    description: 'Default configuration for libraries',
+    extends: ['config:base', ':pinOnlyDevDependencies'],
+  },
+  semverAllMonthly: {
+    description:
+      'Preserve semver ranges and update everything together once a month',
+    separateMajorMinor: false,
+    extends: [
+      ':preserveSemverRanges',
+      'group:all',
+      'schedule:monthly',
+      ':maintainLockFilesMonthly',
+    ],
+    lockFileMaintenance: {
+      extends: ['group:all'],
+      commitMessageAction: 'Update',
+    },
+  },
+};
diff --git a/lib/config/presets/internal/default.ts b/lib/config/presets/internal/default.ts
new file mode 100644
index 0000000000..3c9aacb79b
--- /dev/null
+++ b/lib/config/presets/internal/default.ts
@@ -0,0 +1,579 @@
+import { Preset } from '../common';
+
+export const presets: Record<string, Preset> = {
+  enableRenovate: {
+    description: 'Enable renovate',
+    enabled: true,
+  },
+  disableRenovate: {
+    description: 'Disable renovate',
+    enabled: false,
+  },
+  disableMajorUpdates: {
+    description: 'Disables major updates',
+    major: {
+      enabled: false,
+    },
+  },
+  ignoreModulesAndTests: {
+    description:
+      'Ignore `node_modules`, `bower_components`, `vendor` and various test/tests directories',
+    ignorePaths: [
+      '**/node_modules/**',
+      '**/bower_components/**',
+      '**/vendor/**',
+      '**/examples/**',
+      '**/__tests__/**',
+      '**/test/**',
+      '**/tests/**',
+      '**/__fixtures__/**',
+    ],
+  },
+  includeNodeModules: {
+    description:
+      'Include <code>package.json</code> files found within <code>node_modules</code> folders or <code>bower_components</code>.',
+    ignorePaths: [],
+  },
+  pinVersions: {
+    description:
+      'Use version pinning (maintain a single version only and not semver ranges)',
+    rangeStrategy: 'pin',
+  },
+  preserveSemverRanges: {
+    description:
+      'Preserve (but continue to upgrade) any existing semver ranges',
+    rangeStrategy: 'replace',
+  },
+  pinAllExceptPeerDependencies: {
+    description:
+      'Pin dependency versions for all except <code>peerDependencies</code>',
+    packageRules: [
+      {
+        packagePatterns: ['*'],
+        rangeStrategy: 'pin',
+      },
+      {
+        depTypeList: ['engines', 'peerDependencies'],
+        rangeStrategy: 'auto',
+      },
+    ],
+  },
+  pinDependencies: {
+    description: 'Pin dependency versions for <code>dependencies</code>',
+    packageRules: [
+      {
+        depTypeList: ['dependencies'],
+        rangeStrategy: 'pin',
+      },
+    ],
+  },
+  pinDevDependencies: {
+    description: 'Pin dependency versions for <code>devDependencies</code>',
+    packageRules: [
+      {
+        depTypeList: ['devDependencies'],
+        rangeStrategy: 'pin',
+      },
+    ],
+  },
+  pinOnlyDevDependencies: {
+    description:
+      'Pin dependency versions for <code>devDependencies</code> and retain semver ranges for others',
+    packageRules: [
+      {
+        packagePatterns: ['*'],
+        rangeStrategy: 'replace',
+      },
+      {
+        depTypeList: ['devDependencies'],
+        rangeStrategy: 'pin',
+      },
+      {
+        depTypeList: ['peerDependencies'],
+        rangeStrategy: 'widen',
+      },
+    ],
+  },
+  autodetectPinVersions: {
+    description: 'Autodetect whether to pin dependencies or maintain ranges',
+    rangeStrategy: 'auto',
+  },
+  separateMajorReleases: {
+    description:
+      'Separate major versions of dependencies into individual branches/PRs',
+    separateMajorMinor: true,
+  },
+  separateMultipleMajorReleases: {
+    description:
+      'Separate each available major versions of dependencies into individual branches/PRs',
+    separateMajorMinor: true,
+    separateMultipleMajor: true,
+  },
+  separatePatchReleases: {
+    description:
+      'Separate patch and minor releases of dependencies into separate PRs',
+    separateMinorPatch: true,
+  },
+  combinePatchMinorReleases: {
+    description:
+      'Do not separate patch and minor upgrades into separate PRs for the same dependency',
+    separateMinorPatch: false,
+  },
+  renovatePrefix: {
+    description: 'Use <code>renovate/</code> as prefix for all branch names',
+    branchPrefix: 'renovate/',
+  },
+  semanticCommitType: {
+    description:
+      'Use <code>{{arg0}}</code> as semantic commit type for commit messages and PR titles',
+    semanticCommitType: '{{arg0}}',
+  },
+  semanticPrefixChore: {
+    description:
+      'Use <code>chore</code> as semantic commit type for commit messages and PR titles',
+    extends: [':semanticCommitType(chore)'],
+  },
+  semanticPrefixFix: {
+    description:
+      'Use <code>fix</code> as semantic commit type for commit messages and PR titles',
+    extends: [':semanticCommitType(fix)'],
+  },
+  disablePeerDependencies: {
+    description:
+      'Do not renovate <code>peerDependencies</code> versions/ranges',
+    packageRules: [
+      {
+        depTypeList: ['peerDependencies'],
+        enabled: false,
+      },
+    ],
+  },
+  disableDevDependencies: {
+    description: 'Do not renovate <code>devDependencies</code> versions/ranges',
+    packageRules: [
+      {
+        depTypeList: ['devDependencies'],
+        enabled: false,
+      },
+    ],
+  },
+  disableDigestUpdates: {
+    description: 'Disable digest and git hash updates',
+    digest: {
+      enabled: false,
+    },
+  },
+  semanticPrefixFixDepsChoreOthers: {
+    description:
+      'If semantic commits detected, use semantic commit type <code>fix</code> for dependencies and <code>chore</code> for all others',
+    packageRules: [
+      {
+        packagePatterns: ['*'],
+        semanticCommitType: 'chore',
+      },
+      {
+        depTypeList: ['dependencies'],
+        semanticCommitType: 'fix',
+      },
+    ],
+  },
+  semanticCommitTypeAll: {
+    description:
+      'If semantic commits detected, use semantic commit type <code>{{arg0}}</code> for all',
+    packageRules: [
+      {
+        packagePatterns: ['*'],
+        semanticCommitType: '{{arg0}}',
+      },
+    ],
+  },
+  rebaseStalePrs: {
+    description:
+      'Rebase existing PRs any time the base branch has been updated',
+    rebaseWhen: 'behind-base-branch',
+  },
+  unpublishSafe: {
+    description:
+      'Set a status check to warn when upgrades <  24 hours old might get unpublished',
+    unpublishSafe: true,
+  },
+  unpublishSafeDisabled: {
+    description:
+      "Create branches/PRs for dependency upgrades as soon as they're available",
+    unpublishSafe: false,
+  },
+  prImmediately: {
+    description: 'Raise PRs immediately (after branch is created)',
+    prCreation: 'immediate',
+  },
+  prNotPending: {
+    description:
+      'Wait until branch tests have passed or failed before creating the PR',
+    prCreation: 'not-pending',
+  },
+  prHourlyLimitNone: {
+    description: 'Removes rate limit for PR creation per hour',
+    prHourlyLimit: 0,
+  },
+  prHourlyLimit1: {
+    description: 'Rate limit PR creation to a maximum of one per hour',
+    prHourlyLimit: 1,
+  },
+  prHourlyLimit2: {
+    description: 'Rate limit PR creation to a maximum of two per hour',
+    prHourlyLimit: 2,
+  },
+  prHourlyLimit4: {
+    description: 'Rate limit PR creation to a maximum of four per hour',
+    prHourlyLimit: 4,
+  },
+  prConcurrentLimitNone: {
+    description: 'Remove limit for open PRs',
+    prConcurrentLimit: 0,
+  },
+  prConcurrentLimit10: {
+    description: 'Limit to maximum 10 open PRs',
+    prConcurrentLimit: 10,
+  },
+  prConcurrentLimit20: {
+    description: 'Limit to maximum 20 open PRs at any time',
+    prConcurrentLimit: 20,
+  },
+  disableRateLimiting: {
+    description: 'Remove hourly and concurrent rate limits',
+    prConcurrentLimit: 0,
+    prHourlyLimit: 0,
+  },
+  automergeDisabled: {
+    description:
+      'Disable automerging feature - wait for humans to merge all PRs',
+    automerge: false,
+  },
+  automergeDigest: {
+    description: 'Automerge digest upgrades if they pass tests',
+    digest: {
+      automerge: true,
+    },
+  },
+  automergePatch: {
+    description: 'Automerge patch upgrades if they pass tests',
+    separateMinorPatch: true,
+    patch: {
+      automerge: true,
+    },
+    pin: {
+      automerge: true,
+    },
+    lockFileMaintenance: {
+      automerge: true,
+    },
+  },
+  automergeMinor: {
+    description: 'Automerge patch and minor upgrades if they pass tests',
+    minor: {
+      automerge: true,
+    },
+    patch: {
+      automerge: true,
+    },
+    pin: {
+      automerge: true,
+    },
+    lockFileMaintenance: {
+      automerge: true,
+    },
+  },
+  automergeMajor: {
+    description: 'Automerge all upgrades (including major) if they pass tests',
+    automerge: true,
+  },
+  automergeAll: {
+    description: 'Automerge all upgrades (including major) if they pass tests',
+    automerge: true,
+  },
+  automergeBranch: {
+    description:
+      'If automerging, push the new commit directly to base branch (no PR)',
+    automergeType: 'branch',
+  },
+  automergeBranchMergeCommit: {
+    description:
+      'If automerging, perform a merge-commit on branch (no PR) - deprecated, use :automergeBranch instead',
+    automergeType: 'branch-merge-commit',
+  },
+  automergeBranchPush: {
+    description:
+      'If automerging, push the new commit directly to base branch (no PR) - deprecated, use :automergeBranch instead',
+    automergeType: 'branch-push',
+  },
+  automergePr: {
+    description: 'Raise a PR first before any automerging',
+    automergeType: 'pr',
+  },
+  automergeRequireAllStatusChecks: {
+    description: 'Require all status checks to pass before any automerging',
+    requiredStatusChecks: [],
+  },
+  skipStatusChecks: {
+    description: 'Skip status checks and automerge right away',
+    requiredStatusChecks: null,
+  },
+  maintainLockFilesDisabled: {
+    description:
+      'Update existing lock files only when <code>package.json</code> is modified',
+    lockFileMaintenance: {
+      enabled: false,
+    },
+  },
+  pinDigestsDisabled: {
+    description: 'Disable pinning of docker dependency digests',
+    pinDigests: false,
+  },
+  maintainLockFilesWeekly: {
+    description: 'Run lock file maintenance (updates) early Monday mornings',
+    lockFileMaintenance: {
+      enabled: true,
+      extends: 'schedule:weekly',
+    },
+  },
+  maintainLockFilesMonthly: {
+    description:
+      'Run lock file maintenance (updates) on the first day of each month',
+    lockFileMaintenance: {
+      enabled: true,
+      extends: 'schedule:monthly',
+    },
+  },
+  ignoreUnstable: {
+    description:
+      'Upgrade to unstable versions only if the existing version is unstable',
+    ignoreUnstable: true,
+  },
+  respectLatest: {
+    description: 'Upgrade versions up to the "latest" tag in npm registry',
+    respectLatest: true,
+  },
+  updateNotScheduled: {
+    description: 'Keep existing branches updated even when not scheduled',
+    updateNotScheduled: true,
+  },
+  noUnscheduledUpdates: {
+    description: 'Make no updates to branches when not scheduled',
+    updateNotScheduled: false,
+  },
+  automergeLinters: {
+    description: 'Update lint packages automatically if tests pass',
+    packageRules: [
+      {
+        extends: ['packages:linters'],
+        automerge: true,
+      },
+    ],
+  },
+  automergeTesters: {
+    description: 'Update testing packages automatically if tests pass',
+    packageRules: [
+      {
+        extends: ['packages:test'],
+        automerge: true,
+      },
+    ],
+  },
+  automergeTypes: {
+    description: 'Update @types/* packages automatically if tests pass',
+    packageRules: [
+      {
+        packagePatterns: ['^@types/'],
+        automerge: true,
+      },
+    ],
+  },
+  doNotPinPackage: {
+    description: 'Disable version pinning for <code>{{arg0}}</code>',
+    packageRules: [
+      {
+        packageNames: ['{{arg0}}'],
+        rangeStrategy: 'replace',
+      },
+    ],
+  },
+  pinSkipCi: {
+    description: 'Add [skip ci] to commit message body whenever pinning',
+    pin: {
+      commitBody: '[skip ci]',
+    },
+  },
+  gitSignOff: {
+    description: 'Append git Signed-off-by signature to git commits.',
+    commitBody: 'Signed-off-by: {{{gitAuthor}}}',
+  },
+  npm: {
+    description: 'Keep package.json npm dependencies updated',
+    npm: {
+      enabled: true,
+    },
+  },
+  gomod: {
+    description: 'Enable Go modules support',
+    gomod: {
+      enabled: true,
+    },
+  },
+  onlyNpm: {
+    description: 'Renovate only npm dependencies',
+    docker: {
+      enabled: false,
+    },
+    meteor: {
+      enabled: false,
+    },
+  },
+  docker: {
+    description: 'Keep Dockerfile FROM sources updated',
+    docker: {
+      enabled: true,
+    },
+  },
+  meteor: {
+    description: 'Keep Meteor Npm.depends packages updated',
+    meteor: {
+      enabled: true,
+    },
+  },
+  group: {
+    description: 'Group {{arg1}} packages into same branch/PR',
+    packageRules: [
+      {
+        extends: ['{{arg0}}'],
+        groupName: '{{arg1}}',
+      },
+    ],
+  },
+  label: {
+    description: 'Apply label <code>{{arg0}}</code> to PRs',
+    labels: ['{{arg0}}'],
+  },
+  labels: {
+    description:
+      'Apply labels <code>{{arg0}}</code> and <code>{{arg1}}</code> to PRs',
+    labels: ['{{arg0}}', '{{arg1}}'],
+  },
+  assignee: {
+    description: 'Assign PRs to <code>{{arg0}}</code>',
+    assignees: ['{{arg0}}'],
+  },
+  reviewer: {
+    description: 'Add <code>{{arg0}}</code> as reviewer for PRs',
+    reviewers: ['{{arg0}}'],
+  },
+  assignAndReview: {
+    description: 'Set <code>{{arg0}}</code> as assignee and reviewer of PRs',
+    extends: [':assignee({{arg0}})', ':reviewer({{arg0}})'],
+  },
+  enableVulnerabilityAlerts: {
+    description: 'Raise PR when vulnerability alerts are detected',
+    vulnerabilityAlerts: {
+      enabled: true,
+    },
+  },
+  enableVulnerabilityAlertsWithLabel: {
+    description:
+      'Raise PR when vulnerability alerts are detected with label <code>{{arg0}}</code>',
+    vulnerabilityAlerts: {
+      enabled: true,
+      labels: ['{{arg0}}'],
+    },
+  },
+  disableVulnerabilityAlerts: {
+    description: 'Disable vulnerability alerts completely',
+    vulnerabilityAlerts: {
+      enabled: false,
+    },
+  },
+  semanticCommits: {
+    description: 'Use semantic prefixes for commit messages and PR titles',
+    semanticCommits: true,
+  },
+  semanticCommitsDisabled: {
+    description: 'Disable semantic prefixes for commit messages and PR titles',
+    semanticCommits: false,
+  },
+  disableLockFiles: {
+    description: 'Disable lock file updates',
+    updateLockFiles: false,
+  },
+  semanticCommitScope: {
+    description:
+      'Use semantic commit scope <code>{{arg0}}</code> for all commits and PR titles',
+    semanticCommitScope: '{{arg0}}',
+  },
+  semanticCommitScopeDisabled: {
+    description: 'Disable semantic commit scope for all commits and PR titles',
+    semanticCommitScope: null,
+  },
+  widenPeerDependencies: {
+    description:
+      'Always widen peerDependencies semver ranges when updating, instead of replacing',
+    packageRules: [
+      {
+        depTypeList: ['peerDependencies'],
+        rangeStrategy: 'widen',
+      },
+    ],
+  },
+  masterIssue: {
+    description: 'Enable Renovate master issue creation',
+    masterIssue: true,
+  },
+  masterIssueApproval: {
+    description: 'Enable Renovate master issue approval workflow',
+    masterIssueApproval: true,
+  },
+  timezone: {
+    description: 'Evaluate schedules according to timezone {{arg0}}',
+    timezone: '{{arg0}}',
+  },
+  pathSemanticCommitType: {
+    description:
+      'Use semanticCommitType {{arg0}} for all package files matching path {{arg1}}',
+    packageRules: [
+      {
+        paths: ['{{arg0}}'],
+        semanticCommitType: '{{arg1}}',
+      },
+    ],
+  },
+  followTag: {
+    description:
+      'For package <code>{{arg0}}</code>, strictly follow release tag <code>{{arg1}}</code>',
+    packageRules: [
+      {
+        packageNames: ['{{arg0}}'],
+        followTag: '{{arg1}}',
+      },
+    ],
+  },
+  githubComToken: {
+    description: 'Use provided token for github.com lookups',
+    hostRules: [
+      {
+        domainName: 'github.com',
+        encrypted: {
+          token: '{{arg0}}',
+        },
+      },
+    ],
+  },
+  base: {
+    description: 'deprecated alias for config:base',
+    extends: ['config:base'],
+  },
+  app: {
+    description: 'deprecated alias for config:js-app',
+    extends: ['config:js-app'],
+  },
+  library: {
+    description: 'deprecated alias for config:js-lib',
+    extends: ['config:js-lib'],
+  },
+};
diff --git a/lib/config/presets/internal/docker.ts b/lib/config/presets/internal/docker.ts
new file mode 100644
index 0000000000..5d5ae47f5a
--- /dev/null
+++ b/lib/config/presets/internal/docker.ts
@@ -0,0 +1,35 @@
+import { Preset } from '../common';
+
+export const presets: Record<string, Preset> = {
+  disable: {
+    docker: {
+      enabled: false,
+    },
+    'docker-compose': {
+      enabled: false,
+    },
+    circleci: {
+      enabled: false,
+    },
+  },
+  enableMajor: {
+    docker: {
+      major: {
+        enabled: true,
+      },
+    },
+  },
+  disableMajor: {
+    docker: {
+      major: {
+        enabled: false,
+      },
+    },
+  },
+  pinDigests: {
+    description: 'Pin Docker digests',
+    docker: {
+      pinDigests: true,
+    },
+  },
+};
diff --git a/lib/config/presets/internal/group.ts b/lib/config/presets/internal/group.ts
new file mode 100644
index 0000000000..4626b0e818
--- /dev/null
+++ b/lib/config/presets/internal/group.ts
@@ -0,0 +1,560 @@
+import * as monorepos from './monorepo';
+import { Preset } from '../common';
+
+const staticGroups = {
+  all: {
+    description: 'Group all updates together',
+    groupName: 'all dependencies',
+    separateMajorMinor: false,
+    groupSlug: 'all',
+    packageRules: [
+      {
+        packagePatterns: ['*'],
+        groupName: 'all dependencies',
+        groupSlug: 'all',
+      },
+    ],
+    lockFileMaintenance: {
+      enabled: false,
+    },
+  },
+  allNonMajor: {
+    description: 'Group all minor and patch updates together',
+    packageRules: [
+      {
+        packagePatterns: ['*'],
+        minor: {
+          groupName: 'all non-major dependencies',
+          groupSlug: 'all-minor-patch',
+        },
+      },
+    ],
+  },
+  recommended: {
+    description:
+      'Use curated list of recommended non-monorepo package groupings',
+    extends: [
+      'group:allApollographql',
+      'group:fortawesome',
+      'group:goOpenapi',
+      'group:fusionjs',
+      'group:hibernateCore',
+      'group:hibernateValidator',
+      'group:hibernateOgm',
+      'group:hibernateCommons',
+      'group:illuminate',
+      'group:jekyllEcosystem',
+      'group:polymer',
+      'group:rubyOmniauth',
+      'group:socketio',
+      'group:springAmqp',
+      'group:springAndroid',
+      'group:springBatch',
+      'group:springBoot',
+      'group:springCloud',
+      'group:springCore',
+      'group:springData',
+      'group:springHateoas',
+      'group:springIntegration',
+      'group:springKafka',
+      'group:springLdap',
+      'group:springMobile',
+      'group:springOsgi',
+      'group:springRestDocs',
+      'group:springRoo',
+      'group:springScala',
+      'group:springSecurity',
+      'group:springSession',
+      'group:springShell',
+      'group:springSocial',
+      'group:springStatemachine',
+      'group:springWebflow',
+      'group:springWs',
+      'group:symfony',
+    ],
+    ignoreDeps: [],
+  },
+  allApollographql: {
+    description: 'Group all packages published by Apollo GraphQL together',
+    packageRules: [
+      {
+        extends: 'packages:apollographql',
+        groupName: 'Apollo GraphQL packages',
+      },
+    ],
+  },
+  definitelyTyped: {
+    description: 'Group all @types packages together',
+    packageRules: [
+      {
+        groupName: 'definitelyTyped',
+        packagePatterns: ['^@types/'],
+      },
+    ],
+  },
+  dotNetCore: {
+    description: '.NET Core Docker containers',
+    packageRules: [
+      {
+        datasources: ['docker'],
+        packagePatterns: ['^mcr.microsoft.com/dotnet/core/'],
+        groupName: '.NET Core Docker containers',
+      },
+    ],
+  },
+  fortawesome: {
+    description: 'Group all packages by Font Awesome together',
+    packageRules: [
+      {
+        groupName: 'Font Awesome',
+        packagePatterns: ['^@fortawesome/'],
+      },
+    ],
+  },
+  fusionjs: {
+    description: 'Fusion.js packages',
+    packageNames: [
+      'fusion-cli',
+      'fusion-core',
+      'fusion-test-utils',
+      'fusion-tokens',
+    ],
+    packagePatterns: ['^fusion-plugin-*', '^fusion-react*', '^fusion-apollo*'],
+  },
+  illuminate: {
+    description: 'Group PHP illuminate packages together',
+    packageRules: [
+      {
+        packagePatterns: ['^illuminate/'],
+        groupName: 'illuminate packages',
+        groupSlug: 'illuminate',
+      },
+    ],
+  },
+  symfony: {
+    description: 'Group PHP symfony packages together',
+    packageRules: [
+      {
+        packagePatterns: ['^symfony/'],
+        groupName: 'symfony packages',
+        groupSlug: 'symfony',
+      },
+    ],
+  },
+  polymer: {
+    description: 'Group all @polymer packages together',
+    packageRules: [
+      {
+        groupName: 'polymer packages',
+        packagePatterns: ['^@polymer/'],
+      },
+    ],
+  },
+  hibernateCore: {
+    description: 'Group Java Hibernate Core packages',
+    packageRules: [
+      {
+        packagePatterns: ['^org.hibernate:'],
+        groupName: 'hibernate core',
+      },
+    ],
+  },
+  hibernateValidator: {
+    description: 'Group Java Hibernate Validator packages',
+    packageRules: [
+      {
+        packagePatterns: ['^org.hibernate.validator:'],
+        groupName: 'hibernate validator',
+      },
+    ],
+  },
+  hibernateOgm: {
+    description: 'Group Java Hibernate OGM packages',
+    packageRules: [
+      {
+        packagePatterns: ['^org.hibernate.ogm:'],
+        groupName: 'hibernate ogm',
+      },
+    ],
+  },
+  hibernateCommons: {
+    description: 'Group Java Hibernate Commons packages',
+    packageRules: [
+      {
+        packagePatterns: ['^org.hibernate.common:'],
+        groupName: 'hibernate commons',
+      },
+    ],
+  },
+  springAmqp: {
+    description: 'Group Java Spring AMQP packages',
+    packageRules: [
+      {
+        groupName: 'spring amqp',
+        packagePatterns: ['^org.springframework.amqp:'],
+      },
+    ],
+  },
+  springAndroid: {
+    description: 'Group Java Spring Android packages',
+    packageRules: [
+      {
+        groupName: 'spring android',
+        packagePatterns: ['^org.springframework.android:'],
+      },
+    ],
+  },
+  springBatch: {
+    description: 'Group Java Spring Batch packages',
+    packageRules: [
+      {
+        groupName: 'spring batch',
+        packagePatterns: ['^org.springframework.batch:'],
+      },
+    ],
+  },
+  springBoot: {
+    description: 'Group Java Spring Boot packages',
+    packageRules: [
+      {
+        groupName: 'spring boot',
+        packagePatterns: ['^org.springframework.boot:'],
+      },
+    ],
+  },
+  springCloud: {
+    description: 'Group Java Spring Cloud packages',
+    packageRules: [
+      {
+        groupName: 'spring cloud',
+        packagePatterns: ['^org.springframework.cloud:'],
+      },
+    ],
+  },
+  springCore: {
+    description: 'Group Java Spring Core packages',
+    packageRules: [
+      {
+        groupName: 'spring core',
+        packagePatterns: ['^org.springframework:'],
+      },
+    ],
+  },
+  springData: {
+    description: 'Group Java Spring Data packages',
+    packageRules: [
+      {
+        groupName: 'spring data',
+        packagePatterns: ['^org.springframework.data:'],
+      },
+    ],
+  },
+  springHateoas: {
+    description: 'Group Java Spring HATEOAS packages',
+    packageRules: [
+      {
+        groupName: 'spring hateoas',
+        packagePatterns: ['^org.springframework.hateoas:'],
+      },
+    ],
+  },
+  springIntegration: {
+    description: 'Group Java Spring Integration packages',
+    packageRules: [
+      {
+        groupName: 'spring integration',
+        packagePatterns: ['^org.springframework.integration:'],
+      },
+    ],
+  },
+  springKafka: {
+    description: 'Group Java Spring Kafka packages',
+    packageRules: [
+      {
+        groupName: 'spring kafka',
+        packagePatterns: ['^org.springframework.kafka:'],
+      },
+    ],
+  },
+  springLdap: {
+    description: 'Group Java Spring LDAP packages',
+    packageRules: [
+      {
+        groupName: 'spring ldap',
+        packagePatterns: ['^org.springframework.ldap:'],
+      },
+    ],
+  },
+  springMobile: {
+    description: 'Group Java Spring Mobile packages',
+    packageRules: [
+      {
+        groupName: 'spring mobile',
+        packagePatterns: ['^org.springframework.mobile:'],
+      },
+    ],
+  },
+  springOsgi: {
+    description: 'Group Java Spring OSGi packages',
+    packageRules: [
+      {
+        groupName: 'spring osgi',
+        packagePatterns: ['^org.springframework.osgi:'],
+      },
+    ],
+  },
+  springRestDocs: {
+    description: 'Group Java Spring REST Docs packages',
+    packageRules: [
+      {
+        groupName: 'spring restdocs',
+        packagePatterns: ['^org.springframework.restdocs:'],
+      },
+    ],
+  },
+  springRoo: {
+    description: 'Group Java Spring Roo packages',
+    packageRules: [
+      {
+        groupName: 'spring roo',
+        packagePatterns: ['^org.springframework.roo:'],
+      },
+    ],
+  },
+  springScala: {
+    description: 'Group Java Spring Scala packages',
+    packageRules: [
+      {
+        groupName: 'spring scala',
+        packagePatterns: ['^org.springframework.scala:'],
+      },
+    ],
+  },
+  springSecurity: {
+    description: 'Group Java Spring Security packages',
+    packageRules: [
+      {
+        groupName: 'spring security',
+        packagePatterns: ['^org.springframework.security:'],
+      },
+    ],
+  },
+  springSession: {
+    description: 'Group Java Spring Session packages',
+    packageRules: [
+      {
+        groupName: 'spring session',
+        packagePatterns: ['^org.springframework.session:'],
+      },
+    ],
+  },
+  springShell: {
+    description: 'Group Java Spring Shell packages',
+    packageRules: [
+      {
+        groupName: 'spring shell',
+        packagePatterns: ['^org.springframework.shell:'],
+      },
+    ],
+  },
+  springSocial: {
+    description: 'Group Java Spring Social packages',
+    packageRules: [
+      {
+        groupName: 'spring social',
+        packagePatterns: ['^org.springframework.social:'],
+      },
+    ],
+  },
+  springStatemachine: {
+    description: 'Group Java Spring Statemachine packages',
+    packageRules: [
+      {
+        groupName: 'spring statemachine',
+        packagePatterns: ['^org.springframework.statemachine:'],
+      },
+    ],
+  },
+  springWebflow: {
+    description: 'Group Java Spring WebFlow packages',
+    packageRules: [
+      {
+        groupName: 'spring webflow',
+        packagePatterns: ['^org.springframework.webflow:'],
+      },
+    ],
+  },
+  springWs: {
+    description: 'Group Java Spring WS packages',
+    packageRules: [
+      {
+        groupName: 'spring ws',
+        packagePatterns: ['^org.springframework.ws:'],
+      },
+    ],
+  },
+  socketio: {
+    description: 'Group socket.io packages',
+    packageRules: [
+      {
+        groupName: 'socket.io packages',
+        packagePatterns: ['^socket.io'],
+      },
+    ],
+  },
+  postcss: {
+    description: 'Group postcss packages together',
+    packageRules: [
+      {
+        extends: 'packages:postcss',
+        groupName: 'postcss packages',
+      },
+    ],
+  },
+  jekyllEcosystem: {
+    description: 'Group jekyll and related ruby packages together',
+    packageRules: [
+      {
+        sourceUrlPrefixes: [
+          'https://github.com/jekyll/',
+          'https://github.com/github/pages-gem',
+        ],
+        groupName: 'jekyll ecosystem packages',
+      },
+    ],
+  },
+  rubyOmniauth: {
+    description: 'Group omniauth packages together',
+    packageRules: [
+      {
+        datasources: ['rubygems'],
+        packagePatterns: ['^omniauth'],
+        groupName: 'omniauth packages',
+      },
+    ],
+  },
+  goOpenapi: {
+    description: 'Group go-openapi packages together',
+    packageRules: [
+      {
+        datasources: ['go'],
+        groupName: 'go-openapi packages',
+        groupSlug: 'go-openapi',
+        packagePatterns: ['^github.com/go-openapi/'],
+      },
+    ],
+  },
+  linters: {
+    description: 'Group various lint packages together',
+    packageRules: [
+      {
+        extends: 'packages:linters',
+        groupName: 'linters',
+      },
+    ],
+  },
+  jsUnitTest: {
+    description: 'Group JS unit test packages together',
+    packageRules: [
+      {
+        extends: 'packages:jsUnitTest',
+        groupName: 'JS unit test packages',
+      },
+    ],
+  },
+  jsUnitTestNonMajor: {
+    description: 'Group JS unit test packages together',
+    packageRules: [
+      {
+        extends: 'packages:jsUnitTest',
+        minor: {
+          groupName: 'JS unit test packages',
+        },
+      },
+    ],
+  },
+  unitTest: {
+    description: 'Group all unit test packages together',
+    packageRules: [
+      {
+        extends: 'packages:unitTest',
+        groupName: 'unit test packages',
+      },
+    ],
+  },
+  unitTestNonMajor: {
+    description: 'Group all unit test packages together',
+    packageRules: [
+      {
+        extends: 'packages:unitTest',
+        minor: {
+          groupName: 'unit test packages',
+        },
+      },
+    ],
+  },
+  jsTest: {
+    description: 'Group JS test packages together',
+    packageRules: [
+      {
+        extends: 'packages:jsTest',
+        groupName: 'JS test packages',
+      },
+    ],
+  },
+  jsTestMonMajor: {
+    description: 'Group non-major JS test package updates together',
+    packageRules: [
+      {
+        extends: 'packages:jsTest',
+        minor: {
+          groupName: 'JS test packages',
+        },
+      },
+    ],
+  },
+  test: {
+    description: 'Group all test packages together',
+    packageRules: [
+      {
+        extends: 'packages:test',
+        groupName: 'test packages',
+      },
+    ],
+  },
+  testNonMajor: {
+    description: 'Group all non-major test package updates together',
+    packageRules: [
+      {
+        extends: 'packages:test',
+        minor: {
+          groupName: 'test packages',
+        },
+      },
+    ],
+  },
+};
+
+const config: any = { ...staticGroups };
+
+const monorepoNames = [];
+for (const monorepo of Object.keys(monorepos.presets)) {
+  const name = `${monorepo}Monorepo`;
+  monorepoNames.push(`group:${name}`);
+  config[name] = {
+    packageRules: [
+      {
+        description: `Group packages from ${monorepo} monorepo together`,
+        extends: `monorepo:${monorepo}`,
+        groupName: `${monorepo} monorepo`,
+      },
+    ],
+  };
+}
+config.monorepos = {
+  description: 'Group known monorepo packages together',
+  ignoreDeps: [],
+  extends: monorepoNames,
+};
+
+export const presets: Record<string, Preset> = config;
diff --git a/lib/config/presets/internal/helpers.ts b/lib/config/presets/internal/helpers.ts
new file mode 100644
index 0000000000..b7a1c81e7d
--- /dev/null
+++ b/lib/config/presets/internal/helpers.ts
@@ -0,0 +1,31 @@
+import { Preset } from '../common';
+
+export const presets: Record<string, Preset> = {
+  disableTypesNodeMajor: {
+    packageRules: [
+      {
+        packageNames: ['@types/node'],
+        major: {
+          enabled: false,
+        },
+      },
+    ],
+  },
+  oddIsUnstable: {
+    description: 'DEPRECATED: Odd version numbers are classified as unstable',
+  },
+  oddIsUnstablePackages: {
+    description:
+      'DEPRECATED: Preconfigure dependencies where an odd major version indicates unstable (Docker-only)',
+  },
+  followTypescriptNext: {
+    description:
+      'Keep <typescript> version in sync with the <code>next</code> tag',
+    extends: [':followTag(typescript, next)'],
+  },
+  followTypescriptRc: {
+    description:
+      'Keep <typescript> version in sync with the <code>rc</code> tag',
+    extends: [':followTag(typescript, rc)'],
+  },
+};
diff --git a/lib/config/presets/internal/index.spec.ts b/lib/config/presets/internal/index.spec.ts
new file mode 100644
index 0000000000..5fd357df31
--- /dev/null
+++ b/lib/config/presets/internal/index.spec.ts
@@ -0,0 +1,22 @@
+import * as internal from '.';
+import { validateConfig } from '../../validation';
+import { massageConfig } from '../../massage';
+
+jest.mock('../../../datasource/npm');
+
+const ignoredPresets = ['default:group', 'default:timezone'];
+
+describe('config/presets/internal', () => {
+  for (const [groupName, groupPresets] of Object.entries(internal.groups)) {
+    for (const [presetName, presetConfig] of Object.entries(groupPresets)) {
+      const preset = `${groupName}:${presetName}`;
+      if (presetName !== 'description' && !ignoredPresets.includes(preset)) {
+        it(`${preset} validates`, async () => {
+          const res = await validateConfig(massageConfig(presetConfig), true);
+          expect(res.errors).toHaveLength(0);
+          expect(res.warnings).toHaveLength(0);
+        });
+      }
+    }
+  }
+});
diff --git a/lib/config/presets/internal/index.ts b/lib/config/presets/internal/index.ts
new file mode 100644
index 0000000000..2f1dfe82d2
--- /dev/null
+++ b/lib/config/presets/internal/index.ts
@@ -0,0 +1,29 @@
+import { Preset } from '../common';
+import * as configPreset from './config';
+import * as defaultPreset from './default';
+import * as dockerPreset from './docker';
+import * as groupPreset from './group';
+import * as helpersPreset from './helpers';
+import * as monorepoPreset from './monorepo';
+import * as packagesPreset from './packages';
+import * as previewPreset from './preview';
+import * as schedulePreset from './schedule';
+
+export const groups: Record<string, Record<string, Preset>> = {
+  config: configPreset.presets,
+  default: defaultPreset.presets,
+  docker: dockerPreset.presets,
+  group: groupPreset.presets,
+  helpers: helpersPreset.presets,
+  monorepo: monorepoPreset.presets,
+  packages: packagesPreset.presets,
+  preview: previewPreset.presets,
+  schedule: schedulePreset.presets,
+};
+
+export function getPreset(
+  pkgName: string,
+  presetName: string
+): Preset | undefined {
+  return groups[pkgName] ? groups[pkgName][presetName] : undefined;
+}
diff --git a/lib/config/presets/internal/monorepo.ts b/lib/config/presets/internal/monorepo.ts
new file mode 100644
index 0000000000..3f887bcb6f
--- /dev/null
+++ b/lib/config/presets/internal/monorepo.ts
@@ -0,0 +1,134 @@
+import is from '@sindresorhus/is';
+import { Preset } from '../common';
+
+const repoGroups = {
+  'ag-grid': 'https://github.com/ag-grid/ag-grid',
+  'arcus event-grid': 'https://github.com/arcus-azure/arcus.eventgrid',
+  'arcus security': 'https://github.com/arcus-azure/arcus.security',
+  'arcus messaging': 'https://github.com/arcus-azure/arcus.messaging',
+  'arcus observability': 'https://github.com/arcus-azure/arcus.observability',
+  'arcus webapi': 'https://github.com/arcus-azure/arcus.webapi',
+  'arcus background-jobs':
+    'https://github.com/arcus-azure/arcus.backgroundjobs',
+  'algolia-react-instantsearch':
+    'https://github.com/algolia/react-instantsearch',
+  'apollo-server': 'https://github.com/apollographql/apollo-server',
+  'aspnet AspNetWebStack': 'https://github.com/aspnet/AspNetWebStack',
+  'aspnet Extensions': 'https://github.com/aspnet/Extensions',
+  'aws-cdk': 'https://github.com/aws/aws-cdk',
+  'azure azure-libraries-for-net':
+    'https://github.com/Azure/azure-libraries-for-net',
+  'azure azure-sdk-for-net': 'https://github.com/Azure/azure-sdk-for-net',
+  'azure azure-storage-net': 'https://github.com/Azure/azure-storage-net',
+  'bugsnag-js': 'https://github.com/bugsnag/bugsnag-js',
+  'devextreme-reactive': 'https://github.com/DevExpress/devextreme-reactive',
+  'electron-forge': 'https://github.com/electron-userland/electron-forge',
+  'ember-decorators': 'https://github.com/ember-decorators/ember-decorators',
+  'graphql-modules': 'https://github.com/Urigo/graphql-modules',
+  'ionic-native': 'https://github.com/ionic-team/ionic-native',
+  'mdc-react': 'material-components/material-components-web-react',
+  'ngx-formly': 'https://github.com/ngx-formly/ngx-formly',
+  'ngxs-store': 'https://github.com/ngxs/store',
+  'react-apollo': 'https://github.com/apollographql/react-apollo',
+  'react-dnd': 'https://github.com/react-dnd/react-dnd',
+  'react-navigation': 'https://github.com/react-navigation/react-navigation',
+  'reactivestack-cookies': 'https://github.com/reactivestack/cookies',
+  'semantic-release': 'https://github.com/semantic-release/',
+  'telus-tds': 'https://github.com/telusdigital/tds',
+  'typescript-eslint': 'https://github.com/typescript-eslint/typescript-eslint',
+  'typography-js': 'https://github.com/KyleAMathews/typography.js',
+  'vue-cli': 'https://github.com/vuejs/vue-cli',
+  accounts: 'https://github.com/accounts-js/accounts',
+  angular1: 'https://github.com/angular/angular.js',
+  angular: 'https://github.com/angular/angular',
+  angularcli: 'https://github.com/angular/angular-cli',
+  apolloclient: 'https://github.com/apollographql/apollo-client',
+  apollolink: 'https://github.com/apollographql/apollo-link',
+  awsappsync: 'https://github.com/awslabs/aws-mobile-appsync-sdk-js',
+  babel: 'https://github.com/babel/babel',
+  baset: 'https://github.com/igmat/baset',
+  brave: 'https://github.com/openzipkin/brave',
+  capacitor: 'https://github.com/ionic-team/capacitor',
+  clarity: 'https://github.com/vmware/clarity',
+  commitlint: 'https://github.com/conventional-changelog/commitlint',
+  dropwizard: 'https://github.com/dropwizard/dropwizard',
+  emotion: 'https://github.com/emotion-js/emotion',
+  expo: 'https://github.com/expo/expo',
+  fimbullinter: 'https://github.com/fimbullinter/wotan',
+  flopflip: 'https://github.com/tdeekens/flopflip',
+  framework7: 'https://github.com/framework7io/framework7',
+  gatsby: 'https://github.com/gatsbyjs/gatsby',
+  graphqlcodegenerator: [
+    'https://github.com/dotansimha/graphql-code-generator',
+    'https://github.com/dotansimha/graphql-codegen',
+  ],
+  'graphql-toolkit': 'https://github.com/ardatan/graphql-toolkit',
+  hamcrest: 'https://github.com/hamcrest/JavaHamcrest',
+  hapijs: 'https://github.com/hapijs',
+  infrastructure: 'https://github.com/instructure/instructure-ui',
+  jasmine: 'https://github.com/jasmine/jasmine',
+  jersey: 'https://github.com/eclipse-ee4j/jersey',
+  jest: 'https://github.com/facebook/jest',
+  lerna: 'https://github.com/lerna/lerna',
+  lingui: 'https://github.com/lingui/js-lingui',
+  lodash: 'https://github.com/lodash/',
+  loopback: 'https://github.com/strongloop/loopback-next',
+  material: 'https://github.com/material-components/material-components-web',
+  mdx: 'https://github.com/mdx-js/mdx',
+  mui: 'https://github.com/mui-org/material-ui',
+  nest: 'https://github.com/nestjs/nest',
+  neutrino: [
+    'https://github.com/neutrinojs/neutrino',
+    'https://github.com/mozilla-neutrino/neutrino-dev',
+  ],
+  nextjs: 'https://github.com/zeit/next.js',
+  ngrx: 'https://github.com/ngrx/',
+  nrwl: 'https://github.com/nrwl/',
+  nuxtjs: 'https://github.com/nuxt/nuxt.js',
+  openfeign: 'https://github.com/OpenFeign/feign',
+  picasso: 'https://github.com/qlik-oss/picasso.js',
+  pollyjs: 'https://github.com/Netflix/pollyjs',
+  pouchdb: 'https://github.com/pouchdb/pouchdb',
+  react: 'https://github.com/facebook/react',
+  reactrouter: 'https://github.com/ReactTraining/react-router',
+  reakit: 'https://github.com/reakit/reakit',
+  remark: 'https://github.com/remarkjs/remark',
+  router5: 'https://github.com/router5/router5',
+  sentry: 'https://github.com/getsentry/sentry-javascript',
+  springfox: 'https://github.com/springfox/springfox',
+  sanity: 'https://github.com/sanity-io/sanity',
+  storybook: 'https://github.com/storybookjs/storybook',
+  strapi: 'https://github.com/strapi/strapi',
+  stryker: 'https://github.com/stryker-mutator/stryker',
+  surveyjs: 'https://github.com/surveyjs/surveyjs',
+  Swashbuckle: 'https://github.com/domaindrivendev/Swashbuckle.AspNetCore',
+  treat: 'https://github.com/seek-oss/treat',
+  typefaces: 'https://github.com/KyleAMathews/typefaces',
+  uppy: 'https://github.com/transloadit/uppy',
+  vue: 'https://github.com/vuejs/vue',
+  vuepress: 'https://github.com/vuejs/vuepress',
+  webdriverio: 'https://github.com/webdriverio/webdriverio',
+  workbox: 'https://github.com/googlechrome/workbox',
+};
+
+const patternGroups = {
+  babel6: '^babel6$',
+  wordpress: '^@wordpress/',
+  angularmaterial: ['^@angular/material', '^@angular/cdk'],
+  'aws-java-sdk': '^com.amazonaws:aws-java-sdk-',
+};
+
+export const presets: Record<string, Preset> = {};
+
+for (const [name, value] of Object.entries(repoGroups)) {
+  presets[name] = {
+    description: `${name} monorepo`,
+    sourceUrlPrefixes: is.array(value) ? value : [value],
+  };
+}
+for (const [name, value] of Object.entries(patternGroups)) {
+  presets[name] = {
+    description: `${name} monorepo`,
+    packagePatterns: is.array(value) ? value : [value],
+  };
+}
diff --git a/lib/config/presets/internal/packages.ts b/lib/config/presets/internal/packages.ts
new file mode 100644
index 0000000000..af8b8dd897
--- /dev/null
+++ b/lib/config/presets/internal/packages.ts
@@ -0,0 +1,81 @@
+import { Preset } from '../common';
+
+export const presets: Record<string, Preset> = {
+  angularJs: {
+    description: 'All angular.js packages',
+    packageNames: [
+      'angular',
+      'angular-animate',
+      'angular-scroll',
+      'angular-sanitize',
+    ],
+  },
+  apollographql: {
+    description: 'All packages published by Apollo GraphQL',
+    sourceUrlPrefixes: ['https://github.com/apollographql/'],
+  },
+  mapbox: {
+    description: 'All mapbox-related packages',
+    packagePatterns: ['^(leaflet|mapbox)'],
+  },
+  eslint: {
+    description: 'All eslint packages',
+    packageNames: ['babel-eslint'],
+    packagePatterns: ['^eslint'],
+  },
+  stylelint: {
+    description: 'All stylelint packages',
+    packagePatterns: ['^stylelint'],
+  },
+  tslint: {
+    description: 'All tslint packages',
+    packageNames: ['codelyzer'],
+    packagePatterns: ['\\btslint\\b'],
+  },
+  linters: {
+    description: 'All lint-related packages',
+    extends: ['packages:eslint', 'packages:stylelint', 'packages:tslint'],
+    packageNames: ['remark-lint'],
+  },
+  postcss: {
+    description: 'All postcss packages',
+    packageNames: ['postcss'],
+    packagePatterns: ['^postcss-'],
+  },
+  jsUnitTest: {
+    description: 'Unit test packages for javascript',
+    packageNames: [
+      'coveralls',
+      'istanbul',
+      'mock-fs',
+      'nock',
+      'nyc',
+      'proxyquire',
+      'supertest',
+    ],
+    packagePatterns: [
+      '^chai',
+      '^jest',
+      '^mocha',
+      '^qunit',
+      '^sinon',
+      '^should',
+    ],
+  },
+  unitTest: {
+    description: 'All unit test packages',
+    extends: ['packages:jsUnitTest'],
+  },
+  jsTest: {
+    description: 'JavaScript test packages',
+    extends: ['packages:jsUnitTest'],
+  },
+  test: {
+    description: 'Test packages',
+    extends: ['packages:unitTest'],
+  },
+  gatsby: {
+    description: 'All packages published by Gatsby',
+    extends: ['monorepo:gatsby'],
+  },
+};
diff --git a/lib/config/presets/internal/preview.ts b/lib/config/presets/internal/preview.ts
new file mode 100644
index 0000000000..4001bfa981
--- /dev/null
+++ b/lib/config/presets/internal/preview.ts
@@ -0,0 +1,27 @@
+import { Preset } from '../common';
+
+export const presets: Record<string, Preset> = {
+  dockerCompose: {
+    description: 'Enable docker compose image updating',
+    'docker-compose': {
+      enabled: true,
+    },
+  },
+  dockerVersions: {
+    description: 'Upgrade docker tags to newer versions',
+    docker: {
+      major: {
+        enabled: true,
+      },
+      minor: {
+        enabled: true,
+      },
+    },
+  },
+  buildkite: {
+    description: 'Enable buildkite functionality',
+    buildkite: {
+      enabled: true,
+    },
+  },
+};
diff --git a/lib/config/presets/internal/schedule.ts b/lib/config/presets/internal/schedule.ts
new file mode 100644
index 0000000000..6281b100d2
--- /dev/null
+++ b/lib/config/presets/internal/schedule.ts
@@ -0,0 +1,37 @@
+import { Preset } from '../common';
+
+export const presets: Record<string, Preset> = {
+  earlyMondays: {
+    description: 'Weekly schedule on early monday mornings',
+    schedule: ['before 3am on Monday'],
+  },
+  daily: {
+    description: 'Schedule daily',
+    schedule: ['before 2am'],
+  },
+  weekly: {
+    description: 'Schedule weekly',
+    extends: ['schedule:earlyMondays'],
+  },
+  monthly: {
+    description: 'Schedule monthly',
+    schedule: ['before 3am on the first day of the month'],
+  },
+  weekends: {
+    description: 'Schedule for weekends',
+    schedule: ['every weekend'],
+  },
+  weekdays: {
+    description: 'Schedule for weekdays',
+    schedule: ['every weekday'],
+  },
+  nonOfficeHours: {
+    description:
+      'Schedule for typical non-office hours (night time and weekends)',
+    schedule: [
+      'after 10pm every weekday',
+      'before 5am every weekday',
+      'every weekend',
+    ],
+  },
+};
-- 
GitLab