renovate 41.0.0-next.21 → 41.0.0-next.23

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 (399) hide show
  1. package/dist/config/decrypt.js +5 -3
  2. package/dist/config/decrypt.js.map +1 -1
  3. package/dist/config/options/index.js +45 -3
  4. package/dist/config/options/index.js.map +1 -1
  5. package/dist/config/presets/github/index.js +2 -2
  6. package/dist/config/presets/github/index.js.map +1 -1
  7. package/dist/config/presets/internal/group.js +21 -0
  8. package/dist/config/presets/internal/group.js.map +1 -1
  9. package/dist/config/presets/internal/workarounds.js +11 -0
  10. package/dist/config/presets/internal/workarounds.js.map +1 -1
  11. package/dist/config/secrets.d.ts +2 -0
  12. package/dist/config/secrets.js +10 -77
  13. package/dist/config/secrets.js.map +1 -1
  14. package/dist/config/types.d.ts +9 -1
  15. package/dist/config/types.js.map +1 -1
  16. package/dist/config-validator.js +4 -2
  17. package/dist/config-validator.js.map +1 -1
  18. package/dist/data/monorepo.json +10 -1
  19. package/dist/data-files.generated.d.ts +1 -1
  20. package/dist/data-files.generated.js +2 -1
  21. package/dist/data-files.generated.js.map +1 -1
  22. package/dist/instrumentation/index.js +5 -3
  23. package/dist/instrumentation/index.js.map +1 -1
  24. package/dist/instrumentation/reporting.d.ts +2 -2
  25. package/dist/instrumentation/reporting.js +3 -7
  26. package/dist/instrumentation/reporting.js.map +1 -1
  27. package/dist/instrumentation/types.d.ts +11 -5
  28. package/dist/instrumentation/types.js.map +1 -1
  29. package/dist/instrumentation/utils.js +3 -2
  30. package/dist/instrumentation/utils.js.map +1 -1
  31. package/dist/logger/once.js +2 -0
  32. package/dist/logger/once.js.map +1 -1
  33. package/dist/modules/datasource/aws-eks-addon/schema.d.ts +14 -38
  34. package/dist/modules/datasource/aws-eks-addon/schema.js +11 -22
  35. package/dist/modules/datasource/aws-eks-addon/schema.js.map +1 -1
  36. package/dist/modules/datasource/cdnjs/index.js +2 -1
  37. package/dist/modules/datasource/cdnjs/index.js.map +1 -1
  38. package/dist/modules/datasource/crate/index.js +7 -2
  39. package/dist/modules/datasource/crate/index.js.map +1 -1
  40. package/dist/modules/datasource/docker/ecr.js +2 -2
  41. package/dist/modules/datasource/docker/ecr.js.map +1 -1
  42. package/dist/modules/datasource/docker/index.js +26 -9
  43. package/dist/modules/datasource/docker/index.js.map +1 -1
  44. package/dist/modules/datasource/docker/schema.d.ts +9 -87
  45. package/dist/modules/datasource/docker/schema.js +1 -1
  46. package/dist/modules/datasource/docker/schema.js.map +1 -1
  47. package/dist/modules/datasource/git-refs/base.js +2 -6
  48. package/dist/modules/datasource/git-refs/base.js.map +1 -1
  49. package/dist/modules/datasource/go/goproxy-parser.js +6 -2
  50. package/dist/modules/datasource/go/goproxy-parser.js.map +1 -1
  51. package/dist/modules/datasource/go/index.js +4 -2
  52. package/dist/modules/datasource/go/index.js.map +1 -1
  53. package/dist/modules/datasource/go/releases-goproxy.js +3 -2
  54. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  55. package/dist/modules/datasource/index.js +1 -1
  56. package/dist/modules/datasource/index.js.map +1 -1
  57. package/dist/modules/datasource/maven/index.js +5 -19
  58. package/dist/modules/datasource/maven/index.js.map +1 -1
  59. package/dist/modules/datasource/maven/util.js +8 -1
  60. package/dist/modules/datasource/maven/util.js.map +1 -1
  61. package/dist/modules/datasource/npm/get.js +2 -1
  62. package/dist/modules/datasource/npm/get.js.map +1 -1
  63. package/dist/modules/datasource/npm/npmrc.js +2 -1
  64. package/dist/modules/datasource/npm/npmrc.js.map +1 -1
  65. package/dist/modules/datasource/nuget/v3.js +3 -2
  66. package/dist/modules/datasource/nuget/v3.js.map +1 -1
  67. package/dist/modules/datasource/pod/index.js +3 -1
  68. package/dist/modules/datasource/pod/index.js.map +1 -1
  69. package/dist/modules/datasource/pypi/index.js +2 -1
  70. package/dist/modules/datasource/pypi/index.js.map +1 -1
  71. package/dist/modules/datasource/types.d.ts +2 -1
  72. package/dist/modules/datasource/types.js.map +1 -1
  73. package/dist/modules/manager/asdf/upgradeable-tooling.js +8 -0
  74. package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
  75. package/dist/modules/manager/bazel/rules/git.d.ts +7 -7
  76. package/dist/modules/manager/bazel/rules/git.js +6 -1
  77. package/dist/modules/manager/bazel/rules/git.js.map +1 -1
  78. package/dist/modules/manager/bazel-module/bazelrc.d.ts +2 -0
  79. package/dist/modules/manager/bazel-module/bazelrc.js +30 -1
  80. package/dist/modules/manager/bazel-module/bazelrc.js.map +1 -1
  81. package/dist/modules/manager/bazel-module/parser/rules.js +1 -0
  82. package/dist/modules/manager/bazel-module/parser/rules.js.map +1 -1
  83. package/dist/modules/manager/bazel-module/rules.d.ts +62 -24
  84. package/dist/modules/manager/bazel-module/rules.js +10 -4
  85. package/dist/modules/manager/bazel-module/rules.js.map +1 -1
  86. package/dist/modules/manager/cargo/extract.js +2 -1
  87. package/dist/modules/manager/cargo/extract.js.map +1 -1
  88. package/dist/modules/manager/composer/schema.js +1 -1
  89. package/dist/modules/manager/composer/schema.js.map +1 -1
  90. package/dist/modules/manager/docker-compose/extract.js +2 -0
  91. package/dist/modules/manager/docker-compose/extract.js.map +1 -1
  92. package/dist/modules/manager/docker-compose/schema.d.ts +120 -9
  93. package/dist/modules/manager/docker-compose/schema.js +35 -4
  94. package/dist/modules/manager/docker-compose/schema.js.map +1 -1
  95. package/dist/modules/manager/fingerprint.generated.js +19 -19
  96. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  97. package/dist/modules/manager/fleet/extract.js +2 -2
  98. package/dist/modules/manager/fleet/extract.js.map +1 -1
  99. package/dist/modules/manager/fleet/schema.d.ts +5 -5
  100. package/dist/modules/manager/fleet/schema.js +1 -1
  101. package/dist/modules/manager/fleet/schema.js.map +1 -1
  102. package/dist/modules/manager/flux/extract.js +1 -1
  103. package/dist/modules/manager/flux/extract.js.map +1 -1
  104. package/dist/modules/manager/git-submodules/extract.js +2 -6
  105. package/dist/modules/manager/git-submodules/extract.js.map +1 -1
  106. package/dist/modules/manager/git-submodules/update.js +3 -7
  107. package/dist/modules/manager/git-submodules/update.js.map +1 -1
  108. package/dist/modules/manager/github-actions/extract.js +1 -1
  109. package/dist/modules/manager/github-actions/extract.js.map +1 -1
  110. package/dist/modules/manager/gleam/artifacts.js +5 -1
  111. package/dist/modules/manager/gleam/artifacts.js.map +1 -1
  112. package/dist/modules/manager/gomod/artifacts.js +8 -6
  113. package/dist/modules/manager/gomod/artifacts.js.map +1 -1
  114. package/dist/modules/manager/gradle/extract.js +4 -1
  115. package/dist/modules/manager/gradle/extract.js.map +1 -1
  116. package/dist/modules/manager/gradle/utils.js +8 -14
  117. package/dist/modules/manager/gradle/utils.js.map +1 -1
  118. package/dist/modules/manager/helmfile/utils.js +1 -1
  119. package/dist/modules/manager/helmfile/utils.js.map +1 -1
  120. package/dist/modules/manager/helmv3/artifacts.js +8 -2
  121. package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
  122. package/dist/modules/manager/helmv3/common.d.ts +1 -1
  123. package/dist/modules/manager/helmv3/common.js +9 -3
  124. package/dist/modules/manager/helmv3/common.js.map +1 -1
  125. package/dist/modules/manager/hermit/artifacts.js +2 -2
  126. package/dist/modules/manager/hermit/artifacts.js.map +1 -1
  127. package/dist/modules/manager/kubernetes/extract.js +2 -2
  128. package/dist/modules/manager/kubernetes/extract.js.map +1 -1
  129. package/dist/modules/manager/kustomize/artifacts.js +1 -1
  130. package/dist/modules/manager/kustomize/artifacts.js.map +1 -1
  131. package/dist/modules/manager/maven/extract.d.ts +1 -1
  132. package/dist/modules/manager/maven/extract.js +82 -24
  133. package/dist/modules/manager/maven/extract.js.map +1 -1
  134. package/dist/modules/manager/maven/index.d.ts +0 -1
  135. package/dist/modules/manager/maven/index.js +2 -4
  136. package/dist/modules/manager/maven/index.js.map +1 -1
  137. package/dist/modules/manager/maven/update.js +15 -0
  138. package/dist/modules/manager/maven/update.js.map +1 -1
  139. package/dist/modules/manager/mise/backends.d.ts +48 -0
  140. package/dist/modules/manager/mise/backends.js +219 -0
  141. package/dist/modules/manager/mise/backends.js.map +1 -0
  142. package/dist/modules/manager/mise/extract.js +77 -10
  143. package/dist/modules/manager/mise/extract.js.map +1 -1
  144. package/dist/modules/manager/mise/index.js +37 -2
  145. package/dist/modules/manager/mise/index.js.map +1 -1
  146. package/dist/modules/manager/mise/schema.d.ts +24 -0
  147. package/dist/modules/manager/mise/schema.js +7 -1
  148. package/dist/modules/manager/mise/schema.js.map +1 -1
  149. package/dist/modules/manager/mise/upgradeable-tooling.js +210 -1
  150. package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
  151. package/dist/modules/manager/mix/artifacts.js +5 -0
  152. package/dist/modules/manager/mix/artifacts.js.map +1 -1
  153. package/dist/modules/manager/npm/extract/index.js +27 -24
  154. package/dist/modules/manager/npm/extract/index.js.map +1 -1
  155. package/dist/modules/manager/npm/post-update/index.js +9 -3
  156. package/dist/modules/manager/npm/post-update/index.js.map +1 -1
  157. package/dist/modules/manager/npm/post-update/npm.js +8 -5
  158. package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
  159. package/dist/modules/manager/npm/post-update/pnpm.js +4 -0
  160. package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
  161. package/dist/modules/manager/npm/post-update/utils.js +17 -0
  162. package/dist/modules/manager/npm/post-update/utils.js.map +1 -1
  163. package/dist/modules/manager/npm/post-update/yarn.js +7 -5
  164. package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
  165. package/dist/modules/manager/npm/schema.d.ts +116 -0
  166. package/dist/modules/manager/npm/schema.js +9 -0
  167. package/dist/modules/manager/npm/schema.js.map +1 -1
  168. package/dist/modules/manager/npm/utils.js +1 -1
  169. package/dist/modules/manager/npm/utils.js.map +1 -1
  170. package/dist/modules/manager/nuget/util.js +9 -0
  171. package/dist/modules/manager/nuget/util.js.map +1 -1
  172. package/dist/modules/manager/pep621/processors/uv.js +1 -1
  173. package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
  174. package/dist/modules/manager/pip-compile/artifacts.js +6 -4
  175. package/dist/modules/manager/pip-compile/artifacts.js.map +1 -1
  176. package/dist/modules/manager/pip_requirements/common.js +2 -1
  177. package/dist/modules/manager/pip_requirements/common.js.map +1 -1
  178. package/dist/modules/manager/poetry/schema.js +2 -1
  179. package/dist/modules/manager/poetry/schema.js.map +1 -1
  180. package/dist/modules/manager/pre-commit/index.js +2 -1
  181. package/dist/modules/manager/pre-commit/index.js.map +1 -1
  182. package/dist/modules/manager/renovate-config-presets/index.d.ts +1 -1
  183. package/dist/modules/manager/renovate-config-presets/index.js +1 -3
  184. package/dist/modules/manager/renovate-config-presets/index.js.map +1 -1
  185. package/dist/modules/manager/terraform/extractors/others/modules.js +4 -9
  186. package/dist/modules/manager/terraform/extractors/others/modules.js.map +1 -1
  187. package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.d.ts +1 -0
  188. package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.js +9 -4
  189. package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.js.map +1 -1
  190. package/dist/modules/manager/terraform/extractors/resources/utils.d.ts +1 -0
  191. package/dist/modules/manager/terraform/extractors/resources/utils.js +4 -1
  192. package/dist/modules/manager/terraform/extractors/resources/utils.js.map +1 -1
  193. package/dist/modules/manager/terraform/hcl/types.d.ts +1 -0
  194. package/dist/modules/manager/terraform/hcl/types.js.map +1 -1
  195. package/dist/modules/manager/types.d.ts +3 -0
  196. package/dist/modules/manager/types.js.map +1 -1
  197. package/dist/modules/platform/bitbucket-server/index.js +4 -2
  198. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  199. package/dist/modules/platform/codecommit/codecommit-client.js +7 -5
  200. package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
  201. package/dist/modules/platform/codecommit/index.js +7 -5
  202. package/dist/modules/platform/codecommit/index.js.map +1 -1
  203. package/dist/modules/platform/default-scm.d.ts +1 -0
  204. package/dist/modules/platform/default-scm.js +3 -0
  205. package/dist/modules/platform/default-scm.js.map +1 -1
  206. package/dist/modules/platform/gerrit/client.d.ts +6 -7
  207. package/dist/modules/platform/gerrit/client.js +58 -38
  208. package/dist/modules/platform/gerrit/client.js.map +1 -1
  209. package/dist/modules/platform/gerrit/index.d.ts +4 -3
  210. package/dist/modules/platform/gerrit/index.js +103 -42
  211. package/dist/modules/platform/gerrit/index.js.map +1 -1
  212. package/dist/modules/platform/gerrit/scm.d.ts +1 -1
  213. package/dist/modules/platform/gerrit/scm.js +56 -34
  214. package/dist/modules/platform/gerrit/scm.js.map +1 -1
  215. package/dist/modules/platform/gerrit/types.d.ts +23 -12
  216. package/dist/modules/platform/gerrit/types.js.map +1 -1
  217. package/dist/modules/platform/gerrit/utils.d.ts +8 -4
  218. package/dist/modules/platform/gerrit/utils.js +24 -12
  219. package/dist/modules/platform/gerrit/utils.js.map +1 -1
  220. package/dist/modules/platform/gitea/index.js +7 -2
  221. package/dist/modules/platform/gitea/index.js.map +1 -1
  222. package/dist/modules/platform/gitea/types.d.ts +2 -1
  223. package/dist/modules/platform/gitea/types.js.map +1 -1
  224. package/dist/modules/platform/github/index.js +12 -26
  225. package/dist/modules/platform/github/index.js.map +1 -1
  226. package/dist/modules/platform/gitlab/code-owners.d.ts +2 -0
  227. package/dist/modules/platform/gitlab/code-owners.js +38 -0
  228. package/dist/modules/platform/gitlab/code-owners.js.map +1 -0
  229. package/dist/modules/platform/gitlab/index.d.ts +2 -1
  230. package/dist/modules/platform/gitlab/index.js +29 -56
  231. package/dist/modules/platform/gitlab/index.js.map +1 -1
  232. package/dist/modules/platform/gitlab/pr-cache.d.ts +21 -0
  233. package/dist/modules/platform/gitlab/pr-cache.js +124 -0
  234. package/dist/modules/platform/gitlab/pr-cache.js.map +1 -0
  235. package/dist/modules/platform/gitlab/types.d.ts +7 -0
  236. package/dist/modules/platform/gitlab/types.js.map +1 -1
  237. package/dist/modules/platform/gitlab/utils.js +1 -0
  238. package/dist/modules/platform/gitlab/utils.js.map +1 -1
  239. package/dist/modules/platform/types.d.ts +8 -0
  240. package/dist/modules/platform/types.js.map +1 -1
  241. package/dist/modules/versioning/api.js +2 -0
  242. package/dist/modules/versioning/api.js.map +1 -1
  243. package/dist/modules/versioning/cargo/index.js +20 -0
  244. package/dist/modules/versioning/cargo/index.js.map +1 -1
  245. package/dist/modules/versioning/composer/index.js +4 -0
  246. package/dist/modules/versioning/composer/index.js.map +1 -1
  247. package/dist/modules/versioning/lambda-node/index.d.ts +8 -0
  248. package/dist/modules/versioning/lambda-node/index.js +27 -0
  249. package/dist/modules/versioning/lambda-node/index.js.map +1 -0
  250. package/dist/modules/versioning/lambda-node/schedule.d.ts +10 -0
  251. package/dist/modules/versioning/lambda-node/schedule.js +19 -0
  252. package/dist/modules/versioning/lambda-node/schedule.js.map +1 -0
  253. package/dist/modules/versioning/npm/index.js +2 -0
  254. package/dist/modules/versioning/npm/index.js.map +1 -1
  255. package/dist/modules/versioning/npm/range.js +4 -0
  256. package/dist/modules/versioning/npm/range.js.map +1 -1
  257. package/dist/modules/versioning/pep440/index.js +1 -1
  258. package/dist/modules/versioning/pep440/index.js.map +1 -1
  259. package/dist/modules/versioning/python/index.d.ts +1 -0
  260. package/dist/modules/versioning/python/index.js +9 -0
  261. package/dist/modules/versioning/python/index.js.map +1 -1
  262. package/dist/modules/versioning/semver/index.d.ts +1 -0
  263. package/dist/modules/versioning/semver/index.js +15 -0
  264. package/dist/modules/versioning/semver/index.js.map +1 -1
  265. package/dist/modules/versioning/semver-coerced/index.js +9 -0
  266. package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
  267. package/dist/modules/versioning/types.d.ts +1 -0
  268. package/dist/modules/versioning/types.js.map +1 -1
  269. package/dist/util/cache/memory/index.d.ts +1 -0
  270. package/dist/util/cache/memory/index.js +17 -6
  271. package/dist/util/cache/memory/index.js.map +1 -1
  272. package/dist/util/cache/package/index.js +2 -1
  273. package/dist/util/cache/package/index.js.map +1 -1
  274. package/dist/util/cache/package/key.js +1 -1
  275. package/dist/util/cache/package/key.js.map +1 -1
  276. package/dist/util/cache/package/types.d.ts +2 -2
  277. package/dist/util/cache/package/types.js.map +1 -1
  278. package/dist/util/cache/repository/impl/s3.js +2 -1
  279. package/dist/util/cache/repository/impl/s3.js.map +1 -1
  280. package/dist/util/cache/repository/types.d.ts +3 -0
  281. package/dist/util/cache/repository/types.js.map +1 -1
  282. package/dist/util/env.d.ts +6 -0
  283. package/dist/util/env.js +13 -0
  284. package/dist/util/env.js.map +1 -1
  285. package/dist/util/exec/common.js +2 -1
  286. package/dist/util/exec/common.js.map +1 -1
  287. package/dist/util/exec/containerbase.js +2 -1
  288. package/dist/util/exec/containerbase.js.map +1 -1
  289. package/dist/util/exec/env.js +1 -0
  290. package/dist/util/exec/env.js.map +1 -1
  291. package/dist/util/exec/utils.d.ts +1 -1
  292. package/dist/util/exec/utils.js +1 -1
  293. package/dist/util/exec/utils.js.map +1 -1
  294. package/dist/util/fs/index.js +2 -2
  295. package/dist/util/fs/index.js.map +1 -1
  296. package/dist/util/git/auth.js +4 -2
  297. package/dist/util/git/auth.js.map +1 -1
  298. package/dist/util/git/error.js +2 -1
  299. package/dist/util/git/error.js.map +1 -1
  300. package/dist/util/git/index.d.ts +20 -0
  301. package/dist/util/git/index.js +140 -10
  302. package/dist/util/git/index.js.map +1 -1
  303. package/dist/util/git/types.d.ts +1 -0
  304. package/dist/util/git/types.js.map +1 -1
  305. package/dist/util/github/graphql/datasource-fetcher.js +2 -3
  306. package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
  307. package/dist/util/github/graphql/query-adapters/tags-query-adapter.d.ts +48 -2
  308. package/dist/util/github/graphql/query-adapters/tags-query-adapter.js +27 -7
  309. package/dist/util/github/graphql/query-adapters/tags-query-adapter.js.map +1 -1
  310. package/dist/util/host-rules.js +4 -3
  311. package/dist/util/host-rules.js.map +1 -1
  312. package/dist/util/http/cache/package-http-cache-provider.d.ts +4 -4
  313. package/dist/util/http/cache/package-http-cache-provider.js +4 -4
  314. package/dist/util/http/cache/package-http-cache-provider.js.map +1 -1
  315. package/dist/util/http/github.js +20 -12
  316. package/dist/util/http/github.js.map +1 -1
  317. package/dist/util/http/gitlab.js +2 -1
  318. package/dist/util/http/gitlab.js.map +1 -1
  319. package/dist/util/http/http.js +7 -3
  320. package/dist/util/http/http.js.map +1 -1
  321. package/dist/util/interpolator.d.ts +8 -0
  322. package/dist/util/interpolator.js +85 -0
  323. package/dist/util/interpolator.js.map +1 -0
  324. package/dist/util/merge-confidence/index.js +4 -1
  325. package/dist/util/merge-confidence/index.js.map +1 -1
  326. package/dist/util/promises.d.ts +4 -4
  327. package/dist/util/promises.js +3 -4
  328. package/dist/util/promises.js.map +1 -1
  329. package/dist/util/regex.js +3 -2
  330. package/dist/util/regex.js.map +1 -1
  331. package/dist/util/{schema-utils.d.ts → schema-utils/index.d.ts} +2 -2
  332. package/dist/util/{schema-utils.js → schema-utils/index.js} +5 -5
  333. package/dist/util/schema-utils/index.js.map +1 -0
  334. package/dist/util/schema-utils/v4.d.ts +7 -0
  335. package/dist/util/schema-utils/v4.js +64 -0
  336. package/dist/util/schema-utils/v4.js.map +1 -0
  337. package/dist/util/stats.d.ts +13 -2
  338. package/dist/util/stats.js +38 -27
  339. package/dist/util/stats.js.map +1 -1
  340. package/dist/workers/global/config/parse/codespaces.js +7 -4
  341. package/dist/workers/global/config/parse/codespaces.js.map +1 -1
  342. package/dist/workers/global/index.js +7 -5
  343. package/dist/workers/global/index.js.map +1 -1
  344. package/dist/workers/repository/config-migration/branch/migrated-data.js +1 -1
  345. package/dist/workers/repository/config-migration/branch/migrated-data.js.map +1 -1
  346. package/dist/workers/repository/dependency-dashboard.d.ts +1 -0
  347. package/dist/workers/repository/dependency-dashboard.js +47 -0
  348. package/dist/workers/repository/dependency-dashboard.js.map +1 -1
  349. package/dist/workers/repository/index.js +1 -0
  350. package/dist/workers/repository/index.js.map +1 -1
  351. package/dist/workers/repository/init/inherited.js +10 -6
  352. package/dist/workers/repository/init/inherited.js.map +1 -1
  353. package/dist/workers/repository/init/merge.d.ts +2 -2
  354. package/dist/workers/repository/init/merge.js +12 -5
  355. package/dist/workers/repository/init/merge.js.map +1 -1
  356. package/dist/workers/repository/package-files.js +11 -1
  357. package/dist/workers/repository/package-files.js.map +1 -1
  358. package/dist/workers/repository/process/extract-update.d.ts +1 -1
  359. package/dist/workers/repository/process/extract-update.js +15 -10
  360. package/dist/workers/repository/process/extract-update.js.map +1 -1
  361. package/dist/workers/repository/process/index.d.ts +1 -1
  362. package/dist/workers/repository/process/index.js +6 -3
  363. package/dist/workers/repository/process/index.js.map +1 -1
  364. package/dist/workers/repository/process/libyear.js +15 -7
  365. package/dist/workers/repository/process/libyear.js.map +1 -1
  366. package/dist/workers/repository/process/lookup/abandonment.d.ts +3 -0
  367. package/dist/workers/repository/process/lookup/abandonment.js +50 -0
  368. package/dist/workers/repository/process/lookup/abandonment.js.map +1 -0
  369. package/dist/workers/repository/process/lookup/current.js +0 -5
  370. package/dist/workers/repository/process/lookup/current.js.map +1 -1
  371. package/dist/workers/repository/process/lookup/generate.js +10 -0
  372. package/dist/workers/repository/process/lookup/generate.js.map +1 -1
  373. package/dist/workers/repository/process/lookup/index.js +7 -0
  374. package/dist/workers/repository/process/lookup/index.js.map +1 -1
  375. package/dist/workers/repository/process/lookup/timestamps.d.ts +4 -4
  376. package/dist/workers/repository/process/lookup/timestamps.js +10 -10
  377. package/dist/workers/repository/process/lookup/timestamps.js.map +1 -1
  378. package/dist/workers/repository/process/lookup/types.d.ts +4 -0
  379. package/dist/workers/repository/process/lookup/types.js.map +1 -1
  380. package/dist/workers/repository/update/branch/auto-replace.js +30 -7
  381. package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
  382. package/dist/workers/repository/update/branch/bump-versions.d.ts +2 -0
  383. package/dist/workers/repository/update/branch/bump-versions.js +192 -0
  384. package/dist/workers/repository/update/branch/bump-versions.js.map +1 -0
  385. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +14 -8
  386. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
  387. package/dist/workers/repository/update/branch/get-updated.js +3 -4
  388. package/dist/workers/repository/update/branch/get-updated.js.map +1 -1
  389. package/dist/workers/repository/update/branch/index.js +3 -0
  390. package/dist/workers/repository/update/branch/index.js.map +1 -1
  391. package/dist/workers/repository/update/pr/changelog/release-notes.js +23 -19
  392. package/dist/workers/repository/update/pr/changelog/release-notes.js.map +1 -1
  393. package/dist/workers/repository/update/pr/code-owners.js +13 -9
  394. package/dist/workers/repository/update/pr/code-owners.js.map +1 -1
  395. package/dist/workers/repository/updates/generate.js +1 -0
  396. package/dist/workers/repository/updates/generate.js.map +1 -1
  397. package/package.json +75 -80
  398. package/renovate-schema.json +78 -14
  399. package/dist/util/schema-utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"package-files.js","sourceRoot":"","sources":["../../../lib/workers/repository/package-files.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../logger';\nimport type { PackageFile } from '../../modules/manager/types';\nimport { clone } from '../../util/clone';\n\nexport class PackageFiles {\n private static data = new Map<string, Record<string, PackageFile[]> | null>();\n\n static add(\n baseBranch: string,\n packageFiles: Record<string, PackageFile[]> | null,\n ): void {\n logger.debug(\n { baseBranch },\n `PackageFiles.add() - Package file saved for base branch`,\n );\n this.data.set(baseBranch, packageFiles);\n }\n\n static clear(): void {\n logger.debug('PackageFiles.clear() - Package files deleted');\n this.data.clear();\n }\n\n /**\n * Truncates the detected dependencies' section until it fits the available space\n * i.e. It has length smaller than maxLength.\n * This does not mutate the original PackageFiles data\n * Note: setHeader=false is used for testing purposes only\n * Mainly for comparing truncated and non-truncated markdown\n * @param maxLength\n * @param setHeader\n */\n static getDashboardMarkdown(maxLength: number, setHeader = true): string {\n const note =\n '> ℹ **Note**\\n> \\n> Detected dependencies section has been truncated\\n\\n';\n const title = `## Detected dependencies\\n\\n`;\n\n // exclude header length from the available space\n const maxHeaderLen = setHeader ? (title + note).length : 0;\n const mdMaxLength = maxLength - maxHeaderLen;\n\n let md: string;\n let header = '';\n let removed = false;\n let truncated = false;\n\n const data = new Map(clone(Array.from(this.data)));\n\n // filter all deps with skip reason\n for (const managers of [...data.values()].filter(is.truthy)) {\n for (const files of Object.values(managers).filter(is.truthy)) {\n for (const file of files.filter((f) => is.truthy(f.deps))) {\n file.deps = file.deps.filter(is.truthy).filter((d) => !d.skipReason);\n }\n }\n }\n\n do {\n // shorten markdown until it fits\n md = PackageFiles.getDashboardMarkdownInternal(data);\n if (md.length > mdMaxLength) {\n // truncate data\n removed = PackageFiles.pop(data);\n }\n if (removed) {\n truncated = true; // used to set the truncation Note\n }\n } while (removed && md.length > mdMaxLength);\n\n header += title;\n header += truncated ? note : '';\n\n return (setHeader ? header : '') + md;\n }\n\n /**\n * Generates the \"detected dependencies\" markdown\n * @param data\n */\n private static getDashboardMarkdownInternal(\n data: Map<string, Record<string, PackageFile[]> | null>,\n ): string {\n const none = 'None detected\\n\\n';\n const pad = data.size > 1; // padding condition for a multi base branch repo\n let deps = '';\n\n for (const [branch, packageFiles] of data) {\n deps += pad\n ? `<details><summary>Branch ${branch}</summary>\\n<blockquote>\\n\\n`\n : '';\n if (packageFiles === null) {\n deps += none;\n deps += pad ? '</blockquote>\\n</details>\\n\\n' : '';\n continue;\n }\n\n const managers = Object.keys(packageFiles);\n if (managers.length === 0) {\n deps += none;\n deps += pad ? '</blockquote>\\n</details>\\n\\n' : '';\n continue;\n }\n\n for (const manager of managers) {\n deps += `<details><summary>${manager}</summary>\\n<blockquote>\\n\\n`;\n for (const packageFile of packageFiles[manager]) {\n deps += `<details><summary>${packageFile.packageFile}</summary>\\n\\n`;\n for (const dep of packageFile.deps) {\n const ver = dep.currentValue;\n const digest = dep.currentDigest;\n const version =\n ver && digest ? `${ver}@${digest}` : `${digest ?? ver!}`;\n // TODO: types (#22198)\n deps += ` - \\`${dep.depName!} ${version}\\`\\n`;\n }\n deps += '\\n</details>\\n\\n';\n }\n deps += `</blockquote>\\n</details>\\n\\n`;\n }\n deps += pad ? '</blockquote>\\n</details>\\n\\n' : '';\n }\n\n return deps;\n }\n\n /**\n * Removes the last dependency/entry in the PackageFiles data\n * i.e. the last line in the tobe generated detected dependency section\n * @param data\n * @Returns true if anything that translates to a markdown written line was deleted\n * otherwise false is returned\n */\n private static pop(\n data: Map<string, Record<string, PackageFile[]> | null>,\n ): boolean {\n // get detected managers list of the last listed base branch\n const [branch, managers] = Array.from(data).pop() ?? [];\n if (!branch) {\n return false;\n }\n\n // delete base branch listing if it has no managers left\n if (!managers || is.emptyObject(managers)) {\n return data.delete(branch);\n }\n\n // get all manifest files for the last listed manager\n const [manager, packageFiles] = Object.entries(managers).pop()!;\n\n // delete current manager if it has no manifest files left\n if (!packageFiles || is.emptyArray(packageFiles)) {\n return delete managers[manager];\n }\n\n // delete manifest file if it has no deps left\n const len = packageFiles.length - 1;\n if (is.emptyArray(packageFiles[len].deps)) {\n return !!packageFiles.pop();\n }\n\n // remove the last listed dependency\n return !!packageFiles[len].deps.pop();\n }\n}\n"]}
