Compare commits

...

6 Commits

Author SHA1 Message Date
renovate-bot 99bd74fe53 chore(deps): update all non-major dependencies (#93)
CD / Release (push) Successful in 7s
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`24.13.2` → `24.13.3`](https://renovatebot.com/diffs/npm/@types%2fnode/24.13.2/24.13.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/24.13.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/24.13.2/24.13.3?slim=true) |
| [oxfmt](https://oxc.rs/docs/guide/usage/formatter) ([source](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt)) | [`0.59.0` → `0.61.0`](https://renovatebot.com/diffs/npm/oxfmt/0.59.0/0.61.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/oxfmt/0.61.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxfmt/0.59.0/0.61.0?slim=true) |
| [rolldown](https://rolldown.rs/) ([source](https://github.com/rolldown/rolldown/tree/HEAD/packages/rolldown)) | [`1.2.0` → `1.2.1`](https://renovatebot.com/diffs/npm/rolldown/1.2.0/1.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/rolldown/1.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/rolldown/1.2.0/1.2.1?slim=true) |

---

### Release Notes

<details>
<summary>oxc-project/oxc (oxfmt)</summary>

### [`v0.61.0`](https://github.com/oxc-project/oxc/compare/oxfmt_v0.60.0...oxfmt_v0.61.0)

[Compare Source](https://github.com/oxc-project/oxc/compare/oxfmt_v0.60.0...oxfmt_v0.61.0)

### [`v0.60.0`](https://github.com/oxc-project/oxc/compare/oxfmt_v0.59.0...oxfmt_v0.60.0)

[Compare Source](https://github.com/oxc-project/oxc/compare/oxfmt_v0.59.0...oxfmt_v0.60.0)

</details>

<details>
<summary>rolldown/rolldown (rolldown)</summary>

### [`v1.2.1`](https://github.com/rolldown/rolldown/blob/HEAD/CHANGELOG.md#121---2026-07-29)

[Compare Source](https://github.com/rolldown/rolldown/compare/v1.2.0...v1.2.1)

##### 🚀 Features

- dev: support `hotUpdate` hook ([#&#8203;10305](https://github.com/rolldown/rolldown/issues/10305)) by [@&#8203;h-a-n-a](https://github.com/h-a-n-a)
- dev: expose `disableWatcher` through the dev engine bindings ([#&#8203;10474](https://github.com/rolldown/rolldown/issues/10474)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- plugin: surface output-option callbacks in \[PLUGIN\_TIMINGS] ([#&#8203;10411](https://github.com/rolldown/rolldown/issues/10411)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- `import.meta.ROLLDOWN_FILE_URL_<referenceId>_<urlId>` support to pass context to `resolveFileUrl` hook ([#&#8203;10297](https://github.com/rolldown/rolldown/issues/10297)) by [@&#8203;sapphi-red](https://github.com/sapphi-red)
- dev: skip the HMR update when a module's rebuilt output is unchanged ([#&#8203;10333](https://github.com/rolldown/rolldown/issues/10333)) by [@&#8203;h-a-n-a](https://github.com/h-a-n-a)
- code-splitting: wrap strict execution order modules on demand ([#&#8203;10104](https://github.com/rolldown/rolldown/issues/10104)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- support `import.meta.ROLLDOWN_FILE_URL_*` ([#&#8203;10296](https://github.com/rolldown/rolldown/issues/10296)) by [@&#8203;sapphi-red](https://github.com/sapphi-red)
- implement `resolveFileUrl` plugin hook ([#&#8203;10291](https://github.com/rolldown/rolldown/issues/10291)) by [@&#8203;sapphi-red](https://github.com/sapphi-red)
- magic-string: support storeName on overwrite/update ([#&#8203;10312](https://github.com/rolldown/rolldown/issues/10312)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)

##### 🐛 Bug Fixes

- external: keep `__toESM` when the importing module is tree-shaken ([#&#8203;10516](https://github.com/rolldown/rolldown/issues/10516)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- dev: resolve re-exports from externals through a real import ([#&#8203;10489](https://github.com/rolldown/rolldown/issues/10489)) by [@&#8203;tbvjaos510](https://github.com/tbvjaos510)
- code-splitting: route CJS barrel initialization per consumer ([#&#8203;10488](https://github.com/rolldown/rolldown/issues/10488)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- error: align filename-pattern diagnostics with Rollup's wording ([#&#8203;10501](https://github.com/rolldown/rolldown/issues/10501)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- plugin: validate emitted prebuilt-chunk file names ([#&#8203;10399](https://github.com/rolldown/rolldown/issues/10399)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- code-splitting: point a two-argument dynamic import at the chunk that holds the module ([#&#8203;10479](https://github.com/rolldown/rolldown/issues/10479)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- common: align is\_path\_fragment with Rollup's isPathFragment ([#&#8203;10398](https://github.com/rolldown/rolldown/issues/10398)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- code-splitting: never name an internal chunk export `then` ([#&#8203;10480](https://github.com/rolldown/rolldown/issues/10480)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- code-splitting: avoid creating call-site-triggered entry facades ([#&#8203;10485](https://github.com/rolldown/rolldown/issues/10485)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- code-splitting: collect top-level eager order reasons in every strict build ([#&#8203;10463](https://github.com/rolldown/rolldown/issues/10463)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- code-splitting: let a cross-chunk dynamic importer carry the order trigger ([#&#8203;10456](https://github.com/rolldown/rolldown/issues/10456)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- code-splitting: avoid the dynamic-entry facade when the same-chunk collapse carries the trigger ([#&#8203;10433](https://github.com/rolldown/rolldown/issues/10433)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- binding: forward resolveId options.kind to callable builtin plugins ([#&#8203;10440](https://github.com/rolldown/rolldown/issues/10440)) by [@&#8203;martijnwalraven](https://github.com/martijnwalraven)
- dev: keep the export name of `export * as ns from` ([#&#8203;10476](https://github.com/rolldown/rolldown/issues/10476)) by [@&#8203;tbvjaos510](https://github.com/tbvjaos510)
- code-splitting: only split an entry facade when something else can load its chunk ([#&#8203;10441](https://github.com/rolldown/rolldown/issues/10441)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- code-splitting: fold the runtime chunk back after order lowering ([#&#8203;10414](https://github.com/rolldown/rolldown/issues/10414)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- runtime: don't leave default undefined for cjs that fakes \_\_esModule ([#&#8203;10453](https://github.com/rolldown/rolldown/issues/10453)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- import-glob: escape generated string literals ([#&#8203;10438](https://github.com/rolldown/rolldown/issues/10438)) by [@&#8203;shantanuraj](https://github.com/shantanuraj)
- preserve-modules: don't assume every chunk mirrors a module ([#&#8203;10442](https://github.com/rolldown/rolldown/issues/10442)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- filter: treat missing hook inputs as non-matches, not panics ([#&#8203;10443](https://github.com/rolldown/rolldown/issues/10443)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- code-splitting: keep CommonJS modules wrapped under strict execution order ([#&#8203;10405](https://github.com/rolldown/rolldown/issues/10405)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- code-splitting: align dynamicImports metadata with the rewritten import() specifier ([#&#8203;10430](https://github.com/rolldown/rolldown/issues/10430)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- dev: skip user plugin hooks for ?rolldown-lazy proxy modules ([#&#8203;10426](https://github.com/rolldown/rolldown/issues/10426)) by [@&#8203;unknownjedi](https://github.com/unknownjedi)
- treeshake: preserve side-effect-free spread arguments in manual-pure chains ([#&#8203;10432](https://github.com/rolldown/rolldown/issues/10432)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- treeshake: preserve eagerly evaluated child effects of manual pure chains ([#&#8203;10427](https://github.com/rolldown/rolldown/issues/10427)) by [@&#8203;Nic-Polumeyv](https://github.com/Nic-Polumeyv)
- code-splitting: initialize pure definers behind star re-export barrels under strict execution order ([#&#8203;10409](https://github.com/rolldown/rolldown/issues/10409)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- resolveId: reject string `id` filters (must be a RegExp) ([#&#8203;10412](https://github.com/rolldown/rolldown/issues/10412)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- code-splitting: collect eager order reasons for on-demand wrapping ([#&#8203;10387](https://github.com/rolldown/rolldown/issues/10387)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- rolldown: apply output.paths to CJS export-star of external modules ([#&#8203;10406](https://github.com/rolldown/rolldown/issues/10406)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- dev: sourcemaps of lazily compiled chunks ([#&#8203;10386](https://github.com/rolldown/rolldown/issues/10386)) by [@&#8203;tbvjaos510](https://github.com/tbvjaos510)
- plugin: validate emitted file names at emitFile time ([#&#8203;10377](https://github.com/rolldown/rolldown/issues/10377)) by [@&#8203;Nic-Polumeyv](https://github.com/Nic-Polumeyv)
- guarantee tokio runtime release when close rejects ([#&#8203;10381](https://github.com/rolldown/rolldown/issues/10381)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- code-splitting: make strict transitive init registration deterministic and constant-time ([#&#8203;10320](https://github.com/rolldown/rolldown/issues/10320)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- pair tokio runtime acquire and release on wasm to prevent premature shutdown ([#&#8203;10363](https://github.com/rolldown/rolldown/issues/10363)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- don't body-demand modules from simulated facade chunk includes ([#&#8203;10351](https://github.com/rolldown/rolldown/issues/10351)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- tracing: invalid RD\_LOG filter and RD\_LOG\_OUTPUT=json no longer panic ([#&#8203;10343](https://github.com/rolldown/rolldown/issues/10343)) by [@&#8203;Brooooooklyn](https://github.com/Brooooooklyn)
- code-splitting: treat class definition-time global reads as order-sensitive ([#&#8203;10322](https://github.com/rolldown/rolldown/issues/10322)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- code-splitting: deconflict force-included runtime helper statements ([#&#8203;10336](https://github.com/rolldown/rolldown/issues/10336)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- binding: forward all missing parallel JS plugin hooks ([#&#8203;10345](https://github.com/rolldown/rolldown/issues/10345)) by [@&#8203;Brooooooklyn](https://github.com/Brooooooklyn)
- code-splitting: re-derive chunk exec order after the runtime sweep ([#&#8203;10334](https://github.com/rolldown/rolldown/issues/10334)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- types: add undefined to ExistingRawSourceMap optional properties ([#&#8203;10355](https://github.com/rolldown/rolldown/issues/10355)) by [@&#8203;ocavue](https://github.com/ocavue)
- magic-string: validate relocate ranges before rewiring ([#&#8203;10327](https://github.com/rolldown/rolldown/issues/10327)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- add EMPTY\_IMPORT\_META warning for non-node CJS output ([#&#8203;10222](https://github.com/rolldown/rolldown/issues/10222)) by [@&#8203;sapphi-red](https://github.com/sapphi-red)
- call `resolveFileUrl` in a deterministic order ([#&#8203;10330](https://github.com/rolldown/rolldown/issues/10330)) by [@&#8203;sapphi-red](https://github.com/sapphi-red)
- magic-string: refuse repeated sendMagicString on a consumed instance ([#&#8203;10331](https://github.com/rolldown/rolldown/issues/10331)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- magic-string: refuse to use a MagicString after sendMagicString consumed it ([#&#8203;10326](https://github.com/rolldown/rolldown/issues/10326)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- magic-string: reject non-contiguous moves before rewiring the chunk list ([#&#8203;10311](https://github.com/rolldown/rolldown/issues/10311)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- handle `./foo/bar` glob pattern the same as `foo/bar` ([#&#8203;10313](https://github.com/rolldown/rolldown/issues/10313)) by [@&#8203;sapphi-red](https://github.com/sapphi-red)
- magic-string: throw instead of panicking when append/prepend splits an edited chunk ([#&#8203;10301](https://github.com/rolldown/rolldown/issues/10301)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- output: skip separator for empty hoisted functions ([#&#8203;10310](https://github.com/rolldown/rolldown/issues/10310)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- magic-string: don't report a change when edits cancel out ([#&#8203;10299](https://github.com/rolldown/rolldown/issues/10299)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- sourcemap: map wrapped imported callees ([#&#8203;10288](https://github.com/rolldown/rolldown/issues/10288)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- magic-string: count positional inserts at index 0 on an empty source ([#&#8203;10306](https://github.com/rolldown/rolldown/issues/10306)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- magic-string: return UTF-16 code units from length() ([#&#8203;10295](https://github.com/rolldown/rolldown/issues/10295)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- output: skip separator for empty import prelude ([#&#8203;10289](https://github.com/rolldown/rolldown/issues/10289)) by [@&#8203;hyfdev](https://github.com/hyfdev)

##### 🚜 Refactor

- dev: make it easier to customize the runtime ([#&#8203;10338](https://github.com/rolldown/rolldown/issues/10338)) by [@&#8203;sapphi-red](https://github.com/sapphi-red)
- code-splitting: declare CJS carrier namespaces initializer-free ([#&#8203;10513](https://github.com/rolldown/rolldown/issues/10513)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- rollup-tests: avoid relying on `NODE_PATH` env var resolution ([#&#8203;10496](https://github.com/rolldown/rolldown/issues/10496)) by [@&#8203;sapphi-red](https://github.com/sapphi-red)
- code-splitting: derive symbol chunk ownership as pass-local link data ([#&#8203;10449](https://github.com/rolldown/rolldown/issues/10449)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- plugin: share asset emission helpers between copy\_module and asset\_module ([#&#8203;10450](https://github.com/rolldown/rolldown/issues/10450)) by [@&#8203;Nic-Polumeyv](https://github.com/Nic-Polumeyv)
- plugin: dedupe hook binding boilerplate ([#&#8203;10428](https://github.com/rolldown/rolldown/issues/10428)) by [@&#8203;Nic-Polumeyv](https://github.com/Nic-Polumeyv)
- plugin: share the oxc parse preamble between import-glob and dynamic-import-vars ([#&#8203;10452](https://github.com/rolldown/rolldown/issues/10452)) by [@&#8203;Nic-Polumeyv](https://github.com/Nic-Polumeyv)
- implement `GetAstBuilder` on visitor/pass types ([#&#8203;10424](https://github.com/rolldown/rolldown/issues/10424)) by [@&#8203;overlookmotel](https://github.com/overlookmotel)
- pass arrays to AST builder methods ([#&#8203;10419](https://github.com/rolldown/rolldown/issues/10419)) by [@&#8203;overlookmotel](https://github.com/overlookmotel)
- shorten AST builder code ([#&#8203;10418](https://github.com/rolldown/rolldown/issues/10418)) by [@&#8203;overlookmotel](https://github.com/overlookmotel)
- centralize final ESM init metadata ([#&#8203;10376](https://github.com/rolldown/rolldown/issues/10376)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- descriptor-based parallel-plugin detection (getParallelPluginInfo) ([#&#8203;10349](https://github.com/rolldown/rolldown/issues/10349)) by [@&#8203;Brooooooklyn](https://github.com/Brooooooklyn)
- remove AstFactory in favor of new\_\* construction traits ([#&#8203;10353](https://github.com/rolldown/rolldown/issues/10353)) by [@&#8203;Boshen](https://github.com/Boshen)
- enable oxc\_ast's `disable_old_builder` feature ([#&#8203;10316](https://github.com/rolldown/rolldown/issues/10316)) by [@&#8203;Boshen](https://github.com/Boshen)

##### 📚 Documentation

- development-guide: update config.json link line reference ([#&#8203;10523](https://github.com/rolldown/rolldown/issues/10523)) by [@&#8203;dogledogle](https://github.com/dogledogle)
- clarify slash normalization for id hook filter ([#&#8203;10511](https://github.com/rolldown/rolldown/issues/10511)) by [@&#8203;sapphi-red](https://github.com/sapphi-red)
- code-splitting: record the thenable-namespace rule ([#&#8203;10502](https://github.com/rolldown/rolldown/issues/10502)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- clarify that `esmExternalRequirePlugin` must own its externals ([#&#8203;10439](https://github.com/rolldown/rolldown/issues/10439)) by [@&#8203;TheAlexLichter](https://github.com/TheAlexLichter)
- add troubleshooting entry for the [@&#8203;rolldown/binding-](https://github.com/rolldown/binding-)... resolution error ([#&#8203;10390](https://github.com/rolldown/rolldown/issues/10390)) by [@&#8203;Nic-Polumeyv](https://github.com/Nic-Polumeyv)
- add Code Splitting API reference category ([#&#8203;10382](https://github.com/rolldown/rolldown/issues/10382)) by [@&#8203;vittorioexp](https://github.com/vittorioexp)

#####  Performance

- use VisitJsMut in JavaScript-only AST passes ([#&#8203;10507](https://github.com/rolldown/rolldown/issues/10507)) by [@&#8203;Boshen](https://github.com/Boshen)
- cache the resolved glob matcher for Id/ImporterId filters ([#&#8203;10410](https://github.com/rolldown/rolldown/issues/10410)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- scope\_hoisting: remove `alloc` field from `ScopeHoistingFinalizer` ([#&#8203;10425](https://github.com/rolldown/rolldown/issues/10425)) by [@&#8203;overlookmotel](https://github.com/overlookmotel)
- reduce string allocations ([#&#8203;10423](https://github.com/rolldown/rolldown/issues/10423)) by [@&#8203;overlookmotel](https://github.com/overlookmotel)
- hmr: remove unnecessary string allocations ([#&#8203;10422](https://github.com/rolldown/rolldown/issues/10422)) by [@&#8203;overlookmotel](https://github.com/overlookmotel)
- avoid allocating static strings via custom builder methods ([#&#8203;10421](https://github.com/rolldown/rolldown/issues/10421)) by [@&#8203;overlookmotel](https://github.com/overlookmotel)
- pass string literals to AST builder methods ([#&#8203;10420](https://github.com/rolldown/rolldown/issues/10420)) by [@&#8203;overlookmotel](https://github.com/overlookmotel)
- use VisitJs in JavaScript-only AST passes ([#&#8203;10396](https://github.com/rolldown/rolldown/issues/10396)) by [@&#8203;Boshen](https://github.com/Boshen)
- plugin: shrink erased plugin debug vtables ([#&#8203;10370](https://github.com/rolldown/rolldown/issues/10370)) by [@&#8203;Boshen](https://github.com/Boshen)
- reuse normalized path buffers ([#&#8203;10315](https://github.com/rolldown/rolldown/issues/10315)) by [@&#8203;hyfdev](https://github.com/hyfdev)

##### 🧪 Testing

- code-splitting: pin CJS barrel fallback triggers and flag-off equivalence ([#&#8203;10514](https://github.com/rolldown/rolldown/issues/10514)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- plugin: cover chunk fileName, absolute chunk name, and Windows drive names ([#&#8203;10400](https://github.com/rolldown/rolldown/issues/10400)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- code-splitting: cover a single-chunk dynamic import of a wrapped module ([#&#8203;10505](https://github.com/rolldown/rolldown/issues/10505)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- file: remove the unused .dynamic\_import fixture ([#&#8203;10481](https://github.com/rolldown/rolldown/issues/10481)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- treeshake: reduce manual-pure fixture to a minimal smoke test, move matrix to unit tests ([#&#8203;10436](https://github.com/rolldown/rolldown/issues/10436)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- dev: run vite playgrounds under bundled dev (test-serve-bundled) ([#&#8203;10434](https://github.com/rolldown/rolldown/issues/10434)) by [@&#8203;h-a-n-a](https://github.com/h-a-n-a)
- stop snapshots from silently hiding user code inside the runtime region ([#&#8203;10431](https://github.com/rolldown/rolldown/issues/10431)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- wasi: add tokio runtime lifecycle regression test ([#&#8203;10379](https://github.com/rolldown/rolldown/issues/10379)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- dev: expect preserved hot.data in hmr-whole-chain-dispose ([#&#8203;10380](https://github.com/rolldown/rolldown/issues/10380)) by [@&#8203;h-a-n-a](https://github.com/h-a-n-a)
- code-splitting: pin flag-off wrapped-esm init emission ([#&#8203;10324](https://github.com/rolldown/rolldown/issues/10324)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- sourcemap: fix Windows-only failures in composition fixtures ([#&#8203;10368](https://github.com/rolldown/rolldown/issues/10368)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- generated-code: mark assert external in symbols\_ns2 for deterministic output ([#&#8203;10339](https://github.com/rolldown/rolldown/issues/10339)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- code-splitting: cover entries-aware strict init cycle ([#&#8203;10307](https://github.com/rolldown/rolldown/issues/10307)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- make `just setup-vite` the only entry point that touches `vite/` ([#&#8203;10332](https://github.com/rolldown/rolldown/issues/10332)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- vite-tests: reuse the shared root vite checkout ([#&#8203;10325](https://github.com/rolldown/rolldown/issues/10325)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- test-dev-server: drop the vite submodule, track rolldown-canary ([#&#8203;10319](https://github.com/rolldown/rolldown/issues/10319)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- vite-tests: track the latest rolldown-canary rebased onto vite main ([#&#8203;10318](https://github.com/rolldown/rolldown/issues/10318)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- unify Vite in vite-test and test-dev-server ([#&#8203;10293](https://github.com/rolldown/rolldown/issues/10293)) by [@&#8203;h-a-n-a](https://github.com/h-a-n-a)

##### ⚙️ Miscellaneous Tasks

- scope the binding artifact download to `bindings-*` ([#&#8203;10525](https://github.com/rolldown/rolldown/issues/10525)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- deps: update napi ([#&#8203;10506](https://github.com/rolldown/rolldown/issues/10506)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- deps: update rollup submodule for tests to v4.62.3 ([#&#8203;10494](https://github.com/rolldown/rolldown/issues/10494)) by [@&#8203;rolldown-guard](https://github.com/rolldown-guard)\[bot]
- deps: upgrade oxc to 0.142.0 ([#&#8203;10497](https://github.com/rolldown/rolldown/issues/10497)) by [@&#8203;shulaoda](https://github.com/shulaoda)
- deps: update test262 submodule for tests ([#&#8203;10495](https://github.com/rolldown/rolldown/issues/10495)) by [@&#8203;rolldown-guard](https://github.com/rolldown-guard)\[bot]
- deps: update github actions ([#&#8203;10460](https://github.com/rolldown/rolldown/issues/10460)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- deps: update rust crates ([#&#8203;10462](https://github.com/rolldown/rolldown/issues/10462)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- deps: update npm packages ([#&#8203;10461](https://github.com/rolldown/rolldown/issues/10461)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- metric: alert Discord when the metric workflow fails ([#&#8203;10447](https://github.com/rolldown/rolldown/issues/10447)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- metric: mint a short-lived GitHub App token instead of a PAT ([#&#8203;10446](https://github.com/rolldown/rolldown/issues/10446)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)
- repo: repair dangling CLAUDE.md symlink ([#&#8203;10451](https://github.com/rolldown/rolldown/issues/10451)) by [@&#8203;hanayashiki](https://github.com/hanayashiki)
- publint/package-metadata fixes and small correctness fixes ([#&#8203;10344](https://github.com/rolldown/rolldown/issues/10344)) by [@&#8203;Brooooooklyn](https://github.com/Brooooooklyn)
- deps: update dependency vite-plus to v0.2.6 ([#&#8203;10404](https://github.com/rolldown/rolldown/issues/10404)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- add Semgrep scan workflow ([#&#8203;10395](https://github.com/rolldown/rolldown/issues/10395)) by [@&#8203;Boshen](https://github.com/Boshen)
- enable Windows CI with a PR label ([#&#8203;10375](https://github.com/rolldown/rolldown/issues/10375)) by [@&#8203;hyfdev](https://github.com/hyfdev)
- deps: upgrade oxc to 0.141.0 ([#&#8203;10373](https://github.com/rolldown/rolldown/issues/10373)) by [@&#8203;camc314](https://github.com/camc314)
- deps: update napi ([#&#8203;10369](https://github.com/rolldown/rolldown/issues/10369)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- deps: update test262 submodule for tests ([#&#8203;10367](https://github.com/rolldown/rolldown/issues/10367)) by [@&#8203;rolldown-guard](https://github.com/rolldown-guard)\[bot]
- deps: update taiki-e/install-action action to v2.83.3 ([#&#8203;10358](https://github.com/rolldown/rolldown/issues/10358)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- deps: update rust crates ([#&#8203;10357](https://github.com/rolldown/rolldown/issues/10357)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- deps: update npm packages ([#&#8203;10359](https://github.com/rolldown/rolldown/issues/10359)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- deps: update rust crate syn to v3 ([#&#8203;10362](https://github.com/rolldown/rolldown/issues/10362)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- deps: update rust crate oxc\_sourcemap to v8.1.2 ([#&#8203;10356](https://github.com/rolldown/rolldown/issues/10356)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- deps: update dependency vite-plus to v0.2.5 ([#&#8203;10329](https://github.com/rolldown/rolldown/issues/10329)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- docs: migrate Netlify redirects to Void config ([#&#8203;10282](https://github.com/rolldown/rolldown/issues/10282)) by [@&#8203;tux-tn](https://github.com/tux-tn)
- deps: update dependency rust to v1.97.1 ([#&#8203;10317](https://github.com/rolldown/rolldown/issues/10317)) by [@&#8203;renovate](https://github.com/renovate)\[bot]
- runtime: remove unused `runtime/index.js` ([#&#8203;10302](https://github.com/rolldown/rolldown/issues/10302)) by [@&#8203;IWANABETHATGUY](https://github.com/IWANABETHATGUY)

##### ❤️ New Contributors

- [@&#8203;dogledogle](https://github.com/dogledogle) made their first contribution in [#&#8203;10523](https://github.com/rolldown/rolldown/pull/10523)
- [@&#8203;tbvjaos510](https://github.com/tbvjaos510) made their first contribution in [#&#8203;10489](https://github.com/rolldown/rolldown/pull/10489)
- [@&#8203;martijnwalraven](https://github.com/martijnwalraven) made their first contribution in [#&#8203;10440](https://github.com/rolldown/rolldown/pull/10440)
- [@&#8203;shantanuraj](https://github.com/shantanuraj) made their first contribution in [#&#8203;10438](https://github.com/rolldown/rolldown/pull/10438)
- [@&#8203;Nic-Polumeyv](https://github.com/Nic-Polumeyv) made their first contribution in [#&#8203;10450](https://github.com/rolldown/rolldown/pull/10450)
- [@&#8203;hanayashiki](https://github.com/hanayashiki) made their first contribution in [#&#8203;10451](https://github.com/rolldown/rolldown/pull/10451)
- [@&#8203;unknownjedi](https://github.com/unknownjedi) made their first contribution in [#&#8203;10426](https://github.com/rolldown/rolldown/pull/10426)
- [@&#8203;vittorioexp](https://github.com/vittorioexp) made their first contribution in [#&#8203;10382](https://github.com/rolldown/rolldown/pull/10382)
- [@&#8203;tux-tn](https://github.com/tux-tn) made their first contribution in [#&#8203;10282](https://github.com/rolldown/rolldown/pull/10282)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- 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 [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjMuOSIsInVwZGF0ZWRJblZlciI6IjQzLjI2My45IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBzIiwibnBtIl19-->

Reviewed-on: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/pulls/93
Reviewed-by: t.behrendt <2+t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-08-06 12:17:30 +02:00
renovate-bot 0c7e450612 chore(deps): update actions/checkout action to v7.0.1 (#92)
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-07-30 18:24:56 +02:00
t.behrendt 702f4792f5 ci(renovate): modernize config (#91)
Reviewed-on: #91
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2026-07-30 18:17:36 +02:00
renovate-bot b455f57881 chore(deps): update actions/setup-node action to v7 (#90)
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-07-21 08:19:32 +02:00
renovate-bot 3ab82e6aa1 chore(deps): update dependency typescript to v7 (#87)
CD / Release (push) Successful in 1m46s
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [typescript](https://www.typescriptlang.org/) ([source](https://github.com/microsoft/TypeScript)) | [`5.9.3` → `7.0.2`](https://renovatebot.com/diffs/npm/typescript/5.9.3/7.0.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/7.0.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/5.9.3/7.0.2?slim=true) |

---

### Release Notes

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

### [`v7.0.2`](https://github.com/microsoft/TypeScript/compare/v6.0.3...2bd066d87f5bafd315be9f40889d0a60b9e58e0b)

[Compare Source](https://github.com/microsoft/TypeScript/compare/v6.0.3...2bd066d87f5bafd315be9f40889d0a60b9e58e0b)

### [`v6.0.3`](https://github.com/microsoft/TypeScript/releases/tag/v6.0.3): TypeScript 6.0.3

[Compare Source](https://github.com/microsoft/TypeScript/compare/v6.0.2...v6.0.3)

For release notes, check out the [release announcement blog post](https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/).

- [fixed issues query for TypeScript 6.0.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.0%22).
- [fixed issues query for TypeScript 6.0.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.1%22).
- [fixed issues query for TypeScript 6.0.2 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.2%22).
- [fixed issues query for TypeScript 6.0.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.3%22).

Downloads are available on:

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

### [`v6.0.2`](https://github.com/microsoft/TypeScript/releases/tag/v6.0.2): TypeScript 6.0

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

For release notes, check out the [release announcement blog post](https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/).

- [fixed issues query for TypeScript 6.0.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.0%22).
- [fixed issues query for TypeScript 6.0.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.1%22).
- [fixed issues query for TypeScript 6.0.2 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.2%22).

Downloads are available on:

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

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- 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 [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjMuOSIsInVwZGF0ZWRJblZlciI6IjQzLjI2My45IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #87
Reviewed-by: t.behrendt <2+t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-07-18 10:46:28 +02:00
t.behrendt 6a063e91f5 refactor: to rolldown, oxfmt, vitest (#89)
CD / Release (push) Successful in 37s
Reviewed-on: #89
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2026-07-18 08:08:37 +02:00
16 changed files with 2321 additions and 4623 deletions
+7
View File
@@ -0,0 +1,7 @@
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
+2 -2
View File
@@ -17,10 +17,10 @@ jobs:
name: Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: .nvmrc
- run: npm ci
+9 -9
View File
@@ -8,13 +8,13 @@ jobs:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: .nvmrc
- run: npm ci
- name: Format code
run: npm run format
run: npm run format:check
- name: Typecheck
run: npm run typecheck
- name: Run test
@@ -24,8 +24,8 @@ jobs:
name: Check Dist
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: .nvmrc
- run: npm ci
@@ -43,10 +43,10 @@ jobs:
name: Dry-Run
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: .nvmrc
- run: npm ci
@@ -68,10 +68,10 @@ jobs:
name: Dry-Run Prerelease
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: .nvmrc
- run: npm ci
+1
View File
@@ -0,0 +1 @@
min-release-age=7
-8
View File
@@ -1,8 +0,0 @@
{
"semi": true,
"trailingComma": "es5",
"singleQuote": false,
"printWidth": 100,
"tabWidth": 2,
"useTabs": false
}
+46 -82
View File
File diff suppressed because one or more lines are too long
-13
View File
@@ -1,13 +0,0 @@
module.exports = {
preset: "ts-jest",
testEnvironment: "node",
roots: ["<rootDir>/src"],
testMatch: ["**/*.spec.ts"],
moduleNameMapper: {
"^@actions/core$": "<rootDir>/src/__mocks__/actions-core.ts",
},
transform: {
"^.+\\.ts$": "ts-jest",
},
moduleFileExtensions: ["ts", "js", "json"],
};
+6
View File
@@ -0,0 +1,6 @@
import { defineConfig } from "oxfmt";
export default defineConfig({
// Most configuration is read from .editorconfig
ignorePatterns: ["node_modules/**", "dist/**"],
});
+2173 -4449
View File
File diff suppressed because it is too large Load Diff
+15 -15
View File
@@ -1,27 +1,27 @@
{
"name": "conventional-semantic-git-tag-increment",
"description": "GitHub Action to increment semantic version tag based on conventional commits",
"license": "MIT",
"author": "Timo Behrendt <t.behrendt@t00n.de>",
"main": "src/index.ts",
"scripts": {
"typecheck": "tsc --noEmit",
"build": "esbuild src/index.ts --bundle --outfile=dist/index.js --platform=node --target=node24 --minify",
"test": "jest",
"format": "prettier --write src/**/*.ts"
},
"author": "Timo Behrendt <t.behrendt@t00n.de>",
"license": "MIT",
"devDependencies": {
"@types/conventional-commits-parser": "5.0.2",
"@types/jest": "30.0.0",
"@types/node": "24.13.2",
"esbuild": "0.28.1",
"jest": "30.4.2",
"prettier": "3.8.4",
"ts-jest": "29.4.11",
"typescript": "5.9.3"
"build": "rolldown -c",
"test": "vitest",
"format": "oxfmt",
"format:check": "oxfmt --check"
},
"dependencies": {
"@actions/core": "3.0.1",
"conventional-commits-parser": "3.2.4"
},
"devDependencies": {
"@types/conventional-commits-parser": "5.0.2",
"@types/node": "24.13.3",
"@vitest/coverage-v8": "4.1.10",
"oxfmt": "0.61.0",
"rolldown": "1.2.1",
"typescript": "7.0.2",
"vitest": "4.1.10"
}
}
+3 -9
View File
@@ -1,18 +1,12 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"local>t.behrendt/renovate-configs:common",
"local>t.behrendt/renovate-configs:action"
"local>t.behrendt/renovate-configs:action",
"local>t.behrendt/renovate-configs:bun-npm"
],
"postUpgradeTasks": {
"commands": ["npm ci", "npm run build"],
"fileFilters": ["dist/**"],
"executionMode": "update"
},
"packageRules": [
{
"matchUpdateTypes": ["patch", "minor"],
"groupName": "dependencies (non-major)"
}
]
}
}
+12
View File
@@ -0,0 +1,12 @@
import { defineConfig } from "rolldown/config";
export default defineConfig({
input: "src/index.ts",
output: {
file: "dist/index.js",
format: "esm",
minify: true,
},
platform: "node",
treeshake: true,
});
-5
View File
@@ -1,5 +0,0 @@
export const getInput = jest.fn(() => "");
export const info = jest.fn();
export const warning = jest.fn();
export const setOutput = jest.fn();
export const setFailed = jest.fn();
+22 -22
View File
@@ -1,28 +1,30 @@
import { afterEach, beforeEach, describe, expect, it, vi, type MockedFunction } from "vitest";
import {
IncrementType,
Tag,
GitService,
CoreService,
ConventionalCommitAnalyzer,
TagService,
TagIncrementer,
LocalGitService,
CoreService,
GitService,
IncrementType,
LocalCoreService,
LocalGitService,
Tag,
TagIncrementer,
TagService,
} from "./main";
// Mock child_process.execSync
jest.mock("child_process", () => ({
execSync: jest.fn(),
vi.mock("child_process", () => ({
execSync: vi.fn(),
}));
import { execSync } from "child_process";
const mockExecSync = execSync as jest.MockedFunction<typeof execSync>;
const mockExecSync = execSync as MockedFunction<typeof execSync>;
// Mock interfaces for testing
class MockGitService implements GitService {
constructor(
private mockTags: { name: string }[] = [],
private mockCommit: { commit: { message: string } } = { commit: { message: "test commit" } }
private mockCommit: { commit: { message: string } } = { commit: { message: "test commit" } },
) {}
async listTags(perPage: number): Promise<{ name: string }[]> {
@@ -174,19 +176,19 @@ describe("TagService", () => {
it("should throw error for invalid format", () => {
expect(() => tagService.parseTag("invalid")).toThrow(
"Invalid tag format: invalid. Expected semantic version (e.g., 1.2.3)"
"Invalid tag format: invalid. Expected semantic version (e.g., 1.2.3)",
);
});
it("should throw error for non-numeric versions", () => {
expect(() => tagService.parseTag("1.a.3")).toThrow(
"Invalid tag format: 1.a.3. Expected semantic version (e.g., 1.2.3)"
"Invalid tag format: 1.a.3. Expected semantic version (e.g., 1.2.3)",
);
});
it("should throw error for incomplete version", () => {
expect(() => tagService.parseTag("1.2")).toThrow(
"Invalid tag format: 1.2. Expected semantic version (e.g., 1.2.3)"
"Invalid tag format: 1.2. Expected semantic version (e.g., 1.2.3)",
);
});
});
@@ -209,7 +211,7 @@ describe("TagIncrementer", () => {
mockGitService,
mockCoreService,
mockCommitAnalyzer,
mockTagService
mockTagService,
);
});
@@ -241,7 +243,7 @@ describe("TagIncrementer", () => {
expect(result).toBe("0.0.0");
expect(mockCoreService.getWarnings()).toContain(
"WARNING: No tags found in repository, defaulting to 0.0.0"
"WARNING: No tags found in repository, defaulting to 0.0.0",
);
});
@@ -269,7 +271,7 @@ describe("TagIncrementer", () => {
expect(result).toBe("0.0.0");
expect(mockCoreService.getWarnings()).toContain(
"WARNING: No real tags found (only pre-release tags), defaulting to 0.0.0"
"WARNING: No real tags found (only pre-release tags), defaulting to 0.0.0",
);
});
});
@@ -426,7 +428,7 @@ describe("LocalGitService", () => {
});
await expect(localGitService.testConnection()).rejects.toThrow(
"Not in a git repository. Please ensure this action runs after checkout."
"Not in a git repository. Please ensure this action runs after checkout.",
);
});
});
@@ -439,8 +441,6 @@ describe("LocalCoreService", () => {
localCoreService = new LocalCoreService();
});
// @actions/core is mocked via jest.config.js moduleNameMapper
it("should have all required methods", () => {
expect(typeof localCoreService.getInput).toBe("function");
expect(typeof localCoreService.info).toBe("function");
@@ -457,7 +457,7 @@ describe("TagIncrementer Integration", () => {
[{ 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();
@@ -467,7 +467,7 @@ describe("TagIncrementer Integration", () => {
mockGitService,
mockCoreService,
commitAnalyzer,
tagService
tagService,
);
const result = await tagIncrementer.incrementTag(undefined, "ref");
+9 -9
View File
@@ -100,7 +100,7 @@ export class TagIncrementer {
private gitService: GitService,
private coreService: CoreService,
private commitAnalyzer: ConventionalCommitAnalyzer,
private tagService: TagService
private tagService: TagService,
) {}
async getBaseTag(lastTag: string | undefined, maxTags: number = 50): Promise<string> {
@@ -138,7 +138,7 @@ export class TagIncrementer {
const analyzedCommit = this.commitAnalyzer.analyzeCommit(commit.message);
this.coreService.info(
`Analyzed commit - type: ${analyzedCommit.type}, breaking: ${analyzedCommit.breaking}`
`Analyzed commit - type: ${analyzedCommit.type}, breaking: ${analyzedCommit.breaking}`,
);
const incrementType = this.commitAnalyzer.determineIncrementType(analyzedCommit);
@@ -147,14 +147,14 @@ export class TagIncrementer {
return incrementType;
} catch (error) {
this.coreService.info(
`Error fetching commit ${ref}: ${error instanceof Error ? error.message : String(error)}`
`Error fetching commit ${ref}: ${error instanceof Error ? error.message : String(error)}`,
);
// Additional debugging for commit-related errors
if (error instanceof Error && error.message.includes("404")) {
this.coreService.info(`404 error suggests commit ${ref} was not found in repository`);
this.coreService.info(
`This could indicate: 1) SHA doesn't exist, 2) Repository access issue, 3) API endpoint mismatch`
`This could indicate: 1) SHA doesn't exist, 2) Repository access issue, 3) API endpoint mismatch`,
);
}
@@ -167,7 +167,7 @@ export class TagIncrementer {
ref: string,
maxTags: number = 50,
prerelease: boolean = false,
githubSha: string = ""
githubSha: string = "",
): Promise<string> {
this.coreService.info(`Starting tag increment process at ref ${ref}`);
@@ -175,7 +175,7 @@ export class TagIncrementer {
const parsedTag = this.tagService.parseTag(baseTag);
this.coreService.info(
`Parsed version: ${parsedTag.major}.${parsedTag.minor}.${parsedTag.patch}`
`Parsed version: ${parsedTag.major}.${parsedTag.minor}.${parsedTag.patch}`,
);
const incrementType = await this.determineIncrementType(ref);
@@ -187,7 +187,7 @@ export class TagIncrementer {
this.coreService.info(`New tag: ${renderedTag}`);
this.coreService.info(
`Successfully determined new tag: ${renderedTag} (${incrementType} increment)`
`Successfully determined new tag: ${renderedTag} (${incrementType} increment)`,
);
return renderedTag;
@@ -215,7 +215,7 @@ export class LocalGitService implements GitService {
return { commit: { message } };
} catch (error) {
throw new Error(
`Failed to get commit ${ref}: ${error instanceof Error ? error.message : String(error)}`
`Failed to get commit ${ref}: ${error instanceof Error ? error.message : String(error)}`,
);
}
}
@@ -296,7 +296,7 @@ export async function run(): Promise<void> {
ref,
maxTags,
prerelease,
githubSha
githubSha,
);
coreService.info(`Process completed successfully. New tag: ${newTag}`);
+16
View File
@@ -0,0 +1,16 @@
import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
environment: "node",
include: ["src/**/*.{spec,test}.ts"],
coverage: {
enabled: true,
provider: "v8",
include: ["src/**/*.ts"],
exclude: ["src/**/*.{spec,test}.ts"],
reporter: ["lcov"],
reportsDirectory: "coverage",
},
},
});