renovate 44.151.4 → 44.152.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/config/defaults.js +3 -1
  2. package/dist/config/defaults.js.map +1 -1
  3. package/dist/config/options/index.js +177 -23
  4. package/dist/config/options/index.js.map +1 -1
  5. package/dist/config/options/scopes.js +75 -0
  6. package/dist/config/options/scopes.js.map +1 -0
  7. package/dist/config/presets/index.js +1 -1
  8. package/dist/config/presets/internal/group.preset.js +13 -0
  9. package/dist/config/presets/internal/group.preset.js.map +1 -1
  10. package/dist/config/types.d.ts +36 -1
  11. package/dist/config/types.js +14 -1
  12. package/dist/config/types.js.map +1 -1
  13. package/dist/config/validation.js +12 -5
  14. package/dist/config/validation.js.map +1 -1
  15. package/dist/data/monorepo.js +1 -0
  16. package/dist/data/replacements.js +10 -0
  17. package/dist/global-config-option-defaults.generated.js +1 -1
  18. package/dist/global-config-option-defaults.generated.js.map +1 -1
  19. package/dist/modules/datasource/artifactory/index.js +1 -1
  20. package/dist/modules/datasource/aws-eks-addon/index.js +1 -1
  21. package/dist/modules/datasource/aws-machine-image/index.js +1 -1
  22. package/dist/modules/datasource/bazel/index.js +1 -1
  23. package/dist/modules/datasource/bitrise/index.js +1 -1
  24. package/dist/modules/datasource/conan/index.js +1 -1
  25. package/dist/modules/datasource/conda/index.js +1 -1
  26. package/dist/modules/datasource/crate/index.js +1 -1
  27. package/dist/modules/datasource/deno/index.js +1 -1
  28. package/dist/modules/datasource/devbox/common.js +1 -1
  29. package/dist/modules/datasource/devbox/common.js.map +1 -1
  30. package/dist/modules/datasource/docker/index.js +1 -1
  31. package/dist/modules/datasource/elm-package/index.js +1 -1
  32. package/dist/modules/datasource/endoflife-date/index.js +1 -1
  33. package/dist/modules/datasource/galaxy-collection/index.js +1 -1
  34. package/dist/modules/datasource/gitea-tags/base.js +1 -1
  35. package/dist/modules/datasource/gitlab-packages/index.js +1 -1
  36. package/dist/modules/datasource/gitlab-releases/index.js +1 -1
  37. package/dist/modules/datasource/gitlab-tags/index.js +1 -1
  38. package/dist/modules/datasource/glasskube-packages/index.js +1 -1
  39. package/dist/modules/datasource/go/index.js +1 -1
  40. package/dist/modules/datasource/go/releases-goproxy.js +1 -1
  41. package/dist/modules/datasource/go/timestamp-cache.js +1 -1
  42. package/dist/modules/datasource/helm/index.js +1 -1
  43. package/dist/modules/datasource/hermit/index.js +1 -1
  44. package/dist/modules/datasource/hex/index.js +1 -1
  45. package/dist/modules/datasource/index.js +1 -1
  46. package/dist/modules/datasource/jsr/index.js +1 -1
  47. package/dist/modules/datasource/maven/index.js +1 -1
  48. package/dist/modules/datasource/nuget/v3.js +1 -1
  49. package/dist/modules/datasource/orb/index.js +1 -1
  50. package/dist/modules/datasource/packagist/index.js +1 -1
  51. package/dist/modules/datasource/repology/index.js +1 -1
  52. package/dist/modules/datasource/rubygems/index.js +1 -1
  53. package/dist/modules/datasource/rubygems/metadata-cache.js +1 -1
  54. package/dist/modules/datasource/sbt-package/index.js +1 -1
  55. package/dist/modules/datasource/terraform-module/index.js +1 -1
  56. package/dist/modules/datasource/terraform-provider/index.js +1 -1
  57. package/dist/modules/manager/fingerprint.generated.js +1 -1
  58. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  59. package/dist/modules/manager/github-actions/extract.js +1 -1
  60. package/dist/modules/manager/github-actions/known-actions/github-releases.js +1 -1
  61. package/dist/modules/manager/github-actions/known-actions/github-releases.js.map +1 -1
  62. package/dist/modules/platform/gitea/pr-cache.js +7 -7
  63. package/dist/modules/platform/gitea/pr-cache.js.map +1 -1
  64. package/dist/util/cache/package/index.js +1 -1
  65. package/dist/util/exec/containerbase.js +7 -1
  66. package/dist/util/exec/containerbase.js.map +1 -1
  67. package/dist/util/exec/index.js +1 -1
  68. package/dist/util/http/cache/package-http-cache-provider.js +1 -1
  69. package/dist/util/jsonata.js +1 -1
  70. package/dist/util/merge-confidence/index.js +1 -1
  71. package/dist/workers/repository/changelog/index.js +1 -0
  72. package/dist/workers/repository/changelog/index.js.map +1 -1
  73. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +1 -1
  74. package/dist/workers/repository/update/pr/changelog/release-notes.js +1 -1
  75. package/dist/workers/repository/update/pr/changelog/source.js +1 -1
  76. package/dist/workers/repository/update/pr/changelog/types.d.ts +2 -0
  77. package/dist/workers/repository/update/pr/index.js +4 -2
  78. package/dist/workers/repository/update/pr/index.js.map +1 -1
  79. package/package.json +4 -4
  80. package/renovate-schema.json +35663 -4971
@@ -1,11 +1,56 @@
1
1
  import { PLATFORM_HOST_TYPES } from "../../constants/platforms.js";
2
2
  import { managerDefaultConfigs } from "../../manager-default-configs.generated.js";
3
- import { AllManagersListLiteral } from "../../manager-list.generated.js";
3
+ import { getSupportedToolNames } from "../../util/exec/containerbase.js";
4
+ import { additionalConstraintDefinitions, toolDefinitionDocumentation } from "../../util/exec/types.js";
4
5
  import { AllVersioningsListLiteral } from "../../versioning-list.generated.js";
