Commit Graph

298 Commits

Author SHA1 Message Date
Jamie Tanna 95a7cab7f3 fix(versioning/github-actions): allow v1 to be treated as a version (#42762)
* fix(versioning/github-actions): allow `v1` to be treated as a version

As a similar change to 2ab41fa709, we also
need to allow a major-only version to be treated as a valid version.

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

* chore: remove accidental JSDoc

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>

---------

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2026-04-20 10:21:18 +00:00
Jamie Tanna 673fb8e7a9 fix(versioning/github-actions): allow v1.2 to be treated as a version (#42761)
When using `docker` versioning, we correctly treat a `v1.2` -> `v1.3`
version update as valid.

However, when using the previous implementation of `github-actions`'
versioning, we would silently ignore them, filtering them in
`filterValidVersions`.

This leads to cases where a `v1.2` would be upgraded to `v1.3.0`, which
wasn't correct.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-20 09:21:32 +00:00
Jamie Tanna d508716886 feat(versioning): add a github-actions versioning (#42712)
GitHub Actions' versioning somewhat mirrors the SemVer-style versioning,
but doesn't quite.

This is in the case that it's common to use (mutable) tags like `v7` or
`v4.2`, as well as full SemVer style` `v1.2.3` and `v1.3.4-rc2`, doesn't
quite match it.

In addition, with GitHub's recent move to introduce Immutable Tags,
these require new releases to be a full SemVer `major.minor.patch` tag.

However, we don't currently have a way to take users from `@v7` to
`@v8.1.1`, in the case they're using Immutable Tags.

Given this isn't currently straightforward with any of our existing
SemVer-y versioning modules like `semver-coerced` or `semver-partial`,
we should instead introduce a specific Versioning module.

This mostly covers the functionality that `semver-partial` has, but
needs to take advantage of the `allVersions` parameter to find the
"shortest" possible tag for a given resolved Semantic Version.

This was previously attempted in previous changes, but reverted in
db64cc6de0 due to additional complexity.

We won't turn it on by default right now, but as a future change.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-17 19:07:45 +00:00
Jamie Tanna 171d17734a chore(versioning): allow providing known versions to module (#42719)
As part of future changes, we'll introduce a new Versioning module for
GitHub Actions, which requires knowing if the version it's proposing
actually exists.

This is a more useful concept for Versioning modules to be able to take
advantage of, so we can expose this as an optional capability that
Versioning modules can use.
2026-04-17 15:00:06 +00:00
ldt-fweichert 624d95d1c0 feat(gradle): add !!-notation support for strictly and prefer constraints (#42135)
* gradle: add strictly / prefer support

* fix tests

* improve code coverage

* apply suggestions from @Churro

* Update lib/modules/versioning/gradle/compare.ts

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

* Update lib/modules/versioning/gradle/index.ts

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

* fixed pin strategy

* ignore pin strategy

---------

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
2026-04-07 09:34:35 +00:00
Ben Bodenmiller 165a6bac78 docs(versioning/semver-coerced): coercion specific link (#40708)
Coercion specific link
2026-03-27 10:37:04 +00:00
Alexander Gil Casas b7294ce5a2 feat(versioning/debian): port Ubuntu date versioning support (#40499)
* feat: port Ubuntu versioning support to Debian container images

Resolves #27862.

Signed-off-by: Alexander Gil <pando855@gmail.com>

* refactor: Remove dead code in debian versioning

Signed-off-by: Alexander Gil <pando855@gmail.com>

* refactor: Rename groups to match

* perf: optimize isStable method by reusing getVersionByCodename result

* fix(debian): specify radix in parseInt for dated container image version

---------

Signed-off-by: Alexander Gil <pando855@gmail.com>
Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
2026-03-19 16:05:04 +00:00
Björn Kautler 6d0eb5b9bb fix(maven): do not loose the v-prefix of versions (#38895)
* fix(maven): determing properly closed ranges

A Maven range like [1,2) contains various (usually pre-release) versions of the 2.x line.
By Maven definition the smallest possible 2.x version is 2-alpha, so a properly closed range that only allows 1.x versions
would be [1,2-alpha). This is now detected and properly advanced.

* fix(maven): normalize both sides of version comparison

Without this a leftValue of v3 is incremented to 4 and then compared to v4.

* fix(maven): do not loose the v-prefix of versions in range handling

If versions of a project always start with a v prefix, this was lost when Maven ranges were involved.
The coerce and increment methods stripped the v away and it was never added back in.

* Properly fix underlying problem and make PR standalone

* Add missing coverage

* Remove unused callback parameter
2026-03-19 10:07:48 +00:00
Robert Huitl d530d515bc fix(conan): "TypeError: Cannot read properties of undefined" with conan wildcard range [*] (#41959)
* test(conan): add failing tests for wildcard-equivalent ranges in getNewValue

Add test cases for [*], [>=*], and [x] ranges with all three
strategies (widen, replace, bump). [>=*] and [x] currently crash
with TypeError in getNewValue.

* fix(conan): handle wildcard-equivalent ranges in getNewValue

Ranges like [*], [>=*], [x], and [] are all semantically "match
everything". parseRange() returns an empty array for these, causing
getNewValue to crash with TypeError when accessing properties on
undefined. Use semver.validRange() to detect all wildcard-equivalent
forms instead of checking only for '*'.
2026-03-17 15:35:27 +00:00
Sergei Zharinov 41bfb8678e refactor(lint): use oxlint for type-aware rules (#41739)
* feat: enable oxlint type-aware linting

Move type-aware typescript-eslint rules from ESLint to oxlint,
leveraging oxlint-tsgolint for type information. This removes
the need for ESLint's projectService and parserOptions.

- Add `options.typeAware: true` to .oxlintrc.json with all
  type-aware rules (recommendedTypeChecked + stylisticTypeChecked)
- Switch ESLint to non-type-aware configs (recommended, stylistic)
- Remove projectService/parserOptions from ESLint config
- Drop @typescript-eslint/naming-convention (no oxlint equivalent)
- Update oxlint/eslint-plugin-oxlint to 1.51.0
- Add oxlint-tsgolint dependency
- Convert eslint-disable comments to oxlint-disable for type-aware rules
- Fix prefer-optional-chain violations newly caught by oxlint

* fix: revert unnecessary code changes, suppress with oxlint-disable instead

* fix: suppress remaining prefer-optional-chain violations

* fix: suppress last prefer-optional-chain violation

* fix: remove redundant --type-aware CLI flag, use config instead
2026-03-09 12:51:12 +00:00
Punsoong Khut 1a3851dc99 feat(versioning): add APK versioning support (#40248)
* feat(versioning): add APK versioning support

* remove unreachable code

* improve test for partial coverage

* use capture groups for regex

* ignore patial coverage errors

* Update lib/modules/versioning/apk/index.ts

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>

* Update lib/modules/versioning/apk/index.ts

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>

* move regexes to module level for performance

* fix import

* fix imports 2

* address comments

* Update lib/modules/versioning/apk/readme.md

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>

* fix oxlint error

---------

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
2026-03-03 13:41:47 +00:00
Sergei Zharinov b57fc5dd13 feat: enable vitest plugin in oxlint (#41579)
* chore: Add vitest plugin to oxlint

* Remove unused line in versioning spec

* Remove coverage threshold check job

The coverage threshold check has been removed from the build workflow. This job was redundant as
coverage is already handled by the codecov job.

* Refine versioning API schema with existence check

* Revert "Remove coverage threshold check job"

This reverts commit f2c9dd872b.

* Remove vitest ESLint plugin

The vitest ESLint plugin and its configurations have been removed. ESLint will no longer enforce
vitest-specific rules.

* Remove unused vitest eslint plugin

The `@vitest/eslint-plugin` is no longer used and can be safely removed.
2026-03-02 13:02:25 +00:00
Florian Arens a79cddc4b9 fix(versioning/hex): handle Elixir == pin prefix in isSingleVersion (#41565)
* fix(versioning/hex): handle Elixir == pin prefix in isSingleVersion

Hex versioning inherited npm's isSingleVersion which only strips a single
= prefix. Elixir uses == for pinning, so "== 1.7.16" was not recognized
as a pinned version, causing duplicate pin PRs on every update.

Add isSingleVersion override that handles the double == prefix and add
getPinnedValue to emit the correct == prefix when pinning.

* fix: use non-null assertion instead of optional chaining in test
2026-03-01 14:42:39 +00:00
renovate[bot] c2aa761c1e chore(deps): update linters (main) (#41417)
* chore(deps): update linters

| datasource | package              | from   | to     |
| ---------- | -------------------- | ------ | ------ |
| npm        | @eslint/js           | 9.39.2 | 9.39.3 |
| npm        | eslint               | 9.39.2 | 9.39.3 |
| npm        | eslint-plugin-oxlint | 1.46.0 | 1.49.0 |
| npm        | oxlint               | 1.47.0 | 1.49.0 |
| npm        | typescript-eslint    | 8.55.0 | 8.56.0 |

* chore(deps): update linters

| datasource | package              | from   | to     |
| ---------- | -------------------- | ------ | ------ |
| npm        | @eslint/js           | 9.39.2 | 9.39.3 |
| npm        | eslint               | 9.39.2 | 9.39.3 |
| npm        | eslint-plugin-oxlint | 1.46.0 | 1.49.0 |
| npm        | oxlint               | 1.47.0 | 1.49.0 |
| npm        | typescript-eslint    | 8.55.0 | 8.56.0 |

* Radix rule has been deprecated

* fixup! Radix rule has been deprecated

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: secustor <sebastian@poxhofer.at>
2026-02-28 11:23:25 +00:00
Hajime-san f990e7181e feat(versioning): add Deno versioning support (#40968)
* feat(versioning): add deno versioning

* chore(versioning): update deno versioning paths

* fix versioning

* c8 versiong

* review

* review

* Apply suggestions from code review

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>

* review

---------

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2026-02-24 22:09:00 +00:00
renovate[bot] 645a28c77c build(deps): update dependency prettier to v3.8.1 (main) (#39779)
* build(deps): update dependency prettier to v3.8.1

| datasource | package  | from  | to    |
| ---------- | -------- | ----- | ----- |
| npm        | prettier | 3.6.2 | 3.8.1 |

* fixup prettier

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: secustor <sebastian@poxhofer.at>
2026-02-18 08:41:34 +00:00
renovate[bot] 4a2578d18d build(deps): update dependency zod to v4 (main) (#41225)
* build(deps): update dependency zod to v4

| datasource | package | from    | to    |
| ---------- | ------- | ------- | ----- |
| npm        | zod     | 3.25.76 | 4.3.6 |

* fix: zod migration

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-02-18 07:37:50 +00:00
Florian Arens c997287e68 feat(versioning): add elm versioning support (#40999)
* feat(versioning): add elm versioning support

* fix(versioning/elm): remove unnecessary defensive check in nextMajor

* fix(versioning/elm): use named capture groups in range regex

* fix(versioning/elm): use semver gte instead of gt || eq

* Update lib/modules/versioning/elm/index.ts

---------

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2026-02-17 10:40:36 +00:00
renovate[bot] 498f8f30d1 build(deps): update dependency semver to v7.7.3 (main) (#38624)
* build(deps): update dependency semver to v7.7.3

| datasource | package | from  | to    |
| ---------- | ------- | ----- | ----- |
| npm        | semver  | 7.7.2 | 7.7.3 |

* fix(versioning/composer): strip unsupported `+` prefix (#41082)

strip unsupported + prefix

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
2026-02-11 09:44:28 +00:00
Felipe Santos f5f32bdcb4 fix(pep440): handle v-prefixed versions gracefully (#40989)
* fix(pep440): handle v-prefixed versions gracefully

* Retain v-prefix

* Fix test coverage and use named group
2026-02-10 22:45:12 +00:00
wyfrel 0f50d67439 fix(versioning/redhat): allow optional .GA inside version (#41059) 2026-02-10 13:24:11 +00:00
Sergei Zharinov b02897fab1 refactor(lint): Fix lint violations (#40965)
* refactor(lint): Fix lint violations

* Update lib/modules/versioning/versioning-metadata.spec.ts

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>

---------

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-02-06 15:34:33 +00:00
Sergei Zharinov 9d857c1f68 refactor(lint): Organize imports with biome (#40966) 2026-02-06 13:40:01 +00:00
Sergei Zharinov 2b0e80b884 feat!: Switch to ESM modules (#40756) 2026-01-29 14:21:41 +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
Tobias Bieniek b637846579 feat(versioning): Add rust-release-channel versioning scheme (#39859)
* feat(rust-version): Implement `rust-release-channel` versioning scheme

* refactor(rust-version): Adjust `isCompatible()` to return `false` for differing `host` values

* refactor(rust-version): Simplify comparisons in `sortParsed()` fn

* refactor(rust-version): Extract `sortParsed()` fn to `util.ts`
2026-01-23 12:58:19 +00:00
renovate[bot] acacad57c6 chore(deps): update linters (main) (#40277)
* chore(deps): update linters

| datasource | package              | from   | to     |
| ---------- | -------------------- | ------ | ------ |
| npm        | eslint-plugin-oxlint | 1.36.0 | 1.38.0 |
| npm        | typescript-eslint    | 8.50.1 | 8.52.0 |

* chore: enable oxlint gha format

* chore: fix lint

* chore: fix lint

* chore: fix lint

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-01-14 15:32:48 +00:00
Sergei Zharinov 22721edd65 feat: Add exact versioning (#40098)
* feat: Add `dummy` versioning

* refactor: Rename `dummy` versioning to `exact`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(versioning/exact): isCompatible equality

* Update lib/modules/versioning/exact/index.spec.ts

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
2025-12-30 11:55:09 +00:00
renovate[bot] 225e2b73eb chore(deps): update dependency @vitest/eslint-plugin to v1.5.2 (main) (#39675)
* chore(deps): update dependency @vitest/eslint-plugin to v1.5.2

| datasource | package               | from  | to    |
| ---------- | --------------------- | ----- | ----- |
| npm        | @vitest/eslint-plugin | 1.4.4 | 1.5.2 |

* chore: fixup

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2025-12-15 10:26:19 +00:00
RahulGautamSingh 76f911041a refactor: use named exports (#39196)
* use named exports

* fix test

* add missing imnport

* fix prettier
2025-11-10 12:00:35 +00:00
renovate[bot] b34bbb5b2a chore(deps): update linters (main) (#38897)
* chore(deps): update linters

| datasource | package           | from   | to     |
| ---------- | ----------------- | ------ | ------ |
| npm        | @eslint/js        | 9.37.0 | 9.39.0 |
| npm        | eslint            | 9.37.0 | 9.39.0 |
| npm        | typescript-eslint | 8.45.0 | 8.46.2 |

* refactor: fix lint issues (#39183)

* chore(deps): update linters

| datasource | package           | from   | to     |
| ---------- | ----------------- | ------ | ------ |
| npm        | @eslint/js        | 9.37.0 | 9.38.0 |
| npm        | eslint            | 9.37.0 | 9.38.0 |
| npm        | typescript-eslint | 8.45.0 | 8.46.2 |

* chore(deps): update linters

| datasource | package           | from   | to     |
| ---------- | ----------------- | ------ | ------ |
| npm        | @eslint/js        | 9.37.0 | 9.39.0 |
| npm        | eslint            | 9.37.0 | 9.39.0 |
| npm        | typescript-eslint | 8.45.0 | 8.46.2 |

* refactor

* revert unwanted changes

* version sync

* version sync

* sync versions

* sync versions

* Apply suggestion from @RahulGautamSingh

* use named exports

* fix new lint issues

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
2025-11-10 10:33:01 +00:00
Rhys Arkins 0d5d7a8669 refactor!: remove rangeStrategy=pin from versioning modules (#36261)
Refactors `getNewValue` logic to replace it with an optional
`getPinnedValue()` where rangeStrategy=pin. This way each versioning
module doesn't need to add and test extensive "pin" logic.

This should not be breaking, but out of an abundance of caution, we'll
mark it as such.
2025-11-06 08:07:40 +00:00
renovate[bot] b4ed9e65d9 chore(deps): update dependency @vitest/eslint-plugin to v1.3.23 (main) (#38702)
* chore(deps): update dependency @vitest/eslint-plugin to v1.3.23

| datasource | package               | from   | to     |
| ---------- | --------------------- | ------ | ------ |
| npm        | @vitest/eslint-plugin | 1.3.16 | 1.3.23 |

* remove now unnecessary exceptions

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: secustor <sebastian@poxhofer.at>
2025-10-31 07:50:48 +00:00
Sergei Zharinov 3d0c0c46ff feat(semver-partial): add support for v-prefixed versions (#38815) 2025-10-27 12:36:34 +00:00
Juntao Zeng 726bc42df8 docs: update broken ruby gemfile versioning guide url (#38838)
update broken url
2025-10-24 08:58:33 +00:00
Sergei Zharinov aed021fb97 feat: Add semver-partial versioning scheme (#38593)
* feat(gitlab-ci): Add `semver-partial` versioning

* Add supported range strategies to semver-partial

* Add test cases for invalid semver inputs

* Remove unused sortVersions spec test

* Add tests for semver-partial versioning edge cases

* Simplify semver-partial version comparison logic

* Rewrite AI slop

* Add tests and improve semver-partial version matching

* Remove support for v-prefixed versions and bump strategy

* Refactor isLessThanRange to use parseVersion/Range

* Remove duplicate test cases in semver-partial spec

* Remove GitLab CI extract changes (split into separate PR)
2025-10-21 21:37:38 +00:00
renovate[bot] 1280fe4dc7 chore(deps): update dependency @vitest/eslint-plugin to v1.3.16 (main) (#38502)
* chore(deps): update dependency @vitest/eslint-plugin to v1.3.16

| datasource | package               | from   | to     |
| ---------- | --------------------- | ------ | ------ |
| npm        | @vitest/eslint-plugin | 1.3.13 | 1.3.16 |

* fix linting errors

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: secustor <sebastian@poxhofer.at>
2025-10-13 09:24:15 +00:00
Michael Kriese a5f3956210 refactor: remove default radix from parseInt (#37489) 2025-08-13 15:36:30 +00:00
Michael Kriese 83995189b8 fix(versioning/debian): future created versions are not valid (#37478) 2025-08-13 12:33:42 +00:00
Michael Kriese e64636727b refactor: move nodejs schedule json out of generated data files (#37481) 2025-08-13 12:27:35 +00:00
Martin Costello 26e465cccc docs: Delocalize URLs (#37370) 2025-08-07 16:17:05 +00:00
Sergei Zharinov 7c79c11285 fix: Always use default import from upath and semver-stable (#37325) 2025-08-05 11:01:45 +00:00
Tamronimus bf434e2dfb fix(versioning/redhat): allow optional v-prefix (#37094) 2025-07-22 12:17:28 +00:00
RahulGautamSingh 587b9a9cda refactor: use re2 (#36957) 2025-07-12 16:27:13 +00:00
renovate[bot] 5f1f40e7cf build(deps): update dependency prettier to v3.6.0 (main) (#36744)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2025-06-30 13:25:41 +00:00
Borja Domínguez 39fb4207bc feat(versioning): Add Unity packages (#35761) 2025-06-24 08:52:18 +00:00
mgroenbroek 758e701dce fix(versioning/pep440): apply prerelease markers (#36083) 2025-05-25 11:40:14 +00:00
RahulGautamSingh d21d0992c3 fix(versioning/npm): widen upper bound correctly (#35857) 2025-05-11 09:50:54 +00:00
Rhys Arkins 67935500d7 feat(versioning): isBreaking (#31859)
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2025-05-09 08:17:14 +00:00
Gareth Parker 224fa799cc feat(versioning): Add a NodeJS Lambda Versioning module (#32480)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2025-05-06 21:51:26 +00:00