Compare commits

...

16 Commits

Author SHA1 Message Date
924a4da489 chore(deps): update dependencies (non-major) (#31)
All checks were successful
CD / Release (push) Successful in 14s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | minor | [`24.9.1` -> `24.10.0`](https://renovatebot.com/diffs/npm/@types%2fnode/24.9.1/24.10.0) |  |
| [esbuild](https://github.com/evanw/esbuild) | devDependencies | patch | [`0.25.11` -> `0.25.12`](https://renovatebot.com/diffs/npm/esbuild/0.25.11/0.25.12) | `0.27.0` (+1) |

---

### Release Notes

<details>
<summary>evanw/esbuild (esbuild)</summary>

### [`v0.25.12`](https://github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#02512)

[Compare Source](https://github.com/evanw/esbuild/compare/v0.25.11...v0.25.12)

- Fix a minification regression with CSS media queries ([#&#8203;4315](https://github.com/evanw/esbuild/issues/4315))

  The previous release introduced support for parsing media queries which unintentionally introduced a regression with the removal of duplicate media rules during minification. Specifically the grammar for `@media <media-type> and <media-condition-without-or> { ... }` was missing an equality check for the `<media-condition-without-or>` part, so rules with different suffix clauses in this position would incorrectly compare equal and be deduplicated. This release fixes the regression.

- Update the list of known JavaScript globals ([#&#8203;4310](https://github.com/evanw/esbuild/issues/4310))

  This release updates esbuild's internal list of known JavaScript globals. These are globals that are known to not have side-effects when the property is accessed. For example, accessing the global `Array` property is considered to be side-effect free but accessing the global `scrollY` property can trigger a layout, which is a side-effect. This is used by esbuild's tree-shaking to safely remove unused code that is known to be side-effect free. This update adds the following global properties:

  From [ES2017](https://tc39.es/ecma262/2017/):

  - `Atomics`
  - `SharedArrayBuffer`

  From [ES2020](https://tc39.es/ecma262/2020/):

  - `BigInt64Array`
  - `BigUint64Array`

  From [ES2021](https://tc39.es/ecma262/2021/):

  - `FinalizationRegistry`
  - `WeakRef`

  From [ES2025](https://tc39.es/ecma262/2025/):

  - `Float16Array`
  - `Iterator`

  Note that this does not indicate that constructing any of these objects is side-effect free, just that accessing the identifier is side-effect free. For example, this now allows esbuild to tree-shake classes that extend from `Iterator`:

  ```js
  // This can now be tree-shaken by esbuild:
  class ExampleIterator extends Iterator {}
  ```

- Add support for the new `@view-transition` CSS rule ([#&#8203;4313](https://github.com/evanw/esbuild/pull/4313))

  With this release, esbuild now has improved support for pretty-printing and minifying the new `@view-transition` rule (which esbuild was previously unaware of):

  ```css
  /* Original code */
  @&#8203;view-transition {
    navigation: auto;
    types: check;
  }

  /* Old output */
  @&#8203;view-transition { navigation: auto; types: check; }

  /* New output */
  @&#8203;view-transition {
    navigation: auto;
    types: check;
  }
  ```

  The new view transition feature provides a mechanism for creating animated transitions between documents in a multi-page app. You can read more about view transition rules [here](https://developer.mozilla.org/en-US/docs/Web/CSS/@&#8203;view-transition).

  This change was contributed by [@&#8203;yisibl](https://github.com/yisibl).

- Trim CSS rules that will never match

  The CSS minifier will now remove rules whose selectors contain `:is()` and `:where()` as those selectors will never match. These selectors can currently be automatically generated by esbuild when you give esbuild nonsensical input such as the following:

  ```css
  /* Original code */
  div:before {
    color: green;
    &.foo {
      color: red;
    }
  }

  /* Old output (with --supported:nesting=false --minify) */
  div:before{color:green}:is().foo{color:red}

  /* New output (with --supported:nesting=false --minify) */
  div:before{color:green}
  ```

  This input is nonsensical because CSS nesting is (unfortunately) not supported inside of pseudo-elements such as `:before`. Currently esbuild generates a rule containing `:is()` in this case when you tell esbuild to transform nested CSS into non-nested CSS. I think it's reasonable to do that as it sort of helps explain what's going on (or at least indicates that something is wrong in the output). It shouldn't be present in minified code, however, so this release now strips it out.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xLjMiLCJ1cGRhdGVkSW5WZXIiOiI0Mi4xLjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Reviewed-on: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/pulls/31
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-11-11 19:20:36 +01:00
9f97eda4df chore(deps): update dependency @types/conventional-commits-parser to v5.0.2 (#30)
All checks were successful
CD / Release (push) Successful in 45s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@types/conventional-commits-parser](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/conventional-commits-parser) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/conventional-commits-parser)) | devDependencies | patch | [`5.0.1` -> `5.0.2`](https://renovatebot.com/diffs/npm/@types%2fconventional-commits-parser/5.0.1/5.0.2) |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTcuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE1Ny4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #30
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-11-07 07:36:13 +01:00
b344a86b03 chore(deps): update dependency @types/node to v24.9.1 (#29)
All checks were successful
CD / Release (push) Successful in 14s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | patch | [`24.9.0` -> `24.9.1`](https://renovatebot.com/diffs/npm/@types%2fnode/24.9.0/24.9.1) | `24.10.0` (+1) |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTUuMiIsInVwZGF0ZWRJblZlciI6IjQxLjE1NS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #29
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-11-04 08:08:41 +01:00
2c0369c005 chore(deps): update dependency @types/node to v24.9.0 (#28)
All checks were successful
CD / Release (push) Successful in 42s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | minor | [`24.8.1` -> `24.9.0`](https://renovatebot.com/diffs/npm/@types%2fnode/24.8.1/24.9.0) | `24.10.0` (+2) |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTQuMCIsInVwZGF0ZWRJblZlciI6IjQxLjE1NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #28
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-11-03 17:25:15 +01:00
93fc0fde71 chore(deps): update dependency @types/node to v24.8.1 (#27)
All checks were successful
CD / Release (push) Successful in 55s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | minor | [`24.7.2` -> `24.8.1`](https://renovatebot.com/diffs/npm/@types%2fnode/24.7.2/24.8.1) | `24.9.2` (+2) |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDkuMiIsInVwZGF0ZWRJblZlciI6IjQxLjE0OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #27
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-10-31 08:35:57 +01:00
39d1f32564 chore(deps): update actions/setup-node action to v6 (#24)
All checks were successful
CD / Release (push) Successful in 53s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/setup-node](https://github.com/actions/setup-node) | action | major | `v5` -> `v6` |

---

### Release Notes

<details>
<summary>actions/setup-node (actions/setup-node)</summary>

### [`v6`](https://github.com/actions/setup-node/compare/v5...v6)

[Compare Source](https://github.com/actions/setup-node/compare/v5...v6)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDYuOCIsInVwZGF0ZWRJblZlciI6IjQxLjE0Ni44IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #24
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-10-29 07:59:28 +01:00
858b300bdb chore(deps): update dependency esbuild to v0.25.11 (#26)
All checks were successful
CD / Release (push) Successful in 43s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [esbuild](https://github.com/evanw/esbuild) | devDependencies | patch | [`0.25.10` -> `0.25.11`](https://renovatebot.com/diffs/npm/esbuild/0.25.10/0.25.11) |

---

### Release Notes

<details>
<summary>evanw/esbuild (esbuild)</summary>

### [`v0.25.11`](https://github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#02511)

[Compare Source](https://github.com/evanw/esbuild/compare/v0.25.10...v0.25.11)

- Add support for `with { type: 'bytes' }` imports ([#&#8203;4292](https://github.com/evanw/esbuild/issues/4292))

  The [import bytes](https://github.com/tc39/proposal-import-bytes) proposal has reached stage 2.7 in the TC39 process, which means that although it isn't quite recommended for implementation, it's generally approved and ready for validation. Furthermore it has already been implemented by [Deno](https://docs.deno.com/examples/importing_bytes/) and [Webpack](https://github.com/webpack/webpack/pull/19928). So with this release, esbuild will also add support for this. It behaves exactly the same as esbuild's existing [`binary` loader](https://esbuild.github.io/content-types/#binary). Here's an example:

  ```js
  import data from './image.png' with { type: 'bytes' }
  const view = new DataView(data.buffer, 0, 24)
  const width = view.getInt32(16)
  const height = view.getInt32(20)
  console.log('size:', width + '\xD7' + height)
  ```

- Lower CSS media query range syntax ([#&#8203;3748](https://github.com/evanw/esbuild/issues/3748), [#&#8203;4293](https://github.com/evanw/esbuild/issues/4293))

  With this release, esbuild will now transform CSS media query range syntax into equivalent syntax using `min-`/`max-` prefixes for older browsers. For example, the following CSS:

  ```css
  @&#8203;media (640px <= width <= 960px) {
    main {
      display: flex;
    }
  }
  ```

  will be transformed like this with a target such as `--target=chrome100` (or more specifically with `--supported:media-range=false` if desired):

  ```css
  @&#8203;media (min-width: 640px) and (max-width: 960px) {
    main {
      display: flex;
    }
  }
  ```

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDguNSIsInVwZGF0ZWRJblZlciI6IjQxLjE0OC41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/pulls/26
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-10-29 07:58:27 +01:00
6be68d57de chore(deps): update dependencies (non-major) (#23)
All checks were successful
CD / Release (push) Successful in 1m23s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | patch | [`24.7.0` -> `24.7.2`](https://renovatebot.com/diffs/npm/@types%2fnode/24.7.0/24.7.2) | `24.9.1` (+3) |
| [ts-jest](https://kulshekhar.github.io/ts-jest) ([source](https://github.com/kulshekhar/ts-jest)) | devDependencies | patch | [`29.4.4` -> `29.4.5`](https://renovatebot.com/diffs/npm/ts-jest/29.4.4/29.4.5) |  |

---

### Release Notes

<details>
<summary>kulshekhar/ts-jest (ts-jest)</summary>

### [`v29.4.5`](https://github.com/kulshekhar/ts-jest/blob/HEAD/CHANGELOG.md#2945-2025-10-10)

[Compare Source](https://github.com/kulshekhar/ts-jest/compare/v29.4.4...v29.4.5)

##### Bug Fixes

- allow filtering modern module warning message with diagnostic code ([c290d4d](c290d4d7f6)), , closes [#&#8203;5013](https://github.com/kulshekhar/ts-jest/issues/5013)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDEuMCIsInVwZGF0ZWRJblZlciI6IjQxLjE0NC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/pulls/23
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-10-26 10:47:54 +01:00
3ac70b77f8 chore(deps): update dependency @types/node to v24.7.0 (#22)
All checks were successful
CD / Release (push) Successful in 40s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | minor | [`24.6.2` -> `24.7.0`](https://renovatebot.com/diffs/npm/@types%2fnode/24.6.2/24.7.0) | `24.8.1` (+3) |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzUuNCIsInVwZGF0ZWRJblZlciI6IjQxLjEzNS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #22
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-10-20 17:17:35 +02:00
1437a4d686 chore(deps): update dependency @types/node to v24.6.2 (#21)
All checks were successful
CD / Release (push) Successful in 14s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | patch | [`24.6.1` -> `24.6.2`](https://renovatebot.com/diffs/npm/@types%2fnode/24.6.1/24.6.2) | `24.7.2` (+2) |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMjUuMiIsInVwZGF0ZWRJblZlciI6IjQxLjEyNS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #21
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-10-16 07:56:07 +02:00
04acb22164 chore(deps): update dependencies (non-major) (#20)
All checks were successful
CD / Release (push) Successful in 46s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | patch | [`24.6.0` -> `24.6.1`](https://renovatebot.com/diffs/npm/@types%2fnode/24.6.0/24.6.1) | `24.7.2` (+3) |
| [typescript](https://www.typescriptlang.org/) ([source](https://github.com/microsoft/TypeScript)) | devDependencies | patch | [`5.9.2` -> `5.9.3`](https://renovatebot.com/diffs/npm/typescript/5.9.2/5.9.3) |  |

---

### Release Notes

<details>
<summary>microsoft/TypeScript (typescript)</summary>

### [`v5.9.3`](https://github.com/microsoft/TypeScript/releases/tag/v5.9.3): TypeScript 5.9.3

[Compare Source](https://github.com/microsoft/TypeScript/compare/v5.9.2...v5.9.3)

Note: this tag was recreated to point at the correct commit. The npm package contained the correct content.

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/)

- [fixed issues query for Typescript 5.9.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.9.0%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.9.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.9.1%22+is%3Aclosed+).
- *No specific changes for TypeScript 5.9.2 (Stable)*
- [fixed issues query for Typescript 5.9.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.9.3%22+is%3Aclosed+).

Downloads are available on:

- [npm](https://www.npmjs.com/package/typescript)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMjUuMiIsInVwZGF0ZWRJblZlciI6IjQxLjEyNS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #20
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-10-15 09:59:56 +02:00
4d4f066600 chore(deps): update dependency @types/node to v24.6.0 (#19)
All checks were successful
CD / Release (push) Successful in 45s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | minor | [`24.5.2` -> `24.6.0`](https://renovatebot.com/diffs/npm/@types%2fnode/24.5.2/24.6.0) | `24.7.2` (+4) |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMjUuMiIsInVwZGF0ZWRJblZlciI6IjQxLjEyNS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #19
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-10-14 07:59:37 +02:00
094c4c7b0f chore(deps): update dependencies (non-major) (#18)
All checks were successful
CD / Release (push) Successful in 45s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [jest](https://jestjs.io/) ([source](https://github.com/jestjs/jest/tree/HEAD/packages/jest)) | devDependencies | minor | [`30.1.3` -> `30.2.0`](https://renovatebot.com/diffs/npm/jest/30.1.3/30.2.0) |  |
| [ts-jest](https://kulshekhar.github.io/ts-jest) ([source](https://github.com/kulshekhar/ts-jest)) | devDependencies | patch | [`29.4.2` -> `29.4.4`](https://renovatebot.com/diffs/npm/ts-jest/29.4.2/29.4.4) | `29.4.5` |

---

### Release Notes

<details>
<summary>jestjs/jest (jest)</summary>

### [`v30.2.0`](https://github.com/jestjs/jest/blob/HEAD/CHANGELOG.md#3020)

[Compare Source](https://github.com/jestjs/jest/compare/v30.1.3...v30.2.0)

##### Chore & Maintenance

- `[*]` Update example repo for testing React Native projects ([#&#8203;15832](https://github.com/jestjs/jest/pull/15832))
- `[*]` Update `jest-watch-typeahead` to v3 ([#&#8203;15830](https://github.com/jestjs/jest/pull/15830))

</details>

<details>
<summary>kulshekhar/ts-jest (ts-jest)</summary>

### [`v29.4.4`](https://github.com/kulshekhar/ts-jest/blob/HEAD/CHANGELOG.md#2944-2025-09-19)

[Compare Source](https://github.com/kulshekhar/ts-jest/compare/v29.4.3...v29.4.4)

##### Bug Fixes

- revert **29.4.3** changes ([25cb706](25cb706552)), closes [#&#8203;5049](https://github.com/kulshekhar/ts-jest/issues/5049)

### [`v29.4.3`](https://github.com/kulshekhar/ts-jest/blob/HEAD/CHANGELOG.md#2944-2025-09-19)

[Compare Source](https://github.com/kulshekhar/ts-jest/compare/v29.4.2...v29.4.3)

##### Bug Fixes

- revert **29.4.3** changes ([25cb706](25cb706552)), closes [#&#8203;5049](https://github.com/kulshekhar/ts-jest/issues/5049)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMjQuMCIsInVwZGF0ZWRJblZlciI6IjQxLjEyNS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/pulls/18
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-10-13 07:53:52 +02:00
d3f0376d67 chore(deps): update dependencies (non-major) (#16)
All checks were successful
CD / Release (push) Successful in 12s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | minor | [`24.3.1` -> `24.5.2`](https://renovatebot.com/diffs/npm/@types%2fnode/24.3.1/24.5.2) | `24.6.2` (+2) |
| [esbuild](https://github.com/evanw/esbuild) | devDependencies | patch | [`0.25.9` -> `0.25.10`](https://renovatebot.com/diffs/npm/esbuild/0.25.9/0.25.10) |  |
| [ts-jest](https://kulshekhar.github.io/ts-jest) ([source](https://github.com/kulshekhar/ts-jest)) | devDependencies | patch | [`29.4.1` -> `29.4.2`](https://renovatebot.com/diffs/npm/ts-jest/29.4.1/29.4.2) | `29.4.4` (+1) |

---

### Release Notes

<details>
<summary>evanw/esbuild (esbuild)</summary>

### [`v0.25.10`](https://github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#02510)

[Compare Source](https://github.com/evanw/esbuild/compare/v0.25.9...v0.25.10)

- Fix a panic in a minification edge case ([#&#8203;4287](https://github.com/evanw/esbuild/issues/4287))

  This release fixes a panic due to a null pointer that could happen when esbuild inlines a doubly-nested identity function and the final result is empty. It was fixed by emitting the value `undefined` in this case, which avoids the panic. This case must be rare since it hasn't come up until now. Here is an example of code that previously triggered the panic (which only happened when minifying):

  ```js
  function identity(x) { return x }
  identity({ y: identity(123) })
  ```

- Fix `@supports` nested inside pseudo-element ([#&#8203;4265](https://github.com/evanw/esbuild/issues/4265))

  When transforming nested CSS to non-nested CSS, esbuild is supposed to filter out pseudo-elements such as `::placeholder` for correctness. The [CSS nesting specification](https://www.w3.org/TR/css-nesting-1/) says the following:

  > The nesting selector cannot represent pseudo-elements (identical to the behavior of the ':is()' pseudo-class). We’d like to relax this restriction, but need to do so simultaneously for both ':is()' and '&', since they’re intentionally built on the same underlying mechanisms.

  However, it seems like this behavior is different for nested at-rules such as `@supports`, which do work with pseudo-elements. So this release modifies esbuild's behavior to now take that into account:

  ```css
  /* Original code */
  ::placeholder {
    color: red;
    body & { color: green }
    @&#8203;supports (color: blue) { color: blue }
  }

  /* Old output (with --supported:nesting=false) */
  ::placeholder {
    color: red;
  }
  body :is() {
    color: green;
  }
  @&#8203;supports (color: blue) {
     {
      color: blue;
    }
  }

  /* New output (with --supported:nesting=false) */
  ::placeholder {
    color: red;
  }
  body :is() {
    color: green;
  }
  @&#8203;supports (color: blue) {
    ::placeholder {
      color: blue;
    }
  }
  ```

</details>

<details>
<summary>kulshekhar/ts-jest (ts-jest)</summary>

### [`v29.4.2`](https://github.com/kulshekhar/ts-jest/blob/HEAD/CHANGELOG.md#2942-2025-09-15)

[Compare Source](https://github.com/kulshekhar/ts-jest/compare/v29.4.1...v29.4.2)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMDcuMCIsInVwZGF0ZWRJblZlciI6IjQxLjEyNC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/pulls/16
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-10-02 08:02:24 +02:00
0e6aab82a5 feat: add ability to create pre-release tags (#17)
All checks were successful
CD / Release (push) Successful in 40s
Reviewed-on: #17
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2025-09-30 17:29:47 +02:00
5b2f1fe9d4 chore(deps): update dependencies (non-major) (#13)
All checks were successful
CD / Release (push) Successful in 14s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | patch | [`24.3.0` -> `24.3.1`](https://renovatebot.com/diffs/npm/@types%2fnode/24.3.0/24.3.1) |
| [jest](https://jestjs.io/) ([source](https://github.com/jestjs/jest/tree/HEAD/packages/jest)) | devDependencies | patch | [`30.1.1` -> `30.1.3`](https://renovatebot.com/diffs/npm/jest/30.1.1/30.1.3) |

---

### Release Notes

<details>
<summary>jestjs/jest (jest)</summary>

### [`v30.1.3`](https://github.com/jestjs/jest/blob/HEAD/CHANGELOG.md#3013)

[Compare Source](https://github.com/jestjs/jest/compare/v30.1.2...v30.1.3)

##### Fixes

- Fix `unstable_mockModule` with `node:` prefixed core modules.

### [`v30.1.2`](https://github.com/jestjs/jest/blob/HEAD/CHANGELOG.md#3012)

[Compare Source](https://github.com/jestjs/jest/compare/v30.1.1...v30.1.2)

##### Fixes

- `[jest-snapshot-utils]` Correct snapshot header regexp to work with newline across OSes ([#&#8203;15803](https://github.com/jestjs/jest/pull/15803))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ni4yIiwidXBkYXRlZEluVmVyIjoiNDEuOTYuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: #13
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-09-05 20:26:05 +02:00
8 changed files with 731 additions and 530 deletions

View File

@@ -13,7 +13,7 @@ jobs:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: actions/setup-node@v5
- uses: actions/setup-node@v6
with:
node-version-file: .nvmrc
- run: npm ci

View File

@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/setup-node@v6
with:
node-version-file: .nvmrc
- run: npm ci
@@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/setup-node@v6
with:
node-version-file: .nvmrc
- run: npm ci
@@ -46,7 +46,7 @@ jobs:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: actions/setup-node@v5
- uses: actions/setup-node@v6
with:
node-version-file: .nvmrc
- run: npm ci
@@ -63,3 +63,37 @@ jobs:
fi
echo "New tag: ${{ steps.increment-tag.outputs.new-tag }}"
dry-run-prerelease:
name: Dry-Run Prerelease
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: actions/setup-node@v6
with:
node-version-file: .nvmrc
- run: npm ci
- name: Create prerelease tag
id: prerelease-tag
uses: ./
with:
token: ${{ secrets.GITEA_TOKEN }}
prerelease: "true"
- name: Print new tag
run: |
if [ -z "${{ steps.prerelease-tag.outputs.new-tag }}" ]; then
echo "No new tag found"
exit 1
fi
echo "New tag: ${{ steps.prerelease-tag.outputs.new-tag }}"
- name: Verify prerelease tag format
run: |
if [[ "${{ steps.prerelease-tag.outputs.new-tag }}" =~ -rc-[a-f0-9]{7,}$ ]]; then
echo "✓ Prerelease tag format is correct"
else
echo "✗ Prerelease tag format is incorrect. Expected format: X.Y.Z-rc-<sha>"
exit 1
fi

View File

@@ -43,6 +43,15 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
```
### With prerelease tags
```yaml
- uses: tbehrendt/conventional-semantic-git-tag-increment@v1
with:
prerelease: "true"
token: ${{ secrets.GITHUB_TOKEN }}
```
## Examples
| Commit Message | Current Tag | New Tag | Reason |
@@ -52,11 +61,20 @@ jobs:
| `feat!: change API response format` | `v1.1.1` | `v2.0.0` | Breaking change |
| `docs: update README` | `v2.0.0` | `v2.0.1` | Documentation update |
### Prerelease Examples
| Commit Message | Current Tag | New Tag (prerelease) | Reason |
| ------------------------------- | ----------- | -------------------- | ----------- |
| `feat: add user authentication` | `v1.0.0` | `1.1.0-rc-abc123` | New feature |
| `fix: resolve login bug` | `v1.1.0` | `1.1.1-rc-def456` | Bug fix |
## Inputs
- `last-tag` (optional): Starting tag to increment from. If not provided, uses the latest tag in the repository.
- `token` (required): GitHub token for repository access. Use `${{ github.token }}` for public repos or a PAT for private repos.
- `prerelease` (optional): Whether to create a prerelease tag with `-rc-<github.sha>` suffix. Defaults to `false`.
- `max-tags` (optional): Maximum number of tags to fetch when looking for the latest non-pre-release tag. Defaults to `50`.
## Outputs
- `new-tag`: The incremented semantic version tag (e.g., `1.2.3`)
- `new-tag`: The incremented semantic version tag (e.g., `1.2.3` or `1.2.3-rc-abc123` for prerelease)

View File

@@ -11,6 +11,14 @@ inputs:
description: "Token for repository access"
required: true
default: "${{ github.token }}"
prerelease:
description: "Whether to create a prerelease tag"
required: false
default: "false"
max-tags:
description: "Maximum number of tags to fetch when looking for the latest non-pre-release tag"
required: false
default: "50"
outputs:
new-tag:

64
dist/index.js vendored

File diff suppressed because one or more lines are too long

972
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -149,6 +149,16 @@ describe("TagService", () => {
const result = tagService.renderTag(tag, "v");
expect(result).toBe("v1.2.3");
});
it("should render tag with prerelease suffix", () => {
const result = tagService.renderTag(tag, "", "-rc-abc123");
expect(result).toBe("1.2.3-rc-abc123");
});
it("should render tag with prefix and prerelease suffix", () => {
const result = tagService.renderTag(tag, "v", "-rc-abc123");
expect(result).toBe("v1.2.3-rc-abc123");
});
});
describe("parseTag", () => {
@@ -221,7 +231,7 @@ describe("TagIncrementer", () => {
const result = await tagIncrementer.getBaseTag(undefined);
expect(result).toBe("v2.0.0");
expect(mockCoreService.getLogs()).toContain("INFO: Using latest tag: v2.0.0");
expect(mockCoreService.getLogs()).toContain("INFO: Using latest real tag: v2.0.0");
});
it("should default to 0.0.0 when no tags found", async () => {
@@ -234,6 +244,34 @@ describe("TagIncrementer", () => {
"WARNING: No tags found in repository, defaulting to 0.0.0"
);
});
it("should skip pre-release tags and use latest real tag", async () => {
mockGitService.setMockTags([
{ name: "v2.0.0-rc-26035c6e13" },
{ name: "v1.2.3" },
{ name: "v1.1.4-rc-aa512edb16" },
{ name: "v1.0.0" },
]);
const result = await tagIncrementer.getBaseTag(undefined);
expect(result).toBe("v1.2.3");
expect(mockCoreService.getLogs()).toContain("INFO: Using latest real tag: v1.2.3");
});
it("should default to 0.0.0 when only pre-release tags found", async () => {
mockGitService.setMockTags([
{ name: "v2.0.0-rc-26035c6e13" },
{ name: "v1.1.4-rc-aa512edb16" },
]);
const result = await tagIncrementer.getBaseTag(undefined);
expect(result).toBe("0.0.0");
expect(mockCoreService.getWarnings()).toContain(
"WARNING: No real tags found (only pre-release tags), defaulting to 0.0.0"
);
});
});
describe("determineIncrementType", () => {
@@ -302,6 +340,28 @@ describe("TagIncrementer", () => {
expect(result).toBe("2.1.1");
});
it("should create prerelease tag when prerelease is true", async () => {
mockGitService.setMockTags([{ name: "v1.2.3" }]);
mockGitService.setMockCommit({
commit: { message: "feat: new feature" },
});
const result = await tagIncrementer.incrementTag(undefined, "ref", 50, true, "abc123");
expect(result).toBe("1.3.0-rc-abc123");
});
it("should not create prerelease tag when prerelease is false", async () => {
mockGitService.setMockTags([{ name: "v1.2.3" }]);
mockGitService.setMockCommit({
commit: { message: "feat: new feature" },
});
const result = await tagIncrementer.incrementTag(undefined, "ref", 50, false, "abc123");
expect(result).toBe("1.3.0");
});
});
});
@@ -315,14 +375,18 @@ describe("LocalGitService", () => {
describe("listTags", () => {
it("should call git command to list tags", async () => {
mockExecSync.mockReturnValue("v1.0.0\nv1.1.0\n" as any);
mockExecSync.mockReturnValue("v1.0.0\n1.1.0\n2.0.0-rc-26035c6e13\n" as any);
const result = await localGitService.listTags(5);
expect(mockExecSync).toHaveBeenCalledWith("git tag --sort=-version:refname", {
encoding: "utf8",
});
expect(result).toEqual([{ name: "v1.0.0" }, { name: "v1.1.0" }]);
expect(result).toEqual([
{ name: "v1.0.0" },
{ name: "1.1.0" },
{ name: "2.0.0-rc-26035c6e13" },
]);
});
it("should return empty array when no tags exist", async () => {
@@ -391,9 +455,12 @@ describe("LocalCoreService", () => {
// Integration test example
describe("TagIncrementer Integration", () => {
it("should handle complete tag increment flow", async () => {
const mockGitService = new MockGitService([{ name: "v1.2.3" }], {
commit: { message: "feat: new feature" },
});
const mockGitService = new MockGitService(
[{ name: "v2.0.0-rc-26035c6e13" }, { name: "v1.1.4-rc-aa512edb16" }, { name: "v1.2.3" }],
{
commit: { message: "feat: new feature" },
}
);
const mockCoreService = new MockCoreService();
const commitAnalyzer = new ConventionalCommitAnalyzer();
const tagService = new TagService();
@@ -410,5 +477,23 @@ describe("TagIncrementer Integration", () => {
expect(result).toBe("1.3.0");
expect(mockCoreService.getLogs()).toContain("INFO: Determined increment type: minor");
expect(mockCoreService.getLogs()).toContain("INFO: New tag: 1.3.0");
expect(mockCoreService.getLogs()).toContain("INFO: Using latest real tag: v1.2.3");
});
});
describe("Prerelease Validation", () => {
it("should validate prerelease configuration correctly", () => {
// Test cases for prerelease validation logic
const testCases = [
{ prerelease: true, githubSha: "abc123", shouldFail: false },
{ prerelease: true, githubSha: "", shouldFail: true },
{ prerelease: false, githubSha: "abc123", shouldFail: false },
{ prerelease: false, githubSha: "", shouldFail: false },
];
testCases.forEach(({ prerelease, githubSha, shouldFail }) => {
const result = prerelease && !githubSha;
expect(result).toBe(shouldFail);
});
});
});

View File

@@ -73,8 +73,8 @@ export class TagService {
}
}
renderTag(tag: Tag, prefix: string = ""): string {
return `${prefix}${tag.major}.${tag.minor}.${tag.patch}`;
renderTag(tag: Tag, prefix: string = "", prereleaseSuffix: string = ""): string {
return `${prefix}${tag.major}.${tag.minor}.${tag.patch}${prereleaseSuffix}`;
}
parseTag(tagString: string): Tag {
@@ -103,22 +103,29 @@ export class TagIncrementer {
private tagService: TagService
) {}
async getBaseTag(lastTag: string | undefined): Promise<string> {
async getBaseTag(lastTag: string | undefined, maxTags: number = 50): Promise<string> {
if (lastTag) {
this.coreService.info(`Using provided tag: ${lastTag}`);
return lastTag;
}
this.coreService.info("Fetching tags from local repository");
const tags = await this.gitService.listTags(1);
this.coreService.info(`Fetching up to ${maxTags} tags from local repository`);
const tags = await this.gitService.listTags(maxTags);
if (tags.length === 0) {
this.coreService.warning("No tags found in repository, defaulting to 0.0.0");
return "0.0.0";
}
const baseTag = tags[0].name;
this.coreService.info(`Using latest tag: ${baseTag}`);
const realTags = tags.filter((tag) => !tag.name.includes("-rc-"));
if (realTags.length === 0) {
this.coreService.warning("No real tags found (only pre-release tags), defaulting to 0.0.0");
return "0.0.0";
}
const baseTag = realTags[0].name;
this.coreService.info(`Using latest real tag: ${baseTag}`);
return baseTag;
}
@@ -155,10 +162,16 @@ export class TagIncrementer {
}
}
async incrementTag(lastTag: string | undefined, ref: string): Promise<string> {
async incrementTag(
lastTag: string | undefined,
ref: string,
maxTags: number = 50,
prerelease: boolean = false,
githubSha: string = ""
): Promise<string> {
this.coreService.info(`Starting tag increment process at ref ${ref}`);
const baseTag = await this.getBaseTag(lastTag);
const baseTag = await this.getBaseTag(lastTag, maxTags);
const parsedTag = this.tagService.parseTag(baseTag);
this.coreService.info(
@@ -168,7 +181,9 @@ export class TagIncrementer {
const incrementType = await this.determineIncrementType(ref);
const newTag = this.tagService.bumpTag(parsedTag, incrementType);
const renderedTag = this.tagService.renderTag(newTag);
const prereleaseSuffix = prerelease && githubSha ? `-rc-${githubSha}` : "";
const renderedTag = this.tagService.renderTag(newTag, "", prereleaseSuffix);
this.coreService.info(`New tag: ${renderedTag}`);
this.coreService.info(
@@ -242,12 +257,27 @@ export async function run(): Promise<void> {
const coreService = new LocalCoreService();
const lastTag = coreService.getInput("last-tag");
const maxTagsInput = coreService.getInput("max-tags");
const maxTags = parseInt(maxTagsInput || "50", 10);
const prereleaseInput = coreService.getInput("prerelease");
const prerelease = prereleaseInput === "true";
const githubSha = process.env.GITHUB_SHA || "";
const ref = "HEAD";
if (prerelease && !githubSha) {
const errorMessage =
"Prerelease is enabled but GITHUB_SHA environment variable is not available. This is required for prerelease tags.";
coreService.setFailed(errorMessage);
return;
}
// Log context information for debugging
coreService.info(`Working with local git repository`);
coreService.info(`Commit ref: ${ref}`);
coreService.info(`Last tag input: ${lastTag || "undefined"}`);
coreService.info(`Max tags limit: ${maxTags}`);
coreService.info(`Prerelease: ${prerelease}`);
coreService.info(`GitHub SHA: ${githubSha || "undefined"}`);
const gitService = new LocalGitService();
const commitAnalyzer = new ConventionalCommitAnalyzer();
@@ -261,7 +291,13 @@ export async function run(): Promise<void> {
await gitService.testConnection();
coreService.info("Git repository connection successful");
const newTag = await tagIncrementer.incrementTag(lastTag || undefined, ref);
const newTag = await tagIncrementer.incrementTag(
lastTag || undefined,
ref,
maxTags,
prerelease,
githubSha
);
coreService.info(`Process completed successfully. New tag: ${newTag}`);
coreService.setOutput("new-tag", newTag);