renovate 40.0.0-next.40 → 40.0.0-next.41

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 (237) hide show
  1. package/dist/config/options/index.js +13 -0
  2. package/dist/config/options/index.js.map +1 -1
  3. package/dist/config/presets/common.js +1 -0
  4. package/dist/config/presets/common.js.map +1 -1
  5. package/dist/config/presets/internal/custom-managers.js +15 -0
  6. package/dist/config/presets/internal/custom-managers.js.map +1 -1
  7. package/dist/constants/platforms.js +5 -1
  8. package/dist/constants/platforms.js.map +1 -1
  9. package/dist/data/monorepo.json +3 -1
  10. package/dist/data-files.generated.js +2 -2
  11. package/dist/data-files.generated.js.map +1 -1
  12. package/dist/instrumentation/index.js +28 -8
  13. package/dist/instrumentation/index.js.map +1 -1
  14. package/dist/modules/datasource/api.js +2 -0
  15. package/dist/modules/datasource/api.js.map +1 -1
  16. package/dist/modules/datasource/azure-pipelines-tasks/index.js +4 -0
  17. package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
  18. package/dist/modules/datasource/azure-pipelines-tasks/schema.d.ts +8 -0
  19. package/dist/modules/datasource/azure-pipelines-tasks/schema.js +1 -0
  20. package/dist/modules/datasource/azure-pipelines-tasks/schema.js.map +1 -1
  21. package/dist/modules/datasource/bazel/index.js +18 -1
  22. package/dist/modules/datasource/bazel/index.js.map +1 -1
  23. package/dist/modules/datasource/bazel/schema.d.ts +1 -0
  24. package/dist/modules/datasource/bazel/schema.js.map +1 -1
  25. package/dist/modules/datasource/bitbucket-server-tags/index.d.ts +19 -0
  26. package/dist/modules/datasource/bitbucket-server-tags/index.js +133 -0
  27. package/dist/modules/datasource/bitbucket-server-tags/index.js.map +1 -0
  28. package/dist/modules/datasource/bitbucket-server-tags/schema.d.ts +28 -0
  29. package/dist/modules/datasource/bitbucket-server-tags/schema.js +13 -0
  30. package/dist/modules/datasource/bitbucket-server-tags/schema.js.map +1 -0
  31. package/dist/modules/datasource/conda/prefix-dev.js +1 -3
  32. package/dist/modules/datasource/conda/prefix-dev.js.map +1 -1
  33. package/dist/modules/datasource/cpan/index.js +1 -3
  34. package/dist/modules/datasource/cpan/index.js.map +1 -1
  35. package/dist/modules/datasource/custom/schema.d.ts +3 -3
  36. package/dist/modules/datasource/deb/index.d.ts +4 -5
  37. package/dist/modules/datasource/deb/index.js +8 -9
  38. package/dist/modules/datasource/deb/index.js.map +1 -1
  39. package/dist/modules/datasource/deb/url.d.ts +3 -3
  40. package/dist/modules/datasource/deb/url.js +17 -13
  41. package/dist/modules/datasource/deb/url.js.map +1 -1
  42. package/dist/modules/datasource/docker/schema.d.ts +72 -96
  43. package/dist/modules/datasource/github-runners/index.js +2 -2
  44. package/dist/modules/datasource/github-runners/index.js.map +1 -1
  45. package/dist/modules/datasource/metadata.js +9 -1
  46. package/dist/modules/datasource/metadata.js.map +1 -1
  47. package/dist/modules/datasource/npm/get.d.ts +0 -1
  48. package/dist/modules/datasource/npm/get.js +14 -68
  49. package/dist/modules/datasource/npm/get.js.map +1 -1
  50. package/dist/modules/datasource/npm/types.d.ts +0 -8
  51. package/dist/modules/datasource/npm/types.js.map +1 -1
  52. package/dist/modules/datasource/packagist/schema.d.ts +7 -7
  53. package/dist/modules/datasource/types.d.ts +1 -0
  54. package/dist/modules/datasource/types.js.map +1 -1
  55. package/dist/modules/manager/argocd/schema.d.ts +12 -12
  56. package/dist/modules/manager/bazel-module/parser/maven.d.ts +6 -52
  57. package/dist/modules/manager/bazel-module/parser/oci.d.ts +3 -26
  58. package/dist/modules/manager/bazel-module/rules.d.ts +15 -125
  59. package/dist/modules/manager/bun/extract.d.ts +1 -0
  60. package/dist/modules/manager/bun/extract.js +53 -27
  61. package/dist/modules/manager/bun/extract.js.map +1 -1
  62. package/dist/modules/manager/bun/index.js +1 -1
  63. package/dist/modules/manager/bun/index.js.map +1 -1
  64. package/dist/modules/manager/bun/utils.d.ts +2 -0
  65. package/dist/modules/manager/bun/utils.js +22 -0
  66. package/dist/modules/manager/bun/utils.js.map +1 -0
  67. package/dist/modules/manager/cargo/schema.d.ts +3 -3
  68. package/dist/modules/manager/circleci/extract.js +21 -30
  69. package/dist/modules/manager/circleci/extract.js.map +1 -1
  70. package/dist/modules/manager/circleci/schema.d.ts +33 -144
  71. package/dist/modules/manager/circleci/schema.js +21 -17
  72. package/dist/modules/manager/circleci/schema.js.map +1 -1
  73. package/dist/modules/manager/composer/schema.d.ts +6 -8
  74. package/dist/modules/manager/conan/artifacts.d.ts +2 -0
  75. package/dist/modules/manager/conan/artifacts.js +76 -0
  76. package/dist/modules/manager/conan/artifacts.js.map +1 -0
  77. package/dist/modules/manager/conan/index.d.ts +2 -0
  78. package/dist/modules/manager/conan/index.js +4 -1
  79. package/dist/modules/manager/conan/index.js.map +1 -1
  80. package/dist/modules/manager/devbox/artifacts.js +7 -0
  81. package/dist/modules/manager/devbox/artifacts.js.map +1 -1
  82. package/dist/modules/manager/dockerfile/extract.js +2 -6
  83. package/dist/modules/manager/dockerfile/extract.js.map +1 -1
  84. package/dist/modules/manager/fingerprint.generated.js +10 -10
  85. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  86. package/dist/modules/manager/flux/schema.d.ts +36 -60
  87. package/dist/modules/manager/gomod/artifacts-extra.js +12 -4
  88. package/dist/modules/manager/gomod/artifacts-extra.js.map +1 -1
  89. package/dist/modules/manager/gomod/update.js +3 -1
  90. package/dist/modules/manager/gomod/update.js.map +1 -1
  91. package/dist/modules/manager/gradle/extract.js +8 -13
  92. package/dist/modules/manager/gradle/extract.js.map +1 -1
  93. package/dist/modules/manager/gradle/parser/handlers.js +8 -0
  94. package/dist/modules/manager/gradle/parser/handlers.js.map +1 -1
  95. package/dist/modules/manager/gradle/parser/registry-urls.js +36 -10
  96. package/dist/modules/manager/gradle/parser/registry-urls.js.map +1 -1
  97. package/dist/modules/manager/gradle/types.d.ts +1 -0
  98. package/dist/modules/manager/gradle/types.js.map +1 -1
  99. package/dist/modules/manager/maven/extract.js +1 -3
  100. package/dist/modules/manager/maven/extract.js.map +1 -1
  101. package/dist/modules/manager/nix/schema.d.ts +14 -14
  102. package/dist/modules/manager/nix/schema.js +1 -0
  103. package/dist/modules/manager/nix/schema.js.map +1 -1
  104. package/dist/modules/manager/npm/extract/common/package-file.js +1 -0
  105. package/dist/modules/manager/npm/extract/common/package-file.js.map +1 -1
  106. package/dist/modules/manager/nuget/extract.js +21 -18
  107. package/dist/modules/manager/nuget/extract.js.map +1 -1
  108. package/dist/modules/manager/pep621/schema.d.ts +292 -5
  109. package/dist/modules/manager/pip_requirements/common.js +2 -6
  110. package/dist/modules/manager/pip_requirements/common.js.map +1 -1
  111. package/dist/modules/manager/pixi/artifacts.js +4 -10
  112. package/dist/modules/manager/pixi/artifacts.js.map +1 -1
  113. package/dist/modules/manager/pixi/extract.d.ts +2 -0
  114. package/dist/modules/manager/pixi/extract.js +81 -3
  115. package/dist/modules/manager/pixi/extract.js.map +1 -1
  116. package/dist/modules/manager/pixi/index.d.ts +0 -1
  117. package/dist/modules/manager/pixi/index.js +1 -3
  118. package/dist/modules/manager/pixi/index.js.map +1 -1
  119. package/dist/modules/manager/pixi/schema.d.ts +394 -3
  120. package/dist/modules/manager/pixi/schema.js +135 -2
  121. package/dist/modules/manager/pixi/schema.js.map +1 -1
  122. package/dist/modules/manager/sveltos/schema.d.ts +18 -30
  123. package/dist/modules/manager/terraform/util.js +1 -3
  124. package/dist/modules/manager/terraform/util.js.map +1 -1
  125. package/dist/modules/manager/vendir/schema.d.ts +3 -3
  126. package/dist/modules/platform/bitbucket/schema.d.ts +3 -3
  127. package/dist/modules/platform/bitbucket-server/schema.d.ts +1 -0
  128. package/dist/modules/platform/bitbucket-server/schema.js +2 -1
  129. package/dist/modules/platform/bitbucket-server/schema.js.map +1 -1
  130. package/dist/modules/platform/gerrit/client.d.ts +0 -3
  131. package/dist/modules/platform/gerrit/client.js +8 -28
  132. package/dist/modules/platform/gerrit/client.js.map +1 -1
  133. package/dist/modules/platform/gerrit/index.js +0 -6
  134. package/dist/modules/platform/gerrit/index.js.map +1 -1
  135. package/dist/modules/platform/gerrit/scm.js +5 -6
  136. package/dist/modules/platform/gerrit/scm.js.map +1 -1
  137. package/dist/modules/platform/gerrit/types.d.ts +1 -4
  138. package/dist/modules/platform/gerrit/types.js.map +1 -1
  139. package/dist/modules/platform/gerrit/utils.d.ts +3 -2
  140. package/dist/modules/platform/gerrit/utils.js +3 -7
  141. package/dist/modules/platform/gerrit/utils.js.map +1 -1
  142. package/dist/modules/platform/gitea/index.js +7 -9
  143. package/dist/modules/platform/gitea/index.js.map +1 -1
  144. package/dist/modules/platform/github/issue.d.ts +6 -6
  145. package/dist/modules/platform/github/schema.d.ts +52 -52
  146. package/dist/modules/platform/gitlab/index.js +2 -6
  147. package/dist/modules/platform/gitlab/index.js.map +1 -1
  148. package/dist/modules/versioning/distro.js +1 -3
  149. package/dist/modules/versioning/distro.js.map +1 -1
  150. package/dist/util/cache/package/types.d.ts +1 -1
  151. package/dist/util/cache/package/types.js.map +1 -1
  152. package/dist/util/cache/repository/impl/base.js +4 -0
  153. package/dist/util/cache/repository/impl/base.js.map +1 -1
  154. package/dist/util/common.d.ts +4 -2
  155. package/dist/util/common.js +17 -3
  156. package/dist/util/common.js.map +1 -1
  157. package/dist/util/exec/containerbase.js +2 -3
  158. package/dist/util/exec/containerbase.js.map +1 -1
  159. package/dist/util/git/auth.js +8 -5
  160. package/dist/util/git/auth.js.map +1 -1
  161. package/dist/util/git/index.js +2 -6
  162. package/dist/util/git/index.js.map +1 -1
  163. package/dist/util/git/private-key.js +1 -3
  164. package/dist/util/git/private-key.js.map +1 -1
  165. package/dist/util/git/types.d.ts +2 -0
  166. package/dist/util/git/types.js.map +1 -1
  167. package/dist/util/git/url.js +1 -1
  168. package/dist/util/git/url.js.map +1 -1
  169. package/dist/util/github/graphql/datasource-fetcher.js +3 -5
  170. package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
  171. package/dist/util/http/bitbucket-server.d.ts +2 -1
  172. package/dist/util/http/bitbucket-server.js +5 -3
  173. package/dist/util/http/bitbucket-server.js.map +1 -1
  174. package/dist/util/http/cache/package-http-cache-provider.d.ts +23 -0
  175. package/dist/util/http/cache/package-http-cache-provider.js +80 -0
  176. package/dist/util/http/cache/package-http-cache-provider.js.map +1 -0
  177. package/dist/util/http/host-rules.js +12 -0
  178. package/dist/util/http/host-rules.js.map +1 -1
  179. package/dist/util/schema-utils.d.ts +1 -0
  180. package/dist/util/schema-utils.js +43 -8
  181. package/dist/util/schema-utils.js.map +1 -1
  182. package/dist/util/string.d.ts +1 -0
  183. package/dist/util/string.js +4 -0
  184. package/dist/util/string.js.map +1 -1
  185. package/dist/util/yaml.js +2 -3
  186. package/dist/util/yaml.js.map +1 -1
  187. package/dist/workers/global/config/parse/index.js +10 -0
  188. package/dist/workers/global/config/parse/index.js.map +1 -1
  189. package/dist/workers/global/index.js +4 -2
  190. package/dist/workers/global/index.js.map +1 -1
  191. package/dist/workers/repository/process/lookup/index.js +2 -0
  192. package/dist/workers/repository/process/lookup/index.js.map +1 -1
  193. package/dist/workers/repository/process/lookup/timestamps.d.ts +18 -0
  194. package/dist/workers/repository/process/lookup/timestamps.js +69 -0
  195. package/dist/workers/repository/process/lookup/timestamps.js.map +1 -0
  196. package/dist/workers/repository/process/lookup/types.d.ts +1 -0
  197. package/dist/workers/repository/process/lookup/types.js.map +1 -1
  198. package/dist/workers/repository/process/lookup/utils.js +20 -9
  199. package/dist/workers/repository/process/lookup/utils.js.map +1 -1
  200. package/dist/workers/repository/process/sort.js +1 -1
  201. package/dist/workers/repository/process/sort.js.map +1 -1
  202. package/dist/workers/repository/reconfigure/utils.d.ts +2 -0
  203. package/dist/workers/repository/reconfigure/utils.js +16 -0
  204. package/dist/workers/repository/reconfigure/utils.js.map +1 -1
  205. package/dist/workers/repository/reconfigure/validate.js +5 -17
  206. package/dist/workers/repository/reconfigure/validate.js.map +1 -1
  207. package/dist/workers/repository/update/branch/auto-replace.js +25 -5
  208. package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
  209. package/dist/workers/repository/update/branch/commit.js +2 -0
  210. package/dist/workers/repository/update/branch/commit.js.map +1 -1
  211. package/dist/workers/repository/update/pr/body/config-description.js +26 -1
  212. package/dist/workers/repository/update/pr/body/config-description.js.map +1 -1
  213. package/dist/workers/repository/update/pr/body/index.js +21 -14
  214. package/dist/workers/repository/update/pr/body/index.js.map +1 -1
  215. package/dist/workers/repository/update/pr/changelog/api.js +8 -6
  216. package/dist/workers/repository/update/pr/changelog/api.js.map +1 -1
  217. package/dist/workers/repository/update/pr/changelog/bitbucket-server/index.d.ts +3 -0
  218. package/dist/workers/repository/update/pr/changelog/bitbucket-server/index.js +39 -0
  219. package/dist/workers/repository/update/pr/changelog/bitbucket-server/index.js.map +1 -0
  220. package/dist/workers/repository/update/pr/changelog/bitbucket-server/source.d.ts +8 -0
  221. package/dist/workers/repository/update/pr/changelog/bitbucket-server/source.js +31 -0
  222. package/dist/workers/repository/update/pr/changelog/bitbucket-server/source.js.map +1 -0
  223. package/dist/workers/repository/update/pr/changelog/release-notes.js +12 -8
  224. package/dist/workers/repository/update/pr/changelog/release-notes.js.map +1 -1
  225. package/dist/workers/repository/update/pr/changelog/source.d.ts +1 -1
  226. package/dist/workers/repository/update/pr/changelog/source.js.map +1 -1
  227. package/dist/workers/repository/update/pr/changelog/types.d.ts +1 -1
  228. package/dist/workers/repository/update/pr/changelog/types.js.map +1 -1
  229. package/dist/workers/repository/update/pr/index.js +2 -4
  230. package/dist/workers/repository/update/pr/index.js.map +1 -1
  231. package/dist/workers/repository/updates/generate.js +2 -0
  232. package/dist/workers/repository/updates/generate.js.map +1 -1
  233. package/package.json +40 -37
  234. package/renovate-schema.json +9 -2
  235. package/dist/modules/manager/pixi/lockfile.d.ts +0 -6
  236. package/dist/modules/manager/pixi/lockfile.js +0 -25
  237. package/dist/modules/manager/pixi/lockfile.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../lib/util/yaml.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CreateNodeOptions,\n Document,\n DocumentOptions,\n ParseOptions,\n SchemaOptions,\n ToStringOptions,\n} from 'yaml';\nimport { parseAllDocuments, parseDocument, stringify } from 'yaml';\nimport type { ZodType } from 'zod';\nimport { logger } from '../logger';\nimport { regEx } from './regex';\nimport { stripTemplates } from './string';\n\nexport interface YamlOptions<\n ResT = unknown,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n> extends ParseOptions,\n DocumentOptions,\n SchemaOptions {\n customSchema?: Schema;\n removeTemplates?: boolean;\n}\n\ninterface YamlParseDocumentOptions\n extends ParseOptions,\n DocumentOptions,\n SchemaOptions {\n removeTemplates?: boolean;\n}\n\nexport interface YamlOptionsMultiple<\n ResT = unknown,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n> extends YamlOptions<ResT, Schema> {\n failureBehaviour?: 'throw' | 'filter';\n}\n\nexport type DumpOptions = DocumentOptions &\n SchemaOptions &\n ParseOptions &\n CreateNodeOptions &\n ToStringOptions;\n\n/**\n * Parse a YAML string into a JavaScript object.\n *\n * Multiple documents are supported.\n *\n * If a schema is provided, the parsed object will be validated against it.\n *\n * If failureBehaviour is set to 'filter',\n * the function will return an empty array if the YAML parsing or schema validation fails and therefore will not throw an error.\n *\n * If failureBehaviour is set to 'throw',\n * the function will throw an error if the YAML parsing or schema validation fails for ANY document.\n * @param content\n * @param options\n */\nexport function parseYaml<ResT = unknown>(\n content: string,\n options?: YamlOptionsMultiple<ResT>,\n): ResT[] {\n const massagedContent = massageContent(content, options);\n\n const rawDocuments = parseAllDocuments(\n massagedContent,\n prepareParseOption(options),\n );\n\n const schema = options?.customSchema;\n\n const results: ResT[] = [];\n for (const rawDocument of rawDocuments) {\n const errors = rawDocument.errors;\n // handle YAML parse errors\n if (errors?.length) {\n const error = new AggregateError(errors, 'Failed to parse YAML file');\n if (options?.failureBehaviour === 'filter') {\n logger.debug(`Failed to parse YAML file: ${error.message}`);\n continue;\n }\n throw error;\n }\n\n const document = rawDocument.toJS({ maxAliasCount: 10000 });\n\n // skip schema validation if no schema is provided\n if (!schema) {\n results.push(document as ResT);\n continue;\n }\n\n const result = schema.safeParse(document);\n if (result.success) {\n results.push(result.data);\n continue;\n }\n\n // handle schema validation errors\n if (options?.failureBehaviour === 'filter') {\n logger.trace(\n { error: result.error, document },\n 'Failed to parse schema for YAML',\n );\n continue;\n }\n throw new Error('Failed to parse YAML file', { cause: result.error });\n }\n\n return results;\n}\n\n/**\n * Parse a YAML string into a JavaScript object.\n *\n * Only a single document is supported.\n *\n * If a schema is provided, the parsed object will be validated against it.\n * Should the YAML parsing or schemata validation fail, an error will be thrown.\n *\n * @param content\n * @param options\n */\nexport function parseSingleYaml<ResT = unknown>(\n content: string,\n options?: YamlOptions<ResT>,\n): ResT {\n const rawDocument = parseSingleYamlDocument(content, options);\n\n const document = rawDocument.toJS({ maxAliasCount: 10000 });\n const schema = options?.customSchema;\n if (!schema) {\n return document as ResT;\n }\n\n return schema.parse(document);\n}\n\n/**\n * Parse a YAML string into a Document representation.\n *\n * Only a single document is supported.\n *\n * @param content\n * @param options\n */\nexport function parseSingleYamlDocument(\n content: string,\n options?: YamlParseDocumentOptions,\n): Document {\n const massagedContent = massageContent(content, options);\n const rawDocument = parseDocument(\n massagedContent,\n prepareParseOption(options),\n );\n\n if (rawDocument?.errors?.length) {\n throw new AggregateError(rawDocument.errors, 'Failed to parse YAML file');\n }\n\n return rawDocument;\n}\n\nexport function dump(obj: any, opts?: DumpOptions): string {\n return stringify(obj, opts);\n}\n\nfunction massageContent(content: string, options?: YamlOptions): string {\n if (options?.removeTemplates) {\n return stripTemplates(content.replace(regEx(/\\s+{{.+?}}:.+/gs), ''));\n }\n\n return content;\n}\n\nfunction prepareParseOption(options: YamlOptions | undefined): YamlOptions {\n return {\n prettyErrors: true,\n // if we're removing templates, we can run into the situation where we have duplicate keys\n uniqueKeys: !options?.removeTemplates,\n strict: false,\n ...options,\n };\n}\n"]}
1
+ {"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../lib/util/yaml.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CreateNodeOptions,\n Document,\n DocumentOptions,\n ParseOptions,\n SchemaOptions,\n ToStringOptions,\n} from 'yaml';\nimport { parseAllDocuments, parseDocument, stringify } from 'yaml';\nimport type { ZodType } from 'zod';\nimport { logger } from '../logger';\nimport { stripTemplates } from './string';\n\nexport interface YamlOptions<\n ResT = unknown,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n> extends ParseOptions,\n DocumentOptions,\n SchemaOptions {\n customSchema?: Schema;\n removeTemplates?: boolean;\n}\n\ninterface YamlParseDocumentOptions\n extends ParseOptions,\n DocumentOptions,\n SchemaOptions {\n removeTemplates?: boolean;\n}\n\nexport interface YamlOptionsMultiple<\n ResT = unknown,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n> extends YamlOptions<ResT, Schema> {\n failureBehaviour?: 'throw' | 'filter';\n}\n\nexport type DumpOptions = DocumentOptions &\n SchemaOptions &\n ParseOptions &\n CreateNodeOptions &\n ToStringOptions;\n\n/**\n * Parse a YAML string into a JavaScript object.\n *\n * Multiple documents are supported.\n *\n * If a schema is provided, the parsed object will be validated against it.\n *\n * If failureBehaviour is set to 'filter',\n * the function will return an empty array if the YAML parsing or schema validation fails and therefore will not throw an error.\n *\n * If failureBehaviour is set to 'throw',\n * the function will throw an error if the YAML parsing or schema validation fails for ANY document.\n * @param content\n * @param options\n */\nexport function parseYaml<ResT = unknown>(\n content: string,\n options?: YamlOptionsMultiple<ResT>,\n): ResT[] {\n const massagedContent = massageContent(content, options);\n\n const rawDocuments = parseAllDocuments(\n massagedContent,\n prepareParseOption(options),\n );\n\n const schema = options?.customSchema;\n\n const results: ResT[] = [];\n for (const rawDocument of rawDocuments) {\n const errors = rawDocument.errors;\n // handle YAML parse errors\n if (errors?.length) {\n const error = new AggregateError(errors, 'Failed to parse YAML file');\n if (options?.failureBehaviour === 'filter') {\n logger.debug(`Failed to parse YAML file`);\n continue;\n }\n throw error;\n }\n\n const document = rawDocument.toJS({ maxAliasCount: 10000 });\n\n // skip schema validation if no schema is provided\n if (!schema) {\n results.push(document as ResT);\n continue;\n }\n\n const result = schema.safeParse(document);\n if (result.success) {\n results.push(result.data);\n continue;\n }\n\n // handle schema validation errors\n if (options?.failureBehaviour === 'filter') {\n logger.trace(\n { error: result.error, document },\n 'Failed to parse schema for YAML',\n );\n continue;\n }\n throw new Error('Failed to parse YAML file', { cause: result.error });\n }\n\n return results;\n}\n\n/**\n * Parse a YAML string into a JavaScript object.\n *\n * Only a single document is supported.\n *\n * If a schema is provided, the parsed object will be validated against it.\n * Should the YAML parsing or schemata validation fail, an error will be thrown.\n *\n * @param content\n * @param options\n */\nexport function parseSingleYaml<ResT = unknown>(\n content: string,\n options?: YamlOptions<ResT>,\n): ResT {\n const rawDocument = parseSingleYamlDocument(content, options);\n\n const document = rawDocument.toJS({ maxAliasCount: 10000 });\n const schema = options?.customSchema;\n if (!schema) {\n return document as ResT;\n }\n\n return schema.parse(document);\n}\n\n/**\n * Parse a YAML string into a Document representation.\n *\n * Only a single document is supported.\n *\n * @param content\n * @param options\n */\nexport function parseSingleYamlDocument(\n content: string,\n options?: YamlParseDocumentOptions,\n): Document {\n const massagedContent = massageContent(content, options);\n const rawDocument = parseDocument(\n massagedContent,\n prepareParseOption(options),\n );\n\n if (rawDocument?.errors?.length) {\n throw new AggregateError(rawDocument.errors, 'Failed to parse YAML file');\n }\n\n return rawDocument;\n}\n\nexport function dump(obj: any, opts?: DumpOptions): string {\n return stringify(obj, opts);\n}\n\nfunction massageContent(content: string, options?: YamlOptions): string {\n if (options?.removeTemplates) {\n return stripTemplates(content);\n }\n\n return content;\n}\n\nfunction prepareParseOption(options: YamlOptions | undefined): YamlOptions {\n return {\n prettyErrors: true,\n // if we're removing templates, we can run into the situation where we have duplicate keys\n uniqueKeys: !options?.removeTemplates,\n strict: false,\n ...options,\n };\n}\n"]}
@@ -4,6 +4,7 @@ exports.parseConfigs = parseConfigs;
4
4
  const tslib_1 = require("tslib");
5
5
  const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
6
6
  const defaultsParser = tslib_1.__importStar(require("../../../../config/defaults"));
7
+ const secrets_1 = require("../../../../config/secrets");
7
8
  const utils_1 = require("../../../../config/utils");
8
9
  const logger_1 = require("../../../../logger");
9
10
  const manager_1 = require("../../../../modules/manager");
@@ -88,6 +89,15 @@ async function parseConfigs(env, argv) {
88
89
  logger_1.logger.debug('Enabling onboardingNoDeps while in non-autodiscover mode');
89
90
  config.onboardingNoDeps = 'enabled';
90
91
  }
92
+ // do not add these secrets to repoSecrets and,
93
+ // do not delete the secrets object after applying on global config as it needs to be re-used for repo config
94
+ if (is_1.default.nonEmptyObject(config.secrets)) {
95
+ config = (0, secrets_1.applySecretsToConfig)(config, undefined, false);
96
+ // adding these secrets to the globalSecrets set so that they can be redacted from logs
97
+ for (const secret of Object.values(config.secrets)) {
98
+ (0, sanitize_1.addSecretForSanitizing)(secret, 'global');
99
+ }
100
+ }
91
101
  if (is_1.default.nonEmptyObject(config.customEnvVariables)) {
92
102
  (0, env_1.setCustomEnv)(config.customEnvVariables);
93
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/global/config/parse/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport * as defaultsParser from '../../../../config/defaults';\nimport type { AllConfig } from '../../../../config/types';\nimport { mergeChildConfig } from '../../../../config/utils';\nimport { logger, setContext } from '../../../../logger';\nimport { detectAllGlobalConfig } from '../../../../modules/manager';\nimport { coerceArray } from '../../../../util/array';\nimport { setCustomEnv } from '../../../../util/env';\nimport { readSystemFile } from '../../../../util/fs';\nimport { addSecretForSanitizing } from '../../../../util/sanitize';\nimport { ensureTrailingSlash } from '../../../../util/url';\nimport * as cliParser from './cli';\nimport * as codespaces from './codespaces';\nimport * as envParser from './env';\nimport * as fileParser from './file';\nimport { hostRulesFromEnv } from './host-rules-from-env';\n\nexport async function parseConfigs(\n env: NodeJS.ProcessEnv,\n argv: string[],\n): Promise<AllConfig> {\n logger.debug('Parsing configs');\n\n // Get configs\n const defaultConfig = defaultsParser.getConfig();\n const fileConfig = await fileParser.getConfig(env);\n const cliConfig = cliParser.getConfig(argv);\n const envConfig = await envParser.getConfig(env);\n\n let config: AllConfig = mergeChildConfig(fileConfig, envConfig);\n config = mergeChildConfig(config, cliConfig);\n\n config = await codespaces.setConfig(config);\n\n const combinedConfig = config;\n\n config = mergeChildConfig(defaultConfig, config);\n\n if (config.forceCli) {\n const forcedCli = { ...cliConfig };\n delete forcedCli.token;\n delete forcedCli.hostRules;\n if (config.force) {\n config.force = { ...config.force, ...forcedCli };\n } else {\n config.force = forcedCli;\n }\n }\n\n if (!config.privateKey && config.privateKeyPath) {\n config.privateKey = await readSystemFile(config.privateKeyPath, 'utf8');\n delete config.privateKeyPath;\n }\n\n if (!config.privateKeyOld && config.privateKeyPathOld) {\n config.privateKeyOld = await readSystemFile(\n config.privateKeyPathOld,\n 'utf8',\n );\n delete config.privateKeyPathOld;\n }\n\n addSecretForSanitizing(config.privateKey, 'global');\n addSecretForSanitizing(config.privateKeyOld, 'global');\n\n if (config.logContext) {\n // This only has an effect if logContext was defined via file or CLI, otherwise it would already have been detected in env\n setContext(config.logContext);\n }\n\n logger.trace({ config: defaultConfig }, 'Default config');\n logger.debug({ config: fileConfig }, 'File config');\n logger.debug({ config: cliConfig }, 'CLI config');\n logger.debug({ config: envConfig }, 'Env config');\n logger.debug({ config: combinedConfig }, 'Combined config');\n\n if (config.detectGlobalManagerConfig) {\n logger.debug('Detecting global manager config');\n const globalManagerConfig = await detectAllGlobalConfig();\n logger.debug({ config: globalManagerConfig }, 'Global manager config');\n config = mergeChildConfig(config, globalManagerConfig);\n }\n\n if (config.detectHostRulesFromEnv) {\n const hostRules = hostRulesFromEnv(env);\n config.hostRules = [...coerceArray(config.hostRules), ...hostRules];\n }\n // Get global config\n logger.trace({ config }, 'Full config');\n\n // Massage endpoint to have a trailing slash\n if (config.endpoint) {\n logger.debug('Adding trailing slash to endpoint');\n config.endpoint = ensureTrailingSlash(config.endpoint);\n }\n\n // Massage forkProcessing\n if (!config.autodiscover && config.forkProcessing !== 'disabled') {\n logger.debug('Enabling forkProcessing while in non-autodiscover mode');\n config.forkProcessing = 'enabled';\n }\n\n // Only try deletion if RENOVATE_CONFIG_FILE is set\n await fileParser.deleteNonDefaultConfig(env, !!config.deleteConfigFile);\n\n // Massage onboardingNoDeps\n if (!config.autodiscover && config.onboardingNoDeps !== 'disabled') {\n logger.debug('Enabling onboardingNoDeps while in non-autodiscover mode');\n config.onboardingNoDeps = 'enabled';\n }\n\n if (is.nonEmptyObject(config.customEnvVariables)) {\n setCustomEnv(config.customEnvVariables);\n }\n\n return config;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/global/config/parse/index.ts"],"names":[],"mappings":";;AAkBA,oCA6GC;;AA/HD,kEAAkC;AAClC,oFAA8D;AAC9D,wDAAkE;AAElE,oDAA4D;AAC5D,+CAAwD;AACxD,yDAAoE;AACpE,kDAAqD;AACrD,8CAAoD;AACpD,4CAAqD;AACrD,wDAAmE;AACnE,8CAA2D;AAC3D,yDAAmC;AACnC,iEAA2C;AAC3C,yDAAmC;AACnC,2DAAqC;AACrC,+DAAyD;AAElD,KAAK,UAAU,YAAY,CAChC,GAAsB,EACtB,IAAc;IAEd,eAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEhC,cAAc;IACd,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,MAAM,GAAc,IAAA,wBAAgB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChE,MAAM,GAAG,IAAA,wBAAgB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE7C,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,cAAc,GAAG,MAAM,CAAC;IAE9B,MAAM,GAAG,IAAA,wBAAgB,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAEjD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC,KAAK,CAAC;QACvB,OAAO,SAAS,CAAC,SAAS,CAAC;QAC3B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,SAAS,EAAE,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAChD,MAAM,CAAC,UAAU,GAAG,MAAM,IAAA,mBAAc,EAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACtD,MAAM,CAAC,aAAa,GAAG,MAAM,IAAA,mBAAc,EACzC,MAAM,CAAC,iBAAiB,EACxB,MAAM,CACP,CAAC;QACF,OAAO,MAAM,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,IAAA,iCAAsB,EAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAA,iCAAsB,EAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAEvD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,0HAA0H;QAC1H,IAAA,mBAAU,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC1D,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC,CAAC;IACpD,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;IAClD,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;IAClD,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAE5D,IAAI,MAAM,CAAC,yBAAyB,EAAE,CAAC;QACrC,eAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAChD,MAAM,mBAAmB,GAAG,MAAM,IAAA,+BAAqB,GAAE,CAAC;QAC1D,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACvE,MAAM,GAAG,IAAA,wBAAgB,EAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAA,sCAAgB,EAAC,GAAG,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IACtE,CAAC;IACD,oBAAoB;IACpB,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;IAExC,4CAA4C;IAC5C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,eAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAClD,MAAM,CAAC,QAAQ,GAAG,IAAA,yBAAmB,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;QACjE,eAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACvE,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;IACpC,CAAC;IAED,mDAAmD;IACnD,MAAM,UAAU,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAExE,2BAA2B;IAC3B,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACnE,eAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QACzE,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,+CAA+C;IAC/C,8GAA8G;IAC9G,IAAI,YAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,GAAG,IAAA,8BAAoB,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxD,uFAAuF;QACvF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAQ,CAAC,EAAE,CAAC;YACpD,IAAA,iCAAsB,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,YAAE,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACjD,IAAA,kBAAY,EAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport * as defaultsParser from '../../../../config/defaults';\nimport { applySecretsToConfig } from '../../../../config/secrets';\nimport type { AllConfig } from '../../../../config/types';\nimport { mergeChildConfig } from '../../../../config/utils';\nimport { logger, setContext } from '../../../../logger';\nimport { detectAllGlobalConfig } from '../../../../modules/manager';\nimport { coerceArray } from '../../../../util/array';\nimport { setCustomEnv } from '../../../../util/env';\nimport { readSystemFile } from '../../../../util/fs';\nimport { addSecretForSanitizing } from '../../../../util/sanitize';\nimport { ensureTrailingSlash } from '../../../../util/url';\nimport * as cliParser from './cli';\nimport * as codespaces from './codespaces';\nimport * as envParser from './env';\nimport * as fileParser from './file';\nimport { hostRulesFromEnv } from './host-rules-from-env';\n\nexport async function parseConfigs(\n env: NodeJS.ProcessEnv,\n argv: string[],\n): Promise<AllConfig> {\n logger.debug('Parsing configs');\n\n // Get configs\n const defaultConfig = defaultsParser.getConfig();\n const fileConfig = await fileParser.getConfig(env);\n const cliConfig = cliParser.getConfig(argv);\n const envConfig = await envParser.getConfig(env);\n\n let config: AllConfig = mergeChildConfig(fileConfig, envConfig);\n config = mergeChildConfig(config, cliConfig);\n\n config = await codespaces.setConfig(config);\n\n const combinedConfig = config;\n\n config = mergeChildConfig(defaultConfig, config);\n\n if (config.forceCli) {\n const forcedCli = { ...cliConfig };\n delete forcedCli.token;\n delete forcedCli.hostRules;\n if (config.force) {\n config.force = { ...config.force, ...forcedCli };\n } else {\n config.force = forcedCli;\n }\n }\n\n if (!config.privateKey && config.privateKeyPath) {\n config.privateKey = await readSystemFile(config.privateKeyPath, 'utf8');\n delete config.privateKeyPath;\n }\n\n if (!config.privateKeyOld && config.privateKeyPathOld) {\n config.privateKeyOld = await readSystemFile(\n config.privateKeyPathOld,\n 'utf8',\n );\n delete config.privateKeyPathOld;\n }\n\n addSecretForSanitizing(config.privateKey, 'global');\n addSecretForSanitizing(config.privateKeyOld, 'global');\n\n if (config.logContext) {\n // This only has an effect if logContext was defined via file or CLI, otherwise it would already have been detected in env\n setContext(config.logContext);\n }\n\n logger.trace({ config: defaultConfig }, 'Default config');\n logger.debug({ config: fileConfig }, 'File config');\n logger.debug({ config: cliConfig }, 'CLI config');\n logger.debug({ config: envConfig }, 'Env config');\n logger.debug({ config: combinedConfig }, 'Combined config');\n\n if (config.detectGlobalManagerConfig) {\n logger.debug('Detecting global manager config');\n const globalManagerConfig = await detectAllGlobalConfig();\n logger.debug({ config: globalManagerConfig }, 'Global manager config');\n config = mergeChildConfig(config, globalManagerConfig);\n }\n\n if (config.detectHostRulesFromEnv) {\n const hostRules = hostRulesFromEnv(env);\n config.hostRules = [...coerceArray(config.hostRules), ...hostRules];\n }\n // Get global config\n logger.trace({ config }, 'Full config');\n\n // Massage endpoint to have a trailing slash\n if (config.endpoint) {\n logger.debug('Adding trailing slash to endpoint');\n config.endpoint = ensureTrailingSlash(config.endpoint);\n }\n\n // Massage forkProcessing\n if (!config.autodiscover && config.forkProcessing !== 'disabled') {\n logger.debug('Enabling forkProcessing while in non-autodiscover mode');\n config.forkProcessing = 'enabled';\n }\n\n // Only try deletion if RENOVATE_CONFIG_FILE is set\n await fileParser.deleteNonDefaultConfig(env, !!config.deleteConfigFile);\n\n // Massage onboardingNoDeps\n if (!config.autodiscover && config.onboardingNoDeps !== 'disabled') {\n logger.debug('Enabling onboardingNoDeps while in non-autodiscover mode');\n config.onboardingNoDeps = 'enabled';\n }\n\n // do not add these secrets to repoSecrets and,\n // do not delete the secrets object after applying on global config as it needs to be re-used for repo config\n if (is.nonEmptyObject(config.secrets)) {\n config = applySecretsToConfig(config, undefined, false);\n // adding these secrets to the globalSecrets set so that they can be redacted from logs\n for (const secret of Object.values(config.secrets!)) {\n addSecretForSanitizing(secret, 'global');\n }\n }\n\n if (is.nonEmptyObject(config.customEnvVariables)) {\n setCustomEnv(config.customEnvVariables);\n }\n\n return config;\n}\n"]}
@@ -115,17 +115,19 @@ async function start() {
115
115
  // resolve global presets immediately
116
116
  config = (0, config_1.mergeChildConfig)(await resolveGlobalExtends(config.globalExtends, config.ignorePresets), config);
117
117
  }
118
- // Set allowedHeaders in case hostRules headers are configured in file config
118
+ // Set allowedHeaders and userAgent in case hostRules headers are configured in file config
119
119
  global_1.GlobalConfig.set({
120
120
  allowedHeaders: config.allowedHeaders,
121
+ userAgent: config.userAgent,
121
122
  });
122
123
  // initialize all submodules
123
124
  config = await (0, initialize_1.globalInitialize)(config);
124
- // Set platform, endpoint and allowedHeaders in case local presets are used
125
+ // Set platform, endpoint, allowedHeaders and userAgent in case local presets are used
125
126
  global_1.GlobalConfig.set({
126
127
  allowedHeaders: config.allowedHeaders,
127
128
  platform: config.platform,
128
129
  endpoint: config.endpoint,
130
+ userAgent: config.userAgent,
129
131
  });
130
132
  await validatePresets(config);
131
133
  (0, remap_1.setGlobalLogLevelRemaps)(config.logLevelRemap);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/workers/global/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { ERROR } from 'bunyan';\nimport fs from 'fs-extra';\nimport semver from 'semver';\nimport upath from 'upath';\nimport * as configParser from '../../config';\nimport { mergeChildConfig } from '../../config';\nimport { GlobalConfig } from '../../config/global';\nimport { resolveConfigPresets } from '../../config/presets';\nimport { validateConfigSecrets } from '../../config/secrets';\nimport type {\n AllConfig,\n RenovateConfig,\n RenovateRepository,\n} from '../../config/types';\nimport { CONFIG_PRESETS_INVALID } from '../../constants/error-messages';\nimport { pkg } from '../../expose.cjs';\nimport { instrument } from '../../instrumentation';\nimport { exportStats, finalizeReport } from '../../instrumentation/reporting';\nimport { getProblems, logLevel, logger, setMeta } from '../../logger';\nimport { setGlobalLogLevelRemaps } from '../../logger/remap';\nimport * as hostRules from '../../util/host-rules';\nimport * as queue from '../../util/http/queue';\nimport * as throttle from '../../util/http/throttle';\nimport { regexEngineStatus } from '../../util/regex';\nimport { addSecretForSanitizing } from '../../util/sanitize';\nimport * as repositoryWorker from '../repository';\nimport { autodiscoverRepositories } from './autodiscover';\nimport { parseConfigs } from './config/parse';\nimport { globalFinalize, globalInitialize } from './initialize';\nimport { isLimitReached } from './limits';\n\nexport async function getRepositoryConfig(\n globalConfig: RenovateConfig,\n repository: RenovateRepository,\n): Promise<RenovateConfig> {\n const repoConfig = configParser.mergeChildConfig(\n globalConfig,\n is.string(repository) ? { repository } : repository,\n );\n const repoParts = repoConfig.repository.split('/');\n repoParts.pop();\n repoConfig.parentOrg = repoParts.join('/');\n repoConfig.topLevelOrg = repoParts.shift();\n // TODO: types (#22198)\n const platform = GlobalConfig.get('platform')!;\n repoConfig.localDir =\n platform === 'local'\n ? process.cwd()\n : upath.join(\n repoConfig.baseDir,\n `./repos/${platform}/${repoConfig.repository}`,\n );\n await fs.ensureDir(repoConfig.localDir);\n delete repoConfig.baseDir;\n return configParser.filterConfig(repoConfig, 'repository');\n}\n\nfunction getGlobalConfig(): Promise<RenovateConfig> {\n return parseConfigs(process.env, process.argv);\n}\n\nfunction haveReachedLimits(): boolean {\n if (isLimitReached('Commits')) {\n logger.info('Max commits created for this run.');\n return true;\n }\n return false;\n}\n\n/* istanbul ignore next */\nfunction checkEnv(): void {\n const range = pkg.engines!.node!;\n if (process.release?.name !== 'node' || !process.versions?.node) {\n logger.warn(\n { release: process.release, versions: process.versions },\n 'Unknown node environment detected.',\n );\n } else if (!semver.satisfies(process.versions?.node, range)) {\n logger.error(\n { versions: process.versions, range },\n 'Unsupported node environment detected. Please update your node version.',\n );\n }\n}\n\nexport async function validatePresets(config: AllConfig): Promise<void> {\n logger.debug('validatePresets()');\n try {\n await resolveConfigPresets(config);\n } catch (err) /* istanbul ignore next */ {\n logger.error({ err }, CONFIG_PRESETS_INVALID);\n throw new Error(CONFIG_PRESETS_INVALID);\n }\n}\n\nexport async function resolveGlobalExtends(\n globalExtends: string[],\n ignorePresets?: string[],\n): Promise<AllConfig> {\n try {\n // Make a \"fake\" config to pass to resolveConfigPresets and resolve globalPresets\n const config = { extends: globalExtends, ignorePresets };\n const resolvedConfig = await resolveConfigPresets(config);\n return resolvedConfig;\n } catch (err) {\n logger.error({ err }, 'Error resolving config preset');\n throw new Error(CONFIG_PRESETS_INVALID);\n }\n}\n\nexport async function start(): Promise<number> {\n // istanbul ignore next\n if (regexEngineStatus.type === 'available') {\n logger.debug('Using RE2 regex engine');\n } else if (regexEngineStatus.type === 'unavailable') {\n logger.warn(\n { err: regexEngineStatus.err },\n 'RE2 not usable, falling back to RegExp',\n );\n } else if (regexEngineStatus.type === 'ignored') {\n logger.debug('RE2 regex engine is ignored via RENOVATE_X_IGNORE_RE2');\n }\n\n let config: AllConfig;\n try {\n if (is.nonEmptyStringAndNotWhitespace(process.env.AWS_SECRET_ACCESS_KEY)) {\n addSecretForSanitizing(process.env.AWS_SECRET_ACCESS_KEY, 'global');\n }\n if (is.nonEmptyStringAndNotWhitespace(process.env.AWS_SESSION_TOKEN)) {\n addSecretForSanitizing(process.env.AWS_SESSION_TOKEN, 'global');\n }\n\n await instrument('config', async () => {\n // read global config from file, env and cli args\n config = await getGlobalConfig();\n if (is.nonEmptyArray(config?.globalExtends)) {\n // resolve global presets immediately\n config = mergeChildConfig(\n await resolveGlobalExtends(\n config.globalExtends,\n config.ignorePresets,\n ),\n config,\n );\n }\n\n // Set allowedHeaders in case hostRules headers are configured in file config\n GlobalConfig.set({\n allowedHeaders: config.allowedHeaders,\n });\n // initialize all submodules\n config = await globalInitialize(config);\n\n // Set platform, endpoint and allowedHeaders in case local presets are used\n GlobalConfig.set({\n allowedHeaders: config.allowedHeaders,\n platform: config.platform,\n endpoint: config.endpoint,\n });\n\n await validatePresets(config);\n\n setGlobalLogLevelRemaps(config.logLevelRemap);\n\n checkEnv();\n\n // validate secrets. Will throw and abort if invalid\n validateConfigSecrets(config);\n });\n\n // autodiscover repositories (needs to come after platform initialization)\n config = await instrument('discover', () =>\n autodiscoverRepositories(config),\n );\n\n if (is.nonEmptyString(config.writeDiscoveredRepos)) {\n const content = JSON.stringify(config.repositories);\n await fs.writeFile(config.writeDiscoveredRepos, content);\n logger.info(\n `Written discovered repositories to ${config.writeDiscoveredRepos}`,\n );\n return 0;\n }\n\n // Iterate through repositories sequentially\n for (const repository of config.repositories!) {\n if (haveReachedLimits()) {\n break;\n }\n await instrument(\n 'repository',\n async () => {\n const repoConfig = await getRepositoryConfig(config, repository);\n if (repoConfig.hostRules) {\n logger.debug('Reinitializing hostRules for repo');\n hostRules.clear();\n repoConfig.hostRules.forEach((rule) => hostRules.add(rule));\n repoConfig.hostRules = [];\n }\n\n // host rules can change concurrency\n queue.clear();\n throttle.clear();\n\n await repositoryWorker.renovateRepository(repoConfig);\n setMeta({});\n },\n {\n attributes: {\n repository:\n typeof repository === 'string'\n ? repository\n : repository.repository,\n },\n },\n );\n }\n\n finalizeReport();\n await exportStats(config);\n } catch (err) /* istanbul ignore next */ {\n if (err.message.startsWith('Init: ')) {\n logger.fatal(\n { errorMessage: err.message.substring(6) },\n 'Initialization error',\n );\n } else {\n logger.fatal({ err }, 'Unknown error');\n }\n if (!config!) {\n // return early if we can't parse config options\n logger.debug(`Missing config`);\n return 2;\n }\n } finally {\n await globalFinalize(config!);\n if (logLevel() === 'info') {\n logger.info(\n `Renovate was run at log level \"${logLevel()}\". Set LOG_LEVEL=debug in environment variables to see extended debug logs.`,\n );\n }\n }\n const loggerErrors = getProblems().filter((p) => p.level >= ERROR);\n if (loggerErrors.length) {\n logger.info(\n { loggerErrors },\n 'Renovate is exiting with a non-zero code due to the following logged errors',\n );\n return 1;\n }\n return 0;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/workers/global/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { ERROR } from 'bunyan';\nimport fs from 'fs-extra';\nimport semver from 'semver';\nimport upath from 'upath';\nimport * as configParser from '../../config';\nimport { mergeChildConfig } from '../../config';\nimport { GlobalConfig } from '../../config/global';\nimport { resolveConfigPresets } from '../../config/presets';\nimport { validateConfigSecrets } from '../../config/secrets';\nimport type {\n AllConfig,\n RenovateConfig,\n RenovateRepository,\n} from '../../config/types';\nimport { CONFIG_PRESETS_INVALID } from '../../constants/error-messages';\nimport { pkg } from '../../expose.cjs';\nimport { instrument } from '../../instrumentation';\nimport { exportStats, finalizeReport } from '../../instrumentation/reporting';\nimport { getProblems, logLevel, logger, setMeta } from '../../logger';\nimport { setGlobalLogLevelRemaps } from '../../logger/remap';\nimport * as hostRules from '../../util/host-rules';\nimport * as queue from '../../util/http/queue';\nimport * as throttle from '../../util/http/throttle';\nimport { regexEngineStatus } from '../../util/regex';\nimport { addSecretForSanitizing } from '../../util/sanitize';\nimport * as repositoryWorker from '../repository';\nimport { autodiscoverRepositories } from './autodiscover';\nimport { parseConfigs } from './config/parse';\nimport { globalFinalize, globalInitialize } from './initialize';\nimport { isLimitReached } from './limits';\n\nexport async function getRepositoryConfig(\n globalConfig: RenovateConfig,\n repository: RenovateRepository,\n): Promise<RenovateConfig> {\n const repoConfig = configParser.mergeChildConfig(\n globalConfig,\n is.string(repository) ? { repository } : repository,\n );\n const repoParts = repoConfig.repository.split('/');\n repoParts.pop();\n repoConfig.parentOrg = repoParts.join('/');\n repoConfig.topLevelOrg = repoParts.shift();\n // TODO: types (#22198)\n const platform = GlobalConfig.get('platform')!;\n repoConfig.localDir =\n platform === 'local'\n ? process.cwd()\n : upath.join(\n repoConfig.baseDir,\n `./repos/${platform}/${repoConfig.repository}`,\n );\n await fs.ensureDir(repoConfig.localDir);\n delete repoConfig.baseDir;\n return configParser.filterConfig(repoConfig, 'repository');\n}\n\nfunction getGlobalConfig(): Promise<RenovateConfig> {\n return parseConfigs(process.env, process.argv);\n}\n\nfunction haveReachedLimits(): boolean {\n if (isLimitReached('Commits')) {\n logger.info('Max commits created for this run.');\n return true;\n }\n return false;\n}\n\n/* istanbul ignore next */\nfunction checkEnv(): void {\n const range = pkg.engines!.node!;\n if (process.release?.name !== 'node' || !process.versions?.node) {\n logger.warn(\n { release: process.release, versions: process.versions },\n 'Unknown node environment detected.',\n );\n } else if (!semver.satisfies(process.versions?.node, range)) {\n logger.error(\n { versions: process.versions, range },\n 'Unsupported node environment detected. Please update your node version.',\n );\n }\n}\n\nexport async function validatePresets(config: AllConfig): Promise<void> {\n logger.debug('validatePresets()');\n try {\n await resolveConfigPresets(config);\n } catch (err) /* istanbul ignore next */ {\n logger.error({ err }, CONFIG_PRESETS_INVALID);\n throw new Error(CONFIG_PRESETS_INVALID);\n }\n}\n\nexport async function resolveGlobalExtends(\n globalExtends: string[],\n ignorePresets?: string[],\n): Promise<AllConfig> {\n try {\n // Make a \"fake\" config to pass to resolveConfigPresets and resolve globalPresets\n const config = { extends: globalExtends, ignorePresets };\n const resolvedConfig = await resolveConfigPresets(config);\n return resolvedConfig;\n } catch (err) {\n logger.error({ err }, 'Error resolving config preset');\n throw new Error(CONFIG_PRESETS_INVALID);\n }\n}\n\nexport async function start(): Promise<number> {\n // istanbul ignore next\n if (regexEngineStatus.type === 'available') {\n logger.debug('Using RE2 regex engine');\n } else if (regexEngineStatus.type === 'unavailable') {\n logger.warn(\n { err: regexEngineStatus.err },\n 'RE2 not usable, falling back to RegExp',\n );\n } else if (regexEngineStatus.type === 'ignored') {\n logger.debug('RE2 regex engine is ignored via RENOVATE_X_IGNORE_RE2');\n }\n\n let config: AllConfig;\n try {\n if (is.nonEmptyStringAndNotWhitespace(process.env.AWS_SECRET_ACCESS_KEY)) {\n addSecretForSanitizing(process.env.AWS_SECRET_ACCESS_KEY, 'global');\n }\n if (is.nonEmptyStringAndNotWhitespace(process.env.AWS_SESSION_TOKEN)) {\n addSecretForSanitizing(process.env.AWS_SESSION_TOKEN, 'global');\n }\n\n await instrument('config', async () => {\n // read global config from file, env and cli args\n config = await getGlobalConfig();\n if (is.nonEmptyArray(config?.globalExtends)) {\n // resolve global presets immediately\n config = mergeChildConfig(\n await resolveGlobalExtends(\n config.globalExtends,\n config.ignorePresets,\n ),\n config,\n );\n }\n\n // Set allowedHeaders and userAgent in case hostRules headers are configured in file config\n GlobalConfig.set({\n allowedHeaders: config.allowedHeaders,\n userAgent: config.userAgent,\n });\n // initialize all submodules\n config = await globalInitialize(config);\n\n // Set platform, endpoint, allowedHeaders and userAgent in case local presets are used\n GlobalConfig.set({\n allowedHeaders: config.allowedHeaders,\n platform: config.platform,\n endpoint: config.endpoint,\n userAgent: config.userAgent,\n });\n\n await validatePresets(config);\n\n setGlobalLogLevelRemaps(config.logLevelRemap);\n\n checkEnv();\n\n // validate secrets. Will throw and abort if invalid\n validateConfigSecrets(config);\n });\n\n // autodiscover repositories (needs to come after platform initialization)\n config = await instrument('discover', () =>\n autodiscoverRepositories(config),\n );\n\n if (is.nonEmptyString(config.writeDiscoveredRepos)) {\n const content = JSON.stringify(config.repositories);\n await fs.writeFile(config.writeDiscoveredRepos, content);\n logger.info(\n `Written discovered repositories to ${config.writeDiscoveredRepos}`,\n );\n return 0;\n }\n\n // Iterate through repositories sequentially\n for (const repository of config.repositories!) {\n if (haveReachedLimits()) {\n break;\n }\n await instrument(\n 'repository',\n async () => {\n const repoConfig = await getRepositoryConfig(config, repository);\n if (repoConfig.hostRules) {\n logger.debug('Reinitializing hostRules for repo');\n hostRules.clear();\n repoConfig.hostRules.forEach((rule) => hostRules.add(rule));\n repoConfig.hostRules = [];\n }\n\n // host rules can change concurrency\n queue.clear();\n throttle.clear();\n\n await repositoryWorker.renovateRepository(repoConfig);\n setMeta({});\n },\n {\n attributes: {\n repository:\n typeof repository === 'string'\n ? repository\n : repository.repository,\n },\n },\n );\n }\n\n finalizeReport();\n await exportStats(config);\n } catch (err) /* istanbul ignore next */ {\n if (err.message.startsWith('Init: ')) {\n logger.fatal(\n { errorMessage: err.message.substring(6) },\n 'Initialization error',\n );\n } else {\n logger.fatal({ err }, 'Unknown error');\n }\n if (!config!) {\n // return early if we can't parse config options\n logger.debug(`Missing config`);\n return 2;\n }\n } finally {\n await globalFinalize(config!);\n if (logLevel() === 'info') {\n logger.info(\n `Renovate was run at log level \"${logLevel()}\". Set LOG_LEVEL=debug in environment variables to see extended debug logs.`,\n );\n }\n }\n const loggerErrors = getProblems().filter((p) => p.level >= ERROR);\n if (loggerErrors.length) {\n logger.info(\n { loggerErrors },\n 'Renovate is exiting with a non-zero code due to the following logged errors',\n );\n return 1;\n }\n return 0;\n}\n"]}
@@ -24,6 +24,7 @@ const filter_1 = require("./filter");
24
24
  const filter_checks_1 = require("./filter-checks");
25
25
  const generate_1 = require("./generate");
26
26
  const rollback_1 = require("./rollback");
27
+ const timestamps_1 = require("./timestamps");
27
28
  const utils_1 = require("./utils");
28
29
  async function getTimestamp(config, versions, version, versioningApi) {
29
30
  const currentRelease = versions.find((v) => versioningApi.isValid(v.version) &&
@@ -98,6 +99,7 @@ async function lookupUpdates(inconfig) {
98
99
  return result_1.Result.ok(res);
99
100
  }
100
101
  const { val: releaseResult, err: lookupError } = await (0, datasource_1.getRawPkgReleases)(config)
102
+ .transform((res) => (0, timestamps_1.calculateLatestReleaseBump)(versioningApi, res))
101
103
  .transform((res) => (0, datasource_1.applyDatasourceFilters)(res, config))
102
104
  .unwrap();
103
105
  if (lookupError instanceof Error) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../../config';\nimport type { ValidationMessage } from '../../../../config/types';\nimport { CONFIG_VALIDATION } from '../../../../constants/error-messages';\nimport { logger } from '../../../../logger';\nimport type {\n GetDigestInputConfig,\n Release,\n ReleaseResult,\n} from '../../../../modules/datasource';\nimport {\n applyDatasourceFilters,\n getDigest,\n getRawPkgReleases,\n isGetPkgReleasesConfig,\n supportsDigests,\n} from '../../../../modules/datasource';\nimport {\n getDatasourceFor,\n getDefaultVersioning,\n} from '../../../../modules/datasource/common';\nimport { postprocessRelease } from '../../../../modules/datasource/postprocess-release';\nimport { getRangeStrategy } from '../../../../modules/manager';\nimport * as allVersioning from '../../../../modules/versioning';\nimport { id as dockerVersioningId } from '../../../../modules/versioning/docker';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { assignKeys } from '../../../../util/assign-keys';\nimport { getElapsedDays } from '../../../../util/date';\nimport { applyPackageRules } from '../../../../util/package-rules';\nimport { regEx } from '../../../../util/regex';\nimport { Result } from '../../../../util/result';\nimport type { Timestamp } from '../../../../util/timestamp';\nimport { getBucket } from './bucket';\nimport { getCurrentVersion } from './current';\nimport { filterVersions } from './filter';\nimport { filterInternalChecks } from './filter-checks';\nimport { generateUpdate } from './generate';\nimport { getRollbackUpdate } from './rollback';\nimport type { LookupUpdateConfig, UpdateResult } from './types';\nimport {\n addReplacementUpdateIfValid,\n isReplacementRulesConfigured,\n} from './utils';\n\nasync function getTimestamp(\n config: LookupUpdateConfig,\n versions: Release[],\n version: string,\n versioningApi: allVersioning.VersioningApi,\n): Promise<Timestamp | null | undefined> {\n const currentRelease = versions.find(\n (v) =>\n versioningApi.isValid(v.version) &&\n versioningApi.equals(v.version, version),\n );\n\n if (!currentRelease) {\n return null;\n }\n\n if (currentRelease.releaseTimestamp) {\n return currentRelease.releaseTimestamp;\n }\n\n const remoteRelease = await postprocessRelease(config, currentRelease);\n return remoteRelease?.releaseTimestamp;\n}\n\nexport async function lookupUpdates(\n inconfig: LookupUpdateConfig,\n): Promise<Result<UpdateResult, Error>> {\n let config: LookupUpdateConfig = { ...inconfig };\n config.versioning ??= getDefaultVersioning(config.datasource);\n\n const versioningApi = allVersioning.get(config.versioning);\n\n let dependency: ReleaseResult | null = null;\n const res: UpdateResult = {\n versioning: config.versioning,\n updates: [],\n warnings: [],\n };\n\n try {\n logger.trace(\n {\n dependency: config.packageName,\n currentValue: config.currentValue,\n },\n 'lookupUpdates',\n );\n if (config.currentValue && !is.string(config.currentValue)) {\n // If currentValue is not a string, then it's invalid\n if (config.currentValue) {\n logger.debug(\n `Invalid currentValue for ${config.packageName}: ${JSON.stringify(config.currentValue)} (${typeof config.currentValue})`,\n );\n }\n res.skipReason = 'invalid-value';\n return Result.ok(res);\n }\n if (\n !isGetPkgReleasesConfig(config) ||\n !getDatasourceFor(config.datasource)\n ) {\n res.skipReason = 'invalid-config';\n return Result.ok(res);\n }\n let compareValue = config.currentValue;\n if (\n is.string(config.currentValue) &&\n is.string(config.versionCompatibility)\n ) {\n const versionCompatbilityRegEx = regEx(config.versionCompatibility);\n const regexMatch = versionCompatbilityRegEx.exec(config.currentValue);\n if (regexMatch?.groups) {\n logger.debug(\n {\n versionCompatibility: config.versionCompatibility,\n currentValue: config.currentValue,\n packageName: config.packageName,\n groups: regexMatch.groups,\n },\n 'version compatibility regex match',\n );\n config.currentCompatibility = regexMatch.groups.compatibility;\n compareValue = regexMatch.groups.version;\n } else {\n logger.debug(\n {\n versionCompatibility: config.versionCompatibility,\n currentValue: config.currentValue,\n packageName: config.packageName,\n },\n 'version compatibility regex mismatch',\n );\n }\n }\n\n const isValid =\n is.string(compareValue) && versioningApi.isValid(compareValue);\n\n const unconstrainedValue =\n !!config.lockedVersion && is.undefined(config.currentValue);\n\n if (isValid || unconstrainedValue) {\n if (\n !config.updatePinnedDependencies &&\n // TODO #22198\n versioningApi.isSingleVersion(compareValue!)\n ) {\n res.skipReason = 'is-pinned';\n return Result.ok(res);\n }\n\n const { val: releaseResult, err: lookupError } = await getRawPkgReleases(\n config,\n )\n .transform((res) => applyDatasourceFilters(res, config))\n .unwrap();\n\n if (lookupError instanceof Error) {\n throw lookupError;\n }\n\n if (lookupError) {\n // If dependency lookup fails then warn and return\n const warning: ValidationMessage = {\n topic: config.packageName,\n message: `Failed to look up ${config.datasource} package ${config.packageName}`,\n };\n logger.debug(\n {\n dependency: config.packageName,\n packageFile: config.packageFile,\n },\n warning.message,\n );\n // TODO: return warnings in own field\n res.warnings.push(warning);\n return Result.ok(res);\n }\n\n dependency = releaseResult;\n\n if (dependency.deprecationMessage) {\n logger.debug(\n `Found deprecationMessage for ${config.datasource} package ${config.packageName}`,\n );\n }\n\n assignKeys(res, dependency, [\n 'deprecationMessage',\n 'sourceUrl',\n 'registryUrl',\n 'sourceDirectory',\n 'homepage',\n 'changelogUrl',\n 'dependencyUrl',\n 'lookupName',\n 'packageScope',\n ]);\n\n const latestVersion = dependency.tags?.latest;\n // Filter out any results from datasource that don't comply with our versioning\n let allVersions = dependency.releases.filter((release) =>\n versioningApi.isVersion(release.version),\n );\n // istanbul ignore if\n if (allVersions.length === 0) {\n const message = `Found no results from datasource that look like a version`;\n logger.info(\n {\n dependency: config.packageName,\n result: dependency,\n },\n message,\n );\n if (!config.currentDigest) {\n return Result.ok(res);\n }\n }\n // Reapply package rules in case we missed something from sourceUrl\n config = await applyPackageRules(\n { ...config, sourceUrl: res.sourceUrl },\n 'source-url',\n );\n if (config.followTag) {\n const taggedVersion = dependency.tags?.[config.followTag];\n if (!taggedVersion) {\n res.warnings.push({\n topic: config.packageName,\n message: `Can't find version with tag ${config.followTag} for ${config.datasource} package ${config.packageName}`,\n });\n return Result.ok(res);\n }\n allVersions = allVersions.filter(\n (v) =>\n v.version === taggedVersion ||\n (v.version === compareValue &&\n versioningApi.isGreaterThan(taggedVersion, compareValue)),\n );\n }\n // Check that existing constraint can be satisfied\n const allSatisfyingVersions = allVersions.filter(\n (v) =>\n // TODO #22198\n unconstrainedValue || versioningApi.matches(v.version, compareValue!),\n );\n if (!allSatisfyingVersions.length) {\n logger.debug(\n `Found no satisfying versions with '${config.versioning}' versioning`,\n );\n }\n\n if (config.rollbackPrs && !allSatisfyingVersions.length) {\n const rollback = getRollbackUpdate(config, allVersions, versioningApi);\n // istanbul ignore if\n if (!rollback) {\n res.warnings.push({\n topic: config.packageName,\n // TODO: types (#22198)\n message: `Can't find version matching ${compareValue!} for ${\n config.datasource\n } package ${config.packageName}`,\n });\n return Result.ok(res);\n }\n res.updates.push(rollback);\n }\n let rangeStrategy = getRangeStrategy(config);\n\n // istanbul ignore next\n if (\n config.isVulnerabilityAlert &&\n rangeStrategy === 'update-lockfile' &&\n !config.lockedVersion\n ) {\n rangeStrategy = 'bump';\n }\n // unconstrained deps with lockedVersion\n if (\n config.isVulnerabilityAlert &&\n !config.currentValue &&\n config.lockedVersion\n ) {\n rangeStrategy = 'update-lockfile';\n }\n const nonDeprecatedVersions = dependency.releases\n .filter((release) => !release.isDeprecated)\n .map((release) => release.version);\n let currentVersion: string;\n if (rangeStrategy === 'update-lockfile') {\n currentVersion = config.lockedVersion!;\n }\n // TODO #22198\n currentVersion ??=\n getCurrentVersion(\n compareValue!,\n config.lockedVersion!,\n versioningApi,\n rangeStrategy!,\n latestVersion!,\n nonDeprecatedVersions,\n ) ??\n getCurrentVersion(\n compareValue!,\n config.lockedVersion!,\n versioningApi,\n rangeStrategy!,\n latestVersion!,\n allVersions.map((v) => v.version),\n )!;\n\n if (!currentVersion) {\n if (!config.lockedVersion) {\n logger.debug(\n `No currentVersion or lockedVersion found for ${config.packageName}`,\n );\n res.skipReason = 'invalid-value';\n }\n return Result.ok(res);\n }\n\n res.currentVersion = currentVersion!;\n const currentVersionTimestamp = await getTimestamp(\n config,\n allVersions,\n currentVersion,\n versioningApi,\n );\n\n if (is.nonEmptyString(currentVersionTimestamp)) {\n res.currentVersionTimestamp = currentVersionTimestamp;\n res.currentVersionAgeInDays = getElapsedDays(currentVersionTimestamp);\n\n if (\n config.packageRules?.some((rule) =>\n is.nonEmptyString(rule.matchCurrentAge),\n )\n ) {\n // Reapply package rules to check matches for matchCurrentAge\n config = await applyPackageRules(\n { ...config, currentVersionTimestamp },\n 'current-timestamp',\n );\n }\n }\n\n if (\n compareValue &&\n currentVersion &&\n rangeStrategy === 'pin' &&\n !versioningApi.isSingleVersion(compareValue)\n ) {\n res.updates.push({\n updateType: 'pin',\n isPin: true,\n // TODO: newValue can be null! (#22198)\n newValue: versioningApi.getNewValue({\n currentValue: compareValue,\n rangeStrategy,\n currentVersion,\n newVersion: currentVersion,\n })!,\n newVersion: currentVersion,\n newMajor: versioningApi.getMajor(currentVersion)!,\n });\n }\n if (rangeStrategy === 'pin') {\n // Fall back to replace once pinning logic is done\n rangeStrategy = 'replace';\n }\n // istanbul ignore if\n if (!versioningApi.isVersion(currentVersion!)) {\n res.skipReason = 'invalid-version';\n return Result.ok(res);\n }\n // Filter latest, unstable, etc\n // TODO #22198\n let filteredReleases = filterVersions(\n config,\n currentVersion!,\n latestVersion!,\n config.rangeStrategy === 'in-range-only'\n ? allSatisfyingVersions\n : allVersions,\n versioningApi,\n ).filter(\n (v) =>\n // Leave only compatible versions\n unconstrainedValue ||\n versioningApi.isCompatible(v.version, compareValue),\n );\n let shrinkedViaVulnerability = false;\n if (config.isVulnerabilityAlert) {\n if (config.vulnerabilityFixVersion) {\n res.vulnerabilityFixVersion = config.vulnerabilityFixVersion;\n res.vulnerabilityFixStrategy = config.vulnerabilityFixStrategy;\n if (versioningApi.isValid(config.vulnerabilityFixVersion)) {\n let fixedFilteredReleases;\n if (versioningApi.isVersion(config.vulnerabilityFixVersion)) {\n // Retain only releases greater than or equal to the fix version\n fixedFilteredReleases = filteredReleases.filter(\n (release) =>\n !versioningApi.isGreaterThan(\n config.vulnerabilityFixVersion!,\n release.version,\n ),\n );\n } else {\n // Retain only releases which max the fix constraint\n fixedFilteredReleases = filteredReleases.filter((release) =>\n versioningApi.matches(\n release.version,\n config.vulnerabilityFixVersion!,\n ),\n );\n }\n // Warn if this filtering results caused zero releases\n if (fixedFilteredReleases.length === 0 && filteredReleases.length) {\n logger.warn(\n {\n releases: filteredReleases,\n vulnerabilityFixVersion: config.vulnerabilityFixVersion,\n packageName: config.packageName,\n },\n 'No releases satisfy vulnerabilityFixVersion',\n );\n }\n // Use the additionally filtered releases\n filteredReleases = fixedFilteredReleases;\n } else {\n logger.warn(\n {\n vulnerabilityFixVersion: config.vulnerabilityFixVersion,\n packageName: config.packageName,\n },\n 'vulnerabilityFixVersion is not valid',\n );\n }\n }\n if (config.vulnerabilityFixStrategy === 'highest') {\n // Don't shrink the list of releases - let Renovate use its normal logic\n logger.once.debug(\n `Using vulnerabilityFixStrategy=highest for ${config.packageName}`,\n );\n } else {\n // Shrink the list of releases to the lowest fixed version\n logger.once.debug(\n `Using vulnerabilityFixStrategy=lowest for ${config.packageName}`,\n );\n filteredReleases = filteredReleases.slice(0, 1);\n shrinkedViaVulnerability = true;\n }\n }\n const buckets: Record<string, [Release]> = {};\n for (const release of filteredReleases) {\n const bucket = getBucket(\n config,\n // TODO #22198\n currentVersion!,\n release.version,\n versioningApi,\n );\n if (is.string(bucket)) {\n if (buckets[bucket]) {\n buckets[bucket].push(release);\n } else {\n buckets[bucket] = [release];\n }\n }\n }\n const depResultConfig = mergeChildConfig(config, res);\n for (const [bucket, releases] of Object.entries(buckets)) {\n const sortedReleases = releases.sort((r1, r2) =>\n versioningApi.sortVersions(r1.version, r2.version),\n );\n const { release, pendingChecks, pendingReleases } =\n await filterInternalChecks(\n depResultConfig,\n versioningApi,\n bucket,\n sortedReleases,\n );\n // istanbul ignore next\n if (!release) {\n return Result.ok(res);\n }\n const newVersion = release.version;\n const update = await generateUpdate(\n config,\n compareValue,\n versioningApi,\n // TODO #22198\n\n rangeStrategy!,\n config.lockedVersion ?? currentVersion!,\n bucket,\n release,\n );\n\n // #29034\n if (\n config.manager === 'gomod' &&\n compareValue?.startsWith('v0.0.0-') &&\n update.newValue?.startsWith('v0.0.0-') &&\n config.currentDigest !== update.newDigest\n ) {\n update.updateType = 'digest';\n }\n\n if (pendingChecks) {\n update.pendingChecks = pendingChecks;\n }\n\n // TODO #22198\n if (pendingReleases!.length) {\n update.pendingVersions = pendingReleases!.map((r) => r.version);\n }\n if (!update.newValue || update.newValue === compareValue) {\n if (!config.lockedVersion) {\n continue;\n }\n // istanbul ignore if\n if (rangeStrategy === 'bump') {\n logger.trace(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n lockedVersion: config.lockedVersion,\n newVersion,\n },\n 'Skipping bump because newValue is the same',\n );\n continue;\n }\n res.isSingleVersion = true;\n }\n res.isSingleVersion ??=\n is.string(update.newValue) &&\n versioningApi.isSingleVersion(update.newValue);\n // istanbul ignore if\n if (\n config.versioning === dockerVersioningId &&\n update.updateType !== 'rollback' &&\n update.newValue &&\n versioningApi.isVersion(update.newValue) &&\n compareValue &&\n versioningApi.isVersion(compareValue) &&\n versioningApi.isGreaterThan(compareValue, update.newValue)\n ) {\n logger.warn(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n compareValue,\n currentVersion: config.currentVersion,\n update,\n allVersionsLength: allVersions.length,\n filteredReleaseVersions: filteredReleases.map((r) => r.version),\n shrinkedViaVulnerability,\n },\n 'Unexpected downgrade detected: skipping',\n );\n } else {\n res.updates.push(update);\n }\n }\n } else if (compareValue) {\n logger.debug(\n `Dependency ${config.packageName} has unsupported/unversioned value ${compareValue} (versioning=${config.versioning})`,\n );\n\n if (!config.pinDigests && !config.currentDigest) {\n logger.debug(\n `Skipping ${config.packageName} because no currentDigest or pinDigests`,\n );\n res.skipReason = 'invalid-value';\n } else {\n delete res.skipReason;\n }\n } else {\n res.skipReason = 'invalid-value';\n }\n\n if (isReplacementRulesConfigured(config)) {\n addReplacementUpdateIfValid(res.updates, config);\n } else if (dependency?.replacementName && dependency.replacementVersion) {\n res.updates.push({\n updateType: 'replacement',\n newName: dependency.replacementName,\n newValue: dependency.replacementVersion,\n });\n }\n\n // Record if the dep is fixed to a version\n if (config.lockedVersion) {\n res.currentVersion = config.lockedVersion;\n res.fixedVersion = config.lockedVersion;\n } else if (compareValue && versioningApi.isSingleVersion(compareValue)) {\n res.fixedVersion = compareValue.replace(regEx(/^=+/), '');\n }\n\n // massage versionCompatibility\n if (\n is.string(config.currentValue) &&\n is.string(compareValue) &&\n is.string(config.versionCompatibility)\n ) {\n for (const update of res.updates) {\n logger.debug({ update });\n if (is.string(config.currentValue) && is.string(update.newValue)) {\n update.newValue = config.currentValue.replace(\n compareValue,\n update.newValue,\n );\n }\n }\n }\n\n // Add digests if necessary\n if (supportsDigests(config.datasource)) {\n if (config.currentDigest) {\n if (!config.digestOneAndOnly || !res.updates.length) {\n // digest update\n res.updates.push({\n updateType: 'digest',\n newValue: config.currentValue,\n });\n }\n } else if (config.pinDigests) {\n // Create a pin only if one doesn't already exists\n if (!res.updates.some((update) => update.updateType === 'pin')) {\n // pin digest\n res.updates.push({\n isPinDigest: true,\n updateType: 'pinDigest',\n newValue: config.currentValue,\n });\n }\n }\n if (versioningApi.valueToVersion) {\n // TODO #22198\n res.currentVersion = versioningApi.valueToVersion(res.currentVersion!);\n for (const update of res.updates || /* istanbul ignore next*/ []) {\n // TODO #22198\n update.newVersion = versioningApi.valueToVersion(update.newVersion!);\n }\n }\n if (res.registryUrl) {\n config.registryUrls = [res.registryUrl];\n }\n\n // update digest for all\n for (const update of res.updates) {\n if (config.pinDigests === true || config.currentDigest) {\n const getDigestConfig: GetDigestInputConfig = {\n ...config,\n registryUrl: update.registryUrl ?? res.registryUrl,\n lookupName: res.lookupName,\n };\n\n // #20304 only pass it for replacement updates, otherwise we get wrong or invalid digest\n if (update.updateType !== 'replacement') {\n delete getDigestConfig.replacementName;\n }\n\n // #20304 don't use lookupName and currentDigest when we replace image name\n if (\n update.updateType === 'replacement' &&\n update.newName !== config.packageName\n ) {\n delete getDigestConfig.lookupName;\n delete getDigestConfig.currentDigest;\n }\n\n // TODO #22198\n update.newDigest ??=\n dependency?.releases.find((r) => r.version === update.newValue)\n ?.newDigest ??\n (await getDigest(getDigestConfig, update.newValue))!;\n\n // If the digest could not be determined, report this as otherwise the\n // update will be omitted later on without notice.\n if (update.newDigest === null) {\n logger.debug(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n datasource: config.datasource,\n newValue: update.newValue,\n bucket: update.bucket,\n },\n 'Could not determine new digest for update.',\n );\n\n // Only report a warning if there is a current digest.\n // Context: https://github.com/renovatebot/renovate/pull/20175#discussion_r1102615059.\n if (config.currentDigest) {\n res.warnings.push({\n message: `Could not determine new digest for update (${config.datasource} package ${config.packageName})`,\n topic: config.packageName,\n });\n }\n }\n } else {\n delete update.newDigest;\n }\n if (update.newVersion) {\n const registryUrl = dependency?.releases?.find(\n (release) => release.version === update.newVersion,\n )?.registryUrl;\n if (registryUrl && registryUrl !== res.registryUrl) {\n update.registryUrl = registryUrl;\n }\n }\n }\n }\n\n if (res.updates.length) {\n delete res.skipReason;\n }\n // Strip out any non-changed ones\n res.updates = res.updates\n .filter(\n (update) => update.newValue !== null || config.currentValue === null,\n )\n .filter((update) => update.newDigest !== null)\n .filter(\n (update) =>\n (is.string(update.newName) &&\n update.newName !== config.packageName) ||\n update.isReplacement === true ||\n update.newValue !== config.currentValue ||\n update.isLockfileUpdate === true ||\n // TODO #22198\n (update.newDigest &&\n !update.newDigest.startsWith(config.currentDigest!)),\n );\n // If range strategy specified in config is 'in-range-only', also strip out updates where currentValue !== newValue\n if (config.rangeStrategy === 'in-range-only') {\n res.updates = res.updates.filter(\n (update) => update.newValue === config.currentValue,\n );\n }\n // Handle a weird edge case involving followTag and fallbacks\n if (config.rollbackPrs && config.followTag) {\n res.updates = res.updates.filter(\n (update) =>\n res.updates.length === 1 ||\n /* istanbul ignore next */ update.updateType !== 'rollback',\n );\n }\n } catch (err) /* istanbul ignore next */ {\n if (err instanceof ExternalHostError) {\n return Result.err(err);\n }\n\n if (err instanceof Error && err.message === CONFIG_VALIDATION) {\n return Result.err(err);\n }\n\n logger.error(\n {\n currentDigest: config.currentDigest,\n currentValue: config.currentValue,\n datasource: config.datasource,\n packageName: config.packageName,\n digestOneAndOnly: config.digestOneAndOnly,\n followTag: config.followTag,\n lockedVersion: config.lockedVersion,\n packageFile: config.packageFile,\n pinDigests: config.pinDigests,\n rollbackPrs: config.rollbackPrs,\n isVulnerabilityAlert: config.isVulnerabilityAlert,\n updatePinnedDependencies: config.updatePinnedDependencies,\n err,\n },\n 'lookupUpdates error',\n );\n res.skipReason = 'internal-error';\n }\n return Result.ok(res);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../../config';\nimport type { ValidationMessage } from '../../../../config/types';\nimport { CONFIG_VALIDATION } from '../../../../constants/error-messages';\nimport { logger } from '../../../../logger';\nimport type {\n GetDigestInputConfig,\n Release,\n ReleaseResult,\n} from '../../../../modules/datasource';\nimport {\n applyDatasourceFilters,\n getDigest,\n getRawPkgReleases,\n isGetPkgReleasesConfig,\n supportsDigests,\n} from '../../../../modules/datasource';\nimport {\n getDatasourceFor,\n getDefaultVersioning,\n} from '../../../../modules/datasource/common';\nimport { postprocessRelease } from '../../../../modules/datasource/postprocess-release';\nimport { getRangeStrategy } from '../../../../modules/manager';\nimport * as allVersioning from '../../../../modules/versioning';\nimport { id as dockerVersioningId } from '../../../../modules/versioning/docker';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { assignKeys } from '../../../../util/assign-keys';\nimport { getElapsedDays } from '../../../../util/date';\nimport { applyPackageRules } from '../../../../util/package-rules';\nimport { regEx } from '../../../../util/regex';\nimport { Result } from '../../../../util/result';\nimport type { Timestamp } from '../../../../util/timestamp';\nimport { getBucket } from './bucket';\nimport { getCurrentVersion } from './current';\nimport { filterVersions } from './filter';\nimport { filterInternalChecks } from './filter-checks';\nimport { generateUpdate } from './generate';\nimport { getRollbackUpdate } from './rollback';\nimport { calculateLatestReleaseBump } from './timestamps';\nimport type { LookupUpdateConfig, UpdateResult } from './types';\nimport {\n addReplacementUpdateIfValid,\n isReplacementRulesConfigured,\n} from './utils';\n\nasync function getTimestamp(\n config: LookupUpdateConfig,\n versions: Release[],\n version: string,\n versioningApi: allVersioning.VersioningApi,\n): Promise<Timestamp | null | undefined> {\n const currentRelease = versions.find(\n (v) =>\n versioningApi.isValid(v.version) &&\n versioningApi.equals(v.version, version),\n );\n\n if (!currentRelease) {\n return null;\n }\n\n if (currentRelease.releaseTimestamp) {\n return currentRelease.releaseTimestamp;\n }\n\n const remoteRelease = await postprocessRelease(config, currentRelease);\n return remoteRelease?.releaseTimestamp;\n}\n\nexport async function lookupUpdates(\n inconfig: LookupUpdateConfig,\n): Promise<Result<UpdateResult, Error>> {\n let config: LookupUpdateConfig = { ...inconfig };\n config.versioning ??= getDefaultVersioning(config.datasource);\n\n const versioningApi = allVersioning.get(config.versioning);\n\n let dependency: ReleaseResult | null = null;\n const res: UpdateResult = {\n versioning: config.versioning,\n updates: [],\n warnings: [],\n };\n\n try {\n logger.trace(\n {\n dependency: config.packageName,\n currentValue: config.currentValue,\n },\n 'lookupUpdates',\n );\n if (config.currentValue && !is.string(config.currentValue)) {\n // If currentValue is not a string, then it's invalid\n if (config.currentValue) {\n logger.debug(\n `Invalid currentValue for ${config.packageName}: ${JSON.stringify(config.currentValue)} (${typeof config.currentValue})`,\n );\n }\n res.skipReason = 'invalid-value';\n return Result.ok(res);\n }\n if (\n !isGetPkgReleasesConfig(config) ||\n !getDatasourceFor(config.datasource)\n ) {\n res.skipReason = 'invalid-config';\n return Result.ok(res);\n }\n let compareValue = config.currentValue;\n if (\n is.string(config.currentValue) &&\n is.string(config.versionCompatibility)\n ) {\n const versionCompatbilityRegEx = regEx(config.versionCompatibility);\n const regexMatch = versionCompatbilityRegEx.exec(config.currentValue);\n if (regexMatch?.groups) {\n logger.debug(\n {\n versionCompatibility: config.versionCompatibility,\n currentValue: config.currentValue,\n packageName: config.packageName,\n groups: regexMatch.groups,\n },\n 'version compatibility regex match',\n );\n config.currentCompatibility = regexMatch.groups.compatibility;\n compareValue = regexMatch.groups.version;\n } else {\n logger.debug(\n {\n versionCompatibility: config.versionCompatibility,\n currentValue: config.currentValue,\n packageName: config.packageName,\n },\n 'version compatibility regex mismatch',\n );\n }\n }\n\n const isValid =\n is.string(compareValue) && versioningApi.isValid(compareValue);\n\n const unconstrainedValue =\n !!config.lockedVersion && is.undefined(config.currentValue);\n\n if (isValid || unconstrainedValue) {\n if (\n !config.updatePinnedDependencies &&\n // TODO #22198\n versioningApi.isSingleVersion(compareValue!)\n ) {\n res.skipReason = 'is-pinned';\n return Result.ok(res);\n }\n\n const { val: releaseResult, err: lookupError } = await getRawPkgReleases(\n config,\n )\n .transform((res) => calculateLatestReleaseBump(versioningApi, res))\n .transform((res) => applyDatasourceFilters(res, config))\n .unwrap();\n\n if (lookupError instanceof Error) {\n throw lookupError;\n }\n\n if (lookupError) {\n // If dependency lookup fails then warn and return\n const warning: ValidationMessage = {\n topic: config.packageName,\n message: `Failed to look up ${config.datasource} package ${config.packageName}`,\n };\n logger.debug(\n {\n dependency: config.packageName,\n packageFile: config.packageFile,\n },\n warning.message,\n );\n // TODO: return warnings in own field\n res.warnings.push(warning);\n return Result.ok(res);\n }\n\n dependency = releaseResult;\n\n if (dependency.deprecationMessage) {\n logger.debug(\n `Found deprecationMessage for ${config.datasource} package ${config.packageName}`,\n );\n }\n\n assignKeys(res, dependency, [\n 'deprecationMessage',\n 'sourceUrl',\n 'registryUrl',\n 'sourceDirectory',\n 'homepage',\n 'changelogUrl',\n 'dependencyUrl',\n 'lookupName',\n 'packageScope',\n ]);\n\n const latestVersion = dependency.tags?.latest;\n // Filter out any results from datasource that don't comply with our versioning\n let allVersions = dependency.releases.filter((release) =>\n versioningApi.isVersion(release.version),\n );\n // istanbul ignore if\n if (allVersions.length === 0) {\n const message = `Found no results from datasource that look like a version`;\n logger.info(\n {\n dependency: config.packageName,\n result: dependency,\n },\n message,\n );\n if (!config.currentDigest) {\n return Result.ok(res);\n }\n }\n // Reapply package rules in case we missed something from sourceUrl\n config = await applyPackageRules(\n { ...config, sourceUrl: res.sourceUrl },\n 'source-url',\n );\n if (config.followTag) {\n const taggedVersion = dependency.tags?.[config.followTag];\n if (!taggedVersion) {\n res.warnings.push({\n topic: config.packageName,\n message: `Can't find version with tag ${config.followTag} for ${config.datasource} package ${config.packageName}`,\n });\n return Result.ok(res);\n }\n allVersions = allVersions.filter(\n (v) =>\n v.version === taggedVersion ||\n (v.version === compareValue &&\n versioningApi.isGreaterThan(taggedVersion, compareValue)),\n );\n }\n // Check that existing constraint can be satisfied\n const allSatisfyingVersions = allVersions.filter(\n (v) =>\n // TODO #22198\n unconstrainedValue || versioningApi.matches(v.version, compareValue!),\n );\n if (!allSatisfyingVersions.length) {\n logger.debug(\n `Found no satisfying versions with '${config.versioning}' versioning`,\n );\n }\n\n if (config.rollbackPrs && !allSatisfyingVersions.length) {\n const rollback = getRollbackUpdate(config, allVersions, versioningApi);\n // istanbul ignore if\n if (!rollback) {\n res.warnings.push({\n topic: config.packageName,\n // TODO: types (#22198)\n message: `Can't find version matching ${compareValue!} for ${\n config.datasource\n } package ${config.packageName}`,\n });\n return Result.ok(res);\n }\n res.updates.push(rollback);\n }\n let rangeStrategy = getRangeStrategy(config);\n\n // istanbul ignore next\n if (\n config.isVulnerabilityAlert &&\n rangeStrategy === 'update-lockfile' &&\n !config.lockedVersion\n ) {\n rangeStrategy = 'bump';\n }\n // unconstrained deps with lockedVersion\n if (\n config.isVulnerabilityAlert &&\n !config.currentValue &&\n config.lockedVersion\n ) {\n rangeStrategy = 'update-lockfile';\n }\n const nonDeprecatedVersions = dependency.releases\n .filter((release) => !release.isDeprecated)\n .map((release) => release.version);\n let currentVersion: string;\n if (rangeStrategy === 'update-lockfile') {\n currentVersion = config.lockedVersion!;\n }\n // TODO #22198\n currentVersion ??=\n getCurrentVersion(\n compareValue!,\n config.lockedVersion!,\n versioningApi,\n rangeStrategy!,\n latestVersion!,\n nonDeprecatedVersions,\n ) ??\n getCurrentVersion(\n compareValue!,\n config.lockedVersion!,\n versioningApi,\n rangeStrategy!,\n latestVersion!,\n allVersions.map((v) => v.version),\n )!;\n\n if (!currentVersion) {\n if (!config.lockedVersion) {\n logger.debug(\n `No currentVersion or lockedVersion found for ${config.packageName}`,\n );\n res.skipReason = 'invalid-value';\n }\n return Result.ok(res);\n }\n\n res.currentVersion = currentVersion!;\n const currentVersionTimestamp = await getTimestamp(\n config,\n allVersions,\n currentVersion,\n versioningApi,\n );\n\n if (is.nonEmptyString(currentVersionTimestamp)) {\n res.currentVersionTimestamp = currentVersionTimestamp;\n res.currentVersionAgeInDays = getElapsedDays(currentVersionTimestamp);\n\n if (\n config.packageRules?.some((rule) =>\n is.nonEmptyString(rule.matchCurrentAge),\n )\n ) {\n // Reapply package rules to check matches for matchCurrentAge\n config = await applyPackageRules(\n { ...config, currentVersionTimestamp },\n 'current-timestamp',\n );\n }\n }\n\n if (\n compareValue &&\n currentVersion &&\n rangeStrategy === 'pin' &&\n !versioningApi.isSingleVersion(compareValue)\n ) {\n res.updates.push({\n updateType: 'pin',\n isPin: true,\n // TODO: newValue can be null! (#22198)\n newValue: versioningApi.getNewValue({\n currentValue: compareValue,\n rangeStrategy,\n currentVersion,\n newVersion: currentVersion,\n })!,\n newVersion: currentVersion,\n newMajor: versioningApi.getMajor(currentVersion)!,\n });\n }\n if (rangeStrategy === 'pin') {\n // Fall back to replace once pinning logic is done\n rangeStrategy = 'replace';\n }\n // istanbul ignore if\n if (!versioningApi.isVersion(currentVersion!)) {\n res.skipReason = 'invalid-version';\n return Result.ok(res);\n }\n // Filter latest, unstable, etc\n // TODO #22198\n let filteredReleases = filterVersions(\n config,\n currentVersion!,\n latestVersion!,\n config.rangeStrategy === 'in-range-only'\n ? allSatisfyingVersions\n : allVersions,\n versioningApi,\n ).filter(\n (v) =>\n // Leave only compatible versions\n unconstrainedValue ||\n versioningApi.isCompatible(v.version, compareValue),\n );\n let shrinkedViaVulnerability = false;\n if (config.isVulnerabilityAlert) {\n if (config.vulnerabilityFixVersion) {\n res.vulnerabilityFixVersion = config.vulnerabilityFixVersion;\n res.vulnerabilityFixStrategy = config.vulnerabilityFixStrategy;\n if (versioningApi.isValid(config.vulnerabilityFixVersion)) {\n let fixedFilteredReleases;\n if (versioningApi.isVersion(config.vulnerabilityFixVersion)) {\n // Retain only releases greater than or equal to the fix version\n fixedFilteredReleases = filteredReleases.filter(\n (release) =>\n !versioningApi.isGreaterThan(\n config.vulnerabilityFixVersion!,\n release.version,\n ),\n );\n } else {\n // Retain only releases which max the fix constraint\n fixedFilteredReleases = filteredReleases.filter((release) =>\n versioningApi.matches(\n release.version,\n config.vulnerabilityFixVersion!,\n ),\n );\n }\n // Warn if this filtering results caused zero releases\n if (fixedFilteredReleases.length === 0 && filteredReleases.length) {\n logger.warn(\n {\n releases: filteredReleases,\n vulnerabilityFixVersion: config.vulnerabilityFixVersion,\n packageName: config.packageName,\n },\n 'No releases satisfy vulnerabilityFixVersion',\n );\n }\n // Use the additionally filtered releases\n filteredReleases = fixedFilteredReleases;\n } else {\n logger.warn(\n {\n vulnerabilityFixVersion: config.vulnerabilityFixVersion,\n packageName: config.packageName,\n },\n 'vulnerabilityFixVersion is not valid',\n );\n }\n }\n if (config.vulnerabilityFixStrategy === 'highest') {\n // Don't shrink the list of releases - let Renovate use its normal logic\n logger.once.debug(\n `Using vulnerabilityFixStrategy=highest for ${config.packageName}`,\n );\n } else {\n // Shrink the list of releases to the lowest fixed version\n logger.once.debug(\n `Using vulnerabilityFixStrategy=lowest for ${config.packageName}`,\n );\n filteredReleases = filteredReleases.slice(0, 1);\n shrinkedViaVulnerability = true;\n }\n }\n const buckets: Record<string, [Release]> = {};\n for (const release of filteredReleases) {\n const bucket = getBucket(\n config,\n // TODO #22198\n currentVersion!,\n release.version,\n versioningApi,\n );\n if (is.string(bucket)) {\n if (buckets[bucket]) {\n buckets[bucket].push(release);\n } else {\n buckets[bucket] = [release];\n }\n }\n }\n const depResultConfig = mergeChildConfig(config, res);\n for (const [bucket, releases] of Object.entries(buckets)) {\n const sortedReleases = releases.sort((r1, r2) =>\n versioningApi.sortVersions(r1.version, r2.version),\n );\n const { release, pendingChecks, pendingReleases } =\n await filterInternalChecks(\n depResultConfig,\n versioningApi,\n bucket,\n sortedReleases,\n );\n // istanbul ignore next\n if (!release) {\n return Result.ok(res);\n }\n const newVersion = release.version;\n const update = await generateUpdate(\n config,\n compareValue,\n versioningApi,\n // TODO #22198\n\n rangeStrategy!,\n config.lockedVersion ?? currentVersion!,\n bucket,\n release,\n );\n\n // #29034\n if (\n config.manager === 'gomod' &&\n compareValue?.startsWith('v0.0.0-') &&\n update.newValue?.startsWith('v0.0.0-') &&\n config.currentDigest !== update.newDigest\n ) {\n update.updateType = 'digest';\n }\n\n if (pendingChecks) {\n update.pendingChecks = pendingChecks;\n }\n\n // TODO #22198\n if (pendingReleases!.length) {\n update.pendingVersions = pendingReleases!.map((r) => r.version);\n }\n if (!update.newValue || update.newValue === compareValue) {\n if (!config.lockedVersion) {\n continue;\n }\n // istanbul ignore if\n if (rangeStrategy === 'bump') {\n logger.trace(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n lockedVersion: config.lockedVersion,\n newVersion,\n },\n 'Skipping bump because newValue is the same',\n );\n continue;\n }\n res.isSingleVersion = true;\n }\n res.isSingleVersion ??=\n is.string(update.newValue) &&\n versioningApi.isSingleVersion(update.newValue);\n // istanbul ignore if\n if (\n config.versioning === dockerVersioningId &&\n update.updateType !== 'rollback' &&\n update.newValue &&\n versioningApi.isVersion(update.newValue) &&\n compareValue &&\n versioningApi.isVersion(compareValue) &&\n versioningApi.isGreaterThan(compareValue, update.newValue)\n ) {\n logger.warn(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n compareValue,\n currentVersion: config.currentVersion,\n update,\n allVersionsLength: allVersions.length,\n filteredReleaseVersions: filteredReleases.map((r) => r.version),\n shrinkedViaVulnerability,\n },\n 'Unexpected downgrade detected: skipping',\n );\n } else {\n res.updates.push(update);\n }\n }\n } else if (compareValue) {\n logger.debug(\n `Dependency ${config.packageName} has unsupported/unversioned value ${compareValue} (versioning=${config.versioning})`,\n );\n\n if (!config.pinDigests && !config.currentDigest) {\n logger.debug(\n `Skipping ${config.packageName} because no currentDigest or pinDigests`,\n );\n res.skipReason = 'invalid-value';\n } else {\n delete res.skipReason;\n }\n } else {\n res.skipReason = 'invalid-value';\n }\n\n if (isReplacementRulesConfigured(config)) {\n addReplacementUpdateIfValid(res.updates, config);\n } else if (dependency?.replacementName && dependency.replacementVersion) {\n res.updates.push({\n updateType: 'replacement',\n newName: dependency.replacementName,\n newValue: dependency.replacementVersion,\n });\n }\n\n // Record if the dep is fixed to a version\n if (config.lockedVersion) {\n res.currentVersion = config.lockedVersion;\n res.fixedVersion = config.lockedVersion;\n } else if (compareValue && versioningApi.isSingleVersion(compareValue)) {\n res.fixedVersion = compareValue.replace(regEx(/^=+/), '');\n }\n\n // massage versionCompatibility\n if (\n is.string(config.currentValue) &&\n is.string(compareValue) &&\n is.string(config.versionCompatibility)\n ) {\n for (const update of res.updates) {\n logger.debug({ update });\n if (is.string(config.currentValue) && is.string(update.newValue)) {\n update.newValue = config.currentValue.replace(\n compareValue,\n update.newValue,\n );\n }\n }\n }\n\n // Add digests if necessary\n if (supportsDigests(config.datasource)) {\n if (config.currentDigest) {\n if (!config.digestOneAndOnly || !res.updates.length) {\n // digest update\n res.updates.push({\n updateType: 'digest',\n newValue: config.currentValue,\n });\n }\n } else if (config.pinDigests) {\n // Create a pin only if one doesn't already exists\n if (!res.updates.some((update) => update.updateType === 'pin')) {\n // pin digest\n res.updates.push({\n isPinDigest: true,\n updateType: 'pinDigest',\n newValue: config.currentValue,\n });\n }\n }\n if (versioningApi.valueToVersion) {\n // TODO #22198\n res.currentVersion = versioningApi.valueToVersion(res.currentVersion!);\n for (const update of res.updates || /* istanbul ignore next*/ []) {\n // TODO #22198\n update.newVersion = versioningApi.valueToVersion(update.newVersion!);\n }\n }\n if (res.registryUrl) {\n config.registryUrls = [res.registryUrl];\n }\n\n // update digest for all\n for (const update of res.updates) {\n if (config.pinDigests === true || config.currentDigest) {\n const getDigestConfig: GetDigestInputConfig = {\n ...config,\n registryUrl: update.registryUrl ?? res.registryUrl,\n lookupName: res.lookupName,\n };\n\n // #20304 only pass it for replacement updates, otherwise we get wrong or invalid digest\n if (update.updateType !== 'replacement') {\n delete getDigestConfig.replacementName;\n }\n\n // #20304 don't use lookupName and currentDigest when we replace image name\n if (\n update.updateType === 'replacement' &&\n update.newName !== config.packageName\n ) {\n delete getDigestConfig.lookupName;\n delete getDigestConfig.currentDigest;\n }\n\n // TODO #22198\n update.newDigest ??=\n dependency?.releases.find((r) => r.version === update.newValue)\n ?.newDigest ??\n (await getDigest(getDigestConfig, update.newValue))!;\n\n // If the digest could not be determined, report this as otherwise the\n // update will be omitted later on without notice.\n if (update.newDigest === null) {\n logger.debug(\n {\n packageName: config.packageName,\n currentValue: config.currentValue,\n datasource: config.datasource,\n newValue: update.newValue,\n bucket: update.bucket,\n },\n 'Could not determine new digest for update.',\n );\n\n // Only report a warning if there is a current digest.\n // Context: https://github.com/renovatebot/renovate/pull/20175#discussion_r1102615059.\n if (config.currentDigest) {\n res.warnings.push({\n message: `Could not determine new digest for update (${config.datasource} package ${config.packageName})`,\n topic: config.packageName,\n });\n }\n }\n } else {\n delete update.newDigest;\n }\n if (update.newVersion) {\n const registryUrl = dependency?.releases?.find(\n (release) => release.version === update.newVersion,\n )?.registryUrl;\n if (registryUrl && registryUrl !== res.registryUrl) {\n update.registryUrl = registryUrl;\n }\n }\n }\n }\n\n if (res.updates.length) {\n delete res.skipReason;\n }\n // Strip out any non-changed ones\n res.updates = res.updates\n .filter(\n (update) => update.newValue !== null || config.currentValue === null,\n )\n .filter((update) => update.newDigest !== null)\n .filter(\n (update) =>\n (is.string(update.newName) &&\n update.newName !== config.packageName) ||\n update.isReplacement === true ||\n update.newValue !== config.currentValue ||\n update.isLockfileUpdate === true ||\n // TODO #22198\n (update.newDigest &&\n !update.newDigest.startsWith(config.currentDigest!)),\n );\n // If range strategy specified in config is 'in-range-only', also strip out updates where currentValue !== newValue\n if (config.rangeStrategy === 'in-range-only') {\n res.updates = res.updates.filter(\n (update) => update.newValue === config.currentValue,\n );\n }\n // Handle a weird edge case involving followTag and fallbacks\n if (config.rollbackPrs && config.followTag) {\n res.updates = res.updates.filter(\n (update) =>\n res.updates.length === 1 ||\n /* istanbul ignore next */ update.updateType !== 'rollback',\n );\n }\n } catch (err) /* istanbul ignore next */ {\n if (err instanceof ExternalHostError) {\n return Result.err(err);\n }\n\n if (err instanceof Error && err.message === CONFIG_VALIDATION) {\n return Result.err(err);\n }\n\n logger.error(\n {\n currentDigest: config.currentDigest,\n currentValue: config.currentValue,\n datasource: config.datasource,\n packageName: config.packageName,\n digestOneAndOnly: config.digestOneAndOnly,\n followTag: config.followTag,\n lockedVersion: config.lockedVersion,\n packageFile: config.packageFile,\n pinDigests: config.pinDigests,\n rollbackPrs: config.rollbackPrs,\n isVulnerabilityAlert: config.isVulnerabilityAlert,\n updatePinnedDependencies: config.updatePinnedDependencies,\n err,\n },\n 'lookupUpdates error',\n );\n res.skipReason = 'internal-error';\n }\n return Result.ok(res);\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import type { ReleaseResult } from '../../../../modules/datasource/types';
2
+ import type { VersioningApi } from '../../../../modules/versioning/types';
3
+ /**
4
+ * Calculates the `bumpedAt` value for a set of releases.
5
+ *
6
+ * This function determines the highest release (a release with the highest version)
7
+ * and checks if its timestamp is also the highest among all releases.
8
+ * If so, it assigns that timestamp as the `bumpedAt` value in the result.
9
+ * This helps identify if the package was abandoned.
10
+ *
11
+ * The function skips setting `bumpedAt` if:
12
+ * - No releases could be determined as the highest (e.g. for invalid versions)
13
+ * - The highest release is deprecated
14
+ * - A lower version has a more recent timestamp than the highest version
15
+ *
16
+ * @returns The `ReleaseResult` value, potentially updated with a `bumpedAt` timestamp
17
+ */
18
+ export declare function calculateLatestReleaseBump(versioningApi: VersioningApi, releaseResult: ReleaseResult): ReleaseResult;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateLatestReleaseBump = calculateLatestReleaseBump;
4
+ const luxon_1 = require("luxon");
5
+ const logger_1 = require("../../../../logger");
6
+ const timestamp_1 = require("../../../../util/timestamp");
7
+ /**
8
+ * Calculates the `bumpedAt` value for a set of releases.
9
+ *
10
+ * This function determines the highest release (a release with the highest version)
11
+ * and checks if its timestamp is also the highest among all releases.
12
+ * If so, it assigns that timestamp as the `bumpedAt` value in the result.
13
+ * This helps identify if the package was abandoned.
14
+ *
15
+ * The function skips setting `bumpedAt` if:
16
+ * - No releases could be determined as the highest (e.g. for invalid versions)
17
+ * - The highest release is deprecated
18
+ * - A lower version has a more recent timestamp than the highest version
19
+ *
20
+ * @returns The `ReleaseResult` value, potentially updated with a `bumpedAt` timestamp
21
+ */
22
+ function calculateLatestReleaseBump(versioningApi, releaseResult) {
23
+ const { lookupName } = releaseResult;
24
+ let highestRelease;
25
+ for (const release of releaseResult.releases) {
26
+ if (!highestRelease) {
27
+ if (versioningApi.isVersion(release.version)) {
28
+ highestRelease = release;
29
+ }
30
+ continue;
31
+ }
32
+ try {
33
+ if (versioningApi.isGreaterThan(release.version, highestRelease.version)) {
34
+ highestRelease = release;
35
+ continue;
36
+ }
37
+ }
38
+ catch {
39
+ logger_1.logger.trace({ lookupName }, 'Error calculating "bumpedAt" value');
40
+ }
41
+ }
42
+ if (!highestRelease) {
43
+ logger_1.logger.trace({ lookupName }, 'Could not determine the highest release to calculate "bumpedAt" value');
44
+ return releaseResult;
45
+ }
46
+ if (highestRelease.isDeprecated) {
47
+ logger_1.logger.trace({ lookupName }, 'Highest release is deprecated, skip calculating "bumpedAt" value');
48
+ return releaseResult;
49
+ }
50
+ const highestReleaseTimestamp = (0, timestamp_1.asTimestamp)(highestRelease.releaseTimestamp);
51
+ if (highestReleaseTimestamp) {
52
+ const highestReleaseDatetime = luxon_1.DateTime.fromISO(highestReleaseTimestamp);
53
+ const higherTimestampExists = releaseResult.releases.some((release) => {
54
+ const releaseTimestamp = (0, timestamp_1.asTimestamp)(release.releaseTimestamp);
55
+ if (!releaseTimestamp) {
56
+ return false;
57
+ }
58
+ return luxon_1.DateTime.fromISO(releaseTimestamp) > highestReleaseDatetime;
59
+ });
60
+ if (!higherTimestampExists) {
61
+ logger_1.logger.trace({ lookupName }, 'Using "bumpedAt" value because it is the highest timestamp of the highest release version');
62
+ releaseResult.bumpedAt = highestReleaseTimestamp;
63
+ return releaseResult;
64
+ }
65
+ }
66
+ logger_1.logger.trace({ lookupName }, 'Skip using "bumpedAt" value because the higher timestamp exists for lower version');
67
+ return releaseResult;
68
+ }
69
+ //# sourceMappingURL=timestamps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/timestamps.ts"],"names":[],"mappings":";;AAwBA,gEAuEC;AA/FD,iCAAiC;AACjC,+CAA4C;AAM5C,0DAAyD;AAEzD;;;;;;;;;;;;;;GAcG;AACH,SAAgB,0BAA0B,CACxC,aAA4B,EAC5B,aAA4B;IAE5B,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IAErC,IAAI,cAAmC,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC7C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7C,cAAc,GAAG,OAAO,CAAC;YAC3B,CAAC;YAED,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,IACE,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,EACpE,CAAC;gBACD,cAAc,GAAG,OAAO,CAAC;gBACzB,SAAS;YACX,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,eAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,oCAAoC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,eAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,EACd,uEAAuE,CACxE,CAAC;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;QAChC,eAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,EACd,kEAAkE,CACnE,CAAC;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,uBAAuB,GAAG,IAAA,uBAAW,EAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC7E,IAAI,uBAAuB,EAAE,CAAC;QAC5B,MAAM,sBAAsB,GAAG,gBAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,qBAAqB,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACpE,MAAM,gBAAgB,GAAG,IAAA,uBAAW,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC/D,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,gBAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,sBAAsB,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC3B,eAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,EACd,2FAA2F,CAC5F,CAAC;YACF,aAAa,CAAC,QAAQ,GAAG,uBAAuB,CAAC;YACjD,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,eAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,EACd,mFAAmF,CACpF,CAAC;IACF,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import { DateTime } from 'luxon';\nimport { logger } from '../../../../logger';\nimport type {\n Release,\n ReleaseResult,\n} from '../../../../modules/datasource/types';\nimport type { VersioningApi } from '../../../../modules/versioning/types';\nimport { asTimestamp } from '../../../../util/timestamp';\n\n/**\n * Calculates the `bumpedAt` value for a set of releases.\n *\n * This function determines the highest release (a release with the highest version)\n * and checks if its timestamp is also the highest among all releases.\n * If so, it assigns that timestamp as the `bumpedAt` value in the result.\n * This helps identify if the package was abandoned.\n *\n * The function skips setting `bumpedAt` if:\n * - No releases could be determined as the highest (e.g. for invalid versions)\n * - The highest release is deprecated\n * - A lower version has a more recent timestamp than the highest version\n *\n * @returns The `ReleaseResult` value, potentially updated with a `bumpedAt` timestamp\n */\nexport function calculateLatestReleaseBump(\n versioningApi: VersioningApi,\n releaseResult: ReleaseResult,\n): ReleaseResult {\n const { lookupName } = releaseResult;\n\n let highestRelease: Release | undefined;\n for (const release of releaseResult.releases) {\n if (!highestRelease) {\n if (versioningApi.isVersion(release.version)) {\n highestRelease = release;\n }\n\n continue;\n }\n\n try {\n if (\n versioningApi.isGreaterThan(release.version, highestRelease.version)\n ) {\n highestRelease = release;\n continue;\n }\n } catch {\n logger.trace({ lookupName }, 'Error calculating \"bumpedAt\" value');\n }\n }\n\n if (!highestRelease) {\n logger.trace(\n { lookupName },\n 'Could not determine the highest release to calculate \"bumpedAt\" value',\n );\n return releaseResult;\n }\n\n if (highestRelease.isDeprecated) {\n logger.trace(\n { lookupName },\n 'Highest release is deprecated, skip calculating \"bumpedAt\" value',\n );\n return releaseResult;\n }\n\n const highestReleaseTimestamp = asTimestamp(highestRelease.releaseTimestamp);\n if (highestReleaseTimestamp) {\n const highestReleaseDatetime = DateTime.fromISO(highestReleaseTimestamp);\n const higherTimestampExists = releaseResult.releases.some((release) => {\n const releaseTimestamp = asTimestamp(release.releaseTimestamp);\n if (!releaseTimestamp) {\n return false;\n }\n\n return DateTime.fromISO(releaseTimestamp) > highestReleaseDatetime;\n });\n\n if (!higherTimestampExists) {\n logger.trace(\n { lookupName },\n 'Using \"bumpedAt\" value because it is the highest timestamp of the highest release version',\n );\n releaseResult.bumpedAt = highestReleaseTimestamp;\n return releaseResult;\n }\n }\n\n logger.trace(\n { lookupName },\n 'Skip using \"bumpedAt\" value because the higher timestamp exists for lower version',\n );\n return releaseResult;\n}\n"]}
@@ -35,6 +35,7 @@ export interface LookupUpdateConfig extends RollbackConfig, FilterConfig, RangeC
35
35
  replacementName?: string;
36
36
  replacementNameTemplate?: string;
37
37
  replacementVersion?: string;
38
+ replacementVersionTemplate?: string;
38
39
  extractVersion?: string;
39
40
  vulnerabilityFixVersion?: string;
40
41
  vulnerabilityFixStrategy?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n RenovateConfig,\n ValidationMessage,\n} from '../../../../config/types';\nimport type {\n LookupUpdate,\n RangeConfig,\n} from '../../../../modules/manager/types';\nimport type { SkipReason } from '../../../../types';\nimport type { MergeConfidence } from '../../../../util/merge-confidence/types';\n\nexport interface FilterConfig {\n allowedVersions?: string;\n depName?: string;\n followTag?: string;\n ignoreDeprecated?: boolean;\n ignoreUnstable?: boolean;\n respectLatest?: boolean;\n updatePinnedDependencies?: boolean;\n versioning: string;\n}\n\nexport interface RollbackConfig {\n currentValue?: string;\n depName?: string;\n packageFile?: string;\n versioning: string;\n}\n\nexport interface LookupUpdateConfig\n extends RollbackConfig,\n FilterConfig,\n RangeConfig,\n RenovateConfig {\n separateMinorPatch?: boolean;\n digestOneAndOnly?: boolean;\n pinDigests?: boolean;\n rollbackPrs?: boolean;\n currentDigest?: string;\n lockedVersion?: string;\n isVulnerabilityAlert?: boolean;\n separateMajorMinor?: boolean;\n separateMultipleMajor?: boolean;\n separateMultipleMinor?: boolean;\n datasource: string;\n packageName: string;\n minimumConfidence?: MergeConfidence | undefined;\n replacementName?: string;\n replacementNameTemplate?: string;\n replacementVersion?: string;\n extractVersion?: string;\n vulnerabilityFixVersion?: string;\n vulnerabilityFixStrategy?: string;\n}\n\nexport interface UpdateResult {\n sourceDirectory?: string;\n changelogUrl?: string;\n dependencyUrl?: string;\n homepage?: string;\n deprecationMessage?: string;\n sourceUrl?: string | null;\n currentVersion?: string;\n isSingleVersion?: boolean;\n lookupName?: string;\n skipReason?: SkipReason;\n registryUrl?: string;\n fixedVersion?: string;\n updates: LookupUpdate[];\n warnings: ValidationMessage[];\n versioning?: string;\n currentVersionAgeInDays?: number;\n currentVersionTimestamp?: string;\n vulnerabilityFixVersion?: string;\n vulnerabilityFixStrategy?: string;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n RenovateConfig,\n ValidationMessage,\n} from '../../../../config/types';\nimport type {\n LookupUpdate,\n RangeConfig,\n} from '../../../../modules/manager/types';\nimport type { SkipReason } from '../../../../types';\nimport type { MergeConfidence } from '../../../../util/merge-confidence/types';\n\nexport interface FilterConfig {\n allowedVersions?: string;\n depName?: string;\n followTag?: string;\n ignoreDeprecated?: boolean;\n ignoreUnstable?: boolean;\n respectLatest?: boolean;\n updatePinnedDependencies?: boolean;\n versioning: string;\n}\n\nexport interface RollbackConfig {\n currentValue?: string;\n depName?: string;\n packageFile?: string;\n versioning: string;\n}\n\nexport interface LookupUpdateConfig\n extends RollbackConfig,\n FilterConfig,\n RangeConfig,\n RenovateConfig {\n separateMinorPatch?: boolean;\n digestOneAndOnly?: boolean;\n pinDigests?: boolean;\n rollbackPrs?: boolean;\n currentDigest?: string;\n lockedVersion?: string;\n isVulnerabilityAlert?: boolean;\n separateMajorMinor?: boolean;\n separateMultipleMajor?: boolean;\n separateMultipleMinor?: boolean;\n datasource: string;\n packageName: string;\n minimumConfidence?: MergeConfidence | undefined;\n replacementName?: string;\n replacementNameTemplate?: string;\n replacementVersion?: string;\n replacementVersionTemplate?: string;\n extractVersion?: string;\n vulnerabilityFixVersion?: string;\n vulnerabilityFixStrategy?: string;\n}\n\nexport interface UpdateResult {\n sourceDirectory?: string;\n changelogUrl?: string;\n dependencyUrl?: string;\n homepage?: string;\n deprecationMessage?: string;\n sourceUrl?: string | null;\n currentVersion?: string;\n isSingleVersion?: boolean;\n lookupName?: string;\n skipReason?: SkipReason;\n registryUrl?: string;\n fixedVersion?: string;\n updates: LookupUpdate[];\n warnings: ValidationMessage[];\n versioning?: string;\n currentVersionAgeInDays?: number;\n currentVersionTimestamp?: string;\n vulnerabilityFixVersion?: string;\n vulnerabilityFixStrategy?: string;\n}\n"]}