1
+ {"version":3,"file":"package-files.js","sourceRoot":"","sources":["../../../lib/workers/repository/package-files.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../logger';\nimport type { PackageFile } from '../../modules/manager/types';\nimport { clone } from '../../util/clone';\n\nexport class PackageFiles {\n private static data = new Map<string, Record<string, PackageFile[]> | null>();\n\n static add(\n baseBranch: string,\n packageFiles: Record<string, PackageFile[]> | null,\n ): void {\n logger.debug(\n { baseBranch },\n `PackageFiles.add() - Package file saved for base branch`,\n );\n this.data.set(baseBranch, packageFiles);\n }\n\n static clear(): void {\n logger.debug('PackageFiles.clear() - Package files deleted');\n this.data.clear();\n }\n\n /**\n * Truncates the detected dependencies' section until it fits the available space\n * i.e. It has length smaller than maxLength.\n * This does not mutate the original PackageFiles data\n * Note: setHeader=false is used for testing purposes only\n * Mainly for comparing truncated and non-truncated markdown\n * @param maxLength\n * @param setHeader\n */\n static getDashboardMarkdown(maxLength: number, setHeader = true): string {\n const note =\n '> ℹ **Note**\\n> \\n> Detected dependencies section has been truncated\\n\\n';\n const title = `## Detected dependencies\\n\\n`;\n\n // exclude header length from the available space\n const maxHeaderLen = setHeader ? (title + note).length : 0;\n const mdMaxLength = maxLength - maxHeaderLen;\n\n let md: string;\n let header = '';\n let removed = false;\n let truncated = false;\n\n const data = new Map(clone(Array.from(this.data)));\n\n // filter all deps with skip reason\n for (const managers of [...data.values()].filter(is.truthy)) {\n for (const files of Object.values(managers).filter(is.truthy)) {\n for (const file of files.filter((f) => is.truthy(f.deps))) {\n file.deps = file.deps.filter(is.truthy).filter((d) => !d.skipReason);\n }\n }\n }\n\n do {\n // shorten markdown until it fits\n md = PackageFiles.getDashboardMarkdownInternal(data);\n if (md.length > mdMaxLength) {\n // truncate data\n removed = PackageFiles.pop(data);\n }\n if (removed) {\n truncated = true; // used to set the truncation Note\n }\n } while (removed && md.length > mdMaxLength);\n\n header += title;\n header += truncated ? note : '';\n\n return (setHeader ? header : '') + md;\n }\n\n /**\n * Generates the \"detected dependencies\" markdown\n * @param data\n */\n private static getDashboardMarkdownInternal(\n data: Map<string, Record<string, PackageFile[]> | null>,\n ): string {\n const none = 'None detected\\n\\n';\n const pad = data.size > 1; // padding condition for a multi base branch repo\n let deps = '';\n\n for (const [branch, packageFiles] of data) {\n deps += pad\n ? `<details><summary>Branch ${branch}</summary>\\n<blockquote>\\n\\n`\n : '';\n if (packageFiles === null) {\n deps += none;\n deps += pad ? '</blockquote>\\n</details>\\n\\n' : '';\n continue;\n }\n\n const managers = Object.keys(packageFiles);\n if (managers.length === 0) {\n deps += none;\n deps += pad ? '</blockquote>\\n</details>\\n\\n' : '';\n continue;\n }\n\n for (const manager of managers) {\n deps += `<details><summary>${manager}</summary>\\n<blockquote>\\n\\n`;\n for (const packageFile of packageFiles[manager]) {\n deps += `<details><summary>${packageFile.packageFile}</summary>\\n\\n`;\n for (const dep of packageFile.deps) {\n const ver = dep.currentValue;\n const digest = dep.currentDigest;\n const lock = dep.lockedVersion;\n let version;\n if (ver || digest) {\n version = ver && digest ? `${ver}@${digest}` : `${digest ?? ver}`;\n } else if (lock) {\n version = `lock file @ ${lock}`;\n } else {\n version = 'unknown version';\n }\n // TODO: types (#22198)\n deps += ` - \\`${dep.depName!} ${version}\\`\\n`;\n }\n deps += '\\n</details>\\n\\n';\n }\n deps += `</blockquote>\\n</details>\\n\\n`;\n }\n deps += pad ? '</blockquote>\\n</details>\\n\\n' : '';\n }\n\n return deps;\n }\n\n /**\n * Removes the last dependency/entry in the PackageFiles data\n * i.e. the last line in the tobe generated detected dependency section\n * @param data\n * @Returns true if anything that translates to a markdown written line was deleted\n * otherwise false is returned\n */\n private static pop(\n data: Map<string, Record<string, PackageFile[]> | null>,\n ): boolean {\n // get detected managers list of the last listed base branch\n const [branch, managers] = Array.from(data).pop() ?? [];\n if (!branch) {\n return false;\n }\n\n // delete base branch listing if it has no managers left\n if (!managers || is.emptyObject(managers)) {\n return data.delete(branch);\n }\n\n // get all manifest files for the last listed manager\n const [manager, packageFiles] = Object.entries(managers).pop()!;\n\n // delete current manager if it has no manifest files left\n if (!packageFiles || is.emptyArray(packageFiles)) {\n return delete managers[manager];\n }\n\n // delete manifest file if it has no deps left\n const len = packageFiles.length - 1;\n if (is.emptyArray(packageFiles[len].deps)) {\n return !!packageFiles.pop();\n }\n\n // remove the last listed dependency\n return !!packageFiles[len].deps.pop();\n }\n}\n"]}
@@ -18,6 +18,6 @@ export interface Stats {
18
18
  total: StatsResult;
19
19
  }
