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
@@ -0,0 +1,75 @@
1
+ import { coerceArray } from "../../util/array.js";
2
+ import { UpdateTypesOptions, configScopes } from "../types.js";
3
+ import { AllManagersListLiteral } from "../../manager-list.generated.js";
4
+ //#region lib/config/options/scopes.ts
5
+ const scopeDescriptions = {
6
+ repo: "at the top level of a config",
7
+ packageRule: "in a `packageRules` entry",
8
+ manager: "in a manager's config",
9
+ updateType: "in an update type's config",
10
+ vulnerabilityAlert: "in `vulnerabilityAlerts`",
11
+ group: "in `group`"
12
+ };
13
+ const scopeParents = {
14
+ repo: ["."],
15
+ packageRule: ["packageRules"],
16
+ manager: AllManagersListLiteral,
17
+ updateType: UpdateTypesOptions,
18
+ vulnerabilityAlert: ["vulnerabilityAlerts"],
19
+ group: ["group"]
20
+ };
21
+ /**
22
+ * The scopes of an option which is honoured wherever per-update config is applied, which is most of our options.
23
+ */
24
+ const sharedScopes = [
25
+ "repo",
26
+ "packageRule",
27
+ "manager",
28
+ "updateType",
29
+ "vulnerabilityAlert",
30
+ "group"
31
+ ];
32
+ /**
33
+ * The scopes of an option which is honoured when we look up a dependency's updates.
34
+ *
35
+ * That happens before we know an update's type, and before a group's config is merged in, so an option which shapes the updates we find isn't honoured in either.
36
+ */
37
+ const lookupScopes = [
38
+ "repo",
39
+ "packageRule",
40
+ "manager",
41
+ "vulnerabilityAlert"
42
+ ];
43
+ /**
44
+ * Every object an option can be used in, from the objects it names in `parents` and the kinds of place it names in `scopes`.
45
+ *
46
+ * Returns `undefined` for an option which declares neither, which we treat as being valid anywhere until it's been given its scopes as part of #43020.
47
+ */
48
+ function getAllowedParents(option) {
49
+ if (!option.parents && !option.scopes) return;
50
+ const parents = new Set(option.parents);
51
+ for (const scope of coerceArray(option.scopes)) for (const parent of scopeParents[scope]) parents.add(parent);
52
+ return [...parents];
53
+ }
54
+ /**
55
+ * A human-readable description of the locations that an option can be used.
56
+ *
57
+ * Returns `undefined` for an option which can be used anywhere.
58
+ */
59
+ function describeAllowedLocations(option) {
60
+ if (!getAllowedParents(option)) return;
61
+ const scopes = new Set(coerceArray(option.scopes));
62
+ if (option.parents?.includes(".")) scopes.add("repo");
63
+ const locations = configScopes.filter((scope) => scopes.has(scope)).map((scope) => scopeDescriptions[scope]);
64
+ const parents = coerceArray(option.parents).filter((parent) => parent !== ".").toSorted();
65
+ if (parents.length) locations.push(`in ${joinWithOr(parents.map((parent) => `\`${parent}\``))}`);
66
+ return joinWithOr(locations);
67
+ }
68
+ function joinWithOr(parts) {
69
+ if (parts.length < 2) return parts.join("");
70
+ return `${parts.slice(0, -1).join(", ")} or ${parts.at(-1)}`;
71
+ }
72
+ //#endregion
73
+ export { describeAllowedLocations, getAllowedParents, lookupScopes, sharedScopes };
74
+
75
+ //# sourceMappingURL=scopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes.js","names":[],"sources":["../../../lib/config/options/scopes.ts"],"sourcesContent":["import { AllManagersListLiteral } from '../../manager-list.generated.ts';\nimport { coerceArray } from '../../util/array.ts';\nimport type { AllowedParents, ConfigScope, RenovateOptions } from '../types.ts';\nimport { UpdateTypesOptions, configScopes } from '../types.ts';\n\nconst scopeDescriptions: Record<ConfigScope, string> = {\n repo: 'at the top level of a config',\n packageRule: 'in a `packageRules` entry',\n manager: \"in a manager's config\",\n updateType: \"in an update type's config\",\n vulnerabilityAlert: 'in `vulnerabilityAlerts`',\n group: 'in `group`',\n};\n\nconst scopeParents: Record<ConfigScope, readonly AllowedParents[]> = {\n repo: ['.'],\n packageRule: ['packageRules'],\n manager: AllManagersListLiteral,\n updateType: UpdateTypesOptions,\n vulnerabilityAlert: ['vulnerabilityAlerts'],\n group: ['group'],\n};\n\n/**\n * The scopes of an option which is honoured wherever per-update config is applied, which is most of our options.\n */\nexport const sharedScopes: ConfigScope[] = [\n 'repo',\n 'packageRule',\n 'manager',\n 'updateType',\n 'vulnerabilityAlert',\n 'group',\n];\n\n/**\n * The scopes of an option which is honoured when we look up a dependency's updates.\n *\n * That happens before we know an update's type, and before a group's config is merged in, so an option which shapes the updates we find isn't honoured in either.\n */\nexport const lookupScopes: ConfigScope[] = [\n 'repo',\n 'packageRule',\n 'manager',\n 'vulnerabilityAlert',\n];\n\n/**\n * Every object an option can be used in, from the objects it names in `parents` and the kinds of place it names in `scopes`.\n *\n * Returns `undefined` for an option which declares neither, which we treat as being valid anywhere until it's been given its scopes as part of #43020.\n */\nexport function getAllowedParents(\n option: RenovateOptions,\n): AllowedParents[] | undefined {\n if (!option.parents && !option.scopes) {\n return undefined;\n }\n\n const parents = new Set<AllowedParents>(option.parents);\n for (const scope of coerceArray(option.scopes)) {\n for (const parent of scopeParents[scope]) {\n parents.add(parent);\n }\n }\n\n return [...parents];\n}\n\n/**\n * A human-readable description of the locations that an option can be used.\n *\n * Returns `undefined` for an option which can be used anywhere.\n */\nexport function describeAllowedLocations(\n option: RenovateOptions,\n): string | undefined {\n if (!getAllowedParents(option)) {\n return undefined;\n }\n\n const scopes = new Set(coerceArray(option.scopes));\n if (option.parents?.includes('.')) {\n scopes.add('repo');\n }\n\n const locations = configScopes\n .filter((scope) => scopes.has(scope))\n .map((scope) => scopeDescriptions[scope]);\n\n const parents = coerceArray(option.parents)\n .filter((parent) => parent !== '.')\n .toSorted();\n if (parents.length) {\n locations.push(\n `in ${joinWithOr(parents.map((parent) => `\\`${parent}\\``))}`,\n );\n }\n\n return joinWithOr(locations);\n}\n\nfunction joinWithOr(parts: string[]): string {\n if (parts.length < 2) {\n return parts.join('');\n }\n\n return `${parts.slice(0, -1).join(', ')} or ${parts.at(-1)}`;\n}\n"],"mappings":";;;;AAKA,MAAM,oBAAiD;CACrD,MAAM;CACN,aAAa;CACb,SAAS;CACT,YAAY;CACZ,oBAAoB;CACpB,OAAO;AACT;AAEA,MAAM,eAA+D;CACnE,MAAM,CAAC,GAAG;CACV,aAAa,CAAC,cAAc;CAC5B,SAAS;CACT,YAAY;CACZ,oBAAoB,CAAC,qBAAqB;CAC1C,OAAO,CAAC,OAAO;AACjB;;;;AAKA,MAAa,eAA8B;CACzC;CACA;CACA;CACA;CACA;CACA;AACF;;;;;;AAOA,MAAa,eAA8B;CACzC;CACA;CACA;CACA;AACF;;;;;;AAOA,SAAgB,kBACd,QAC8B;CAC9B,IAAI,CAAC,OAAO,WAAW,CAAC,OAAO,QAC7B;CAGF,MAAM,UAAU,IAAI,IAAoB,OAAO,OAAO;CACtD,KAAK,MAAM,SAAS,YAAY,OAAO,MAAM,GAC3C,KAAK,MAAM,UAAU,aAAa,QAChC,QAAQ,IAAI,MAAM;CAItB,OAAO,CAAC,GAAG,OAAO;AACpB;;;;;;AAOA,SAAgB,yBACd,QACoB;CACpB,IAAI,CAAC,kBAAkB,MAAM,GAC3B;CAGF,MAAM,SAAS,IAAI,IAAI,YAAY,OAAO,MAAM,CAAC;CACjD,IAAI,OAAO,SAAS,SAAS,GAAG,GAC9B,OAAO,IAAI,MAAM;CAGnB,MAAM,YAAY,aACf,QAAQ,UAAU,OAAO,IAAI,KAAK,CAAC,CAAC,CACpC,KAAK,UAAU,kBAAkB,MAAM;CAE1C,MAAM,UAAU,YAAY,OAAO,OAAO,CAAC,CACxC,QAAQ,WAAW,WAAW,GAAG,CAAC,CAClC,SAAS;CACZ,IAAI,QAAQ,QACV,UAAU,KACR,MAAM,WAAW,QAAQ,KAAK,WAAW,KAAK,OAAO,GAAG,CAAC,GAC3D;CAGF,OAAO,WAAW,SAAS;AAC7B;AAEA,SAAS,WAAW,OAAyB;CAC3C,IAAI,MAAM,SAAS,GACjB,OAAO,MAAM,KAAK,EAAE;CAGtB,OAAO,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,MAAM,GAAG,EAAE;AAC3D"}
@@ -5,12 +5,12 @@ import { GlobalConfig } from "../global.js";
5
5
  import { coerceArray } from "../../util/array.js";
6
6
  import { logger } from "../../logger/index.js";
7
7
  import { clone } from "../../util/clone.js";
8
+ import { buildCacheKey } from "../../util/cache/package/key.js";
8
9
  import { massageConfig } from "../massage.js";
9
10
  import { removedPresets } from "./common.js";
10
11
  import { mergeChildConfig } from "../utils.js";
11
12
  import { migrateConfig } from "../migration.js";
12
13
  import { compile } from "../../util/template/index.js";
13
- import { buildCacheKey } from "../../util/cache/package/key.js";
14
14
  import { ExternalHostError } from "../../types/errors/external-host-error.js";
15
15
  import { getPreset as getPreset$1, isInternal } from "./internal/index.js";
16
16
  import { PRESET_DEP_NOT_FOUND, PRESET_RELATIVE_NO_PARENT } from "./util.js";
@@ -68,6 +68,18 @@ const config = {
68
68
  groupName: "Atlassian Atlaskit packages"
69
69
  }]
70
70
  },
71
+ boto: {
72
+ description: "Group all Boto packages together.",
73
+ packageRules: [{
74
+ groupName: "boto",
75
+ matchDatasources: ["pypi"],
76
+ matchPackageNames: [
77
+ "boto3",
78
+ "botocore",
79
+ "s3transfer"
80
+ ]
81
+ }]
82
+ },
71
83
  codemirror: {
72
84
  description: "Group CodeMirror packages together.",
73
85
  packageRules: [{
@@ -392,6 +404,7 @@ const config = {
392
404
  "group:nodeJs",
393
405
  "group:allApollographql",
394
406
  "group:apiPlatform",
407
+ "group:boto",
395
408
  "group:codemirror",
396
409
  "group:flyway",
397
410
  "group:fortawesome",
@@ -1 +1 @@
1
- {"version":3,"file":"group.preset.js","names":["monorepos.presets"],"sources":["../../../../lib/config/presets/internal/group.preset.ts"],"sourcesContent":["import type { Preset } from '../types.ts';\nimport * as monorepos from './monorepos.preset.ts';\n\nconst nonPinUpdateTypes = ['digest', 'patch', 'minor', 'major'];\n\nconst staticGroups = {\n all: {\n description: 'Group all updates together.',\n groupName: 'all dependencies',\n groupSlug: 'all',\n packageRules: [\n {\n groupName: 'all dependencies',\n groupSlug: 'all',\n matchPackageNames: ['*'],\n },\n ],\n\n separateMajorMinor: false,\n },\n allApollographql: {\n description: 'Group all packages published by Apollo GraphQL together.',\n packageRules: [\n {\n extends: ['packages:apollographql'],\n groupName: 'Apollo GraphQL packages',\n },\n ],\n },\n allDigest: {\n description: 'Group all `digest` updates together.',\n packageRules: [\n {\n groupName: 'all digest updates',\n groupSlug: 'all-digest',\n matchPackageNames: ['*'],\n matchUpdateTypes: ['digest'],\n },\n ],\n },\n allNonMajor: {\n description: 'Group all `minor` and `patch` updates together.',\n packageRules: [\n {\n groupName: 'all non-major dependencies',\n groupSlug: 'all-minor-patch',\n matchPackageNames: ['*'],\n matchUpdateTypes: ['minor', 'patch'],\n },\n ],\n },\n apiPlatform: {\n description: 'Group PHP API Platform packages together.',\n packageRules: [\n {\n groupName: 'api-platform packages',\n groupSlug: 'api-platform',\n matchDatasources: ['packagist'],\n matchPackageNames: [\n 'api-platform/*',\n '!api-platform/admin-meta',\n '!api-platform/admin-pack',\n '!api-platform/api-pack',\n '!api-platform/api-platform',\n '!api-platform/parameter-validator',\n '!api-platform/postman-collection-generator',\n '!api-platform/schema-generator',\n ],\n },\n ],\n },\n atlaskit: {\n description: 'Group all Atlassian `@atlaskit` packages together.',\n packageRules: [\n {\n extends: ['packages:atlaskit'],\n groupName: 'Atlassian Atlaskit packages',\n },\n ],\n },\n codemirror: {\n description: 'Group CodeMirror packages together.',\n packageRules: [\n {\n groupName: 'CodeMirror',\n matchPackageNames: ['@codemirror/**'],\n },\n ],\n },\n definitelyTyped: {\n description: 'Group all `@types` packages together.',\n packageRules: [\n {\n groupName: 'definitelyTyped',\n matchPackageNames: ['@types/**'],\n },\n ],\n },\n dotNetCore: {\n description: '.NET Core Docker containers.',\n packageRules: [\n {\n groupName: '.NET Core Docker containers',\n matchDatasources: ['docker'],\n matchPackageNames: ['mcr.microsoft.com/dotnet/**'],\n },\n ],\n },\n 'drupal-core': {\n description: 'Group Drupal core updates.',\n packageRules: [\n {\n groupName: 'Drupal core',\n matchPackageNames: ['drupal/core', 'drupal/core-*'],\n },\n ],\n },\n flyway: {\n description: 'Group Java Flyway packages.',\n packageRules: [\n {\n groupName: 'flyway',\n matchPackageNames: ['org.flywaydb:*', 'org.flywaydb.flyway:*'],\n },\n ],\n },\n fortawesome: {\n description: 'Group all packages by Font Awesome together.',\n packageRules: [\n {\n groupName: 'Font Awesome',\n matchPackageNames: ['@fortawesome/**'],\n },\n ],\n },\n fusionjs: {\n description: 'Group Fusion.js packages together.',\n packageRules: [\n {\n groupName: 'Fusion.js packages',\n matchPackageNames: [\n 'fusion-cli',\n 'fusion-core',\n 'fusion-test-utils',\n 'fusion-tokens',\n 'fusion-plugin-**',\n 'fusion-react**',\n 'fusion-apollo**',\n ],\n },\n ],\n },\n githubArtifactActions: {\n description:\n 'Group `download-artifact` and `upload-artifact` major updates together.',\n packageRules: [\n {\n groupName: 'GitHub Artifact Actions',\n matchManagers: ['github-actions'],\n matchPackageNames: [\n 'actions/download-artifact',\n 'actions/upload-artifact',\n ],\n matchUpdateTypes: ['major'],\n },\n ],\n },\n glimmer: {\n description: 'Group Glimmer.js packages together.',\n packageRules: [\n {\n groupName: 'Glimmer.js packages',\n groupSlug: 'glimmer',\n matchPackageNames: ['@glimmer/component', '@glimmer/tracking'],\n },\n ],\n },\n googleapis: {\n description: 'Group `googleapis` packages together.',\n packageRules: [\n {\n extends: ['packages:googleapis'],\n groupName: 'googleapis packages',\n },\n ],\n },\n goOpenapi: {\n description: 'Group `go-openapi` packages together.',\n packageRules: [\n {\n groupName: 'go-openapi packages',\n groupSlug: 'go-openapi',\n matchDatasources: ['go'],\n matchPackageNames: ['github.com/go-openapi/**'],\n },\n ],\n },\n gradle: {\n description:\n \"Group anything that looks like Gradle together so that it's updated together.\",\n packageRules: [\n {\n commitMessageTopic: 'Gradle',\n matchDatasources: ['docker', 'gradle-version'],\n matchPackageNames: [\n '/(?:^|/)gradle$/', // gradle or ends with \"/gradle\"\n ],\n },\n ],\n },\n hibernateCommons: {\n description: 'Group Java Hibernate Commons packages.',\n packageRules: [\n {\n groupName: 'hibernate commons',\n matchPackageNames: ['org.hibernate.common:**'],\n },\n ],\n },\n hibernateCore: {\n description: 'Group Java Hibernate Core packages.',\n packageRules: [\n {\n groupName: 'hibernate core',\n matchPackageNames: ['org.hibernate:**'],\n },\n ],\n },\n hibernateOgm: {\n description: 'Group Java Hibernate OGM packages.',\n packageRules: [\n {\n groupName: 'hibernate ogm',\n matchPackageNames: ['org.hibernate.ogm:**'],\n },\n ],\n },\n hibernateValidator: {\n description: 'Group Java Hibernate Validator packages.',\n packageRules: [\n {\n groupName: 'hibernate validator',\n matchPackageNames: ['org.hibernate.validator:**'],\n },\n ],\n },\n illuminate: {\n description: 'Group PHP Illuminate packages together.',\n packageRules: [\n {\n groupName: 'illuminate packages',\n groupSlug: 'illuminate',\n matchPackageNames: ['illuminate/**'],\n },\n ],\n },\n jekyllEcosystem: {\n description: 'Group Jekyll and related Ruby packages together.',\n packageRules: [\n {\n groupName: 'jekyll ecosystem packages',\n matchSourceUrls: [\n 'https://github.com/jekyll/**',\n 'https://github.com/github/pages-gem**',\n ],\n },\n ],\n },\n jestPlusTSJest: {\n description: 'Add `ts-jest` `major` update to Jest monorepo.',\n packageRules: [\n {\n groupName: 'jest monorepo',\n matchSourceUrls: ['https://github.com/kulshekhar/ts-jest'],\n matchUpdateTypes: ['major'],\n },\n ],\n },\n jestPlusTypes: {\n description: 'Add `@types/jest` update to Jest monorepo.',\n packageRules: [\n {\n groupName: 'jest monorepo',\n matchPackageNames: ['@types/jest'],\n matchUpdateTypes: nonPinUpdateTypes,\n },\n ],\n },\n jsTest: {\n description: 'Group JS test packages together.',\n packageRules: [\n {\n extends: ['packages:jsTest'],\n groupName: 'JS test packages',\n },\n ],\n },\n jsTestNonMajor: {\n description: 'Group non-major JS test package updates together.',\n packageRules: [\n {\n extends: ['packages:jsTest'],\n groupName: 'JS test packages',\n matchUpdateTypes: ['minor', 'patch'],\n },\n ],\n },\n jsUnitTest: {\n description: 'Group JavaScript unit test packages together.',\n packageRules: [\n {\n extends: ['packages:jsUnitTest'],\n groupName: 'JS unit test packages',\n },\n ],\n },\n jsUnitTestNonMajor: {\n description:\n 'Group JavaScipt unit test packages together for non-major updates.',\n packageRules: [\n {\n extends: ['packages:jsUnitTest'],\n groupName: 'JS unit test packages',\n matchUpdateTypes: ['minor', 'patch'],\n },\n ],\n },\n jwtFramework: {\n description: 'Group JWT Framework packages together.',\n packageRules: [\n {\n groupName: 'JWT Framework packages',\n matchDatasources: ['packagist'],\n matchPackageNames: ['web-token/**'],\n },\n ],\n },\n linters: {\n description: 'Group various lint packages together.',\n packageRules: [\n {\n extends: ['packages:linters'],\n groupName: 'linters',\n },\n ],\n },\n micrometer: {\n description:\n \"Group Micrometer packages together, e.g. 'io.micrometer:micrometer-core'.\",\n packageRules: [\n {\n groupName: 'micrometer',\n matchPackageNames: ['io.micrometer:micrometer-**'],\n },\n ],\n },\n nodeJs: {\n description:\n \"Group anything that looks like Node.js together so that it's updated together.\",\n packageRules: [\n {\n commitMessageTopic: 'Node.js',\n matchDatasources: ['docker', 'node-version'],\n matchPackageNames: [\n '/(?:^|/)node$/', // node or ends with \"/node, except those below\"\n '!calico/node',\n '!docker.io/calico/node',\n '!ghcr.io/devcontainers/features/node',\n '!kindest/node',\n '!docker.io/kindest/node',\n ],\n },\n ],\n },\n phpstan: {\n description: 'Group PHPStan packages together.',\n packageRules: [\n {\n groupName: 'PHPStan packages',\n matchDatasources: ['packagist'],\n matchPackageNames: [\n 'phpstan/phpstan',\n '//phpstan-/',\n '//larastan/',\n 'phpstan/extension-installer',\n ],\n },\n ],\n },\n pnpm: {\n description: 'Group pnpm packages together.',\n packageRules: [\n {\n groupName: 'pnpm packages',\n matchDatasources: ['docker', 'npm'],\n matchPackageNames: ['pnpm', 'ghcr.io/pnpm/pnpm'],\n },\n ],\n },\n polymer: {\n description: 'Group all `@polymer` packages together.',\n packageRules: [\n {\n groupName: 'polymer packages',\n matchPackageNames: ['@polymer/**'],\n },\n ],\n },\n postcss: {\n description: 'Group PostCSS packages together.',\n packageRules: [\n {\n extends: ['packages:postcss'],\n groupName: 'postcss packages',\n },\n ],\n },\n pulumi: {\n description: 'Group Pulumi packages together.',\n packageRules: [\n {\n description: 'Group Pulumi Node.JS packages together.',\n groupName: 'Pulumi',\n groupSlug: 'pulumi-node',\n matchDatasources: ['npm'],\n matchPackageNames: ['@pulumi/**'],\n },\n {\n description: 'Group Pulumi Python packages together.',\n groupName: 'Pulumi',\n groupSlug: 'pulumi-python',\n matchDatasources: ['pypi'],\n matchPackageNames: ['pulumi-**'],\n },\n {\n description: 'Group Pulumi Go packages together.',\n groupName: 'Pulumi',\n groupSlug: 'pulumi-go',\n matchDatasources: ['go'],\n matchPackageNames: ['github.com/pulumi/**'],\n },\n {\n description: 'Group Pulumi Java packages together.',\n groupName: 'Pulumi',\n groupSlug: 'pulumi-java',\n matchDatasources: ['maven'],\n matchPackageNames: ['com.pulumi**'],\n },\n {\n description: 'Group Pulumi .NET packages together.',\n groupName: 'Pulumi',\n groupSlug: 'pulumi-dotnet',\n matchDatasources: ['nuget'],\n matchPackageNames: ['Pulumi**'],\n },\n ],\n },\n puppeteer: {\n description: 'Group Puppeteer packages together.',\n packageRules: [\n {\n groupName: 'Puppeteer',\n matchDatasources: ['npm'],\n matchPackageNames: ['puppeteer', 'puppeteer-core'],\n },\n ],\n },\n react: {\n description: 'Group React and corresponding `@types` packages together.',\n packageRules: [\n {\n groupName: 'react monorepo',\n matchPackageNames: [\n '@types/react',\n '@types/react-dom',\n '@types/react-is',\n ],\n },\n ],\n },\n recommended: {\n extends: [\n 'group:nodeJs',\n 'group:allApollographql',\n 'group:apiPlatform',\n 'group:codemirror',\n 'group:flyway',\n 'group:fortawesome',\n 'group:fusionjs',\n 'group:githubArtifactActions',\n 'group:glimmer',\n 'group:goOpenapi',\n 'group:gradle',\n 'group:hibernateCore',\n 'group:hibernateValidator',\n 'group:hibernateOgm',\n 'group:hibernateCommons',\n 'group:illuminate',\n 'group:jekyllEcosystem',\n 'group:jestPlusTSJest',\n 'group:jestPlusTypes',\n 'group:jwtFramework',\n 'group:micrometer',\n 'group:phpstan',\n 'group:polymer',\n 'group:puppeteer',\n 'group:react',\n 'group:remark',\n 'group:resilience4j',\n 'group:rubyOnRails',\n 'group:rubyOmniauth',\n 'group:socketio',\n 'group:springAmqp',\n 'group:springAndroid',\n 'group:springBatch',\n 'group:springBoot',\n 'group:springCloud',\n 'group:springCore',\n 'group:springData',\n 'group:springHateoas',\n 'group:springIntegration',\n 'group:springKafka',\n 'group:springLdap',\n 'group:springMobile',\n 'group:springOsgi',\n 'group:springRestDocs',\n 'group:springRoo',\n 'group:springScala',\n 'group:springSecurity',\n 'group:springSession',\n 'group:springShell',\n 'group:springSocial',\n 'group:springStatemachine',\n 'group:springWebflow',\n 'group:springWs',\n 'group:symfony',\n ],\n overrideDescription:\n 'Use curated list of recommended non-monorepo package groupings.',\n },\n remark: {\n description: 'Group remark packages together.',\n packageRules: [\n {\n groupName: 'remark',\n matchDatasources: ['npm'],\n matchSourceUrls: ['https://github.com/remarkjs/**'],\n },\n ],\n },\n resilience4j: {\n description: 'Group Java Resilience4j packages.',\n packageRules: [\n {\n groupName: 'resilience4j',\n matchPackageNames: ['io.github.resilience4j:**'],\n },\n ],\n },\n rubyOmniauth: {\n description: 'Group OmniAuth packages together.',\n packageRules: [\n {\n groupName: 'omniauth packages',\n matchDatasources: ['rubygems'],\n matchPackageNames: ['omniauth**'],\n },\n ],\n },\n rubyOnRails: {\n description: 'Group Ruby on Rails packages together.',\n packageRules: [\n {\n groupName: 'Ruby on Rails packages',\n matchDatasources: ['rubygems'],\n matchPackageNames: [\n 'actioncable',\n 'actionmailbox',\n 'actionmailer',\n 'actionpack',\n 'actiontext',\n 'actionview',\n 'activejob',\n 'activemodel',\n 'activerecord',\n 'activestorage',\n 'activesupport',\n 'railties',\n 'rails',\n ],\n },\n ],\n },\n socketio: {\n description: 'Group socket.io packages.',\n packageRules: [\n {\n groupName: 'socket.io packages',\n matchPackageNames: ['socket.io**'],\n },\n ],\n },\n springAmqp: {\n description: 'Group Java Spring AMQP packages.',\n packageRules: [\n {\n groupName: 'spring amqp',\n matchPackageNames: ['org.springframework.amqp:**'],\n },\n ],\n },\n springAndroid: {\n description: 'Group Java Spring Android packages.',\n packageRules: [\n {\n groupName: 'spring android',\n matchPackageNames: ['org.springframework.android:**'],\n },\n ],\n },\n springBatch: {\n description: 'Group Java Spring Batch packages.',\n packageRules: [\n {\n groupName: 'spring batch',\n matchPackageNames: ['org.springframework.batch:**'],\n },\n ],\n },\n springBoot: {\n description: 'Group Java Spring Boot packages.',\n packageRules: [\n {\n groupName: 'spring boot',\n matchDepNames: ['org.springframework.boot'],\n },\n {\n groupName: 'spring boot',\n matchPackageNames: ['org.springframework.boot:**'],\n },\n ],\n },\n springCloud: {\n description: 'Group Java Spring Cloud packages.',\n packageRules: [\n {\n groupName: 'spring cloud',\n matchPackageNames: ['org.springframework.cloud:**'],\n },\n ],\n },\n springCore: {\n description: 'Group Java Spring Core packages.',\n packageRules: [\n {\n groupName: 'spring core',\n matchPackageNames: ['org.springframework:**'],\n },\n ],\n },\n springData: {\n description: 'Group Java Spring Data packages.',\n packageRules: [\n {\n groupName: 'spring data',\n matchPackageNames: ['org.springframework.data:**'],\n },\n ],\n },\n springHateoas: {\n description: 'Group Java Spring HATEOAS packages.',\n packageRules: [\n {\n groupName: 'spring hateoas',\n matchPackageNames: ['org.springframework.hateoas:**'],\n },\n ],\n },\n springIntegration: {\n description: 'Group Java Spring Integration packages.',\n packageRules: [\n {\n groupName: 'spring integration',\n matchPackageNames: ['org.springframework.integration:**'],\n },\n ],\n },\n springKafka: {\n description: 'Group Java Spring Kafka packages.',\n packageRules: [\n {\n groupName: 'spring kafka',\n matchPackageNames: ['org.springframework.kafka:**'],\n },\n ],\n },\n springLdap: {\n description: 'Group Java Spring LDAP packages.',\n packageRules: [\n {\n groupName: 'spring ldap',\n matchPackageNames: ['org.springframework.ldap:**'],\n },\n ],\n },\n springMobile: {\n description: 'Group Java Spring Mobile packages.',\n packageRules: [\n {\n groupName: 'spring mobile',\n matchPackageNames: ['org.springframework.mobile:**'],\n },\n ],\n },\n springOsgi: {\n description: 'Group Java Spring OSGi packages.',\n packageRules: [\n {\n groupName: 'spring osgi',\n matchPackageNames: ['org.springframework.osgi:**'],\n },\n ],\n },\n springRestDocs: {\n description: 'Group Java Spring REST Docs packages.',\n packageRules: [\n {\n groupName: 'spring restdocs',\n matchPackageNames: ['org.springframework.restdocs:**'],\n },\n ],\n },\n springRoo: {\n description: 'Group Java Spring Roo packages.',\n packageRules: [\n {\n groupName: 'spring roo',\n matchPackageNames: ['org.springframework.roo:**'],\n },\n ],\n },\n springScala: {\n description: 'Group Java Spring Scala packages.',\n packageRules: [\n {\n groupName: 'spring scala',\n matchPackageNames: ['org.springframework.scala:**'],\n },\n ],\n },\n springSecurity: {\n description: 'Group Java Spring Security packages.',\n packageRules: [\n {\n groupName: 'spring security',\n matchPackageNames: ['org.springframework.security:**'],\n },\n ],\n },\n springSession: {\n description: 'Group Java Spring Session packages.',\n packageRules: [\n {\n groupName: 'spring session',\n matchPackageNames: ['org.springframework.session:**'],\n },\n ],\n },\n springShell: {\n description: 'Group Java Spring Shell packages.',\n packageRules: [\n {\n groupName: 'spring shell',\n matchPackageNames: ['org.springframework.shell:**'],\n },\n ],\n },\n springSocial: {\n description: 'Group Java Spring Social packages.',\n packageRules: [\n {\n groupName: 'spring social',\n matchPackageNames: ['org.springframework.social:**'],\n },\n ],\n },\n springStatemachine: {\n description: 'Group Java Spring Statemachine packages.',\n packageRules: [\n {\n groupName: 'spring statemachine',\n matchPackageNames: ['org.springframework.statemachine:**'],\n },\n ],\n },\n springWebflow: {\n description: 'Group Java Spring WebFlow packages.',\n packageRules: [\n {\n groupName: 'spring webflow',\n matchPackageNames: ['org.springframework.webflow:**'],\n },\n ],\n },\n springWs: {\n description: 'Group Java Spring WS packages.',\n packageRules: [\n {\n groupName: 'spring ws',\n matchPackageNames: ['org.springframework.ws:**'],\n },\n ],\n },\n stylelint: {\n description: 'Group stylelint packages together.',\n packageRules: [\n {\n extends: ['packages:stylelint'],\n groupName: 'stylelint packages',\n groupSlug: 'stylelint',\n separateMajorMinor: false,\n },\n ],\n },\n symfony: {\n description: 'Group PHP Symfony packages together.',\n packageRules: [\n {\n groupName: 'symfony packages',\n groupSlug: 'symfony',\n matchDatasources: ['packagist'],\n matchPackageNames: [\n 'symfony/*',\n '!symfony/*contracts',\n '!symfony/*pack',\n '!symfony/flex',\n '!symfony/maker-bundle',\n '!symfony/monolog-bundle',\n '!symfony/panther',\n '!symfony/polyfill*',\n '!symfony/proxy-manager-bridge',\n '!symfony/security-guard',\n '!symfony/stimulus-bundle',\n '!symfony/templating',\n '!symfony/thanks',\n '!symfony/ux*',\n '!symfony/webpack-encore-bundle',\n ],\n },\n ],\n },\n test: {\n description: 'Group all test packages together.',\n packageRules: [\n {\n extends: ['packages:test'],\n groupName: 'test packages',\n },\n ],\n },\n testNonMajor: {\n description: 'Group all non-major test package updates together.',\n packageRules: [\n {\n extends: ['packages:test'],\n groupName: 'test packages',\n matchUpdateTypes: ['minor', 'patch'],\n },\n ],\n },\n unitTest: {\n description: 'Group all unit test packages together.',\n packageRules: [\n {\n extends: ['packages:unitTest'],\n groupName: 'unit test packages',\n },\n ],\n },\n unitTestNonMajor: {\n description: 'Group all unit test packages together for non-major updates.',\n packageRules: [\n {\n extends: ['packages:unitTest'],\n groupName: 'unit test packages',\n matchUpdateTypes: ['minor', 'patch'],\n },\n ],\n },\n vite: {\n description: 'Group all Vite related packages together.',\n packageRules: [\n {\n extends: ['packages:vite'],\n groupName: 'Vite packages',\n },\n ],\n },\n vitePlus: {\n description: 'Group all Vite+ related packages together.',\n packageRules: [\n {\n extends: ['packages:vitePlus'],\n groupName: 'Vite+ packages',\n },\n ],\n },\n};\n\nconst config: any = { ...staticGroups };\n\nconst monorepoNames = [];\nfor (const monorepo of Object.keys(monorepos.presets)) {\n const name = `${monorepo}Monorepo`;\n monorepoNames.push(`group:${name}`);\n config[name] = {\n packageRules: [\n {\n description: `Group packages from ${monorepo} monorepo together.`,\n extends: [`monorepo:${monorepo}`],\n groupName: `${monorepo} monorepo`,\n matchUpdateTypes: nonPinUpdateTypes,\n },\n ],\n };\n}\nconfig.monorepos = {\n extends: monorepoNames,\n overrideDescription: 'Group known monorepo packages together.',\n};\n\nexport const presets: Record<string, Preset> = config;\n"],"mappings":";;AAGA,MAAM,oBAAoB;CAAC;CAAU;CAAS;CAAS;AAAO;AA04B9D,MAAM,SAAc;CAv4BlB,KAAK;EACH,aAAa;EACb,WAAW;EACX,WAAW;EACX,cAAc,CACZ;GACE,WAAW;GACX,WAAW;GACX,mBAAmB,CAAC,GAAG;EACzB,CACF;EAEA,oBAAoB;CACtB;CACA,kBAAkB;EAChB,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,wBAAwB;GAClC,WAAW;EACb,CACF;CACF;CACA,WAAW;EACT,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,WAAW;GACX,mBAAmB,CAAC,GAAG;GACvB,kBAAkB,CAAC,QAAQ;EAC7B,CACF;CACF;CACA,aAAa;EACX,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,WAAW;GACX,mBAAmB,CAAC,GAAG;GACvB,kBAAkB,CAAC,SAAS,OAAO;EACrC,CACF;CACF;CACA,aAAa;EACX,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,WAAW;GACX,kBAAkB,CAAC,WAAW;GAC9B,mBAAmB;IACjB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF,CACF;CACF;CACA,UAAU;EACR,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,mBAAmB;GAC7B,WAAW;EACb,CACF;CACF;CACA,YAAY;EACV,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,gBAAgB;EACtC,CACF;CACF;CACA,iBAAiB;EACf,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,WAAW;EACjC,CACF;CACF;CACA,YAAY;EACV,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,QAAQ;GAC3B,mBAAmB,CAAC,6BAA6B;EACnD,CACF;CACF;CACA,eAAe;EACb,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,eAAe,eAAe;EACpD,CACF;CACF;CACA,QAAQ;EACN,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,kBAAkB,uBAAuB;EAC/D,CACF;CACF;CACA,aAAa;EACX,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,iBAAiB;EACvC,CACF;CACF;CACA,UAAU;EACR,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB;IACjB;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF,CACF;CACF;CACA,uBAAuB;EACrB,aACE;EACF,cAAc,CACZ;GACE,WAAW;GACX,eAAe,CAAC,gBAAgB;GAChC,mBAAmB,CACjB,6BACA,yBACF;GACA,kBAAkB,CAAC,OAAO;EAC5B,CACF;CACF;CACA,SAAS;EACP,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,WAAW;GACX,mBAAmB,CAAC,sBAAsB,mBAAmB;EAC/D,CACF;CACF;CACA,YAAY;EACV,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,qBAAqB;GAC/B,WAAW;EACb,CACF;CACF;CACA,WAAW;EACT,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,WAAW;GACX,kBAAkB,CAAC,IAAI;GACvB,mBAAmB,CAAC,0BAA0B;EAChD,CACF;CACF;CACA,QAAQ;EACN,aACE;EACF,cAAc,CACZ;GACE,oBAAoB;GACpB,kBAAkB,CAAC,UAAU,gBAAgB;GAC7C,mBAAmB,CACjB,kBACF;EACF,CACF;CACF;CACA,kBAAkB;EAChB,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,yBAAyB;EAC/C,CACF;CACF;CACA,eAAe;EACb,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,kBAAkB;EACxC,CACF;CACF;CACA,cAAc;EACZ,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,sBAAsB;EAC5C,CACF;CACF;CACA,oBAAoB;EAClB,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,4BAA4B;EAClD,CACF;CACF;CACA,YAAY;EACV,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,WAAW;GACX,mBAAmB,CAAC,eAAe;EACrC,CACF;CACF;CACA,iBAAiB;EACf,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,iBAAiB,CACf,gCACA,uCACF;EACF,CACF;CACF;CACA,gBAAgB;EACd,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,iBAAiB,CAAC,uCAAuC;GACzD,kBAAkB,CAAC,OAAO;EAC5B,CACF;CACF;CACA,eAAe;EACb,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,aAAa;GACjC,kBAAkB;EACpB,CACF;CACF;CACA,QAAQ;EACN,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,iBAAiB;GAC3B,WAAW;EACb,CACF;CACF;CACA,gBAAgB;EACd,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,iBAAiB;GAC3B,WAAW;GACX,kBAAkB,CAAC,SAAS,OAAO;EACrC,CACF;CACF;CACA,YAAY;EACV,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,qBAAqB;GAC/B,WAAW;EACb,CACF;CACF;CACA,oBAAoB;EAClB,aACE;EACF,cAAc,CACZ;GACE,SAAS,CAAC,qBAAqB;GAC/B,WAAW;GACX,kBAAkB,CAAC,SAAS,OAAO;EACrC,CACF;CACF;CACA,cAAc;EACZ,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,WAAW;GAC9B,mBAAmB,CAAC,cAAc;EACpC,CACF;CACF;CACA,SAAS;EACP,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,kBAAkB;GAC5B,WAAW;EACb,CACF;CACF;CACA,YAAY;EACV,aACE;EACF,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,6BAA6B;EACnD,CACF;CACF;CACA,QAAQ;EACN,aACE;EACF,cAAc,CACZ;GACE,oBAAoB;GACpB,kBAAkB,CAAC,UAAU,cAAc;GAC3C,mBAAmB;IACjB;IACA;IACA;IACA;IACA;IACA;GACF;EACF,CACF;CACF;CACA,SAAS;EACP,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,WAAW;GAC9B,mBAAmB;IACjB;IACA;IACA;IACA;GACF;EACF,CACF;CACF;CACA,MAAM;EACJ,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,UAAU,KAAK;GAClC,mBAAmB,CAAC,QAAQ,mBAAmB;EACjD,CACF;CACF;CACA,SAAS;EACP,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,aAAa;EACnC,CACF;CACF;CACA,SAAS;EACP,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,kBAAkB;GAC5B,WAAW;EACb,CACF;CACF;CACA,QAAQ;EACN,aAAa;EACb,cAAc;GACZ;IACE,aAAa;IACb,WAAW;IACX,WAAW;IACX,kBAAkB,CAAC,KAAK;IACxB,mBAAmB,CAAC,YAAY;GAClC;GACA;IACE,aAAa;IACb,WAAW;IACX,WAAW;IACX,kBAAkB,CAAC,MAAM;IACzB,mBAAmB,CAAC,WAAW;GACjC;GACA;IACE,aAAa;IACb,WAAW;IACX,WAAW;IACX,kBAAkB,CAAC,IAAI;IACvB,mBAAmB,CAAC,sBAAsB;GAC5C;GACA;IACE,aAAa;IACb,WAAW;IACX,WAAW;IACX,kBAAkB,CAAC,OAAO;IAC1B,mBAAmB,CAAC,cAAc;GACpC;GACA;IACE,aAAa;IACb,WAAW;IACX,WAAW;IACX,kBAAkB,CAAC,OAAO;IAC1B,mBAAmB,CAAC,UAAU;GAChC;EACF;CACF;CACA,WAAW;EACT,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,KAAK;GACxB,mBAAmB,CAAC,aAAa,gBAAgB;EACnD,CACF;CACF;CACA,OAAO;EACL,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB;IACjB;IACA;IACA;GACF;EACF,CACF;CACF;CACA,aAAa;EACX,SAAS;GACP;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EACA,qBACE;CACJ;CACA,QAAQ;EACN,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,KAAK;GACxB,iBAAiB,CAAC,gCAAgC;EACpD,CACF;CACF;CACA,cAAc;EACZ,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,2BAA2B;EACjD,CACF;CACF;CACA,cAAc;EACZ,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,UAAU;GAC7B,mBAAmB,CAAC,YAAY;EAClC,CACF;CACF;CACA,aAAa;EACX,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,UAAU;GAC7B,mBAAmB;IACjB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF,CACF;CACF;CACA,UAAU;EACR,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,aAAa;EACnC,CACF;CACF;CACA,YAAY;EACV,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,6BAA6B;EACnD,CACF;CACF;CACA,eAAe;EACb,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,gCAAgC;EACtD,CACF;CACF;CACA,aAAa;EACX,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,8BAA8B;EACpD,CACF;CACF;CACA,YAAY;EACV,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,eAAe,CAAC,0BAA0B;EAC5C,GACA;GACE,WAAW;GACX,mBAAmB,CAAC,6BAA6B;EACnD,CACF;CACF;CACA,aAAa;EACX,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,8BAA8B;EACpD,CACF;CACF;CACA,YAAY;EACV,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,wBAAwB;EAC9C,CACF;CACF;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"}
1
+ {"version":3,"file":"group.preset.js","names":["monorepos.presets"],"sources":["../../../../lib/config/presets/internal/group.preset.ts"],"sourcesContent":["import type { Preset } from '../types.ts';\nimport * as monorepos from './monorepos.preset.ts';\n\nconst nonPinUpdateTypes = ['digest', 'patch', 'minor', 'major'];\n\nconst staticGroups = {\n all: {\n description: 'Group all updates together.',\n groupName: 'all dependencies',\n groupSlug: 'all',\n packageRules: [\n {\n groupName: 'all dependencies',\n groupSlug: 'all',\n matchPackageNames: ['*'],\n },\n ],\n\n separateMajorMinor: false,\n },\n allApollographql: {\n description: 'Group all packages published by Apollo GraphQL together.',\n packageRules: [\n {\n extends: ['packages:apollographql'],\n groupName: 'Apollo GraphQL packages',\n },\n ],\n },\n allDigest: {\n description: 'Group all `digest` updates together.',\n packageRules: [\n {\n groupName: 'all digest updates',\n groupSlug: 'all-digest',\n matchPackageNames: ['*'],\n matchUpdateTypes: ['digest'],\n },\n ],\n },\n allNonMajor: {\n description: 'Group all `minor` and `patch` updates together.',\n packageRules: [\n {\n groupName: 'all non-major dependencies',\n groupSlug: 'all-minor-patch',\n matchPackageNames: ['*'],\n matchUpdateTypes: ['minor', 'patch'],\n },\n ],\n },\n apiPlatform: {\n description: 'Group PHP API Platform packages together.',\n packageRules: [\n {\n groupName: 'api-platform packages',\n groupSlug: 'api-platform',\n matchDatasources: ['packagist'],\n matchPackageNames: [\n 'api-platform/*',\n '!api-platform/admin-meta',\n '!api-platform/admin-pack',\n '!api-platform/api-pack',\n '!api-platform/api-platform',\n '!api-platform/parameter-validator',\n '!api-platform/postman-collection-generator',\n '!api-platform/schema-generator',\n ],\n },\n ],\n },\n atlaskit: {\n description: 'Group all Atlassian `@atlaskit` packages together.',\n packageRules: [\n {\n extends: ['packages:atlaskit'],\n groupName: 'Atlassian Atlaskit packages',\n },\n ],\n },\n boto: {\n description: 'Group all Boto packages together.',\n packageRules: [\n {\n groupName: 'boto',\n matchDatasources: ['pypi'],\n matchPackageNames: ['boto3', 'botocore', 's3transfer'],\n },\n ],\n },\n codemirror: {\n description: 'Group CodeMirror packages together.',\n packageRules: [\n {\n groupName: 'CodeMirror',\n matchPackageNames: ['@codemirror/**'],\n },\n ],\n },\n definitelyTyped: {\n description: 'Group all `@types` packages together.',\n packageRules: [\n {\n groupName: 'definitelyTyped',\n matchPackageNames: ['@types/**'],\n },\n ],\n },\n dotNetCore: {\n description: '.NET Core Docker containers.',\n packageRules: [\n {\n groupName: '.NET Core Docker containers',\n matchDatasources: ['docker'],\n matchPackageNames: ['mcr.microsoft.com/dotnet/**'],\n },\n ],\n },\n 'drupal-core': {\n description: 'Group Drupal core updates.',\n packageRules: [\n {\n groupName: 'Drupal core',\n matchPackageNames: ['drupal/core', 'drupal/core-*'],\n },\n ],\n },\n flyway: {\n description: 'Group Java Flyway packages.',\n packageRules: [\n {\n groupName: 'flyway',\n matchPackageNames: ['org.flywaydb:*', 'org.flywaydb.flyway:*'],\n },\n ],\n },\n fortawesome: {\n description: 'Group all packages by Font Awesome together.',\n packageRules: [\n {\n groupName: 'Font Awesome',\n matchPackageNames: ['@fortawesome/**'],\n },\n ],\n },\n fusionjs: {\n description: 'Group Fusion.js packages together.',\n packageRules: [\n {\n groupName: 'Fusion.js packages',\n matchPackageNames: [\n 'fusion-cli',\n 'fusion-core',\n 'fusion-test-utils',\n 'fusion-tokens',\n 'fusion-plugin-**',\n 'fusion-react**',\n 'fusion-apollo**',\n ],\n },\n ],\n },\n githubArtifactActions: {\n description:\n 'Group `download-artifact` and `upload-artifact` major updates together.',\n packageRules: [\n {\n groupName: 'GitHub Artifact Actions',\n matchManagers: ['github-actions'],\n matchPackageNames: [\n 'actions/download-artifact',\n 'actions/upload-artifact',\n ],\n matchUpdateTypes: ['major'],\n },\n ],\n },\n glimmer: {\n description: 'Group Glimmer.js packages together.',\n packageRules: [\n {\n groupName: 'Glimmer.js packages',\n groupSlug: 'glimmer',\n matchPackageNames: ['@glimmer/component', '@glimmer/tracking'],\n },\n ],\n },\n googleapis: {\n description: 'Group `googleapis` packages together.',\n packageRules: [\n {\n extends: ['packages:googleapis'],\n groupName: 'googleapis packages',\n },\n ],\n },\n goOpenapi: {\n description: 'Group `go-openapi` packages together.',\n packageRules: [\n {\n groupName: 'go-openapi packages',\n groupSlug: 'go-openapi',\n matchDatasources: ['go'],\n matchPackageNames: ['github.com/go-openapi/**'],\n },\n ],\n },\n gradle: {\n description:\n \"Group anything that looks like Gradle together so that it's updated together.\",\n packageRules: [\n {\n commitMessageTopic: 'Gradle',\n matchDatasources: ['docker', 'gradle-version'],\n matchPackageNames: [\n '/(?:^|/)gradle$/', // gradle or ends with \"/gradle\"\n ],\n },\n ],\n },\n hibernateCommons: {\n description: 'Group Java Hibernate Commons packages.',\n packageRules: [\n {\n groupName: 'hibernate commons',\n matchPackageNames: ['org.hibernate.common:**'],\n },\n ],\n },\n hibernateCore: {\n description: 'Group Java Hibernate Core packages.',\n packageRules: [\n {\n groupName: 'hibernate core',\n matchPackageNames: ['org.hibernate:**'],\n },\n ],\n },\n hibernateOgm: {\n description: 'Group Java Hibernate OGM packages.',\n packageRules: [\n {\n groupName: 'hibernate ogm',\n matchPackageNames: ['org.hibernate.ogm:**'],\n },\n ],\n },\n hibernateValidator: {\n description: 'Group Java Hibernate Validator packages.',\n packageRules: [\n {\n groupName: 'hibernate validator',\n matchPackageNames: ['org.hibernate.validator:**'],\n },\n ],\n },\n illuminate: {\n description: 'Group PHP Illuminate packages together.',\n packageRules: [\n {\n groupName: 'illuminate packages',\n groupSlug: 'illuminate',\n matchPackageNames: ['illuminate/**'],\n },\n ],\n },\n jekyllEcosystem: {\n description: 'Group Jekyll and related Ruby packages together.',\n packageRules: [\n {\n groupName: 'jekyll ecosystem packages',\n matchSourceUrls: [\n 'https://github.com/jekyll/**',\n 'https://github.com/github/pages-gem**',\n ],\n },\n ],\n },\n jestPlusTSJest: {\n description: 'Add `ts-jest` `major` update to Jest monorepo.',\n packageRules: [\n {\n groupName: 'jest monorepo',\n matchSourceUrls: ['https://github.com/kulshekhar/ts-jest'],\n matchUpdateTypes: ['major'],\n },\n ],\n },\n jestPlusTypes: {\n description: 'Add `@types/jest` update to Jest monorepo.',\n packageRules: [\n {\n groupName: 'jest monorepo',\n matchPackageNames: ['@types/jest'],\n matchUpdateTypes: nonPinUpdateTypes,\n },\n ],\n },\n jsTest: {\n description: 'Group JS test packages together.',\n packageRules: [\n {\n extends: ['packages:jsTest'],\n groupName: 'JS test packages',\n },\n ],\n },\n jsTestNonMajor: {\n description: 'Group non-major JS test package updates together.',\n packageRules: [\n {\n extends: ['packages:jsTest'],\n groupName: 'JS test packages',\n matchUpdateTypes: ['minor', 'patch'],\n },\n ],\n },\n jsUnitTest: {\n description: 'Group JavaScript unit test packages together.',\n packageRules: [\n {\n extends: ['packages:jsUnitTest'],\n groupName: 'JS unit test packages',\n },\n ],\n },\n jsUnitTestNonMajor: {\n description:\n 'Group JavaScipt unit test packages together for non-major updates.',\n packageRules: [\n {\n extends: ['packages:jsUnitTest'],\n groupName: 'JS unit test packages',\n matchUpdateTypes: ['minor', 'patch'],\n },\n ],\n },\n jwtFramework: {\n description: 'Group JWT Framework packages together.',\n packageRules: [\n {\n groupName: 'JWT Framework packages',\n matchDatasources: ['packagist'],\n matchPackageNames: ['web-token/**'],\n },\n ],\n },\n linters: {\n description: 'Group various lint packages together.',\n packageRules: [\n {\n extends: ['packages:linters'],\n groupName: 'linters',\n },\n ],\n },\n micrometer: {\n description:\n \"Group Micrometer packages together, e.g. 'io.micrometer:micrometer-core'.\",\n packageRules: [\n {\n groupName: 'micrometer',\n matchPackageNames: ['io.micrometer:micrometer-**'],\n },\n ],\n },\n nodeJs: {\n description:\n \"Group anything that looks like Node.js together so that it's updated together.\",\n packageRules: [\n {\n commitMessageTopic: 'Node.js',\n matchDatasources: ['docker', 'node-version'],\n matchPackageNames: [\n '/(?:^|/)node$/', // node or ends with \"/node, except those below\"\n '!calico/node',\n '!docker.io/calico/node',\n '!ghcr.io/devcontainers/features/node',\n '!kindest/node',\n '!docker.io/kindest/node',\n ],\n },\n ],\n },\n phpstan: {\n description: 'Group PHPStan packages together.',\n packageRules: [\n {\n groupName: 'PHPStan packages',\n matchDatasources: ['packagist'],\n matchPackageNames: [\n 'phpstan/phpstan',\n '//phpstan-/',\n '//larastan/',\n 'phpstan/extension-installer',\n ],\n },\n ],\n },\n pnpm: {\n description: 'Group pnpm packages together.',\n packageRules: [\n {\n groupName: 'pnpm packages',\n matchDatasources: ['docker', 'npm'],\n matchPackageNames: ['pnpm', 'ghcr.io/pnpm/pnpm'],\n },\n ],\n },\n polymer: {\n description: 'Group all `@polymer` packages together.',\n packageRules: [\n {\n groupName: 'polymer packages',\n matchPackageNames: ['@polymer/**'],\n },\n ],\n },\n postcss: {\n description: 'Group PostCSS packages together.',\n packageRules: [\n {\n extends: ['packages:postcss'],\n groupName: 'postcss packages',\n },\n ],\n },\n pulumi: {\n description: 'Group Pulumi packages together.',\n packageRules: [\n {\n description: 'Group Pulumi Node.JS packages together.',\n groupName: 'Pulumi',\n groupSlug: 'pulumi-node',\n matchDatasources: ['npm'],\n matchPackageNames: ['@pulumi/**'],\n },\n {\n description: 'Group Pulumi Python packages together.',\n groupName: 'Pulumi',\n groupSlug: 'pulumi-python',\n matchDatasources: ['pypi'],\n matchPackageNames: ['pulumi-**'],\n },\n {\n description: 'Group Pulumi Go packages together.',\n groupName: 'Pulumi',\n groupSlug: 'pulumi-go',\n matchDatasources: ['go'],\n matchPackageNames: ['github.com/pulumi/**'],\n },\n {\n description: 'Group Pulumi Java packages together.',\n groupName: 'Pulumi',\n groupSlug: 'pulumi-java',\n matchDatasources: ['maven'],\n matchPackageNames: ['com.pulumi**'],\n },\n {\n description: 'Group Pulumi .NET packages together.',\n groupName: 'Pulumi',\n groupSlug: 'pulumi-dotnet',\n matchDatasources: ['nuget'],\n matchPackageNames: ['Pulumi**'],\n },\n ],\n },\n puppeteer: {\n description: 'Group Puppeteer packages together.',\n packageRules: [\n {\n groupName: 'Puppeteer',\n matchDatasources: ['npm'],\n matchPackageNames: ['puppeteer', 'puppeteer-core'],\n },\n ],\n },\n react: {\n description: 'Group React and corresponding `@types` packages together.',\n packageRules: [\n {\n groupName: 'react monorepo',\n matchPackageNames: [\n '@types/react',\n '@types/react-dom',\n '@types/react-is',\n ],\n },\n ],\n },\n recommended: {\n extends: [\n 'group:nodeJs',\n 'group:allApollographql',\n 'group:apiPlatform',\n 'group:boto',\n 'group:codemirror',\n 'group:flyway',\n 'group:fortawesome',\n 'group:fusionjs',\n 'group:githubArtifactActions',\n 'group:glimmer',\n 'group:goOpenapi',\n 'group:gradle',\n 'group:hibernateCore',\n 'group:hibernateValidator',\n 'group:hibernateOgm',\n 'group:hibernateCommons',\n 'group:illuminate',\n 'group:jekyllEcosystem',\n 'group:jestPlusTSJest',\n 'group:jestPlusTypes',\n 'group:jwtFramework',\n 'group:micrometer',\n 'group:phpstan',\n 'group:polymer',\n 'group:puppeteer',\n 'group:react',\n 'group:remark',\n 'group:resilience4j',\n 'group:rubyOnRails',\n 'group:rubyOmniauth',\n 'group:socketio',\n 'group:springAmqp',\n 'group:springAndroid',\n 'group:springBatch',\n 'group:springBoot',\n 'group:springCloud',\n 'group:springCore',\n 'group:springData',\n 'group:springHateoas',\n 'group:springIntegration',\n 'group:springKafka',\n 'group:springLdap',\n 'group:springMobile',\n 'group:springOsgi',\n 'group:springRestDocs',\n 'group:springRoo',\n 'group:springScala',\n 'group:springSecurity',\n 'group:springSession',\n 'group:springShell',\n 'group:springSocial',\n 'group:springStatemachine',\n 'group:springWebflow',\n 'group:springWs',\n 'group:symfony',\n ],\n overrideDescription:\n 'Use curated list of recommended non-monorepo package groupings.',\n },\n remark: {\n description: 'Group remark packages together.',\n packageRules: [\n {\n groupName: 'remark',\n matchDatasources: ['npm'],\n matchSourceUrls: ['https://github.com/remarkjs/**'],\n },\n ],\n },\n resilience4j: {\n description: 'Group Java Resilience4j packages.',\n packageRules: [\n {\n groupName: 'resilience4j',\n matchPackageNames: ['io.github.resilience4j:**'],\n },\n ],\n },\n rubyOmniauth: {\n description: 'Group OmniAuth packages together.',\n packageRules: [\n {\n groupName: 'omniauth packages',\n matchDatasources: ['rubygems'],\n matchPackageNames: ['omniauth**'],\n },\n ],\n },\n rubyOnRails: {\n description: 'Group Ruby on Rails packages together.',\n packageRules: [\n {\n groupName: 'Ruby on Rails packages',\n matchDatasources: ['rubygems'],\n matchPackageNames: [\n 'actioncable',\n 'actionmailbox',\n 'actionmailer',\n 'actionpack',\n 'actiontext',\n 'actionview',\n 'activejob',\n 'activemodel',\n 'activerecord',\n 'activestorage',\n 'activesupport',\n 'railties',\n 'rails',\n ],\n },\n ],\n },\n socketio: {\n description: 'Group socket.io packages.',\n packageRules: [\n {\n groupName: 'socket.io packages',\n matchPackageNames: ['socket.io**'],\n },\n ],\n },\n springAmqp: {\n description: 'Group Java Spring AMQP packages.',\n packageRules: [\n {\n groupName: 'spring amqp',\n matchPackageNames: ['org.springframework.amqp:**'],\n },\n ],\n },\n springAndroid: {\n description: 'Group Java Spring Android packages.',\n packageRules: [\n {\n groupName: 'spring android',\n matchPackageNames: ['org.springframework.android:**'],\n },\n ],\n },\n springBatch: {\n description: 'Group Java Spring Batch packages.',\n packageRules: [\n {\n groupName: 'spring batch',\n matchPackageNames: ['org.springframework.batch:**'],\n },\n ],\n },\n springBoot: {\n description: 'Group Java Spring Boot packages.',\n packageRules: [\n {\n groupName: 'spring boot',\n matchDepNames: ['org.springframework.boot'],\n },\n {\n groupName: 'spring boot',\n matchPackageNames: ['org.springframework.boot:**'],\n },\n ],\n },\n springCloud: {\n description: 'Group Java Spring Cloud packages.',\n packageRules: [\n {\n groupName: 'spring cloud',\n matchPackageNames: ['org.springframework.cloud:**'],\n },\n ],\n },\n springCore: {\n description: 'Group Java Spring Core packages.',\n packageRules: [\n {\n groupName: 'spring core',\n matchPackageNames: ['org.springframework:**'],\n },\n ],\n },\n springData: {\n description: 'Group Java Spring Data packages.',\n packageRules: [\n {\n groupName: 'spring data',\n matchPackageNames: ['org.springframework.data:**'],\n },\n ],\n },\n springHateoas: {\n description: 'Group Java Spring HATEOAS packages.',\n packageRules: [\n {\n groupName: 'spring hateoas',\n matchPackageNames: ['org.springframework.hateoas:**'],\n },\n ],\n },\n springIntegration: {\n description: 'Group Java Spring Integration packages.',\n packageRules: [\n {\n groupName: 'spring integration',\n matchPackageNames: ['org.springframework.integration:**'],\n },\n ],\n },\n springKafka: {\n description: 'Group Java Spring Kafka packages.',\n packageRules: [\n {\n groupName: 'spring kafka',\n matchPackageNames: ['org.springframework.kafka:**'],\n },\n ],\n },\n springLdap: {\n description: 'Group Java Spring LDAP packages.',\n packageRules: [\n {\n groupName: 'spring ldap',\n matchPackageNames: ['org.springframework.ldap:**'],\n },\n ],\n },\n springMobile: {\n description: 'Group Java Spring Mobile packages.',\n packageRules: [\n {\n groupName: 'spring mobile',\n matchPackageNames: ['org.springframework.mobile:**'],\n },\n ],\n },\n springOsgi: {\n description: 'Group Java Spring OSGi packages.',\n packageRules: [\n {\n groupName: 'spring osgi',\n matchPackageNames: ['org.springframework.osgi:**'],\n },\n ],\n },\n springRestDocs: {\n description: 'Group Java Spring REST Docs packages.',\n packageRules: [\n {\n groupName: 'spring restdocs',\n matchPackageNames: ['org.springframework.restdocs:**'],\n },\n ],\n },\n springRoo: {\n description: 'Group Java Spring Roo packages.',\n packageRules: [\n {\n groupName: 'spring roo',\n matchPackageNames: ['org.springframework.roo:**'],\n },\n ],\n },\n springScala: {\n description: 'Group Java Spring Scala packages.',\n packageRules: [\n {\n groupName: 'spring scala',\n matchPackageNames: ['org.springframework.scala:**'],\n },\n ],\n },\n springSecurity: {\n description: 'Group Java Spring Security packages.',\n packageRules: [\n {\n groupName: 'spring security',\n matchPackageNames: ['org.springframework.security:**'],\n },\n ],\n },\n springSession: {\n description: 'Group Java Spring Session packages.',\n packageRules: [\n {\n groupName: 'spring session',\n matchPackageNames: ['org.springframework.session:**'],\n },\n ],\n },\n springShell: {\n description: 'Group Java Spring Shell packages.',\n packageRules: [\n {\n groupName: 'spring shell',\n matchPackageNames: ['org.springframework.shell:**'],\n },\n ],\n },\n springSocial: {\n description: 'Group Java Spring Social packages.',\n packageRules: [\n {\n groupName: 'spring social',\n matchPackageNames: ['org.springframework.social:**'],\n },\n ],\n },\n springStatemachine: {\n description: 'Group Java Spring Statemachine packages.',\n packageRules: [\n {\n groupName: 'spring statemachine',\n matchPackageNames: ['org.springframework.statemachine:**'],\n },\n ],\n },\n springWebflow: {\n description: 'Group Java Spring WebFlow packages.',\n packageRules: [\n {\n groupName: 'spring webflow',\n matchPackageNames: ['org.springframework.webflow:**'],\n },\n ],\n },\n springWs: {\n description: 'Group Java Spring WS packages.',\n packageRules: [\n {\n groupName: 'spring ws',\n matchPackageNames: ['org.springframework.ws:**'],\n },\n ],\n },\n stylelint: {\n description: 'Group stylelint packages together.',\n packageRules: [\n {\n extends: ['packages:stylelint'],\n groupName: 'stylelint packages',\n groupSlug: 'stylelint',\n separateMajorMinor: false,\n },\n ],\n },\n symfony: {\n description: 'Group PHP Symfony packages together.',\n packageRules: [\n {\n groupName: 'symfony packages',\n groupSlug: 'symfony',\n matchDatasources: ['packagist'],\n matchPackageNames: [\n 'symfony/*',\n '!symfony/*contracts',\n '!symfony/*pack',\n '!symfony/flex',\n '!symfony/maker-bundle',\n '!symfony/monolog-bundle',\n '!symfony/panther',\n '!symfony/polyfill*',\n '!symfony/proxy-manager-bridge',\n '!symfony/security-guard',\n '!symfony/stimulus-bundle',\n '!symfony/templating',\n '!symfony/thanks',\n '!symfony/ux*',\n '!symfony/webpack-encore-bundle',\n ],\n },\n ],\n },\n test: {\n description: 'Group all test packages together.',\n packageRules: [\n {\n extends: ['packages:test'],\n groupName: 'test packages',\n },\n ],\n },\n testNonMajor: {\n description: 'Group all non-major test package updates together.',\n packageRules: [\n {\n extends: ['packages:test'],\n groupName: 'test packages',\n matchUpdateTypes: ['minor', 'patch'],\n },\n ],\n },\n unitTest: {\n description: 'Group all unit test packages together.',\n packageRules: [\n {\n extends: ['packages:unitTest'],\n groupName: 'unit test packages',\n },\n ],\n },\n unitTestNonMajor: {\n description: 'Group all unit test packages together for non-major updates.',\n packageRules: [\n {\n extends: ['packages:unitTest'],\n groupName: 'unit test packages',\n matchUpdateTypes: ['minor', 'patch'],\n },\n ],\n },\n vite: {\n description: 'Group all Vite related packages together.',\n packageRules: [\n {\n extends: ['packages:vite'],\n groupName: 'Vite packages',\n },\n ],\n },\n vitePlus: {\n description: 'Group all Vite+ related packages together.',\n packageRules: [\n {\n extends: ['packages:vitePlus'],\n groupName: 'Vite+ packages',\n },\n ],\n },\n};\n\nconst config: any = { ...staticGroups };\n\nconst monorepoNames = [];\nfor (const monorepo of Object.keys(monorepos.presets)) {\n const name = `${monorepo}Monorepo`;\n monorepoNames.push(`group:${name}`);\n config[name] = {\n packageRules: [\n {\n description: `Group packages from ${monorepo} monorepo together.`,\n extends: [`monorepo:${monorepo}`],\n groupName: `${monorepo} monorepo`,\n matchUpdateTypes: nonPinUpdateTypes,\n },\n ],\n };\n}\nconfig.monorepos = {\n extends: monorepoNames,\n overrideDescription: 'Group known monorepo packages together.',\n};\n\nexport const presets: Record<string, Preset> = config;\n"],"mappings":"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;GACF;EACF,CACF;CACF;CACA,SAAS;EACP,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,WAAW;GAC9B,mBAAmB;IACjB;IACA;IACA;IACA;GACF;EACF,CACF;CACF;CACA,MAAM;EACJ,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,UAAU,KAAK;GAClC,mBAAmB,CAAC,QAAQ,mBAAmB;EACjD,CACF;CACF;CACA,SAAS;EACP,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,aAAa;EACnC,CACF;CACF;CACA,SAAS;EACP,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,kBAAkB;GAC5B,WAAW;EACb,CACF;CACF;CACA,QAAQ;EACN,aAAa;EACb,cAAc;GACZ;IACE,aAAa;IACb,WAAW;IACX,WAAW;IACX,kBAAkB,CAAC,KAAK;IACxB,mBAAmB,CAAC,YAAY;GAClC;GACA;IACE,aAAa;IACb,WAAW;IACX,WAAW;IACX,kBAAkB,CAAC,MAAM;IACzB,mBAAmB,CAAC,WAAW;GACjC;GACA;IACE,aAAa;IACb,WAAW;IACX,WAAW;IACX,kBAAkB,CAAC,IAAI;IACvB,mBAAmB,CAAC,sBAAsB;GAC5C;GACA;IACE,aAAa;IACb,WAAW;IACX,WAAW;IACX,kBAAkB,CAAC,OAAO;IAC1B,mBAAmB,CAAC,cAAc;GACpC;GACA;IACE,aAAa;IACb,WAAW;IACX,WAAW;IACX,kBAAkB,CAAC,OAAO;IAC1B,mBAAmB,CAAC,UAAU;GAChC;EACF;CACF;CACA,WAAW;EACT,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,KAAK;GACxB,mBAAmB,CAAC,aAAa,gBAAgB;EACnD,CACF;CACF;CACA,OAAO;EACL,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB;IACjB;IACA;IACA;GACF;EACF,CACF;CACF;CACA,aAAa;EACX,SAAS;GACP;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EACA,qBACE;CACJ;CACA,QAAQ;EACN,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,KAAK;GACxB,iBAAiB,CAAC,gCAAgC;EACpD,CACF;CACF;CACA,cAAc;EACZ,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,2BAA2B;EACjD,CACF;CACF;CACA,cAAc;EACZ,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,UAAU;GAC7B,mBAAmB,CAAC,YAAY;EAClC,CACF;CACF;CACA,aAAa;EACX,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,kBAAkB,CAAC,UAAU;GAC7B,mBAAmB;IACjB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF,CACF;CACF;CACA,UAAU;EACR,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,aAAa;EACnC,CACF;CACF;CACA,YAAY;EACV,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,6BAA6B;EACnD,CACF;CACF;CACA,eAAe;EACb,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,gCAAgC;EACtD,CACF;CACF;CACA,aAAa;EACX,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,mBAAmB,CAAC,8BAA8B;EACpD,CACF;CACF;CACA,YAAY;EACV,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX,eAAe,CAAC,0BAA0B;EAC5C,GACA;GACE,WAAW;GACX,mBAAmB,CAAC,6BAA6B;EACnD,CACF;CACF;CACA,aAAa;EACX,aAAa;EACb,cAAc,CACZ;GACE,WAAW;GACX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"}
@@ -491,7 +491,26 @@ export interface ValidationMessage {
491
491
  topic: ConfigValidationTopic | (string & {});
492
492
  message: string;
493
493
  }
494
- export type AllowedParents = '.' | 'bumpVersions' | 'customDatasources' | 'customManagers' | 'hostRules' | 'logLevelRemap' | 'packageRules' | 'postUpgradeTasks' | 'vulnerabilityAlerts' | 'toolSettings' | ManagerName | UpdateTypeOptions;
494
+ /**
495
+ * The kinds of place a config option can be used, which expand to the {@link AllowedParents} they cover.
496
+ *
497
+ * These are for the places which can't reasonably be listed, like every manager or every update type, so an option which is only valid in a specific object - like `hostRules` - should use `parents` instead.
498
+ */
499
+ export declare const configScopes: readonly [
500
+ /** the top level of a repository, global, inherited or preset config */
501
+ 'repo',
502
+ /** a `packageRules` entry */
503
+ 'packageRule',
504
+ /** a manager's configuration object, like `npm` */
505
+ 'manager',
506
+ /** an update type's configuration object, like `major` */
507
+ 'updateType',
508
+ /** the `vulnerabilityAlerts` configuration object */
509
+ 'vulnerabilityAlert',
510
+ /** the `group` configuration object, which is merged into an update when it's grouped */
511
+ 'group'];
512
+ export type ConfigScope = (typeof configScopes)[number];
513
+ export type AllowedParents = '.' | 'bumpVersions' | 'group' | 'customDatasources' | 'customManagers' | 'hostRules' | 'logLevelRemap' | 'packageRules' | 'postUpgradeTasks' | 'vulnerabilityAlerts' | 'toolSettings' | ManagerName | UpdateTypeOptions;
495
514
  export interface RenovateOptionBase {
496
515
  /**
497
516
  * If true, the option can only be configured by people with access to the Renovate instance.
@@ -522,6 +541,12 @@ export interface RenovateOptionBase {
522
541
  autogenerated?: boolean;
523
542
  name: string;
524
543
  parents?: AllowedParents[];
544
+ /**
545
+ * The kinds of place this option can be used, which are expanded alongside any `parents`.
546
+ *
547
+ * An option which declares neither is treated as valid anywhere, which is what we're working towards removing in #43020.
548
+ */
549
+ scopes?: ConfigScope[];
525
550
  stage?: RenovateConfigStage;
526
551
  experimental?: boolean;
527
552
  experimentalDescription?: string;
@@ -539,6 +564,12 @@ export interface RenovateOptionBase {
539
564
  * For internal use only: add it to any config option of type integer that supports negative integers
540
565
  */
541
566
  allowNegative?: boolean;
567
+ /**
568
+ * Whether the option can be set to `null`.
569
+ *
570
+ * This is only needed if the default is not `null` (which makes this implied).
571
+ */
572
+ nullable?: boolean;
542
573
  /**
543
574
  * Managers which support this option, leave undefined if all managers support it.
544
575
  */
@@ -593,6 +624,10 @@ export interface RenovateStringOption extends RenovateOptionBase {
593
624
  export interface RenovateObjectOption extends RenovateOptionBase {
594
625
  default?: any;
595
626
  additionalProperties?: Record<string, unknown> | boolean;
627
+ /**
628
+ * The keys the object accepts, for an option whose keys are a known set rather than the user's choice.
629
+ */
630
+ properties?: Record<string, unknown>;
596
631
  mergeable?: boolean;
597
632
  type: 'object';
598
633
  }
@@ -21,7 +21,20 @@ const UpdateTypesOptions = [
21
21
  "rollback",
22
22
  "replacement"
23
23
  ];
24
+ /**
25
+ * The kinds of place a config option can be used, which expand to the {@link AllowedParents} they cover.
26
+ *
27
+ * These are for the places which can't reasonably be listed, like every manager or every update type, so an option which is only valid in a specific object - like `hostRules` - should use `parents` instead.
28
+ */
29
+ const configScopes = [
30
+ "repo",
31
+ "packageRule",
32
+ "manager",
33
+ "updateType",
34
+ "vulnerabilityAlert",
35
+ "group"
36
+ ];
24
37
  //#endregion
25
- export { UpdateTypesOptions, allowedStatusCheckStrings, allowedStatusCheckWhenValues };
38
+ export { UpdateTypesOptions, allowedStatusCheckStrings, allowedStatusCheckWhenValues, configScopes };
26
39
 
27
40
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../lib/config/types.ts"],"sourcesContent":["import type { Category, PlatformId } from '../constants/index.ts';\nimport type { LogLevelRemap } from '../logger/types.ts';\nimport type { ManagerName } from '../manager-list.generated.ts';\nimport type { CustomManager } from '../modules/manager/custom/types.ts';\nimport type {\n GitUrlOption,\n RepoSortMethod,\n SortMethod,\n} from '../modules/platform/types.ts';\nimport type {\n AutoMergeType,\n HostRule,\n Nullish,\n RangeStrategy,\n SkipReason,\n} from '../types/index.ts';\nimport type { StageName } from '../types/skip-reason.ts';\nimport type {\n AdditionalConstraintName,\n ConstraintName,\n ToolName,\n} from '../util/exec/types.ts';\nimport type { GitNoVerifyOption } from '../util/git/types.ts';\nimport type { MergeConfidence } from '../util/merge-confidence/types.ts';\nimport type { Timestamp } from '../util/timestamp.ts';\nimport type { ConfigValidationTopic } from './validation-helpers/types.ts';\n\nexport type RenovateConfigStage =\n 'global' | 'inherit' | 'repository' | 'package' | 'branch' | 'pr';\n\nexport type RenovateSplit =\n 'init' | 'onboarding' | 'extract' | 'lookup' | 'update';\n\nexport type RepositoryCacheConfig = 'disabled' | 'enabled' | 'reset';\nexport type RepositoryCacheType = 'local' | (string & {});\nexport type DryRunConfig = 'extract' | 'lookup' | 'full';\nexport type InternalHostAccess = 'allow' | 'warn' | 'block';\nexport type RequiredConfig = 'required' | 'optional' | 'ignored';\n\nexport interface GroupConfig extends Record<string, unknown> {\n branchName?: string;\n branchTopic?: string;\n}\n\nexport type RecreateWhen = 'auto' | 'never' | 'always';\nexport const allowedStatusCheckWhenValues = [\n 'always',\n 'never',\n 'failed',\n] as const;\nexport type StatusCheckWhen = (typeof allowedStatusCheckWhenValues)[number];\nexport type PlatformCommitOptions = 'auto' | 'disabled' | 'enabled';\n\nexport type BinarySource = 'docker' | 'global' | 'install' | 'hermit';\n\n// TODO: Proper typings\n/**\n * Any configuration that could be used either top-level in a repository config (or Global, Inherited or Shareable Preset configuration), or:\n *\n * - in a datasource-specific configuration\n * - in a manager-specific configuration\n * - in a Package Rule\n *\n * @see RenovateConfig for the superset of all configuration allowed in a given repository\n *\n */\nexport interface RenovateSharedConfig {\n $schema?: string;\n abandonmentThreshold?: Nullish<string>;\n addLabels?: string[];\n assignAutomerge?: boolean;\n autoApprove?: boolean;\n autoReplaceGlobalMatch?: boolean;\n automerge?: boolean;\n automergeSchedule?: string[];\n automergeStrategy?: MergeStrategy;\n automergeType?: AutoMergeType;\n azureWorkItemId?: number;\n azureWorkItemType?: string;\n branchName?: string;\n branchNameStrict?: boolean;\n branchPrefix?: string;\n branchPrefixOld?: string;\n bumpVersions?: BumpVersionConfig[];\n commitBody?: string;\n commitBodyTable?: boolean;\n commitMessage?: string;\n commitMessageAction?: string;\n commitMessageExtra?: string;\n commitMessageLowerCase?: 'auto' | 'never';\n commitMessagePrefix?: string;\n commitMessageTopic?: string;\n commitTrailers?: string[];\n confidential?: boolean;\n configValidationError?: boolean;\n changelogUrl?: string;\n dependencyDashboardApproval?: boolean;\n draftPR?: boolean;\n enabled?: boolean;\n enabledManagers?: string[];\n encrypted?: Record<string, string>;\n extends?: string[];\n extractVersion?: string;\n managerFilePatterns?: string[];\n followTag?: string;\n force?: RenovateConfig;\n gitIgnoredAuthors?: string[];\n group?: GroupConfig;\n groupName?: string;\n groupSingleUpdates?: boolean;\n groupSlug?: string;\n hashedBranchLength?: number;\n ignoreDeps?: string[];\n ignorePaths?: string[];\n ignoreTests?: boolean;\n ignoreUnstable?: boolean;\n includePaths?: string[];\n internalChecksAsSuccess?: boolean;\n internalChecksFilter?: 'strict' | 'flexible' | 'none';\n keepUpdatedLabel?: string;\n labels?: string[];\n manager?: string;\n milestone?: number;\n minimumReleaseAge?: Nullish<string>;\n minimumReleaseAgeBuffer?: Nullish<string>;\n npmrc?: string;\n npmrcMerge?: boolean;\n npmToken?: string;\n\n pinDigests?: boolean;\n platformAutomerge?: boolean;\n platformCommit?: PlatformCommitOptions;\n postUpgradeTasks?: PostUpgradeTasks;\n prBodyColumns?: string[];\n prBodyDefinitions?: Record<string, string>;\n prBodyHeadingDefinitions?: Record<string, string>;\n prBodyNotes?: string[];\n prCreation?: 'immediate' | 'not-pending' | 'status-success' | 'approval';\n prFooter?: string;\n prHeader?: string;\n prPriority?: number;\n prTitle?: string;\n prTitleStrict?: boolean;\n pruneBranchAfterAutomerge?: boolean;\n rangeStrategy?: RangeStrategy;\n rebaseLabel?: string;\n rebaseWhen?: string;\n recreateClosed?: boolean;\n recreateWhen?: RecreateWhen;\n repository?: string;\n repositoryCache?: RepositoryCacheConfig;\n repositoryCacheType?: RepositoryCacheType;\n respectLatest?: boolean;\n rollbackPrs?: boolean;\n schedule?: string[];\n semanticCommitScope?: string | null;\n semanticCommitType?: string;\n semanticCommits?: 'auto' | 'enabled' | 'disabled';\n separateMajorMinor?: boolean;\n separateMinorPatch?: boolean;\n separateMultipleMajor?: boolean;\n separateMultipleMinor?: boolean;\n skipArtifactsUpdate?: boolean;\n stopUpdatingLabel?: string;\n suppressNotifications?: string[];\n timezone?: string;\n unicodeEmoji?: boolean;\n updateNotScheduled?: boolean;\n versioning?: string;\n versionCompatibility?: string;\n}\n\n/**\n * Contains all options with globalOnly=true && inheritConfigSupport=true\n */\nexport interface GlobalInheritableConfig {\n bbUseDevelopmentBranch?: boolean;\n configFileNames?: string[];\n onboarding?: boolean;\n onboardingAutoCloseAge?: number;\n onboardingBranch?: string;\n onboardingCommitMessage?: string;\n onboardingConfig?: RenovateConfig;\n onboardingConfigFileName?: string;\n onboardingNoDeps?: 'auto' | 'enabled' | 'disabled';\n onboardingPrTitle?: string;\n requireConfig?: RequiredConfig;\n}\n\n// Config options used only within the global worker\n// The below should contain config options where stage=global\n/** @deprecated use `RepoGlobalConfig` instead **/\nexport interface GlobalOnlyConfigLegacy {\n autodiscover?: boolean;\n autodiscoverFilter?: string[] | string;\n autodiscoverNamespaces?: string[];\n autodiscoverProjects?: string[];\n autodiscoverTopics?: string[];\n baseDir?: string;\n cacheDir?: string;\n containerbaseDir?: string;\n detectHostRulesFromEnv?: boolean;\n dockerCliOptions?: string;\n endpoint?: string;\n exitCodeForErrors?: boolean;\n forceCli?: boolean;\n gitNoVerify?: GitNoVerifyOption[];\n gitPrivateKey?: string;\n gitPrivateKeyPassphrase?: string;\n globalExtends?: string[];\n mergeConfidenceDatasources?: string[];\n mergeConfidenceEndpoint?: string;\n platform?: PlatformId;\n processEnv?: Record<string, string>;\n prCommitsPerRunLimit?: number;\n privateKey?: string;\n privateKeyOld?: string;\n privateKeyPath?: string;\n privateKeyPathOld?: string;\n redisPrefix?: string;\n redisUrl?: string;\n repositories?: RenovateRepository[];\n useCloudMetadataServices?: boolean;\n deleteConfigFile?: boolean;\n deleteAdditionalConfigFile?: boolean;\n}\n\n/**\n * Any global-only configuration set by self-hosted administrators.\n *\n * Used within the repository worker.\n *\n * Should only contain config options where globalOnly=true.\n */\nexport interface RepoGlobalConfig extends GlobalInheritableConfig {\n allowedCommands?: string[];\n allowCustomCrateGitRegistries?: boolean;\n allowPlugins?: boolean;\n allowScripts?: boolean;\n allowShellExecutorForPostUpgradeCommands?: boolean;\n allowedEnv?: string[];\n allowedHeaders?: string[];\n binarySource?: BinarySource;\n cacheDir?: string;\n cacheHardTtlMinutes?: number;\n cacheTtlOverride?: Record<string, number>;\n checkedBranches?: string[];\n containerbaseDir?: string;\n customEnvVariables?: Record<string, string>;\n dockerChildPrefix?: string;\n dockerCliOptions?: string;\n dockerSidecarImage?: string;\n dockerUser?: string;\n dryRun?: DryRunConfig;\n encryptedWarning?: string;\n endpoint?: string;\n executionTimeout?: number;\n exposeAllEnv?: boolean;\n gitTimeout?: number;\n githubTokenWarn?: boolean;\n includeMirrors?: boolean;\n inheritConfigTrusted?: boolean;\n internalHostAccess?: InternalHostAccess;\n migratePresets?: Record<string, string>;\n platform?: PlatformId;\n prCacheSyncMaxPages?: number;\n presetCachePersistence?: boolean;\n httpCacheTtlDays?: number;\n autodiscoverRepoSort?: RepoSortMethod;\n autodiscoverRepoOrder?: SortMethod;\n userAgent?: string;\n dockerMaxPages?: number;\n s3Endpoint?: string;\n s3PathStyle?: boolean;\n cachePrivatePackages?: boolean;\n repositoryCacheForceLocal?: boolean;\n configFileNames?: string[];\n ignorePrAuthor?: boolean;\n allowedUnsafeExecutions?: AllowedUnsafeExecution[];\n onboardingAutoCloseAge?: number;\n productLinks?: Record<string, string>;\n rebaseAllOpenBranches?: boolean;\n toolSettings?: GlobalToolSettingsOptions;\n}\n\n/**\n * Internal variables which are referenced from `GlobalConfig`, but are *not* user-configurable options.\n */\nexport interface InternalGlobalConfigOptions {\n localDir?: string;\n}\n\n/**\n * Those options are global only but still passed into the repository worker config.\n *\n * @deprecated https://github.com/renovatebot/renovate/issues/39693\n */\nexport interface LegacyAdminConfig {\n baseDir?: string;\n localDir?: string;\n\n logContext?: string;\n\n onboarding?: boolean;\n onboardingBranch?: string;\n onboardingNoDeps?: 'auto' | 'enabled' | 'disabled';\n onboardingRebaseCheckbox?: boolean;\n onboardingConfig?: RenovateConfig;\n onboardingConfigFileName?: string;\n\n optimizeForDisabled?: boolean;\n\n persistRepoData?: boolean;\n\n prCommitsPerRunLimit?: number;\n\n requireConfig?: RequiredConfig;\n\n useCloudMetadataServices?: boolean;\n\n writeDiscoveredRepos?: string;\n}\n\nexport type ExecutionMode = 'branch' | 'update';\n\nexport interface PostUpgradeTasks {\n commands?: string[];\n workingDirTemplate?: string;\n dataFileTemplate?: string;\n fileFilters?: string[];\n executionMode: ExecutionMode;\n installTools?: Partial<Record<ToolName, Record<never, never>>>;\n}\n\nexport type UpdateConfig<\n T extends RenovateSharedConfig = RenovateSharedConfig,\n> = Partial<Record<UpdateType, T | null>>;\n\nexport type RenovateRepositoryEntry = AllConfig & {\n repository: string;\n};\n\nexport type RenovateRepository = string | RenovateRepositoryEntry;\n\nexport type UseBaseBranchConfigType = 'merge' | 'none';\nexport type ConstraintsFilter = 'strict' | 'none';\nexport type MinimumReleaseAgeBehaviour =\n 'timestamp-required' | 'timestamp-optional';\n\nexport const allowedStatusCheckStrings = [\n 'minimumReleaseAge',\n 'mergeConfidence',\n 'configValidation',\n 'artifactError',\n] as const;\nexport type StatusCheckKey = (typeof allowedStatusCheckStrings)[number];\ntype UserEnv = Record<string, string>;\n\n/**\n * Computed properties, for internal use only\n */\nexport interface RenovateInternalConfig {\n /** computed base branch from patterns - for internal use only */\n baseBranches?: string[];\n currentCompatibility?: string;\n datasource?: string;\n hasBaseBranches?: boolean;\n isFork?: boolean;\n isVulnerabilityAlert?: boolean;\n\n /** What is this used for? */\n remediations?: unknown;\n /** What is this used for? */\n vulnerabilityAlertsOnly?: boolean;\n}\n\n// TODO: Proper typings\n/**\n * Configuration that could be used either top-level in a repository config (or Global, Inherited or Shareable Preset configuration).\n *\n * This is a superset of any configuration that a Renovate user (not self-hosted administrator) can set.\n */\nexport interface RenovateConfig\n extends\n LegacyAdminConfig,\n RenovateSharedConfig,\n UpdateConfig<PackageRule>,\n AssigneesAndReviewersConfig,\n ConfigMigration,\n RenovateInternalConfig {\n s3Endpoint?: string;\n s3PathStyle?: boolean;\n reportFormatting?: boolean;\n reportPath?: string;\n reportType?: 'logging' | 'file' | 's3' | null;\n depName?: string;\n /** user configurable base branch patterns*/\n baseBranchPatterns?: string[];\n useBaseBranchConfig?: UseBaseBranchConfigType;\n baseBranch?: string;\n defaultBranch?: string;\n branchList?: string[];\n cloneSubmodules?: boolean;\n cloneSubmodulesFilter?: string[];\n description?: string | string[];\n overrideDescription?: string | string[];\n detectGlobalManagerConfig?: boolean;\n errors?: ValidationMessage[];\n forkModeDisallowMaintainerEdits?: boolean;\n forkProcessing?: 'auto' | 'enabled' | 'disabled';\n forkToken?: string;\n\n gitAuthor?: string;\n\n hostRules?: HostRule[];\n\n inheritConfig?: boolean;\n inheritConfigFileName?: string;\n inheritConfigRepoName?: string;\n inheritConfigStrict?: boolean;\n\n ignorePresets?: string[];\n\n fileList?: string[];\n configWarningReuseIssue?: boolean;\n dependencyDashboard?: boolean;\n dependencyDashboardAutoclose?: boolean;\n dependencyDashboardChecks?: Record<string, string>;\n dependencyDashboardIssue?: number;\n dependencyDashboardTitle?: string;\n dependencyDashboardHeader?: string;\n dependencyDashboardFooter?: string;\n dependencyDashboardLabels?: string[];\n dependencyDashboardOSVVulnerabilitySummary?: 'none' | 'all' | 'unresolved';\n dependencyDashboardReportAbandonment?: boolean;\n mode?: 'silent' | 'full';\n packageFile?: string;\n packageRules?: PackageRule[];\n postUpdateOptions?: string[];\n branchConcurrentLimit?: number | null;\n parentOrg?: string;\n prConcurrentLimit?: number;\n commitHourlyLimit?: number;\n prHourlyLimit?: number;\n\n printConfig?: boolean;\n\n pruneStaleBranches?: boolean;\n\n defaultRegistryUrls?: string[];\n registryUrls?: string[] | null;\n registryAliases?: Record<string, string>;\n\n /**\n * What is this used for?\n * @deprecated\n */\n renovateJsonPresent?: boolean;\n\n repoIsOnboarded?: boolean;\n repoIsActivated?: boolean;\n\n topLevelOrg?: string;\n updateInternalDeps?: boolean;\n updateType?: UpdateType;\n\n warnings?: ValidationMessage[];\n vulnerabilityAlerts?: RenovateSharedConfig;\n osvVulnerabilityAlerts?: boolean;\n vulnerabilitySeverity?: string;\n customManagers?: CustomManager[];\n customDatasources?: Record<string, CustomDatasourceConfig>;\n\n fetchChangeLogs?: FetchChangeLogsOptions;\n secrets?: Record<string, string>;\n variables?: Record<string, string>;\n\n constraints?: Partial<Record<ConstraintName, string>>;\n /**\n * Any specific overrides for the versioning for the `AdditionalConstraintName`s.\n */\n constraintsVersioning?: Partial<Record<AdditionalConstraintName, string>>;\n skipInstalls?: boolean | null;\n\n constraintsFiltering?: ConstraintsFilter;\n\n customizeDashboard?: Record<string, string>;\n\n statusCheckNames?: Record<StatusCheckKey, string | null>;\n statusCheckWhen?: Partial<Record<StatusCheckKey, StatusCheckWhen>>;\n /**\n * User configured environment variables that Renovate uses when executing package manager commands\n */\n env?: UserEnv;\n logLevelRemap?: LogLevelRemap[];\n\n branchTopic?: string;\n additionalBranchPrefix?: string;\n sharedVariableName?: string;\n minimumGroupSize?: number;\n configFileNames?: string[];\n minimumReleaseAgeBehaviour?: MinimumReleaseAgeBehaviour;\n toolSettings?: RepoToolSettingsOptions;\n}\n\nconst CustomDatasourceFormats = [\n 'html',\n 'json',\n 'plain',\n 'toml',\n 'yaml',\n] as const;\nexport type CustomDatasourceFormats = (typeof CustomDatasourceFormats)[number];\n\nexport interface CustomDatasourceConfig {\n defaultRegistryUrlTemplate?: string;\n format?: CustomDatasourceFormats;\n transformTemplates?: string[];\n}\n\n/**\n * The superset of all configuration that a self-hosted administrator can set, alongside all repository-level configuration.\n *\n */\nexport interface AllConfig\n extends RenovateConfig, GlobalOnlyConfigLegacy, RepoGlobalConfig {\n gitUrl?: GitUrlOption;\n password?: string;\n token?: string;\n username?: string;\n}\n\nexport interface AssigneesAndReviewersConfig {\n assigneesFromCodeOwners?: boolean;\n expandCodeOwnersGroups?: boolean;\n assignees?: string[];\n assigneesSampleSize?: number;\n ignoreReviewers?: string[];\n reviewersFromCodeOwners?: boolean;\n reviewers?: string[];\n reviewersSampleSize?: number;\n additionalReviewers?: string[];\n filterUnavailableUsers?: boolean;\n}\n\nexport type UpdateType =\n | 'major'\n | 'minor'\n | 'patch'\n | 'pin'\n | 'digest'\n | 'pinDigest'\n | 'lockFileMaintenance'\n | 'lockfileUpdate'\n | 'rollback'\n | 'bump'\n | 'replacement';\n\n// These are the update types which can have configuration\nexport const UpdateTypesOptions = [\n 'major',\n 'minor',\n 'patch',\n 'pin',\n 'digest',\n 'pinDigest',\n 'lockFileMaintenance',\n 'rollback',\n 'replacement',\n] as const;\n\nexport type UpdateTypeOptions = (typeof UpdateTypesOptions)[number];\n\nexport type FetchChangeLogsOptions = 'off' | 'branch' | 'pr';\n\nexport type MatchStringsStrategy = 'any' | 'recursive' | 'combination';\n\nexport type MergeStrategy =\n | 'auto'\n | 'fast-forward'\n | 'merge-commit'\n | 'rebase'\n | 'rebase-merge'\n | 'squash';\n\n// This list should be added to as any new unsafe execution commands should be permitted\nexport type AllowedUnsafeExecution =\n 'bazelModDeps' | 'goGenerate' | 'gradleWrapper' | 'mise' | 'pixi';\n\n// TODO: Proper typings\nexport interface PackageRule\n extends RenovateSharedConfig, RenovateInternalConfig, UpdateConfig {\n allowedVersions?: string;\n description?: string | string[];\n matchBaseBranches?: string[];\n matchCategories?: string[];\n matchConfidence?: MergeConfidence[];\n matchCurrentAge?: string;\n matchCurrentValue?: string;\n matchCurrentVersion?: string;\n matchDatasources?: string[];\n matchDepNames?: string[];\n matchDepTypes?: string[];\n matchFileNames?: string[];\n matchIsBreaking?: boolean;\n matchManagers?: string[];\n matchNewValue?: string;\n matchPackageNames?: string[];\n matchRepositories?: string[];\n matchSourceUrls?: string[];\n matchRegistryUrls?: string[];\n matchUpdateTypes?: UpdateType[];\n matchJsonata?: string[];\n overrideDatasource?: string;\n overrideDepName?: string;\n overridePackageName?: string;\n registryUrls?: string[] | null;\n replacementName?: string;\n replacementVersion?: string;\n sourceUrl?: string;\n sourceDirectory?: string;\n vulnerabilitySeverity?: string;\n vulnerabilityFixVersion?: string;\n}\n\nexport interface ValidationMessage {\n // Topic is either the known list of topics, or a dynamically generated one\n topic: ConfigValidationTopic | (string & {});\n message: string;\n}\n\nexport type AllowedParents =\n | '.'\n | 'bumpVersions'\n | 'customDatasources'\n | 'customManagers'\n | 'hostRules'\n | 'logLevelRemap'\n | 'packageRules'\n | 'postUpgradeTasks'\n | 'vulnerabilityAlerts'\n | 'toolSettings'\n | ManagerName\n | UpdateTypeOptions;\nexport interface RenovateOptionBase {\n /**\n * If true, the option can only be configured by people with access to the Renovate instance.\n * Furthermore, the option should be documented in docs/usage/self-hosted-configuration.md.\n */\n globalOnly?: boolean;\n\n /**\n * If true, this option **MUST** be checked at the trust boundary: after resolving the full config that sets it, but **before** the value is applied.\n *\n * This is in addition to any existing config validation, and ensures that these options are re-validated due to their sensitive nature.\n *\n * A failure of that check **must** lead to a {@link ConfigValidationTopic.Security} error (which is then a full config validation error), stopping the Renovate run.\n *\n * After this check has been performed, additional filtering (for defence in depth) could be performed, but may not have an indication of what is repo- or preset-config vs global self-hosted config.\n */\n requiresCheckAtTrustBoundary?: boolean;\n\n inheritConfigSupport?: boolean;\n\n allowedValues?: string[];\n\n allowString?: boolean;\n\n cli?: boolean;\n\n description: string;\n\n env?: false | string;\n\n /**\n * Do not validate object children\n */\n freeChoice?: boolean;\n\n mergeable?: boolean;\n\n autogenerated?: boolean;\n\n name: string;\n\n parents?: AllowedParents[];\n\n stage?: RenovateConfigStage;\n\n experimental?: boolean;\n\n experimentalDescription?: string;\n\n experimentalIssues?: number[];\n\n advancedUse?: boolean;\n\n /**\n * This is used to add a deprecation message in the docs\n */\n deprecationMsg?: string;\n\n /**\n * For internal use only: add it to any config option that supports regex or glob matching\n */\n patternMatch?: boolean;\n\n /**\n * For internal use only: add it to any config option of type integer that supports negative integers\n */\n allowNegative?: boolean;\n\n /**\n * Managers which support this option, leave undefined if all managers support it.\n */\n supportedManagers?: string[];\n\n /**\n * Platforms which support this option, leave undefined if all platforms support it.\n */\n supportedPlatforms?: PlatformId[];\n\n /**\n * Conditions that must be met for this option to be required.\n */\n requiredIf?: RenovateRequiredOption[];\n\n /**\n * If true, the option's value supports Renovate templating.\n * @see https://docs.renovatebot.com/templates/\n */\n supportsTemplating?: boolean;\n}\n\nexport interface RenovateRequiredOption {\n siblingProperties: { property: string; value: string }[];\n}\n\nexport interface RenovateArrayOption<\n T extends string | number | Record<string, unknown> = Record<string, unknown>,\n> extends RenovateOptionBase {\n default?: T[] | null;\n mergeable?: boolean;\n type: 'array';\n subType?: 'string' | 'object' | 'number';\n}\n\nexport interface RenovateStringArrayOption extends RenovateArrayOption<string> {\n format?: 'regex';\n subType: 'string';\n}\n\nexport interface RenovateNumberArrayOption extends RenovateArrayOption<number> {\n subType: 'number';\n}\n\nexport interface RenovateBooleanOption extends RenovateOptionBase {\n default?: boolean | null;\n type: 'boolean';\n}\n\nexport interface RenovateIntegerOption extends RenovateOptionBase {\n default?: number | null;\n type: 'integer';\n}\n\nexport interface RenovateStringOption extends RenovateOptionBase {\n default?: string | null;\n format?: 'regex';\n\n // Not used\n replaceLineReturns?: boolean;\n type: 'string';\n}\n\nexport interface RenovateObjectOption extends RenovateOptionBase {\n default?: any;\n additionalProperties?: Record<string, unknown> | boolean;\n mergeable?: boolean;\n type: 'object';\n}\n\nexport type RenovateOptions =\n | RenovateStringOption\n | RenovateNumberArrayOption\n | RenovateStringArrayOption\n | RenovateIntegerOption\n | RenovateBooleanOption\n | RenovateArrayOption\n | RenovateObjectOption;\n\nexport interface PackageRuleInputConfig extends RenovateConfig {\n versioning?: string;\n packageFile?: string;\n lockFiles?: string[];\n depType?: string;\n depTypes?: string[];\n depName?: string;\n packageName?: string | null;\n newValue?: string | null;\n currentValue?: string | null;\n currentVersion?: string;\n lockedVersion?: string;\n updateType?: UpdateType;\n mergeConfidenceLevel?: MergeConfidence | undefined;\n isBump?: boolean;\n isBreaking?: boolean;\n sourceUrl?: string | null;\n categories?: string[];\n baseBranch?: string;\n manager?: string;\n datasource?: string;\n effectiveDatasource?: string;\n packageRules?: (PackageRule & PackageRuleInputConfig)[];\n releaseTimestamp?: Timestamp | null;\n repository?: string;\n currentVersionAgeInDays?: number;\n currentVersionTimestamp?: string;\n enabled?: boolean;\n skipReason?: SkipReason;\n skipStage?: StageName;\n}\n\nexport interface ConfigMigration {\n configMigration?: boolean;\n}\n\nexport interface MigratedConfig {\n /**\n * Indicates whether there was a migration applied to the configuration.\n *\n * @returns\n * `false` if the configuration does not need migrating, and `migratedConfig` can be ignored\n * `true` if the configuration was migrated, and if so, `migratedConfig` should be used instead of the provided config\n */\n isMigrated: boolean;\n migratedConfig: RenovateConfig;\n}\n\nexport interface MigratedRenovateConfig extends RenovateConfig {\n endpoints?: HostRule[];\n pathRules: PackageRule[];\n packages: PackageRule[];\n\n node?: RenovateConfig;\n travis?: RenovateConfig;\n gradle?: RenovateConfig;\n}\n\nexport interface ManagerConfig extends RenovateConfig {\n manager: string;\n categories?: Category[];\n}\n\nexport interface ValidationResult {\n errors: ValidationMessage[];\n warnings: ValidationMessage[];\n}\n\nexport interface BumpVersionConfig {\n bumpType?: string;\n filePatterns: string[];\n matchStrings: string[];\n name?: string;\n}\n\n/**\n * Global Config for specified `toolSettings` options.\n *\n */\nexport interface GlobalToolSettingsOptions {\n /** An upper limit on what the Java Virtual Machine's maximum memory can be set to. Repositories can specify <= this value */\n jvmMaxMemory?: number;\n /** An upper limit on what the Java Virtual Machine's starting memory can be set to. Repositories can specify <= this value */\n jvmMemory?: number;\n /** An upper limit on what the Node.JS process' maximum memory can be set to. Repositories can specify <= this value */\n nodeMaxMemory?: number;\n}\n\n/**\n * Repository config options for `toolSettings` options.\n */\nexport interface RepoToolSettingsOptions {\n /** The maximum memory the Java Virtual Machine can use. If greater than the Global Self-Hosted configuration setting, it will be set to that limit **/\n jvmMaxMemory?: number;\n /** The starting memory the Java Virtual Machine can use. If greater than the Global Self-Hosted configuration setting, it will be set to that limit **/\n jvmMemory?: number;\n /** The maximum memory child Node.JS processes can use. If greater than the Global Self-Hosted configuration setting, it will be set to that limit **/\n nodeMaxMemory?: number;\n}\n"],"mappings":";AA6CA,MAAa,+BAA+B;CAC1C;CACA;CACA;AACF;AA4SA,MAAa,4BAA4B;CACvC;CACA;CACA;CACA;AACF;AA6MA,MAAa,qBAAqB;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../lib/config/types.ts"],"sourcesContent":["import type { Category, PlatformId } from '../constants/index.ts';\nimport type { LogLevelRemap } from '../logger/types.ts';\nimport type { ManagerName } from '../manager-list.generated.ts';\nimport type { CustomManager } from '../modules/manager/custom/types.ts';\nimport type {\n GitUrlOption,\n RepoSortMethod,\n SortMethod,\n} from '../modules/platform/types.ts';\nimport type {\n AutoMergeType,\n HostRule,\n Nullish,\n RangeStrategy,\n SkipReason,\n} from '../types/index.ts';\nimport type { StageName } from '../types/skip-reason.ts';\nimport type {\n AdditionalConstraintName,\n ConstraintName,\n ToolName,\n} from '../util/exec/types.ts';\nimport type { GitNoVerifyOption } from '../util/git/types.ts';\nimport type { MergeConfidence } from '../util/merge-confidence/types.ts';\nimport type { Timestamp } from '../util/timestamp.ts';\nimport type { ConfigValidationTopic } from './validation-helpers/types.ts';\n\nexport type RenovateConfigStage =\n 'global' | 'inherit' | 'repository' | 'package' | 'branch' | 'pr';\n\nexport type RenovateSplit =\n 'init' | 'onboarding' | 'extract' | 'lookup' | 'update';\n\nexport type RepositoryCacheConfig = 'disabled' | 'enabled' | 'reset';\nexport type RepositoryCacheType = 'local' | (string & {});\nexport type DryRunConfig = 'extract' | 'lookup' | 'full';\nexport type InternalHostAccess = 'allow' | 'warn' | 'block';\nexport type RequiredConfig = 'required' | 'optional' | 'ignored';\n\nexport interface GroupConfig extends Record<string, unknown> {\n branchName?: string;\n branchTopic?: string;\n}\n\nexport type RecreateWhen = 'auto' | 'never' | 'always';\nexport const allowedStatusCheckWhenValues = [\n 'always',\n 'never',\n 'failed',\n] as const;\nexport type StatusCheckWhen = (typeof allowedStatusCheckWhenValues)[number];\nexport type PlatformCommitOptions = 'auto' | 'disabled' | 'enabled';\n\nexport type BinarySource = 'docker' | 'global' | 'install' | 'hermit';\n\n// TODO: Proper typings\n/**\n * Any configuration that could be used either top-level in a repository config (or Global, Inherited or Shareable Preset configuration), or:\n *\n * - in a datasource-specific configuration\n * - in a manager-specific configuration\n * - in a Package Rule\n *\n * @see RenovateConfig for the superset of all configuration allowed in a given repository\n *\n */\nexport interface RenovateSharedConfig {\n $schema?: string;\n abandonmentThreshold?: Nullish<string>;\n addLabels?: string[];\n assignAutomerge?: boolean;\n autoApprove?: boolean;\n autoReplaceGlobalMatch?: boolean;\n automerge?: boolean;\n automergeSchedule?: string[];\n automergeStrategy?: MergeStrategy;\n automergeType?: AutoMergeType;\n azureWorkItemId?: number;\n azureWorkItemType?: string;\n branchName?: string;\n branchNameStrict?: boolean;\n branchPrefix?: string;\n branchPrefixOld?: string;\n bumpVersions?: BumpVersionConfig[];\n commitBody?: string;\n commitBodyTable?: boolean;\n commitMessage?: string;\n commitMessageAction?: string;\n commitMessageExtra?: string;\n commitMessageLowerCase?: 'auto' | 'never';\n commitMessagePrefix?: string;\n commitMessageTopic?: string;\n commitTrailers?: string[];\n confidential?: boolean;\n configValidationError?: boolean;\n changelogUrl?: string;\n dependencyDashboardApproval?: boolean;\n draftPR?: boolean;\n enabled?: boolean;\n enabledManagers?: string[];\n encrypted?: Record<string, string>;\n extends?: string[];\n extractVersion?: string;\n managerFilePatterns?: string[];\n followTag?: string;\n force?: RenovateConfig;\n gitIgnoredAuthors?: string[];\n group?: GroupConfig;\n groupName?: string;\n groupSingleUpdates?: boolean;\n groupSlug?: string;\n hashedBranchLength?: number;\n ignoreDeps?: string[];\n ignorePaths?: string[];\n ignoreTests?: boolean;\n ignoreUnstable?: boolean;\n includePaths?: string[];\n internalChecksAsSuccess?: boolean;\n internalChecksFilter?: 'strict' | 'flexible' | 'none';\n keepUpdatedLabel?: string;\n labels?: string[];\n manager?: string;\n milestone?: number;\n minimumReleaseAge?: Nullish<string>;\n minimumReleaseAgeBuffer?: Nullish<string>;\n npmrc?: string;\n npmrcMerge?: boolean;\n npmToken?: string;\n\n pinDigests?: boolean;\n platformAutomerge?: boolean;\n platformCommit?: PlatformCommitOptions;\n postUpgradeTasks?: PostUpgradeTasks;\n prBodyColumns?: string[];\n prBodyDefinitions?: Record<string, string>;\n prBodyHeadingDefinitions?: Record<string, string>;\n prBodyNotes?: string[];\n prCreation?: 'immediate' | 'not-pending' | 'status-success' | 'approval';\n prFooter?: string;\n prHeader?: string;\n prPriority?: number;\n prTitle?: string;\n prTitleStrict?: boolean;\n pruneBranchAfterAutomerge?: boolean;\n rangeStrategy?: RangeStrategy;\n rebaseLabel?: string;\n rebaseWhen?: string;\n recreateClosed?: boolean;\n recreateWhen?: RecreateWhen;\n repository?: string;\n repositoryCache?: RepositoryCacheConfig;\n repositoryCacheType?: RepositoryCacheType;\n respectLatest?: boolean;\n rollbackPrs?: boolean;\n schedule?: string[];\n semanticCommitScope?: string | null;\n semanticCommitType?: string;\n semanticCommits?: 'auto' | 'enabled' | 'disabled';\n separateMajorMinor?: boolean;\n separateMinorPatch?: boolean;\n separateMultipleMajor?: boolean;\n separateMultipleMinor?: boolean;\n skipArtifactsUpdate?: boolean;\n stopUpdatingLabel?: string;\n suppressNotifications?: string[];\n timezone?: string;\n unicodeEmoji?: boolean;\n updateNotScheduled?: boolean;\n versioning?: string;\n versionCompatibility?: string;\n}\n\n/**\n * Contains all options with globalOnly=true && inheritConfigSupport=true\n */\nexport interface GlobalInheritableConfig {\n bbUseDevelopmentBranch?: boolean;\n configFileNames?: string[];\n onboarding?: boolean;\n onboardingAutoCloseAge?: number;\n onboardingBranch?: string;\n onboardingCommitMessage?: string;\n onboardingConfig?: RenovateConfig;\n onboardingConfigFileName?: string;\n onboardingNoDeps?: 'auto' | 'enabled' | 'disabled';\n onboardingPrTitle?: string;\n requireConfig?: RequiredConfig;\n}\n\n// Config options used only within the global worker\n// The below should contain config options where stage=global\n/** @deprecated use `RepoGlobalConfig` instead **/\nexport interface GlobalOnlyConfigLegacy {\n autodiscover?: boolean;\n autodiscoverFilter?: string[] | string;\n autodiscoverNamespaces?: string[];\n autodiscoverProjects?: string[];\n autodiscoverTopics?: string[];\n baseDir?: string;\n cacheDir?: string;\n containerbaseDir?: string;\n detectHostRulesFromEnv?: boolean;\n dockerCliOptions?: string;\n endpoint?: string;\n exitCodeForErrors?: boolean;\n forceCli?: boolean;\n gitNoVerify?: GitNoVerifyOption[];\n gitPrivateKey?: string;\n gitPrivateKeyPassphrase?: string;\n globalExtends?: string[];\n mergeConfidenceDatasources?: string[];\n mergeConfidenceEndpoint?: string;\n platform?: PlatformId;\n processEnv?: Record<string, string>;\n prCommitsPerRunLimit?: number;\n privateKey?: string;\n privateKeyOld?: string;\n privateKeyPath?: string;\n privateKeyPathOld?: string;\n redisPrefix?: string;\n redisUrl?: string;\n repositories?: RenovateRepository[];\n useCloudMetadataServices?: boolean;\n deleteConfigFile?: boolean;\n deleteAdditionalConfigFile?: boolean;\n}\n\n/**\n * Any global-only configuration set by self-hosted administrators.\n *\n * Used within the repository worker.\n *\n * Should only contain config options where globalOnly=true.\n */\nexport interface RepoGlobalConfig extends GlobalInheritableConfig {\n allowedCommands?: string[];\n allowCustomCrateGitRegistries?: boolean;\n allowPlugins?: boolean;\n allowScripts?: boolean;\n allowShellExecutorForPostUpgradeCommands?: boolean;\n allowedEnv?: string[];\n allowedHeaders?: string[];\n binarySource?: BinarySource;\n cacheDir?: string;\n cacheHardTtlMinutes?: number;\n cacheTtlOverride?: Record<string, number>;\n checkedBranches?: string[];\n containerbaseDir?: string;\n customEnvVariables?: Record<string, string>;\n dockerChildPrefix?: string;\n dockerCliOptions?: string;\n dockerSidecarImage?: string;\n dockerUser?: string;\n dryRun?: DryRunConfig;\n encryptedWarning?: string;\n endpoint?: string;\n executionTimeout?: number;\n exposeAllEnv?: boolean;\n gitTimeout?: number;\n githubTokenWarn?: boolean;\n includeMirrors?: boolean;\n inheritConfigTrusted?: boolean;\n internalHostAccess?: InternalHostAccess;\n migratePresets?: Record<string, string>;\n platform?: PlatformId;\n prCacheSyncMaxPages?: number;\n presetCachePersistence?: boolean;\n httpCacheTtlDays?: number;\n autodiscoverRepoSort?: RepoSortMethod;\n autodiscoverRepoOrder?: SortMethod;\n userAgent?: string;\n dockerMaxPages?: number;\n s3Endpoint?: string;\n s3PathStyle?: boolean;\n cachePrivatePackages?: boolean;\n repositoryCacheForceLocal?: boolean;\n configFileNames?: string[];\n ignorePrAuthor?: boolean;\n allowedUnsafeExecutions?: AllowedUnsafeExecution[];\n onboardingAutoCloseAge?: number;\n productLinks?: Record<string, string>;\n rebaseAllOpenBranches?: boolean;\n toolSettings?: GlobalToolSettingsOptions;\n}\n\n/**\n * Internal variables which are referenced from `GlobalConfig`, but are *not* user-configurable options.\n */\nexport interface InternalGlobalConfigOptions {\n localDir?: string;\n}\n\n/**\n * Those options are global only but still passed into the repository worker config.\n *\n * @deprecated https://github.com/renovatebot/renovate/issues/39693\n */\nexport interface LegacyAdminConfig {\n baseDir?: string;\n localDir?: string;\n\n logContext?: string;\n\n onboarding?: boolean;\n onboardingBranch?: string;\n onboardingNoDeps?: 'auto' | 'enabled' | 'disabled';\n onboardingRebaseCheckbox?: boolean;\n onboardingConfig?: RenovateConfig;\n onboardingConfigFileName?: string;\n\n optimizeForDisabled?: boolean;\n\n persistRepoData?: boolean;\n\n prCommitsPerRunLimit?: number;\n\n requireConfig?: RequiredConfig;\n\n useCloudMetadataServices?: boolean;\n\n writeDiscoveredRepos?: string;\n}\n\nexport type ExecutionMode = 'branch' | 'update';\n\nexport interface PostUpgradeTasks {\n commands?: string[];\n workingDirTemplate?: string;\n dataFileTemplate?: string;\n fileFilters?: string[];\n executionMode: ExecutionMode;\n installTools?: Partial<Record<ToolName, Record<never, never>>>;\n}\n\nexport type UpdateConfig<\n T extends RenovateSharedConfig = RenovateSharedConfig,\n> = Partial<Record<UpdateType, T | null>>;\n\nexport type RenovateRepositoryEntry = AllConfig & {\n repository: string;\n};\n\nexport type RenovateRepository = string | RenovateRepositoryEntry;\n\nexport type UseBaseBranchConfigType = 'merge' | 'none';\nexport type ConstraintsFilter = 'strict' | 'none';\nexport type MinimumReleaseAgeBehaviour =\n 'timestamp-required' | 'timestamp-optional';\n\nexport const allowedStatusCheckStrings = [\n 'minimumReleaseAge',\n 'mergeConfidence',\n 'configValidation',\n 'artifactError',\n] as const;\nexport type StatusCheckKey = (typeof allowedStatusCheckStrings)[number];\ntype UserEnv = Record<string, string>;\n\n/**\n * Computed properties, for internal use only\n */\nexport interface RenovateInternalConfig {\n /** computed base branch from patterns - for internal use only */\n baseBranches?: string[];\n currentCompatibility?: string;\n datasource?: string;\n hasBaseBranches?: boolean;\n isFork?: boolean;\n isVulnerabilityAlert?: boolean;\n\n /** What is this used for? */\n remediations?: unknown;\n /** What is this used for? */\n vulnerabilityAlertsOnly?: boolean;\n}\n\n// TODO: Proper typings\n/**\n * Configuration that could be used either top-level in a repository config (or Global, Inherited or Shareable Preset configuration).\n *\n * This is a superset of any configuration that a Renovate user (not self-hosted administrator) can set.\n */\nexport interface RenovateConfig\n extends\n LegacyAdminConfig,\n RenovateSharedConfig,\n UpdateConfig<PackageRule>,\n AssigneesAndReviewersConfig,\n ConfigMigration,\n RenovateInternalConfig {\n s3Endpoint?: string;\n s3PathStyle?: boolean;\n reportFormatting?: boolean;\n reportPath?: string;\n reportType?: 'logging' | 'file' | 's3' | null;\n depName?: string;\n /** user configurable base branch patterns*/\n baseBranchPatterns?: string[];\n useBaseBranchConfig?: UseBaseBranchConfigType;\n baseBranch?: string;\n defaultBranch?: string;\n branchList?: string[];\n cloneSubmodules?: boolean;\n cloneSubmodulesFilter?: string[];\n description?: string | string[];\n overrideDescription?: string | string[];\n detectGlobalManagerConfig?: boolean;\n errors?: ValidationMessage[];\n forkModeDisallowMaintainerEdits?: boolean;\n forkProcessing?: 'auto' | 'enabled' | 'disabled';\n forkToken?: string;\n\n gitAuthor?: string;\n\n hostRules?: HostRule[];\n\n inheritConfig?: boolean;\n inheritConfigFileName?: string;\n inheritConfigRepoName?: string;\n inheritConfigStrict?: boolean;\n\n ignorePresets?: string[];\n\n fileList?: string[];\n configWarningReuseIssue?: boolean;\n dependencyDashboard?: boolean;\n dependencyDashboardAutoclose?: boolean;\n dependencyDashboardChecks?: Record<string, string>;\n dependencyDashboardIssue?: number;\n dependencyDashboardTitle?: string;\n dependencyDashboardHeader?: string;\n dependencyDashboardFooter?: string;\n dependencyDashboardLabels?: string[];\n dependencyDashboardOSVVulnerabilitySummary?: 'none' | 'all' | 'unresolved';\n dependencyDashboardReportAbandonment?: boolean;\n mode?: 'silent' | 'full';\n packageFile?: string;\n packageRules?: PackageRule[];\n postUpdateOptions?: string[];\n branchConcurrentLimit?: number | null;\n parentOrg?: string;\n prConcurrentLimit?: number;\n commitHourlyLimit?: number;\n prHourlyLimit?: number;\n\n printConfig?: boolean;\n\n pruneStaleBranches?: boolean;\n\n defaultRegistryUrls?: string[];\n registryUrls?: string[] | null;\n registryAliases?: Record<string, string>;\n\n /**\n * What is this used for?\n * @deprecated\n */\n renovateJsonPresent?: boolean;\n\n repoIsOnboarded?: boolean;\n repoIsActivated?: boolean;\n\n topLevelOrg?: string;\n updateInternalDeps?: boolean;\n updateType?: UpdateType;\n\n warnings?: ValidationMessage[];\n vulnerabilityAlerts?: RenovateSharedConfig;\n osvVulnerabilityAlerts?: boolean;\n vulnerabilitySeverity?: string;\n customManagers?: CustomManager[];\n customDatasources?: Record<string, CustomDatasourceConfig>;\n\n fetchChangeLogs?: FetchChangeLogsOptions;\n secrets?: Record<string, string>;\n variables?: Record<string, string>;\n\n constraints?: Partial<Record<ConstraintName, string>>;\n /**\n * Any specific overrides for the versioning for the `AdditionalConstraintName`s.\n */\n constraintsVersioning?: Partial<Record<AdditionalConstraintName, string>>;\n skipInstalls?: boolean | null;\n\n constraintsFiltering?: ConstraintsFilter;\n\n customizeDashboard?: Record<string, string>;\n\n statusCheckNames?: Record<StatusCheckKey, string | null>;\n statusCheckWhen?: Partial<Record<StatusCheckKey, StatusCheckWhen>>;\n /**\n * User configured environment variables that Renovate uses when executing package manager commands\n */\n env?: UserEnv;\n logLevelRemap?: LogLevelRemap[];\n\n branchTopic?: string;\n additionalBranchPrefix?: string;\n sharedVariableName?: string;\n minimumGroupSize?: number;\n configFileNames?: string[];\n minimumReleaseAgeBehaviour?: MinimumReleaseAgeBehaviour;\n toolSettings?: RepoToolSettingsOptions;\n}\n\nconst CustomDatasourceFormats = [\n 'html',\n 'json',\n 'plain',\n 'toml',\n 'yaml',\n] as const;\nexport type CustomDatasourceFormats = (typeof CustomDatasourceFormats)[number];\n\nexport interface CustomDatasourceConfig {\n defaultRegistryUrlTemplate?: string;\n format?: CustomDatasourceFormats;\n transformTemplates?: string[];\n}\n\n/**\n * The superset of all configuration that a self-hosted administrator can set, alongside all repository-level configuration.\n *\n */\nexport interface AllConfig\n extends RenovateConfig, GlobalOnlyConfigLegacy, RepoGlobalConfig {\n gitUrl?: GitUrlOption;\n password?: string;\n token?: string;\n username?: string;\n}\n\nexport interface AssigneesAndReviewersConfig {\n assigneesFromCodeOwners?: boolean;\n expandCodeOwnersGroups?: boolean;\n assignees?: string[];\n assigneesSampleSize?: number;\n ignoreReviewers?: string[];\n reviewersFromCodeOwners?: boolean;\n reviewers?: string[];\n reviewersSampleSize?: number;\n additionalReviewers?: string[];\n filterUnavailableUsers?: boolean;\n}\n\nexport type UpdateType =\n | 'major'\n | 'minor'\n | 'patch'\n | 'pin'\n | 'digest'\n | 'pinDigest'\n | 'lockFileMaintenance'\n | 'lockfileUpdate'\n | 'rollback'\n | 'bump'\n | 'replacement';\n\n// These are the update types which can have configuration\nexport const UpdateTypesOptions = [\n 'major',\n 'minor',\n 'patch',\n 'pin',\n 'digest',\n 'pinDigest',\n 'lockFileMaintenance',\n 'rollback',\n 'replacement',\n] as const;\n\nexport type UpdateTypeOptions = (typeof UpdateTypesOptions)[number];\n\nexport type FetchChangeLogsOptions = 'off' | 'branch' | 'pr';\n\nexport type MatchStringsStrategy = 'any' | 'recursive' | 'combination';\n\nexport type MergeStrategy =\n | 'auto'\n | 'fast-forward'\n | 'merge-commit'\n | 'rebase'\n | 'rebase-merge'\n | 'squash';\n\n// This list should be added to as any new unsafe execution commands should be permitted\nexport type AllowedUnsafeExecution =\n 'bazelModDeps' | 'goGenerate' | 'gradleWrapper' | 'mise' | 'pixi';\n\n// TODO: Proper typings\nexport interface PackageRule\n extends RenovateSharedConfig, RenovateInternalConfig, UpdateConfig {\n allowedVersions?: string;\n description?: string | string[];\n matchBaseBranches?: string[];\n matchCategories?: string[];\n matchConfidence?: MergeConfidence[];\n matchCurrentAge?: string;\n matchCurrentValue?: string;\n matchCurrentVersion?: string;\n matchDatasources?: string[];\n matchDepNames?: string[];\n matchDepTypes?: string[];\n matchFileNames?: string[];\n matchIsBreaking?: boolean;\n matchManagers?: string[];\n matchNewValue?: string;\n matchPackageNames?: string[];\n matchRepositories?: string[];\n matchSourceUrls?: string[];\n matchRegistryUrls?: string[];\n matchUpdateTypes?: UpdateType[];\n matchJsonata?: string[];\n overrideDatasource?: string;\n overrideDepName?: string;\n overridePackageName?: string;\n registryUrls?: string[] | null;\n replacementName?: string;\n replacementVersion?: string;\n sourceUrl?: string;\n sourceDirectory?: string;\n vulnerabilitySeverity?: string;\n vulnerabilityFixVersion?: string;\n}\n\nexport interface ValidationMessage {\n // Topic is either the known list of topics, or a dynamically generated one\n topic: ConfigValidationTopic | (string & {});\n message: string;\n}\n\n/**\n * The kinds of place a config option can be used, which expand to the {@link AllowedParents} they cover.\n *\n * These are for the places which can't reasonably be listed, like every manager or every update type, so an option which is only valid in a specific object - like `hostRules` - should use `parents` instead.\n */\nexport const configScopes = [\n /** the top level of a repository, global, inherited or preset config */\n 'repo',\n /** a `packageRules` entry */\n 'packageRule',\n /** a manager's configuration object, like `npm` */\n 'manager',\n /** an update type's configuration object, like `major` */\n 'updateType',\n /** the `vulnerabilityAlerts` configuration object */\n 'vulnerabilityAlert',\n /** the `group` configuration object, which is merged into an update when it's grouped */\n 'group',\n] as const;\n\nexport type ConfigScope = (typeof configScopes)[number];\n\nexport type AllowedParents =\n | '.'\n | 'bumpVersions'\n | 'group'\n | 'customDatasources'\n | 'customManagers'\n | 'hostRules'\n | 'logLevelRemap'\n | 'packageRules'\n | 'postUpgradeTasks'\n | 'vulnerabilityAlerts'\n | 'toolSettings'\n | ManagerName\n | UpdateTypeOptions;\nexport interface RenovateOptionBase {\n /**\n * If true, the option can only be configured by people with access to the Renovate instance.\n * Furthermore, the option should be documented in docs/usage/self-hosted-configuration.md.\n */\n globalOnly?: boolean;\n\n /**\n * If true, this option **MUST** be checked at the trust boundary: after resolving the full config that sets it, but **before** the value is applied.\n *\n * This is in addition to any existing config validation, and ensures that these options are re-validated due to their sensitive nature.\n *\n * A failure of that check **must** lead to a {@link ConfigValidationTopic.Security} error (which is then a full config validation error), stopping the Renovate run.\n *\n * After this check has been performed, additional filtering (for defence in depth) could be performed, but may not have an indication of what is repo- or preset-config vs global self-hosted config.\n */\n requiresCheckAtTrustBoundary?: boolean;\n\n inheritConfigSupport?: boolean;\n\n allowedValues?: string[];\n\n allowString?: boolean;\n\n cli?: boolean;\n\n description: string;\n\n env?: false | string;\n\n /**\n * Do not validate object children\n */\n freeChoice?: boolean;\n\n mergeable?: boolean;\n\n autogenerated?: boolean;\n\n name: string;\n\n parents?: AllowedParents[];\n\n /**\n * The kinds of place this option can be used, which are expanded alongside any `parents`.\n *\n * An option which declares neither is treated as valid anywhere, which is what we're working towards removing in #43020.\n */\n scopes?: ConfigScope[];\n\n stage?: RenovateConfigStage;\n\n experimental?: boolean;\n\n experimentalDescription?: string;\n\n experimentalIssues?: number[];\n\n advancedUse?: boolean;\n\n /**\n * This is used to add a deprecation message in the docs\n */\n deprecationMsg?: string;\n\n /**\n * For internal use only: add it to any config option that supports regex or glob matching\n */\n patternMatch?: boolean;\n\n /**\n * For internal use only: add it to any config option of type integer that supports negative integers\n */\n allowNegative?: boolean;\n\n /**\n * Whether the option can be set to `null`.\n *\n * This is only needed if the default is not `null` (which makes this implied).\n */\n nullable?: boolean;\n\n /**\n * Managers which support this option, leave undefined if all managers support it.\n */\n supportedManagers?: string[];\n\n /**\n * Platforms which support this option, leave undefined if all platforms support it.\n */\n supportedPlatforms?: PlatformId[];\n\n /**\n * Conditions that must be met for this option to be required.\n */\n requiredIf?: RenovateRequiredOption[];\n\n /**\n * If true, the option's value supports Renovate templating.\n * @see https://docs.renovatebot.com/templates/\n */\n supportsTemplating?: boolean;\n}\n\nexport interface RenovateRequiredOption {\n siblingProperties: { property: string; value: string }[];\n}\n\nexport interface RenovateArrayOption<\n T extends string | number | Record<string, unknown> = Record<string, unknown>,\n> extends RenovateOptionBase {\n default?: T[] | null;\n mergeable?: boolean;\n type: 'array';\n subType?: 'string' | 'object' | 'number';\n}\n\nexport interface RenovateStringArrayOption extends RenovateArrayOption<string> {\n format?: 'regex';\n subType: 'string';\n}\n\nexport interface RenovateNumberArrayOption extends RenovateArrayOption<number> {\n subType: 'number';\n}\n\nexport interface RenovateBooleanOption extends RenovateOptionBase {\n default?: boolean | null;\n type: 'boolean';\n}\n\nexport interface RenovateIntegerOption extends RenovateOptionBase {\n default?: number | null;\n type: 'integer';\n}\n\nexport interface RenovateStringOption extends RenovateOptionBase {\n default?: string | null;\n format?: 'regex';\n\n // Not used\n replaceLineReturns?: boolean;\n type: 'string';\n}\n\nexport interface RenovateObjectOption extends RenovateOptionBase {\n default?: any;\n additionalProperties?: Record<string, unknown> | boolean;\n\n /**\n * The keys the object accepts, for an option whose keys are a known set rather than the user's choice.\n */\n properties?: Record<string, unknown>;\n mergeable?: boolean;\n type: 'object';\n}\n\nexport type RenovateOptions =\n | RenovateStringOption\n | RenovateNumberArrayOption\n | RenovateStringArrayOption\n | RenovateIntegerOption\n | RenovateBooleanOption\n | RenovateArrayOption\n | RenovateObjectOption;\n\nexport interface PackageRuleInputConfig extends RenovateConfig {\n versioning?: string;\n packageFile?: string;\n lockFiles?: string[];\n depType?: string;\n depTypes?: string[];\n depName?: string;\n packageName?: string | null;\n newValue?: string | null;\n currentValue?: string | null;\n currentVersion?: string;\n lockedVersion?: string;\n updateType?: UpdateType;\n mergeConfidenceLevel?: MergeConfidence | undefined;\n isBump?: boolean;\n isBreaking?: boolean;\n sourceUrl?: string | null;\n categories?: string[];\n baseBranch?: string;\n manager?: string;\n datasource?: string;\n effectiveDatasource?: string;\n packageRules?: (PackageRule & PackageRuleInputConfig)[];\n releaseTimestamp?: Timestamp | null;\n repository?: string;\n currentVersionAgeInDays?: number;\n currentVersionTimestamp?: string;\n enabled?: boolean;\n skipReason?: SkipReason;\n skipStage?: StageName;\n}\n\nexport interface ConfigMigration {\n configMigration?: boolean;\n}\n\nexport interface MigratedConfig {\n /**\n * Indicates whether there was a migration applied to the configuration.\n *\n * @returns\n * `false` if the configuration does not need migrating, and `migratedConfig` can be ignored\n * `true` if the configuration was migrated, and if so, `migratedConfig` should be used instead of the provided config\n */\n isMigrated: boolean;\n migratedConfig: RenovateConfig;\n}\n\nexport interface MigratedRenovateConfig extends RenovateConfig {\n endpoints?: HostRule[];\n pathRules: PackageRule[];\n packages: PackageRule[];\n\n node?: RenovateConfig;\n travis?: RenovateConfig;\n gradle?: RenovateConfig;\n}\n\nexport interface ManagerConfig extends RenovateConfig {\n manager: string;\n categories?: Category[];\n}\n\nexport interface ValidationResult {\n errors: ValidationMessage[];\n warnings: ValidationMessage[];\n}\n\nexport interface BumpVersionConfig {\n bumpType?: string;\n filePatterns: string[];\n matchStrings: string[];\n name?: string;\n}\n\n/**\n * Global Config for specified `toolSettings` options.\n *\n */\nexport interface GlobalToolSettingsOptions {\n /** An upper limit on what the Java Virtual Machine's maximum memory can be set to. Repositories can specify <= this value */\n jvmMaxMemory?: number;\n /** An upper limit on what the Java Virtual Machine's starting memory can be set to. Repositories can specify <= this value */\n jvmMemory?: number;\n /** An upper limit on what the Node.JS process' maximum memory can be set to. Repositories can specify <= this value */\n nodeMaxMemory?: number;\n}\n\n/**\n * Repository config options for `toolSettings` options.\n */\nexport interface RepoToolSettingsOptions {\n /** The maximum memory the Java Virtual Machine can use. If greater than the Global Self-Hosted configuration setting, it will be set to that limit **/\n jvmMaxMemory?: number;\n /** The starting memory the Java Virtual Machine can use. If greater than the Global Self-Hosted configuration setting, it will be set to that limit **/\n jvmMemory?: number;\n /** The maximum memory child Node.JS processes can use. If greater than the Global Self-Hosted configuration setting, it will be set to that limit **/\n nodeMaxMemory?: number;\n}\n"],"mappings":";AA6CA,MAAa,+BAA+B;CAC1C;CACA;CACA;AACF;AA4SA,MAAa,4BAA4B;CACvC;CACA;CACA;CACA;AACF;AA6MA,MAAa,qBAAqB;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;;;;;AAmEA,MAAa,eAAe;CAE1B;CAEA;CAEA;CAEA;CAEA;CAEA;AACF"}
@@ -5,10 +5,13 @@ import { coerceArray } from "../util/array.js";
5
5
  import { anyMatchRegexOrGlobList, getRegexPredicate, isRegexMatch, matchRegexOrGlobList } from "../util/string-match.js";
6
6
  import { logger } from "../logger/index.js";
7
7
  import { clone } from "../util/clone.js";
8
- import { AllManagersListLiteral, CustomManagersListLiteral } from "../manager-list.generated.js";
8
+ import { getToolConfig } from "../util/exec/containerbase.js";
9
+ import { isConstraintName, isToolName } from "../util/exec/types.js";
9
10
  import { AllVersioningsListLiteral } from "../versioning-list.generated.js";
10
11
  import { supportedDatasources } from "./presets/internal/merge-confidence.preset.js";
11
12
  import { allowedStatusCheckStrings, allowedStatusCheckWhenValues } from "./types.js";
13
+ import { AllManagersListLiteral, CustomManagersListLiteral } from "../manager-list.generated.js";
14
+ import { describeAllowedLocations, getAllowedParents } from "./options/scopes.js";
12
15
  import { getOptions } from "./options/index.js";
13
16
  import { parseUrl } from "../util/url.js";
14
17
  import { instrument } from "../instrumentation/index.js";
@@ -16,8 +19,6 @@ import { migrateConfig } from "./migration.js";
16
19
  import { validate } from "../util/template/index.js";
17
20
  import { isCustomManager } from "../modules/manager/custom/index.js";
18
21
  import { packageCacheNamespaces } from "../util/cache/package/namespaces.js";
19
- import { getToolConfig } from "../util/exec/containerbase.js";
20
- import { isConstraintName, isToolName } from "../util/exec/types.js";
21
22
  import { isValidCommitTrailer } from "../util/git/commit-trailers.js";
22
23
  import { getExpression } from "../util/jsonata.js";
23
24
  import { hasValidSchedule, hasValidTimezone } from "../workers/repository/update/branch/schedule.js";
@@ -33,6 +34,7 @@ const options = getOptions();
33
34
  let optionsInitialized = false;
34
35
  let optionTypes;
35
36
  let optionParents;
37
+ let optionLocations;
36
38
  let optionGlobals;
37
39
  let optionInherits;
38
40
  let optionRegexOrGlob;
@@ -90,6 +92,7 @@ function isGlobalOption(key) {
90
92
  function initOptions() {
91
93
  if (optionsInitialized) return;
92
94
  optionParents = {};
95
+ optionLocations = {};
93
96
  optionInherits = /* @__PURE__ */ new Set();
94
97
  optionTypes = {};
95
98
  optionRegexOrGlob = /* @__PURE__ */ new Set();
@@ -98,7 +101,11 @@ function initOptions() {
98
101
  optionSupportsTemplating = /* @__PURE__ */ new Set();
99
102
  for (const option of options) {
100
103
  optionTypes[option.name] = option.type;
101
- if (option.parents) optionParents[option.name] = option.parents;
104
+ const parents = getAllowedParents(option);
105
+ if (parents) {
106
+ optionParents[option.name] = parents;
107
+ optionLocations[option.name] = describeAllowedLocations(option);
108
+ }
102
109
  if (option.inheritConfigSupport) optionInherits.add(option.name);
103
110
  if (option.patternMatch) optionRegexOrGlob.add(option.name);
104
111
  if (option.globalOnly) optionGlobals.add(option.name);
@@ -218,7 +225,7 @@ async function validateConfig(configType, config, isPreset, parentPath) {
218
225
  }
219
226
  const parentName = parentPath && repoEntryRe.test(parentPath) ? "." : getParentName(parentPath);
220
227
  if (!isPreset && parentName && optionParents[key] && !optionParents[key].includes(parentName)) {
221
- const message = `"${key}" can't be used in "${parentName}". Allowed objects: ${optionParents[key]?.toSorted().join(", ")}.`;
228
+ const message = `"${key}" can't be used ${parentName === "." ? "at the top level of a config" : `in "${parentName}"`}, as it can only be used ${optionLocations[key]}.`;
222
229
  warnings.push({
223
230
  topic: `${parentPath ? `${parentPath}.` : ""}${key}`,
224
231
  message