renovate 40.0.0-next.2 → 40.0.0-next.21

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 (294) hide show
  1. package/dist/config/decrypt/legacy.js +0 -1
  2. package/dist/config/decrypt/legacy.js.map +1 -1
  3. package/dist/config/decrypt.d.ts +3 -1
  4. package/dist/config/decrypt.js +56 -13
  5. package/dist/config/decrypt.js.map +1 -1
  6. package/dist/config/migrate-validate.js +3 -2
  7. package/dist/config/migrate-validate.js.map +1 -1
  8. package/dist/config/migration.js +2 -1
  9. package/dist/config/migration.js.map +1 -1
  10. package/dist/config/migrations/custom/rebase-stale-prs-migration.js +1 -1
  11. package/dist/config/migrations/custom/rebase-stale-prs-migration.js.map +1 -1
  12. package/dist/config/options/index.js +3 -3
  13. package/dist/config/options/index.js.map +1 -1
  14. package/dist/config/parse.js +2 -2
  15. package/dist/config/parse.js.map +1 -1
  16. package/dist/config/presets/gitea/index.js +0 -1
  17. package/dist/config/presets/gitea/index.js.map +1 -1
  18. package/dist/config/presets/github/index.js +0 -1
  19. package/dist/config/presets/github/index.js.map +1 -1
  20. package/dist/config/presets/gitlab/index.js +1 -1
  21. package/dist/config/presets/gitlab/index.js.map +1 -1
  22. package/dist/config/presets/http/index.js +1 -2
  23. package/dist/config/presets/http/index.js.map +1 -1
  24. package/dist/config/presets/index.js +0 -7
  25. package/dist/config/presets/index.js.map +1 -1
  26. package/dist/config/presets/internal/custom-managers.js +3 -4
  27. package/dist/config/presets/internal/custom-managers.js.map +1 -1
  28. package/dist/config/presets/internal/index.js +1 -3
  29. package/dist/config/presets/internal/index.js.map +1 -1
  30. package/dist/config/schema.d.ts +2 -2
  31. package/dist/config/validation.js +3 -5
  32. package/dist/config/validation.js.map +1 -1
  33. package/dist/config-validator.js +0 -1
  34. package/dist/config-validator.js.map +1 -1
  35. package/dist/constants/category.js +0 -1
  36. package/dist/constants/category.js.map +1 -1
  37. package/dist/data/monorepo.json +2 -1
  38. package/dist/instrumentation/index.js +5 -3
  39. package/dist/instrumentation/index.js.map +1 -1
  40. package/dist/instrumentation/utils.js +1 -1
  41. package/dist/instrumentation/utils.js.map +1 -1
  42. package/dist/logger/cmd-serializer.js +0 -1
  43. package/dist/logger/cmd-serializer.js.map +1 -1
  44. package/dist/logger/config-serializer.js +0 -1
  45. package/dist/logger/config-serializer.js.map +1 -1
  46. package/dist/logger/index.js +0 -3
  47. package/dist/logger/index.js.map +1 -1
  48. package/dist/logger/once.js +4 -2
  49. package/dist/logger/once.js.map +1 -1
  50. package/dist/logger/pretty-stdout.js +0 -1
  51. package/dist/logger/pretty-stdout.js.map +1 -1
  52. package/dist/logger/renovate-logger.js +1 -1
  53. package/dist/logger/renovate-logger.js.map +1 -1
  54. package/dist/logger/utils.js +6 -11
  55. package/dist/logger/utils.js.map +1 -1
  56. package/dist/modules/datasource/artifactory/index.js +1 -1
  57. package/dist/modules/datasource/artifactory/index.js.map +1 -1
  58. package/dist/modules/datasource/azure-pipelines-tasks/index.js +11 -1
  59. package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
  60. package/dist/modules/datasource/azure-pipelines-tasks/schema.d.ts +16 -0
  61. package/dist/modules/datasource/azure-pipelines-tasks/schema.js +2 -0
  62. package/dist/modules/datasource/azure-pipelines-tasks/schema.js.map +1 -1
  63. package/dist/modules/datasource/crate/index.js +1 -1
  64. package/dist/modules/datasource/crate/index.js.map +1 -1
  65. package/dist/modules/datasource/custom/formats/html.js +1 -1
  66. package/dist/modules/datasource/custom/formats/html.js.map +1 -1
  67. package/dist/modules/datasource/custom/formats/yaml.js +1 -1
  68. package/dist/modules/datasource/custom/formats/yaml.js.map +1 -1
  69. package/dist/modules/datasource/custom/schema.d.ts +5 -5
  70. package/dist/modules/datasource/deb/index.js +1 -1
  71. package/dist/modules/datasource/deb/index.js.map +1 -1
  72. package/dist/modules/datasource/deno/schema.d.ts +8 -8
  73. package/dist/modules/datasource/docker/common.js +1 -1
  74. package/dist/modules/datasource/docker/common.js.map +1 -1
  75. package/dist/modules/datasource/docker/index.js +5 -3
  76. package/dist/modules/datasource/docker/index.js.map +1 -1
  77. package/dist/modules/datasource/docker/schema.d.ts +32 -32
  78. package/dist/modules/datasource/galaxy/schema.d.ts +1 -1
  79. package/dist/modules/datasource/galaxy-collection/schema.d.ts +3 -3
  80. package/dist/modules/datasource/gitea-releases/schema.d.ts +4 -4
  81. package/dist/modules/datasource/gitea-tags/schema.d.ts +4 -4
  82. package/dist/modules/datasource/github-release-attachments/index.js +2 -2
  83. package/dist/modules/datasource/github-release-attachments/index.js.map +1 -1
  84. package/dist/modules/datasource/go/base.js +1 -1
  85. package/dist/modules/datasource/go/base.js.map +1 -1
  86. package/dist/modules/datasource/go/releases-goproxy.js +1 -1
  87. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  88. package/dist/modules/datasource/golang-version/index.js +1 -1
  89. package/dist/modules/datasource/golang-version/index.js.map +1 -1
  90. package/dist/modules/datasource/hex/schema.d.ts +11 -11
  91. package/dist/modules/datasource/hexpm-bob/index.js +1 -1
  92. package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
  93. package/dist/modules/datasource/index.js +2 -2
  94. package/dist/modules/datasource/index.js.map +1 -1
  95. package/dist/modules/datasource/maven/util.js +1 -1
  96. package/dist/modules/datasource/maven/util.js.map +1 -1
  97. package/dist/modules/datasource/nuget/v2.js +1 -1
  98. package/dist/modules/datasource/nuget/v2.js.map +1 -1
  99. package/dist/modules/datasource/nuget/v3.js +1 -1
  100. package/dist/modules/datasource/nuget/v3.js.map +1 -1
  101. package/dist/modules/datasource/packagist/schema.d.ts +30 -30
  102. package/dist/modules/datasource/pod/index.js +1 -1
  103. package/dist/modules/datasource/pod/index.js.map +1 -1
  104. package/dist/modules/datasource/pypi/index.js +1 -1
  105. package/dist/modules/datasource/pypi/index.js.map +1 -1
  106. package/dist/modules/datasource/ruby-version/index.js +1 -1
  107. package/dist/modules/datasource/ruby-version/index.js.map +1 -1
  108. package/dist/modules/datasource/rubygems/index.js +1 -1
  109. package/dist/modules/datasource/rubygems/index.js.map +1 -1
  110. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js +2 -2
  111. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js.map +1 -1
  112. package/dist/modules/datasource/terraform-provider/index.js +1 -1
  113. package/dist/modules/datasource/terraform-provider/index.js.map +1 -1
  114. package/dist/modules/datasource/unity3d/index.d.ts +4 -1
  115. package/dist/modules/datasource/unity3d/index.js +36 -42
  116. package/dist/modules/datasource/unity3d/index.js.map +1 -1
  117. package/dist/modules/datasource/unity3d/schema.d.ts +47 -0
  118. package/dist/modules/datasource/unity3d/schema.js +17 -0
  119. package/dist/modules/datasource/unity3d/schema.js.map +1 -0
  120. package/dist/modules/manager/argocd/schema.d.ts +10 -10
  121. package/dist/modules/manager/azure-pipelines/schema.d.ts +10 -10
  122. package/dist/modules/manager/batect/schema.d.ts +6 -6
  123. package/dist/modules/manager/batect-wrapper/artifacts.js +1 -1
  124. package/dist/modules/manager/batect-wrapper/artifacts.js.map +1 -1
  125. package/dist/modules/manager/bazel/rules/docker.d.ts +9 -9
  126. package/dist/modules/manager/bazel/rules/git.d.ts +10 -10
  127. package/dist/modules/manager/bazel/rules/git.js +7 -1
  128. package/dist/modules/manager/bazel/rules/git.js.map +1 -1
  129. package/dist/modules/manager/bazel/rules/go.d.ts +5 -5
  130. package/dist/modules/manager/bazel/rules/oci.d.ts +3 -3
  131. package/dist/modules/manager/bazel-module/parser/fragments.d.ts +40 -40
  132. package/dist/modules/manager/bazel-module/parser/maven.d.ts +27 -27
  133. package/dist/modules/manager/bazel-module/parser/oci.d.ts +17 -17
  134. package/dist/modules/manager/bazel-module/rules.d.ts +40 -40
  135. package/dist/modules/manager/bundler/artifacts.js.map +1 -1
  136. package/dist/modules/manager/cargo/schema.d.ts +100 -100
  137. package/dist/modules/manager/circleci/schema.d.ts +6 -6
  138. package/dist/modules/manager/composer/schema.d.ts +40 -40
  139. package/dist/modules/manager/composer/utils.js +9 -6
  140. package/dist/modules/manager/composer/utils.js.map +1 -1
  141. package/dist/modules/manager/crossplane/schema.d.ts +2 -2
  142. package/dist/modules/manager/custom/jsonata/index.js +4 -0
  143. package/dist/modules/manager/custom/jsonata/index.js.map +1 -1
  144. package/dist/modules/manager/custom/jsonata/schema.d.ts +7 -7
  145. package/dist/modules/manager/devbox/artifacts.d.ts +1 -1
  146. package/dist/modules/manager/devbox/artifacts.js +29 -11
  147. package/dist/modules/manager/devbox/artifacts.js.map +1 -1
  148. package/dist/modules/manager/fingerprint.generated.js +68 -68
  149. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  150. package/dist/modules/manager/fleet/schema.d.ts +12 -12
  151. package/dist/modules/manager/flux/schema.d.ts +50 -50
  152. package/dist/modules/manager/glasskube/schema.d.ts +8 -8
  153. package/dist/modules/manager/gradle-wrapper/artifacts.js +1 -1
  154. package/dist/modules/manager/gradle-wrapper/artifacts.js.map +1 -1
  155. package/dist/modules/manager/maven/extract.js +3 -1
  156. package/dist/modules/manager/maven/extract.js.map +1 -1
  157. package/dist/modules/manager/mise/extract.js +1 -1
  158. package/dist/modules/manager/mise/extract.js.map +1 -1
  159. package/dist/modules/manager/nix/schema.d.ts +24 -24
  160. package/dist/modules/manager/npm/schema.d.ts +13 -13
  161. package/dist/modules/manager/nuget/schema.d.ts +8 -8
  162. package/dist/modules/manager/ocb/schema.d.ts +6 -6
  163. package/dist/modules/manager/pep621/schema.d.ts +55 -55
  164. package/dist/modules/manager/pep621/utils.js +1 -1
  165. package/dist/modules/manager/pep621/utils.js.map +1 -1
  166. package/dist/modules/manager/poetry/artifacts.js +3 -3
  167. package/dist/modules/manager/poetry/artifacts.js.map +1 -1
  168. package/dist/modules/manager/poetry/extract.js +2 -1
  169. package/dist/modules/manager/poetry/extract.js.map +1 -1
  170. package/dist/modules/manager/poetry/schema.d.ts +48 -48
  171. package/dist/modules/manager/sveltos/schema.d.ts +12 -12
  172. package/dist/modules/manager/terraform/lockfile/hash.d.ts +1 -1
  173. package/dist/modules/manager/vendir/schema.d.ts +27 -27
  174. package/dist/modules/platform/api.d.ts +1 -1
  175. package/dist/modules/platform/bitbucket/index.d.ts +1 -0
  176. package/dist/modules/platform/bitbucket/index.js +6 -1
  177. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  178. package/dist/modules/platform/bitbucket/schema.d.ts +17 -17
  179. package/dist/modules/platform/bitbucket-server/index.d.ts +1 -1
  180. package/dist/modules/platform/bitbucket-server/index.js +13 -11
  181. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  182. package/dist/modules/platform/bitbucket-server/schema.d.ts +75 -0
  183. package/dist/modules/platform/bitbucket-server/schema.js +14 -1
  184. package/dist/modules/platform/bitbucket-server/schema.js.map +1 -1
  185. package/dist/modules/platform/bitbucket-server/types.d.ts +2 -1
  186. package/dist/modules/platform/bitbucket-server/types.js.map +1 -1
  187. package/dist/modules/platform/bitbucket-server/utils.d.ts +0 -2
  188. package/dist/modules/platform/bitbucket-server/utils.js +1 -51
  189. package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
  190. package/dist/modules/platform/gerrit/client.js +1 -1
  191. package/dist/modules/platform/gerrit/client.js.map +1 -1
  192. package/dist/modules/platform/gitea/index.d.ts +1 -0
  193. package/dist/modules/platform/gitea/index.js +11 -0
  194. package/dist/modules/platform/gitea/index.js.map +1 -1
  195. package/dist/modules/platform/gitea/schema.d.ts +8 -8
  196. package/dist/modules/platform/github/common.d.ts +2 -0
  197. package/dist/modules/platform/github/common.js +16 -0
  198. package/dist/modules/platform/github/common.js.map +1 -1
  199. package/dist/modules/platform/github/index.d.ts +1 -1
  200. package/dist/modules/platform/github/index.js +6 -4
  201. package/dist/modules/platform/github/index.js.map +1 -1
  202. package/dist/modules/platform/github/issue.d.ts +12 -12
  203. package/dist/modules/platform/github/schema.d.ts +65 -65
  204. package/dist/modules/platform/gitlab/index.d.ts +1 -0
  205. package/dist/modules/platform/gitlab/index.js +9 -0
  206. package/dist/modules/platform/gitlab/index.js.map +1 -1
  207. package/dist/modules/platform/scm.d.ts +1 -1
  208. package/dist/modules/versioning/composer/index.js +10 -0
  209. package/dist/modules/versioning/composer/index.js.map +1 -1
  210. package/dist/modules/versioning/npm/index.js +2 -1
  211. package/dist/modules/versioning/npm/index.js.map +1 -1
  212. package/dist/modules/versioning/schema.js +1 -1
  213. package/dist/modules/versioning/schema.js.map +1 -1
  214. package/dist/modules/versioning/types.d.ts +4 -0
  215. package/dist/modules/versioning/types.js.map +1 -1
  216. package/dist/proxy.js +2 -1
  217. package/dist/proxy.js.map +1 -1
  218. package/dist/renovate.js +2 -2
  219. package/dist/renovate.js.map +1 -1
  220. package/dist/util/cache/package/decorator.js +2 -2
  221. package/dist/util/cache/package/decorator.js.map +1 -1
  222. package/dist/util/cache/package/redis.js +0 -1
  223. package/dist/util/cache/package/redis.js.map +1 -1
  224. package/dist/util/cache/repository/impl/base.d.ts +1 -1
  225. package/dist/util/exec/containerbase.js +12 -12
  226. package/dist/util/exec/containerbase.js.map +1 -1
  227. package/dist/util/github/graphql/query-adapters/releases-query-adapter.d.ts +5 -5
  228. package/dist/util/http/auth.js +0 -1
  229. package/dist/util/http/auth.js.map +1 -1
  230. package/dist/util/http/bitbucket-server.d.ts +5 -4
  231. package/dist/util/http/bitbucket-server.js +17 -20
  232. package/dist/util/http/bitbucket-server.js.map +1 -1
  233. package/dist/util/http/bitbucket.d.ts +6 -5
  234. package/dist/util/http/bitbucket.js +30 -31
  235. package/dist/util/http/bitbucket.js.map +1 -1
  236. package/dist/util/http/cache/abstract-http-cache-provider.js +1 -1
  237. package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
  238. package/dist/util/http/cache/schema.d.ts +2 -2
  239. package/dist/util/http/errors.d.ts +2 -0
  240. package/dist/util/http/errors.js +8 -0
  241. package/dist/util/http/errors.js.map +1 -0
  242. package/dist/util/http/gerrit.d.ts +6 -4
  243. package/dist/util/http/gerrit.js +11 -12
  244. package/dist/util/http/gerrit.js.map +1 -1
  245. package/dist/util/http/gitea.d.ts +5 -4
  246. package/dist/util/http/gitea.js +12 -13
  247. package/dist/util/http/gitea.js.map +1 -1
  248. package/dist/util/http/github.d.ts +14 -8
  249. package/dist/util/http/github.js +64 -60
  250. package/dist/util/http/github.js.map +1 -1
  251. package/dist/util/http/gitlab.d.ts +7 -5
  252. package/dist/util/http/gitlab.js +56 -46
  253. package/dist/util/http/gitlab.js.map +1 -1
  254. package/dist/util/http/got.d.ts +9 -0
  255. package/dist/util/http/got.js +54 -0
  256. package/dist/util/http/got.js.map +1 -0
  257. package/dist/util/http/host-rules.d.ts +2 -1
  258. package/dist/util/http/host-rules.js.map +1 -1
  259. package/dist/util/http/http.d.ts +93 -0
  260. package/dist/util/http/http.js +339 -0
  261. package/dist/util/http/http.js.map +1 -0
  262. package/dist/util/http/index.d.ts +6 -74
  263. package/dist/util/http/index.js +5 -359
  264. package/dist/util/http/index.js.map +1 -1
  265. package/dist/util/http/legacy.js +4 -1
  266. package/dist/util/http/legacy.js.map +1 -1
  267. package/dist/util/http/types.d.ts +9 -16
  268. package/dist/util/http/types.js.map +1 -1
  269. package/dist/util/string.d.ts +15 -0
  270. package/dist/util/string.js +75 -0
  271. package/dist/util/string.js.map +1 -1
  272. package/dist/util/toml.d.ts +1 -0
  273. package/dist/util/toml.js +6 -0
  274. package/dist/util/toml.js.map +1 -1
  275. package/dist/util/url.js +3 -8
  276. package/dist/util/url.js.map +1 -1
  277. package/dist/util/yaml.js +2 -6
  278. package/dist/util/yaml.js.map +1 -1
  279. package/dist/workers/global/config/parse/env.js +3 -2
  280. package/dist/workers/global/config/parse/env.js.map +1 -1
  281. package/dist/workers/global/config/parse/file.js +19 -9
  282. package/dist/workers/global/config/parse/file.js.map +1 -1
  283. package/dist/workers/global/config/parse/host-rules-from-env.js +6 -2
  284. package/dist/workers/global/config/parse/host-rules-from-env.js.map +1 -1
  285. package/dist/workers/repository/cache.js +0 -1
  286. package/dist/workers/repository/cache.js.map +1 -1
  287. package/dist/workers/repository/onboarding/pr/config-description.js +3 -1
  288. package/dist/workers/repository/onboarding/pr/config-description.js.map +1 -1
  289. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js +1 -1
  290. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js.map +1 -1
  291. package/dist/workers/repository/update/pr/changelog/gitlab/index.js +1 -1
  292. package/dist/workers/repository/update/pr/changelog/gitlab/index.js.map +1 -1
  293. package/package.json +44 -49
  294. package/renovate-schema.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../lib/config/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { allManagersList, getManagerList } from '../modules/manager';\nimport { isCustomManager } from '../modules/manager/custom';\nimport type { CustomManager } from '../modules/manager/custom/types';\nimport type { HostRule } from '../types';\nimport { getExpression } from '../util/jsonata';\nimport { regEx } from '../util/regex';\nimport {\n getRegexPredicate,\n isRegexMatch,\n matchRegexOrGlobList,\n} from '../util/string-match';\nimport * as template from '../util/template';\nimport { parseUrl } from '../util/url';\nimport {\n hasValidSchedule,\n hasValidTimezone,\n} from '../workers/repository/update/branch/schedule';\nimport { configFileNames } from './app-strings';\nimport { GlobalConfig } from './global';\nimport { migrateConfig } from './migration';\nimport { getOptions } from './options';\nimport { resolveConfigPresets } from './presets';\nimport { supportedDatasources } from './presets/internal/merge-confidence';\nimport type {\n AllowedParents,\n RenovateConfig,\n RenovateOptions,\n StatusCheckKey,\n ValidationMessage,\n ValidationResult,\n} from './types';\nimport { allowedStatusCheckStrings } from './types';\nimport * as managerValidator from './validation-helpers/managers';\nimport * as matchBaseBranchesValidator from './validation-helpers/match-base-branches';\nimport * as regexOrGlobValidator from './validation-helpers/regex-glob-matchers';\nimport {\n getParentName,\n isFalseGlobal,\n validateJSONataManagerFields,\n validateNumber,\n validatePlainObject,\n validateRegexManagerFields,\n} from './validation-helpers/utils';\n\nconst options = getOptions();\n\nlet optionsInitialized = false;\nlet optionTypes: Record<string, RenovateOptions['type']>;\nlet optionParents: Record<string, AllowedParents[]>;\nlet optionGlobals: Set<string>;\nlet optionInherits: Set<string>;\nlet optionRegexOrGlob: Set<string>;\nlet optionAllowsNegativeIntegers: Set<string>;\n\nconst managerList = getManagerList();\n\nconst topLevelObjects = [...managerList, 'env'];\n\nconst ignoredNodes = [\n '$schema',\n 'headers',\n 'depType',\n 'npmToken',\n 'packageFile',\n 'forkToken',\n 'repository',\n 'vulnerabilityAlertsOnly',\n 'vulnerabilityAlert',\n 'isVulnerabilityAlert',\n 'vulnerabilityFixVersion', // not intended to be used by end users but may be by Mend apps\n 'copyLocalLibs', // deprecated - functionality is now enabled by default\n 'prBody', // deprecated\n 'minimumConfidence', // undocumented feature flag\n];\nconst tzRe = regEx(/^:timezone\\((.+)\\)$/);\nconst rulesRe = regEx(/p.*Rules\\[\\d+\\]$/);\n\nfunction isManagerPath(parentPath: string): boolean {\n return (\n regEx(/^customManagers\\[[0-9]+]$/).test(parentPath) ||\n managerList.includes(parentPath)\n );\n}\n\nfunction isIgnored(key: string): boolean {\n return ignoredNodes.includes(key);\n}\n\nfunction getUnsupportedEnabledManagers(enabledManagers: string[]): string[] {\n return enabledManagers.filter(\n (manager) => !allManagersList.includes(manager.replace('custom.', '')),\n );\n}\n\nfunction getDeprecationMessage(option: string): string | undefined {\n const deprecatedOptions: Record<string, string | undefined> = {\n branchName: `Direct editing of branchName is now deprecated. Please edit branchPrefix, additionalBranchPrefix, or branchTopic instead`,\n commitMessage: `Direct editing of commitMessage is now deprecated. Please edit commitMessage's subcomponents instead.`,\n prTitle: `Direct editing of prTitle is now deprecated. Please edit commitMessage subcomponents instead as they will be passed through to prTitle.`,\n };\n return deprecatedOptions[option];\n}\n\nfunction isInhertConfigOption(key: string): boolean {\n return optionInherits.has(key);\n}\n\nfunction isRegexOrGlobOption(key: string): boolean {\n return optionRegexOrGlob.has(key);\n}\n\nfunction isGlobalOption(key: string): boolean {\n return optionGlobals.has(key);\n}\n\nfunction initOptions(): void {\n if (optionsInitialized) {\n return;\n }\n\n optionParents = {};\n optionInherits = new Set();\n optionTypes = {};\n optionRegexOrGlob = new Set();\n optionGlobals = new Set();\n optionAllowsNegativeIntegers = new Set();\n\n for (const option of options) {\n optionTypes[option.name] = option.type;\n\n if (option.parents) {\n optionParents[option.name] = option.parents;\n }\n\n if (option.inheritConfigSupport) {\n optionInherits.add(option.name);\n }\n\n if (option.patternMatch) {\n optionRegexOrGlob.add(option.name);\n }\n\n if (option.globalOnly) {\n optionGlobals.add(option.name);\n }\n\n if (option.allowNegative) {\n optionAllowsNegativeIntegers.add(option.name);\n }\n }\n\n optionsInitialized = true;\n}\n\nexport async function validateConfig(\n configType: 'global' | 'inherit' | 'repo',\n config: RenovateConfig,\n isPreset?: boolean,\n parentPath?: string,\n): Promise<ValidationResult> {\n initOptions();\n\n let errors: ValidationMessage[] = [];\n let warnings: ValidationMessage[] = [];\n\n for (const [key, val] of Object.entries(config)) {\n const currentPath = parentPath ? `${parentPath}.${key}` : key;\n // istanbul ignore if\n if (key === '__proto__') {\n errors.push({\n topic: 'Config security error',\n message: '__proto__',\n });\n continue;\n }\n if (\n parentPath &&\n parentPath !== 'onboardingConfig' &&\n topLevelObjects.includes(key)\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `The \"${key}\" object can only be configured at the top level of a config but was found inside \"${parentPath}\"`,\n });\n }\n\n if (isGlobalOption(key)) {\n if (configType === 'global') {\n await validateGlobalConfig(\n key,\n val,\n optionTypes[key],\n warnings,\n errors,\n currentPath,\n config,\n );\n continue;\n } else if (\n !isFalseGlobal(key, parentPath) &&\n !(configType === 'inherit' && isInhertConfigOption(key))\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `The \"${key}\" option is a global option reserved only for Renovate's global configuration and cannot be configured within a repository's config file.`,\n });\n continue;\n }\n }\n if (key === 'enabledManagers' && val) {\n const unsupportedManagers = getUnsupportedEnabledManagers(\n val as string[],\n );\n if (is.nonEmptyArray(unsupportedManagers)) {\n errors.push({\n topic: 'Configuration Error',\n message: `The following managers configured in enabledManagers are not supported: \"${unsupportedManagers.join(\n ', ',\n )}\"`,\n });\n }\n }\n if (key === 'fileMatch') {\n if (parentPath === undefined) {\n errors.push({\n topic: 'Config error',\n message: `\"fileMatch\" may not be defined at the top level of a config and must instead be within a manager block`,\n });\n } else if (!isManagerPath(parentPath)) {\n warnings.push({\n topic: 'Config warning',\n message: `\"fileMatch\" must be configured in a manager block and not here: ${parentPath}`,\n });\n }\n }\n if (\n !isIgnored(key) && // We need to ignore some reserved keys\n !(is as any).function(val) // Ignore all functions\n ) {\n if (getDeprecationMessage(key)) {\n warnings.push({\n topic: 'Deprecation Warning',\n message: getDeprecationMessage(key)!,\n });\n }\n const templateKeys = [\n 'branchName',\n 'commitBody',\n 'commitMessage',\n 'prTitle',\n 'semanticCommitScope',\n ];\n if ((key.endsWith('Template') || templateKeys.includes(key)) && val) {\n try {\n // TODO: validate string #22198\n let res = template.compile((val as string).toString(), config, false);\n res = template.compile(res, config, false);\n template.compile(res, config, false);\n } catch {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid template in config path: ${currentPath}`,\n });\n }\n }\n const parentName = getParentName(parentPath);\n if (\n !isPreset &&\n optionParents[key] &&\n !optionParents[key].includes(parentName as AllowedParents)\n ) {\n // TODO: types (#22198)\n const message = `${key} should only be configured within one of \"${optionParents[\n key\n ]?.join(' or ')}\" objects. Was found in ${parentName}`;\n warnings.push({\n topic: `${parentPath ? `${parentPath}.` : ''}${key}`,\n message,\n });\n }\n if (!optionTypes[key]) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid configuration option: ${currentPath}`,\n });\n } else if (key === 'schedule') {\n const [validSchedule, errorMessage] = hasValidSchedule(val as string[]);\n if (!validSchedule) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid ${currentPath}: \\`${errorMessage}\\``,\n });\n }\n } else if (\n [\n 'allowedVersions',\n 'matchCurrentVersion',\n 'matchCurrentValue',\n 'matchNewValue',\n ].includes(key) &&\n isRegexMatch(val)\n ) {\n if (!getRegexPredicate(val)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid regExp for ${currentPath}: \\`${val}\\``,\n });\n }\n } else if (key === 'timezone' && val !== null) {\n const [validTimezone, errorMessage] = hasValidTimezone(val as string);\n if (!validTimezone) {\n errors.push({\n topic: 'Configuration Error',\n message: `${currentPath}: ${errorMessage}`,\n });\n }\n } else if (val !== null) {\n const type = optionTypes[key];\n if (type === 'boolean') {\n if (val !== true && val !== false) {\n errors.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be boolean. Found: ${JSON.stringify(\n val,\n )} (${typeof val})`,\n });\n }\n } else if (type === 'integer') {\n const allowsNegative = optionAllowsNegativeIntegers.has(key);\n errors.push(...validateNumber(key, val, allowsNegative, currentPath));\n } else if (type === 'array' && val) {\n if (is.array(val)) {\n for (const [subIndex, subval] of val.entries()) {\n if (is.object(subval)) {\n const subValidation = await validateConfig(\n configType,\n subval as RenovateConfig,\n isPreset,\n `${currentPath}[${subIndex}]`,\n );\n warnings = warnings.concat(subValidation.warnings);\n errors = errors.concat(subValidation.errors);\n }\n }\n if (isRegexOrGlobOption(key)) {\n errors.push(\n ...regexOrGlobValidator.check({\n val,\n currentPath,\n }),\n );\n }\n if (key === 'extends') {\n for (const subval of val) {\n if (is.string(subval)) {\n if (\n parentName === 'packageRules' &&\n subval.startsWith('group:')\n ) {\n warnings.push({\n topic: 'Configuration Warning',\n message: `${currentPath}: you should not extend \"group:\" presets`,\n });\n }\n if (tzRe.test(subval)) {\n const [, timezone] = tzRe.exec(subval)!;\n const [validTimezone, errorMessage] =\n hasValidTimezone(timezone);\n if (!validTimezone) {\n errors.push({\n topic: 'Configuration Error',\n message: `${currentPath}: ${errorMessage}`,\n });\n }\n }\n } else {\n errors.push({\n topic: 'Configuration Warning',\n message: `${currentPath}: preset value is not a string`,\n });\n }\n }\n }\n\n const selectors = [\n 'matchFileNames',\n 'matchLanguages',\n 'matchCategories',\n 'matchBaseBranches',\n 'matchManagers',\n 'matchDatasources',\n 'matchDepTypes',\n 'matchDepNames',\n 'matchPackageNames',\n 'matchCurrentValue',\n 'matchCurrentVersion',\n 'matchSourceUrls',\n 'matchUpdateTypes',\n 'matchConfidence',\n 'matchCurrentAge',\n 'matchRepositories',\n 'matchNewValue',\n 'matchJsonata',\n ];\n if (key === 'packageRules') {\n for (const [subIndex, packageRule] of val.entries()) {\n if (is.object(packageRule)) {\n const resolvedRule = migrateConfig({\n packageRules: [\n await resolveConfigPresets(\n packageRule as RenovateConfig,\n config,\n ),\n ],\n }).migratedConfig.packageRules![0];\n errors.push(\n ...managerValidator.check({ resolvedRule, currentPath }),\n );\n warnings.push(\n ...matchBaseBranchesValidator.check({\n resolvedRule,\n currentPath: `${currentPath}[${subIndex}]`,\n baseBranches: config.baseBranches!,\n }),\n );\n const selectorLength = Object.keys(resolvedRule).filter(\n (ruleKey) => selectors.includes(ruleKey),\n ).length;\n if (!selectorLength) {\n const message = `${currentPath}[${subIndex}]: Each packageRule must contain at least one match* or exclude* selector. Rule: ${JSON.stringify(\n packageRule,\n )}`;\n errors.push({\n topic: 'Configuration Error',\n message,\n });\n }\n if (selectorLength === Object.keys(resolvedRule).length) {\n const message = `${currentPath}[${subIndex}]: Each packageRule must contain at least one non-match* or non-exclude* field. Rule: ${JSON.stringify(\n packageRule,\n )}`;\n warnings.push({\n topic: 'Configuration Error',\n message,\n });\n }\n // It's too late to apply any of these options once you already have updates determined\n const preLookupOptions = [\n 'allowedVersions',\n 'extractVersion',\n 'followTag',\n 'ignoreDeps',\n 'ignoreUnstable',\n 'rangeStrategy',\n 'registryUrls',\n 'respectLatest',\n 'rollbackPrs',\n 'separateMajorMinor',\n 'separateMinorPatch',\n 'separateMultipleMajor',\n 'separateMultipleMinor',\n 'versioning',\n ];\n if (is.nonEmptyArray(resolvedRule.matchUpdateTypes)) {\n for (const option of preLookupOptions) {\n if (resolvedRule[option] !== undefined) {\n const message = `${currentPath}[${subIndex}]: packageRules cannot combine both matchUpdateTypes and ${option}. Rule: ${JSON.stringify(\n packageRule,\n )}`;\n errors.push({\n topic: 'Configuration Error',\n message,\n });\n }\n }\n }\n } else {\n errors.push({\n topic: 'Configuration Error',\n message: `${currentPath} must contain JSON objects`,\n });\n }\n }\n }\n if (key === 'customManagers') {\n const allowedKeys = [\n 'customType',\n 'description',\n 'fileFormat',\n 'fileMatch',\n 'matchStrings',\n 'matchStringsStrategy',\n 'depNameTemplate',\n 'packageNameTemplate',\n 'datasourceTemplate',\n 'versioningTemplate',\n 'registryUrlTemplate',\n 'currentValueTemplate',\n 'extractVersionTemplate',\n 'autoReplaceStringTemplate',\n 'depTypeTemplate',\n ];\n for (const customManager of val as CustomManager[]) {\n if (\n Object.keys(customManager).some(\n (k) => !allowedKeys.includes(k),\n )\n ) {\n const disallowedKeys = Object.keys(customManager).filter(\n (k) => !allowedKeys.includes(k),\n );\n errors.push({\n topic: 'Configuration Error',\n message: `Custom Manager contains disallowed fields: ${disallowedKeys.join(\n ', ',\n )}`,\n });\n } else if (\n is.nonEmptyString(customManager.customType) &&\n isCustomManager(customManager.customType)\n ) {\n if (is.nonEmptyArray(customManager.fileMatch)) {\n switch (customManager.customType) {\n case 'regex':\n validateRegexManagerFields(\n customManager,\n currentPath,\n errors,\n );\n break;\n case 'jsonata':\n validateJSONataManagerFields(\n customManager,\n currentPath,\n errors,\n );\n break;\n }\n } else {\n errors.push({\n topic: 'Configuration Error',\n message: `Each Custom Manager must contain a non-empty fileMatch array`,\n });\n }\n } else {\n if (\n is.emptyString(customManager.customType) ||\n is.undefined(customManager.customType)\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `Each Custom Manager must contain a non-empty customType string`,\n });\n } else {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid customType: ${customManager.customType}. Key is not a custom manager`,\n });\n }\n }\n }\n }\n if (['matchPackageNames', 'matchDepNames'].includes(key)) {\n const startPattern = regEx(/!?\\//);\n const endPattern = regEx(/\\/g?i?$/);\n for (const pattern of val as string[]) {\n if (startPattern.test(pattern) && endPattern.test(pattern)) {\n try {\n // regEx isn't aware of our !/ prefix but can handle the suffix\n regEx(pattern.replace(startPattern, '/'));\n } catch {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid regExp for ${currentPath}: \\`${pattern}\\``,\n });\n }\n }\n }\n }\n if (key === 'fileMatch') {\n for (const fileMatch of val as string[]) {\n try {\n regEx(fileMatch);\n } catch {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid regExp for ${currentPath}: \\`${fileMatch}\\``,\n });\n }\n }\n }\n if (key === 'baseBranches') {\n for (const baseBranch of val as string[]) {\n if (\n isRegexMatch(baseBranch) &&\n !getRegexPredicate(baseBranch)\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid regExp for ${currentPath}: \\`${baseBranch}\\``,\n });\n }\n }\n }\n if (\n (selectors.includes(key) ||\n key === 'matchCurrentVersion' ||\n key === 'matchCurrentValue') &&\n // TODO: can be undefined ? #22198\n !rulesRe.test(parentPath!) && // Inside a packageRule\n (is.string(parentPath) || !isPreset) // top level in a preset\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `${currentPath}: ${key} should be inside a \\`packageRule\\` only`,\n });\n }\n } else {\n errors.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a list (Array)`,\n });\n }\n } else if (type === 'string') {\n if (!is.string(val)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a string`,\n });\n }\n } else if (\n type === 'object' &&\n currentPath !== 'compatibility' &&\n key !== 'constraints'\n ) {\n if (is.plainObject(val)) {\n if (key === 'registryAliases') {\n const res = validatePlainObject(val);\n if (res !== true) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${key}.${res}\\` configuration: value is not a string`,\n });\n }\n } else if (key === 'env') {\n const allowedEnvVars =\n configType === 'global'\n ? ((config.allowedEnv as string[]) ?? [])\n : GlobalConfig.get('allowedEnv', []);\n for (const [envVarName, envVarValue] of Object.entries(val)) {\n if (!is.string(envVarValue)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid env variable value: \\`${currentPath}.${envVarName}\\` must be a string.`,\n });\n }\n if (!matchRegexOrGlobList(envVarName, allowedEnvVars)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Env variable name \\`${envVarName}\\` is not allowed by this bot's \\`allowedEnv\\`.`,\n });\n }\n }\n } else if (key === 'statusCheckNames') {\n for (const [statusCheckKey, statusCheckValue] of Object.entries(\n val,\n )) {\n if (\n !allowedStatusCheckStrings.includes(\n statusCheckKey as StatusCheckKey,\n )\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${key}.${statusCheckKey}\\` configuration: key is not allowed.`,\n });\n }\n if (\n !(is.string(statusCheckValue) || is.null_(statusCheckValue))\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${statusCheckKey}\\` configuration: status check is not a string.`,\n });\n continue;\n }\n }\n } else if (key === 'customDatasources') {\n const allowedKeys = [\n 'description',\n 'defaultRegistryUrlTemplate',\n 'format',\n 'transformTemplates',\n ];\n for (const [\n customDatasourceName,\n customDatasourceValue,\n ] of Object.entries(val)) {\n if (!is.plainObject(customDatasourceValue)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${customDatasourceName}\\` configuration: customDatasource is not an object`,\n });\n continue;\n }\n for (const [subKey, subValue] of Object.entries(\n customDatasourceValue,\n )) {\n if (!allowedKeys.includes(subKey)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${subKey}\\` configuration: key is not allowed`,\n });\n } else if (subKey === 'transformTemplates') {\n if (!is.array(subValue, is.string)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${subKey}\\` configuration: is not an array of string`,\n });\n }\n } else if (subKey === 'description') {\n if (\n !(is.string(subValue) || is.array(subValue, is.string))\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${subKey}\\` configuration: is not an array of strings`,\n });\n }\n } else if (!is.string(subValue)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${subKey}\\` configuration: is a string`,\n });\n }\n }\n }\n } else {\n const ignoredObjects = options\n .filter((option) => option.freeChoice)\n .map((option) => option.name);\n if (!ignoredObjects.includes(key)) {\n const subValidation = await validateConfig(\n configType,\n val,\n isPreset,\n currentPath,\n );\n warnings = warnings.concat(subValidation.warnings);\n errors = errors.concat(subValidation.errors);\n }\n }\n } else {\n errors.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a json object`,\n });\n }\n }\n }\n }\n\n if (key === 'hostRules' && is.array(val)) {\n const allowedHeaders =\n configType === 'global'\n ? ((config.allowedHeaders as string[]) ?? [])\n : GlobalConfig.get('allowedHeaders', []);\n for (const rule of val as HostRule[]) {\n if (is.nonEmptyString(rule.matchHost)) {\n if (rule.matchHost.includes('://')) {\n if (parseUrl(rule.matchHost) === null) {\n errors.push({\n topic: 'Configuration Error',\n message: `hostRules matchHost \\`${rule.matchHost}\\` is not a valid URL.`,\n });\n }\n }\n } else if (is.emptyString(rule.matchHost)) {\n errors.push({\n topic: 'Configuration Error',\n message:\n 'Invalid value for hostRules matchHost. It cannot be an empty string.',\n });\n }\n\n if (!rule.headers) {\n continue;\n }\n for (const [header, value] of Object.entries(rule.headers)) {\n if (!is.string(value)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid hostRules headers value configuration: header must be a string.`,\n });\n }\n if (!matchRegexOrGlobList(header, allowedHeaders)) {\n errors.push({\n topic: 'Configuration Error',\n message: `hostRules header \\`${header}\\` is not allowed by this bot's \\`allowedHeaders\\`.`,\n });\n }\n }\n }\n }\n\n if (key === 'matchJsonata' && is.array(val, is.string)) {\n for (const expression of val) {\n const res = getExpression(expression);\n if (res instanceof Error) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid JSONata expression for ${currentPath}: ${res.message}`,\n });\n }\n }\n }\n }\n\n function sortAll(a: ValidationMessage, b: ValidationMessage): number {\n // istanbul ignore else: currently never happen\n if (a.topic === b.topic) {\n return a.message > b.message ? 1 : -1;\n }\n // istanbul ignore next: currently never happen\n return a.topic > b.topic ? 1 : -1;\n }\n\n errors.sort(sortAll);\n warnings.sort(sortAll);\n return { errors, warnings };\n}\n\n/**\n * Basic validation for global config options\n */\nasync function validateGlobalConfig(\n key: string,\n val: unknown,\n type: string,\n warnings: ValidationMessage[],\n errors: ValidationMessage[],\n currentPath: string | undefined,\n config: RenovateConfig,\n): Promise<void> {\n // istanbul ignore if\n if (getDeprecationMessage(key)) {\n warnings.push({\n topic: 'Deprecation Warning',\n message: getDeprecationMessage(key)!,\n });\n }\n if (val !== null) {\n if (type === 'string') {\n if (is.string(val)) {\n if (\n key === 'onboardingConfigFileName' &&\n !configFileNames.includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${configFileNames.join(', ')}.`,\n });\n } else if (\n key === 'repositoryCache' &&\n !['enabled', 'disabled', 'reset'].includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${['enabled', 'disabled', 'reset'].join(', ')}.`,\n });\n } else if (\n key === 'dryRun' &&\n !['extract', 'lookup', 'full'].includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${['extract', 'lookup', 'full'].join(', ')}.`,\n });\n } else if (\n key === 'binarySource' &&\n !['docker', 'global', 'install', 'hermit'].includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${['docker', 'global', 'install', 'hermit'].join(', ')}.`,\n });\n } else if (\n key === 'requireConfig' &&\n !['required', 'optional', 'ignored'].includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${['required', 'optional', 'ignored'].join(', ')}.`,\n });\n } else if (\n key === 'gitUrl' &&\n !['default', 'ssh', 'endpoint'].includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${['default', 'ssh', 'endpoint'].join(', ')}.`,\n });\n }\n\n if (\n key === 'reportType' &&\n ['s3', 'file'].includes(val) &&\n !is.string(config.reportPath)\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `reportType '${val}' requires a configured reportPath`,\n });\n }\n } else {\n warnings.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a string.`,\n });\n }\n } else if (type === 'integer') {\n const allowsNegative = optionAllowsNegativeIntegers.has(key);\n warnings.push(...validateNumber(key, val, allowsNegative, currentPath));\n } else if (type === 'boolean') {\n if (val !== true && val !== false) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a boolean. Found: ${JSON.stringify(\n val,\n )} (${typeof val}).`,\n });\n }\n } else if (type === 'array') {\n if (is.array(val)) {\n if (isRegexOrGlobOption(key)) {\n warnings.push(\n ...regexOrGlobValidator.check({\n val,\n currentPath: currentPath!,\n }),\n );\n }\n if (key === 'gitNoVerify') {\n const allowedValues = ['commit', 'push'];\n for (const value of val as string[]) {\n if (!allowedValues.includes(value)) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value for \\`${currentPath}\\`. The allowed values are ${allowedValues.join(', ')}.`,\n });\n }\n }\n }\n if (key === 'mergeConfidenceDatasources') {\n const allowedValues = supportedDatasources;\n for (const value of val as string[]) {\n if (!allowedValues.includes(value)) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${value}\\` for \\`${currentPath}\\`. The allowed values are ${allowedValues.join(', ')}.`,\n });\n }\n }\n }\n } else {\n warnings.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a list (Array).`,\n });\n }\n } else if (type === 'object') {\n if (is.plainObject(val)) {\n if (key === 'onboardingConfig') {\n const subValidation = await validateConfig('repo', val);\n for (const warning of subValidation.warnings.concat(\n subValidation.errors,\n )) {\n warnings.push(warning);\n }\n } else if (key === 'force') {\n const subValidation = await validateConfig('global', val);\n for (const warning of subValidation.warnings.concat(\n subValidation.errors,\n )) {\n warnings.push(warning);\n }\n } else if (key === 'cacheTtlOverride') {\n for (const [subKey, subValue] of Object.entries(val)) {\n const allowsNegative = optionAllowsNegativeIntegers.has(key);\n warnings.push(\n ...validateNumber(\n key,\n subValue,\n allowsNegative,\n currentPath,\n subKey,\n ),\n );\n }\n } else {\n const res = validatePlainObject(val);\n if (res !== true) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${res}\\` configuration: value must be a string.`,\n });\n }\n }\n } else {\n warnings.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a JSON object.`,\n });\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../lib/config/validation.ts"],"names":[],"mappings":";;AA2JA,wCAkqBC;;AA7zBD,kEAAkC;AAClC,gDAAqE;AACrE,sDAA4D;AAG5D,6CAAgD;AAChD,yCAAsC;AACtC,uDAI8B;AAC9B,mEAA6C;AAC7C,qCAAuC;AACvC,2EAGsD;AACtD,+CAAgD;AAChD,qCAAwC;AACxC,2CAA4C;AAC5C,uCAAuC;AACvC,uCAAiD;AACjD,0EAA2E;AAS3E,mCAAoD;AACpD,wFAAkE;AAClE,6GAAuF;AACvF,uGAAiF;AACjF,sDAOoC;AAEpC,MAAM,OAAO,GAAG,IAAA,oBAAU,GAAE,CAAC;AAE7B,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,IAAI,WAAoD,CAAC;AACzD,IAAI,aAA+C,CAAC;AACpD,IAAI,aAA0B,CAAC;AAC/B,IAAI,cAA2B,CAAC;AAChC,IAAI,iBAA8B,CAAC;AACnC,IAAI,4BAAyC,CAAC;AAE9C,MAAM,WAAW,GAAG,IAAA,wBAAc,GAAE,CAAC;AAErC,MAAM,eAAe,GAAG,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC;AAEhD,MAAM,YAAY,GAAG;IACnB,SAAS;IACT,SAAS;IACT,SAAS;IACT,UAAU;IACV,aAAa;IACb,WAAW;IACX,YAAY;IACZ,yBAAyB;IACzB,oBAAoB;IACpB,sBAAsB;IACtB,yBAAyB,EAAE,+DAA+D;IAC1F,eAAe,EAAE,uDAAuD;IACxE,QAAQ,EAAE,aAAa;IACvB,mBAAmB,EAAE,4BAA4B;CAClD,CAAC;AACF,MAAM,IAAI,GAAG,IAAA,aAAK,EAAC,qBAAqB,CAAC,CAAC;AAC1C,MAAM,OAAO,GAAG,IAAA,aAAK,EAAC,kBAAkB,CAAC,CAAC;AAE1C,SAAS,aAAa,CAAC,UAAkB;IACvC,OAAO,CACL,IAAA,aAAK,EAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QACnD,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CACjC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,6BAA6B,CAAC,eAAyB;IAC9D,OAAO,eAAe,CAAC,MAAM,CAC3B,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,yBAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc;IAC3C,MAAM,iBAAiB,GAAuC;QAC5D,UAAU,EAAE,0HAA0H;QACtI,aAAa,EAAE,uGAAuG;QACtH,OAAO,EAAE,yIAAyI;KACnJ,CAAC;IACF,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,aAAa,GAAG,EAAE,CAAC;IACnB,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;IAC3B,WAAW,GAAG,EAAE,CAAC;IACjB,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;IAC9B,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1B,4BAA4B,GAAG,IAAI,GAAG,EAAE,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAEvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9C,CAAC;QAED,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAChC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,4BAA4B,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,kBAAkB,GAAG,IAAI,CAAC;AAC5B,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,UAAyC,EACzC,MAAsB,EACtB,QAAkB,EAClB,UAAmB;IAEnB,WAAW,EAAE,CAAC;IAEd,IAAI,MAAM,GAAwB,EAAE,CAAC;IACrC,IAAI,QAAQ,GAAwB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9D,qCAAqC;QACrC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,WAAW;aACrB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IACE,UAAU;YACV,UAAU,KAAK,kBAAkB;YACjC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC7B,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,qBAAqB;gBAC5B,OAAO,EAAE,QAAQ,GAAG,sFAAsF,UAAU,GAAG;aACxH,CAAC,CAAC;QACL,CAAC;QAED,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,oBAAoB,CACxB,GAAG,EACH,GAAG,EACH,WAAW,CAAC,GAAG,CAAC,EAChB,QAAQ,EACR,MAAM,EACN,WAAW,EACX,MAAM,CACP,CAAC;gBACF,SAAS;YACX,CAAC;iBAAM,IACL,CAAC,IAAA,qBAAa,EAAC,GAAG,EAAE,UAAU,CAAC;gBAC/B,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC,EACxD,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,QAAQ,GAAG,2IAA2I;iBAChK,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;QACH,CAAC;QACD,IAAI,GAAG,KAAK,iBAAiB,IAAI,GAAG,EAAE,CAAC;YACrC,MAAM,mBAAmB,GAAG,6BAA6B,CACvD,GAAe,CAChB,CAAC;YACF,IAAI,YAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,4EAA4E,mBAAmB,CAAC,IAAI,CAC3G,IAAI,CACL,GAAG;iBACL,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,cAAc;oBACrB,OAAO,EAAE,wGAAwG;iBAClH,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,gBAAgB;oBACvB,OAAO,EAAE,mEAAmE,UAAU,EAAE;iBACzF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IACE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,uCAAuC;YAC1D,CAAE,YAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,uBAAuB;UAClD,CAAC;YACD,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAE;iBACrC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,YAAY,GAAG;gBACnB,YAAY;gBACZ,YAAY;gBACZ,eAAe;gBACf,SAAS;gBACT,qBAAqB;aACtB,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpE,IAAI,CAAC;oBACH,+BAA+B;oBAC/B,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAE,GAAc,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBACtE,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3C,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBACvC,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,oCAAoC,WAAW,EAAE;qBAC3D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,UAAU,CAAC,CAAC;YAC7C,IACE,CAAC,QAAQ;gBACT,aAAa,CAAC,GAAG,CAAC;gBAClB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAA4B,CAAC,EAC1D,CAAC;gBACD,uBAAuB;gBACvB,MAAM,OAAO,GAAG,GAAG,GAAG,6CAA6C,aAAa,CAC9E,GAAG,CACJ,EAAE,IAAI,CAAC,MAAM,CAAC,2BAA2B,UAAU,EAAE,CAAC;gBACvD,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE;oBACpD,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,iCAAiC,WAAW,EAAE;iBACxD,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,IAAA,2BAAgB,EAAC,GAAe,CAAC,CAAC;gBACxE,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,WAAW,WAAW,OAAO,YAAY,IAAI;qBACvD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,IACL;gBACE,iBAAiB;gBACjB,qBAAqB;gBACrB,mBAAmB;gBACnB,eAAe;aAChB,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACf,IAAA,2BAAY,EAAC,GAAG,CAAC,EACjB,CAAC;gBACD,IAAI,CAAC,IAAA,gCAAiB,EAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,sBAAsB,WAAW,OAAO,GAAG,IAAI;qBACzD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBAC9C,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,IAAA,2BAAgB,EAAC,GAAa,CAAC,CAAC;gBACtE,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,GAAG,WAAW,KAAK,YAAY,EAAE;qBAC3C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;wBAClC,MAAM,CAAC,IAAI,CAAC;4BACV,KAAK,EAAE,qBAAqB;4BAC5B,OAAO,EAAE,0BAA0B,WAAW,gCAAgC,IAAI,CAAC,SAAS,CAC1F,GAAG,CACJ,KAAK,OAAO,GAAG,GAAG;yBACpB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,cAAc,GAAG,4BAA4B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,sBAAc,EAAC,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;gBACxE,CAAC;qBAAM,IAAI,IAAI,KAAK,OAAO,IAAI,GAAG,EAAE,CAAC;oBACnC,IAAI,YAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;wBAClB,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;4BAC/C,IAAI,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gCACtB,MAAM,aAAa,GAAG,MAAM,cAAc,CACxC,UAAU,EACV,MAAwB,EACxB,QAAQ,EACR,GAAG,WAAW,IAAI,QAAQ,GAAG,CAC9B,CAAC;gCACF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gCACnD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;4BAC/C,CAAC;wBACH,CAAC;wBACD,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC7B,MAAM,CAAC,IAAI,CACT,GAAG,oBAAoB,CAAC,KAAK,CAAC;gCAC5B,GAAG;gCACH,WAAW;6BACZ,CAAC,CACH,CAAC;wBACJ,CAAC;wBACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;4BACtB,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;gCACzB,IAAI,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oCACtB,IACE,UAAU,KAAK,cAAc;wCAC7B,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC3B,CAAC;wCACD,QAAQ,CAAC,IAAI,CAAC;4CACZ,KAAK,EAAE,uBAAuB;4CAC9B,OAAO,EAAE,GAAG,WAAW,0CAA0C;yCAClE,CAAC,CAAC;oCACL,CAAC;oCACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wCACtB,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC;wCACxC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GACjC,IAAA,2BAAgB,EAAC,QAAQ,CAAC,CAAC;wCAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;4CACnB,MAAM,CAAC,IAAI,CAAC;gDACV,KAAK,EAAE,qBAAqB;gDAC5B,OAAO,EAAE,GAAG,WAAW,KAAK,YAAY,EAAE;6CAC3C,CAAC,CAAC;wCACL,CAAC;oCACH,CAAC;gCACH,CAAC;qCAAM,CAAC;oCACN,MAAM,CAAC,IAAI,CAAC;wCACV,KAAK,EAAE,uBAAuB;wCAC9B,OAAO,EAAE,GAAG,WAAW,gCAAgC;qCACxD,CAAC,CAAC;gCACL,CAAC;4BACH,CAAC;wBACH,CAAC;wBAED,MAAM,SAAS,GAAG;4BAChB,gBAAgB;4BAChB,gBAAgB;4BAChB,iBAAiB;4BACjB,mBAAmB;4BACnB,eAAe;4BACf,kBAAkB;4BAClB,eAAe;4BACf,eAAe;4BACf,mBAAmB;4BACnB,mBAAmB;4BACnB,qBAAqB;4BACrB,iBAAiB;4BACjB,kBAAkB;4BAClB,iBAAiB;4BACjB,iBAAiB;4BACjB,mBAAmB;4BACnB,eAAe;4BACf,cAAc;yBACf,CAAC;wBACF,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;4BAC3B,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gCACpD,IAAI,YAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;oCAC3B,MAAM,YAAY,GAAG,IAAA,yBAAa,EAAC;wCACjC,YAAY,EAAE;4CACZ,MAAM,IAAA,8BAAoB,EACxB,WAA6B,EAC7B,MAAM,CACP;yCACF;qCACF,CAAC,CAAC,cAAc,CAAC,YAAa,CAAC,CAAC,CAAC,CAAC;oCACnC,MAAM,CAAC,IAAI,CACT,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CACzD,CAAC;oCACF,QAAQ,CAAC,IAAI,CACX,GAAG,0BAA0B,CAAC,KAAK,CAAC;wCAClC,YAAY;wCACZ,WAAW,EAAE,GAAG,WAAW,IAAI,QAAQ,GAAG;wCAC1C,YAAY,EAAE,MAAM,CAAC,YAAa;qCACnC,CAAC,CACH,CAAC;oCACF,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CACrD,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CACzC,CAAC,MAAM,CAAC;oCACT,IAAI,CAAC,cAAc,EAAE,CAAC;wCACpB,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,QAAQ,oFAAoF,IAAI,CAAC,SAAS,CAC1I,WAAW,CACZ,EAAE,CAAC;wCACJ,MAAM,CAAC,IAAI,CAAC;4CACV,KAAK,EAAE,qBAAqB;4CAC5B,OAAO;yCACR,CAAC,CAAC;oCACL,CAAC;oCACD,IAAI,cAAc,KAAK,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;wCACxD,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,QAAQ,yFAAyF,IAAI,CAAC,SAAS,CAC/I,WAAW,CACZ,EAAE,CAAC;wCACJ,QAAQ,CAAC,IAAI,CAAC;4CACZ,KAAK,EAAE,qBAAqB;4CAC5B,OAAO;yCACR,CAAC,CAAC;oCACL,CAAC;oCACD,uFAAuF;oCACvF,MAAM,gBAAgB,GAAG;wCACvB,iBAAiB;wCACjB,gBAAgB;wCAChB,WAAW;wCACX,YAAY;wCACZ,gBAAgB;wCAChB,eAAe;wCACf,cAAc;wCACd,eAAe;wCACf,aAAa;wCACb,oBAAoB;wCACpB,oBAAoB;wCACpB,uBAAuB;wCACvB,uBAAuB;wCACvB,YAAY;qCACb,CAAC;oCACF,IAAI,YAAE,CAAC,aAAa,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC;wCACpD,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;4CACtC,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;gDACvC,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,QAAQ,4DAA4D,MAAM,WAAW,IAAI,CAAC,SAAS,CACnI,WAAW,CACZ,EAAE,CAAC;gDACJ,MAAM,CAAC,IAAI,CAAC;oDACV,KAAK,EAAE,qBAAqB;oDAC5B,OAAO;iDACR,CAAC,CAAC;4CACL,CAAC;wCACH,CAAC;oCACH,CAAC;gCACH,CAAC;qCAAM,CAAC;oCACN,MAAM,CAAC,IAAI,CAAC;wCACV,KAAK,EAAE,qBAAqB;wCAC5B,OAAO,EAAE,GAAG,WAAW,4BAA4B;qCACpD,CAAC,CAAC;gCACL,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;4BAC7B,MAAM,WAAW,GAAG;gCAClB,YAAY;gCACZ,aAAa;gCACb,YAAY;gCACZ,WAAW;gCACX,cAAc;gCACd,sBAAsB;gCACtB,iBAAiB;gCACjB,qBAAqB;gCACrB,oBAAoB;gCACpB,oBAAoB;gCACpB,qBAAqB;gCACrB,sBAAsB;gCACtB,wBAAwB;gCACxB,2BAA2B;gCAC3B,iBAAiB;6BAClB,CAAC;4BACF,KAAK,MAAM,aAAa,IAAI,GAAsB,EAAE,CAAC;gCACnD,IACE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAChC,EACD,CAAC;oCACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAChC,CAAC;oCACF,MAAM,CAAC,IAAI,CAAC;wCACV,KAAK,EAAE,qBAAqB;wCAC5B,OAAO,EAAE,8CAA8C,cAAc,CAAC,IAAI,CACxE,IAAI,CACL,EAAE;qCACJ,CAAC,CAAC;gCACL,CAAC;qCAAM,IACL,YAAE,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC;oCAC3C,IAAA,wBAAe,EAAC,aAAa,CAAC,UAAU,CAAC,EACzC,CAAC;oCACD,IAAI,YAAE,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;wCAC9C,QAAQ,aAAa,CAAC,UAAU,EAAE,CAAC;4CACjC,KAAK,OAAO;gDACV,IAAA,kCAA0B,EACxB,aAAa,EACb,WAAW,EACX,MAAM,CACP,CAAC;gDACF,MAAM;4CACR,KAAK,SAAS;gDACZ,IAAA,oCAA4B,EAC1B,aAAa,EACb,WAAW,EACX,MAAM,CACP,CAAC;gDACF,MAAM;wCACV,CAAC;oCACH,CAAC;yCAAM,CAAC;wCACN,MAAM,CAAC,IAAI,CAAC;4CACV,KAAK,EAAE,qBAAqB;4CAC5B,OAAO,EAAE,8DAA8D;yCACxE,CAAC,CAAC;oCACL,CAAC;gCACH,CAAC;qCAAM,CAAC;oCACN,IACE,YAAE,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC;wCACxC,YAAE,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,EACtC,CAAC;wCACD,MAAM,CAAC,IAAI,CAAC;4CACV,KAAK,EAAE,qBAAqB;4CAC5B,OAAO,EAAE,gEAAgE;yCAC1E,CAAC,CAAC;oCACL,CAAC;yCAAM,CAAC;wCACN,MAAM,CAAC,IAAI,CAAC;4CACV,KAAK,EAAE,qBAAqB;4CAC5B,OAAO,EAAE,uBAAuB,aAAa,CAAC,UAAU,+BAA+B;yCACxF,CAAC,CAAC;oCACL,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;4BACzD,MAAM,YAAY,GAAG,IAAA,aAAK,EAAC,MAAM,CAAC,CAAC;4BACnC,MAAM,UAAU,GAAG,IAAA,aAAK,EAAC,SAAS,CAAC,CAAC;4BACpC,KAAK,MAAM,OAAO,IAAI,GAAe,EAAE,CAAC;gCACtC,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oCAC3D,IAAI,CAAC;wCACH,+DAA+D;wCAC/D,IAAA,aAAK,EAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;oCAC5C,CAAC;oCAAC,MAAM,CAAC;wCACP,MAAM,CAAC,IAAI,CAAC;4CACV,KAAK,EAAE,qBAAqB;4CAC5B,OAAO,EAAE,sBAAsB,WAAW,OAAO,OAAO,IAAI;yCAC7D,CAAC,CAAC;oCACL,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;4BACxB,KAAK,MAAM,SAAS,IAAI,GAAe,EAAE,CAAC;gCACxC,IAAI,CAAC;oCACH,IAAA,aAAK,EAAC,SAAS,CAAC,CAAC;gCACnB,CAAC;gCAAC,MAAM,CAAC;oCACP,MAAM,CAAC,IAAI,CAAC;wCACV,KAAK,EAAE,qBAAqB;wCAC5B,OAAO,EAAE,sBAAsB,WAAW,OAAO,SAAS,IAAI;qCAC/D,CAAC,CAAC;gCACL,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;4BAC3B,KAAK,MAAM,UAAU,IAAI,GAAe,EAAE,CAAC;gCACzC,IACE,IAAA,2BAAY,EAAC,UAAU,CAAC;oCACxB,CAAC,IAAA,gCAAiB,EAAC,UAAU,CAAC,EAC9B,CAAC;oCACD,MAAM,CAAC,IAAI,CAAC;wCACV,KAAK,EAAE,qBAAqB;wCAC5B,OAAO,EAAE,sBAAsB,WAAW,OAAO,UAAU,IAAI;qCAChE,CAAC,CAAC;gCACL,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,IACE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;4BACtB,GAAG,KAAK,qBAAqB;4BAC7B,GAAG,KAAK,mBAAmB,CAAC;4BAC9B,kCAAkC;4BAClC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAW,CAAC,IAAI,uBAAuB;4BACrD,CAAC,YAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,wBAAwB;0BAC7D,CAAC;4BACD,MAAM,CAAC,IAAI,CAAC;gCACV,KAAK,EAAE,qBAAqB;gCAC5B,OAAO,EAAE,GAAG,WAAW,KAAK,GAAG,0CAA0C;6BAC1E,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC;4BACV,KAAK,EAAE,qBAAqB;4BAC5B,OAAO,EAAE,0BAA0B,WAAW,6BAA6B;yBAC5E,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,IAAI,CAAC,YAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;wBACpB,MAAM,CAAC,IAAI,CAAC;4BACV,KAAK,EAAE,qBAAqB;4BAC5B,OAAO,EAAE,0BAA0B,WAAW,uBAAuB;yBACtE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IACL,IAAI,KAAK,QAAQ;oBACjB,WAAW,KAAK,eAAe;oBAC/B,GAAG,KAAK,aAAa,EACrB,CAAC;oBACD,IAAI,YAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;wBACxB,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;4BAC9B,MAAM,GAAG,GAAG,IAAA,2BAAmB,EAAC,GAAG,CAAC,CAAC;4BACrC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gCACjB,MAAM,CAAC,IAAI,CAAC;oCACV,KAAK,EAAE,qBAAqB;oCAC5B,OAAO,EAAE,aAAa,WAAW,IAAI,GAAG,IAAI,GAAG,yCAAyC;iCACzF,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;6BAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;4BACzB,MAAM,cAAc,GAClB,UAAU,KAAK,QAAQ;gCACrB,CAAC,CAAC,CAAE,MAAM,CAAC,UAAuB,IAAI,EAAE,CAAC;gCACzC,CAAC,CAAC,qBAAY,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;4BACzC,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gCAC5D,IAAI,CAAC,YAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;oCAC5B,MAAM,CAAC,IAAI,CAAC;wCACV,KAAK,EAAE,qBAAqB;wCAC5B,OAAO,EAAE,iCAAiC,WAAW,IAAI,UAAU,sBAAsB;qCAC1F,CAAC,CAAC;gCACL,CAAC;gCACD,IAAI,CAAC,IAAA,mCAAoB,EAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC;oCACtD,MAAM,CAAC,IAAI,CAAC;wCACV,KAAK,EAAE,qBAAqB;wCAC5B,OAAO,EAAE,uBAAuB,UAAU,iDAAiD;qCAC5F,CAAC,CAAC;gCACL,CAAC;4BACH,CAAC;wBACH,CAAC;6BAAM,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;4BACtC,KAAK,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,OAAO,CAC7D,GAAG,CACJ,EAAE,CAAC;gCACF,IACE,CAAC,iCAAyB,CAAC,QAAQ,CACjC,cAAgC,CACjC,EACD,CAAC;oCACD,MAAM,CAAC,IAAI,CAAC;wCACV,KAAK,EAAE,qBAAqB;wCAC5B,OAAO,EAAE,aAAa,WAAW,IAAI,GAAG,IAAI,cAAc,uCAAuC;qCAClG,CAAC,CAAC;gCACL,CAAC;gCACD,IACE,CAAC,CAAC,YAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,IAAI,KAAK,gBAAgB,CAAC,EAC3D,CAAC;oCACD,MAAM,CAAC,IAAI,CAAC;wCACV,KAAK,EAAE,qBAAqB;wCAC5B,OAAO,EAAE,aAAa,WAAW,IAAI,cAAc,iDAAiD;qCACrG,CAAC,CAAC;oCACH,SAAS;gCACX,CAAC;4BACH,CAAC;wBACH,CAAC;6BAAM,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;4BACvC,MAAM,WAAW,GAAG;gCAClB,aAAa;gCACb,4BAA4B;gCAC5B,QAAQ;gCACR,oBAAoB;6BACrB,CAAC;4BACF,KAAK,MAAM,CACT,oBAAoB,EACpB,qBAAqB,EACtB,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gCACzB,IAAI,CAAC,YAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC;oCAC3C,MAAM,CAAC,IAAI,CAAC;wCACV,KAAK,EAAE,qBAAqB;wCAC5B,OAAO,EAAE,aAAa,WAAW,IAAI,oBAAoB,qDAAqD;qCAC/G,CAAC,CAAC;oCACH,SAAS;gCACX,CAAC;gCACD,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAC7C,qBAAqB,CACtB,EAAE,CAAC;oCACF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wCAClC,MAAM,CAAC,IAAI,CAAC;4CACV,KAAK,EAAE,qBAAqB;4CAC5B,OAAO,EAAE,aAAa,WAAW,IAAI,MAAM,sCAAsC;yCAClF,CAAC,CAAC;oCACL,CAAC;yCAAM,IAAI,MAAM,KAAK,oBAAoB,EAAE,CAAC;wCAC3C,IAAI,CAAC,YAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAE,CAAC,MAAM,CAAC,EAAE,CAAC;4CACnC,MAAM,CAAC,IAAI,CAAC;gDACV,KAAK,EAAE,qBAAqB;gDAC5B,OAAO,EAAE,aAAa,WAAW,IAAI,MAAM,6CAA6C;6CACzF,CAAC,CAAC;wCACL,CAAC;oCACH,CAAC;yCAAM,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;wCACpC,IACE,CAAC,CAAC,YAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,YAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAE,CAAC,MAAM,CAAC,CAAC,EACvD,CAAC;4CACD,MAAM,CAAC,IAAI,CAAC;gDACV,KAAK,EAAE,qBAAqB;gDAC5B,OAAO,EAAE,aAAa,WAAW,IAAI,MAAM,8CAA8C;6CAC1F,CAAC,CAAC;wCACL,CAAC;oCACH,CAAC;yCAAM,IAAI,CAAC,YAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;wCAChC,MAAM,CAAC,IAAI,CAAC;4CACV,KAAK,EAAE,qBAAqB;4CAC5B,OAAO,EAAE,aAAa,WAAW,IAAI,MAAM,+BAA+B;yCAC3E,CAAC,CAAC;oCACL,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,MAAM,cAAc,GAAG,OAAO;iCAC3B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;iCACrC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;4BAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gCAClC,MAAM,aAAa,GAAG,MAAM,cAAc,CACxC,UAAU,EACV,GAAG,EACH,QAAQ,EACR,WAAW,CACZ,CAAC;gCACF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gCACnD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;4BAC/C,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC;4BACV,KAAK,EAAE,qBAAqB;4BAC5B,OAAO,EAAE,0BAA0B,WAAW,4BAA4B;yBAC3E,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,GAAG,KAAK,WAAW,IAAI,YAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,cAAc,GAClB,UAAU,KAAK,QAAQ;gBACrB,CAAC,CAAC,CAAE,MAAM,CAAC,cAA2B,IAAI,EAAE,CAAC;gBAC7C,CAAC,CAAC,qBAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,GAAiB,EAAE,CAAC;gBACrC,IAAI,YAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBACtC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACnC,IAAI,IAAA,cAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;4BACtC,MAAM,CAAC,IAAI,CAAC;gCACV,KAAK,EAAE,qBAAqB;gCAC5B,OAAO,EAAE,yBAAyB,IAAI,CAAC,SAAS,wBAAwB;6BACzE,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,YAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1C,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EACL,sEAAsE;qBACzE,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3D,IAAI,CAAC,YAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;wBACtB,MAAM,CAAC,IAAI,CAAC;4BACV,KAAK,EAAE,qBAAqB;4BAC5B,OAAO,EAAE,yEAAyE;yBACnF,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,IAAA,mCAAoB,EAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC;wBAClD,MAAM,CAAC,IAAI,CAAC;4BACV,KAAK,EAAE,qBAAqB;4BAC5B,OAAO,EAAE,sBAAsB,MAAM,qDAAqD;yBAC3F,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,GAAG,KAAK,cAAc,IAAI,YAAE,CAAC,KAAK,CAAC,GAAG,EAAE,YAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,KAAK,MAAM,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,IAAA,uBAAa,EAAC,UAAU,CAAC,CAAC;gBACtC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,kCAAkC,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE;qBACzE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,OAAO,CAAC,CAAoB,EAAE,CAAoB;QACzD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CACjC,GAAW,EACX,GAAY,EACZ,IAAY,EACZ,QAA6B,EAC7B,MAA2B,EAC3B,WAA+B,EAC/B,MAAsB;IAEtB,wCAAwC;IACxC,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,qBAAqB;YAC5B,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAE;SACrC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,YAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IACE,GAAG,KAAK,0BAA0B;oBAClC,CAAC,6BAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC9B,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,mBAAmB,GAAG,YAAY,WAAW,8BAA8B,6BAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;qBAClH,CAAC,CAAC;gBACL,CAAC;qBAAM,IACL,GAAG,KAAK,iBAAiB;oBACzB,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC/C,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,mBAAmB,GAAG,YAAY,WAAW,8BAA8B,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;qBACnI,CAAC,CAAC;gBACL,CAAC;qBAAM,IACL,GAAG,KAAK,QAAQ;oBAChB,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC5C,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,mBAAmB,GAAG,YAAY,WAAW,8BAA8B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;qBAChI,CAAC,CAAC;gBACL,CAAC;qBAAM,IACL,GAAG,KAAK,cAAc;oBACtB,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACxD,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,mBAAmB,GAAG,YAAY,WAAW,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;qBAC5I,CAAC,CAAC;gBACL,CAAC;qBAAM,IACL,GAAG,KAAK,eAAe;oBACvB,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAClD,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,mBAAmB,GAAG,YAAY,WAAW,8BAA8B,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;qBACtI,CAAC,CAAC;gBACL,CAAC;qBAAM,IACL,GAAG,KAAK,QAAQ;oBAChB,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC7C,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,mBAAmB,GAAG,YAAY,WAAW,8BAA8B,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;qBACjI,CAAC,CAAC;gBACL,CAAC;gBAED,IACE,GAAG,KAAK,YAAY;oBACpB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAC5B,CAAC,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAC7B,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,eAAe,GAAG,oCAAoC;qBAChE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,0BAA0B,WAAW,wBAAwB;iBACvE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,cAAc,GAAG,4BAA4B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7D,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAA,sBAAc,EAAC,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,0BAA0B,WAAW,kCAAkC,IAAI,CAAC,SAAS,CAC5F,GAAG,CACJ,KAAK,OAAO,GAAG,IAAI;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,IAAI,YAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,QAAQ,CAAC,IAAI,CACX,GAAG,oBAAoB,CAAC,KAAK,CAAC;wBAC5B,GAAG;wBACH,WAAW,EAAE,WAAY;qBAC1B,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;oBAC1B,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBACzC,KAAK,MAAM,KAAK,IAAI,GAAe,EAAE,CAAC;wBACpC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;4BACnC,QAAQ,CAAC,IAAI,CAAC;gCACZ,KAAK,EAAE,qBAAqB;gCAC5B,OAAO,EAAE,uBAAuB,WAAW,8BAA8B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;6BACrG,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,GAAG,KAAK,4BAA4B,EAAE,CAAC;oBACzC,MAAM,aAAa,GAAG,uCAAoB,CAAC;oBAC3C,KAAK,MAAM,KAAK,IAAI,GAAe,EAAE,CAAC;wBACpC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;4BACnC,QAAQ,CAAC,IAAI,CAAC;gCACZ,KAAK,EAAE,qBAAqB;gCAC5B,OAAO,EAAE,mBAAmB,KAAK,YAAY,WAAW,8BAA8B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;6BAClH,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,0BAA0B,WAAW,8BAA8B;iBAC7E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,YAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;oBAC/B,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBACxD,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CACjD,aAAa,CAAC,MAAM,CACrB,EAAE,CAAC;wBACF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;qBAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;oBAC3B,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;oBAC1D,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CACjD,aAAa,CAAC,MAAM,CACrB,EAAE,CAAC;wBACF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;qBAAM,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;oBACtC,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrD,MAAM,cAAc,GAAG,4BAA4B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC7D,QAAQ,CAAC,IAAI,CACX,GAAG,IAAA,sBAAc,EACf,GAAG,EACH,QAAQ,EACR,cAAc,EACd,WAAW,EACX,MAAM,CACP,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,GAAG,IAAA,2BAAmB,EAAC,GAAG,CAAC,CAAC;oBACrC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;wBACjB,QAAQ,CAAC,IAAI,CAAC;4BACZ,KAAK,EAAE,qBAAqB;4BAC5B,OAAO,EAAE,aAAa,WAAW,IAAI,GAAG,2CAA2C;yBACpF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,0BAA0B,WAAW,6BAA6B;iBAC5E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { allManagersList, getManagerList } from '../modules/manager';\nimport { isCustomManager } from '../modules/manager/custom';\nimport type { CustomManager } from '../modules/manager/custom/types';\nimport type { HostRule } from '../types';\nimport { getExpression } from '../util/jsonata';\nimport { regEx } from '../util/regex';\nimport {\n getRegexPredicate,\n isRegexMatch,\n matchRegexOrGlobList,\n} from '../util/string-match';\nimport * as template from '../util/template';\nimport { parseUrl } from '../util/url';\nimport {\n hasValidSchedule,\n hasValidTimezone,\n} from '../workers/repository/update/branch/schedule';\nimport { configFileNames } from './app-strings';\nimport { GlobalConfig } from './global';\nimport { migrateConfig } from './migration';\nimport { getOptions } from './options';\nimport { resolveConfigPresets } from './presets';\nimport { supportedDatasources } from './presets/internal/merge-confidence';\nimport type {\n AllowedParents,\n RenovateConfig,\n RenovateOptions,\n StatusCheckKey,\n ValidationMessage,\n ValidationResult,\n} from './types';\nimport { allowedStatusCheckStrings } from './types';\nimport * as managerValidator from './validation-helpers/managers';\nimport * as matchBaseBranchesValidator from './validation-helpers/match-base-branches';\nimport * as regexOrGlobValidator from './validation-helpers/regex-glob-matchers';\nimport {\n getParentName,\n isFalseGlobal,\n validateJSONataManagerFields,\n validateNumber,\n validatePlainObject,\n validateRegexManagerFields,\n} from './validation-helpers/utils';\n\nconst options = getOptions();\n\nlet optionsInitialized = false;\nlet optionTypes: Record<string, RenovateOptions['type']>;\nlet optionParents: Record<string, AllowedParents[]>;\nlet optionGlobals: Set<string>;\nlet optionInherits: Set<string>;\nlet optionRegexOrGlob: Set<string>;\nlet optionAllowsNegativeIntegers: Set<string>;\n\nconst managerList = getManagerList();\n\nconst topLevelObjects = [...managerList, 'env'];\n\nconst ignoredNodes = [\n '$schema',\n 'headers',\n 'depType',\n 'npmToken',\n 'packageFile',\n 'forkToken',\n 'repository',\n 'vulnerabilityAlertsOnly',\n 'vulnerabilityAlert',\n 'isVulnerabilityAlert',\n 'vulnerabilityFixVersion', // not intended to be used by end users but may be by Mend apps\n 'copyLocalLibs', // deprecated - functionality is now enabled by default\n 'prBody', // deprecated\n 'minimumConfidence', // undocumented feature flag\n];\nconst tzRe = regEx(/^:timezone\\((.+)\\)$/);\nconst rulesRe = regEx(/p.*Rules\\[\\d+\\]$/);\n\nfunction isManagerPath(parentPath: string): boolean {\n return (\n regEx(/^customManagers\\[[0-9]+]$/).test(parentPath) ||\n managerList.includes(parentPath)\n );\n}\n\nfunction isIgnored(key: string): boolean {\n return ignoredNodes.includes(key);\n}\n\nfunction getUnsupportedEnabledManagers(enabledManagers: string[]): string[] {\n return enabledManagers.filter(\n (manager) => !allManagersList.includes(manager.replace('custom.', '')),\n );\n}\n\nfunction getDeprecationMessage(option: string): string | undefined {\n const deprecatedOptions: Record<string, string | undefined> = {\n branchName: `Direct editing of branchName is now deprecated. Please edit branchPrefix, additionalBranchPrefix, or branchTopic instead`,\n commitMessage: `Direct editing of commitMessage is now deprecated. Please edit commitMessage's subcomponents instead.`,\n prTitle: `Direct editing of prTitle is now deprecated. Please edit commitMessage subcomponents instead as they will be passed through to prTitle.`,\n };\n return deprecatedOptions[option];\n}\n\nfunction isInhertConfigOption(key: string): boolean {\n return optionInherits.has(key);\n}\n\nfunction isRegexOrGlobOption(key: string): boolean {\n return optionRegexOrGlob.has(key);\n}\n\nfunction isGlobalOption(key: string): boolean {\n return optionGlobals.has(key);\n}\n\nfunction initOptions(): void {\n if (optionsInitialized) {\n return;\n }\n\n optionParents = {};\n optionInherits = new Set();\n optionTypes = {};\n optionRegexOrGlob = new Set();\n optionGlobals = new Set();\n optionAllowsNegativeIntegers = new Set();\n\n for (const option of options) {\n optionTypes[option.name] = option.type;\n\n if (option.parents) {\n optionParents[option.name] = option.parents;\n }\n\n if (option.inheritConfigSupport) {\n optionInherits.add(option.name);\n }\n\n if (option.patternMatch) {\n optionRegexOrGlob.add(option.name);\n }\n\n if (option.globalOnly) {\n optionGlobals.add(option.name);\n }\n\n if (option.allowNegative) {\n optionAllowsNegativeIntegers.add(option.name);\n }\n }\n\n optionsInitialized = true;\n}\n\nexport async function validateConfig(\n configType: 'global' | 'inherit' | 'repo',\n config: RenovateConfig,\n isPreset?: boolean,\n parentPath?: string,\n): Promise<ValidationResult> {\n initOptions();\n\n let errors: ValidationMessage[] = [];\n let warnings: ValidationMessage[] = [];\n\n for (const [key, val] of Object.entries(config)) {\n const currentPath = parentPath ? `${parentPath}.${key}` : key;\n /* v8 ignore next 7: TODO: test me */\n if (key === '__proto__') {\n errors.push({\n topic: 'Config security error',\n message: '__proto__',\n });\n continue;\n }\n if (\n parentPath &&\n parentPath !== 'onboardingConfig' &&\n topLevelObjects.includes(key)\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `The \"${key}\" object can only be configured at the top level of a config but was found inside \"${parentPath}\"`,\n });\n }\n\n if (isGlobalOption(key)) {\n if (configType === 'global') {\n await validateGlobalConfig(\n key,\n val,\n optionTypes[key],\n warnings,\n errors,\n currentPath,\n config,\n );\n continue;\n } else if (\n !isFalseGlobal(key, parentPath) &&\n !(configType === 'inherit' && isInhertConfigOption(key))\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `The \"${key}\" option is a global option reserved only for Renovate's global configuration and cannot be configured within a repository's config file.`,\n });\n continue;\n }\n }\n if (key === 'enabledManagers' && val) {\n const unsupportedManagers = getUnsupportedEnabledManagers(\n val as string[],\n );\n if (is.nonEmptyArray(unsupportedManagers)) {\n errors.push({\n topic: 'Configuration Error',\n message: `The following managers configured in enabledManagers are not supported: \"${unsupportedManagers.join(\n ', ',\n )}\"`,\n });\n }\n }\n if (key === 'fileMatch') {\n if (parentPath === undefined) {\n errors.push({\n topic: 'Config error',\n message: `\"fileMatch\" may not be defined at the top level of a config and must instead be within a manager block`,\n });\n } else if (!isManagerPath(parentPath)) {\n warnings.push({\n topic: 'Config warning',\n message: `\"fileMatch\" must be configured in a manager block and not here: ${parentPath}`,\n });\n }\n }\n if (\n !isIgnored(key) && // We need to ignore some reserved keys\n !(is as any).function(val) // Ignore all functions\n ) {\n if (getDeprecationMessage(key)) {\n warnings.push({\n topic: 'Deprecation Warning',\n message: getDeprecationMessage(key)!,\n });\n }\n const templateKeys = [\n 'branchName',\n 'commitBody',\n 'commitMessage',\n 'prTitle',\n 'semanticCommitScope',\n ];\n if ((key.endsWith('Template') || templateKeys.includes(key)) && val) {\n try {\n // TODO: validate string #22198\n let res = template.compile((val as string).toString(), config, false);\n res = template.compile(res, config, false);\n template.compile(res, config, false);\n } catch {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid template in config path: ${currentPath}`,\n });\n }\n }\n const parentName = getParentName(parentPath);\n if (\n !isPreset &&\n optionParents[key] &&\n !optionParents[key].includes(parentName as AllowedParents)\n ) {\n // TODO: types (#22198)\n const message = `${key} should only be configured within one of \"${optionParents[\n key\n ]?.join(' or ')}\" objects. Was found in ${parentName}`;\n warnings.push({\n topic: `${parentPath ? `${parentPath}.` : ''}${key}`,\n message,\n });\n }\n if (!optionTypes[key]) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid configuration option: ${currentPath}`,\n });\n } else if (key === 'schedule') {\n const [validSchedule, errorMessage] = hasValidSchedule(val as string[]);\n if (!validSchedule) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid ${currentPath}: \\`${errorMessage}\\``,\n });\n }\n } else if (\n [\n 'allowedVersions',\n 'matchCurrentVersion',\n 'matchCurrentValue',\n 'matchNewValue',\n ].includes(key) &&\n isRegexMatch(val)\n ) {\n if (!getRegexPredicate(val)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid regExp for ${currentPath}: \\`${val}\\``,\n });\n }\n } else if (key === 'timezone' && val !== null) {\n const [validTimezone, errorMessage] = hasValidTimezone(val as string);\n if (!validTimezone) {\n errors.push({\n topic: 'Configuration Error',\n message: `${currentPath}: ${errorMessage}`,\n });\n }\n } else if (val !== null) {\n const type = optionTypes[key];\n if (type === 'boolean') {\n if (val !== true && val !== false) {\n errors.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be boolean. Found: ${JSON.stringify(\n val,\n )} (${typeof val})`,\n });\n }\n } else if (type === 'integer') {\n const allowsNegative = optionAllowsNegativeIntegers.has(key);\n errors.push(...validateNumber(key, val, allowsNegative, currentPath));\n } else if (type === 'array' && val) {\n if (is.array(val)) {\n for (const [subIndex, subval] of val.entries()) {\n if (is.object(subval)) {\n const subValidation = await validateConfig(\n configType,\n subval as RenovateConfig,\n isPreset,\n `${currentPath}[${subIndex}]`,\n );\n warnings = warnings.concat(subValidation.warnings);\n errors = errors.concat(subValidation.errors);\n }\n }\n if (isRegexOrGlobOption(key)) {\n errors.push(\n ...regexOrGlobValidator.check({\n val,\n currentPath,\n }),\n );\n }\n if (key === 'extends') {\n for (const subval of val) {\n if (is.string(subval)) {\n if (\n parentName === 'packageRules' &&\n subval.startsWith('group:')\n ) {\n warnings.push({\n topic: 'Configuration Warning',\n message: `${currentPath}: you should not extend \"group:\" presets`,\n });\n }\n if (tzRe.test(subval)) {\n const [, timezone] = tzRe.exec(subval)!;\n const [validTimezone, errorMessage] =\n hasValidTimezone(timezone);\n if (!validTimezone) {\n errors.push({\n topic: 'Configuration Error',\n message: `${currentPath}: ${errorMessage}`,\n });\n }\n }\n } else {\n errors.push({\n topic: 'Configuration Warning',\n message: `${currentPath}: preset value is not a string`,\n });\n }\n }\n }\n\n const selectors = [\n 'matchFileNames',\n 'matchLanguages',\n 'matchCategories',\n 'matchBaseBranches',\n 'matchManagers',\n 'matchDatasources',\n 'matchDepTypes',\n 'matchDepNames',\n 'matchPackageNames',\n 'matchCurrentValue',\n 'matchCurrentVersion',\n 'matchSourceUrls',\n 'matchUpdateTypes',\n 'matchConfidence',\n 'matchCurrentAge',\n 'matchRepositories',\n 'matchNewValue',\n 'matchJsonata',\n ];\n if (key === 'packageRules') {\n for (const [subIndex, packageRule] of val.entries()) {\n if (is.object(packageRule)) {\n const resolvedRule = migrateConfig({\n packageRules: [\n await resolveConfigPresets(\n packageRule as RenovateConfig,\n config,\n ),\n ],\n }).migratedConfig.packageRules![0];\n errors.push(\n ...managerValidator.check({ resolvedRule, currentPath }),\n );\n warnings.push(\n ...matchBaseBranchesValidator.check({\n resolvedRule,\n currentPath: `${currentPath}[${subIndex}]`,\n baseBranches: config.baseBranches!,\n }),\n );\n const selectorLength = Object.keys(resolvedRule).filter(\n (ruleKey) => selectors.includes(ruleKey),\n ).length;\n if (!selectorLength) {\n const message = `${currentPath}[${subIndex}]: Each packageRule must contain at least one match* or exclude* selector. Rule: ${JSON.stringify(\n packageRule,\n )}`;\n errors.push({\n topic: 'Configuration Error',\n message,\n });\n }\n if (selectorLength === Object.keys(resolvedRule).length) {\n const message = `${currentPath}[${subIndex}]: Each packageRule must contain at least one non-match* or non-exclude* field. Rule: ${JSON.stringify(\n packageRule,\n )}`;\n warnings.push({\n topic: 'Configuration Error',\n message,\n });\n }\n // It's too late to apply any of these options once you already have updates determined\n const preLookupOptions = [\n 'allowedVersions',\n 'extractVersion',\n 'followTag',\n 'ignoreDeps',\n 'ignoreUnstable',\n 'rangeStrategy',\n 'registryUrls',\n 'respectLatest',\n 'rollbackPrs',\n 'separateMajorMinor',\n 'separateMinorPatch',\n 'separateMultipleMajor',\n 'separateMultipleMinor',\n 'versioning',\n ];\n if (is.nonEmptyArray(resolvedRule.matchUpdateTypes)) {\n for (const option of preLookupOptions) {\n if (resolvedRule[option] !== undefined) {\n const message = `${currentPath}[${subIndex}]: packageRules cannot combine both matchUpdateTypes and ${option}. Rule: ${JSON.stringify(\n packageRule,\n )}`;\n errors.push({\n topic: 'Configuration Error',\n message,\n });\n }\n }\n }\n } else {\n errors.push({\n topic: 'Configuration Error',\n message: `${currentPath} must contain JSON objects`,\n });\n }\n }\n }\n if (key === 'customManagers') {\n const allowedKeys = [\n 'customType',\n 'description',\n 'fileFormat',\n 'fileMatch',\n 'matchStrings',\n 'matchStringsStrategy',\n 'depNameTemplate',\n 'packageNameTemplate',\n 'datasourceTemplate',\n 'versioningTemplate',\n 'registryUrlTemplate',\n 'currentValueTemplate',\n 'extractVersionTemplate',\n 'autoReplaceStringTemplate',\n 'depTypeTemplate',\n ];\n for (const customManager of val as CustomManager[]) {\n if (\n Object.keys(customManager).some(\n (k) => !allowedKeys.includes(k),\n )\n ) {\n const disallowedKeys = Object.keys(customManager).filter(\n (k) => !allowedKeys.includes(k),\n );\n errors.push({\n topic: 'Configuration Error',\n message: `Custom Manager contains disallowed fields: ${disallowedKeys.join(\n ', ',\n )}`,\n });\n } else if (\n is.nonEmptyString(customManager.customType) &&\n isCustomManager(customManager.customType)\n ) {\n if (is.nonEmptyArray(customManager.fileMatch)) {\n switch (customManager.customType) {\n case 'regex':\n validateRegexManagerFields(\n customManager,\n currentPath,\n errors,\n );\n break;\n case 'jsonata':\n validateJSONataManagerFields(\n customManager,\n currentPath,\n errors,\n );\n break;\n }\n } else {\n errors.push({\n topic: 'Configuration Error',\n message: `Each Custom Manager must contain a non-empty fileMatch array`,\n });\n }\n } else {\n if (\n is.emptyString(customManager.customType) ||\n is.undefined(customManager.customType)\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `Each Custom Manager must contain a non-empty customType string`,\n });\n } else {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid customType: ${customManager.customType}. Key is not a custom manager`,\n });\n }\n }\n }\n }\n if (['matchPackageNames', 'matchDepNames'].includes(key)) {\n const startPattern = regEx(/!?\\//);\n const endPattern = regEx(/\\/g?i?$/);\n for (const pattern of val as string[]) {\n if (startPattern.test(pattern) && endPattern.test(pattern)) {\n try {\n // regEx isn't aware of our !/ prefix but can handle the suffix\n regEx(pattern.replace(startPattern, '/'));\n } catch {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid regExp for ${currentPath}: \\`${pattern}\\``,\n });\n }\n }\n }\n }\n if (key === 'fileMatch') {\n for (const fileMatch of val as string[]) {\n try {\n regEx(fileMatch);\n } catch {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid regExp for ${currentPath}: \\`${fileMatch}\\``,\n });\n }\n }\n }\n if (key === 'baseBranches') {\n for (const baseBranch of val as string[]) {\n if (\n isRegexMatch(baseBranch) &&\n !getRegexPredicate(baseBranch)\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid regExp for ${currentPath}: \\`${baseBranch}\\``,\n });\n }\n }\n }\n if (\n (selectors.includes(key) ||\n key === 'matchCurrentVersion' ||\n key === 'matchCurrentValue') &&\n // TODO: can be undefined ? #22198\n !rulesRe.test(parentPath!) && // Inside a packageRule\n (is.string(parentPath) || !isPreset) // top level in a preset\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `${currentPath}: ${key} should be inside a \\`packageRule\\` only`,\n });\n }\n } else {\n errors.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a list (Array)`,\n });\n }\n } else if (type === 'string') {\n if (!is.string(val)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a string`,\n });\n }\n } else if (\n type === 'object' &&\n currentPath !== 'compatibility' &&\n key !== 'constraints'\n ) {\n if (is.plainObject(val)) {\n if (key === 'registryAliases') {\n const res = validatePlainObject(val);\n if (res !== true) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${key}.${res}\\` configuration: value is not a string`,\n });\n }\n } else if (key === 'env') {\n const allowedEnvVars =\n configType === 'global'\n ? ((config.allowedEnv as string[]) ?? [])\n : GlobalConfig.get('allowedEnv', []);\n for (const [envVarName, envVarValue] of Object.entries(val)) {\n if (!is.string(envVarValue)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid env variable value: \\`${currentPath}.${envVarName}\\` must be a string.`,\n });\n }\n if (!matchRegexOrGlobList(envVarName, allowedEnvVars)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Env variable name \\`${envVarName}\\` is not allowed by this bot's \\`allowedEnv\\`.`,\n });\n }\n }\n } else if (key === 'statusCheckNames') {\n for (const [statusCheckKey, statusCheckValue] of Object.entries(\n val,\n )) {\n if (\n !allowedStatusCheckStrings.includes(\n statusCheckKey as StatusCheckKey,\n )\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${key}.${statusCheckKey}\\` configuration: key is not allowed.`,\n });\n }\n if (\n !(is.string(statusCheckValue) || null === statusCheckValue)\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${statusCheckKey}\\` configuration: status check is not a string.`,\n });\n continue;\n }\n }\n } else if (key === 'customDatasources') {\n const allowedKeys = [\n 'description',\n 'defaultRegistryUrlTemplate',\n 'format',\n 'transformTemplates',\n ];\n for (const [\n customDatasourceName,\n customDatasourceValue,\n ] of Object.entries(val)) {\n if (!is.plainObject(customDatasourceValue)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${customDatasourceName}\\` configuration: customDatasource is not an object`,\n });\n continue;\n }\n for (const [subKey, subValue] of Object.entries(\n customDatasourceValue,\n )) {\n if (!allowedKeys.includes(subKey)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${subKey}\\` configuration: key is not allowed`,\n });\n } else if (subKey === 'transformTemplates') {\n if (!is.array(subValue, is.string)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${subKey}\\` configuration: is not an array of string`,\n });\n }\n } else if (subKey === 'description') {\n if (\n !(is.string(subValue) || is.array(subValue, is.string))\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${subKey}\\` configuration: is not an array of strings`,\n });\n }\n } else if (!is.string(subValue)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${subKey}\\` configuration: is a string`,\n });\n }\n }\n }\n } else {\n const ignoredObjects = options\n .filter((option) => option.freeChoice)\n .map((option) => option.name);\n if (!ignoredObjects.includes(key)) {\n const subValidation = await validateConfig(\n configType,\n val,\n isPreset,\n currentPath,\n );\n warnings = warnings.concat(subValidation.warnings);\n errors = errors.concat(subValidation.errors);\n }\n }\n } else {\n errors.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a json object`,\n });\n }\n }\n }\n }\n\n if (key === 'hostRules' && is.array(val)) {\n const allowedHeaders =\n configType === 'global'\n ? ((config.allowedHeaders as string[]) ?? [])\n : GlobalConfig.get('allowedHeaders', []);\n for (const rule of val as HostRule[]) {\n if (is.nonEmptyString(rule.matchHost)) {\n if (rule.matchHost.includes('://')) {\n if (parseUrl(rule.matchHost) === null) {\n errors.push({\n topic: 'Configuration Error',\n message: `hostRules matchHost \\`${rule.matchHost}\\` is not a valid URL.`,\n });\n }\n }\n } else if (is.emptyString(rule.matchHost)) {\n errors.push({\n topic: 'Configuration Error',\n message:\n 'Invalid value for hostRules matchHost. It cannot be an empty string.',\n });\n }\n\n if (!rule.headers) {\n continue;\n }\n for (const [header, value] of Object.entries(rule.headers)) {\n if (!is.string(value)) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid hostRules headers value configuration: header must be a string.`,\n });\n }\n if (!matchRegexOrGlobList(header, allowedHeaders)) {\n errors.push({\n topic: 'Configuration Error',\n message: `hostRules header \\`${header}\\` is not allowed by this bot's \\`allowedHeaders\\`.`,\n });\n }\n }\n }\n }\n\n if (key === 'matchJsonata' && is.array(val, is.string)) {\n for (const expression of val) {\n const res = getExpression(expression);\n if (res instanceof Error) {\n errors.push({\n topic: 'Configuration Error',\n message: `Invalid JSONata expression for ${currentPath}: ${res.message}`,\n });\n }\n }\n }\n }\n\n function sortAll(a: ValidationMessage, b: ValidationMessage): number {\n if (a.topic === b.topic) {\n return a.message > b.message ? 1 : -1;\n }\n return a.topic > b.topic ? 1 : -1;\n }\n\n errors.sort(sortAll);\n warnings.sort(sortAll);\n return { errors, warnings };\n}\n\n/**\n * Basic validation for global config options\n */\nasync function validateGlobalConfig(\n key: string,\n val: unknown,\n type: string,\n warnings: ValidationMessage[],\n errors: ValidationMessage[],\n currentPath: string | undefined,\n config: RenovateConfig,\n): Promise<void> {\n /* v8 ignore next 5: not testable yet */\n if (getDeprecationMessage(key)) {\n warnings.push({\n topic: 'Deprecation Warning',\n message: getDeprecationMessage(key)!,\n });\n }\n if (val !== null) {\n if (type === 'string') {\n if (is.string(val)) {\n if (\n key === 'onboardingConfigFileName' &&\n !configFileNames.includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${configFileNames.join(', ')}.`,\n });\n } else if (\n key === 'repositoryCache' &&\n !['enabled', 'disabled', 'reset'].includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${['enabled', 'disabled', 'reset'].join(', ')}.`,\n });\n } else if (\n key === 'dryRun' &&\n !['extract', 'lookup', 'full'].includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${['extract', 'lookup', 'full'].join(', ')}.`,\n });\n } else if (\n key === 'binarySource' &&\n !['docker', 'global', 'install', 'hermit'].includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${['docker', 'global', 'install', 'hermit'].join(', ')}.`,\n });\n } else if (\n key === 'requireConfig' &&\n !['required', 'optional', 'ignored'].includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${['required', 'optional', 'ignored'].join(', ')}.`,\n });\n } else if (\n key === 'gitUrl' &&\n !['default', 'ssh', 'endpoint'].includes(val)\n ) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${val}\\` for \\`${currentPath}\\`. The allowed values are ${['default', 'ssh', 'endpoint'].join(', ')}.`,\n });\n }\n\n if (\n key === 'reportType' &&\n ['s3', 'file'].includes(val) &&\n !is.string(config.reportPath)\n ) {\n errors.push({\n topic: 'Configuration Error',\n message: `reportType '${val}' requires a configured reportPath`,\n });\n }\n } else {\n warnings.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a string.`,\n });\n }\n } else if (type === 'integer') {\n const allowsNegative = optionAllowsNegativeIntegers.has(key);\n warnings.push(...validateNumber(key, val, allowsNegative, currentPath));\n } else if (type === 'boolean') {\n if (val !== true && val !== false) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a boolean. Found: ${JSON.stringify(\n val,\n )} (${typeof val}).`,\n });\n }\n } else if (type === 'array') {\n if (is.array(val)) {\n if (isRegexOrGlobOption(key)) {\n warnings.push(\n ...regexOrGlobValidator.check({\n val,\n currentPath: currentPath!,\n }),\n );\n }\n if (key === 'gitNoVerify') {\n const allowedValues = ['commit', 'push'];\n for (const value of val as string[]) {\n if (!allowedValues.includes(value)) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value for \\`${currentPath}\\`. The allowed values are ${allowedValues.join(', ')}.`,\n });\n }\n }\n }\n if (key === 'mergeConfidenceDatasources') {\n const allowedValues = supportedDatasources;\n for (const value of val as string[]) {\n if (!allowedValues.includes(value)) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid value \\`${value}\\` for \\`${currentPath}\\`. The allowed values are ${allowedValues.join(', ')}.`,\n });\n }\n }\n }\n } else {\n warnings.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a list (Array).`,\n });\n }\n } else if (type === 'object') {\n if (is.plainObject(val)) {\n if (key === 'onboardingConfig') {\n const subValidation = await validateConfig('repo', val);\n for (const warning of subValidation.warnings.concat(\n subValidation.errors,\n )) {\n warnings.push(warning);\n }\n } else if (key === 'force') {\n const subValidation = await validateConfig('global', val);\n for (const warning of subValidation.warnings.concat(\n subValidation.errors,\n )) {\n warnings.push(warning);\n }\n } else if (key === 'cacheTtlOverride') {\n for (const [subKey, subValue] of Object.entries(val)) {\n const allowsNegative = optionAllowsNegativeIntegers.has(key);\n warnings.push(\n ...validateNumber(\n key,\n subValue,\n allowsNegative,\n currentPath,\n subKey,\n ),\n );\n }\n } else {\n const res = validatePlainObject(val);\n if (res !== true) {\n warnings.push({\n topic: 'Configuration Error',\n message: `Invalid \\`${currentPath}.${res}\\` configuration: value must be a string.`,\n });\n }\n }\n } else {\n warnings.push({\n topic: 'Configuration Error',\n message: `Configuration option \\`${currentPath}\\` should be a JSON object.`,\n });\n }\n }\n }\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- // istanbul ignore file
5
4
  require("source-map-support/register");
6
5
  require("./punycode.cjs");
7
6
  const dequal_1 = require("dequal");
@@ -1 +1 @@
1
- {"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../lib/config-validator.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n// istanbul ignore file\nimport 'source-map-support/register';\nimport './punycode.cjs';\nimport { dequal } from 'dequal';\nimport { pathExists, readFile } from 'fs-extra';\nimport { configFileNames } from './config/app-strings';\nimport { massageConfig } from './config/massage';\nimport { migrateConfig } from './config/migration';\nimport type { RenovateConfig } from './config/types';\nimport { validateConfig } from './config/validation';\nimport { logger } from './logger';\nimport {\n getConfig as getFileConfig,\n getParsedContent,\n} from './workers/global/config/parse/file';\n\nlet returnVal = 0;\n\nasync function validate(\n configType: 'global' | 'repo',\n desc: string,\n config: RenovateConfig,\n strict: boolean,\n isPreset = false,\n): Promise<void> {\n const { isMigrated, migratedConfig } = migrateConfig(config);\n if (isMigrated) {\n logger.warn(\n {\n oldConfig: config,\n newConfig: migratedConfig,\n },\n 'Config migration necessary',\n );\n if (strict) {\n returnVal = 1;\n }\n }\n const massagedConfig = massageConfig(migratedConfig);\n const res = await validateConfig(configType, massagedConfig, isPreset);\n if (res.errors.length) {\n logger.error(\n { file: desc, errors: res.errors },\n 'Found errors in configuration',\n );\n returnVal = 1;\n }\n if (res.warnings.length) {\n logger.warn(\n { file: desc, warnings: res.warnings },\n 'Found errors in configuration',\n );\n returnVal = 1;\n }\n}\n\ninterface PackageJson {\n renovate?: RenovateConfig;\n 'renovate-config'?: Record<string, RenovateConfig>;\n}\n\n(async () => {\n const strictArgIndex = process.argv.indexOf('--strict');\n const strict = strictArgIndex >= 0;\n if (strict) {\n process.argv.splice(strictArgIndex, 1);\n }\n if (process.argv.length > 2) {\n for (const file of process.argv.slice(2)) {\n try {\n if (!(await pathExists(file))) {\n returnVal = 1;\n logger.error({ file }, 'File does not exist');\n break;\n }\n const parsedContent = await getParsedContent(file);\n try {\n logger.info(`Validating ${file}`);\n await validate('global', file, parsedContent, strict);\n } catch (err) {\n logger.warn({ file, err }, 'File is not valid Renovate config');\n returnVal = 1;\n }\n } catch (err) {\n logger.warn({ file, err }, 'File could not be parsed');\n returnVal = 1;\n }\n }\n } else {\n for (const file of configFileNames.filter(\n (name) => name !== 'package.json',\n )) {\n try {\n if (!(await pathExists(file))) {\n continue;\n }\n const parsedContent = await getParsedContent(file);\n try {\n logger.info(`Validating ${file}`);\n await validate('repo', file, parsedContent, strict);\n } catch (err) {\n logger.warn({ file, err }, 'File is not valid Renovate config');\n returnVal = 1;\n }\n } catch (err) {\n logger.warn({ file, err }, 'File could not be parsed');\n returnVal = 1;\n }\n }\n try {\n const pkgJson = JSON.parse(\n await readFile('package.json', 'utf8'),\n ) as PackageJson;\n if (pkgJson.renovate) {\n logger.info(`Validating package.json > renovate`);\n await validate(\n 'repo',\n 'package.json > renovate',\n pkgJson.renovate,\n strict,\n );\n }\n if (pkgJson['renovate-config']) {\n logger.info(`Validating package.json > renovate-config`);\n for (const presetConfig of Object.values(pkgJson['renovate-config'])) {\n await validate(\n 'repo',\n 'package.json > renovate-config',\n presetConfig,\n strict,\n true,\n );\n }\n }\n } catch {\n // ignore\n }\n try {\n const fileConfig = await getFileConfig(process.env);\n if (!dequal(fileConfig, {})) {\n const file = process.env.RENOVATE_CONFIG_FILE ?? 'config.js';\n logger.info(`Validating ${file}`);\n try {\n await validate('global', file, fileConfig, strict);\n } catch (err) {\n logger.error({ file, err }, 'File is not valid Renovate config');\n returnVal = 1;\n }\n }\n } catch {\n // ignore\n }\n }\n if (returnVal !== 0) {\n process.exit(returnVal);\n }\n logger.info('Config validated successfully');\n})().catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n process.exit(99);\n});\n"]}
1
+ {"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../lib/config-validator.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport 'source-map-support/register';\nimport './punycode.cjs';\nimport { dequal } from 'dequal';\nimport { pathExists, readFile } from 'fs-extra';\nimport { configFileNames } from './config/app-strings';\nimport { massageConfig } from './config/massage';\nimport { migrateConfig } from './config/migration';\nimport type { RenovateConfig } from './config/types';\nimport { validateConfig } from './config/validation';\nimport { logger } from './logger';\nimport {\n getConfig as getFileConfig,\n getParsedContent,\n} from './workers/global/config/parse/file';\n\nlet returnVal = 0;\n\nasync function validate(\n configType: 'global' | 'repo',\n desc: string,\n config: RenovateConfig,\n strict: boolean,\n isPreset = false,\n): Promise<void> {\n const { isMigrated, migratedConfig } = migrateConfig(config);\n if (isMigrated) {\n logger.warn(\n {\n oldConfig: config,\n newConfig: migratedConfig,\n },\n 'Config migration necessary',\n );\n if (strict) {\n returnVal = 1;\n }\n }\n const massagedConfig = massageConfig(migratedConfig);\n const res = await validateConfig(configType, massagedConfig, isPreset);\n if (res.errors.length) {\n logger.error(\n { file: desc, errors: res.errors },\n 'Found errors in configuration',\n );\n returnVal = 1;\n }\n if (res.warnings.length) {\n logger.warn(\n { file: desc, warnings: res.warnings },\n 'Found errors in configuration',\n );\n returnVal = 1;\n }\n}\n\ninterface PackageJson {\n renovate?: RenovateConfig;\n 'renovate-config'?: Record<string, RenovateConfig>;\n}\n\n(async () => {\n const strictArgIndex = process.argv.indexOf('--strict');\n const strict = strictArgIndex >= 0;\n if (strict) {\n process.argv.splice(strictArgIndex, 1);\n }\n if (process.argv.length > 2) {\n for (const file of process.argv.slice(2)) {\n try {\n if (!(await pathExists(file))) {\n returnVal = 1;\n logger.error({ file }, 'File does not exist');\n break;\n }\n const parsedContent = await getParsedContent(file);\n try {\n logger.info(`Validating ${file}`);\n await validate('global', file, parsedContent, strict);\n } catch (err) {\n logger.warn({ file, err }, 'File is not valid Renovate config');\n returnVal = 1;\n }\n } catch (err) {\n logger.warn({ file, err }, 'File could not be parsed');\n returnVal = 1;\n }\n }\n } else {\n for (const file of configFileNames.filter(\n (name) => name !== 'package.json',\n )) {\n try {\n if (!(await pathExists(file))) {\n continue;\n }\n const parsedContent = await getParsedContent(file);\n try {\n logger.info(`Validating ${file}`);\n await validate('repo', file, parsedContent, strict);\n } catch (err) {\n logger.warn({ file, err }, 'File is not valid Renovate config');\n returnVal = 1;\n }\n } catch (err) {\n logger.warn({ file, err }, 'File could not be parsed');\n returnVal = 1;\n }\n }\n try {\n const pkgJson = JSON.parse(\n await readFile('package.json', 'utf8'),\n ) as PackageJson;\n if (pkgJson.renovate) {\n logger.info(`Validating package.json > renovate`);\n await validate(\n 'repo',\n 'package.json > renovate',\n pkgJson.renovate,\n strict,\n );\n }\n if (pkgJson['renovate-config']) {\n logger.info(`Validating package.json > renovate-config`);\n for (const presetConfig of Object.values(pkgJson['renovate-config'])) {\n await validate(\n 'repo',\n 'package.json > renovate-config',\n presetConfig,\n strict,\n true,\n );\n }\n }\n } catch {\n // ignore\n }\n try {\n const fileConfig = await getFileConfig(process.env);\n if (!dequal(fileConfig, {})) {\n const file = process.env.RENOVATE_CONFIG_FILE ?? 'config.js';\n logger.info(`Validating ${file}`);\n try {\n await validate('global', file, fileConfig, strict);\n } catch (err) {\n logger.error({ file, err }, 'File is not valid Renovate config');\n returnVal = 1;\n }\n }\n } catch {\n // ignore\n }\n }\n if (returnVal !== 0) {\n process.exit(returnVal);\n }\n logger.info('Config validated successfully');\n})().catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n process.exit(99);\n});\n"]}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Categories = void 0;
4
- // istanbul ignore next
5
4
  exports.Categories = [
6
5
  'ansible',
7
6
  'batect',
@@ -1 +1 @@
1
- {"version":3,"file":"category.js","sourceRoot":"","sources":["../../lib/constants/category.ts"],"names":[],"mappings":";;;AAAA,uBAAuB;AACV,QAAA,UAAU,GAAG;IACxB,SAAS;IACT,QAAQ;IACR,OAAO;IACP,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,KAAK;IACL,MAAM;IACN,IAAI;IACJ,YAAY;IACZ,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,WAAW;CACH,CAAC","sourcesContent":["// istanbul ignore next\nexport const Categories = [\n 'ansible',\n 'batect',\n 'bazel',\n 'c',\n 'cd',\n 'ci',\n 'custom',\n 'dart',\n 'docker',\n 'dotnet',\n 'elixir',\n 'golang',\n 'haskell',\n 'helm',\n 'iac',\n 'java',\n 'js',\n 'kubernetes',\n 'node',\n 'perl',\n 'php',\n 'python',\n 'ruby',\n 'rust',\n 'swift',\n 'terraform',\n] as const;\n\nexport type Category = (typeof Categories)[number];\n"]}
1
+ {"version":3,"file":"category.js","sourceRoot":"","sources":["../../lib/constants/category.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;IACxB,SAAS;IACT,QAAQ;IACR,OAAO;IACP,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,KAAK;IACL,MAAM;IACN,IAAI;IACJ,YAAY;IACZ,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,WAAW;CACH,CAAC","sourcesContent":["export const Categories = [\n 'ansible',\n 'batect',\n 'bazel',\n 'c',\n 'cd',\n 'ci',\n 'custom',\n 'dart',\n 'docker',\n 'dotnet',\n 'elixir',\n 'golang',\n 'haskell',\n 'helm',\n 'iac',\n 'java',\n 'js',\n 'kubernetes',\n 'node',\n 'perl',\n 'php',\n 'python',\n 'ruby',\n 'rust',\n 'swift',\n 'terraform',\n] as const;\n\nexport type Category = (typeof Categories)[number];\n"]}
@@ -623,7 +623,8 @@
623
623
  "nx": "https://github.com/nrwl/nx",
624
624
  "octokit": "https://github.com/octokit/",
625
625
  "semantic-release": "https://github.com/semantic-release/",
626
- "swc": "https://github.com/swc-project/"
626
+ "swc": "https://github.com/swc-project/",
627
+ "twig": "https://github.com/twigphp/"
627
628
  },
628
629
  "patternGroups": {
629
630
  "angularmaterial": ["/^@angular/material/", "/^@angular/cdk/"],
@@ -51,7 +51,8 @@ function init() {
51
51
  });
52
52
  instrumentations = [
53
53
  new instrumentation_http_1.HttpInstrumentation({
54
- applyCustomAttributesOnSpan: /* istanbul ignore next */ (span, request, response) => {
54
+ /* v8 ignore start: not easily testable */
55
+ applyCustomAttributesOnSpan: (span, request, response) => {
55
56
  // ignore 404 errors when the branch protection of Github could not be found. This is expected if no rules are configured
56
57
  if (request instanceof node_http_1.ClientRequest &&
57
58
  request.host === `api.github.com` &&
@@ -60,6 +61,7 @@ function init() {
60
61
  span.setStatus({ code: api_1.SpanStatusCode.OK });
61
62
  }
62
63
  },
64
+ /* v8 ignore stop */
63
65
  }),
64
66
  new instrumentation_bunyan_1.BunyanInstrumentation(),
65
67
  ];
@@ -67,7 +69,7 @@ function init() {
67
69
  instrumentations,
68
70
  });
69
71
  }
70
- /* istanbul ignore next */
72
+ /* v8 ignore start: not easily testable */
71
73
  // https://github.com/open-telemetry/opentelemetry-js-api/issues/34
72
74
  async function shutdown() {
73
75
  const traceProvider = getTracerProvider();
@@ -81,7 +83,7 @@ async function shutdown() {
81
83
  }
82
84
  }
83
85
  }
