Commit Graph

40 Commits

Author SHA1 Message Date
Jamie Tanna f2896deaaf fix(merge-confidence): don't require auth in platform=local (#45769)
* fix(merge-confidence): don't require auth in `platform=local`

When dry-running Renovate against a repository to validate it[0], if a
repository is using `matchConfidence`, the whole Renovate run is aborted
due to missing API credentials.

This can be frustrating, and the workaround available is to temporarily
remove all package rules use `matchConfidence`, which isn't the best
experience.

Instead, we should follow the existing pattern to return `null` when
loading a Package Rule with `matchConfidence`, as well as DEBUG logging
to inform the user why this is happening.

[0]: https://www.jvt.me/posts/2026/03/08/renovate-test-config/

* fixup! fix(merge-confidence): don't validate auth in a

With debugging from Claude to work out how to get the test to pass.

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>

---------

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-09 13:54:13 +00:00
Sebastian Poxhofer 05e1271376 test: use expect().resolves instead of awaiting inside expect (#45672)
Enables the vitest/prefer-expect-resolves oxlint rule and applies its
autofix across the spec suite.
2026-09-04 10:40:46 +00:00
Eyal Zekaria 0e90c69f91 perf(package-rules): avoid re-cloning invariant packageRules array on every rule match (#44781)
perf(package-rules): avoid re-cloning packageRules array on every rule merge

applyPackageRules() merges each matching rule via mergeChildConfig(),
which deep-clones the entire accumulated config — including the
invariant packageRules array itself. On repos with many dependency
instances and large rule arrays (e.g. vulnerabilityAlerts force-rules
embedding advisory texts), this cloning dominates the whole run
(observed at ~66% of total CPU in a production profile).

Exclude packageRules from the working config while rules are applied
and restore it afterwards, preserving the previous merge semantics for
rules that themselves carry nested packageRules, and for null/empty/
absent inputs.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-03 07:41:06 +00:00
Alberto Cortina Eduarte 61e4c9c2d1 fix(presets/monorepo): update react and react-native source URLs to react/react org (#44780)
fix(data): update react and react-native source URLs to react/react org

The react and react-native repositories moved from the facebook org to
the react org on GitHub

See https://github.com/renovatebot/renovate/discussions/44772
2026-07-22 10:14:08 +00:00
Jamie Tanna 89be048657 refactor: use GlobalConfig for productLinks (#44098)
As a follow-up to e1e5c398e0, we can make
sure that we remove references to hardcoded docs site URLs, by wiring in
the `GlobalConfig.get(...)` call.

To do this, we need to make sure that `productLinks` exists to be called
by `GlobalConfig.get`.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-06-19 10:34:03 +00:00
Felipe Santos 392105b7c6 chore(oxlint): enable unicorn plugin and prefer-node-protocol (#43283)
chore(oxlint): enable unicorn plugin and prefer-node-protocol
2026-05-29 06:55:58 +00:00
Mike Ryan 525f80d6df fix(package-rules): respect each dep update's fetchChangeLogs value (#42671)
* fix(package-rules): respect each dep update's fetchChangeLogs value

Ensures that changelog fetching respects each dep update's specific `fetchChangeLogs` value.

Given the following renovate configuration: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/blob/fb9e070d0f9a4d6fc742c4a22edee2c9b055fece/.github/renovate.json5#L42-L61

My expectation is that Renovate would never fetch changelogs for `lodash`. However, when grouped
together with `chalk` and `tar` under `group of unrelated packages`, we find that
renovate fetches changelogs all packages, including `lodash`.

Before this change (`lodash` logs fetched):
- Run: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/actions/runs/24480887343/job/71544876893
- (wrong) lodash, tar, and chalk all have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/9

After this change, the PR created by renovate only contains changelogs for `chalk` and `tar`, but not `lodash`:

- Run: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/actions/runs/24481738609/job/71547632550
- (expected) lodash does not have changelogs, but tar and chalk have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/10

----

We can further explore the effectiveness of the change with a more elaborate configuration, where the top-level has `fetchChangeLogs: off`: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/blob/0ea69c18b9171e38c56440c762faa68109d3d0d5/.github/renovate.json5#L41-L95

Before the change:

- Run: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/actions/runs/24482213234/job/71549162174
- (wrong) lodash, tar, and chalk all have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/15
- (expected) typescript (inherited `off`) does not have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/17
- (expected) grunt (overridden `pr`) has changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/13

After the change::

- Run: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/actions/runs/24482561172/job/71550255278
- (expected) lodash does not have changelogs, but tar and chalk have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/22
- (expected) typescript (inherited `off`) does not have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/24
- (expected) grunt (overridden `pr`) has changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/20

Portions of this PR previously appeared in #42368

* pre feedback: just use fetchChangeLogs from upgrade

* revert documentation.spec.ts changes

They've already been integrated with #42846
2026-04-27 15:28:15 +00:00
Jamie Tanna ae222506ed fix(package-rules): correctly merge force.enabled (#42679)
* fix(package-rules): correctly merge `force.enabled`

As noted in #42666, after changes in
f8b4477335, we're skipping vulnerability
alert PRs when using the `security:only-security-updates` preset.

This happens because the `enabled=false` that exists on the all
dependencies are not correctly merged into the `force` config in the
`vulnerabilityAlert` update.

To fix this, we need to take `force.enabled` into account when merging
config options.

To slightly improve the type checking, we can also make sure that
`removeMatchers` knows that `force` is field we want typed, too.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>

* chore(package-rules): simplify condition

As we don't actually need to take into account whether the option is
currently enabled, as we can make sure the `skipReason` and `skipStage`
are always deleted if we're enabling the update.

---------

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-16 09:13:31 +00:00
Sebastian Poxhofer 7be38227f0 feat(package-rules): add matchRegistryUrls option (#41966)
* feat(package-rules): add matchRegistryUrls option

* chore: add patternMatch option

* Update docs/usage/configuration-options.md

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>

---------

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
2026-03-19 11:42:27 +00:00
Timo Hankamer f593ffca20 feat(package-rules): support template compilation for sourceUrl (#41932)
Add template compilation support for sourceUrl in package rules,
allowing users to dynamically construct source URLs using template
syntax. This enables use cases like OpenTofu providers where the
source URL needs to be constructed from the package name.
2026-03-19 10:16:52 +00:00
Jamie Tanna e0ce9dabd6 docs: prefix child options with their parent (#41828)
This also makes sure that our URL fragments should be more consistent
over the years, as duplicate names (across parent and child options)
cannot clash.

This also corrects links from the code to include the new fragment.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-03-12 10:56:52 +00:00
Sergei Zharinov 9d857c1f68 refactor(lint): Organize imports with biome (#40966) 2026-02-06 13:40:01 +00:00
Sergei Zharinov 930cf6633c refactor: Rewrite imports with .ts extensions (#40700)
fix: Additional vi.mock path corrections and prettier formatting
2026-01-26 22:48:17 +00:00
Michael Kriese c641239c19 fix: use stricter types for renovate config (#39594)
* fix: use stricter types for renovate config

* fix: revert changes

* Apply suggestions from code review
2025-11-28 13:16:27 +00:00
Michael Kriese 19c115c813 test: cleanup (#34785) 2025-03-13 17:52:09 +00:00
Michael Kriese 997c23502e test: migrate to vitest (#34475)
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
2025-02-26 09:35:54 +00:00
Rhys Arkins a70a6a376d feat(packageRules): overrideDatasource, overrideDepName, overridePackageName (#31925)
Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2024-10-12 14:22:29 +00:00
Rhys Arkins b6cff319d5 refactor(packageRules): allow async matchers (#31828) 2024-10-07 14:04:06 +00:00
Rhys Arkins 879f7cc212 feat(packageRules): migrate matchers and excludes (#28602)
Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-07-25 15:28:16 +02:00
Rhys Arkins 69dab293f5 feat(packageRules)!: support regex or glob matching for all (#28591)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-07-25 15:28:16 +02:00
Rhys Arkins 3d78ae761f feat(package-rules)!: remove depName fallback (#28548)
Removes fallback to checking depName for all matchPackageX and excludePackageX rules.

BREAKING CHANGE: matchPackageNames and related functions no longer fall back to checking depName. Rewrite packageRules to use matchDepNames instead.
2024-07-25 15:28:16 +02:00
Rhys Arkins b6b85eb69e feat(package-rules): set skipStage (#30264) 2024-07-21 10:29:13 +00:00
Rhys Arkins bf22e13e90 feat(packageRules): set skipReason=package-rules (#28952) 2024-05-09 10:04:58 +00:00
Yusuke Iinuma 7b66b9f3c2 feat(package-rules): add DepNamePrefix matcher (#28542)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2024-04-20 15:05:27 +00:00
RahulGautamSingh ba38763b91 refactor(package-rules): delete all matchers from config (#26880)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-02-18 15:53:51 +00:00
Sergei Zharinov b69416ce17 refactor(prettier): Force trailing commas (#25631) 2023-11-07 15:50:29 +00:00
Philip bece5a1c50 refactor(errors): massaging validation messages before we assign it (#25452)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2023-10-31 13:46:55 +00:00
Gabriel-Ladzaretti bbe969784c fix(packageRules): evaluate confidence matcher first (#23327) 2023-07-12 17:41:47 +00:00
Sebastian Poxhofer 19259a0383 feat!: categories (#16534)
Closes #13953

Co-authored-by: Rhys Arkins <rhys@arkins.net>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>

BREAKING CHANGE: languages are now called categories instead
2023-07-04 19:21:52 +02:00
Rhys Arkins e4dead2e35 feat(package-rules)!: match packageName for matchPackageNames (#22703)
Closes #20926

BREAKING CHANGE: matchPackageNames now matches both depName (existing) and packageName (new)
2023-07-04 19:21:52 +02:00
Rhys Arkins e3d5f7df92 feat!: merge matchPaths and matchFiles into matchFileNames (#22406)
Closes #22395

BREAKING CHANGE: matchPaths and matchFiles are now combined into matchFileNames, supporting exact match and glob-only
2023-07-04 19:21:52 +02:00
Rhys Arkins 033d776ab0 feat(package-rules)!: remove fuzzy matchPaths matching (#22394)
BREAKING CHANGE: matchPaths will no longer use “any string match” and instead must be a glob pattern
2023-07-04 19:21:52 +02:00
Gabriel-Ladzaretti d88d63b4f9 feat(config-error): raise a warning issue for misconfigured matchConfidence (#22296)
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
2023-05-18 17:02:13 +00:00
Gabriel-Ladzaretti 1615d26226 feat(packageRules): add merge confidence matcher (#21049)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2023-03-21 18:37:38 +00:00
Sebastian Poxhofer 8e2df85268 feat(versioning)!: default to semver-coerced instead of semver (#20573)
BREAKING CHANGE: default versioning is now `semver-coerced`, instead of `semver`.
2023-03-10 09:34:41 +01:00
Gabriel-Ladzaretti 2de4260b15 feat(packageRules): add experimental env var for matching against package names (#19784) 2023-01-12 07:29:48 +00:00
Rhys Arkins bf38439ec2 fix(versioning/hashicorp): check valid before matches (#19742) 2023-01-09 16:23:53 +01:00
Gabriel-Ladzaretti 2bd9171ba3 feat(packageRules): add depName matchers (#19565) 2022-12-26 18:30:44 +00:00
RahulGautamSingh 2a07e91be6 refactor: convert ProgrammingLanguage to union type (#18748)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2022-11-05 08:49:57 +00:00
Sebastian Poxhofer dda2ebce92 refactor(package-rules): move to class based implementation (#16865)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2022-08-29 19:40:03 +00:00