20
20
  export declare function isCacheExtractValid(baseBranchSha: string, configHash: string, cachedExtract?: BaseBranchCache): boolean;
21
- export declare function extract(config: RenovateConfig): Promise<Record<string, PackageFile[]>>;
21
+ export declare function extract(config: RenovateConfig, overwriteCache?: boolean): Promise<Record<string, PackageFile[]>>;
22
22
  export declare function lookup(config: RenovateConfig, packageFiles: Record<string, PackageFile[]>): Promise<ExtractResult>;
23
23
  export declare function update(config: RenovateConfig, branches: BranchConfig[]): Promise<WriteUpdateResult | undefined>;
@@ -10,6 +10,7 @@ const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
10
10
  const logger_1 = require("../../../logger");
11
11
  const manager_1 = require("../../../modules/manager");
12
12
  const scm_1 = require("../../../modules/platform/scm");
13
+ const memCache = tslib_1.__importStar(require("../../../util/cache/memory"));
13
14
  const repository_1 = require("../../../util/cache/repository");
14
15
  const check_token_1 = require("../../../util/check-token");
15
16
  const fingerprint_1 = require("../../../util/fingerprint");
@@ -90,7 +91,7 @@ function isCacheExtractValid(baseBranchSha, configHash, cachedExtract) {
90
91
  logger_1.logger.debug(`Cached extract for sha=${baseBranchSha} is valid and can be used`);
91
92
  return true;
92
93
  }