84
- /* istanbul ignore next */
86
+ /* v8 ignore stop */
85
87
  function disableInstrumentations() {
86
88
  for (const instrumentation of instrumentations) {
87
89
  instrumentation.disable();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/instrumentation/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { ClientRequest } from 'node:http';\nimport type {\n Context,\n Span,\n SpanOptions,\n Tracer,\n TracerProvider,\n} from '@opentelemetry/api';\nimport * as api from '@opentelemetry/api';\nimport { ProxyTracerProvider, SpanStatusCode } from '@opentelemetry/api';\nimport { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { BunyanInstrumentation } from '@opentelemetry/instrumentation-bunyan';\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http';\nimport { Resource } from '@opentelemetry/resources';\nimport {\n BatchSpanProcessor,\n ConsoleSpanExporter,\n SimpleSpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_SERVICE_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { pkg } from '../expose.cjs';\nimport {\n isTraceDebuggingEnabled,\n isTraceSendingEnabled,\n isTracingEnabled,\n massageThrowable,\n} from './utils';\n\nlet instrumentations: Instrumentation[] = [];\n\ninit();\n\nexport function init(): void {\n if (!isTracingEnabled()) {\n return;\n }\n\n const traceProvider = new NodeTracerProvider({\n resource: new Resource({\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#semantic-attributes-with-sdk-provided-default-value\n [ATTR_SERVICE_NAME]: process.env.OTEL_SERVICE_NAME ?? 'renovate',\n // https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n // https://github.com/open-telemetry/opentelemetry-js/blob/e9d3c71918635d490b6a9ac9f8259265b38394d0/semantic-conventions/src/experimental_attributes.ts#L7688\n ['service.namespace']:\n process.env.OTEL_SERVICE_NAMESPACE ?? 'renovatebot.com',\n [ATTR_SERVICE_VERSION]: process.env.OTEL_SERVICE_VERSION ?? pkg.version,\n }),\n });\n\n // add processors\n if (isTraceDebuggingEnabled()) {\n traceProvider.addSpanProcessor(\n new SimpleSpanProcessor(new ConsoleSpanExporter()),\n );\n }\n\n // OTEL specification environment variable\n if (isTraceSendingEnabled()) {\n const exporter = new OTLPTraceExporter();\n traceProvider.addSpanProcessor(new BatchSpanProcessor(exporter));\n }\n\n const contextManager = new AsyncLocalStorageContextManager();\n traceProvider.register({\n contextManager,\n });\n\n instrumentations = [\n new HttpInstrumentation({\n applyCustomAttributesOnSpan: /* istanbul ignore next */ (\n span,\n request,\n response,\n ) => {\n // ignore 404 errors when the branch protection of Github could not be found. This is expected if no rules are configured\n if (\n request instanceof ClientRequest &&\n request.host === `api.github.com` &&\n request.path.endsWith(`/protection`) &&\n response.statusCode === 404\n ) {\n span.setStatus({ code: SpanStatusCode.OK });\n }\n },\n }),\n new BunyanInstrumentation(),\n ];\n registerInstrumentations({\n instrumentations,\n });\n}\n\n/* istanbul ignore next */\n\n// https://github.com/open-telemetry/opentelemetry-js-api/issues/34\nexport async function shutdown(): Promise<void> {\n const traceProvider = getTracerProvider();\n if (traceProvider instanceof NodeTracerProvider) {\n await traceProvider.shutdown();\n } else if (traceProvider instanceof ProxyTracerProvider) {\n const delegateProvider = traceProvider.getDelegate();\n if (delegateProvider instanceof NodeTracerProvider) {\n await delegateProvider.shutdown();\n }\n }\n}\n\n/* istanbul ignore next */\nexport function disableInstrumentations(): void {\n for (const instrumentation of instrumentations) {\n instrumentation.disable();\n }\n}\n\nexport function getTracerProvider(): TracerProvider {\n return api.trace.getTracerProvider();\n}\n\nfunction getTracer(): Tracer {\n return getTracerProvider().getTracer('renovate');\n}\n\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n): ReturnType<F>;\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n options: SpanOptions,\n): ReturnType<F>;\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n options: SpanOptions = {},\n context: Context = api.context.active(),\n): ReturnType<F> {\n return getTracer().startActiveSpan(name, options, context, (span: Span) => {\n try {\n const ret = fn();\n if (ret instanceof Promise) {\n return ret\n .catch((e) => {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: massageThrowable(e),\n });\n throw e;\n })\n .finally(() => span.end()) as ReturnType<F>;\n }\n span.end();\n return ret;\n } catch (e) {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: massageThrowable(e),\n });\n span.end();\n throw e;\n }\n });\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/instrumentation/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { ClientRequest } from 'node:http';\nimport type {\n Context,\n Span,\n SpanOptions,\n Tracer,\n TracerProvider,\n} from '@opentelemetry/api';\nimport * as api from '@opentelemetry/api';\nimport { ProxyTracerProvider, SpanStatusCode } from '@opentelemetry/api';\nimport { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { BunyanInstrumentation } from '@opentelemetry/instrumentation-bunyan';\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http';\nimport { Resource } from '@opentelemetry/resources';\nimport {\n BatchSpanProcessor,\n ConsoleSpanExporter,\n SimpleSpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_SERVICE_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { pkg } from '../expose.cjs';\nimport {\n isTraceDebuggingEnabled,\n isTraceSendingEnabled,\n isTracingEnabled,\n massageThrowable,\n} from './utils';\n\nlet instrumentations: Instrumentation[] = [];\n\ninit();\n\nexport function init(): void {\n if (!isTracingEnabled()) {\n return;\n }\n\n const traceProvider = new NodeTracerProvider({\n resource: new Resource({\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#semantic-attributes-with-sdk-provided-default-value\n [ATTR_SERVICE_NAME]: process.env.OTEL_SERVICE_NAME ?? 'renovate',\n // https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n // https://github.com/open-telemetry/opentelemetry-js/blob/e9d3c71918635d490b6a9ac9f8259265b38394d0/semantic-conventions/src/experimental_attributes.ts#L7688\n ['service.namespace']:\n process.env.OTEL_SERVICE_NAMESPACE ?? 'renovatebot.com',\n [ATTR_SERVICE_VERSION]: process.env.OTEL_SERVICE_VERSION ?? pkg.version,\n }),\n });\n\n // add processors\n if (isTraceDebuggingEnabled()) {\n traceProvider.addSpanProcessor(\n new SimpleSpanProcessor(new ConsoleSpanExporter()),\n );\n }\n\n // OTEL specification environment variable\n if (isTraceSendingEnabled()) {\n const exporter = new OTLPTraceExporter();\n traceProvider.addSpanProcessor(new BatchSpanProcessor(exporter));\n }\n\n const contextManager = new AsyncLocalStorageContextManager();\n traceProvider.register({\n contextManager,\n });\n\n instrumentations = [\n new HttpInstrumentation({\n /* v8 ignore start: not easily testable */\n applyCustomAttributesOnSpan: (span, request, response) => {\n // ignore 404 errors when the branch protection of Github could not be found. This is expected if no rules are configured\n if (\n request instanceof ClientRequest &&\n request.host === `api.github.com` &&\n request.path.endsWith(`/protection`) &&\n response.statusCode === 404\n ) {\n span.setStatus({ code: SpanStatusCode.OK });\n }\n },\n /* v8 ignore stop */\n }),\n new BunyanInstrumentation(),\n ];\n registerInstrumentations({\n instrumentations,\n });\n}\n\n/* v8 ignore start: not easily testable */\n// https://github.com/open-telemetry/opentelemetry-js-api/issues/34\nexport async function shutdown(): Promise<void> {\n const traceProvider = getTracerProvider();\n if (traceProvider instanceof NodeTracerProvider) {\n await traceProvider.shutdown();\n } else if (traceProvider instanceof ProxyTracerProvider) {\n const delegateProvider = traceProvider.getDelegate();\n if (delegateProvider instanceof NodeTracerProvider) {\n await delegateProvider.shutdown();\n }\n }\n}\n/* v8 ignore stop */\n\nexport function disableInstrumentations(): void {\n for (const instrumentation of instrumentations) {\n instrumentation.disable();\n }\n}\n\nexport function getTracerProvider(): TracerProvider {\n return api.trace.getTracerProvider();\n}\n\nfunction getTracer(): Tracer {\n return getTracerProvider().getTracer('renovate');\n}\n\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n): ReturnType<F>;\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n options: SpanOptions,\n): ReturnType<F>;\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n options: SpanOptions = {},\n context: Context = api.context.active(),\n): ReturnType<F> {\n return getTracer().startActiveSpan(name, options, context, (span: Span) => {\n try {\n const ret = fn();\n if (ret instanceof Promise) {\n return ret\n .catch((e) => {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: massageThrowable(e),\n });\n throw e;\n })\n .finally(() => span.end()) as ReturnType<F>;\n }\n span.end();\n return ret;\n } catch (e) {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: massageThrowable(e),\n });\n span.end();\n throw e;\n }\n });\n}\n"]}
@@ -22,6 +22,6 @@ function massageThrowable(e) {
22
22
  if (e instanceof Error) {
23
23
  return e.message;
24
24
  }
25
- return String(e);
25
+ return String(e); // eslint-disable-line @typescript-eslint/no-base-to-string
26
26
  }
27
27
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/instrumentation/utils.ts"],"names":[],"mappings":";;AAEA,4CAEC;AAED,0DAEC;AAED,sDAEC;AAED,4CAQC;;AAtBD,kEAAkC;AAElC,SAAgB,gBAAgB;IAC9B,OAAO,uBAAuB,EAAE,IAAI,qBAAqB,EAAE,CAAC;AAC9D,CAAC;AAED,SAAgB,uBAAuB;IACrC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;AACzD,CAAC;AAED,SAAgB,qBAAqB;IACnC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;AACnD,CAAC;AAED,SAAgB,gBAAgB,CAAC,CAAU;IACzC,IAAI,YAAE,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC","sourcesContent":["import is from '@sindresorhus/is';\n\nexport function isTracingEnabled(): boolean {\n return isTraceDebuggingEnabled() || isTraceSendingEnabled();\n}\n\nexport function isTraceDebuggingEnabled(): boolean {\n return !!process.env.RENOVATE_TRACING_CONSOLE_EXPORTER;\n}\n\nexport function isTraceSendingEnabled(): boolean {\n return !!process.env.OTEL_EXPORTER_OTLP_ENDPOINT;\n}\n\nexport function massageThrowable(e: unknown): string | undefined {\n if (is.nullOrUndefined(e)) {\n return undefined;\n }\n if (e instanceof Error) {\n return e.message;\n }\n return String(e);\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/instrumentation/utils.ts"],"names":[],"mappings":";;AAEA,4CAEC;AAED,0DAEC;AAED,sDAEC;AAED,4CAQC;;AAtBD,kEAAkC;AAElC,SAAgB,gBAAgB;IAC9B,OAAO,uBAAuB,EAAE,IAAI,qBAAqB,EAAE,CAAC;AAC9D,CAAC;AAED,SAAgB,uBAAuB;IACrC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;AACzD,CAAC;AAED,SAAgB,qBAAqB;IACnC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;AACnD,CAAC;AAED,SAAgB,gBAAgB,CAAC,CAAU;IACzC,IAAI,YAAE,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,2DAA2D;AAC/E,CAAC","sourcesContent":["import is from '@sindresorhus/is';\n\nexport function isTracingEnabled(): boolean {\n return isTraceDebuggingEnabled() || isTraceSendingEnabled();\n}\n\nexport function isTraceDebuggingEnabled(): boolean {\n return !!process.env.RENOVATE_TRACING_CONSOLE_EXPORTER;\n}\n\nexport function isTraceSendingEnabled(): boolean {\n return !!process.env.OTEL_EXPORTER_OTLP_ENDPOINT;\n}\n\nexport function massageThrowable(e: unknown): string | undefined {\n if (is.nullOrUndefined(e)) {\n return undefined;\n }\n if (e instanceof Error) {\n return e.message;\n }\n return String(e); // eslint-disable-line @typescript-eslint/no-base-to-string\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = cmdSerializer;
4
- // istanbul ignore next
5
4
  function cmdSerializer(cmd) {
6
5
  if (typeof cmd === 'string') {
7
6
  return cmd.replace(/https:\/\/[^@]*@/g, 'https://**redacted**@'); // TODO #12874
@@ -1 +1 @@
1
- {"version":3,"file":"cmd-serializer.js","sourceRoot":"","sources":["../../lib/logger/cmd-serializer.ts"],"names":[],"mappings":";;AACA,gCAOC;AARD,uBAAuB;AACvB,SAAwB,aAAa,CACnC,GAAsB;IAEtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,CAAC,CAAC,cAAc;IAClF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["// istanbul ignore next\nexport default function cmdSerializer(\n cmd: string | string[],\n): string | string[] {\n if (typeof cmd === 'string') {\n return cmd.replace(/https:\\/\\/[^@]*@/g, 'https://**redacted**@'); // TODO #12874\n }\n return cmd;\n}\n"]}
1
+ {"version":3,"file":"cmd-serializer.js","sourceRoot":"","sources":["../../lib/logger/cmd-serializer.ts"],"names":[],"mappings":";;AAAA,gCAOC;AAPD,SAAwB,aAAa,CACnC,GAAsB;IAEtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,CAAC,CAAC,cAAc;IAClF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["export default function cmdSerializer(\n cmd: string | string[],\n): string | string[] {\n if (typeof cmd === 'string') {\n return cmd.replace(/https:\\/\\/[^@]*@/g, 'https://**redacted**@'); // TODO #12874\n }\n return cmd;\n}\n"]}
@@ -21,7 +21,6 @@ function configSerializer(config) {
21
21
  if (contentFields.includes(key)) {
22
22
  this.update('[content]');
23
23
  }
24
- // istanbul ignore if
25
24
  if (arrayFields.includes(key)) {
26
25
  this.update('[Array]');
27
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-serializer.js","sourceRoot":"","sources":["../../lib/logger/config-serializer.ts"],"names":[],"mappings":";;AAGA,mCA2BC;;AA9BD,wEAA0C;AAG1C,SAAwB,gBAAgB,CACtC,MAAsB;IAEtB,MAAM,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,aAAa,GAAG;QACpB,SAAS;QACT,UAAU;QACV,mBAAmB;QACnB,gBAAgB;KACjB,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAEjD,OAAO,IAAA,gBAAQ,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,GAAW;QACpD,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3B,CAAC;YACD,qBAAqB;YACrB,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import traverse from 'neotraverse/legacy';\nimport type { RenovateConfig } from '../config/types';\n\nexport default function configSerializer(\n config: RenovateConfig,\n): RenovateConfig {\n const templateFields = ['prBody'];\n const contentFields = [\n 'content',\n 'contents',\n 'packageLockParsed',\n 'yarnLockParsed',\n ];\n const arrayFields = ['packageFiles', 'upgrades'];\n\n return traverse(config).map(function scrub(val: string) {\n if (this.key && val) {\n const key = this.key.toString();\n if (templateFields.includes(key)) {\n this.update('[Template]');\n }\n if (contentFields.includes(key)) {\n this.update('[content]');\n }\n // istanbul ignore if\n if (arrayFields.includes(key)) {\n this.update('[Array]');\n }\n }\n });\n}\n"]}
1
+ {"version":3,"file":"config-serializer.js","sourceRoot":"","sources":["../../lib/logger/config-serializer.ts"],"names":[],"mappings":";;AAGA,mCA0BC;;AA7BD,wEAA0C;AAG1C,SAAwB,gBAAgB,CACtC,MAAsB;IAEtB,MAAM,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,aAAa,GAAG;QACpB,SAAS;QACT,UAAU;QACV,mBAAmB;QACnB,gBAAgB;KACjB,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAEjD,OAAO,IAAA,gBAAQ,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,GAAW;QACpD,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import traverse from 'neotraverse/legacy';\nimport type { RenovateConfig } from '../config/types';\n\nexport default function configSerializer(\n config: RenovateConfig,\n): RenovateConfig {\n const templateFields = ['prBody'];\n const contentFields = [\n 'content',\n 'contents',\n 'packageLockParsed',\n 'yarnLockParsed',\n ];\n const arrayFields = ['packageFiles', 'upgrades'];\n\n return traverse(config).map(function scrub(val: string) {\n if (this.key && val) {\n const key = this.key.toString();\n if (templateFields.includes(key)) {\n this.update('[Template]');\n }\n if (contentFields.includes(key)) {\n this.update('[content]');\n }\n if (arrayFields.includes(key)) {\n this.update('[Array]');\n }\n }\n });\n}\n"]}
@@ -36,7 +36,6 @@ function createDefaultStreams(stdoutLevel, problems, logFile) {
36
36
  level: stdoutLevel,
37
37
  stream: process.stdout,
38
38
  };
39
- // istanbul ignore if: not testable
40
39
  if ((0, utils_1.getEnv)('LOG_FORMAT') !== 'json') {
41
40
  // TODO: typings (#9615)
42
41
  const prettyStdOut = new pretty_stdout_1.RenovateStream();
@@ -50,13 +49,11 @@ function createDefaultStreams(stdoutLevel, problems, logFile) {
50
49
  stream: problems,
51
50
  type: 'raw',
52
51
  };
53
- // istanbul ignore next: not easily testable
54
52
  const logFileStream = is_1.default.string(logFile)
55
53
  ? createLogFileStream(logFile)
56
54
  : undefined;
57
55
  return [stdout, problemsStream, logFileStream].filter(Boolean);
58
56
  }
59
- // istanbul ignore next: not easily testable
60
57
  function createLogFileStream(logFile) {
61
58
  // Ensure log file directory exists
62
59
  const directoryName = upath_1.default.dirname(logFile);