5
6
  import { supportedDatasources } from "../presets/internal/merge-confidence.preset.js";
6
- import { UpdateTypesOptions, allowedStatusCheckWhenValues } from "../types.js";
7
+ import { allowedStatusCheckStrings, allowedStatusCheckWhenValues } from "../types.js";
8
+ import { lookupScopes, sharedScopes } from "./scopes.js";
7
9
  import { isArray, isObject } from "@sindresorhus/is";
8
10
  //#region lib/config/options/index.ts
11
+ /**
12
+ * The constraints which a Containerbase tool defines, as the keys of an object option.
13
+ */
14
+ function toolConstraintProperties() {
15
+ const properties = {};
16
+ for (const toolName of getSupportedToolNames()) {
17
+ const description = toolDefinitionDocumentation.find((t) => t.name === toolName)?.description ?? "";
18
+ const base = `A constraint for the \`${toolName}\` Containerbase tool`;
19
+ properties[toolName] = {
20
+ type: "string",
21
+ description: description ? `${base}. ${description}` : base
22
+ };
23
+ }
24
+ return properties;
25
+ }
26
+ /**
27
+ * The constraints which aren't a Containerbase tool, as the keys of an object option.
28
+ */
29
+ function additionalConstraintProperties() {
30
+ const properties = {};
31
+ for (const { name, description } of additionalConstraintDefinitions) properties[name] = {
32
+ type: "string",
33
+ /* v8 ignore next -- every current `additionalConstraintDefinitions` entry has a description, but the type allows one to be added without one */
34
+ description: description ?? `A constraint for \`${name}\``
35
+ };
36
+ return properties;
37
+ }
38
+ /**
39
+ * The Containerbase tools which can be installed, as the keys of an object option.
40
+ */
41
+ function installToolProperties() {
42
+ const properties = {};
43
+ for (const toolName of getSupportedToolNames()) {
44
+ const description = toolDefinitionDocumentation.find((t) => t.name === toolName)?.description ?? "";
45
+ const base = `A constraint for the \`${toolName}\` Containerbase tool`;
46
+ properties[toolName] = {
47
+ type: "object",
48
+ description: description ? `${base}. ${description}` : base,
49
+ additionalProperties: false
50
+ };
51
+ }
52
+ return properties;
53
+ }
9
54
  const options = [
10
55
  {
11
56
  name: "mode",
@@ -230,11 +275,8 @@ const options = [
230
275
  type: "object",
231
276
  parents: ["postUpgradeTasks"],
232
277
  default: {},
233
- additionalProperties: {
234
- type: "object",
235
- properties: {},
236
- additionalProperties: false
237
- },
278
+ properties: installToolProperties(),
279
+ additionalProperties: false,
238
280
  mergeable: false,
239
281
  freeChoice: true,
240
282
  cli: false
@@ -327,6 +369,7 @@ const options = [
327
369
  },
328
370
  {
329
371
  name: "configMigration",
372
+ scopes: ["repo"],
330
373
  description: "Enable this to get config migration PRs when needed.",
331
374
  stage: "repository",
332
375
  type: "boolean",
@@ -375,7 +418,8 @@ const options = [
375
418
  type: "object",
376
419
  mergeable: true,
377
420
  advancedUse: true,
378
- additionalProperties: { type: ["string", "null"] },
421
+ properties: Object.fromEntries(allowedStatusCheckStrings.map((statusCheck) => [statusCheck, { type: ["string", "null"] }])),
422
+ additionalProperties: false,
379
423
  default: {
380
424
  artifactError: "renovate/artifacts",
381
425
  configValidation: "renovate/config-validation",
@@ -389,10 +433,11 @@ const options = [
389
433
  type: "object",
390
434
  mergeable: true,
391
435
  advancedUse: true,
392
- additionalProperties: {
436
+ properties: Object.fromEntries(allowedStatusCheckStrings.map((statusCheck) => [statusCheck, {
393
437
  type: "string",
394
438
  enum: [...allowedStatusCheckWhenValues]
395
- },
439
+ }])),
440
+ additionalProperties: false,
396
441
  default: {
397
442
  artifactError: "failed",
398
443
  configValidation: "always",
@@ -473,14 +518,13 @@ const options = [
473
518
  stage: "package",
474
519
  type: "boolean",
475
520
  default: true,
476
- parents: [
477
- ".",
478
- "packageRules",
479
- ...AllManagersListLiteral,
480
- "hostRules",
481
- "vulnerabilityAlerts",
482
- ...UpdateTypesOptions
483
- ]
521
+ scopes: [
522
+ "repo",
523
+ "packageRule",
524
+ "manager",
525
+ "updateType"
526
+ ],
527
+ parents: ["hostRules", "vulnerabilityAlerts"]
484
528
  },
485
529
  {
486
530
  name: "constraintsFiltering",
@@ -567,6 +611,7 @@ const options = [
567
611
  },
568
612
  {
569
613
  name: "draftPR",
614
+ scopes: sharedScopes,
570
615
  description: "If set to `true` then Renovate creates draft PRs, instead of normal status PRs.",
571
616
  type: "boolean",
572
617
  default: false,
@@ -594,6 +639,7 @@ const options = [
594
639
  },
595
640
  {
596
641
  name: "printConfig",
642
+ scopes: ["repo"],
597
643
  description: "If enabled, Renovate logs the fully resolved config for each repository, plus the fully resolved presets.",
598
644
  type: "boolean",
599
645
  default: false
@@ -667,6 +713,7 @@ const options = [
667
713
  experimental: true,
668
714
  experimentalIssues: [23286],
669
715
  default: {},
716
+ additionalProperties: { type: "object" },
670
717
  mergeable: true
671
718
  },
672
719
  {
@@ -688,7 +735,7 @@ const options = [
688
735
  name: "dockerSidecarImage",
689
736
  description: "Change this value to override the default Renovate sidecar image.",
690
737
  type: "string",
691
- default: "ghcr.io/renovatebot/base-image:13.119.2",
738
+ default: "ghcr.io/renovatebot/base-image:13.120.0",
692
739
  globalOnly: true,
693
740
  deprecationMsg: "The usage of `binarySource=docker` is deprecated, and will be removed in the future"
694
741
  },
@@ -758,6 +805,7 @@ const options = [
758
805
  },
759
806
  {
760
807
  name: "forkProcessing",
808
+ scopes: ["repo"],
761
809
  description: "Whether to process forked repositories. By default, all forked repositories are skipped when in `autodiscover` mode.",
762
810
  stage: "repository",
763
811
  type: "string",
@@ -880,24 +928,28 @@ const options = [
880
928
  },
881
929
  {
882
930
  name: "dependencyDashboard",
931
+ scopes: ["repo"],
883
932
  description: "Whether to create a \"Dependency Dashboard\" issue in the repository.",
884
933
  type: "boolean",
885
934
  default: false
886
935
  },
887
936
  {
888
937
  name: "dependencyDashboardApproval",
938
+ scopes: sharedScopes,
889
939
  description: "Controls if updates need manual approval from the Dependency Dashboard issue before PRs are created.",
890
940
  type: "boolean",
891
941
  default: false
892
942
  },
893
943
  {
894
944
  name: "dependencyDashboardAutoclose",
945
+ scopes: ["repo"],
895
946
  description: "Set to `true` to let Renovate close the Dependency Dashboard issue if there are no more updates.",
896
947
  type: "boolean",
897
948
  default: false
898
949
  },
899
950
  {
900
951
  name: "dependencyDashboardTitle",
952
+ scopes: ["repo"],
901
953
  description: "Title for the Dependency Dashboard issue.",
902
954
  type: "string",
903
955
  default: `Dependency Dashboard`
@@ -912,6 +964,7 @@ const options = [
912
964
  },
913
965
  {
914
966
  name: "dependencyDashboardHeader",
967
+ scopes: ["repo"],
915
968
  description: "Any text added here will be placed first in the Dependency Dashboard issue body.",
916
969
  type: "string",
917
970
  default: "This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more.",
@@ -919,12 +972,14 @@ const options = [
919
972
  },
920
973
  {
921
974
  name: "dependencyDashboardFooter",
975
+ scopes: ["repo"],
922
976
  description: "Any text added here will be placed last in the Dependency Dashboard issue body, with a divider separator before it.",
923
977
  type: "string",
924
978
  supportsTemplating: true
925
979
  },
926
980
  {
927
981
  name: "dependencyDashboardLabels",
982
+ scopes: ["repo"],
928
983
  description: "These labels will always be applied on the Dependency Dashboard issue, even when they have been removed manually.",
929
984
  type: "array",
930
985
  subType: "string",
@@ -932,6 +987,7 @@ const options = [
932
987
  },
933
988
  {
934
989
  name: "dependencyDashboardOSVVulnerabilitySummary",
990
+ scopes: ["repo"],
935
991
  description: "Control if the Dependency Dashboard issue lists CVEs supplied by [osv.dev](https://osv.dev).",
936
992
  type: "string",
937
993
  allowedValues: [
@@ -944,6 +1000,7 @@ const options = [
944
1000
  },
945
1001
  {
946
1002
  name: "configWarningReuseIssue",
1003
+ scopes: ["repo"],
947
1004
  description: "Set this to `true` to make Renovate reuse/reopen an existing closed Config Warning issue, instead of opening a new one each time.",
948
1005
  type: "boolean",
949
1006
  default: false
@@ -1236,6 +1293,7 @@ const options = [
1236
1293
  },
1237
1294
  {
1238
1295
  name: "baseBranchPatterns",
1296
+ scopes: ["repo"],
1239
1297
  description: "List of one or more custom base branches defined as exact strings and/or via regex expressions.",
1240
1298
  type: "array",
1241
1299
  subType: "string",
@@ -1244,6 +1302,7 @@ const options = [
1244
1302
  },
1245
1303
  {
1246
1304
  name: "useBaseBranchConfig",
1305
+ scopes: ["repo"],
1247
1306
  description: "Whether to read configuration from base branches instead of only the default branch.",
1248
1307
  type: "string",
1249
1308
  allowedValues: ["merge", "none"],
@@ -1400,6 +1459,7 @@ const options = [
1400
1459
  },
1401
1460
  {
1402
1461
  name: "extractVersion",
1462
+ scopes: lookupScopes,
1403
1463
  description: "A regex (`re2`) to extract a version from a datasource's raw version string.",
1404
1464
  type: "string",
1405
1465
  format: "regex",
@@ -1408,6 +1468,7 @@ const options = [
1408
1468
  },
1409
1469
  {
1410
1470
  name: "versionCompatibility",
1471
+ scopes: lookupScopes,
1411
1472
  description: "A regex (`re2`) with named capture groups to show how version and compatibility are split from a raw version string.",
1412
1473
  type: "string",
1413
1474
  format: "regex",
@@ -1416,6 +1477,7 @@ const options = [
1416
1477
  },
1417
1478
  {
1418
1479
  name: "versioning",
1480
+ scopes: lookupScopes,
1419
1481
  description: "Versioning to use for filtering and comparisons.",
1420
1482
  type: "string",
1421
1483
  allowedValues: [...AllVersioningsListLiteral],
@@ -1424,6 +1486,7 @@ const options = [
1424
1486
  },
1425
1487
  {
1426
1488
  name: "azureWorkItemId",
1489
+ scopes: sharedScopes,
1427
1490
  description: "The id of an existing work item on Azure Boards to link to each PR.",
1428
1491
  type: "integer",
1429
1492
  default: 0,
@@ -1438,6 +1501,7 @@ const options = [
1438
1501
  },
1439
1502
  {
1440
1503
  name: "autoApprove",
1504
+ scopes: sharedScopes,
1441
1505
  description: "Set to `true` to automatically approve PRs.",
1442
1506
  type: "boolean",
1443
1507
  default: false,
@@ -1809,18 +1873,21 @@ const options = [
1809
1873
  },
1810
1874
  {
1811
1875
  name: "pinDigests",
1876
+ scopes: lookupScopes,
1812
1877
  description: "Whether to add digests to Dockerfile source images.",
1813
1878
  type: "boolean",
1814
1879
  default: false
1815
1880
  },
1816
1881
  {
1817
1882
  name: "separateMajorMinor",
1883
+ scopes: lookupScopes,
1818
1884
  description: "If set to `false`, Renovate will upgrade dependencies to their latest release only. Renovate will not separate major or minor branches.",
1819
1885
  type: "boolean",
1820
1886
  default: true
1821
1887
  },
1822
1888
  {
1823
1889
  name: "separateMultipleMajor",
1890
+ scopes: lookupScopes,
1824
1891
  description: "If set to `true`, PRs will be raised separately for each available `major` upgrade version.",
1825
1892
  stage: "package",
1826
1893
  type: "boolean",
@@ -1828,6 +1895,7 @@ const options = [
1828
1895
  },
1829
1896
  {
1830
1897
  name: "separateMultipleMinor",
1898
+ scopes: lookupScopes,
1831
1899
  description: "If set to `true`, Renovate creates separate PRs for each `minor` stream.",
1832
1900
  stage: "package",
1833
1901
  type: "boolean",
@@ -1836,12 +1904,14 @@ const options = [
1836
1904
  },
1837
1905
  {
1838
1906
  name: "separateMinorPatch",
1907
+ scopes: lookupScopes,
1839
1908
  description: "If set to `true`, Renovate will separate `minor` and `patch` updates into separate branches.",
1840
1909
  type: "boolean",
1841
1910
  default: false
1842
1911
  },
1843
1912
  {
1844
1913
  name: "ignoreUnstable",
1914
+ scopes: lookupScopes,
1845
1915
  description: "Ignore versions with unstable SemVer.",
1846
1916
  stage: "package",
1847
1917
  type: "boolean",
@@ -1849,6 +1919,7 @@ const options = [
1849
1919
  },
1850
1920
  {
1851
1921
  name: "ignoreDeprecated",
1922
+ scopes: lookupScopes,
1852
1923
  description: "Avoid upgrading from a non-deprecated version to a deprecated one.",
1853
1924
  stage: "package",
1854
1925
  type: "boolean",
@@ -1856,6 +1927,7 @@ const options = [
1856
1927
  },
1857
1928
  {
1858
1929
  name: "followTag",
1930
+ scopes: lookupScopes,
1859
1931
  description: "If defined, packages will follow this release tag exactly.",
1860
1932
  stage: "package",
1861
1933
  type: "string",
@@ -1865,6 +1937,7 @@ const options = [
1865
1937
  },
1866
1938
  {
1867
1939
  name: "maxMajorIncrement",
1940
+ scopes: lookupScopes,
1868
1941
  description: "Limit the maximum major version increment allowed. Set to 0 to disable.",
1869
1942
  stage: "package",
1870
1943
  type: "integer",
@@ -1874,6 +1947,7 @@ const options = [
1874
1947
  },
1875
1948
  {
1876
1949
  name: "respectLatest",
1950
+ scopes: lookupScopes,
1877
1951
  description: "Ignore versions newer than npm \"latest\" version.",
1878
1952
  stage: "package",
1879
1953
  type: "boolean",
@@ -1881,6 +1955,7 @@ const options = [
1881
1955
  },
1882
1956
  {
1883
1957
  name: "rangeStrategy",
1958
+ scopes: lookupScopes,
1884
1959
  description: "Determines how to modify or update existing ranges.",
1885
1960
  type: "string",
1886
1961
  default: "auto",
@@ -1898,6 +1973,7 @@ const options = [
1898
1973
  },
1899
1974
  {
1900
1975
  name: "branchPrefix",
1976
+ scopes: sharedScopes,
1901
1977
  description: "Prefix to use for all branch names.",
1902
1978
  stage: "branch",
1903
1979
  type: "string",
@@ -1906,6 +1982,7 @@ const options = [
1906
1982
  },
1907
1983
  {
1908
1984
  name: "branchPrefixOld",
1985
+ scopes: sharedScopes,
1909
1986
  description: "Old branchPrefix value to check for existing PRs.",
1910
1987
  stage: "branch",
1911
1988
  type: "string",
@@ -2033,6 +2110,7 @@ const options = [
2033
2110
  },
2034
2111
  {
2035
2112
  name: "semanticCommits",
2113
+ scopes: sharedScopes,
2036
2114
  description: "Enable Semantic Commit prefixes for commits and PR titles.",
2037
2115
  type: "string",
2038
2116
  allowedValues: [
@@ -2044,6 +2122,7 @@ const options = [
2044
2122
  },
2045
2123
  {
2046
2124
  name: "semanticCommitType",
2125
+ scopes: sharedScopes,
2047
2126
  description: "Commit type to use if Semantic Commits is enabled.",
2048
2127
  type: "string",
2049
2128
  default: "chore",
@@ -2051,13 +2130,16 @@ const options = [
2051
2130
  },
2052
2131
  {
2053
2132
  name: "semanticCommitScope",
2133
+ scopes: sharedScopes,
2054
2134
  description: "Commit scope to use if Semantic Commits are enabled.",
2055
2135
  type: "string",
2056
2136
  default: "deps",
2137
+ nullable: true,
2057
2138
  supportsTemplating: true
2058
2139
  },
2059
2140
  {
2060
2141
  name: "commitMessageLowerCase",
2142
+ scopes: sharedScopes,
2061
2143
  description: "Lowercase PR- and commit titles.",
2062
2144
  type: "string",
2063
2145
  allowedValues: ["auto", "never"],
@@ -2065,6 +2147,7 @@ const options = [
2065
2147
  },
2066
2148
  {
2067
2149
  name: "keepUpdatedLabel",
2150
+ scopes: sharedScopes,
2068
2151
  description: "If set, users can add this label to PRs to request they be kept updated with the base branch.",
2069
2152
  type: "string",
2070
2153
  supportedPlatforms: [
@@ -2078,12 +2161,14 @@ const options = [
2078
2161
  },
2079
2162
  {
2080
2163
  name: "rollbackPrs",
2164
+ scopes: lookupScopes,
2081
2165
  description: "Create PRs to roll back versions if the current version is not found in the registry.",
2082
2166
  type: "boolean",
2083
2167
  default: false
2084
2168
  },
2085
2169
  {
2086
2170
  name: "recreateWhen",
2171
+ scopes: sharedScopes,
2087
2172
  description: "Recreate PRs even if same ones were closed previously.",
2088
2173
  type: "string",
2089
2174
  default: "auto",
@@ -2095,6 +2180,7 @@ const options = [
2095
2180
  },
2096
2181
  {
2097
2182
  name: "rebaseWhen",
2183
+ scopes: sharedScopes,
2098
2184
  description: "Controls when Renovate rebases an existing branch.",
2099
2185
  type: "string",
2100
2186
  allowedValues: [
@@ -2108,12 +2194,14 @@ const options = [
2108
2194
  },
2109
2195
  {
2110
2196
  name: "rebaseLabel",
2197
+ scopes: sharedScopes,
2111
2198
  description: "Label to request a rebase from Renovate.",
2112
2199
  type: "string",
2113
2200
  default: "rebase"
2114
2201
  },
2115
2202
  {
2116
2203
  name: "stopUpdatingLabel",
2204
+ scopes: sharedScopes,
2117
2205
  description: "Label to make Renovate stop updating a PR.",
2118
2206
  type: "string",
2119
2207
  default: "stop-updating",
@@ -2128,12 +2216,14 @@ const options = [
2128
2216
  },
2129
2217
  {
2130
2218
  name: "minimumReleaseAge",
2219
+ scopes: [...lookupScopes, "updateType"],
2131
2220
  description: "Time required before a new release is considered stable.",
2132
2221
  type: "string",
2133
2222
  default: null
2134
2223
  },
2135
2224
  {
2136
2225
  name: "minimumReleaseAgeBehaviour",
2226
+ scopes: [...lookupScopes, "updateType"],
2137
2227
  description: "When set in conjunction with `minimumReleaseAge`, controls whether the `releaseTimestamp` for a dependency update is required.",
2138
2228
  type: "string",
2139
2229
  default: "timestamp-required",
@@ -2141,9 +2231,11 @@ const options = [
2141
2231
  },
2142
2232
  {
2143
2233
  name: "minimumReleaseAgeBuffer",
2234
+ scopes: [...lookupScopes, "updateType"],
2144
2235
  description: "Extra time added to `minimumReleaseAge` before an update is considered stable.",
2145
2236
  type: "string",
2146
- default: "30 minutes"
2237
+ default: "30 minutes",
2238
+ nullable: true
2147
2239
  },
2148
2240
  {
2149
2241
  name: "abandonmentThreshold",
@@ -2153,6 +2245,7 @@ const options = [
2153
2245
  },
2154
2246
  {
2155
2247
  name: "dependencyDashboardReportAbandonment",
2248
+ scopes: ["repo"],
2156
2249
  description: "Controls whether abandoned packages are reported in the dependency dashboard.",
2157
2250
  type: "boolean",
2158
2251
  default: true
@@ -2165,6 +2258,7 @@ const options = [
2165
2258
  },
2166
2259
  {
2167
2260
  name: "internalChecksFilter",
2261
+ scopes: [...lookupScopes, "updateType"],
2168
2262
  description: "When and how to filter based on internal checks.",
2169
2263
  type: "string",
2170
2264
  allowedValues: [
@@ -2185,6 +2279,7 @@ const options = [
2185
2279
  },
2186
2280
  {
2187
2281
  name: "prCreation",
2282
+ scopes: sharedScopes,
2188
2283
  description: "When to create the PR for a branch.",
2189
2284
  type: "string",
2190
2285
  allowedValues: [
@@ -2197,6 +2292,7 @@ const options = [
2197
2292
  },
2198
2293
  {
2199
2294
  name: "prNotPendingHours",
2295
+ scopes: sharedScopes,
2200
2296
  description: "Timeout in hours for when `prCreation=not-pending`.",
2201
2297
  type: "integer",
2202
2298
  default: 25
@@ -2269,6 +2365,7 @@ const options = [
2269
2365
  },
2270
2366
  {
2271
2367
  name: "bbAutoResolvePrTasks",
2368
+ scopes: sharedScopes,
2272
2369
  description: "The PR tasks will be automatically completed after the PR is raised.",
2273
2370
  type: "boolean",
2274
2371
  default: false,
@@ -2276,6 +2373,7 @@ const options = [
2276
2373
  },
2277
2374
  {
2278
2375
  name: "bbUseDefaultReviewers",
2376
+ scopes: sharedScopes,
2279
2377
  description: "Use the default reviewers (Bitbucket only).",
2280
2378
  type: "boolean",
2281
2379
  default: true,
@@ -2380,6 +2478,7 @@ const options = [
2380
2478
  },
2381
2479
  {
2382
2480
  name: "osvVulnerabilityAlerts",
2481
+ scopes: ["repo"],
2383
2482
  description: "Use vulnerability alerts from `osv.dev`.",
2384
2483
  type: "boolean",
2385
2484
  default: false,
@@ -2388,12 +2487,14 @@ const options = [
2388
2487
  },
2389
2488
  {
2390
2489
  name: "pruneBranchAfterAutomerge",
2490
+ scopes: sharedScopes,
2391
2491
  description: "Set to `true` to enable branch pruning after automerging.",
2392
2492
  type: "boolean",
2393
2493
  default: true
2394
2494
  },
2395
2495
  {
2396
2496
  name: "branchName",
2497
+ scopes: sharedScopes,
2397
2498
  description: "Branch name template.",
2398
2499
  type: "string",
2399
2500
  default: "{{{branchPrefix}}}{{{additionalBranchPrefix}}}{{{branchTopic}}}",
@@ -2403,6 +2504,7 @@ const options = [
2403
2504
  },
2404
2505
  {
2405
2506
  name: "additionalBranchPrefix",
2507
+ scopes: sharedScopes,
2406
2508
  description: "Additional string value to be appended to `branchPrefix`.",
2407
2509
  type: "string",
2408
2510
  default: "",
@@ -2411,6 +2513,7 @@ const options = [
2411
2513
  },
2412
2514
  {
2413
2515
  name: "branchTopic",
2516
+ scopes: sharedScopes,
2414
2517
  description: "Branch topic.",
2415
2518
  type: "string",
2416
2519
  default: "{{{depNameSanitized}}}-{{{newMajor}}}{{#if separateMinorPatch}}{{#if isPatch}}.{{{newMinor}}}{{/if}}{{/if}}{{#if separateMultipleMinor}}{{#if isMinor}}.{{{newMinor}}}{{/if}}{{/if}}.x{{#if isLockfileUpdate}}-lockfile{{/if}}",
@@ -2419,6 +2522,7 @@ const options = [
2419
2522
  },
2420
2523
  {
2421
2524
  name: "commitMessage",
2525
+ scopes: sharedScopes,
2422
2526
  description: "Message to use for commit messages and pull request titles.",
2423
2527
  type: "string",
2424
2528
  default: "{{{commitMessagePrefix}}} {{{commitMessageAction}}} {{{commitMessageTopic}}} {{{commitMessageExtra}}} {{{commitMessageSuffix}}}",
@@ -2428,6 +2532,7 @@ const options = [
2428
2532
  },
2429
2533
  {
2430
2534
  name: "commitBody",
2535
+ scopes: sharedScopes,
2431
2536
  description: "Commit message body template. Will be appended to commit message, separated by two line returns.",
2432
2537
  type: "string",
2433
2538
  cli: false,
@@ -2435,12 +2540,14 @@ const options = [
2435
2540
  },
2436
2541
  {
2437
2542
  name: "commitBodyTable",
2543
+ scopes: sharedScopes,
2438
2544
  description: "If enabled, append a table in the commit message body describing all updates in the commit.",
2439
2545
  type: "boolean",
2440
2546
  default: false
2441
2547
  },
2442
2548
  {
2443
2549
  name: "commitTrailers",
2550
+ scopes: sharedScopes,
2444
2551
  description: "Structured git trailers (`Key: value` lines) to add in the final block of the commit message.",
2445
2552
  type: "array",
2446
2553
  subType: "string",
@@ -2451,6 +2558,7 @@ const options = [
2451
2558
  },
2452
2559
  {
2453
2560
  name: "commitMessagePrefix",
2561
+ scopes: sharedScopes,
2454
2562
  description: "Prefix to add to start of commit messages and PR titles. Uses a semantic prefix if `semanticCommits` is enabled.",
2455
2563
  type: "string",
2456
2564
  cli: false,
@@ -2459,6 +2567,7 @@ const options = [
2459
2567
  },
2460
2568
  {
2461
2569
  name: "commitMessageAction",
2570
+ scopes: sharedScopes,
2462
2571
  description: "Action verb to use in commit messages and PR titles.",
2463
2572
  type: "string",
2464
2573
  default: "Update",
@@ -2468,6 +2577,7 @@ const options = [
2468
2577
  },
2469
2578
  {
2470
2579
  name: "commitMessageTopic",
2580
+ scopes: sharedScopes,
2471
2581
  description: "The upgrade topic/noun used in commit messages and PR titles.",
2472
2582
  type: "string",
2473
2583
  default: "dependency {{depName}}",
@@ -2477,6 +2587,7 @@ const options = [
2477
2587
  },
2478
2588
  {
2479
2589
  name: "commitMessageExtra",
2590
+ scopes: sharedScopes,
2480
2591
  description: "Extra description used after the commit message topic - typically the version.",
2481
2592
  type: "string",
2482
2593
  default: "to {{#if isPinDigest}}{{{newDigestShort}}}{{else}}{{#if isMajor}}{{prettyNewMajor}}{{else}}{{#if isSingleVersion}}{{prettyNewVersion}}{{else}}{{#if newValue}}{{{newValue}}}{{else}}{{{newDigestShort}}}{{/if}}{{/if}}{{/if}}{{/if}}",
@@ -2486,6 +2597,7 @@ const options = [
2486
2597
  },
2487
2598
  {
2488
2599
  name: "commitMessageSuffix",
2600
+ scopes: sharedScopes,
2489
2601
  description: "Suffix to add to end of commit messages and PR titles.",
2490
2602
  type: "string",
2491
2603
  cli: false,
@@ -2494,6 +2606,7 @@ const options = [
2494
2606
  },
2495
2607
  {
2496
2608
  name: "prBodyTemplate",
2609
+ scopes: sharedScopes,
2497
2610
  description: "Pull Request body template. Controls which sections are rendered in the body of the pull request.",
2498
2611
  type: "string",
2499
2612
  default: "{{{header}}}{{{table}}}{{{warnings}}}{{{notes}}}{{{changelogs}}}{{{configDescription}}}{{{controls}}}{{{footer}}}",
@@ -2502,6 +2615,7 @@ const options = [
2502
2615
  },
2503
2616
  {
2504
2617
  name: "prTitle",
2618
+ scopes: sharedScopes,
2505
2619
  description: "Pull Request title template. Inherits from `commitMessage` if null.",
2506
2620
  type: "string",
2507
2621
  default: null,
@@ -2511,6 +2625,7 @@ const options = [
2511
2625
  },
2512
2626
  {
2513
2627
  name: "prTitleStrict",
2628
+ scopes: sharedScopes,
2514
2629
  description: "Whether to bypass appending extra context to the Pull Request title.",
2515
2630
  type: "boolean",
2516
2631
  default: false,
@@ -2519,12 +2634,14 @@ const options = [
2519
2634
  },
2520
2635
  {
2521
2636
  name: "prHeader",
2637
+ scopes: sharedScopes,
2522
2638
  description: "Text added here will be placed first in the PR body.",
2523
2639
  type: "string",
2524
2640
  supportsTemplating: true
2525
2641
  },
2526
2642
  {
2527
2643
  name: "prFooter",
2644
+ scopes: sharedScopes,
2528
2645
  description: "Text added here will be placed last in the PR body, with a divider separator before it.",
2529
2646
  type: "string",
2530
2647
  default: `This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).`,
@@ -2532,6 +2649,7 @@ const options = [
2532
2649
  },
2533
2650
  {
2534
2651
  name: "customizeDashboard",
2652
+ scopes: ["repo"],
2535
2653
  description: "Customize sections in the Dependency Dashboard issue.",
2536
2654
  type: "object",
2537
2655
  default: {},
@@ -2559,6 +2677,7 @@ const options = [
2559
2677
  },
2560
2678
  {
2561
2679
  name: "hashedBranchLength",
2680
+ scopes: sharedScopes,
2562
2681
  description: "If enabled, branch names will use a hashing function to ensure each branch has that length.",
2563
2682
  type: "integer",
2564
2683
  default: null,
@@ -2603,6 +2722,7 @@ const options = [
2603
2722
  },
2604
2723
  {
2605
2724
  name: "labels",
2725
+ scopes: sharedScopes,
2606
2726
  description: "Labels to set in Pull Request.",
2607
2727
  type: "array",
2608
2728
  subType: "string",
@@ -2610,6 +2730,7 @@ const options = [
2610
2730
  },
2611
2731
  {
2612
2732
  name: "addLabels",
2733
+ scopes: sharedScopes,
2613
2734
  description: "Labels to add to Pull Request.",
2614
2735
  type: "array",
2615
2736
  subType: "string",
@@ -2618,18 +2739,21 @@ const options = [
2618
2739
  },
2619
2740
  {
2620
2741
  name: "assignees",
2742
+ scopes: sharedScopes,
2621
2743
  description: "Assignees for Pull Request (either username or email address depending on the platform).",
2622
2744
  type: "array",
2623
2745
  subType: "string"
2624
2746
  },
2625
2747
  {
2626
2748
  name: "assigneesFromCodeOwners",
2749
+ scopes: sharedScopes,
2627
2750
  description: "Determine assignees based on configured code owners and changes in PR.",
2628
2751
  type: "boolean",
2629
2752
  default: false
2630
2753
  },
2631
2754
  {
2632
2755
  name: "expandCodeOwnersGroups",
2756
+ scopes: sharedScopes,
2633
2757
  description: "Expand the configured code owner groups into a full list of group members.",
2634
2758
  type: "boolean",
2635
2759
  default: false,
@@ -2637,36 +2761,42 @@ const options = [
2637
2761
  },
2638
2762
  {
2639
2763
  name: "assigneesSampleSize",
2764
+ scopes: sharedScopes,
2640
2765
  description: "Take a random sample of given size from `assignees`.",
2641
2766
  type: "integer",
2642
2767
  default: null
2643
2768
  },
2644
2769
  {
2645
2770
  name: "assignAutomerge",
2771
+ scopes: sharedScopes,
2646
2772
  description: "Assign reviewers and assignees even if the PR is to be automerged.",
2647
2773
  type: "boolean",
2648
2774
  default: false
2649
2775
  },
2650
2776
  {
2651
2777
  name: "ignoreReviewers",
2778
+ scopes: sharedScopes,
2652
2779
  description: "Reviewers to be ignored in PR reviewers presence (either username or email address depending on the platform).",
2653
2780
  type: "array",
2654
2781
  subType: "string"
2655
2782
  },
2656
2783
  {
2657
2784
  name: "reviewers",
2785
+ scopes: sharedScopes,
2658
2786
  description: "Requested reviewers for Pull Requests (either username or email address depending on the platform).",
2659
2787
  type: "array",
2660
2788
  subType: "string"
2661
2789
  },
2662
2790
  {
2663
2791
  name: "reviewersFromCodeOwners",
2792
+ scopes: sharedScopes,
2664
2793
  description: "Determine reviewers based on configured code owners and changes in PR.",
2665
2794
  type: "boolean",
2666
2795
  default: false
2667
2796
  },
2668
2797
  {
2669
2798
  name: "filterUnavailableUsers",
2799
+ scopes: sharedScopes,
2670
2800
  description: "Filter reviewers and assignees based on their availability.",
2671
2801
  type: "boolean",
2672
2802
  default: false,
@@ -2688,12 +2818,14 @@ const options = [
2688
2818
  },
2689
2819
  {
2690
2820
  name: "reviewersSampleSize",
2821
+ scopes: sharedScopes,
2691
2822
  description: "Take a random sample of given size from `reviewers`.",
2692
2823
  type: "integer",
2693
2824
  default: null
2694
2825
  },
2695
2826
  {
2696
2827
  name: "additionalReviewers",
2828
+ scopes: sharedScopes,
2697
2829
  description: "Additional reviewers for Pull Requests (in contrast to `reviewers`, this option adds to the existing reviewer list, rather than replacing it).",
2698
2830
  type: "array",
2699
2831
  subType: "string",
@@ -2710,7 +2842,8 @@ const options = [
2710
2842
  mergeable: true,
2711
2843
  cli: false,
2712
2844
  env: false,
2713
- parents: [...AllManagersListLiteral, "customManagers"]
2845
+ scopes: ["manager"],
2846
+ parents: ["customManagers"]
2714
2847
  },
2715
2848
  {
2716
2849
  name: "postUpdateOptions",
@@ -2763,10 +2896,15 @@ const options = [
2763
2896
  "poetry"
2764
2897
  ],
2765
2898
  freeChoice: true,
2766
- additionalProperties: { type: "string" }
2899
+ properties: {
2900
+ ...toolConstraintProperties(),
2901
+ ...additionalConstraintProperties()
2902
+ },
2903
+ additionalProperties: false
2767
2904
  },
2768
2905
  {
2769
2906
  name: "hostRules",
2907
+ scopes: ["repo"],
2770
2908
  description: "Host rules/configuration including credentials.",
2771
2909
  type: "array",
2772
2910
  subType: "object",
@@ -2991,6 +3129,7 @@ const options = [
2991
3129
  },
2992
3130
  {
2993
3131
  name: "prBodyDefinitions",
3132
+ scopes: sharedScopes,
2994
3133
  description: "Table column definitions to use in PR tables.",
2995
3134
  type: "object",
2996
3135
  freeChoice: true,
@@ -3013,6 +3152,7 @@ const options = [
3013
3152
  },
3014
3153
  {
3015
3154
  name: "prBodyHeadingDefinitions",
3155
+ scopes: sharedScopes,
3016
3156
  description: "Table header definitions to use in PR tables.",
3017
3157
  type: "object",
3018
3158
  freeChoice: true,
@@ -3026,6 +3166,7 @@ const options = [
3026
3166
  },
3027
3167
  {
3028
3168
  name: "prBodyColumns",
3169
+ scopes: sharedScopes,
3029
3170
  description: "List of columns to use in PR bodies.",
3030
3171
  type: "array",
3031
3172
  subType: "string",
@@ -3039,6 +3180,7 @@ const options = [
3039
3180
  },
3040
3181
  {
3041
3182
  name: "prBodyNotes",
3183
+ scopes: sharedScopes,
3042
3184
  description: "List of extra notes or templates to include in the Pull Request body.",
3043
3185
  type: "array",
3044
3186
  subType: "string",
@@ -3049,6 +3191,7 @@ const options = [
3049
3191
  },
3050
3192
  {
3051
3193
  name: "suppressNotifications",
3194
+ scopes: sharedScopes,
3052
3195
  description: "Options to suppress various types of warnings and other notifications.",
3053
3196
  type: "array",
3054
3197
  subType: "string",
@@ -3070,6 +3213,7 @@ const options = [
3070
3213
  },
3071
3214
  {
3072
3215
  name: "pruneStaleBranches",
3216
+ scopes: ["repo"],
3073
3217
  description: "Set to `false` to disable pruning stale branches.",
3074
3218
  type: "boolean",
3075
3219
  default: true
@@ -3083,12 +3227,14 @@ const options = [
3083
3227
  },
3084
3228
  {
3085
3229
  name: "gitLabIgnoreApprovals",
3230
+ scopes: sharedScopes,
3086
3231
  description: `Ignore approval rules for MRs created by Renovate, which is useful for automerge.`,
3087
3232
  type: "boolean",
3088
3233
  default: false
3089
3234
  },
3090
3235
  {
3091
3236
  name: "customManagers",
3237
+ scopes: ["repo"],
3092
3238
  description: "Custom managers using regex matching.",
3093
3239
  type: "array",
3094
3240
  subType: "object",
@@ -3243,12 +3389,14 @@ const options = [
3243
3389
  },
3244
3390
  {
3245
3391
  name: "cloneSubmodules",
3392
+ scopes: ["repo"],
3246
3393
  description: "Set to `true` to initialize submodules during repository clone.",
3247
3394
  type: "boolean",
3248
3395
  default: false
3249
3396
  },
3250
3397
  {
3251
3398
  name: "cloneSubmodulesFilter",
3399
+ scopes: ["repo"],
3252
3400
  description: "List of submodules names or patterns to clone when cloneSubmodules=true.",
3253
3401
  type: "array",
3254
3402
  subType: "string",
@@ -3292,6 +3440,7 @@ const options = [
3292
3440
  },
3293
3441
  {
3294
3442
  name: "updatePinnedDependencies",
3443
+ scopes: lookupScopes,
3295
3444
  description: "Whether to update pinned (single version) dependencies or not.",
3296
3445
  type: "boolean",
3297
3446
  default: true
@@ -3326,6 +3475,7 @@ const options = [
3326
3475
  },
3327
3476
  {
3328
3477
  name: "platformAutomerge",
3478
+ scopes: sharedScopes,
3329
3479
  description: `Controls if platform-native auto-merge is used.`,
3330
3480
  type: "boolean",
3331
3481
  default: true,
@@ -3353,6 +3503,7 @@ const options = [
3353
3503
  },
3354
3504
  {
3355
3505
  name: "platformCommit",
3506
+ scopes: sharedScopes,
3356
3507
  description: "Use platform API to perform commits instead of using Git directly.",
3357
3508
  type: "string",
3358
3509
  default: "auto",
@@ -3365,6 +3516,7 @@ const options = [
3365
3516
  },
3366
3517
  {
3367
3518
  name: "branchNameStrict",
3519
+ scopes: sharedScopes,
3368
3520
  description: `Whether to be strict about the use of special characters within the branch name.`,
3369
3521
  type: "boolean",
3370
3522
  default: false
@@ -3434,6 +3586,7 @@ const options = [
3434
3586
  },
3435
3587
  {
3436
3588
  name: "milestone",
3589
+ scopes: sharedScopes,
3437
3590
  description: `The number of a milestone. If set, the milestone will be set when Renovate creates the PR.`,
3438
3591
  type: "integer",
3439
3592
  default: null,
@@ -3552,7 +3705,8 @@ const options = [
3552
3705
  cli: false,
3553
3706
  env: false,
3554
3707
  freeChoice: true,
3555
- additionalProperties: { type: "string" }
3708
+ properties: additionalConstraintProperties(),
3709
+ additionalProperties: false
3556
3710
  }
3557
3711
  ];
3558
3712
  function getOptions() {