93
- async function extract(config) {
94
+ async function extract(config, overwriteCache = true) {
94
95
  logger_1.logger.debug('extract()');
95
96
  const { baseBranch } = config;
96
97
  const baseBranchSha = await scm_1.scm.getBranchCommit(baseBranch);
@@ -100,7 +101,8 @@ async function extract(config) {
100
101
  const cachedExtract = cache.scan[baseBranch];
101
102
  const configHash = (0, fingerprint_1.fingerprint)((0, extract_fingerprint_config_1.generateFingerprintConfig)(config));
102
103
  // istanbul ignore if
103
- if (isCacheExtractValid(baseBranchSha, configHash, cachedExtract)) {
104
+ if (overwriteCache &&
105
+ isCacheExtractValid(baseBranchSha, configHash, cachedExtract)) {
104
106
  packageFiles = cachedExtract.packageFiles;
105
107
  try {
106
108
  for (const files of Object.values(packageFiles)) {
@@ -121,14 +123,16 @@ async function extract(config) {
121
123
  const extractResult = (await (0, extract_1.extractAllDependencies)(config)) || {};
122
124
  packageFiles = extractResult.packageFiles;
123
125
  const { extractionFingerprints } = extractResult;
124
- // TODO: fix types (#22198)
125
- cache.scan[baseBranch] = {
126
- revision: exports.EXTRACT_CACHE_REVISION,
127
- sha: baseBranchSha,
128
- configHash,
129
- extractionFingerprints,
130
- packageFiles,
131
- };
126
+ if (overwriteCache) {
127
+ // TODO: fix types (#22198)
128
+ cache.scan[baseBranch] = {
129
+ revision: exports.EXTRACT_CACHE_REVISION,
130
+ sha: baseBranchSha,
131
+ configHash,
132
+ extractionFingerprints,
133
+ packageFiles,
134
+ };
135
+ }
132
136
  // Clean up cached branch extracts
133
137
  const baseBranches = is_1.default.nonEmptyArray(config.baseBranches)
134
138
  ? config.baseBranches
@@ -160,6 +164,7 @@ async function fetchVulnerabilities(config, packageFiles) {
160
164
  async function lookup(config, packageFiles) {
161
165
  await fetchVulnerabilities(config, packageFiles);
162
166
  await (0, fetch_1.fetchUpdates)(config, packageFiles);
167
+ memCache.cleanDatasourceKeys();
163
168
  (0, libyear_1.calculateLibYears)(config, packageFiles);
164
169
  const { branches, branchList } = await (0, branchify_1.branchifyUpgrades)(config, packageFiles);
165
170
  logger_1.logger.debug({ baseBranch: config.baseBranch, config: packageFiles }, 'packageFiles with updates');
@@ -1 +1 @@
1
- {"version":3,"file":"extract-update.js","sourceRoot":"","sources":["../../../../lib/workers/repository/process/extract-update.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { RenovateConfig } from '../../../config/types';\nimport { logger } from '../../../logger';\nimport { hashMap } from '../../../modules/manager';\nimport type { PackageFile } from '../../../modules/manager/types';\nimport { scm } from '../../../modules/platform/scm';\nimport { getCache } from '../../../util/cache/repository';\nimport type { BaseBranchCache } from '../../../util/cache/repository/types';\nimport { checkGithubToken as ensureGithubToken } from '../../../util/check-token';\nimport { fingerprint } from '../../../util/fingerprint';\nimport type { BranchConfig } from '../../types';\nimport { extractAllDependencies } from '../extract';\nimport { generateFingerprintConfig } from '../extract/extract-fingerprint-config';\nimport { branchifyUpgrades } from '../updates/branchify';\nimport { fetchUpdates } from './fetch';\nimport { calculateLibYears } from './libyear';\nimport { sortBranches } from './sort';\nimport { Vulnerabilities } from './vulnerabilities';\nimport type { WriteUpdateResult } from './write';\nimport { writeUpdates } from './write';\n\n// Increment this if needing to cache bust ALL extract caches\nexport const EXTRACT_CACHE_REVISION = 1;\n\nexport interface ExtractResult {\n branches: BranchConfig[];\n branchList: string[];\n packageFiles: Record<string, PackageFile[]>;\n}\n\nexport interface StatsResult {\n fileCount: number;\n depCount: number;\n}\n\nexport interface Stats {\n managers: Record<string, StatsResult>;\n total: StatsResult;\n}\n\n// istanbul ignore next\nfunction extractStats(\n packageFiles: Record<string, PackageFile[]>,\n): Stats | null {\n if (!packageFiles) {\n return null;\n }\n const stats: Stats = {\n managers: {},\n total: {\n fileCount: 0,\n depCount: 0,\n },\n };\n for (const [manager, managerPackageFiles] of Object.entries(packageFiles)) {\n const fileCount = managerPackageFiles.length;\n let depCount = 0;\n for (const file of managerPackageFiles) {\n depCount += file.deps.length;\n }\n stats.managers[manager] = {\n fileCount,\n depCount,\n };\n stats.total.fileCount += fileCount;\n stats.total.depCount += depCount;\n }\n return stats;\n}\n\nexport function isCacheExtractValid(\n baseBranchSha: string,\n configHash: string,\n cachedExtract?: BaseBranchCache,\n): boolean {\n if (!cachedExtract) {\n return false;\n }\n\n if (!cachedExtract.revision) {\n logger.debug('Cached extract is missing revision, so cannot be used');\n return false;\n }\n\n if (cachedExtract.revision !== EXTRACT_CACHE_REVISION) {\n logger.debug(\n `Extract cache revision has changed (old=${cachedExtract.revision}, new=${EXTRACT_CACHE_REVISION})`,\n );\n return false;\n }\n\n if (!(cachedExtract.sha && cachedExtract.configHash)) {\n return false;\n }\n if (cachedExtract.sha !== baseBranchSha) {\n logger.debug(\n `Cached extract result cannot be used due to base branch SHA change (old=${cachedExtract.sha}, new=${baseBranchSha})`,\n );\n return false;\n }\n if (cachedExtract.configHash !== configHash) {\n logger.debug('Cached extract result cannot be used due to config change');\n return false;\n }\n if (!cachedExtract.extractionFingerprints) {\n logger.debug(\n 'Cached extract is missing extractionFingerprints, so cannot be used',\n );\n return false;\n }\n const changedManagers = new Set();\n for (const [manager, fingerprint] of Object.entries(\n cachedExtract.extractionFingerprints,\n )) {\n if (fingerprint !== hashMap.get(manager)) {\n changedManagers.add(manager);\n }\n }\n if (changedManagers.size > 0) {\n logger.debug(\n { changedManagers: [...changedManagers] },\n 'Manager fingerprint(s) have changed, extract cache cannot be reused',\n );\n return false;\n }\n logger.debug(\n `Cached extract for sha=${baseBranchSha} is valid and can be used`,\n );\n return true;\n}\n\nexport async function extract(\n config: RenovateConfig,\n): Promise<Record<string, PackageFile[]>> {\n logger.debug('extract()');\n const { baseBranch } = config;\n const baseBranchSha = await scm.getBranchCommit(baseBranch!);\n let packageFiles: Record<string, PackageFile[]>;\n const cache = getCache();\n cache.scan ??= {};\n const cachedExtract = cache.scan[baseBranch!];\n const configHash = fingerprint(generateFingerprintConfig(config));\n // istanbul ignore if\n if (isCacheExtractValid(baseBranchSha!, configHash, cachedExtract)) {\n packageFiles = cachedExtract.packageFiles;\n try {\n for (const files of Object.values(packageFiles)) {\n for (const file of files) {\n for (const dep of file.deps) {\n delete dep.updates;\n }\n }\n }\n logger.debug('Deleted cached dep updates');\n } catch (err) {\n logger.info({ err }, 'Error deleting cached dep updates');\n }\n } else {\n await scm.checkoutBranch(baseBranch!);\n const extractResult = (await extractAllDependencies(config)) || {};\n packageFiles = extractResult.packageFiles;\n const { extractionFingerprints } = extractResult;\n // TODO: fix types (#22198)\n cache.scan[baseBranch!] = {\n revision: EXTRACT_CACHE_REVISION,\n sha: baseBranchSha!,\n configHash,\n extractionFingerprints,\n packageFiles,\n };\n // Clean up cached branch extracts\n const baseBranches = is.nonEmptyArray(config.baseBranches)\n ? config.baseBranches\n : [baseBranch];\n Object.keys(cache.scan).forEach((branchName) => {\n if (!baseBranches.includes(branchName)) {\n delete cache.scan![branchName];\n }\n });\n }\n const stats = extractStats(packageFiles);\n logger.info(\n { baseBranch: config.baseBranch, stats },\n `Dependency extraction complete`,\n );\n logger.trace({ config: packageFiles }, 'packageFiles');\n ensureGithubToken(packageFiles);\n return packageFiles;\n}\n\nasync function fetchVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<void> {\n if (config.osvVulnerabilityAlerts) {\n logger.debug('fetchVulnerabilities() - osvVulnerabilityAlerts=true');\n try {\n const vulnerabilities = await Vulnerabilities.create();\n await vulnerabilities.appendVulnerabilityPackageRules(\n config,\n packageFiles,\n );\n } catch (err) {\n logger.warn({ err }, 'Unable to read vulnerability information');\n }\n }\n}\n\nexport async function lookup(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<ExtractResult> {\n await fetchVulnerabilities(config, packageFiles);\n await fetchUpdates(config, packageFiles);\n calculateLibYears(config, packageFiles);\n const { branches, branchList } = await branchifyUpgrades(\n config,\n packageFiles,\n );\n logger.debug(\n { baseBranch: config.baseBranch, config: packageFiles },\n 'packageFiles with updates',\n );\n sortBranches(branches);\n return { branches, branchList, packageFiles };\n}\n\nexport async function update(\n config: RenovateConfig,\n branches: BranchConfig[],\n): Promise<WriteUpdateResult | undefined> {\n let res: WriteUpdateResult | undefined;\n if (config.repoIsOnboarded) {\n res = await writeUpdates(config, branches);\n }\n\n return res;\n}\n"]}
1
+ {"version":3,"file":"extract-update.js","sourceRoot":"","sources":["../../../../lib/workers/repository/process/extract-update.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { RenovateConfig } from '../../../config/types';\nimport { logger } from '../../../logger';\nimport { hashMap } from '../../../modules/manager';\nimport type { PackageFile } from '../../../modules/manager/types';\nimport { scm } from '../../../modules/platform/scm';\nimport * as memCache from '../../../util/cache/memory';\nimport { getCache } from '../../../util/cache/repository';\nimport type { BaseBranchCache } from '../../../util/cache/repository/types';\nimport { checkGithubToken as ensureGithubToken } from '../../../util/check-token';\nimport { fingerprint } from '../../../util/fingerprint';\nimport type { BranchConfig } from '../../types';\nimport { extractAllDependencies } from '../extract';\nimport { generateFingerprintConfig } from '../extract/extract-fingerprint-config';\nimport { branchifyUpgrades } from '../updates/branchify';\nimport { fetchUpdates } from './fetch';\nimport { calculateLibYears } from './libyear';\nimport { sortBranches } from './sort';\nimport { Vulnerabilities } from './vulnerabilities';\nimport type { WriteUpdateResult } from './write';\nimport { writeUpdates } from './write';\n\n// Increment this if needing to cache bust ALL extract caches\nexport const EXTRACT_CACHE_REVISION = 1;\n\nexport interface ExtractResult {\n branches: BranchConfig[];\n branchList: string[];\n packageFiles: Record<string, PackageFile[]>;\n}\n\nexport interface StatsResult {\n fileCount: number;\n depCount: number;\n}\n\nexport interface Stats {\n managers: Record<string, StatsResult>;\n total: StatsResult;\n}\n\n// istanbul ignore next\nfunction extractStats(\n packageFiles: Record<string, PackageFile[]>,\n): Stats | null {\n if (!packageFiles) {\n return null;\n }\n const stats: Stats = {\n managers: {},\n total: {\n fileCount: 0,\n depCount: 0,\n },\n };\n for (const [manager, managerPackageFiles] of Object.entries(packageFiles)) {\n const fileCount = managerPackageFiles.length;\n let depCount = 0;\n for (const file of managerPackageFiles) {\n depCount += file.deps.length;\n }\n stats.managers[manager] = {\n fileCount,\n depCount,\n };\n stats.total.fileCount += fileCount;\n stats.total.depCount += depCount;\n }\n return stats;\n}\n\nexport function isCacheExtractValid(\n baseBranchSha: string,\n configHash: string,\n cachedExtract?: BaseBranchCache,\n): boolean {\n if (!cachedExtract) {\n return false;\n }\n\n if (!cachedExtract.revision) {\n logger.debug('Cached extract is missing revision, so cannot be used');\n return false;\n }\n\n if (cachedExtract.revision !== EXTRACT_CACHE_REVISION) {\n logger.debug(\n `Extract cache revision has changed (old=${cachedExtract.revision}, new=${EXTRACT_CACHE_REVISION})`,\n );\n return false;\n }\n\n if (!(cachedExtract.sha && cachedExtract.configHash)) {\n return false;\n }\n if (cachedExtract.sha !== baseBranchSha) {\n logger.debug(\n `Cached extract result cannot be used due to base branch SHA change (old=${cachedExtract.sha}, new=${baseBranchSha})`,\n );\n return false;\n }\n if (cachedExtract.configHash !== configHash) {\n logger.debug('Cached extract result cannot be used due to config change');\n return false;\n }\n if (!cachedExtract.extractionFingerprints) {\n logger.debug(\n 'Cached extract is missing extractionFingerprints, so cannot be used',\n );\n return false;\n }\n const changedManagers = new Set();\n for (const [manager, fingerprint] of Object.entries(\n cachedExtract.extractionFingerprints,\n )) {\n if (fingerprint !== hashMap.get(manager)) {\n changedManagers.add(manager);\n }\n }\n if (changedManagers.size > 0) {\n logger.debug(\n { changedManagers: [...changedManagers] },\n 'Manager fingerprint(s) have changed, extract cache cannot be reused',\n );\n return false;\n }\n logger.debug(\n `Cached extract for sha=${baseBranchSha} is valid and can be used`,\n );\n return true;\n}\n\nexport async function extract(\n config: RenovateConfig,\n overwriteCache = true,\n): Promise<Record<string, PackageFile[]>> {\n logger.debug('extract()');\n const { baseBranch } = config;\n const baseBranchSha = await scm.getBranchCommit(baseBranch!);\n let packageFiles: Record<string, PackageFile[]>;\n const cache = getCache();\n cache.scan ??= {};\n const cachedExtract = cache.scan[baseBranch!];\n const configHash = fingerprint(generateFingerprintConfig(config));\n // istanbul ignore if\n if (\n overwriteCache &&\n isCacheExtractValid(baseBranchSha!, configHash, cachedExtract)\n ) {\n packageFiles = cachedExtract.packageFiles;\n try {\n for (const files of Object.values(packageFiles)) {\n for (const file of files) {\n for (const dep of file.deps) {\n delete dep.updates;\n }\n }\n }\n logger.debug('Deleted cached dep updates');\n } catch (err) {\n logger.info({ err }, 'Error deleting cached dep updates');\n }\n } else {\n await scm.checkoutBranch(baseBranch!);\n const extractResult = (await extractAllDependencies(config)) || {};\n packageFiles = extractResult.packageFiles;\n const { extractionFingerprints } = extractResult;\n\n if (overwriteCache) {\n // TODO: fix types (#22198)\n cache.scan[baseBranch!] = {\n revision: EXTRACT_CACHE_REVISION,\n sha: baseBranchSha!,\n configHash,\n extractionFingerprints,\n packageFiles,\n };\n }\n // Clean up cached branch extracts\n const baseBranches = is.nonEmptyArray(config.baseBranches)\n ? config.baseBranches\n : [baseBranch];\n Object.keys(cache.scan).forEach((branchName) => {\n if (!baseBranches.includes(branchName)) {\n delete cache.scan![branchName];\n }\n });\n }\n const stats = extractStats(packageFiles);\n logger.info(\n { baseBranch: config.baseBranch, stats },\n `Dependency extraction complete`,\n );\n logger.trace({ config: packageFiles }, 'packageFiles');\n ensureGithubToken(packageFiles);\n return packageFiles;\n}\n\nasync function fetchVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<void> {\n if (config.osvVulnerabilityAlerts) {\n logger.debug('fetchVulnerabilities() - osvVulnerabilityAlerts=true');\n try {\n const vulnerabilities = await Vulnerabilities.create();\n await vulnerabilities.appendVulnerabilityPackageRules(\n config,\n packageFiles,\n );\n } catch (err) {\n logger.warn({ err }, 'Unable to read vulnerability information');\n }\n }\n}\n\nexport async function lookup(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<ExtractResult> {\n await fetchVulnerabilities(config, packageFiles);\n await fetchUpdates(config, packageFiles);\n memCache.cleanDatasourceKeys();\n calculateLibYears(config, packageFiles);\n const { branches, branchList } = await branchifyUpgrades(\n config,\n packageFiles,\n );\n logger.debug(\n { baseBranch: config.baseBranch, config: packageFiles },\n 'packageFiles with updates',\n );\n sortBranches(branches);\n return { branches, branchList, packageFiles };\n}\n\nexport async function update(\n config: RenovateConfig,\n branches: BranchConfig[],\n): Promise<WriteUpdateResult | undefined> {\n let res: WriteUpdateResult | undefined;\n if (config.repoIsOnboarded) {\n res = await writeUpdates(config, branches);\n }\n\n return res;\n}\n"]}
@@ -2,5 +2,5 @@ import type { RenovateConfig } from '../../../config/types';
2
2
  import type { BranchConfig } from '../../types';
3
3
  import type { ExtractResult } from './extract-update';
4
4
  import type { WriteUpdateResult } from './write';
5
- export declare function extractDependencies(config: RenovateConfig): Promise<ExtractResult>;
5
+ export declare function extractDependencies(config: RenovateConfig, overwriteCache?: boolean): Promise<ExtractResult>;
6
6
  export declare function updateRepo(config: RenovateConfig, branches: BranchConfig[]): Promise<WriteUpdateResult | undefined>;
@@ -75,7 +75,7 @@ function unfoldBaseBranches(defaultBranch, baseBranches) {
75
75
  }
76
76
  return [...new Set(unfoldedList)];
77
77
  }
78
- async function extractDependencies(config) {
78
+ async function extractDependencies(config, overwriteCache = true) {
79
79
  await (0, dependency_dashboard_1.readDashboardBody)(config);
80
80
  let res = {
81
81
  branches: [],
@@ -88,9 +88,12 @@ async function extractDependencies(config) {
88
88
  const extracted = {};
89
89
  for (const baseBranch of config.baseBranches) {
90
90
  (0, logger_1.addMeta)({ baseBranch });
91
+ if (scm_1.scm.syncForkWithUpstream) {
92
+ await scm_1.scm.syncForkWithUpstream(baseBranch);
93
+ }
91
94
  if (await scm_1.scm.branchExists(baseBranch)) {
92
95
  const baseBranchConfig = await getBaseBranchConfig(baseBranch, config);
93
- extracted[baseBranch] = await (0, extract_update_1.extract)(baseBranchConfig);
96
+ extracted[baseBranch] = await (0, extract_update_1.extract)(baseBranchConfig, overwriteCache);
94
97
  }
95
98
  else {
96
99
  logger_1.logger.warn({ baseBranch }, 'Base branch does not exist - skipping');
@@ -115,7 +118,7 @@ async function extractDependencies(config) {
115
118
  }
116
119
  else {
117
120
  logger_1.logger.debug('No baseBranches');
118
- const packageFiles = await (0, extract_update_1.extract)(config);
121
+ const packageFiles = await (0, extract_update_1.extract)(config, overwriteCache);
119
122
  (0, split_1.addSplit)('extract');
120
123
  if (global_1.GlobalConfig.get('dryRun') === 'extract') {
121
124
  res.packageFiles = packageFiles;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/workers/repository/process/index.ts"],"names":[],"mappings":";;AAkHA,kDAsDC;AAED,gCAOC;AAjLD,cAAc;AACd,4CAAmD;AACnD,mDAAsD;AACtD,qDAA+D;AAE/D,sEAAsE;AACtE,4CAA8D;AAE9D,wDAAqD;AACrD,uDAAoD;AACpD,+DAA0D;AAC1D,+CAA4C;AAC5C,2CAAkD;AAClD,+CAA+C;AAC/C,6DAA+D;AAE/D,kEAA4D;AAE5D,qDAA2D;AAG3D,KAAK,UAAU,mBAAmB,CAChC,UAAkB,EAClB,MAAsB;IAEtB,eAAM,CAAC,KAAK,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC;IAE1C,IAAI,gBAAgB,GAAmB,IAAA,aAAK,EAAC,MAAM,CAAC,CAAC;IAErD,IACE,MAAM,CAAC,mBAAmB,KAAK,OAAO;QACtC,UAAU,KAAK,MAAM,CAAC,aAAa,EACnC,CAAC;QACD,eAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,EACd,mEAAmE,CACpE,CAAC;QAEF,uDAAuD;QACvD,MAAM,KAAK,GAAG,IAAA,qBAAQ,GAAE,CAAC;QACzB,uBAAuB;QACvB,MAAM,cAAc,GAAG,KAAK,CAAC,cAAe,CAAC;QAE7C,IAAI,CAAC;YACH,gBAAgB,GAAG,MAAM,mBAAQ,CAAC,WAAW,CAC3C,cAAc,EACd,MAAM,CAAC,UAAU,EACjB,UAAU,CACX,CAAC;YACF,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,eAAM,CAAC,KAAK,CACV,EAAE,cAAc,EAAE,UAAU,EAAE,EAC9B,+FAA+F,CAChG,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,kCAAiB,CAAC,CAAC;YAC3C,KAAK,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YAClC,KAAK,CAAC,eAAe,GAAG,4BAA4B,CAAC;YACrD,KAAK,CAAC,iBAAiB,GAAG,gCAAgC,cAAc,oBAAoB,UAAU,IAAI,CAAC;YAC3G,MAAM,KAAK,CAAC;QACd,CAAC;QAED,gBAAgB,GAAG,MAAM,IAAA,8BAAoB,EAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACxE,gBAAgB,GAAG,IAAA,yBAAgB,EAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAE9D,qBAAqB;QACrB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,eAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAC5B,gCAAgC,CACjC,CAAC;QACJ,CAAC;QAED,4DAA4D;QAC5D,gBAAgB,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACtD,CAAC;IAED,IAAI,MAAM,CAAC,YAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,gBAAgB,CAAC,YAAY,IAAI,GAAG,UAAU,GAAG,CAAC;QAClD,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC;IAC1C,CAAC;IAED,gBAAgB,GAAG,IAAA,yBAAgB,EAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAEtE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,kBAAkB,CACzB,aAAqB,EACrB,YAAsB;IAEtB,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,MAAM,WAAW,GAAG,IAAA,mBAAa,GAAE,CAAC;IACpC,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,IAAA,gCAAiB,EAAC,UAAU,CAAC,CAAC;QACpD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC3D,eAAM,CAAC,KAAK,CACV,uBAAuB,UAAU,cAAc,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAC1E,CAAC;YACF,YAAY,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YACrC,eAAM,CAAC,KAAK,CAAC,oCAAoC,aAAa,GAAG,CAAC,CAAC;YACnE,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AACpC,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,MAAsB;IAEtB,MAAM,IAAA,wCAAiB,EAAC,MAAM,CAAC,CAAC;IAChC,IAAI,GAAG,GAAkB;QACvB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,EAAE;KACjB,CAAC;IACF,IAAI,qBAAY,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAC5E,MAAM,CAAC,YAAY,GAAG,kBAAkB,CACtC,MAAM,CAAC,aAAc,EACrB,MAAM,CAAC,YAAY,CACpB,CAAC;QACF,eAAM,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,cAAc,CAAC,CAAC;QACpE,MAAM,SAAS,GAAkD,EAAE,CAAC;QACpE,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAA,gBAAO,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YACxB,IAAI,MAAM,SAAG,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvC,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACvE,SAAS,CAAC,UAAU,CAAC,GAAG,MAAM,IAAA,wBAAO,EAAC,gBAAgB,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,uCAAuC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,IAAA,gBAAQ,EAAC,SAAS,CAAC,CAAC;QACpB,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAI,MAAM,SAAG,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvC,IAAA,gBAAO,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;gBACxB,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACvE,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC3C,MAAM,aAAa,GAAG,MAAM,IAAA,uBAAM,EAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;gBACnE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAC5D,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;gBAClE,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;oBAC/D,uBAAuB;oBACvB,GAAG,CAAC,YAAY,GAAG,aAAa,EAAE,YAAY,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAA,mBAAU,EAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,eAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChC,MAAM,YAAY,GAAG,MAAM,IAAA,wBAAO,EAAC,MAAM,CAAC,CAAC;QAC3C,IAAA,gBAAQ,EAAC,SAAS,CAAC,CAAC;QACpB,IAAI,qBAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7C,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC;YAChC,eAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,wBAAwB,CAAC,CAAC;YACxD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,GAAG,GAAG,MAAM,IAAA,uBAAM,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3C,CAAC;IACD,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;IACnB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,UAAU,CACxB,MAAsB,EACtB,QAAwB;IAExB,eAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAE9B,OAAO,IAAA,uBAAM,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC","sourcesContent":["// TODO #22198\nimport { mergeChildConfig } from '../../../config';\nimport { GlobalConfig } from '../../../config/global';\nimport { resolveConfigPresets } from '../../../config/presets';\nimport type { RenovateConfig } from '../../../config/types';\nimport { CONFIG_VALIDATION } from '../../../constants/error-messages';\nimport { addMeta, logger, removeMeta } from '../../../logger';\nimport type { PackageFile } from '../../../modules/manager/types';\nimport { platform } from '../../../modules/platform';\nimport { scm } from '../../../modules/platform/scm';\nimport { getCache } from '../../../util/cache/repository';\nimport { clone } from '../../../util/clone';\nimport { getBranchList } from '../../../util/git';\nimport { addSplit } from '../../../util/split';\nimport { getRegexPredicate } from '../../../util/string-match';\nimport type { BranchConfig } from '../../types';\nimport { readDashboardBody } from '../dependency-dashboard';\nimport type { ExtractResult } from './extract-update';\nimport { extract, lookup, update } from './extract-update';\nimport type { WriteUpdateResult } from './write';\n\nasync function getBaseBranchConfig(\n baseBranch: string,\n config: RenovateConfig,\n): Promise<RenovateConfig> {\n logger.debug(`baseBranch: ${baseBranch}`);\n\n let baseBranchConfig: RenovateConfig = clone(config);\n\n if (\n config.useBaseBranchConfig === 'merge' &&\n baseBranch !== config.defaultBranch\n ) {\n logger.debug(\n { baseBranch },\n `Merging config from base branch because useBaseBranchConfig=merge`,\n );\n\n // Retrieve config file name autodetected for this repo\n const cache = getCache();\n // TODO: types (#22198)\n const configFileName = cache.configFileName!;\n\n try {\n baseBranchConfig = await platform.getJsonFile(\n configFileName,\n config.repository,\n baseBranch,\n );\n logger.debug({ config: baseBranchConfig }, 'Base branch config raw');\n } catch {\n logger.error(\n { configFileName, baseBranch },\n `Error fetching config file from base branch - possible config name mismatch between branches?`,\n );\n\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationError = 'Error fetching config file';\n error.validationMessage = `Error fetching config file \\`${configFileName}\\` from branch \\`${baseBranch}\\``;\n throw error;\n }\n\n baseBranchConfig = await resolveConfigPresets(baseBranchConfig, config);\n baseBranchConfig = mergeChildConfig(config, baseBranchConfig);\n\n // istanbul ignore if\n if (config.printConfig) {\n logger.info(\n { config: baseBranchConfig },\n 'Base branch config after merge',\n );\n }\n\n // baseBranches value should be based off the default branch\n baseBranchConfig.baseBranches = config.baseBranches;\n }\n\n if (config.baseBranches!.length > 1) {\n baseBranchConfig.branchPrefix += `${baseBranch}-`;\n baseBranchConfig.hasBaseBranches = true;\n }\n\n baseBranchConfig = mergeChildConfig(baseBranchConfig, { baseBranch });\n\n return baseBranchConfig;\n}\n\nfunction unfoldBaseBranches(\n defaultBranch: string,\n baseBranches: string[],\n): string[] {\n const unfoldedList: string[] = [];\n\n const allBranches = getBranchList();\n for (const baseBranch of baseBranches) {\n const isAllowedPred = getRegexPredicate(baseBranch);\n if (isAllowedPred) {\n const matchingBranches = allBranches.filter(isAllowedPred);\n logger.debug(\n `baseBranches regex \"${baseBranch}\" matches [${matchingBranches.join()}]`,\n );\n unfoldedList.push(...matchingBranches);\n } else if (baseBranch === '$default') {\n logger.debug(`baseBranches \"$default\" matches \"${defaultBranch}\"`);\n unfoldedList.push(defaultBranch);\n } else {\n unfoldedList.push(baseBranch);\n }\n }\n\n return [...new Set(unfoldedList)];\n}\n\nexport async function extractDependencies(\n config: RenovateConfig,\n): Promise<ExtractResult> {\n await readDashboardBody(config);\n let res: ExtractResult = {\n branches: [],\n branchList: [],\n packageFiles: {},\n };\n if (GlobalConfig.get('platform') !== 'local' && config.baseBranches?.length) {\n config.baseBranches = unfoldBaseBranches(\n config.defaultBranch!,\n config.baseBranches,\n );\n logger.debug({ baseBranches: config.baseBranches }, 'baseBranches');\n const extracted: Record<string, Record<string, PackageFile[]>> = {};\n for (const baseBranch of config.baseBranches) {\n addMeta({ baseBranch });\n if (await scm.branchExists(baseBranch)) {\n const baseBranchConfig = await getBaseBranchConfig(baseBranch, config);\n extracted[baseBranch] = await extract(baseBranchConfig);\n } else {\n logger.warn({ baseBranch }, 'Base branch does not exist - skipping');\n }\n }\n addSplit('extract');\n for (const baseBranch of config.baseBranches) {\n if (await scm.branchExists(baseBranch)) {\n addMeta({ baseBranch });\n const baseBranchConfig = await getBaseBranchConfig(baseBranch, config);\n const packageFiles = extracted[baseBranch];\n const baseBranchRes = await lookup(baseBranchConfig, packageFiles);\n res.branches = res.branches.concat(baseBranchRes?.branches);\n res.branchList = res.branchList.concat(baseBranchRes?.branchList);\n if (!res.packageFiles || !Object.keys(res.packageFiles).length) {\n // Use the first branch\n res.packageFiles = baseBranchRes?.packageFiles;\n }\n }\n }\n removeMeta(['baseBranch']);\n } else {\n logger.debug('No baseBranches');\n const packageFiles = await extract(config);\n addSplit('extract');\n if (GlobalConfig.get('dryRun') === 'extract') {\n res.packageFiles = packageFiles;\n logger.info({ packageFiles }, 'Extracted dependencies');\n return res;\n }\n res = await lookup(config, packageFiles);\n }\n addSplit('lookup');\n return res;\n}\n\nexport function updateRepo(\n config: RenovateConfig,\n branches: BranchConfig[],\n): Promise<WriteUpdateResult | undefined> {\n logger.debug('processRepo()');\n\n return update(config, branches);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/workers/repository/process/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO #22198\nimport { mergeChildConfig } from '../../../config';\nimport { GlobalConfig } from '../../../config/global';\nimport { resolveConfigPresets } from '../../../config/presets';\nimport type { RenovateConfig } from '../../../config/types';\nimport { CONFIG_VALIDATION } from '../../../constants/error-messages';\nimport { addMeta, logger, removeMeta } from '../../../logger';\nimport type { PackageFile } from '../../../modules/manager/types';\nimport { platform } from '../../../modules/platform';\nimport { scm } from '../../../modules/platform/scm';\nimport { getCache } from '../../../util/cache/repository';\nimport { clone } from '../../../util/clone';\nimport { getBranchList } from '../../../util/git';\nimport { addSplit } from '../../../util/split';\nimport { getRegexPredicate } from '../../../util/string-match';\nimport type { BranchConfig } from '../../types';\nimport { readDashboardBody } from '../dependency-dashboard';\nimport type { ExtractResult } from './extract-update';\nimport { extract, lookup, update } from './extract-update';\nimport type { WriteUpdateResult } from './write';\n\nasync function getBaseBranchConfig(\n baseBranch: string,\n config: RenovateConfig,\n): Promise<RenovateConfig> {\n logger.debug(`baseBranch: ${baseBranch}`);\n\n let baseBranchConfig: RenovateConfig = clone(config);\n\n if (\n config.useBaseBranchConfig === 'merge' &&\n baseBranch !== config.defaultBranch\n ) {\n logger.debug(\n { baseBranch },\n `Merging config from base branch because useBaseBranchConfig=merge`,\n );\n\n // Retrieve config file name autodetected for this repo\n const cache = getCache();\n // TODO: types (#22198)\n const configFileName = cache.configFileName!;\n\n try {\n baseBranchConfig = await platform.getJsonFile(\n configFileName,\n config.repository,\n baseBranch,\n );\n logger.debug({ config: baseBranchConfig }, 'Base branch config raw');\n } catch {\n logger.error(\n { configFileName, baseBranch },\n `Error fetching config file from base branch - possible config name mismatch between branches?`,\n );\n\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationError = 'Error fetching config file';\n error.validationMessage = `Error fetching config file \\`${configFileName}\\` from branch \\`${baseBranch}\\``;\n throw error;\n }\n\n baseBranchConfig = await resolveConfigPresets(baseBranchConfig, config);\n baseBranchConfig = mergeChildConfig(config, baseBranchConfig);\n\n // istanbul ignore if\n if (config.printConfig) {\n logger.info(\n { config: baseBranchConfig },\n 'Base branch config after merge',\n );\n }\n\n // baseBranches value should be based off the default branch\n baseBranchConfig.baseBranches = config.baseBranches;\n }\n\n if (config.baseBranches!.length > 1) {\n baseBranchConfig.branchPrefix += `${baseBranch}-`;\n baseBranchConfig.hasBaseBranches = true;\n }\n\n baseBranchConfig = mergeChildConfig(baseBranchConfig, { baseBranch });\n\n return baseBranchConfig;\n}\n\nfunction unfoldBaseBranches(\n defaultBranch: string,\n baseBranches: string[],\n): string[] {\n const unfoldedList: string[] = [];\n\n const allBranches = getBranchList();\n for (const baseBranch of baseBranches) {\n const isAllowedPred = getRegexPredicate(baseBranch);\n if (isAllowedPred) {\n const matchingBranches = allBranches.filter(isAllowedPred);\n logger.debug(\n `baseBranches regex \"${baseBranch}\" matches [${matchingBranches.join()}]`,\n );\n unfoldedList.push(...matchingBranches);\n } else if (baseBranch === '$default') {\n logger.debug(`baseBranches \"$default\" matches \"${defaultBranch}\"`);\n unfoldedList.push(defaultBranch);\n } else {\n unfoldedList.push(baseBranch);\n }\n }\n\n return [...new Set(unfoldedList)];\n}\n\nexport async function extractDependencies(\n config: RenovateConfig,\n overwriteCache = true,\n): Promise<ExtractResult> {\n await readDashboardBody(config);\n let res: ExtractResult = {\n branches: [],\n branchList: [],\n packageFiles: {},\n };\n if (GlobalConfig.get('platform') !== 'local' && config.baseBranches?.length) {\n config.baseBranches = unfoldBaseBranches(\n config.defaultBranch!,\n config.baseBranches,\n );\n logger.debug({ baseBranches: config.baseBranches }, 'baseBranches');\n const extracted: Record<string, Record<string, PackageFile[]>> = {};\n for (const baseBranch of config.baseBranches) {\n addMeta({ baseBranch });\n\n if (scm.syncForkWithUpstream) {\n await scm.syncForkWithUpstream(baseBranch);\n }\n if (await scm.branchExists(baseBranch)) {\n const baseBranchConfig = await getBaseBranchConfig(baseBranch, config);\n extracted[baseBranch] = await extract(baseBranchConfig, overwriteCache);\n } else {\n logger.warn({ baseBranch }, 'Base branch does not exist - skipping');\n }\n }\n addSplit('extract');\n for (const baseBranch of config.baseBranches) {\n if (await scm.branchExists(baseBranch)) {\n addMeta({ baseBranch });\n const baseBranchConfig = await getBaseBranchConfig(baseBranch, config);\n const packageFiles = extracted[baseBranch];\n const baseBranchRes = await lookup(baseBranchConfig, packageFiles);\n res.branches = res.branches.concat(baseBranchRes?.branches);\n res.branchList = res.branchList.concat(baseBranchRes?.branchList);\n if (!res.packageFiles || !Object.keys(res.packageFiles).length) {\n // Use the first branch\n res.packageFiles = baseBranchRes?.packageFiles;\n }\n }\n }\n removeMeta(['baseBranch']);\n } else {\n logger.debug('No baseBranches');\n const packageFiles = await extract(config, overwriteCache);\n addSplit('extract');\n if (GlobalConfig.get('dryRun') === 'extract') {\n res.packageFiles = packageFiles;\n logger.info({ packageFiles }, 'Extracted dependencies');\n return res;\n }\n res = await lookup(config, packageFiles);\n }\n addSplit('lookup');\n return res;\n}\n\nexport function updateRepo(\n config: RenovateConfig,\n branches: BranchConfig[],\n): Promise<WriteUpdateResult | undefined> {\n logger.debug('processRepo()');\n\n return update(config, branches);\n}\n"]}
@@ -49,15 +49,23 @@ function calculateLibYears(config, packageFiles) {
49
49
  }
50
50
  }
51
51
  }
52
+ const libYearsWithStatus = getLibYears(allDeps);
53
+ logger_1.logger.debug(libYearsWithStatus, 'Repository libYears');
54
+ (0, reporting_1.addLibYears)(config, libYearsWithStatus);
55
+ }
56
+ function getLibYears(allDeps) {
52
57
  const [totalDepsCount, outdatedDepsCount, totalLibYears] = getCounts(allDeps);
53
58
  const managerLibYears = getManagerLibYears(allDeps);
54
- logger_1.logger.debug({
55
- managerLibYears,
56
- totalLibYears,
57
- totalDepsCount,
58
- outdatedDepsCount,
59
- }, 'Repository libYears');
60
- (0, reporting_1.addLibYears)(config, managerLibYears, totalLibYears, totalDepsCount, outdatedDepsCount);
59
+ return {
60
+ libYears: {
61
+ managers: managerLibYears,
62
+ total: totalLibYears,
63
+ },
64
+ dependencyStatus: {
65
+ outdated: outdatedDepsCount,
66
+ total: totalDepsCount,
67
+ },
68
+ };
61
69
  }
62
70
  function getManagerLibYears(deps) {
63
71
  /** {manager : {depKey: libYear }} */
@@ -1 +1 @@
1
- {"version":3,"file":"libyear.js","sourceRoot":"","sources":["../../../../lib/workers/repository/process/libyear.ts"],"names":[],"mappings":"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","sourcesContent":["import { DateTime } from 'luxon';\nimport type { RenovateConfig } from '../../../config/types';\nimport { addLibYears } from '../../../instrumentation/reporting';\nimport { logger } from '../../../logger';\nimport type { PackageFile } from '../../../modules/manager/types';\n\ninterface DepInfo {\n depName: string;\n manager: string;\n datasource: string;\n version: string;\n file: string;\n outdated?: boolean;\n libYear?: number;\n}\nexport function calculateLibYears(\n config: RenovateConfig,\n packageFiles?: Record<string, PackageFile[]>,\n): void {\n if (!packageFiles) {\n return;\n }\n const allDeps: DepInfo[] = [];\n for (const [manager, files] of Object.entries(packageFiles)) {\n for (const file of files) {\n for (const dep of file.deps) {\n const depInfo: DepInfo = {\n depName: dep.depName!,\n manager,\n file: file.packageFile,\n datasource: dep.datasource!,\n version: (dep.currentVersion ?? dep.currentValue)!,\n };\n\n if (!dep.updates?.length) {\n allDeps.push(depInfo);\n continue;\n }\n\n depInfo.outdated = true;\n if (!dep.currentVersionTimestamp) {\n logger.once.debug(`No currentVersionTimestamp for ${dep.depName}`);\n allDeps.push(depInfo);\n continue;\n }\n // timestamps are in ISO format\n const currentVersionDate = DateTime.fromISO(\n dep.currentVersionTimestamp,\n );\n\n for (const update of dep.updates) {\n if (!update.releaseTimestamp) {\n logger.once.debug(\n `No releaseTimestamp for ${dep.depName} update to ${update.newVersion}`,\n );\n continue;\n }\n const releaseDate = DateTime.fromISO(update.releaseTimestamp);\n const libYears = releaseDate.diff(currentVersionDate, 'years').years;\n if (libYears >= 0) {\n update.libYears = libYears;\n }\n }\n // Set the highest libYears for the dep\n const depLibYears = Math.max(\n ...dep.updates.map((update) => update.libYears ?? 0),\n 0,\n );\n depInfo.libYear = depLibYears;\n allDeps.push(depInfo);\n }\n }\n }\n\n const [totalDepsCount, outdatedDepsCount, totalLibYears] = getCounts(allDeps);\n const managerLibYears = getManagerLibYears(allDeps);\n logger.debug(\n {\n managerLibYears,\n totalLibYears,\n totalDepsCount,\n outdatedDepsCount,\n },\n 'Repository libYears',\n );\n\n addLibYears(\n config,\n managerLibYears,\n totalLibYears,\n totalDepsCount,\n outdatedDepsCount,\n );\n}\n\nfunction getManagerLibYears(deps: DepInfo[]): Record<string, number> {\n /** {manager : {depKey: libYear }} */\n const managerLibYears: Record<string, Record<string, number>> = {};\n for (const dep of deps) {\n const depKey = `${dep.depName}@${dep.version}@${dep.datasource}`;\n const manager = dep.manager;\n managerLibYears[manager] ??= {};\n if (dep.libYear) {\n if (!managerLibYears[manager][depKey]) {\n managerLibYears[manager][depKey] = dep.libYear;\n }\n }\n }\n\n const res: Record<string, number> = {};\n for (const [manager, deps] of Object.entries(managerLibYears)) {\n const managerLibYear = Object.values(deps).reduce((sum, curr) => {\n return sum + curr;\n }, 0);\n res[manager] = managerLibYear;\n }\n\n return res;\n}\n\nfunction getCounts(deps: DepInfo[]): [number, number, number] {\n const distinctDeps = new Set<string>();\n let totalDepsCount = 0,\n outdatedDepsCount = 0,\n totalLibYears = 0;\n for (const dep of deps) {\n const depKey = `${dep.depName}@${dep.version}@${dep.datasource}`;\n if (!distinctDeps.has(depKey)) {\n if (dep.outdated) {\n outdatedDepsCount++;\n }\n if (dep.libYear) {\n totalLibYears += dep.libYear;\n }\n\n totalDepsCount++;\n distinctDeps.add(depKey);\n }\n }\n\n return [totalDepsCount, outdatedDepsCount, totalLibYears];\n}\n"]}
1
+ {"version":3,"file":"libyear.js","sourceRoot":"","sources":["../../../../lib/workers/repository/process/libyear.ts"],"names":[],"mappings":"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","sourcesContent":["import { DateTime } from 'luxon';\nimport type { RenovateConfig } from '../../../config/types';\nimport { addLibYears } from '../../../instrumentation/reporting';\nimport type { LibYearsWithStatus } from '../../../instrumentation/types';\nimport { logger } from '../../../logger';\nimport type { PackageFile } from '../../../modules/manager/types';\n\ninterface DepInfo {\n depName: string;\n manager: string;\n datasource: string;\n version: string;\n file: string;\n outdated?: boolean;\n libYear?: number;\n}\n\nexport function calculateLibYears(\n config: RenovateConfig,\n packageFiles?: Record<string, PackageFile[]>,\n): void {\n if (!packageFiles) {\n return;\n }\n const allDeps: DepInfo[] = [];\n for (const [manager, files] of Object.entries(packageFiles)) {\n for (const file of files) {\n for (const dep of file.deps) {\n const depInfo: DepInfo = {\n depName: dep.depName!,\n manager,\n file: file.packageFile,\n datasource: dep.datasource!,\n version: (dep.currentVersion ?? dep.currentValue)!,\n };\n\n if (!dep.updates?.length) {\n allDeps.push(depInfo);\n continue;\n }\n\n depInfo.outdated = true;\n if (!dep.currentVersionTimestamp) {\n logger.once.debug(`No currentVersionTimestamp for ${dep.depName}`);\n allDeps.push(depInfo);\n continue;\n }\n // timestamps are in ISO format\n const currentVersionDate = DateTime.fromISO(\n dep.currentVersionTimestamp,\n );\n\n for (const update of dep.updates) {\n if (!update.releaseTimestamp) {\n logger.once.debug(\n `No releaseTimestamp for ${dep.depName} update to ${update.newVersion}`,\n );\n continue;\n }\n const releaseDate = DateTime.fromISO(update.releaseTimestamp);\n const libYears = releaseDate.diff(currentVersionDate, 'years').years;\n if (libYears >= 0) {\n update.libYears = libYears;\n }\n }\n // Set the highest libYears for the dep\n const depLibYears = Math.max(\n ...dep.updates.map((update) => update.libYears ?? 0),\n 0,\n );\n depInfo.libYear = depLibYears;\n allDeps.push(depInfo);\n }\n }\n }\n const libYearsWithStatus = getLibYears(allDeps);\n logger.debug(libYearsWithStatus, 'Repository libYears');\n\n addLibYears(config, libYearsWithStatus);\n}\n\nfunction getLibYears(allDeps: DepInfo[]): LibYearsWithStatus {\n const [totalDepsCount, outdatedDepsCount, totalLibYears] = getCounts(allDeps);\n const managerLibYears = getManagerLibYears(allDeps);\n\n return {\n libYears: {\n managers: managerLibYears,\n total: totalLibYears,\n },\n dependencyStatus: {\n outdated: outdatedDepsCount,\n total: totalDepsCount,\n },\n };\n}\n\nfunction getManagerLibYears(deps: DepInfo[]): Record<string, number> {\n /** {manager : {depKey: libYear }} */\n const managerLibYears: Record<string, Record<string, number>> = {};\n for (const dep of deps) {\n const depKey = `${dep.depName}@${dep.version}@${dep.datasource}`;\n const manager = dep.manager;\n managerLibYears[manager] ??= {};\n if (dep.libYear) {\n if (!managerLibYears[manager][depKey]) {\n managerLibYears[manager][depKey] = dep.libYear;\n }\n }\n }\n\n const res: Record<string, number> = {};\n for (const [manager, deps] of Object.entries(managerLibYears)) {\n const managerLibYear = Object.values(deps).reduce((sum, curr) => {\n return sum + curr;\n }, 0);\n res[manager] = managerLibYear;\n }\n\n return res;\n}\n\nfunction getCounts(deps: DepInfo[]): [number, number, number] {\n const distinctDeps = new Set<string>();\n let totalDepsCount = 0,\n outdatedDepsCount = 0,\n totalLibYears = 0;\n for (const dep of deps) {\n const depKey = `${dep.depName}@${dep.version}@${dep.datasource}`;\n if (!distinctDeps.has(depKey)) {\n if (dep.outdated) {\n outdatedDepsCount++;\n }\n if (dep.libYear) {\n totalLibYears += dep.libYear;\n }\n\n totalDepsCount++;\n distinctDeps.add(depKey);\n }\n }\n\n return [totalDepsCount, outdatedDepsCount, totalLibYears];\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { ReleaseResult } from '../../../../modules/datasource/types';
2
+ import type { LookupUpdateConfig } from './types';
3
+ export declare function calculateAbandonment(releaseResult: ReleaseResult, config: LookupUpdateConfig): ReleaseResult;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateAbandonment = calculateAbandonment;
4
+ const luxon_1 = require("luxon");
5
+ const logger_1 = require("../../../../logger");
6
+ const pretty_time_1 = require("../../../../util/pretty-time");
7
+ const stats_1 = require("../../../../util/stats");
8
+ function calculateAbandonment(releaseResult, config) {
9
+ const { lookupName } = releaseResult;
10
+ const { abandonmentThreshold } = config;
11
+ if (!abandonmentThreshold) {
12
+ logger_1.logger.trace({ lookupName }, 'No abandonmentThreshold defined, skipping abandonment check');
13
+ return releaseResult;
14
+ }
15
+ const abandonmentThresholdMs = (0, pretty_time_1.toMs)(abandonmentThreshold);
16
+ if (!abandonmentThresholdMs) {
17
+ logger_1.logger.trace({ lookupName, abandonmentThreshold }, 'Could not parse abandonmentThreshold to milliseconds, skipping abandonment check');
18
+ return releaseResult;
19
+ }
20
+ const { mostRecentTimestamp } = releaseResult;
21
+ if (!mostRecentTimestamp) {
22
+ logger_1.logger.trace({ lookupName }, 'No mostRecentTimestamp value found, skipping abandonment check');
23
+ return releaseResult;
24
+ }
25
+ const mostRecentTimestampDate = luxon_1.DateTime.fromISO(mostRecentTimestamp);
26
+ const abandonmentDate = mostRecentTimestampDate.plus({
27
+ milliseconds: abandonmentThresholdMs,
28
+ });
29
+ const now = luxon_1.DateTime.local();
30
+ const isAbandoned = abandonmentDate < now;
31
+ releaseResult.isAbandoned = isAbandoned;
32
+ if (isAbandoned) {
33
+ logger_1.logger.debug(`Package abandonment detected: ${config.packageName} (${config.datasource}) - most recent release: ${mostRecentTimestamp}`);
34
+ }
35
+ logger_1.logger.trace({
36
+ lookupName,
37
+ mostRecentTimestamp,
38
+ abandonmentThreshold,
39
+ abandonmentThresholdMs,
40
+ abandonmentDate: abandonmentDate.toISO(),
41
+ now: now.toISO(),
42
+ isAbandoned,
43
+ }, 'Calculated abandonment status');
44
+ if (isAbandoned) {
45
+ const { datasource, packageName } = config;
46
+ stats_1.AbandonedPackageStats.write(datasource, packageName, mostRecentTimestamp);
47
+ }
48
+ return releaseResult;
49
+ }
50
+ //# sourceMappingURL=abandonment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abandonment.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/abandonment.ts"],"names":[],"mappings":";;AAOA,oDAiEC;AAxED,iCAAiC;AACjC,+CAA4C;AAE5C,8DAAoD;AACpD,kDAA+D;AAG/D,SAAgB,oBAAoB,CAClC,aAA4B,EAC5B,MAA0B;IAE1B,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IACrC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAAC;IACxC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,eAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,EACd,6DAA6D,CAC9D,CAAC;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,sBAAsB,GAAG,IAAA,kBAAI,EAAC,oBAAoB,CAAC,CAAC;IAC1D,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,eAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,oBAAoB,EAAE,EACpC,kFAAkF,CACnF,CAAC;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,aAAa,CAAC;IAC9C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,eAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,EACd,gEAAgE,CACjE,CAAC;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,MAAM,uBAAuB,GAAG,gBAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEtE,MAAM,eAAe,GAAG,uBAAuB,CAAC,IAAI,CAAC;QACnD,YAAY,EAAE,sBAAsB;KACrC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,gBAAQ,CAAC,KAAK,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,eAAe,GAAG,GAAG,CAAC;IAC1C,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC;IAExC,IAAI,WAAW,EAAE,CAAC;QAChB,eAAM,CAAC,KAAK,CACV,iCAAiC,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,UAAU,4BAA4B,mBAAmB,EAAE,CAC3H,CAAC;IACJ,CAAC;IAED,eAAM,CAAC,KAAK,CACV;QACE,UAAU;QACV,mBAAmB;QACnB,oBAAoB;QACpB,sBAAsB;QACtB,eAAe,EAAE,eAAe,CAAC,KAAK,EAAE;QACxC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE;QAChB,WAAW;KACZ,EACD,+BAA+B,CAChC,CAAC;IAEF,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAC3C,6BAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import { DateTime } from 'luxon';\nimport { logger } from '../../../../logger';\nimport type { ReleaseResult } from '../../../../modules/datasource/types';\nimport { toMs } from '../../../../util/pretty-time';\nimport { AbandonedPackageStats } from '../../../../util/stats';\nimport type { LookupUpdateConfig } from './types';\n\nexport function calculateAbandonment(\n releaseResult: ReleaseResult,\n config: LookupUpdateConfig,\n): ReleaseResult {\n const { lookupName } = releaseResult;\n const { abandonmentThreshold } = config;\n if (!abandonmentThreshold) {\n logger.trace(\n { lookupName },\n 'No abandonmentThreshold defined, skipping abandonment check',\n );\n return releaseResult;\n }\n\n const abandonmentThresholdMs = toMs(abandonmentThreshold);\n if (!abandonmentThresholdMs) {\n logger.trace(\n { lookupName, abandonmentThreshold },\n 'Could not parse abandonmentThreshold to milliseconds, skipping abandonment check',\n );\n return releaseResult;\n }\n\n const { mostRecentTimestamp } = releaseResult;\n if (!mostRecentTimestamp) {\n logger.trace(\n { lookupName },\n 'No mostRecentTimestamp value found, skipping abandonment check',\n );\n return releaseResult;\n }\n const mostRecentTimestampDate = DateTime.fromISO(mostRecentTimestamp);\n\n const abandonmentDate = mostRecentTimestampDate.plus({\n milliseconds: abandonmentThresholdMs,\n });\n const now = DateTime.local();\n const isAbandoned = abandonmentDate < now;\n releaseResult.isAbandoned = isAbandoned;\n\n if (isAbandoned) {\n logger.debug(\n `Package abandonment detected: ${config.packageName} (${config.datasource}) - most recent release: ${mostRecentTimestamp}`,\n );\n }\n\n logger.trace(\n {\n lookupName,\n mostRecentTimestamp,\n abandonmentThreshold,\n abandonmentThresholdMs,\n abandonmentDate: abandonmentDate.toISO(),\n now: now.toISO(),\n isAbandoned,\n },\n 'Calculated abandonment status',\n );\n\n if (isAbandoned) {\n const { datasource, packageName } = config;\n AbandonedPackageStats.write(datasource, packageName, mostRecentTimestamp);\n }\n\n return releaseResult;\n}\n"]}
@@ -3,17 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCurrentVersion = getCurrentVersion;
4
4
  const tslib_1 = require("tslib");
5
5
  const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
6
- const logger_1 = require("../../../../logger");
7
6
  const regex_1 = require("../../../../util/regex");
8
7
  function getCurrentVersion(currentValue, lockedVersion, versioningApi, rangeStrategy, latestVersion, allVersions) {
9
8
  // istanbul ignore if
10
9
  if (!is_1.default.string(currentValue)) {
11
10
  return null;
12
11
  }
13
- logger_1.logger.trace(`currentValue ${currentValue} is range`);
14
- if (allVersions.includes(currentValue)) {
15
- return currentValue;
16
- }
17
12
  let useVersions = allVersions.filter((v) => versioningApi.matches(v, currentValue));
18
13
  if (useVersions.length === 1) {
19
14
  return useVersions[0];
@@ -1 +1 @@
1
- {"version":3,"file":"current.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/current.ts"],"names":[],"mappings":";;AAKA,8CAsDC;;AA3DD,kEAAkC;AAClC,+CAA4C;AAE5C,kDAA+C;AAE/C,SAAgB,iBAAiB,CAC/B,YAAoB,EACpB,aAAqB,EACrB,aAA4B,EAC5B,aAAqB,EACrB,aAAqB,EACrB,WAAqB;IAErB,qBAAqB;IACrB,IAAI,CAAC,YAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,eAAM,CAAC,KAAK,CAAC,gBAAgB,YAAY,WAAW,CAAC,CAAC;IACtD,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACvC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,CACvC,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC;QACxE,WAAW,GAAG,WAAW,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CACtD,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,CACL,aAAa;YACb,aAAa,CAAC,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QAC7B,8CAA8C;QAC9C,OAAO,aAAa,CAAC,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACvE,CAAC;IACD,+CAA+C;IAC/C,MAAM,iBAAiB,GAAG,aAAa,CAAC,oBAAoB,CAC1D,WAAW,EACX,YAAY,CACb,CAAC;IACF,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,OAAO,YAAY,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../../logger';\nimport type { VersioningApi } from '../../../../modules/versioning/types';\nimport { regEx } from '../../../../util/regex';\n\nexport function getCurrentVersion(\n currentValue: string,\n lockedVersion: string,\n versioningApi: VersioningApi,\n rangeStrategy: string,\n latestVersion: string,\n allVersions: string[],\n): string | null {\n // istanbul ignore if\n if (!is.string(currentValue)) {\n return null;\n }\n logger.trace(`currentValue ${currentValue} is range`);\n if (allVersions.includes(currentValue)) {\n return currentValue;\n }\n let useVersions = allVersions.filter((v) =>\n versioningApi.matches(v, currentValue),\n );\n if (useVersions.length === 1) {\n return useVersions[0];\n }\n if (latestVersion && versioningApi.matches(latestVersion, currentValue)) {\n useVersions = useVersions.filter(\n (v) => !versioningApi.isGreaterThan(v, latestVersion),\n );\n }\n if (rangeStrategy === 'pin') {\n return (\n lockedVersion ||\n versioningApi.getSatisfyingVersion(useVersions, currentValue)\n );\n }\n if (rangeStrategy === 'bump') {\n // Use the lowest version in the current range\n return versioningApi.minSatisfyingVersion(useVersions, currentValue);\n }\n // Use the highest version in the current range\n const satisfyingVersion = versioningApi.getSatisfyingVersion(\n useVersions,\n currentValue,\n );\n if (satisfyingVersion) {\n return satisfyingVersion;\n }\n\n if (versioningApi.isVersion(currentValue)) {\n return currentValue;\n }\n if (versioningApi.isSingleVersion(currentValue)) {\n return currentValue.replace(regEx(/=/g), '').trim();\n }\n\n return null;\n}\n"]}
1
+ {"version":3,"file":"current.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/current.ts"],"names":[],"mappings":";;AAIA,8CAkDC;;AAtDD,kEAAkC;AAElC,kDAA+C;AAE/C,SAAgB,iBAAiB,CAC/B,YAAoB,EACpB,aAAqB,EACrB,aAA4B,EAC5B,aAAqB,EACrB,aAAqB,EACrB,WAAqB;IAErB,qBAAqB;IACrB,IAAI,CAAC,YAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,CACvC,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC;QACxE,WAAW,GAAG,WAAW,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CACtD,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,CACL,aAAa;YACb,aAAa,CAAC,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QAC7B,8CAA8C;QAC9C,OAAO,aAAa,CAAC,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACvE,CAAC;IACD,+CAA+C;IAC/C,MAAM,iBAAiB,GAAG,aAAa,CAAC,oBAAoB,CAC1D,WAAW,EACX,YAAY,CACb,CAAC;IACF,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,OAAO,YAAY,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport type { VersioningApi } from '../../../../modules/versioning/types';\nimport { regEx } from '../../../../util/regex';\n\nexport function getCurrentVersion(\n currentValue: string,\n lockedVersion: string,\n versioningApi: VersioningApi,\n rangeStrategy: string,\n latestVersion: string,\n allVersions: string[],\n): string | null {\n // istanbul ignore if\n if (!is.string(currentValue)) {\n return null;\n }\n let useVersions = allVersions.filter((v) =>\n versioningApi.matches(v, currentValue),\n );\n if (useVersions.length === 1) {\n return useVersions[0];\n }\n if (latestVersion && versioningApi.matches(latestVersion, currentValue)) {\n useVersions = useVersions.filter(\n (v) => !versioningApi.isGreaterThan(v, latestVersion),\n );\n }\n if (rangeStrategy === 'pin') {\n return (\n lockedVersion ||\n versioningApi.getSatisfyingVersion(useVersions, currentValue)\n );\n }\n if (rangeStrategy === 'bump') {\n // Use the lowest version in the current range\n return versioningApi.minSatisfyingVersion(useVersions, currentValue);\n }\n // Use the highest version in the current range\n const satisfyingVersion = versioningApi.getSatisfyingVersion(\n useVersions,\n currentValue,\n );\n if (satisfyingVersion) {\n return satisfyingVersion;\n }\n\n if (versioningApi.isVersion(currentValue)) {\n return currentValue;\n }\n if (versioningApi.isSingleVersion(currentValue)) {\n return currentValue.replace(regEx(/=/g), '').trim();\n }\n\n return null;\n}\n"]}
@@ -69,6 +69,16 @@ async function generateUpdate(config, currentValue, versioningApi, rangeStrategy
69
69
  update.updateType =
70
70
  update.updateType ??
71
71
  (0, update_type_1.getUpdateType)(config, versioningApi, currentVersion, newVersion);
72
+ if (versioningApi.isBreaking) {
73
+ // This versioning scheme has breaking awareness
74
+ update.isBreaking = versioningApi.isBreaking(currentVersion, newVersion);
75
+ }
76
+ else {
77
+ // This versioning scheme does not have breaking awareness - assume only major updates are breaking
78
+ // Updates from, or to, unstable releases should be treated as breaking too.
79
+ // But we should not add that as default behavior until we stop treating non-LTS versions as unstable first
80
+ update.isBreaking = update.updateType === 'major';
81
+ }
72
82
  const { datasource, packageName, packageRules } = config;
73
83
  if (packageRules?.some((pr) => is_1.default.nonEmptyArray(pr.matchConfidence))) {
74
84
  update.mergeConfidenceLevel = await (0, merge_confidence_1.getMergeConfidenceLevel)(datasource, packageName, currentVersion, newVersion, update.updateType);
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/generate.ts"],"names":[],"mappings":";;AAWA,wCAiGC;;AA5GD,kEAAkC;AAClC,+CAA4C;AAK5C,gDAAuD;AACvD,wEAA4E;AAE5E,+CAA8C;AAEvC,KAAK,UAAU,cAAc,CAClC,MAA0B,EAC1B,YAAgC,EAChC,aAA4B,EAC5B,aAA4B,EAC5B,cAAsB,EACtB,MAAc,EACd,OAAgB;IAEhB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IACnC,MAAM,MAAM,GAAiB;QAC3B,MAAM;QACN,UAAU;QACV,QAAQ,EAAE,IAAK;KAChB,CAAC;IAEF,qBAAqB;IACrB,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC3C,CAAC;IACD,qBAAqB;IACrB,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC3C,CAAC;IACD,qBAAqB;IACrB,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,CAAC;IACD,qBAAqB;IACrB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACnD,MAAM,CAAC,mBAAmB,GAAG,IAAA,qBAAc,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxE,CAAC;IACD,qBAAqB;IACrB,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC;;;;WAIG;QACH,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC3C,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC;gBAC1C,YAAY;gBACZ,aAAa;gBACb,cAAc;gBACd,UAAU;aACX,CAAE,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,0BAA0B,CAAC,CAAC;YACxC,eAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,EAChE,mBAAmB,CACpB,CAAC;YACF,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAC;QACjC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAC;IACjC,CAAC;IACD,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC;IACtD,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC;IACtD,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC;IACtD,qBAAqB;IACrB,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,8BAA8B,CAAC,CAAC;QACzD,MAAM,CAAC,QAAQ,GAAG,YAAa,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,CAAC,UAAU;QACf,MAAM,CAAC,UAAU;YACjB,IAAA,2BAAa,EAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IACnE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACzD,IAAI,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAE,CAAC,aAAa,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,CAAC,oBAAoB,GAAG,MAAM,IAAA,0CAAuB,EACzD,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,MAAM,CAAC,UAAU,CAClB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,IAAI,aAAa,KAAK,iBAAiB,IAAI,YAAY,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC5E,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IACD,IACE,aAAa,KAAK,MAAM;QACxB,cAAc;QACd,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,YAAa,CAAC,EAChD,CAAC;QACD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../../logger';\nimport type { Release } from '../../../../modules/datasource';\nimport type { LookupUpdate } from '../../../../modules/manager/types';\nimport type { VersioningApi } from '../../../../modules/versioning';\nimport type { RangeStrategy } from '../../../../types';\nimport { getElapsedDays } from '../../../../util/date';\nimport { getMergeConfidenceLevel } from '../../../../util/merge-confidence';\nimport type { LookupUpdateConfig } from './types';\nimport { getUpdateType } from './update-type';\n\nexport async function generateUpdate(\n config: LookupUpdateConfig,\n currentValue: string | undefined,\n versioningApi: VersioningApi,\n rangeStrategy: RangeStrategy,\n currentVersion: string,\n bucket: string,\n release: Release,\n): Promise<LookupUpdate> {\n const newVersion = release.version;\n const update: LookupUpdate = {\n bucket,\n newVersion,\n newValue: null!,\n };\n\n // istanbul ignore if\n if (release.checksumUrl !== undefined) {\n update.checksumUrl = release.checksumUrl;\n }\n // istanbul ignore if\n if (release.downloadUrl !== undefined) {\n update.downloadUrl = release.downloadUrl;\n }\n // istanbul ignore if\n if (release.newDigest !== undefined) {\n update.newDigest = release.newDigest;\n }\n // istanbul ignore if\n if (release.releaseTimestamp) {\n update.releaseTimestamp = release.releaseTimestamp;\n update.newVersionAgeInDays = getElapsedDays(release.releaseTimestamp);\n }\n // istanbul ignore if\n if (release.registryUrl !== undefined) {\n /**\n * This means:\n * - registry strategy is set to merge\n * - releases were fetched from multiple registry urls\n */\n update.registryUrl = release.registryUrl;\n }\n\n if (currentValue) {\n try {\n update.newValue = versioningApi.getNewValue({\n currentValue,\n rangeStrategy,\n currentVersion,\n newVersion,\n })!;\n } catch (err) /* istanbul ignore next */ {\n logger.warn(\n { err, currentValue, rangeStrategy, currentVersion, newVersion },\n 'getNewValue error',\n );\n update.newValue = currentValue;\n }\n } else {\n update.newValue = currentValue;\n }\n update.newMajor = versioningApi.getMajor(newVersion)!;\n update.newMinor = versioningApi.getMinor(newVersion)!;\n update.newPatch = versioningApi.getPatch(newVersion)!;\n // istanbul ignore if\n if (!update.updateType && !currentVersion) {\n logger.debug({ update }, 'Update has no currentVersion');\n update.newValue = currentValue!;\n return update;\n }\n update.updateType =\n update.updateType ??\n getUpdateType(config, versioningApi, currentVersion, newVersion);\n const { datasource, packageName, packageRules } = config;\n if (packageRules?.some((pr) => is.nonEmptyArray(pr.matchConfidence))) {\n update.mergeConfidenceLevel = await getMergeConfidenceLevel(\n datasource,\n packageName,\n currentVersion,\n newVersion,\n update.updateType,\n );\n }\n if (!versioningApi.isVersion(update.newValue)) {\n update.isRange = true;\n }\n if (rangeStrategy === 'update-lockfile' && currentValue === update.newValue) {\n update.isLockfileUpdate = true;\n }\n if (\n rangeStrategy === 'bump' &&\n // TODO #22198\n versioningApi.matches(newVersion, currentValue!)\n ) {\n update.isBump = true;\n }\n return update;\n}\n"]}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/process/lookup/generate.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../../logger';\nimport type { Release } from '../../../../modules/datasource';\nimport type { LookupUpdate } from '../../../../modules/manager/types';\nimport type { VersioningApi } from '../../../../modules/versioning';\nimport type { RangeStrategy } from '../../../../types';\nimport { getElapsedDays } from '../../../../util/date';\nimport { getMergeConfidenceLevel } from '../../../../util/merge-confidence';\nimport type { LookupUpdateConfig } from './types';\nimport { getUpdateType } from './update-type';\n\nexport async function generateUpdate(\n config: LookupUpdateConfig,\n currentValue: string | undefined,\n versioningApi: VersioningApi,\n rangeStrategy: RangeStrategy,\n currentVersion: string,\n bucket: string,\n release: Release,\n): Promise<LookupUpdate> {\n const newVersion = release.version;\n const update: LookupUpdate = {\n bucket,\n newVersion,\n newValue: null!,\n };\n\n // istanbul ignore if\n if (release.checksumUrl !== undefined) {\n update.checksumUrl = release.checksumUrl;\n }\n // istanbul ignore if\n if (release.downloadUrl !== undefined) {\n update.downloadUrl = release.downloadUrl;\n }\n // istanbul ignore if\n if (release.newDigest !== undefined) {\n update.newDigest = release.newDigest;\n }\n // istanbul ignore if\n if (release.releaseTimestamp) {\n update.releaseTimestamp = release.releaseTimestamp;\n update.newVersionAgeInDays = getElapsedDays(release.releaseTimestamp);\n }\n // istanbul ignore if\n if (release.registryUrl !== undefined) {\n /**\n * This means:\n * - registry strategy is set to merge\n * - releases were fetched from multiple registry urls\n */\n update.registryUrl = release.registryUrl;\n }\n\n if (currentValue) {\n try {\n update.newValue = versioningApi.getNewValue({\n currentValue,\n rangeStrategy,\n currentVersion,\n newVersion,\n })!;\n } catch (err) /* istanbul ignore next */ {\n logger.warn(\n { err, currentValue, rangeStrategy, currentVersion, newVersion },\n 'getNewValue error',\n );\n update.newValue = currentValue;\n }\n } else {\n update.newValue = currentValue;\n }\n update.newMajor = versioningApi.getMajor(newVersion)!;\n update.newMinor = versioningApi.getMinor(newVersion)!;\n update.newPatch = versioningApi.getPatch(newVersion)!;\n // istanbul ignore if\n if (!update.updateType && !currentVersion) {\n logger.debug({ update }, 'Update has no currentVersion');\n update.newValue = currentValue!;\n return update;\n }\n update.updateType =\n update.updateType ??\n getUpdateType(config, versioningApi, currentVersion, newVersion);\n if (versioningApi.isBreaking) {\n // This versioning scheme has breaking awareness\n update.isBreaking = versioningApi.isBreaking(currentVersion, newVersion);\n } else {\n // This versioning scheme does not have breaking awareness - assume only major updates are breaking\n // Updates from, or to, unstable releases should be treated as breaking too.\n // But we should not add that as default behavior until we stop treating non-LTS versions as unstable first\n update.isBreaking = update.updateType === 'major';\n }\n const { datasource, packageName, packageRules } = config;\n if (packageRules?.some((pr) => is.nonEmptyArray(pr.matchConfidence))) {\n update.mergeConfidenceLevel = await getMergeConfidenceLevel(\n datasource,\n packageName,\n currentVersion,\n newVersion,\n update.updateType,\n );\n }\n if (!versioningApi.isVersion(update.newValue)) {\n update.isRange = true;\n }\n if (rangeStrategy === 'update-lockfile' && currentValue === update.newValue) {\n update.isLockfileUpdate = true;\n }\n if (\n rangeStrategy === 'bump' &&\n // TODO #22198\n versioningApi.matches(newVersion, currentValue!)\n ) {\n update.isBump = true;\n }\n return update;\n}\n"]}
@@ -18,6 +18,7 @@ const date_1 = require("../../../../util/date");
18
18
  const package_rules_1 = require("../../../../util/package-rules");
19
19
  const regex_1 = require("../../../../util/regex");
20
20
  const result_1 = require("../../../../util/result");
21
+ const abandonment_1 = require("./abandonment");
21
22
  const bucket_1 = require("./bucket");
22
23
  const current_1 = require("./current");
23
24
  const filter_1 = require("./filter");
@@ -100,6 +101,7 @@ async function lookupUpdates(inconfig) {
100
101
  }
101
102
  const { val: releaseResult, err: lookupError } = await (0, datasource_1.getRawPkgReleases)(config)
102
103
  .transform((res) => (0, timestamps_1.calculateLatestReleaseBump)(versioningApi, res))
104
+ .transform((res) => (0, abandonment_1.calculateAbandonment)(res, config))
103
105
  .transform((res) => (0, datasource_1.applyDatasourceFilters)(res, config))
104
106
  .unwrap();
105
107
  if (lookupError instanceof Error) {
@@ -133,6 +135,8 @@ async function lookupUpdates(inconfig) {
133
135
  'dependencyUrl',
134
136
  'lookupName',
135
137
  'packageScope',
138
+ 'mostRecentTimestamp',
139
+ 'isAbandoned',
136
140
  ]);
137
141
  const latestVersion = dependency.tags?.latest;
138
142
  // Filter out any results from datasource that don't comply with our versioning
@@ -203,6 +207,9 @@ async function lookupUpdates(inconfig) {
203
207
  if (rangeStrategy === 'update-lockfile') {
204
208
  currentVersion = config.lockedVersion;
205
209
  }
210
+ else if (allVersions.find((v) => v.version === compareValue)) {
211
+ currentVersion = compareValue;
212
+ }
206
213
  // TODO #22198
207
214
  currentVersion ??=
208
215
  (0, current_1.getCurrentVersion)(compareValue, config.lockedVersion, versioningApi, rangeStrategy, latestVersion, nonDeprecatedVersions) ??