overlookmotel
7e75a5aab6
test(ast_visit, linter/plugins): increase test coverage for UTF-16 offset conversion ( #26287 )
...
Follow-on after #26173 and #26223 .
Expand the test coverage added in both PRs to cover more cases.
2026-09-03 14:33:15 +00:00
Cameron
8c7ea7678d
fix(ast_visit): account for trimmed source offsets ( #26223 )
...
## Summary
- keep UTF-8 translation offsets absolute when the converter is built
from source with a trimmed BOM or partial-source prefix
- extend the Oxlint BOM fixture with the reported comment-before-Unicode
case
- assert the JS plugin API returns the complete comment range and source
slice
Without the fix, the integration snapshot reports an end offset of 4 and
slices `"/*x*"`. With the fix, it reports an end offset of 5 and slices
`"/*x*/"`.
Fixes #26162
*Update*: #26173 fixed the same bug in the same way, and has been
merged. This PR adds more tests, so merging it on top.
Co-authored-by: camc314 <18101008+camc314@users.noreply.github.com >
2026-09-03 13:58:10 +01:00
overlookmotel
07851b9c5d
fix(parser): fix debug assert failure when lexer error with tokens enabled ( #26229 )
...
`Lexer::finalize_tokens` discards the last collected token - the `Eof` that terminates every token stream - and debug asserted that it was `Eof`.
Turns out that assumption does not always hold. Where the lexer cannot lex any further it emits `Kind::Undetermined`, and no `Eof` ever follows, so the last token is `Undetermined` and the debug assertion fails. This can be triggered by an unterminated string, for example:
```js
foo();
'unterminated
```
Like `Eof`, `Undetermined` is not a "real" token, so either way it's fine to remove it from the token stream. The fix is just to relax the debug assertion to accept either.
Release behaviour is unchanged - it was only a debug assert. Only came across this while running the conformance tests which compare current lexer to the new one (`oxc_lexer`).
2026-09-02 21:41:10 +00:00
renovate[bot]
9a612d57e5
chore(deps): update npm packages ( #26178 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Adoption](https://docs.renovatebot.com/merge-confidence/ ) |
[Passing](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
|
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser ))
| [`8.67.0` →
`8.68.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.67.0/8.68.0 )
|

|

|

|

|
|
[@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager ))
| [`8.67.0` →
`8.68.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.67.0/8.68.0 )
|

|

|

|

|
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys ))
| [`8.67.0` →
`8.68.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.67.0/8.68.0 )
|

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`10.8.1` →
`10.9.1`](https://renovatebot.com/diffs/npm/eslint/10.8.1/10.9.1 ) |

|

|

|

|
| [svelte](https://svelte.dev )
([source](https://redirect.github.com/sveltejs/svelte/tree/HEAD/packages/svelte ))
| [`5.56.10` →
`5.57.0`](https://renovatebot.com/diffs/npm/svelte/5.56.10/5.57.0 ) |

|

|

|

|
| [tinypool](https://redirect.github.com/tinylibs/tinypool ) | [`2.1.0` →
`2.1.2`](https://renovatebot.com/diffs/npm/tinypool/2.1.0/2.1.2 ) |

|

|

|

|
|
[vscode-languageserver-protocol](https://redirect.github.com/Microsoft/vscode-languageserver-node )
([source](https://redirect.github.com/Microsoft/vscode-languageserver-node/tree/HEAD/protocol ))
| [`3.18.2` →
`3.18.3`](https://renovatebot.com/diffs/npm/vscode-languageserver-protocol/3.18.2/3.18.3 )
|

|

|

|

|
|
[vscode-languageserver-textdocument](https://redirect.github.com/Microsoft/vscode-languageserver-node )
([source](https://redirect.github.com/Microsoft/vscode-languageserver-node/tree/HEAD/textDocument ))
| [`1.0.12` →
`1.0.14`](https://renovatebot.com/diffs/npm/vscode-languageserver-textdocument/1.0.12/1.0.14 )
|

|

|

|

|
---
### Release Notes
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/parser)</summary>
###
[`v8.68.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8680-2026-08-24 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.67.0...v8.68.0 )
This was a version bump only for parser to align it with other projects,
there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/scope-manager)</summary>
###
[`v8.68.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8680-2026-08-24 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.67.0...v8.68.0 )
This was a version bump only for scope-manager to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/visitor-keys)</summary>
###
[`v8.68.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8680-2026-08-24 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.67.0...v8.68.0 )
This was a version bump only for visitor-keys to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
###
[`v10.9.1`](https://redirect.github.com/eslint/eslint/compare/v10.9.0...5c8c2417b9ff462f2dc4e54a062c59135b45b845 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.9.0...v10.9.1 )
###
[`v10.9.0`](https://redirect.github.com/eslint/eslint/compare/v10.8.1...c27bc926e496985eb7911c09eb60914b2e4b5d0f )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.8.1...v10.9.0 )
</details>
<details>
<summary>sveltejs/svelte (svelte)</summary>
###
[`v5.57.0`](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5570 )
[Compare
Source](https://redirect.github.com/sveltejs/svelte/compare/svelte@5.56.10...svelte@5.57.0 )
##### Minor Changes
- feat: export `RenderOutput`, `SyncRenderOutput`, `Csp` and
`Sha256Source` from `svelte/server`
([#​18648](https://redirect.github.com/sveltejs/svelte/pull/18648 ))
- feat: add `has` function to `createContext`
([#​18472](https://redirect.github.com/sveltejs/svelte/pull/18472 ))
- feat: support `defaultValue` on `<select>`
([#​18591](https://redirect.github.com/sveltejs/svelte/pull/18591 ))
- feat: add getOrInsert/getOrInsertComputed to SvelteMap
([#​18728](https://redirect.github.com/sveltejs/svelte/pull/18728 ))
##### Patch Changes
- fix: block template store subscriptions on the promise that assigns
the store
([#​18582](https://redirect.github.com/sveltejs/svelte/pull/18582 ))
- fix: route $derived teardown errors through invoke\_error\_boundary
([#​18486](https://redirect.github.com/sveltejs/svelte/pull/18486 ))
- fix: track SvelteDate snapshots in reactions
([#​18700](https://redirect.github.com/sveltejs/svelte/pull/18700 ))
- fix: remove `<svelte:head>` anchors on unmount
([#​18697](https://redirect.github.com/sveltejs/svelte/pull/18697 ))
- fix: warn on undeclared shorthand event handlers on `<svelte:window>`,
`<svelte:document>` and `<svelte:body>`
([#​18480](https://redirect.github.com/sveltejs/svelte/pull/18480 ))
- perf: reuse the cached value in the `<option>`/`<select>` value guard
([#​18713](https://redirect.github.com/sveltejs/svelte/pull/18713 ))
- fix: prevent malformed AST output for `<select>` with static `value`
attribute
([#​18449](https://redirect.github.com/sveltejs/svelte/pull/18449 ))
- fix: apply ownership mutation ignores to binding assignments
([#​18718](https://redirect.github.com/sveltejs/svelte/pull/18718 ))
- fix: prevent onoutroend from firing twice when compilerOptions.hmr is
true
([#​18655](https://redirect.github.com/sveltejs/svelte/pull/18655 ))
- fix: preserve whitespace after inline elements when printing
([#​18685](https://redirect.github.com/sveltejs/svelte/pull/18685 ))
- perf: fold SSR block-open markers into the branch's first push
([#​18712](https://redirect.github.com/sveltejs/svelte/pull/18712 ))
- fix: run `onDestroy` callbacks when a server render throws
([#​18585](https://redirect.github.com/sveltejs/svelte/pull/18585 ))
- fix: report `derived_invalid_export` for `export let x =
$derived(...)` in runes mode
([#​18692](https://redirect.github.com/sveltejs/svelte/pull/18692 ))
- fix: never apply class hash to elements inside `<svelte:head>`
([#​18160](https://redirect.github.com/sveltejs/svelte/pull/18160 ))
- fix: keep `defaultChecked` on hydrated radio inputs with spread
attributes
([#​18701](https://redirect.github.com/sveltejs/svelte/pull/18701 ))
- fix: accept `onfocusin`/`onfocusout` in
`a11y_mouse_events_have_key_events`
([#​18689](https://redirect.github.com/sveltejs/svelte/pull/18689 ))
- perf: O(n²)→O(n) Map lookups for legacy `$:` reactive statement
ordering
([#​18602](https://redirect.github.com/sveltejs/svelte/pull/18602 ))
- fix: distinct memoizer on style/class directives
([#​18466](https://redirect.github.com/sveltejs/svelte/pull/18466 ))
- fix: measure nested transitions before applying their starting styles
([#​18647](https://redirect.github.com/sveltejs/svelte/pull/18647 ))
- fix: don't turn component instances stored in `$state` into state
proxies
([#​18646](https://redirect.github.com/sveltejs/svelte/pull/18646 ))
- perf: emit `$.only_child` for elements with a single child
([#​18717](https://redirect.github.com/sveltejs/svelte/pull/18717 ))
- fix: omit `bind:focused` from SSR output (it has no HTML attribute)
([#​18724](https://redirect.github.com/sveltejs/svelte/pull/18724 ))
- fix: more robust rendering of Svelte custom element slots
([#​18710](https://redirect.github.com/sveltejs/svelte/pull/18710 ))
- perf: optimize simple object destructuring in `@const` tags
([#​18390](https://redirect.github.com/sveltejs/svelte/pull/18390 ))
- fix: properly apply static textarea value attribute during CSR
([#​18727](https://redirect.github.com/sveltejs/svelte/pull/18727 ))
- fix: end a restored reaction context at the end of its synchronous
segment
([#​18694](https://redirect.github.com/sveltejs/svelte/pull/18694 ))
- fix: keep the dependencies of a reaction that throws, so deriveds it
read are neither leaked nor stuck in their error
([#​18703](https://redirect.github.com/sveltejs/svelte/pull/18703 ))
- fix: don't resurrect outroing elements when an ancestor block is
paused and resumed
([#​18431](https://redirect.github.com/sveltejs/svelte/pull/18431 ))
- perf: use `$.comment()` for single-comment templates
([#​18714](https://redirect.github.com/sveltejs/svelte/pull/18714 ))
- chore: move `@types/trusted-types` to devDependencies
([#​18730](https://redirect.github.com/sveltejs/svelte/pull/18730 ))
- perf: store setters cache as `Set` instead of `Array`
([#​18251](https://redirect.github.com/sveltejs/svelte/pull/18251 ))
- fix: transform derived assignments and select function bindings
correctly during server-side rendering
([#​18669](https://redirect.github.com/sveltejs/svelte/pull/18669 ))
- fix: keep boolean attributes with an empty string value when rendering
attribute objects on the server
([#​18721](https://redirect.github.com/sveltejs/svelte/pull/18721 ))
- fix: sync `SvelteURL` port signal when the protocol setter clears the
port
([#​18705](https://redirect.github.com/sveltejs/svelte/pull/18705 ))
- fix: block declaration tags and `{@const}` on async values read inside
closures
([#​18533](https://redirect.github.com/sveltejs/svelte/pull/18533 ))
- fix: avoid css tree-shaking for exported Snippet
([#​18540](https://redirect.github.com/sveltejs/svelte/pull/18540 ))
- perf: treat `<img loading>` as a static element again
([#​18711](https://redirect.github.com/sveltejs/svelte/pull/18711 ))
- fix: prevent `selectedcontent` mutation from changing the selected
option
([#​18495](https://redirect.github.com/sveltejs/svelte/pull/18495 ))
- fix: avoid `NaN` keyframe values in `slide` transition for elements
without a layout box
([#​18430](https://redirect.github.com/sveltejs/svelte/pull/18430 ))
- fix: preserve line feed character references in attribute values
([#​18691](https://redirect.github.com/sveltejs/svelte/pull/18691 ))
- fix: decode uppercase-`X` hex numeric character references (`&#X...;`)
([#​18708](https://redirect.github.com/sveltejs/svelte/pull/18708 ))
- chore: clarify when `$effect.pre` runs relative to DOM updates
([#​18534](https://redirect.github.com/sveltejs/svelte/pull/18534 ))
- fix: scope SSR boundary failed snippets to their boundary
([#​18593](https://redirect.github.com/sveltejs/svelte/pull/18593 ))
</details>
<details>
<summary>tinylibs/tinypool (tinypool)</summary>
###
[`v2.1.2`](https://redirect.github.com/tinylibs/tinypool/releases/tag/v2.1.2 )
[Compare
Source](https://redirect.github.com/tinylibs/tinypool/compare/v2.1.1...v2.1.2 )
Contains security fix for
<https://github.com/tinylibs/tinypool/security/advisories/GHSA-85c8-ppgw-ccpr >.
#### What's Changed
- fix: guard worker filename from proto pollution by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in
[#​135](https://redirect.github.com/tinylibs/tinypool/pull/135 )
**Full Changelog**:
<https://github.com/tinylibs/tinypool/compare/v2.1.1...v2.1.2 >
###
[`v2.1.1`](https://redirect.github.com/tinylibs/tinypool/releases/tag/v2.1.1 )
[Compare
Source](https://redirect.github.com/tinylibs/tinypool/compare/v2.1.0...v2.1.1 )
Contains security fix for
<https://github.com/tinylibs/tinypool/security/advisories/GHSA-5gmw-xhrv-c9v3 >.
#### What's Changed
- fix: guard worker options from proto pollution by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in
[#​134](https://redirect.github.com/tinylibs/tinypool/pull/134 )
**Full Changelog**:
<https://github.com/tinylibs/tinypool/compare/v2.1.0...v2.1.1 >
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **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://redirect.github.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC40OS4wIiwidXBkYXRlZEluVmVyIjoiNDQuNDkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-09-01 14:03:55 +00:00
camc314
e412cf2ce3
fix(linter): clamp invalid JS plugin locations ( #26144 )
...
Follow-up to #26138 , closes #25867 .
External plugins can report a node range past the source text. The default formatter rejects that invalid span and previously panicked. Clamp external diagnostic offsets to the source's UTF-16 length before normalizing reversed ranges.
The end-to-end fixture now covers:
- reversed locations
- negative loc values
- negative node ranges
- an out-of-range node range in Unicode source text
2026-08-28 13:33:32 +00:00
camc314
d86c1137c4
fix(linter): normalize reversed JS plugin locations ( #26138 )
...
## Summary
- normalize reversed JS plugin diagnostic locations to empty spans at their stated start
- add an end-to-end regression fixture for reversed `loc` positions
https://github.com/oxc-project/oxc/issues/25867
2026-08-27 11:11:26 +00:00
camc314
7cec5f3f69
test(linter): cover unused directives with JS plugins in Vue ( #26102 )
...
## Summary
- Add an end-to-end regression fixture for unused disable directives in Vue files when a JavaScript plugin is enabled.
- Exercise the original #25892 source and snapshot the unused rule-name diagnostics instead of panicking.
## Testing
- Confirmed the same fixture aborts with the reported out-of-bounds panic on detached pre-fix commit 9d97da14c8 .
Closes #25892
Closes #25922
Originally fixed by #25280 .
2026-08-26 10:28:49 +00:00
overlookmotel
047f7ca3b5
fix(linter/plugins): fix interaction between JS plugins and Vue rules ( #26080 )
...
While working on #26077 , Claude spotted another related bug.
JS plugins have to run last because they need to mutate the AST, and in the process they destroy the stored AST.
For files with multiple sections (Vue, Astro, Svelte), we ran native rules then JS rules for each section in turn. That appeared fine - JS rules do run last. But the problem is that some rules e.g. `vue/valid-define-emits` also access _earlier_ sections. Because JS plugins already ran on those previous sections, their ASTs have been discarded already, leading to incorrect results.
Instead, lint in 3 separate passes which each run on _all_ sections before going on to the next pass:
1. Native rules.
2. JS rules.
3. Unused directives.
i.e.:
- Before: section 1 native, section 1 JS, section 2 native, section 2 JS.
- After: section 1 native, section 2 native, section 1 JS, section 2 JS.
Unused directives check has to be in a separate final pass, as it requires both native rules and JS rules to have run before it.
Looping over sections is cheap compared to the work that happens in each turn of the loops, so I very much doubt this has a measurable impact on perf.
This change does have one visible effect: The order of diagnostics will change for multi-section files. Previously diagnostics would be output in section order, now they're in rule type (native/JS) order. I don't _think_ that matters.
2026-08-25 13:19:59 +00:00
Boshen
1193c9dbaf
chore(oxfmt): dogfood operator position at line start ( #25937 )
...
dogfood
2026-08-20 14:36:47 +00:00
ch3rry
aa49d86046
fix(linter): allow spread rule options in config types ( #25675 )
...
## Summary
- represent variadic rule options as a severity followed by zero or more
option values
- regenerate the Oxlint configuration schema and TypeScript declarations
- add a type-level regression for mapped options spread into
`no-restricted-globals`
## Root cause
The schema wrapper materialized the first `additionalItems` entry as a
required tuple element and set `minItems` to 2. A dynamic TypeScript
spread has type `T[]` and may be empty, so it cannot satisfy that
required position even though the severity-only form is already valid
through `RuleNoConfig`.
Keeping severity as the only fixed tuple item and leaving the rule
options in `additionalItems` generates `[severity, ...options]`, which
accepts both an empty spread and populated spreads without changing
runtime rule behavior.
Closes #25666
## AI assistance
Implemented with assistance from OpenAI Codex. The contributor remains
responsible for reviewing, understanding, and submitting the change
under the repository AI usage policy.
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-08-17 14:11:07 +01:00
renovate[bot]
efebf4c824
chore(deps): update npm packages ( #25753 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Adoption](https://docs.renovatebot.com/merge-confidence/ ) |
[Passing](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
| [@napi-rs/wasm-runtime](https://napi.rs/ )
([source](https://redirect.github.com/napi-rs/napi-rs/tree/HEAD/wasm-runtime ))
| [`1.2.2` →
`1.2.3`](https://renovatebot.com/diffs/npm/@napi-rs%2fwasm-runtime/1.2.2/1.2.3 )
|

|

|

|

|
|
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser ))
| [`8.66.0` →
`8.67.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.66.0/8.67.0 )
|

|

|

|

|
|
[@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager ))
| [`8.66.0` →
`8.67.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.66.0/8.67.0 )
|

|

|

|

|
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys ))
| [`8.66.0` →
`8.67.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.66.0/8.67.0 )
|

|

|

|

|
| [degit](https://redirect.github.com/Rich-Harris/degit ) | [`3.6.6` →
`3.7.0`](https://renovatebot.com/diffs/npm/degit/3.6.6/3.7.0 ) |

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`10.8.0` →
`10.8.1`](https://renovatebot.com/diffs/npm/eslint/10.8.0/10.8.1 ) |

|

|

|

|
|
[serialize-javascript](https://redirect.github.com/yahoo/serialize-javascript )
| [`7.0.7` →
`7.1.0`](https://renovatebot.com/diffs/npm/serialize-javascript/7.0.7/7.1.0 )
|

|

|

|

|
| [svelte](https://svelte.dev )
([source](https://redirect.github.com/sveltejs/svelte/tree/HEAD/packages/svelte ))
| [`5.56.8` →
`5.56.9`](https://renovatebot.com/diffs/npm/svelte/5.56.8/5.56.9 ) |

|

|

|

|
| [tsx](https://tsx.hirok.io )
([source](https://redirect.github.com/privatenumber/tsx )) | [`4.23.9` →
`4.23.12`](https://renovatebot.com/diffs/npm/tsx/4.23.9/4.23.12 ) |

|

|

|

|
---
### Release Notes
<details>
<summary>napi-rs/napi-rs (@​napi-rs/wasm-runtime)</summary>
###
[`v1.2.3`](https://redirect.github.com/napi-rs/napi-rs/blob/HEAD/wasm-runtime/CHANGELOG.md#123-2026-08-12 )
[Compare
Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.2.2...@napi-rs/wasm-runtime@1.2.3 )
##### Bug Fixes
- **cli:** compatible with emnapi v1 & v2
([#​3454](https://redirect.github.com/napi-rs/napi-rs/issues/3454 ))
([aeba312](https://redirect.github.com/napi-rs/napi-rs/commit/aeba31217201e96435848fd17055478ff7cf8b98 ))
- **deps:** update emnapi to v2.0.0-alpha.4
([#​3451](https://redirect.github.com/napi-rs/napi-rs/issues/3451 ))
([b8ba732](https://redirect.github.com/napi-rs/napi-rs/commit/b8ba732c4611a54dde09dfe3da750f50726b51d9 ))
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/parser)</summary>
###
[`v8.67.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8670-2026-08-10 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.66.0...v8.67.0 )
This was a version bump only for parser to align it with other projects,
there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/scope-manager)</summary>
###
[`v8.67.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8670-2026-08-10 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.66.0...v8.67.0 )
This was a version bump only for scope-manager to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/visitor-keys)</summary>
###
[`v8.67.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8670-2026-08-10 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.66.0...v8.67.0 )
This was a version bump only for visitor-keys to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>Rich-Harris/degit (degit)</summary>
###
[`v3.7.0`](https://redirect.github.com/Rich-Harris/degit/compare/v3.6.6...v3.7.0 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.6.6...v3.7.0 )
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
###
[`v10.8.1`](https://redirect.github.com/eslint/eslint/releases/tag/v10.8.1 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.8.0...v10.8.1 )
#### Bug Fixes
-
[`18eb0a7`](https://redirect.github.com/eslint/eslint/commit/18eb0a7e787b9fac3049ef3dad0e845d2bd940a4 )
fix: prevent ASI hazard in `no-unused-labels` autofix
([#​21173](https://redirect.github.com/eslint/eslint/issues/21173 ))
(dongkyu lee)
-
[`151ba3f`](https://redirect.github.com/eslint/eslint/commit/151ba3f5834a0909e8b9b1736f4889ac694c0104 )
fix: false positives in `getter-return` and `accessor-pairs`
([#​21163](https://redirect.github.com/eslint/eslint/issues/21163 ))
(Grit)
-
[`6898df9`](https://redirect.github.com/eslint/eslint/commit/6898df9364639ee64b9448a4cb6b08a30c16bd37 )
fix: ignore meta-property names in `id-denylist`
([#​21166](https://redirect.github.com/eslint/eslint/issues/21166 ))
(Pixel)
-
[`4d7db66`](https://redirect.github.com/eslint/eslint/commit/4d7db6628e2badf0857cb88734fe641c3874bce9 )
fix: ignore meta-property names in `id-match`
([#​21167](https://redirect.github.com/eslint/eslint/issues/21167 ))
(Pixel)
-
[`677214e`](https://redirect.github.com/eslint/eslint/commit/677214e7eea83d8bc6e4b79eea871577e1369d5f )
fix: handle ASI hazards in no-unused-vars removeVar suggestion
([#​20935](https://redirect.github.com/eslint/eslint/issues/20935 ))
(kuldeep kumar)
#### Documentation
-
[`7d0cbf8`](https://redirect.github.com/eslint/eslint/commit/7d0cbf81cfdb7526b5c4cb7b222ddc7f257db560 )
docs: Update README (GitHub Actions Bot)
-
[`0a05812`](https://redirect.github.com/eslint/eslint/commit/0a05812adb12598b32e85297b98df5ad14501d60 )
docs: add missing backticks to `no-duplicate-imports.js`
([#​21183](https://redirect.github.com/eslint/eslint/issues/21183 ))
(Lee Daeun)
-
[`678c90b`](https://redirect.github.com/eslint/eslint/commit/678c90b55da2889d4400cbf6e2584ab683faf202 )
docs: Update README (GitHub Actions Bot)
-
[`8a10424`](https://redirect.github.com/eslint/eslint/commit/8a104242e8e1c5614940fab7324346974cff7d26 )
docs: Update README (GitHub Actions Bot)
-
[`69bb948`](https://redirect.github.com/eslint/eslint/commit/69bb948061105426dbe6e3c931fcda783286e020 )
docs: Update README (GitHub Actions Bot)
#### Chores
-
[`0a14800`](https://redirect.github.com/eslint/eslint/commit/0a148005051fded2ef1d14cc228ae505251b4b10 )
chore: update github/codeql-action action to v4.37.4
([#​21196](https://redirect.github.com/eslint/eslint/issues/21196 ))
(renovate\[bot])
-
[`05adcb1`](https://redirect.github.com/eslint/eslint/commit/05adcb13542061dc7fadde5cd58d23d405a96d93 )
test: fix failing ecosystem test for `eslint-plugin-unicorn`
([#​21191](https://redirect.github.com/eslint/eslint/issues/21191 ))
(Lazizbek Ergashev)
-
[`5611035`](https://redirect.github.com/eslint/eslint/commit/56110356652dd614b3cf0933538abb551fc6bd6f )
test: add error locations info to `no-void`
([#​21185](https://redirect.github.com/eslint/eslint/issues/21185 ))
(Lee Daeun)
-
[`ee47333`](https://redirect.github.com/eslint/eslint/commit/ee47333aa681cfc3cb54df08c38f211ea219cc2a )
ci: bump github/codeql-action from 4 to 4.37.3
([#​21176](https://redirect.github.com/eslint/eslint/issues/21176 ))
(dependabot\[bot])
-
[`f131c03`](https://redirect.github.com/eslint/eslint/commit/f131c034ad91bbf06bcbb6b5e931447a8e419a46 )
chore: improve ecosystem test failure reporting
([#​20937](https://redirect.github.com/eslint/eslint/issues/20937 ))
(crimsonjay0)
-
[`1f6edde`](https://redirect.github.com/eslint/eslint/commit/1f6eddee609b369b50993eab08d437dda4700991 )
chore: update ecosystem plugins
([#​21182](https://redirect.github.com/eslint/eslint/issues/21182 ))
(ESLint Bot)
-
[`d3266fb`](https://redirect.github.com/eslint/eslint/commit/d3266fb26c719c6b90a6cbe54bb120c9335ad19c )
chore: unpin `webpack` dependency
([#​21172](https://redirect.github.com/eslint/eslint/issues/21172 ))
(Francesco Trotta)
-
[`65a6519`](https://redirect.github.com/eslint/eslint/commit/65a6519cc8733b4688558a8611397cf9d01dd55d )
chore: add allowScripts field to package.json
([#​21092](https://redirect.github.com/eslint/eslint/issues/21092 ))
(GiHoon Noh)
-
[`22e5256`](https://redirect.github.com/eslint/eslint/commit/22e52568536e0009d4493dc888736bc163220c4b )
ci: add `triage:no` label to Dependabot PRs
([#​21141](https://redirect.github.com/eslint/eslint/issues/21141 ))
(lumir)
-
[`55c9038`](https://redirect.github.com/eslint/eslint/commit/55c9038836c91b6bd5617f0c97bea2274c9cc0bf )
ci: bump actions/labeler from 6 to 7
([#​21159](https://redirect.github.com/eslint/eslint/issues/21159 ))
(dependabot\[bot])
-
[`7280e78`](https://redirect.github.com/eslint/eslint/commit/7280e78183d4711a49916b6a49ba5efaa651a991 )
chore: update dependency prettier to v3.9.6
([#​21162](https://redirect.github.com/eslint/eslint/issues/21162 ))
(renovate\[bot])
-
[`eddbad6`](https://redirect.github.com/eslint/eslint/commit/eddbad60158d8cda86830fbe934a9d2282273b32 )
test: fix failing ecosystem test for `eslint-plugin-unicorn`
([#​21156](https://redirect.github.com/eslint/eslint/issues/21156 ))
(Francesco Trotta)
-
[`60a178d`](https://redirect.github.com/eslint/eslint/commit/60a178d5ef1b0c471be0831031ed7347f8f81dc2 )
chore: update ecosystem plugins
([#​21150](https://redirect.github.com/eslint/eslint/issues/21150 ))
(ESLint Bot)
-
[`f9f61dc`](https://redirect.github.com/eslint/eslint/commit/f9f61dc6112836f46a58a410c38b8c2faf10973f )
test: add error locations to `no-unreachable`
([#​21151](https://redirect.github.com/eslint/eslint/issues/21151 ))
(JIYEON)
-
[`d086293`](https://redirect.github.com/eslint/eslint/commit/d08629382b0a6aaa042823b796e5100e60053b54 )
test: add error locations to `no-undef`
([#​21147](https://redirect.github.com/eslint/eslint/issues/21147 ))
(JIYEON)
-
[`cc01b67`](https://redirect.github.com/eslint/eslint/commit/cc01b67061bbf558aa25746883ea1cad847f7cf2 )
test: add error locations to `no-useless-catch`
([#​21144](https://redirect.github.com/eslint/eslint/issues/21144 ))
(devoil)
-
[`688e75e`](https://redirect.github.com/eslint/eslint/commit/688e75ede01b295d51f2f86c9d82da020a4c887e )
chore: add missing backticks in JSDoc
([#​21143](https://redirect.github.com/eslint/eslint/issues/21143 ))
(Bo Hyun Kim)
-
[`7c1e175`](https://redirect.github.com/eslint/eslint/commit/7c1e17543ad396f50f65b003cf9142d43d3c63b0 )
test: add error locations to `require-await`
([#​21145](https://redirect.github.com/eslint/eslint/issues/21145 ))
(Grit)
-
[`588a26d`](https://redirect.github.com/eslint/eslint/commit/588a26ddce3c5a20f5b3f3d51ba1353cce7b4b0c )
test: add error locations to `no-extra-label`
([#​21139](https://redirect.github.com/eslint/eslint/issues/21139 ))
(dongkyu lee)
-
[`059aa89`](https://redirect.github.com/eslint/eslint/commit/059aa895743639e3ab53d14f9d944ff4be042233 )
test: add error locations to `no-useless-concat`
([#​21140](https://redirect.github.com/eslint/eslint/issues/21140 ))
(dongkyu lee)
-
[`5a452a8`](https://redirect.github.com/eslint/eslint/commit/5a452a8ba53917d65c9d83c3959ed35c2f890613 )
test: add error locations to `no-const-assign`
([#​21138](https://redirect.github.com/eslint/eslint/issues/21138 ))
(dongkyu lee)
</details>
<details>
<summary>yahoo/serialize-javascript (serialize-javascript)</summary>
###
[`v7.1.0`](https://redirect.github.com/yahoo/serialize-javascript/releases/tag/v7.1.0 )
[Compare
Source](https://redirect.github.com/yahoo/serialize-javascript/compare/v7.0.7...v7.1.0 )
#### What's Changed
- feat: add Node.js 26 to test matrix by
[@​okuryu](https://redirect.github.com/okuryu ) in
[#​224](https://redirect.github.com/yahoo/serialize-javascript/pull/224 )
- release: v7.1.0 by
[@​okuryu](https://redirect.github.com/okuryu ) in
[#​225](https://redirect.github.com/yahoo/serialize-javascript/pull/225 )
**Full Changelog**:
<https://github.com/yahoo/serialize-javascript/compare/v7.0.7...v7.1.0 >
</details>
<details>
<summary>sveltejs/svelte (svelte)</summary>
###
[`v5.56.9`](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5569 )
[Compare
Source](https://redirect.github.com/sveltejs/svelte/compare/svelte@5.56.8...svelte@5.56.9 )
##### Patch Changes
- fix: skip controlled each fast path while another batch is pending
([#​18625](https://redirect.github.com/sveltejs/svelte/pull/18625 ))
- fix: better whitespace handling inside printer
([#​18638](https://redirect.github.com/sveltejs/svelte/pull/18638 ))
- fix: don't duplicate comments in attributes
([#​18636](https://redirect.github.com/sveltejs/svelte/pull/18636 ))
- fix: preserve CSS comments in the AST printer
([#​18637](https://redirect.github.com/sveltejs/svelte/pull/18637 ))
</details>
<details>
<summary>privatenumber/tsx (tsx)</summary>
###
[`v4.23.12`](https://redirect.github.com/privatenumber/tsx/releases/tag/v4.23.12 )
[Compare
Source](https://redirect.github.com/privatenumber/tsx/compare/v4.23.11...v4.23.12 )
##### Bug Fixes
- shim `import.meta` when tokens are split by comments or newlines
([#​829](https://redirect.github.com/privatenumber/tsx/issues/829 ))
([ed9d330](https://redirect.github.com/privatenumber/tsx/commit/ed9d33046a135de13a35fdfce12368b79d1b1518 )),
closes
[#​828](https://redirect.github.com/privatenumber/tsx/issues/828 )
***
This release is also available on:
- [npm package (@​latest
dist-tag)](https://www.npmjs.com/package/tsx/v/4.23.12 )
###
[`v4.23.11`](https://redirect.github.com/privatenumber/tsx/compare/v4.23.10...bd3bc6448e957c1172eb91a0584ec7fec2d6a7ad )
[Compare
Source](https://redirect.github.com/privatenumber/tsx/compare/v4.23.10...v4.23.11 )
###
[`v4.23.10`](https://redirect.github.com/privatenumber/tsx/releases/tag/v4.23.10 )
[Compare
Source](https://redirect.github.com/privatenumber/tsx/compare/v4.23.9...v4.23.10 )
##### Bug Fixes
- support nyc coverage discovery
([#​710](https://redirect.github.com/privatenumber/tsx/issues/710 ))
([ec1bcd5](https://redirect.github.com/privatenumber/tsx/commit/ec1bcd5f711e5159b67cb0aea211f06cf2cfce8a ))
***
This release is also available on:
- [npm package (@​latest
dist-tag)](https://www.npmjs.com/package/tsx/v/4.23.10 )
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yOS41IiwidXBkYXRlZEluVmVyIjoiNDQuMjkuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-08-17 08:35:47 +00:00
camc314
1d22912cb4
fix(linter/plugins): parse rule-less directive justifications ( #25559 )
...
## Summary
- extract directive justifications before parsing directive labels, matching ESLint
- return an empty rule value for rule-less directives while preserving their justification
- cover block, enable, line, and next-line directives with both eslint and oxlint prefixes
Closes #25556
2026-08-12 16:44:01 +00:00
camc314
9d4592c72f
fix(linter): reject duplicate JS plugin names ( #25243 )
...
## Summary
- reject JS plugins whose normalized names collide
- keep registered plugin names isolated per LSP workspace
- add a CLI regression fixture covering two plugins that expose the same rule name
Fixes #25164
2026-08-03 09:40:27 +00:00
renovate[bot]
d0c45aaf7c
chore(deps): update npm packages ( #25205 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Adoption](https://docs.renovatebot.com/merge-confidence/ ) |
[Passing](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
| [@napi-rs/wasm-runtime](https://napi.rs/ )
([source](https://redirect.github.com/napi-rs/napi-rs/tree/HEAD/wasm-runtime ))
| [`1.1.6` →
`1.2.1`](https://renovatebot.com/diffs/npm/@napi-rs%2fwasm-runtime/1.1.6/1.2.1 )
|

|

|

|

|
| [degit](https://redirect.github.com/Rich-Harris/degit ) | [`3.6.2` →
`3.6.5`](https://renovatebot.com/diffs/npm/degit/3.6.2/3.6.5 ) |

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`10.7.0` →
`10.8.0`](https://renovatebot.com/diffs/npm/eslint/10.7.0/10.8.0 ) |

|

|

|

|
| [playwright](https://playwright.dev )
([source](https://redirect.github.com/microsoft/playwright )) | [`1.61.1`
→ `1.62.1`](https://renovatebot.com/diffs/npm/playwright/1.61.1/1.62.1 )
|

|

|

|

|
| [svelte](https://svelte.dev )
([source](https://redirect.github.com/sveltejs/svelte/tree/HEAD/packages/svelte ))
| [`5.56.7` →
`5.56.8`](https://renovatebot.com/diffs/npm/svelte/5.56.7/5.56.8 ) |

|

|

|

|
---
### Release Notes
<details>
<summary>napi-rs/napi-rs (@​napi-rs/wasm-runtime)</summary>
###
[`v1.2.1`](https://redirect.github.com/napi-rs/napi-rs/blob/HEAD/wasm-runtime/CHANGELOG.md#121-2026-07-30 )
[Compare
Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.2.0...@napi-rs/wasm-runtime@1.2.1 )
##### Bug Fixes
- **wasm-runtime:** preserve emnapi v1 compatibility
([#​3426](https://redirect.github.com/napi-rs/napi-rs/issues/3426 ))
([856326b](https://redirect.github.com/napi-rs/napi-rs/commit/856326b3051028b0d9992227f02167227f46b07b ))
###
[`v1.2.0`](https://redirect.github.com/napi-rs/napi-rs/blob/HEAD/wasm-runtime/CHANGELOG.md#120-2026-07-28 )
[Compare
Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.1.6...@napi-rs/wasm-runtime@1.2.0 )
##### Features
- **cli:** support non-threaded WASI targets
([#​3353](https://redirect.github.com/napi-rs/napi-rs/issues/3353 ))
([b5ecfa3](https://redirect.github.com/napi-rs/napi-rs/commit/b5ecfa3d6a9fcf8e66c59e05dd4027b832b44d61 )),
closes
[#​3352](https://redirect.github.com/napi-rs/napi-rs/issues/3352 )
[#​3400](https://redirect.github.com/napi-rs/napi-rs/issues/3400 )
[#​3405](https://redirect.github.com/napi-rs/napi-rs/issues/3405 )
####
[1.1.6](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.1.5...@napi-rs/wasm-runtime@1.1.6 )
(2026-06-24)
**Note:** Version bump only for package
[@​napi-rs/wasm-runtime](https://redirect.github.com/napi-rs/wasm-runtime )
####
[1.1.5](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.1.4...@napi-rs/wasm-runtime@1.1.5 )
(2026-06-10)
##### Bug Fixes
- **wasm-runtime:** preserve Buffer return values in fs-proxy
([#​3250](https://redirect.github.com/napi-rs/napi-rs/issues/3250 ))
([c70f205](https://redirect.github.com/napi-rs/napi-rs/commit/c70f205a071c39acbd792b071bb95b2f5d2f39e8 ))
####
[1.1.4](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.1.3...@napi-rs/wasm-runtime@1.1.4 )
(2026-04-15)
##### Bug Fixes
- **wasm-runtime:** preserve full bigint values in fs proxy codec
([#​3233](https://redirect.github.com/napi-rs/napi-rs/issues/3233 ))
([0cb8eef](https://redirect.github.com/napi-rs/napi-rs/commit/0cb8eefad83938daa6a0f377f2708890d9f4b6bf ))
####
[1.1.3](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.1.2...@napi-rs/wasm-runtime@1.1.3 )
(2026-04-08)
**Note:** Version bump only for package
[@​napi-rs/wasm-runtime](https://redirect.github.com/napi-rs/wasm-runtime )
####
[1.1.2](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.1.1...@napi-rs/wasm-runtime@1.1.2 )
(2026-03-28)
##### Bug Fixes
- ensure emnapi version is synced
([#​3151](https://redirect.github.com/napi-rs/napi-rs/issues/3151 ))
([bc728d0](https://redirect.github.com/napi-rs/napi-rs/commit/bc728d0a289360b199d9dbd3b512a975f4d75d5a ))
####
[1.1.1](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.1.0...@napi-rs/wasm-runtime@1.1.1 )
(2025-12-30)
**Note:** Version bump only for package
[@​napi-rs/wasm-runtime](https://redirect.github.com/napi-rs/wasm-runtime )
</details>
<details>
<summary>Rich-Harris/degit (degit)</summary>
###
[`v3.6.5`](https://redirect.github.com/Rich-Harris/degit/compare/v3.6.4...v3.6.5 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.6.4...v3.6.5 )
###
[`v3.6.4`](https://redirect.github.com/Rich-Harris/degit/compare/v3.6.3...v3.6.4 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.6.3...v3.6.4 )
###
[`v3.6.3`](https://redirect.github.com/Rich-Harris/degit/compare/v3.6.2...v3.6.3 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.6.2...v3.6.3 )
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
###
[`v10.8.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.8.0 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.7.0...v10.8.0 )
#### Features
-
[`2fee9bb`](https://redirect.github.com/eslint/eslint/commit/2fee9bb7416116cbed4d8c8100b1ae713b6356a1 )
feat: export `ConfigObject` from `eslint/config`
([#​21082](https://redirect.github.com/eslint/eslint/issues/21082 ))
(sethamus)
#### Bug Fixes
-
[`6b8d2f7`](https://redirect.github.com/eslint/eslint/commit/6b8d2f7589b8a7c8b91b8ca2a2ef6d46178760d8 )
fix: escape reserved characters in rule id in `html` formatter
([#​21129](https://redirect.github.com/eslint/eslint/issues/21129 ))
(Francesco Trotta)
-
[`9091071`](https://redirect.github.com/eslint/eslint/commit/90910715011211a20d011d807d398a7005127f35 )
fix: prevent `no-unreachable-loop` crash when all loop types are ignored
([#​21116](https://redirect.github.com/eslint/eslint/issues/21116 ))
(Pixel)
-
[`e23fafe`](https://redirect.github.com/eslint/eslint/commit/e23fafe8d4b15355adef6cdebef414c3a2019454 )
fix: prefer-object-spread add semicolon when adding parenthesis
([#​21081](https://redirect.github.com/eslint/eslint/issues/21081 ))
(synthex-byte)
-
[`20b5ad0`](https://redirect.github.com/eslint/eslint/commit/20b5ad052360a443786a202e94624a3f81846511 )
fix: quadratic-time regex in `prefer-template`
([#​21096](https://redirect.github.com/eslint/eslint/issues/21096 ))
(Milos Djermanovic)
-
[`8b6f6c0`](https://redirect.github.com/eslint/eslint/commit/8b6f6c0b33411f34485512456d94f221daf7321f )
fix: apply ignore configs to computed methods in class-methods-use-this
([#​21094](https://redirect.github.com/eslint/eslint/issues/21094 ))
(Pixel)
-
[`b2c608c`](https://redirect.github.com/eslint/eslint/commit/b2c608c014a396800a24a89343265d0616bee2d8 )
fix: NewExpression with parenthesized callee in `preserve-caught-error`
([#​21083](https://redirect.github.com/eslint/eslint/issues/21083 ))
(Francesco Trotta)
#### Documentation
-
[`6ddf858`](https://redirect.github.com/eslint/eslint/commit/6ddf8587e5cfeeb7328332601bb76d98b8a198ea )
docs: fix broken Specify Parser Options anchor link
([#​21106](https://redirect.github.com/eslint/eslint/issues/21106 ))
(Minsu)
-
[`784dfbe`](https://redirect.github.com/eslint/eslint/commit/784dfbe98f0222426fd200153a5ce2e5624151f0 )
docs: Clarify `no-eq-null` description
([#​21120](https://redirect.github.com/eslint/eslint/issues/21120 ))
(Park Harin)
-
[`7ec733a`](https://redirect.github.com/eslint/eslint/commit/7ec733a3ba5acb053a73ac656030a3879aa48fda )
docs: Fix typos and grammar in glossary
([#​21095](https://redirect.github.com/eslint/eslint/issues/21095 ))
(Marry (Subin Yang))
-
[`92bb13f`](https://redirect.github.com/eslint/eslint/commit/92bb13f13065db72d62454b9830d3ae52db15c76 )
docs: replace quake link
([#​21108](https://redirect.github.com/eslint/eslint/issues/21108 ))
(Jung Hyeon Jun)
-
[`68eb4a5`](https://redirect.github.com/eslint/eslint/commit/68eb4a57572409dbdcfeb3bc5c92ddbba46bc770 )
docs: fix broken Specify Globals anchor links in rule pages
([#​21103](https://redirect.github.com/eslint/eslint/issues/21103 ))
(Minsu)
-
[`d28f697`](https://redirect.github.com/eslint/eslint/commit/d28f697e0d32d7446c825fd89c362db028450134 )
docs: replace Code Climate CLI links with Qlty CLI links
([#​21099](https://redirect.github.com/eslint/eslint/issues/21099 ))
(Jung Hyeon Jun)
-
[`eccc68d`](https://redirect.github.com/eslint/eslint/commit/eccc68d42564e46bc9020d19ec52d2988f3b7bfa )
docs: correct --suppressions-location option description
([#​21093](https://redirect.github.com/eslint/eslint/issues/21093 ))
(Ga eun Lee)
-
[`c5963f7`](https://redirect.github.com/eslint/eslint/commit/c5963f74bfa82a5b7ccc0607dcdcc695b8c97a31 )
docs: Update README (GitHub Actions Bot)
#### Chores
-
[`4fbf46d`](https://redirect.github.com/eslint/eslint/commit/4fbf46d140120ae838db08cbe49544c985956490 )
test: pin `webpack` version to 5.108.4
([#​21137](https://redirect.github.com/eslint/eslint/issues/21137 ))
(Francesco Trotta)
-
[`2d063e2`](https://redirect.github.com/eslint/eslint/commit/2d063e224e9bb0ccb0a28c120f7e380a8d62f320 )
chore: update HTTP URLs to HTTPS in JSDoc and comments
([#​21101](https://redirect.github.com/eslint/eslint/issues/21101 ))
(Bo Hyun Kim)
-
[`eccbe7b`](https://redirect.github.com/eslint/eslint/commit/eccbe7bc9257a6c99880468e452c8dfafbf47f74 )
test: add error locations to `no-class-assign`
([#​21123](https://redirect.github.com/eslint/eslint/issues/21123 ))
(devoil)
-
[`e7d1e43`](https://redirect.github.com/eslint/eslint/commit/e7d1e4373bf626f8da76d62ce024c28928bc99bc )
ci: bump actions/setup-go from 6 to 7
([#​21118](https://redirect.github.com/eslint/eslint/issues/21118 ))
(dependabot\[bot])
-
[`e9d66d0`](https://redirect.github.com/eslint/eslint/commit/e9d66d0cde1a7752c29dee53ab7b62632835a87a )
ci: bump actions/setup-node from 6 to 7
([#​21119](https://redirect.github.com/eslint/eslint/issues/21119 ))
(dependabot\[bot])
-
[`ee225b6`](https://redirect.github.com/eslint/eslint/commit/ee225b60c26f0cc5f4d71641888a5bd2ec5626d6 )
test: Add error location details to `no-eq-null` rule
([#​21117](https://redirect.github.com/eslint/eslint/issues/21117 ))
(Park Harin)
-
[`044a627`](https://redirect.github.com/eslint/eslint/commit/044a627fa3e28ee1410d515acc5378eb4b49f8ba )
chore: update minimatch to ^10.2.5
([#​21107](https://redirect.github.com/eslint/eslint/issues/21107 ))
(김채영)
-
[`fb09aa8`](https://redirect.github.com/eslint/eslint/commit/fb09aa8ff09730d3ccf68859e065f99666b52466 )
chore: update ecosystem plugins
([#​21115](https://redirect.github.com/eslint/eslint/issues/21115 ))
(ESLint Bot)
-
[`5abd878`](https://redirect.github.com/eslint/eslint/commit/5abd878740fe417fd8a910cac3741f2a0317b365 )
test: add error locations to `no-proto`
([#​21114](https://redirect.github.com/eslint/eslint/issues/21114 ))
(Gihyeon Jeong / 정기현)
-
[`9715887`](https://redirect.github.com/eslint/eslint/commit/9715887ec94a5ff936447d7b680d039fbe2f0541 )
test: Add error location details to `no-div-regex`
([#​21110](https://redirect.github.com/eslint/eslint/issues/21110 ))
(Park Harin)
-
[`a746ec6`](https://redirect.github.com/eslint/eslint/commit/a746ec6ea4a2249b1eb3f512264da5f4d5f7c886 )
test: add error locations to `no-new-wrappers`
([#​21109](https://redirect.github.com/eslint/eslint/issues/21109 ))
(Gihyeon Jeong / 정기현)
-
[`8dde645`](https://redirect.github.com/eslint/eslint/commit/8dde64570e240f3ef8af873d59a752db6d8519aa )
test: add error locations to `no-ex-assign`
([#​21102](https://redirect.github.com/eslint/eslint/issues/21102 ))
(devoil)
-
[`13ab0ec`](https://redirect.github.com/eslint/eslint/commit/13ab0ec447650c079d8a5e5d67222f79e69c741e )
test: add error locations to `no-label-var`
([#​21098](https://redirect.github.com/eslint/eslint/issues/21098 ))
(Gihyeon Jeong / 정기현)
-
[`a99906f`](https://redirect.github.com/eslint/eslint/commit/a99906ffb8342dde03336b5c6372b5658f21d5f2 )
test: Add error location details to `no-delete-var` rule
([#​21105](https://redirect.github.com/eslint/eslint/issues/21105 ))
(Park Harin)
-
[`c47e8dc`](https://redirect.github.com/eslint/eslint/commit/c47e8dc9bbfba797430db45ae08cb6f7392cfc9d )
chore: add missing backticks to `languages/js/index.js`
([#​21104](https://redirect.github.com/eslint/eslint/issues/21104 ))
(beeen)
-
[`0174428`](https://redirect.github.com/eslint/eslint/commit/0174428dd7543d118cf67a823b98dd97032fe68c )
chore: add missing backticks to `translate-cli-options.js`
([#​21097](https://redirect.github.com/eslint/eslint/issues/21097 ))
(dongkyu lee)
-
[`3d36589`](https://redirect.github.com/eslint/eslint/commit/3d36589a4917326500f0707bb41745160f387d00 )
chore: add missing backticks to `serialization.js`
([#​21091](https://redirect.github.com/eslint/eslint/issues/21091 ))
(이규환)
-
[`dcc9312`](https://redirect.github.com/eslint/eslint/commit/dcc9312c1081931de0fe1b555fbb6aa82fe696b9 )
test: add error locations to `eqeqeq`
([#​21090](https://redirect.github.com/eslint/eslint/issues/21090 ))
(Ga eun Lee)
-
[`2710b18`](https://redirect.github.com/eslint/eslint/commit/2710b182472cd1a95e4aff6186cb2c4fbadb4ee0 )
ci: Add explicit permissions to rebuild-docs-sites workflow
([#​21089](https://redirect.github.com/eslint/eslint/issues/21089 ))
(Marry (Subin Yang))
-
[`5d2f866`](https://redirect.github.com/eslint/eslint/commit/5d2f8663ee60701e9036b0b0933a12efd9d93269 )
chore: update dependency prettier to v3.9.5
([#​21086](https://redirect.github.com/eslint/eslint/issues/21086 ))
(renovate\[bot])
-
[`d584e31`](https://redirect.github.com/eslint/eslint/commit/d584e31098f262563b97dc5d5f23a63a187879a0 )
chore: fix failing ecosystem test for `eslint-plugin-unicorn`
([#​21084](https://redirect.github.com/eslint/eslint/issues/21084 ))
(Francesco Trotta)
-
[`bf3eda0`](https://redirect.github.com/eslint/eslint/commit/bf3eda049bd690f1e9a5a0c4520a6329b3e4ec85 )
chore: update ecosystem plugins
([#​21079](https://redirect.github.com/eslint/eslint/issues/21079 ))
(ESLint Bot)
</details>
<details>
<summary>microsoft/playwright (playwright)</summary>
###
[`v1.62.1`](https://redirect.github.com/microsoft/playwright/compare/v1.62.0...26a9e470a7b3c7822084b09fb7f13902c5f37b51 )
[Compare
Source](https://redirect.github.com/microsoft/playwright/compare/v1.62.0...v1.62.1 )
###
[`v1.62.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.62.0 )
[Compare
Source](https://redirect.github.com/microsoft/playwright/compare/v1.61.1...v1.62.0 )
##### 🧱 New component testing model
[Component testing](https://playwright.dev/docs/test-components ) moves
to a **stories and galleries** model.
A **story** wraps your component in one specific scenario — hard-coded
props, mock data, providers — and a
**gallery** page that you serve renders stories on demand. The new
[fixtures.mount()](https://playwright.dev/docs/api/class-fixtures#fixtures-mount )
fixture navigates
to the gallery, mounts a story by id, and returns a
[Locator](https://playwright.dev/docs/api/class-locator ) scoped to the
story's root element:
```js
test('click should expand', async ({ mount }) => {
const component = await mount('components/Expandable/Stateful');
await component.getByRole('button').click();
await expect(component.getByTestId('expanded')).toHaveValue('true');
});
```
Pass a story type as a template argument to type-check its props, and
use `update(props)` /
`unmount()` on the returned locator to re-render or tear down within a
test.
##### 🛑 Cancel operations with AbortSignal
Most operations and web-first assertions now accept a `signal` option
that takes an
[`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal ),
letting you
cancel long-running actions, navigations, waits, and assertions:
```js
const controller = new AbortController();
setTimeout(() => controller.abort(), 1000);
await page.getByRole('button', { name: 'Submit' }).click({ signal: controller.signal });
await expect(page.getByText('Done')).toBeVisible({ signal: controller.signal });
```
Providing a signal does not disable the default timeout; pass `timeout:
0` to disable it.
##### 🖼️ WebP screenshots
[expect(page).toHaveScreenshot()](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1 )
and
[expect(locator).toHaveScreenshot()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1 )
can now store snapshots in the WebP format — just give the snapshot a
`.webp` name:
```js
// Visual comparisons store the golden snapshot as lossless WebP.
await expect(page).toHaveScreenshot('homepage.webp');
// Standalone screenshots can trade quality for size with lossy WebP.
await page.screenshot({ path: 'homepage.webp', quality: 50 });
```
[page.screenshot()](https://playwright.dev/docs/api/class-page#page-screenshot )
and
[locator.screenshot()](https://playwright.dev/docs/api/class-locator#locator-screenshot )
also accept `webp` as a `type`,
where quality `100` (the default) is lossless and lower values use lossy
compression.
##### 🧩 Custom test filtering with Reporter.preprocess()
New
[reporter.preprocess()](https://playwright.dev/docs/api/class-reporter#reporter-preprocess )
hook runs after the configuration is resolved and before
[reporter.onBegin()](https://playwright.dev/docs/api/class-reporter#reporter-on-begin ),
letting a reporter mark individual tests as skipped, excluded,
fixed, or failing through a
[TestRun](https://playwright.dev/docs/api/class-testrun ) object:
```js
class MyReporter {
async preprocess({ config, suite, testRun }) {
for (const test of suite.allTests()) {
if (shouldSkip(test))
testRun.skip(test);
}
}
}
```
##### 🔁 Isolated retries
New
[testConfig.retryStrategy](https://playwright.dev/docs/api/class-testconfig#test-config-retry-strategy )
controls when failed tests are retried. The default
`'immediate'` retries as soon as a worker is free; `'isolated'` runs all
retries at the end,
one by one in a single worker, to minimize interference with the rest of
the suite:
```js
// playwright.config.ts
export default defineConfig({
retries: 2,
retryStrategy: 'isolated',
});
```
##### New APIs
##### Browser and Context
- New option
[`credentials`](https://playwright.dev/docs/api/class-browsercontext#browser-context-storage-state-option-credentials )
includes the context's virtual WebAuthn
[Credentials](https://playwright.dev/docs/api/class-credentials )
(passkeys) in the storage state, so they can be persisted and re-seeded
into later contexts.
##### Actions
- New `scroll` option (`"auto"` | `"none"`) on actions to opt out of
Playwright's automatic scroll-into-view.
##### Network
- New
[apiResponse.timing()](https://playwright.dev/docs/api/class-apiresponse#api-response-timing )
returns resource timing information for an API response.
##### Evaluation
- New
[locator.waitForFunction()](https://playwright.dev/docs/api/class-locator#locator-wait-for-function )
waits until a function — called with the matching element — returns a
truthy value.
-
[page.evaluate()](https://playwright.dev/docs/api/class-page#page-evaluate )
and related methods now accept functions as evaluate arguments.
-
[page.addInitScript()](https://playwright.dev/docs/api/class-page#page-add-init-script )
/
[browserContext.addInitScript()](https://playwright.dev/docs/api/class-browsercontext#browser-context-add-init-script )
now accept functions as init-script arguments.
##### Command line & MCP
- Playwright now bundles the [Playwright
MCP](https://playwright.dev/docs/getting-started-mcp ) server and
[`playwright-cli`](https://playwright.dev/docs/getting-started-cli ),
runnable via `npx playwright mcp` and `npx playwright cli`.
##### Reporters
- The HTML report's **Merge files** grouping — previously only a UI
toggle — can now be enabled from the config with the new `mergeFiles`
reporter option:
```js
// playwright.config.ts
export default defineConfig({
reporter: [['html', { mergeFiles: true }]],
});
```
##### Announcements
- ⚠️ Debian 11 is not supported anymore.
##### Browser Versions
- Chromium 151.0.7922.34
- Mozilla Firefox 153.0
- WebKit 26.5
This version was also tested against the following stable channels:
- Google Chrome 151
- Microsoft Edge 151
</details>
<details>
<summary>sveltejs/svelte (svelte)</summary>
###
[`v5.56.8`](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5568 )
[Compare
Source](https://redirect.github.com/sveltejs/svelte/compare/svelte@5.56.7...svelte@5.56.8 )
##### Patch Changes
- fix: call `onerror` and provide a working `reset` when hydrating a
failed boundary
([#​18556](https://redirect.github.com/sveltejs/svelte/pull/18556 ))
- fix: preserve select selection when spread attributes omit value
([#​18561](https://redirect.github.com/sveltejs/svelte/pull/18561 ))
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zLjIiLCJ1cGRhdGVkSW5WZXIiOiI0NC4zLjIiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-08-02 20:17:03 +01:00
Faris Tristan Fabian
1fb3d7073c
feat(oxlint): show file:line:col in github format annotation messages ( #25020 )
...
In GitHub Actions the annotation parameters (`file=`, `line=`, `col=`)
only feed the annotations panel, so the log line itself has no location:
```
Error: Function 'foo' is declared but never used.
```
A teammate hit this in my repo's CI and could not tell which file broke
the lint job. My workaround was re-running oxlint with
`--format=default` on failure, same as csvn in #21574 .
This prefixes the message with the location, same layout as [Ruff's
GitHub
renderer](https://github.com/astral-sh/ruff/blob/main/crates/ruff_db/src/diagnostic/render/github.rs ):
```
::error file=test.js,line=5,endLine=5,col=1,endColumn=10,title=eslint(no-debugger)::test.js:5:1: `debugger` statement is not allowed
```
The location does get duplicated in the annotation bubble, which is
already anchored to the line. Ruff accepted that trade for a readable
log. The filename is escaped twice on purpose, property rules for
`file=` and data rules for the message text, with a unit test covering
the difference.
Related to #21574 but this does not implement multi-format output.
Updated the unit tests, the CLI snapshots, and the github e2e fixture.
`cargo test -p oxlint` passes (396) and so does the apps/oxlint vitest
suite.
I used Claude Code to help investigate and draft this. I reviewed the
change and ran the tests myself.
2026-07-29 11:56:05 +01:00
camc314
016cf2acd6
feat(linter/oxc): add bad-match-all-arg rule ( #24900 )
...
## Summary
- add oxc/bad-match-all-arg for non-global regular expressions passed to matchAll
- share cycle-safe RegExp flag resolution with bad-replace-all-arg
- support callable and global-qualified RegExp constructors
- update generated metadata, diagnostics, timings, and CLI rule-count snapshots
Closes #24823 .
2026-07-24 14:48:45 +00:00
camc314
6ce51d3ff3
chore(deps): update dependency oxlint-tsgolint to v7.0.2000 ( #24763 )
2026-07-21 14:55:25 +00:00
renovate[bot]
68142924f7
chore(deps): update npm packages ( #24682 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Adoption](https://docs.renovatebot.com/merge-confidence/ ) |
[Passing](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
|
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser ))
| [`8.63.0` →
`8.64.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.63.0/8.64.0 )
|

|

|

|

|
|
[@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager ))
| [`8.63.0` →
`8.64.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.63.0/8.64.0 )
|

|

|

|

|
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys ))
| [`8.63.0` →
`8.64.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.63.0/8.64.0 )
|

|

|

|

|
| [degit](https://redirect.github.com/Rich-Harris/degit ) | [`3.4.7` →
`3.6.1`](https://renovatebot.com/diffs/npm/degit/3.4.7/3.6.1 ) |

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`10.6.0` →
`10.7.0`](https://renovatebot.com/diffs/npm/eslint/10.6.0/10.7.0 ) |

|

|

|

|
| [svelte](https://svelte.dev )
([source](https://redirect.github.com/sveltejs/svelte/tree/HEAD/packages/svelte ))
| [`5.56.4` →
`5.56.5`](https://renovatebot.com/diffs/npm/svelte/5.56.4/5.56.5 ) |

|

|

|

|
| [tsx](https://tsx.hirok.io )
([source](https://redirect.github.com/privatenumber/tsx )) | [`4.23.0` →
`4.23.1`](https://renovatebot.com/diffs/npm/tsx/4.23.0/4.23.1 ) |

|

|

|

|
---
### Release Notes
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/parser)</summary>
###
[`v8.64.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8640-2026-07-13 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.63.0...v8.64.0 )
This was a version bump only for parser to align it with other projects,
there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.64.0 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/scope-manager)</summary>
###
[`v8.64.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8640-2026-07-13 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.63.0...v8.64.0 )
##### 🚀 Features
- support parsing `import defer`
([#​12513](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12513 ))
##### ❤️ Thank You
- Evyatar Daud
[@​StyleShit](https://redirect.github.com/StyleShit )
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.64.0 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/visitor-keys)</summary>
###
[`v8.64.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8640-2026-07-13 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.63.0...v8.64.0 )
This was a version bump only for visitor-keys to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.64.0 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>Rich-Harris/degit (degit)</summary>
###
[`v3.6.1`](https://redirect.github.com/Rich-Harris/degit/compare/v3.6.0...v3.6.1 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.6.0...v3.6.1 )
###
[`v3.6.0`](https://redirect.github.com/Rich-Harris/degit/compare/v3.5.1...v3.6.0 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.5.1...v3.6.0 )
###
[`v3.5.1`](https://redirect.github.com/Rich-Harris/degit/compare/v3.5.0...v3.5.1 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.5.0...v3.5.1 )
###
[`v3.5.0`](https://redirect.github.com/Rich-Harris/degit/compare/v3.4.7...v3.5.0 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.4.7...v3.5.0 )
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
###
[`v10.7.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.7.0 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.6.0...v10.7.0 )
#### Features
-
[`cf2a9bf`](https://redirect.github.com/eslint/eslint/commit/cf2a9bf2d982642f760370c15f1196f4658f4e27 )
feat: add errorClassNames option to preserve-caught-error rule
([#​21032](https://redirect.github.com/eslint/eslint/issues/21032 ))
(sethamus)
-
[`f8b873a`](https://redirect.github.com/eslint/eslint/commit/f8b873aae53610b80b5c1005606716e05ed3b91f )
feat: max-nested-callbacks option for constructor callbacks
([#​21063](https://redirect.github.com/eslint/eslint/issues/21063 ))
(fnx)
-
[`557fde8`](https://redirect.github.com/eslint/eslint/commit/557fde8bc633d26ea4fe287d4483f287e8e6080f )
feat: support computed `Number.parseInt` member access in `radix` rule
([#​21041](https://redirect.github.com/eslint/eslint/issues/21041 ))
(Pixel)
-
[`0b4a73b`](https://redirect.github.com/eslint/eslint/commit/0b4a73b65808f5a8fd192f15db2bf5e47002b9f7 )
feat: add suggestions to no-compare-neg-zero
([#​21034](https://redirect.github.com/eslint/eslint/issues/21034 ))
(den$)
-
[`96cdd42`](https://redirect.github.com/eslint/eslint/commit/96cdd427db5f26c6403fba92b0f7ae4556c595ec )
feat: report invalid signed numeric radix values in `radix` rule
([#​21030](https://redirect.github.com/eslint/eslint/issues/21030 ))
(Pixel)
#### Bug Fixes
-
[`3e7bf15`](https://redirect.github.com/eslint/eslint/commit/3e7bf15e69e6d3a2c8832356bcc2e9903cc4eede )
fix: apply `ignoreClassesWithImplements` to class expressions
([#​21069](https://redirect.github.com/eslint/eslint/issues/21069 ))
(Pixel)
-
[`0d7d70c`](https://redirect.github.com/eslint/eslint/commit/0d7d70cf013ec5bf1e4f5a0fcf7128bdf059b2d4 )
fix: insert cause outside wrapping parens in preserve-caught-error
([#​21062](https://redirect.github.com/eslint/eslint/issues/21062 ))
(Mahin Anowar)
-
[`75ec753`](https://redirect.github.com/eslint/eslint/commit/75ec753226010867270787b412f3dae412e421e6 )
fix: handle static template literals in `eqeqeq` rule
([#​21058](https://redirect.github.com/eslint/eslint/issues/21058 ))
(Pixel)
-
[`b717a22`](https://redirect.github.com/eslint/eslint/commit/b717a22e2408389a2ad40af66543e46390669eb6 )
fix: prevent `eqeqeq` null option from reporting non-equality operators
([#​21057](https://redirect.github.com/eslint/eslint/issues/21057 ))
(Pixel)
-
[`e35b05f`](https://redirect.github.com/eslint/eslint/commit/e35b05f1961dcd691611bd68b6ff8a87072d6f76 )
fix: avoid `no-invalid-regexp` false positive for shadowed RegExp
([#​21051](https://redirect.github.com/eslint/eslint/issues/21051 ))
(Pixel)
-
[`a3172b6`](https://redirect.github.com/eslint/eslint/commit/a3172b69c7db63ea0321355543e3f527c7d8b76a )
fix: avoid `no-control-regex` false positive for shadowed RegExp
([#​21050](https://redirect.github.com/eslint/eslint/issues/21050 ))
(Pixel)
-
[`d1f637e`](https://redirect.github.com/eslint/eslint/commit/d1f637eca27e523d613991c6bea5b8726b810e4c )
fix: parenthesize sequence expression operands in no-implicit-coercion
([#​21045](https://redirect.github.com/eslint/eslint/issues/21045 ))
(spokodev)
-
[`8859baf`](https://redirect.github.com/eslint/eslint/commit/8859bafb018e2b23b5110d52e491b69b94ad890a )
fix: avoid prefer-numeric-literals false positive for shadowed globals
([#​21047](https://redirect.github.com/eslint/eslint/issues/21047 ))
(한국)
-
[`a9e5961`](https://redirect.github.com/eslint/eslint/commit/a9e5961050676ef29dba9649dfcd7233d21760c7 )
fix: use-isnan false positive on shadowed NaN/Number
([#​20958](https://redirect.github.com/eslint/eslint/issues/20958 ))
(sethamus)
-
[`8a240a7`](https://redirect.github.com/eslint/eslint/commit/8a240a76108f30f2476e61a925e4d32d378cce5e )
fix: avoid false positives in `radix` rule for spread arguments
([#​21044](https://redirect.github.com/eslint/eslint/issues/21044 ))
(Pixel)
#### Documentation
-
[`c30d808`](https://redirect.github.com/eslint/eslint/commit/c30d80801ca561bdf65c6c3eba4ee57dced278cf )
docs: Update README (GitHub Actions Bot)
-
[`5139800`](https://redirect.github.com/eslint/eslint/commit/5139800b23e77fdd1a76664e1b36f478942eae55 )
docs: document ESLint migration codemods in v9 and v10 guides
([#​20980](https://redirect.github.com/eslint/eslint/issues/20980 ))
(Alex Bit)
-
[`04174cb`](https://redirect.github.com/eslint/eslint/commit/04174cbfaac1f9555400b5332d69056e6aab9cc6 )
docs: Update README (GitHub Actions Bot)
-
[`026e130`](https://redirect.github.com/eslint/eslint/commit/026e1304080512bcddfd2af3557fff86474ff949 )
docs: update semver policy for bug fixes
([#​21048](https://redirect.github.com/eslint/eslint/issues/21048 ))
(Milos Djermanovic)
-
[`9d42fef`](https://redirect.github.com/eslint/eslint/commit/9d42fefb0e05ecd0b256c2ebed479fc868862f0c )
docs: Update README (GitHub Actions Bot)
-
[`b230159`](https://redirect.github.com/eslint/eslint/commit/b23015955c8d6e6516076190730f538c86927f26 )
docs: Update README (GitHub Actions Bot)
-
[`0129972`](https://redirect.github.com/eslint/eslint/commit/0129972ba122e95bece6040fda44d20f6799246a )
docs: correct `**/.js` glob to `**/*.js` in config files guide
([#​21036](https://redirect.github.com/eslint/eslint/issues/21036 ))
(EduardF1)
#### Chores
-
[`9489379`](https://redirect.github.com/eslint/eslint/commit/948937986f2aa3cccb27a4c80694a85e5b0a5f64 )
chore: update dependency
[@​eslint/eslintrc](https://redirect.github.com/eslint/eslintrc )
to ^3.3.6
([#​21076](https://redirect.github.com/eslint/eslint/issues/21076 ))
(renovate\[bot])
-
[`81a4774`](https://redirect.github.com/eslint/eslint/commit/81a4774a928211bd0c01a06a1517736ece594522 )
chore: updates for v9.39.5 release (Jenkins)
-
[`9835414`](https://redirect.github.com/eslint/eslint/commit/983541491393323d17717683f6a2e6dbef4bc3f4 )
chore: enable `$ExpectType` annotations in all TypeScript files
([#​21071](https://redirect.github.com/eslint/eslint/issues/21071 ))
(Francesco Trotta)
-
[`72adf6b`](https://redirect.github.com/eslint/eslint/commit/72adf6bd214c142b38aabb4b8f6f908079c5301a )
chore: restrict `markdownlint-cli2` updates in renovate
([#​21067](https://redirect.github.com/eslint/eslint/issues/21067 ))
(lumir)
-
[`833ec10`](https://redirect.github.com/eslint/eslint/commit/833ec10fd702644e94334edd3cd2aa313174a958 )
chore: update dependency prettier to v3.9.4
([#​21061](https://redirect.github.com/eslint/eslint/issues/21061 ))
(renovate\[bot])
-
[`7ea106d`](https://redirect.github.com/eslint/eslint/commit/7ea106ddcb6af7db8f36d62a28dbaba94d33598e )
chore: update ecosystem plugins
([#​21059](https://redirect.github.com/eslint/eslint/issues/21059 ))
(ESLint Bot)
-
[`8fb550e`](https://redirect.github.com/eslint/eslint/commit/8fb550e7c257fbdc4108fc8e63db43c1d914d472 )
chore: add prettier update commit to `.git-blame-ignore-revs`
([#​21056](https://redirect.github.com/eslint/eslint/issues/21056 ))
(lumir)
-
[`e4e1166`](https://redirect.github.com/eslint/eslint/commit/e4e11668ead6b950328c71e894563a13ef72bf84 )
chore: update dependency prettier to v3.9.1
([#​21055](https://redirect.github.com/eslint/eslint/issues/21055 ))
(renovate\[bot])
-
[`0493f53`](https://redirect.github.com/eslint/eslint/commit/0493f53f3fcec4ed69a1808dffa153dcff1380d3 )
chore: update prettier to v3.9.0
([#​21054](https://redirect.github.com/eslint/eslint/issues/21054 ))
(Pixel)
-
[`1056a99`](https://redirect.github.com/eslint/eslint/commit/1056a996c657b377dc16a58c28890d2940394408 )
chore: update dependency prettier to v3.8.5
([#​21049](https://redirect.github.com/eslint/eslint/issues/21049 ))
(renovate\[bot])
-
[`4d4155d`](https://redirect.github.com/eslint/eslint/commit/4d4155df4a21d711e8dd21a467de085e770bad35 )
ci: run ecosystem tests on pull requests
([#​21027](https://redirect.github.com/eslint/eslint/issues/21027 ))
(sethamus)
-
[`993539f`](https://redirect.github.com/eslint/eslint/commit/993539fd45d3d01aad3fbc13963e2245fdf7ee0d )
chore: update dependency
[@​eslint/json](https://redirect.github.com/eslint/json ) to ^2.0.1
([#​21042](https://redirect.github.com/eslint/eslint/issues/21042 ))
(renovate\[bot])
-
[`53f8b69`](https://redirect.github.com/eslint/eslint/commit/53f8b69c15af7398c989071ee4788b88edd48bdd )
test: add error locations to `no-constant-binary-expression`
([#​21039](https://redirect.github.com/eslint/eslint/issues/21039 ))
(lumir)
-
[`5ab71d5`](https://redirect.github.com/eslint/eslint/commit/5ab71d52f9d860df04e626fcd819a36257f21f9e )
refactor: clean up radix rule internals
([#​21015](https://redirect.github.com/eslint/eslint/issues/21015 ))
(Pixel)
-
[`a80a9a4`](https://redirect.github.com/eslint/eslint/commit/a80a9a461478838930c5545f840473840b26b0e6 )
chore: update ecosystem plugins
([#​21035](https://redirect.github.com/eslint/eslint/issues/21035 ))
(ESLint Bot)
-
[`7c9a029`](https://redirect.github.com/eslint/eslint/commit/7c9a02933cf1c231237babb8a7a32150ab72e263 )
ci: add Node.js 26 to CI
([#​20847](https://redirect.github.com/eslint/eslint/issues/20847 ))
(lumir)
</details>
<details>
<summary>sveltejs/svelte (svelte)</summary>
###
[`v5.56.5`](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5565 )
[Compare
Source](https://redirect.github.com/sveltejs/svelte/compare/svelte@5.56.4...svelte@5.56.5 )
##### Patch Changes
- chore: drop dead code that make TSGO fail
([#​18496](https://redirect.github.com/sveltejs/svelte/pull/18496 ))
- fix: don't (re)connect deriveds when read inside branch/root effects
([#​18527](https://redirect.github.com/sveltejs/svelte/pull/18527 ))
- fix: skip unnecessary derived effect in earlier batch
([#​18525](https://redirect.github.com/sveltejs/svelte/pull/18525 ))
- fix: avoid declaration tag warning in event handlers
([#​18500](https://redirect.github.com/sveltejs/svelte/pull/18500 ))
- fix: abort deriveds own AbortSignal when it disconnects
([#​18400](https://redirect.github.com/sveltejs/svelte/pull/18400 ))
- fix: ensure `$state.eager()` is correctly transormed for SSR output
([#​18530](https://redirect.github.com/sveltejs/svelte/pull/18530 ))
- fix: correctly transform declaration tags during SSR
([#​18492](https://redirect.github.com/sveltejs/svelte/pull/18492 ))
- fix: transform computed keys in keyed `{#each}` destructuring patterns
([#​18521](https://redirect.github.com/sveltejs/svelte/pull/18521 ))
- fix: chain preprocessor sourcemaps with an empty `sources[0]` instead
of dropping them
([#​18518](https://redirect.github.com/sveltejs/svelte/pull/18518 ))
- fix: clear previous\_task reference after abort in Tween to prevent
memory leak on interrupted tweens
([#​18541](https://redirect.github.com/sveltejs/svelte/pull/18541 ))
- fix: don't treat declaration tags as parts inside each blocks
([#​18507](https://redirect.github.com/sveltejs/svelte/pull/18507 ))
</details>
<details>
<summary>privatenumber/tsx (tsx)</summary>
###
[`v4.23.1`](https://redirect.github.com/privatenumber/tsx/releases/tag/v4.23.1 )
[Compare
Source](https://redirect.github.com/privatenumber/tsx/compare/v4.23.0...v4.23.1 )
##### Bug Fixes
- support tsImport after global preload
([8d4ffc2](https://redirect.github.com/privatenumber/tsx/commit/8d4ffc24f37b396ca2fe3f251aa92c4919f2c1a4 ))
- **watch:** avoid clearing piped output
([95d0672](https://redirect.github.com/privatenumber/tsx/commit/95d0672e0247a829ae4469daa493212967ea768e ))
- **watch:** treat script and dependency paths literally
([79fddde](https://redirect.github.com/privatenumber/tsx/commit/79fddde523d3bb7d0af66682ce1265f95113a073 ))
##### Performance Improvements
- index transform cache lazily
([e818ad6](https://redirect.github.com/privatenumber/tsx/commit/e818ad608159a6fb36fb8a0bd59327fec313323d ))
- load esbuild lazily in CLI
([d067938](https://redirect.github.com/privatenumber/tsx/commit/d0679381b60a55a9b5863603a4022a81db5d13c8 ))
- map Node TypeScript formats directly
([cdcc623](https://redirect.github.com/privatenumber/tsx/commit/cdcc6232a3277fb3028b226958b66c49a6d86c17 ))
- use sync module hooks on Node v22.22.3+
([f8992f1](https://redirect.github.com/privatenumber/tsx/commit/f8992f1a50213e11b7ef8ab5121c78e0d2f29384 ))
***
This release is also available on:
- [npm package (@​latest
dist-tag)](https://www.npmjs.com/package/tsx/v/4.23.1 )
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjUuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI2NS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-07-19 18:22:13 +01:00
camc314
92f154a07c
feat(oxlint,oxfmt): auto-discover .mts config files ( #24357 )
...
## Summary
- auto-discover `oxfmt.config.mts` and `oxlint.config.mts`
- watch `.mts` configs in the language server and reject `.ts`/`.mts` conflicts
- add focused CLI and LSP coverage
2026-07-10 11:38:35 +00:00
renovate[bot]
6df9e03160
chore(deps): update npm packages ( #24186 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Adoption](https://docs.renovatebot.com/merge-confidence/ ) |
[Passing](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
|
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser ))
| [`8.62.0` →
`8.62.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.62.0/8.62.1 )
|

|

|

|

|
|
[@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager ))
| [`8.62.0` →
`8.62.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.62.0/8.62.1 )
|

|

|

|

|
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys ))
| [`8.62.0` →
`8.62.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.62.0/8.62.1 )
|

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`10.5.0` →
`10.6.0`](https://renovatebot.com/diffs/npm/eslint/10.5.0/10.6.0 ) |

|

|

|

|
| [prettier](https://prettier.io )
([source](https://redirect.github.com/prettier/prettier )) | [`3.9.1` →
`3.9.4`](https://renovatebot.com/diffs/npm/prettier/3.9.1/3.9.4 ) |

|

|

|

|
|
[serialize-javascript](https://redirect.github.com/yahoo/serialize-javascript )
| [`7.0.6` →
`7.0.7`](https://renovatebot.com/diffs/npm/serialize-javascript/7.0.6/7.0.7 )
|

|

|

|

|
| [tsx](https://tsx.hirok.io )
([source](https://redirect.github.com/privatenumber/tsx )) | [`4.22.4` →
`4.22.5`](https://renovatebot.com/diffs/npm/tsx/4.22.4/4.22.5 ) |

|

|

|

|
|
[vscode-languageserver-protocol](https://redirect.github.com/Microsoft/vscode-languageserver-node )
([source](https://redirect.github.com/Microsoft/vscode-languageserver-node/tree/HEAD/protocol ))
| [`3.18.1` →
`3.18.2`](https://renovatebot.com/diffs/npm/vscode-languageserver-protocol/3.18.1/3.18.2 )
|

|

|

|

|
---
### Release Notes
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/parser)</summary>
###
[`v8.62.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8621-2026-06-29 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.62.0...v8.62.1 )
This was a version bump only for parser to align it with other projects,
there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.62.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/scope-manager)</summary>
###
[`v8.62.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8621-2026-06-29 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.62.0...v8.62.1 )
This was a version bump only for scope-manager to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.62.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/visitor-keys)</summary>
###
[`v8.62.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8621-2026-06-29 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.62.0...v8.62.1 )
This was a version bump only for visitor-keys to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.62.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
###
[`v10.6.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.6.0 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.5.0...v10.6.0 )
#### Features
-
[`b1f9106`](https://redirect.github.com/eslint/eslint/commit/b1f910628e29a018c860e2352bc14cd07c853d67 )
feat: detect Symbol() and BigInt() in no-constant-binary-expression
([#​20981](https://redirect.github.com/eslint/eslint/issues/20981 ))
(Taejin Kim)
-
[`f291007`](https://redirect.github.com/eslint/eslint/commit/f291007cb73f55c09cf3c2aa3a405df379a5c594 )
feat: add checkRelationalComparisons to no-constant-binary-expression
([#​20948](https://redirect.github.com/eslint/eslint/issues/20948 ))
(sethamus)
#### Bug Fixes
-
[`6b05784`](https://redirect.github.com/eslint/eslint/commit/6b05784eb271ac98ca3e1e2a48c4b14bb588c786 )
fix: prefer-exponentiation-operator invalid autofix at statement start
([#​20997](https://redirect.github.com/eslint/eslint/issues/20997 ))
(Milos Djermanovic)
-
[`bb9eb2a`](https://redirect.github.com/eslint/eslint/commit/bb9eb2ab28daf6e6dafc62daa6b5daf9c2b7046c )
fix: account for shadowed `Boolean` in `no-extra-boolean-cast`
([#​21013](https://redirect.github.com/eslint/eslint/issues/21013 ))
(den$)
-
[`8fd8741`](https://redirect.github.com/eslint/eslint/commit/8fd8741009a3ed7845c89bfe2fb3eaa2119b2d15 )
fix: don't report shadowed undefined in `radix` rule
([#​21011](https://redirect.github.com/eslint/eslint/issues/21011 ))
(Pixel)
-
[`5784980`](https://redirect.github.com/eslint/eslint/commit/5784980ce8ba99556db98907895d82ef49cd0a27 )
fix: don't report shadowed undefined in no-throw-literal
([#​21010](https://redirect.github.com/eslint/eslint/issues/21010 ))
(Pixel)
-
[`9cd1e6d`](https://redirect.github.com/eslint/eslint/commit/9cd1e6de5bad487a9c713bdc9fda5af7ea0babcd )
fix: suppress invalid class suggestion in no-promise-executor-return
([#​21008](https://redirect.github.com/eslint/eslint/issues/21008 ))
(Pixel)
-
[`d4eb2dc`](https://redirect.github.com/eslint/eslint/commit/d4eb2dc95f17cdf491edca91b7d9caf05b86253f )
fix: don't report shadowed undefined in prefer-promise-reject-errors
([#​21006](https://redirect.github.com/eslint/eslint/issues/21006 ))
(Pixel)
-
[`2360464`](https://redirect.github.com/eslint/eslint/commit/23604646db6d987d01edb8aa5f4d2a88bd4c01d0 )
fix: prefer-promise-reject-errors false positives for shadowed Promise
([#​21003](https://redirect.github.com/eslint/eslint/issues/21003 ))
(den$)
-
[`63d52d2`](https://redirect.github.com/eslint/eslint/commit/63d52d28de705ec46f328d18166e8b7170b3f024 )
fix: restore max-classes-per-file report range
([#​21002](https://redirect.github.com/eslint/eslint/issues/21002 ))
(Pixel)
-
[`7feaff0`](https://redirect.github.com/eslint/eslint/commit/7feaff0cfb8d6a6260d3ea56887c9161daf8c700 )
fix: callback detection logic for IIFEs in max-nested-callbacks
([#​20979](https://redirect.github.com/eslint/eslint/issues/20979 ))
(fnx)
-
[`399a2ec`](https://redirect.github.com/eslint/eslint/commit/399a2ec81bcbcff2c67920db51d9276b20ac1025 )
fix: don't report inner non-callbacks in `max-nested-callbacks`
([#​20995](https://redirect.github.com/eslint/eslint/issues/20995 ))
(Milos Djermanovic)
#### Documentation
-
[`a83683d`](https://redirect.github.com/eslint/eslint/commit/a83683db1c27193c2ad333fc5c0aedcc8a293db7 )
docs: Update README (GitHub Actions Bot)
-
[`f5449f9`](https://redirect.github.com/eslint/eslint/commit/f5449f96c2caabbc1a28b15211873e2f672f5ae5 )
docs: document userland patterns for global assertionOptions in RuleT…
([#​20986](https://redirect.github.com/eslint/eslint/issues/20986 ))
(playgirl)
-
[`bea49f7`](https://redirect.github.com/eslint/eslint/commit/bea49f7b2899ebf708482f977ef2ada41fd2c3f0 )
docs: Update README (GitHub Actions Bot)
-
[`e5f70f9`](https://redirect.github.com/eslint/eslint/commit/e5f70f9b06683a887dd0d6dc1cc91a9c9bea816d )
docs: update code-path diagrams
([#​20984](https://redirect.github.com/eslint/eslint/issues/20984 ))
(Tanuj Kanti)
-
[`8890c2d`](https://redirect.github.com/eslint/eslint/commit/8890c2d40880b195b9167735c24ec0cc5de5eb96 )
docs: add TypeScript config guidance for MCP server
([#​20796](https://redirect.github.com/eslint/eslint/issues/20796 ))
(Pierluigi Lenoci)
-
[`3eb3d9b`](https://redirect.github.com/eslint/eslint/commit/3eb3d9b1b5edecc3fcae0519ddba0e3745e889e3 )
docs: Update README (GitHub Actions Bot)
-
[`c5bb59c`](https://redirect.github.com/eslint/eslint/commit/c5bb59cf613dabafd550227b6adaa9327b1095f5 )
docs: Update README (GitHub Actions Bot)
-
[`eb3c97c`](https://redirect.github.com/eslint/eslint/commit/eb3c97c776731ce11b28cc99f0271f41b9994701 )
docs: fix grammar in prefer-const rule description
([#​20983](https://redirect.github.com/eslint/eslint/issues/20983 ))
(lumir)
#### Chores
-
[`6a42034`](https://redirect.github.com/eslint/eslint/commit/6a42034a57a816b0a313720b3b9df09455bd0b5e )
ci: run ecosystem tests on main branch
([#​20891](https://redirect.github.com/eslint/eslint/issues/20891 ))
(sethamus)
-
[`3dbacdb`](https://redirect.github.com/eslint/eslint/commit/3dbacdbb31673c87ca86ecafbb18712d8d1daed8 )
ci: bump actions/checkout from 6 to 7
([#​21014](https://redirect.github.com/eslint/eslint/issues/21014 ))
(dependabot\[bot])
-
[`c3abfca`](https://redirect.github.com/eslint/eslint/commit/c3abfca7c96cc9a244f54eeb66e9971c59280354 )
chore: correct JSDoc param types in html formatter
([#​21018](https://redirect.github.com/eslint/eslint/issues/21018 ))
(Minseon Kim)
-
[`a832320`](https://redirect.github.com/eslint/eslint/commit/a8323209cdbefefd540c5beeaa51418d8ec40f9e )
ci: split ecosystem tests into separate jobs
([#​21001](https://redirect.github.com/eslint/eslint/issues/21001 ))
(xbinaryx)
-
[`27166e7`](https://redirect.github.com/eslint/eslint/commit/27166e78511db526688afc34bbfab1a458405f3f )
chore: update ecosystem plugins
([#​21005](https://redirect.github.com/eslint/eslint/issues/21005 ))
(ESLint Bot)
-
[`865d76e`](https://redirect.github.com/eslint/eslint/commit/865d76e40107d4fa10a17fc3203b303eb8a88dc3 )
ci: bump pnpm/action-setup from 6.0.8 to 6.0.9
([#​20989](https://redirect.github.com/eslint/eslint/issues/20989 ))
(dependabot\[bot])
-
[`27a88c9`](https://redirect.github.com/eslint/eslint/commit/27a88c9fa7c040f4cd39e5a5e6e2d02441c408ef )
chore: update dependency markdown-it to v14 in root
([#​20994](https://redirect.github.com/eslint/eslint/issues/20994 ))
(Milos Djermanovic)
-
[`970cea6`](https://redirect.github.com/eslint/eslint/commit/970cea62b295d931a4109abedeb21ba192d3f2be )
chore: update dependency markdown-it to v14
([#​20993](https://redirect.github.com/eslint/eslint/issues/20993 ))
(Milos Djermanovic)
-
[`b482120`](https://redirect.github.com/eslint/eslint/commit/b482120bacb40204fbf16f3b20be7207057157a5 )
chore: update dependency prettier to v3.8.4
([#​20990](https://redirect.github.com/eslint/eslint/issues/20990 ))
(renovate\[bot])
-
[`6993fb3`](https://redirect.github.com/eslint/eslint/commit/6993fb3173da84999fc208507b93f523aa657448 )
chore: update ecosystem plugins
([#​20985](https://redirect.github.com/eslint/eslint/issues/20985 ))
(ESLint Bot)
</details>
<details>
<summary>prettier/prettier (prettier)</summary>
###
[`v3.9.4`](https://redirect.github.com/prettier/prettier/compare/3.9.3...3.9.4 )
[Compare
Source](https://redirect.github.com/prettier/prettier/compare/3.9.3...3.9.4 )
###
[`v3.9.3`](https://redirect.github.com/prettier/prettier/compare/b875c902b0509ca1ded6d4a12667d7834c8f8d00...b875c902b0509ca1ded6d4a12667d7834c8f8d00 )
[Compare
Source](https://redirect.github.com/prettier/prettier/compare/3.9.2...3.9.3 )
###
[`v3.9.2`](https://redirect.github.com/prettier/prettier/compare/3.9.1...b875c902b0509ca1ded6d4a12667d7834c8f8d00 )
[Compare
Source](https://redirect.github.com/prettier/prettier/compare/3.9.1...3.9.2 )
</details>
<details>
<summary>yahoo/serialize-javascript (serialize-javascript)</summary>
###
[`v7.0.7`](https://redirect.github.com/yahoo/serialize-javascript/compare/v7.0.6...01bec60c108143e69f6b105e443d62a13b61cbbe )
[Compare
Source](https://redirect.github.com/yahoo/serialize-javascript/compare/v7.0.6...v7.0.7 )
</details>
<details>
<summary>privatenumber/tsx (tsx)</summary>
###
[`v4.22.5`](https://redirect.github.com/privatenumber/tsx/releases/tag/v4.22.5 )
[Compare
Source](https://redirect.github.com/privatenumber/tsx/compare/v4.22.4...v4.22.5 )
##### Bug Fixes
- isolate hook state per async module.register() registration
([a305f36](https://redirect.github.com/privatenumber/tsx/commit/a305f365f0cbcc31a44549dcbb0e63dc2883e96d ))
***
This release is also available on:
- [npm package (@​latest
dist-tag)](https://www.npmjs.com/package/tsx/v/4.22.5 )
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-07-07 11:24:38 +01:00
camc314
94b6599728
fix(linter): deduplicate missing plugin errors ( #23853 )
...
Closes #23840 .
When several configured rules reference the same missing JavaScript plugin, report that plugin only once instead of emitting one diagnostic per rule. Distinct missing plugins are still reported separately.
Adds a NAPI CLI snapshot covering repeated scoped and unscoped plugin names.
2026-06-26 20:21:07 +00:00
renovate[bot]
3cdd18f557
chore(deps): update npm packages ( #23690 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Adoption](https://docs.renovatebot.com/merge-confidence/ ) |
[Passing](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
| [@codspeed/vitest-plugin](https://codspeed.io )
([source](https://redirect.github.com/CodSpeedHQ/codspeed-node )) |
[`5.5.0` →
`5.6.0`](https://renovatebot.com/diffs/npm/@codspeed%2fvitest-plugin/5.5.0/5.6.0 )
|

|

|

|

|
|
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser ))
| [`8.61.0` →
`8.61.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.61.0/8.61.1 )
|

|

|

|

|
|
[@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager ))
| [`8.61.0` →
`8.61.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.61.0/8.61.1 )
|

|

|

|

|
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys ))
| [`8.61.0` →
`8.61.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.61.0/8.61.1 )
|

|

|

|

|
| [@vitest/browser](https://vitest.dev/guide/browser/ )
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser ))
| [`4.1.8` →
`4.1.9`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/4.1.8/4.1.9 )
|

|

|

|

|
|
[@vitest/browser-playwright](https://vitest.dev/config/browser/playwright )
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright ))
| [`4.1.8` →
`4.1.9`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser-playwright/4.1.8/4.1.9 )
|

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`10.4.1` →
`10.5.0`](https://renovatebot.com/diffs/npm/eslint/10.4.1/10.5.0 ) |

|

|

|

|
| [playwright](https://playwright.dev )
([source](https://redirect.github.com/microsoft/playwright )) | [`1.60.0`
→ `1.61.0`](https://renovatebot.com/diffs/npm/playwright/1.60.0/1.61.0 )
|

|

|

|

|
|
[serialize-javascript](https://redirect.github.com/yahoo/serialize-javascript )
| [`7.0.5` →
`7.0.6`](https://renovatebot.com/diffs/npm/serialize-javascript/7.0.5/7.0.6 )
|

|

|

|

|
| [vitest](https://vitest.dev )
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest ))
| [`4.1.8` →
`4.1.9`](https://renovatebot.com/diffs/npm/vitest/4.1.8/4.1.9 ) |

|

|

|

|
---
### Release Notes
<details>
<summary>CodSpeedHQ/codspeed-node
(@​codspeed/vitest-plugin)</summary>
###
[`v5.6.0`](https://redirect.github.com/CodSpeedHQ/codspeed-node/releases/tag/v5.6.0 )
[Compare
Source](https://redirect.github.com/CodSpeedHQ/codspeed-node/compare/v5.5.0...v5.6.0 )
#### What's Changed
- feat: add MacOS support by
[@​not-matthias](https://redirect.github.com/not-matthias ) in
[#​81](https://redirect.github.com/CodSpeedHQ/codspeed-node/pull/81 )
**Full Changelog**:
<https://github.com/CodSpeedHQ/codspeed-node/compare/v5.5.0...v5.6.0 >
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/parser)</summary>
###
[`v8.61.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8611-2026-06-15 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.61.0...v8.61.1 )
This was a version bump only for parser to align it with other projects,
there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.61.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/scope-manager)</summary>
###
[`v8.61.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8611-2026-06-15 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.61.0...v8.61.1 )
This was a version bump only for scope-manager to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.61.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/visitor-keys)</summary>
###
[`v8.61.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8611-2026-06-15 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.61.0...v8.61.1 )
This was a version bump only for visitor-keys to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.61.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>vitest-dev/vitest (@​vitest/browser)</summary>
###
[`v4.1.9`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.1.9 )
[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.8...v4.1.9 )
##### 🐞 Bug Fixes
- Fix `importOriginal` with optimizer and query import \[backport to v4]
- by **Hiroshi Ogawa**, **David Harris**, **Codex**and **Vladimir** in
[#​10546](https://redirect.github.com/vitest-dev/vitest/issues/10546 )
[<samp>(a5180)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a5180190c )
- **browser**:
- Wait for orchestrator readiness before resolving browser sessions
\[backport to v4] - by **Vladimir** and **Séamus O'Connor** in
[#​10555](https://redirect.github.com/vitest-dev/vitest/issues/10555 )
[<samp>(7fb29)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7fb29651a )
- Wait for iframe tester readiness before preparing \[backport to v4] -
by **Vladimir** and **Séamus O'Connor** in
[#​10497](https://redirect.github.com/vitest-dev/vitest/issues/10497 )
and
[#​10556](https://redirect.github.com/vitest-dev/vitest/issues/10556 )
[<samp>(fbc62)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fbc626c40 )
- **mocker**:
- Hoist vi.mock() for vite-plus/test imports \[backport to v4] - by
**Hiroshi Ogawa**, **LongYinan**, **Claude Opus 4.8** and **Vladimir**
in
[#​10548](https://redirect.github.com/vitest-dev/vitest/issues/10548 )
[<samp>(2c955)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2c9559c02 )
- **pool**:
- Prevent test run hang on worker crash \[backport to v4] - by **Ari
Perkkiö** and **Jattioui Ismail** in
[#​10543](https://redirect.github.com/vitest-dev/vitest/issues/10543 )
and
[#​10564](https://redirect.github.com/vitest-dev/vitest/issues/10564 )
[<samp>(934b0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/934b0f587 )
##### [View changes on
GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.8...v4.1.9 )
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
###
[`v10.5.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.5.0 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.4.1...v10.5.0 )
#### Features
-
[`5ca8c52`](https://redirect.github.com/eslint/eslint/commit/5ca8c5278edea1fd84d3ba83d8ea3f52fb3831ad )
feat: correct stack tracking in max-nested-callbacks
([#​20973](https://redirect.github.com/eslint/eslint/issues/20973 ))
(Pixel998)
-
[`b565783`](https://redirect.github.com/eslint/eslint/commit/b5657837604fa5e8cf1278074782025cadd34b6c )
feat: report no-with violations at the with keyword
([#​20971](https://redirect.github.com/eslint/eslint/issues/20971 ))
(Pixel998)
-
[`2ce032f`](https://redirect.github.com/eslint/eslint/commit/2ce032fbc72a1a80c024c084a4f382fb6dece684 )
feat: report max-lines-per-function violations at function head
([#​20966](https://redirect.github.com/eslint/eslint/issues/20966 ))
(Pixel998)
-
[`732cb3e`](https://redirect.github.com/eslint/eslint/commit/732cb3e09d5b8b809b5f461d118a5d9fdcd6427f )
feat: report max-nested-callbacks violations at function head
([#​20967](https://redirect.github.com/eslint/eslint/issues/20967 ))
(Pixel998)
-
[`f9c138a`](https://redirect.github.com/eslint/eslint/commit/f9c138a0ba7d8e37aed39aef4a3ff1cae8c669f7 )
feat: report max-depth violations on keywords
([#​20943](https://redirect.github.com/eslint/eslint/issues/20943 ))
(Pixel998)
-
[`bdb496c`](https://redirect.github.com/eslint/eslint/commit/bdb496cc0d54b6d0a023aef9abd5f040ccff2101 )
feat: correct max-depth handling for else-if chains
([#​20944](https://redirect.github.com/eslint/eslint/issues/20944 ))
(Pixel998)
-
[`c296873`](https://redirect.github.com/eslint/eslint/commit/c29687354a7f96093f57f7d73eecb866ad5e2953 )
feat: update error loc in `max-statements` to function header
([#​20907](https://redirect.github.com/eslint/eslint/issues/20907 ))
(Taejin Kim)
#### Documentation
-
[`8ae1b5b`](https://redirect.github.com/eslint/eslint/commit/8ae1b5b856dc031cd6c701d89a4df7da4772cd56 )
docs: Update README (GitHub Actions Bot)
-
[`ca7eb90`](https://redirect.github.com/eslint/eslint/commit/ca7eb90127dcad917188bb1342623f02a272e781 )
docs: update Node.js prerequisites to include ICU support
([#​20962](https://redirect.github.com/eslint/eslint/issues/20962 ))
(Francesco Trotta)
-
[`f99b47a`](https://redirect.github.com/eslint/eslint/commit/f99b47a6799be25321552402a49303bb06a43fe4 )
docs: Update README (GitHub Actions Bot)
-
[`acf03d4`](https://redirect.github.com/eslint/eslint/commit/acf03d4eed31d259c7dc62af5b9640629784f7cc )
docs: clarify precedence of parserOptions over languageOptions
([#​20926](https://redirect.github.com/eslint/eslint/issues/20926 ))
(sethamus)
#### Chores
-
[`b18bf58`](https://redirect.github.com/eslint/eslint/commit/b18bf58c5ac748415ffffdff2d96980fbd6a57e8 )
chore: update ecosystem plugins
([#​20959](https://redirect.github.com/eslint/eslint/issues/20959 ))
(ESLint Bot)
-
[`c2d1444`](https://redirect.github.com/eslint/eslint/commit/c2d1444df77cb42e5a0b89ab70496879d180a54d )
refactor: replace areAllSegmentsUnreachable with !isAnySegmentReachable
([#​20951](https://redirect.github.com/eslint/eslint/issues/20951 ))
(Taejin Kim)
-
[`243b8c5`](https://redirect.github.com/eslint/eslint/commit/243b8c56014bbbe63771185b0731d8dd4d1316e9 )
chore: enhance config-rule to support oneOf, anyOf, and nested schemas
([#​20788](https://redirect.github.com/eslint/eslint/issues/20788 ))
(kuldeep kumar)
-
[`217b2a9`](https://redirect.github.com/eslint/eslint/commit/217b2a91f46137c5ffd693965e71306c4c15ea6b )
test: add unit tests for ParserService
([#​20949](https://redirect.github.com/eslint/eslint/issues/20949 ))
(Taejin Kim)
-
[`72003e7`](https://redirect.github.com/eslint/eslint/commit/72003e781d76bd4ee0d98a6601730d0b829070f9 )
test: add location information to error messages in `max-statements`
([#​20945](https://redirect.github.com/eslint/eslint/issues/20945 ))
(lumir)
-
[`7797c26`](https://redirect.github.com/eslint/eslint/commit/7797c266977b0bc4971aa79721813d480de72cd1 )
refactor: deduplicate isAnySegmentReachable across rules
([#​20890](https://redirect.github.com/eslint/eslint/issues/20890 ))
(Taejin Kim)
-
[`67c46fa`](https://redirect.github.com/eslint/eslint/commit/67c46fa6e4f34e88cc6bc82f8a0dcc917c65d257 )
chore: update ecosystem plugins
([#​20938](https://redirect.github.com/eslint/eslint/issues/20938 ))
(ESLint Bot)
-
[`95d8c7a`](https://redirect.github.com/eslint/eslint/commit/95d8c7a99f991abd8ab618d0ee2cbd4f58effc29 )
chore: update dependency
[@​eslint/json](https://redirect.github.com/eslint/json ) to v2
([#​20934](https://redirect.github.com/eslint/eslint/issues/20934 ))
(renovate\[bot])
-
[`cf9e496`](https://redirect.github.com/eslint/eslint/commit/cf9e496205142cd4971b9f98aed85866d1010b9c )
chore: update
[@​arethetypeswrong/cli](https://redirect.github.com/arethetypeswrong/cli )
to 0.18.3
([#​20933](https://redirect.github.com/eslint/eslint/issues/20933 ))
(Pixel998)
-
[`fb6d396`](https://redirect.github.com/eslint/eslint/commit/fb6d3960cacc51fc12383fa5ded2382adbf90c1c )
test: run type tests with TypeScript 7
([#​20868](https://redirect.github.com/eslint/eslint/issues/20868 ))
(sethamus)
</details>
<details>
<summary>microsoft/playwright (playwright)</summary>
###
[`v1.61.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.61.0 )
[Compare
Source](https://redirect.github.com/microsoft/playwright/compare/v1.60.0...v1.61.0 )
##### 🔑 WebAuthn passkeys
New [Credentials](https://playwright.dev/docs/api/class-credentials )
virtual authenticator, available via
[browserContext.credentials](https://playwright.dev/docs/api/class-browsercontext#browser-context-credentials ),
lets tests register passkeys and answer `navigator.credentials.create()`
/ `navigator.credentials.get()` ceremonies in the page — no real
hardware key required, works in all browsers:
```js
const context = await browser.newContext();
// Seed a passkey your backend provisioned for a test user.
await context.credentials.create('example.com', {
id: credentialId,
userHandle,
privateKey,
publicKey,
});
await context.credentials.install();
const page = await context.newPage();
await page.goto('https://example.com/login ');
// The page's navigator.credentials.get() is answered with the seeded passkey.
```
You can also let the app register a passkey once in a setup test, read
it back with
[credentials.get()](https://playwright.dev/docs/api/class-credentials#credentials-get ),
and seed it into later tests — see
[Credentials](https://playwright.dev/docs/api/class-credentials ) for
details.
##### 🗃️ Web Storage
New [WebStorage](https://playwright.dev/docs/api/class-webstorage ) API,
available via
[page.localStorage](https://playwright.dev/docs/api/class-page#page-local-storage )
and
[page.sessionStorage](https://playwright.dev/docs/api/class-page#page-session-storage ),
reads and writes the page's storage for the current origin:
```js
await page.localStorage.setItem('token', 'abc');
const token = await page.localStorage.getItem('token');
const items = await page.sessionStorage.items();
```
##### New APIs
##### Network
-
[apiResponse.securityDetails()](https://playwright.dev/docs/api/class-apiresponse#api-response-security-details )
and
[apiResponse.serverAddr()](https://playwright.dev/docs/api/class-apiresponse#api-response-server-addr )
mirror the browser-side
[response.securityDetails()](https://playwright.dev/docs/api/class-response#response-security-details )
and
[response.serverAddr()](https://playwright.dev/docs/api/class-response#response-server-addr ).
##### Browser and Screencast
- New option `artifactsDir` in
[browserType.connectOverCDP()](https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp )
controls where artifacts such as traces and downloads are stored when
attached to an existing browser.
- New option `cursor` in
[screencast.showActions()](https://playwright.dev/docs/api/class-screencast#screencast-show-actions )
controls the cursor decoration rendered for pointer actions.
- The `onFrame` callback in
[screencast.start()](https://playwright.dev/docs/api/class-screencast#screencast-start )
now receives a `timestamp` of when the frame was presented by the
browser.
##### Test runner
- The
[testOptions.video](https://playwright.dev/docs/api/class-testoptions#test-options-video )
option now supports the same set of modes as `trace`: new
`'on-all-retries'`, `'retain-on-first-failure'` and
`'retain-on-failure-and-retries'` values. See the [video modes
table](https://playwright.dev/docs/test-use-options#video-modes ) for
which runs are recorded and kept in each mode.
- Supported `expect.soft.poll(...)`.
- New
[fullConfig.argv](https://playwright.dev/docs/api/class-fullconfig#full-config-argv )
— a snapshot of `process.argv` from the runner process, handy for
reading custom arguments passed after the `--` separator.
- New
[fullConfig.failOnFlakyTests](https://playwright.dev/docs/api/class-fullconfig#full-config-fail-on-flaky-tests )
mirrors the config option, so reporters can explain why a flaky run
failed.
-
[testInfo.errors](https://playwright.dev/docs/api/class-testinfo#test-info-errors )
now lists each sub-error of an `AggregateError` as a separate entry.
- New `-G` command line shorthand for `--grep-invert`.
##### 🛠️ Other improvements
- Playwright now supports Ubuntu 26.04.
- HAR and trace recordings now include WebSocket requests.
##### Browser Versions
- Chromium 149.0.7827.55
- Mozilla Firefox 151.0
- WebKit 26.5
This version was also tested against the following stable channels:
- Google Chrome 149
- Microsoft Edge 149
</details>
<details>
<summary>yahoo/serialize-javascript (serialize-javascript)</summary>
###
[`v7.0.6`](https://redirect.github.com/yahoo/serialize-javascript/releases/tag/v7.0.6 )
[Compare
Source](https://redirect.github.com/yahoo/serialize-javascript/compare/v7.0.5...v7.0.6 )
##### What's Changed
- build(deps-dev): bump lodash from 4.17.23 to 4.18.1 by
[@​dependabot](https://redirect.github.com/dependabot )\[bot] in
[#​215](https://redirect.github.com/yahoo/serialize-javascript/pull/215 )
- fix: reject spoofed URL objects with non-string toString() result by
[@​redonkulus](https://redirect.github.com/redonkulus ) in
[#​217](https://redirect.github.com/yahoo/serialize-javascript/pull/217 )
- release: v7.0.6 by
[@​okuryu](https://redirect.github.com/okuryu ) in
[#​221](https://redirect.github.com/yahoo/serialize-javascript/pull/221 )
**Full Changelog**:
<https://github.com/yahoo/serialize-javascript/compare/v7.0.5...v7.0.6 >
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **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://redirect.github.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMzEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIzNS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-06-23 12:36:01 +01:00
konh
f302f4131e
fix(linter): normalize oxlint jsPlugin prefixes ( #23335 )
...
Closes #22131
## Summary
- normalize `oxlint-plugin-*` names the same way as existing
`eslint-plugin-*` names
- keep Rust `normalize_plugin_name` and JS `normalizePluginName`
behavior in sync
- reject `oxlint-plugin-*` aliases as non-normalized plugin names
- add JS plugin fixtures for package-name, `meta.name`, and scoped
package normalization
## AI Assistance
This PR was prepared with AI assistance. I reviewed the generated
changes and test results, and I am responsible for the contribution.
Co-authored-by: xiaokhkh <10765730+xiaokhkh@users.noreply.github.com >
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-15 10:46:58 +01:00
renovate[bot]
cdc0ac4aef
chore(deps): update npm packages ( #23087 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Adoption](https://docs.renovatebot.com/merge-confidence/ ) |
[Passing](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
|
[@arethetypeswrong/core](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io )
([source](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io/tree/HEAD/packages/core ))
| [`0.18.2` →
`0.18.3`](https://renovatebot.com/diffs/npm/@arethetypeswrong%2fcore/0.18.2/0.18.3 )
|

|

|

|

|
| [@codspeed/vitest-plugin](https://codspeed.io )
([source](https://redirect.github.com/CodSpeedHQ/codspeed-node )) |
[`5.4.0` →
`5.5.0`](https://renovatebot.com/diffs/npm/@codspeed%2fvitest-plugin/5.4.0/5.5.0 )
|

|

|

|

|
|
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser ))
| [`8.60.0` →
`8.60.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.60.0/8.60.1 )
|

|

|

|

|
|
[@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager ))
| [`8.60.0` →
`8.60.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.60.0/8.60.1 )
|

|

|

|

|
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys ))
| [`8.60.0` →
`8.60.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.60.0/8.60.1 )
|

|

|

|

|
| [@vitest/browser](https://vitest.dev/guide/browser/ )
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser ))
| [`4.1.7` →
`4.1.8`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/4.1.7/4.1.8 )
|

|

|

|

|
|
[@vitest/browser-playwright](https://vitest.dev/config/browser/playwright )
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright ))
| [`4.1.7` →
`4.1.8`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser-playwright/4.1.7/4.1.8 )
|

|

|

|

|
| [degit](https://redirect.github.com/Rich-Harris/degit ) | [`3.3.2` →
`3.4.1`](https://renovatebot.com/diffs/npm/degit/3.3.2/3.4.1 ) |

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`10.4.0` →
`10.4.1`](https://renovatebot.com/diffs/npm/eslint/10.4.0/10.4.1 ) |

|

|

|

|
|
[prettier-plugin-svelte](https://redirect.github.com/sveltejs/prettier-plugin-svelte )
| [`4.0.1` →
`4.1.0`](https://renovatebot.com/diffs/npm/prettier-plugin-svelte/4.0.1/4.1.0 )
|

|

|

|

|
| [svelte](https://svelte.dev )
([source](https://redirect.github.com/sveltejs/svelte/tree/HEAD/packages/svelte ))
| [`5.55.10` →
`5.56.1`](https://renovatebot.com/diffs/npm/svelte/5.55.10/5.56.1 ) |

|

|

|

|
| [tsx](https://tsx.hirok.io )
([source](https://redirect.github.com/privatenumber/tsx )) | [`4.22.3` →
`4.22.4`](https://renovatebot.com/diffs/npm/tsx/4.22.3/4.22.4 ) |

|

|

|

|
| [type-fest](https://redirect.github.com/sindresorhus/type-fest ) |
[`5.6.0` →
`5.7.0`](https://renovatebot.com/diffs/npm/type-fest/5.6.0/5.7.0 ) |

|

|

|

|
| [vitest](https://vitest.dev )
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest ))
| [`4.1.7` →
`4.1.8`](https://renovatebot.com/diffs/npm/vitest/4.1.7/4.1.8 ) |

|

|

|

|
|
[vscode-languageserver-protocol](https://redirect.github.com/Microsoft/vscode-languageserver-node )
([source](https://redirect.github.com/Microsoft/vscode-languageserver-node/tree/HEAD/protocol ))
| [`3.17.5` →
`3.18.0`](https://renovatebot.com/diffs/npm/vscode-languageserver-protocol/3.17.5/3.18.0 )
|

|

|

|

|
---
### Release Notes
<details>
<summary>arethetypeswrong/arethetypeswrong.github.io
(@​arethetypeswrong/core)</summary>
###
[`v0.18.3`](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io/blob/HEAD/packages/core/CHANGELOG.md#0183 )
##### Patch Changes
-
[`14e61d5`](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io/commit/14e61d5 ):
Update [@​types/node](https://redirect.github.com/types/node ), use
[@​typescript/native-preview](https://redirect.github.com/typescript/native-preview )
for local build/check
-
[`25031aa`](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io/commit/25031aa ):
- Fix "Cannot read properties of undefined (reading 'filename')" caused
by fflate 0.8.3
([#​258](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io/issues/258 ))
- Bump fflate to ^0.8.3
</details>
<details>
<summary>CodSpeedHQ/codspeed-node
(@​codspeed/vitest-plugin)</summary>
###
[`v5.5.0`](https://redirect.github.com/CodSpeedHQ/codspeed-node/releases/tag/v5.5.0 )
[Compare
Source](https://redirect.github.com/CodSpeedHQ/codspeed-node/compare/v5.4.0...v5.5.0 )
### Highlights
We are introducing `@codspeed/playwright`, for walltime benchmarking and
profiling of end to end browser applications through playwright.
Here's an example usage, but head to the
[docs](https://codspeed.io/docs/benchmarks/nodejs/playwright ) for more
information
```typescript
import { bench, type Page } from "@​codspeed/playwright-plugin";
import electronExecutable from "electron";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const appRoot = path.resolve(__dirname, "..");
async function waitUntilSettled(page: Page): Promise<void> {
await page.waitForFunction(() => {
const main = document.getElementById("main");
return !!main && !main.classList.contains("loading");
});
}
await bench(
"inbox-search-archive-threads",
async ({ page }) => {
await page.fill("#search", "update");
await waitUntilSettled(page);
await page.click("#select-visible-btn");
await page.click("#archive-btn");
await waitUntilSettled(page);
await page.click('#sidebar nav button[data-view="threads"]');
await waitUntilSettled(page);
},
{
target: {
kind: "electron",
appPath: path.join(appRoot, "out/main/index.js"),
cwd: appRoot,
},
beforeRound: async ({ page }) => {
page.setDefaultTimeout(180_000);
await page.waitForSelector("#main");
await waitUntilSettled(page);
},
},
);
```
Note: this plugin is only compatible with the walltime instrument.
#### What's Changed
- Add playwright profiling package by
[@​GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange )
in
[#​80](https://redirect.github.com/CodSpeedHQ/codspeed-node/pull/80 )
**Full Changelog**:
<https://github.com/CodSpeedHQ/codspeed-node/compare/v5.4.0...v5.5.0 >
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/parser)</summary>
###
[`v8.60.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8601-2026-06-01 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.60.0...v8.60.1 )
This was a version bump only for parser to align it with other projects,
there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/scope-manager)</summary>
###
[`v8.60.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8601-2026-06-01 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.60.0...v8.60.1 )
This was a version bump only for scope-manager to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/visitor-keys)</summary>
###
[`v8.60.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8601-2026-06-01 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.60.0...v8.60.1 )
This was a version bump only for visitor-keys to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>vitest-dev/vitest (@​vitest/browser)</summary>
###
[`v4.1.8`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.1.8 )
[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.7...v4.1.8 )
##### 🐞 Bug Fixes
- **browser**:
- Disable client `cdp` API when `allowWrite/allowExec: false` \[backport
to v4] - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa )
and **Codex** in
[#​10450](https://redirect.github.com/vitest-dev/vitest/issues/10450 )
[<samp>(e4067)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e4067b3b1 )
- Remove orphaned Playwright route when same module is mocked via
multiple ids \[backport to v4] - by
[@​toxik](https://redirect.github.com/toxik ) and
[@​Zelys-DFKH](https://redirect.github.com/Zelys-DFKH ) in
[#​10474](https://redirect.github.com/vitest-dev/vitest/issues/10474 )
[<samp>(675b4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/675b4343f )
##### [View changes on
GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.7...v4.1.8 )
</details>
<details>
<summary>Rich-Harris/degit (degit)</summary>
###
[`v3.4.1`](https://redirect.github.com/Rich-Harris/degit/compare/v3.4.0...v3.4.1 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.4.0...v3.4.1 )
###
[`v3.4.0`](https://redirect.github.com/Rich-Harris/degit/compare/v3.3.2...v3.4.0 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.3.2...v3.4.0 )
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
###
[`v10.4.1`](https://redirect.github.com/eslint/eslint/releases/tag/v10.4.1 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.4.0...v10.4.1 )
#### Bug Fixes
-
[`e557467`](https://redirect.github.com/eslint/eslint/commit/e557467db7496220eebcbe2ac5ea6d38c12bb1ec )
fix: update `@eslint/plugin-kit` version to 0.7.2
([#​20930](https://redirect.github.com/eslint/eslint/issues/20930 ))
(Francesco Trotta)
-
[`d4ce898`](https://redirect.github.com/eslint/eslint/commit/d4ce898796ca22c3b96aa70d3014cb85f4bac1cd )
fix: propagate failures from delegated commands
([#​20917](https://redirect.github.com/eslint/eslint/issues/20917 ))
(Minh Vu)
-
[`f4f3507`](https://redirect.github.com/eslint/eslint/commit/f4f3507460bc016b5be979c05d2969793f570cbf )
fix: prefer-arrow-callback invalid autofix with newline after `async`
([#​20916](https://redirect.github.com/eslint/eslint/issues/20916 ))
(kuldeep kumar)
-
[`c5bc78b`](https://redirect.github.com/eslint/eslint/commit/c5bc78b37e08b9054a11f0cc2d81808bb24acb85 )
fix: false positive for reference in `finally` block
([#​20655](https://redirect.github.com/eslint/eslint/issues/20655 ))
(Tanuj Kanti)
-
[`27538c0`](https://redirect.github.com/eslint/eslint/commit/27538c01f5df4e9306f6f4ba867b2dd6307fae59 )
fix: add missing CodePath and CodePathSegment types
([#​20853](https://redirect.github.com/eslint/eslint/issues/20853 ))
(Pixel998)
#### Documentation
-
[`61b0add`](https://redirect.github.com/eslint/eslint/commit/61b0add61ffc52665562be7bb96f526690a78b30 )
docs: remove deprecated rule from related rules of `max-params`
([#​20921](https://redirect.github.com/eslint/eslint/issues/20921 ))
(Tanuj Kanti)
-
[`305d5b9`](https://redirect.github.com/eslint/eslint/commit/305d5b91aeac24d36fde42f75625a8f183d4ce43 )
docs: remove deprecated rules from related rules section
([#​20911](https://redirect.github.com/eslint/eslint/issues/20911 ))
(Tanuj Kanti)
-
[`49b0202`](https://redirect.github.com/eslint/eslint/commit/49b0202d01918b8061720d586dffd7c68047090c )
docs: fix `display: none` of ad
([#​20901](https://redirect.github.com/eslint/eslint/issues/20901 ))
(Tanuj Kanti)
-
[`9067f94`](https://redirect.github.com/eslint/eslint/commit/9067f9492ec998afc5b4f057a477ecf6ebd45e44 )
docs: switch build to Node.js 24
([#​20893](https://redirect.github.com/eslint/eslint/issues/20893 ))
(Milos Djermanovic)
-
[`c91b041`](https://redirect.github.com/eslint/eslint/commit/c91b0417e3420c76807ce1fa2aea76e2de87ab86 )
docs: Update README (GitHub Actions Bot)
-
[`e349265`](https://redirect.github.com/eslint/eslint/commit/e349265cb37f3ebc837e178e48a725bb782bd870 )
docs: clarify semver strings in rule deprecation objects
([#​20885](https://redirect.github.com/eslint/eslint/issues/20885 ))
(Milos Djermanovic)
#### Chores
-
[`b0e466b`](https://redirect.github.com/eslint/eslint/commit/b0e466b6ab47bfc7de43d8de0c315d8ee83aa584 )
test: add `data` property to invalid tests cases for rules
([#​20924](https://redirect.github.com/eslint/eslint/issues/20924 ))
(Tanuj Kanti)
-
[`f78838b`](https://redirect.github.com/eslint/eslint/commit/f78838bc4c86d487e1bcc7cede260c4467721c46 )
test: add CodePath type coverage
([#​20904](https://redirect.github.com/eslint/eslint/issues/20904 ))
(Pixel998)
-
[`1daa4bd`](https://redirect.github.com/eslint/eslint/commit/1daa4bd734b79a62e317d0394394a6b38cff49f9 )
chore: update `eslint-plugin-eslint-comments` test data to latest commit
([#​20922](https://redirect.github.com/eslint/eslint/issues/20922 ))
(Francesco Trotta)
-
[`002942c`](https://redirect.github.com/eslint/eslint/commit/002942ce988ea28b78e0a2f3b074081e638b552c )
ci: declare contents:read on update-readme workflow
([#​20919](https://redirect.github.com/eslint/eslint/issues/20919 ))
(Arpit Jain)
-
[`64bca24`](https://redirect.github.com/eslint/eslint/commit/64bca24e7bed35bc3c864fc625cb2d89eca87d5b )
chore: update ecosystem plugins
([#​20912](https://redirect.github.com/eslint/eslint/issues/20912 ))
(ESLint Bot)
-
[`6d7c832`](https://redirect.github.com/eslint/eslint/commit/6d7c832950d5e92499d88e504080661f888f8f56 )
chore: ignore fflate updates in renovate
([#​20908](https://redirect.github.com/eslint/eslint/issues/20908 ))
(Pixel998)
-
[`b2c8638`](https://redirect.github.com/eslint/eslint/commit/b2c86382164d87c6203b78d52068cd6a2a6ffe30 )
ci: bump pnpm/action-setup from 6.0.7 to 6.0.8
([#​20889](https://redirect.github.com/eslint/eslint/issues/20889 ))
(dependabot\[bot])
-
[`a9b8d7f`](https://redirect.github.com/eslint/eslint/commit/a9b8d7f74c50211701cfc49710fa541fd91b2aa5 )
chore: increase maxBuffer for ecosystem tests
([#​20881](https://redirect.github.com/eslint/eslint/issues/20881 ))
(sethamus)
-
[`b702ead`](https://redirect.github.com/eslint/eslint/commit/b702ead5e1ed7cb9f28238a454797662efb37396 )
chore: update ecosystem update PR settings
([#​20884](https://redirect.github.com/eslint/eslint/issues/20884 ))
(Pixel998)
-
[`507f60e`](https://redirect.github.com/eslint/eslint/commit/507f60e9a78c9a902bc8759f066ae17a1ea6cd81 )
chore: update ecosystem plugins
([#​20882](https://redirect.github.com/eslint/eslint/issues/20882 ))
(ESLint Bot)
-
[`92f5c5b`](https://redirect.github.com/eslint/eslint/commit/92f5c5bb6bf3a5d167c8ee53a430833410295c6d )
test: add unit test for message-count
([#​20878](https://redirect.github.com/eslint/eslint/issues/20878 ))
(kuldeep kumar)
-
[`df32108`](https://redirect.github.com/eslint/eslint/commit/df321080af5758b1fa25e4b9a40e26135642dd6e )
chore: add
[@​eslint/markdown](https://redirect.github.com/eslint/markdown )
and typescript-eslint ecosystem tests
([#​20837](https://redirect.github.com/eslint/eslint/issues/20837 ))
(sethamus)
-
[`327f91d`](https://redirect.github.com/eslint/eslint/commit/327f91d36aa49f2a50ded931d841a16374fd875f )
chore: use includeIgnoreFile internally
([#​20876](https://redirect.github.com/eslint/eslint/issues/20876 ))
(Kirk Waiblinger)
-
[`f0dc4bd`](https://redirect.github.com/eslint/eslint/commit/f0dc4bd893fb3a9f44e4ddc3ad7063ffb0beacd3 )
chore: pin fflate\@​0.8.2
([#​20877](https://redirect.github.com/eslint/eslint/issues/20877 ))
(Milos Djermanovic)
-
[`0f4bd25`](https://redirect.github.com/eslint/eslint/commit/0f4bd257a67a082b756de746d9e0c4842ab764ca )
ci: run Discord alert for ecosystem test failures
([#​20873](https://redirect.github.com/eslint/eslint/issues/20873 ))
(Copilot)
</details>
<details>
<summary>sveltejs/prettier-plugin-svelte
(prettier-plugin-svelte)</summary>
###
[`v4.1.0`](https://redirect.github.com/sveltejs/prettier-plugin-svelte/blob/HEAD/CHANGELOG.md#410 )
[Compare
Source](https://redirect.github.com/sveltejs/prettier-plugin-svelte/compare/prettier-plugin-svelte@4.0.1...prettier-plugin-svelte@4.1.0 )
##### Minor Changes
- feat: support Svelte 5 declaration tags
([#​533](https://redirect.github.com/sveltejs/prettier-plugin-svelte/pull/533 ))
</details>
<details>
<summary>sveltejs/svelte (svelte)</summary>
###
[`v5.56.1`](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5561 )
[Compare
Source](https://redirect.github.com/sveltejs/svelte/compare/svelte@5.56.0...svelte@5.56.1 )
##### Patch Changes
- fix: error at compile time on duplicate snippet/declaration tag
definitions
([#​18351](https://redirect.github.com/sveltejs/svelte/pull/18351 ))
- fix: parse declaration tag contents more robustly
([#​18353](https://redirect.github.com/sveltejs/svelte/pull/18353 ))
- fix: correctly transform references to earlier declarators in a
declaration tag (e.g. `{let a = $state(0), b = $derived(a * 2)}`)
([#​18348](https://redirect.github.com/sveltejs/svelte/pull/18348 ))
- fix: avoid spurious `state_referenced_locally` warnings for `$derived`
declarations in declaration tags
([#​18348](https://redirect.github.com/sveltejs/svelte/pull/18348 ))
- fix: tolerate whitespace before `let`/`const` in declaration tags
([#​18348](https://redirect.github.com/sveltejs/svelte/pull/18348 ))
- fix: prevent infinite loop when a tag's expression ends with a
trailing `/` at the end of the input
([#​18350](https://redirect.github.com/sveltejs/svelte/pull/18350 ))
- fix: more robust parsing of declaration tags with regards to `type`
([#​18330](https://redirect.github.com/sveltejs/svelte/pull/18330 ))
- fix: preserve newlines in spread input values when the `type`
attribute is applied after `value`
([#​18345](https://redirect.github.com/sveltejs/svelte/pull/18345 ))
- fix: update `SvelteURLSearchParams` when setting duplicate keys to the
same joined value
([#​18336](https://redirect.github.com/sveltejs/svelte/pull/18336 ))
- fix: check references for blockers on server, too
([#​18352](https://redirect.github.com/sveltejs/svelte/pull/18352 ))
###
[`v5.56.0`](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5560 )
[Compare
Source](https://redirect.github.com/sveltejs/svelte/compare/svelte@5.55.10...svelte@5.56.0 )
##### Minor Changes
- feat: allow declarations in the template
([#​18282](https://redirect.github.com/sveltejs/svelte/pull/18282 ))
##### Patch Changes
- perf: use `createElement` instead of `createElementNS` for HTML
elements
([#​18262](https://redirect.github.com/sveltejs/svelte/pull/18262 ))
- perf: store `current_sources` as a `Set` for O(1) membership checks
([#​18278](https://redirect.github.com/sveltejs/svelte/pull/18278 ))
- perf: deduplicate identical hoisted templates within a component
([#​18320](https://redirect.github.com/sveltejs/svelte/pull/18320 ))
- perf: hoist `rest_props` exclude list as a module-scope `Set`
([#​18252](https://redirect.github.com/sveltejs/svelte/pull/18252 ))
</details>
<details>
<summary>privatenumber/tsx (tsx)</summary>
###
[`v4.22.4`](https://redirect.github.com/privatenumber/tsx/releases/tag/v4.22.4 )
[Compare
Source](https://redirect.github.com/privatenumber/tsx/compare/v4.22.3...v4.22.4 )
##### Bug Fixes
- resolve CommonJS directory requires inside dependencies
([#​803](https://redirect.github.com/privatenumber/tsx/issues/803 ))
([1ce8463](https://redirect.github.com/privatenumber/tsx/commit/1ce846335b7c445a3328c7d27f06424949356d97 ))
***
This release is also available on:
- [npm package (@​latest
dist-tag)](https://www.npmjs.com/package/tsx/v/4.22.4 )
</details>
<details>
<summary>sindresorhus/type-fest (type-fest)</summary>
###
[`v5.7.0`](https://redirect.github.com/sindresorhus/type-fest/releases/tag/v5.7.0 )
[Compare
Source](https://redirect.github.com/sindresorhus/type-fest/compare/v5.6.0...v5.7.0 )
##### New types
-
[`RemoveSuffix`](https://redirect.github.com/sindresorhus/type-fest/blob/main/source/remove-suffix.d.ts )
([#​1439](https://redirect.github.com/sindresorhus/type-fest/issues/1439 ))
[`d685b77`](https://redirect.github.com/sindresorhus/type-fest/commit/d685b77 )
-
[`UnwrapRequired`](https://redirect.github.com/sindresorhus/type-fest/blob/main/source/unwrap-required.d.ts )
([#​1410](https://redirect.github.com/sindresorhus/type-fest/issues/1410 ))
[`3bfee8e`](https://redirect.github.com/sindresorhus/type-fest/commit/3bfee8e )
##### Improvements
- `ExtendsStrict`: Add `distributiveUnions`, `strictNever` & `strictAny`
options
([#​1408](https://redirect.github.com/sindresorhus/type-fest/issues/1408 ))
[`9ea810b`](https://redirect.github.com/sindresorhus/type-fest/commit/9ea810b )
- `TupleOf`: Improve implementation
([#​1441](https://redirect.github.com/sindresorhus/type-fest/issues/1441 ))
[`391e1bb`](https://redirect.github.com/sindresorhus/type-fest/commit/391e1bb )
##### Fixes
- `RemovePrefix`: Fix: Remove incorrect optimization and always fallback
to `string` for non-literal prefixes
([#​1438](https://redirect.github.com/sindresorhus/type-fest/issues/1438 ))
[`9f35398`](https://redirect.github.com/sindresorhus/type-fest/commit/9f35398 )
- `DelimiterCase`: Fix behavior with non-single character delimiters
([#​1424](https://redirect.github.com/sindresorhus/type-fest/issues/1424 ))
[`9b36590`](https://redirect.github.com/sindresorhus/type-fest/commit/9b36590 )
- `RemovePrefix`: Fix `any` prefix behavior in non-strict mode
([#​1423](https://redirect.github.com/sindresorhus/type-fest/issues/1423 ))
[`c49cb75`](https://redirect.github.com/sindresorhus/type-fest/commit/c49cb75 )
- `DelimiterCase`: Fix behavior with union delimiters
([#​1422](https://redirect.github.com/sindresorhus/type-fest/issues/1422 ))
[`96172c0`](https://redirect.github.com/sindresorhus/type-fest/commit/96172c0 )
- `ApplyDefaultOptions`: Fix behavior with generic instantiations &
`any` values
([#​1411](https://redirect.github.com/sindresorhus/type-fest/issues/1411 ))
[`c46020d`](https://redirect.github.com/sindresorhus/type-fest/commit/c46020d )
- `ApplyDefaultOptions`: Fix behavior with explicit `undefined`
([#​1407](https://redirect.github.com/sindresorhus/type-fest/issues/1407 ))
[`60bfd3f`](https://redirect.github.com/sindresorhus/type-fest/commit/60bfd3f )
***
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjIwOS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-06-07 17:44:09 +01:00
Nicolas Le Cam
6cb34b8374
fix(linter/plugins): make spreading Token instances keep loc property ( #22947 )
...
Follow-up of #22238 , same logic applied to `Token` class
## Problem
`Token` instances are object-pooled and reused across files, similar to
`Comment`.
Their `loc` property is defined as a **prototype getter**, which means
it is not an own
property and is therefore invisible to the spread operator:
```js
const spread = { ...token };
"loc" in spread; // false ❌
```
This silently drops `loc` whenever a JS plugin (or rule) spreads a token
— e.g. when
building a diagnostic from `{ ...token, message: "…" }`.
`JSON.stringify` had the same problem and was patched with a `toJSON()`
workaround.
A separate `Object.defineProperty(Token.prototype, "loc", { enumerable:
true })` call
was used to make `loc` show up in `for…in` iteration, but it still
didn't fix spread.
## Fix
Define `loc` as an own accessor property on every `Token` instance using
`__defineGetter__`. Own properties are visible to spread,
`JSON.stringify,` and
`for…in` iteration, so all three work without any extra workarounds.
The getter function is defined in the class static block and captured in
a `const`
(`getTokenLoc`). Using a `const` rather than a `let` lets V8 skip
reassignment checks
at the `defineGetter(this, "loc", getTokenLoc)` call site — a pattern
already
established in the codebase for `resetLoc`.
As a result:
- `toJSON()` is removed — `JSON.stringify` now works via the own
property directly.
- `Object.defineProperty(Token.prototype, "loc", { enumerable: true })`
is removed —
no longer needed.
## Test
A spread assertion is added to the existing `tokens` fixture:
```js
const spread = { ...firstToken };
assert("loc" in spread); // was false before this fix
assert.deepEqual(spread.loc, firstToken.loc);
```
---------
Co-authored-by: overlookmotel <theoverlookmotel@gmail.com >
2026-06-06 02:24:56 +01:00
Nicolas Le Cam
27de0448ae
fix(linter/plugins): make spreading Comment instances keep loc property ( #22238 )
...
## Summary: Fixing unicorn/expiring-todo-comments via jsPlugin
## Problem
The `unicorn/expiring-todo-comments` rule failed when run through
oxlint's jsPlugin system with error:
```TypeError: Either `node` or `loc` is required```
The rule spreads Comment instances (`{...comment}`) to process each line of multi-line comments, but lost the `loc` property because:
- Comment's `loc` was a prototype getter (not an own enumerable property)
- Spread only copies own enumerable properties
## Solution
Define `loc` as an own accessor property on every `Comment` instance using
`__defineGetter__`. Own properties are visible to spread, `JSON.stringify,` and
`for…in` iteration, so all three work without any extra workarounds.
The getter function is defined in the class static block and captured in a `const`
(`getCommentLoc`). Using a `const` rather than a `let` lets V8 skip reassignment checks
at the `defineGetter(this, "loc", getCommentLoc)` call site — a pattern already
established in the codebase for `resetCommentLoc`.
As a result:
- `toJSON()` is removed — `JSON.stringify` now works via the own property directly.
- `Object.defineProperty(Comment.prototype, "loc", { enumerable: true })` is removed —
no longer needed.
## Test Results
- ✅ unicorn/expiring-todo-comments rule works (detects expired TODOs)
- ✅ updated comments fixture pass
- ✅ All untouched existing tests pass
---------
Co-authored-by: overlookmotel <theoverlookmotel@gmail.com >
2026-06-06 02:06:28 +01:00
renovate
aa3de22643
chore(deps): update npm packages ( #22699 )
...
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/ ) | [Adoption](https://docs.renovatebot.com/merge-confidence/ ) | [Passing](https://docs.renovatebot.com/merge-confidence/ ) | [Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
| [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser ) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser )) | [`8.59.3` → `8.59.4`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.59.3/8.59.4 ) |  |  |  |  |
| [@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager ) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager )) | [`8.59.3` → `8.59.4`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.59.3/8.59.4 ) |  |  |  |  |
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io ) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys )) | [`8.59.3` → `8.59.4`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.59.3/8.59.4 ) |  |  |  |  |
| [@vitest/browser](https://vitest.dev/guide/browser/ ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser )) | [`4.1.6` → `4.1.7`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/4.1.6/4.1.7 ) |  |  |  |  |
| [@vitest/browser-playwright](https://vitest.dev/config/browser/playwright ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright )) | [`4.1.6` → `4.1.7`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser-playwright/4.1.6/4.1.7 ) |  |  |  |  |
| [eslint](https://eslint.org ) ([source](https://redirect.github.com/eslint/eslint )) | [`10.3.0` → `10.4.0`](https://renovatebot.com/diffs/npm/eslint/10.3.0/10.4.0 ) |  |  |  |  |
| [svelte](https://svelte.dev ) ([source](https://redirect.github.com/sveltejs/svelte/tree/HEAD/packages/svelte )) | [`5.55.7` → `5.55.9`](https://renovatebot.com/diffs/npm/svelte/5.55.7/5.55.9 ) |  |  |  |  |
| [tsx](https://tsx.hirok.io ) ([source](https://redirect.github.com/privatenumber/tsx )) | [`4.22.0` → `4.22.3`](https://renovatebot.com/diffs/npm/tsx/4.22.0/4.22.3 ) |  |  |  |  |
| [vitest](https://vitest.dev ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest )) | [`4.1.6` → `4.1.7`](https://renovatebot.com/diffs/npm/vitest/4.1.6/4.1.7 ) |  |  |  |  |
---
### Release Notes
<details>
<summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary>
### [`v8.59.4`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8594-2026-05-18 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.59.3...v8.59.4 )
This was a version bump only for parser to align it with other projects, there were no code changes.
See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.4 ) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint (@​typescript-eslint/scope-manager)</summary>
### [`v8.59.4`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8594-2026-05-18 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.59.3...v8.59.4 )
This was a version bump only for scope-manager to align it with other projects, there were no code changes.
See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.4 ) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint (@​typescript-eslint/visitor-keys)</summary>
### [`v8.59.4`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8594-2026-05-18 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.59.3...v8.59.4 )
This was a version bump only for visitor-keys to align it with other projects, there were no code changes.
See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.4 ) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>vitest-dev/vitest (@​vitest/browser)</summary>
### [`v4.1.7`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.1.7 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.6...v4.1.7 )
##### 🐞 Bug Fixes
- **runner**: Limit concurrency per task branch in addition to per leaf callbacks (backport) - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​10384](https://redirect.github.com/vitest-dev/vitest/issues/10384 ) [<samp>(4f0f2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4f0f2a1ee )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.6...v4.1.7 )
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
### [`v10.4.0`](https://redirect.github.com/eslint/eslint/compare/v10.3.0...452c4010c07dc2e36fe6ec6a8c48298878e86887 )
[Compare Source](https://redirect.github.com/eslint/eslint/compare/v10.3.0...v10.4.0 )
</details>
<details>
<summary>sveltejs/svelte (svelte)</summary>
### [`v5.55.9`](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5559 )
[Compare Source](https://redirect.github.com/sveltejs/svelte/compare/svelte@5.55.8...svelte@5.55.9 )
##### Patch Changes
- fix: don't unset batch when calling `{#await ...}` promise ([#​18243](https://redirect.github.com/sveltejs/svelte/pull/18243 ))
- fix: promise-ify `{#await await ...}` expressions on the server and correctly hydrate them on the client ([#​18243](https://redirect.github.com/sveltejs/svelte/pull/18243 ))
- fix: deduplicate dependencies that are added outside the init/update cycle ([#​18243](https://redirect.github.com/sveltejs/svelte/pull/18243 ))
- fix: avoid false-positive batch invariant error ([#​18246](https://redirect.github.com/sveltejs/svelte/pull/18246 ))
- fix: inline primitive constants in attribute values during SSR ([#​18232](https://redirect.github.com/sveltejs/svelte/pull/18232 ))
### [`v5.55.8`](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5558 )
[Compare Source](https://redirect.github.com/sveltejs/svelte/compare/svelte@5.55.7...svelte@5.55.8 )
##### Patch Changes
- fix(print): handle `svelte:body` and fix keyframe percentage double-printing ([#​18234](https://redirect.github.com/sveltejs/svelte/pull/18234 ))
- fix: execute uninitialized derived even if it's destroyed ([#​18228](https://redirect.github.com/sveltejs/svelte/pull/18228 ))
- fix: use named symbols everywhere ([#​18238](https://redirect.github.com/sveltejs/svelte/pull/18238 ))
- fix: don't run teardown effects when deriveds are unfreezed ([#​18227](https://redirect.github.com/sveltejs/svelte/pull/18227 ))
- fix: unset context synchronously in `run` ([#​18236](https://redirect.github.com/sveltejs/svelte/pull/18236 ))
</details>
<details>
<summary>privatenumber/tsx (tsx)</summary>
### [`v4.22.3`](https://redirect.github.com/privatenumber/tsx/compare/v4.22.2...dce02fc3b8b64a58d24560714902b16f89332f1f )
[Compare Source](https://redirect.github.com/privatenumber/tsx/compare/v4.22.2...v4.22.3 )
### [`v4.22.2`](https://redirect.github.com/privatenumber/tsx/compare/v4.22.1...v4.22.2 )
[Compare Source](https://redirect.github.com/privatenumber/tsx/compare/v4.22.1...v4.22.2 )
### [`v4.22.1`](https://redirect.github.com/privatenumber/tsx/compare/v4.22.0...6979f28810829dc79ec9baf406e162a18b65ab4b )
[Compare Source](https://redirect.github.com/privatenumber/tsx/compare/v4.22.0...v4.22.1 )
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **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://redirect.github.com/renovatebot/renovate/discussions ) if that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xOTQuMCIsInVwZGF0ZWRJblZlciI6IjQzLjE5NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
2026-05-25 10:22:30 +00:00
leaysgur
2d4c9194bd
feat(oxlint): Support vite-plus/resolveConfig for vite.config.ts ( #22456 )
...
Fixes #21417 and #21057
Now Oxlint can use the common functions defined in `shared` as well.
2026-05-20 08:21:38 +00:00
Daniel Osmond
41fcdcf5fa
fix(linter): Fix rule count not including override rules ( #19898 )
...
A fix for issue #19891
---------
Co-authored-by: Cam McHenry <camchenry@users.noreply.github.com >
2026-05-12 10:13:00 -04:00
Sysix
6b50f23ac4
fix(oxlint/cli): load root config by searching up parent directories ( #22272 )
...
Allow users to run `oxlint` in a sub package, when the monorepo has a base config.
Example:
`cd project/packages/pack-a && oxlint`
Now it detects the config from `project/.oxlintrc.json`, aligning how the LSP side works.
Aligns too how oxfmt searches config path.
closes https://github.com/oxc-project/oxc/issues/21533
found in https://github.com/voidzero-dev/vite-plus/pull/1378#discussion_r3078146663
2026-05-11 08:09:18 +00:00
renovate
299d6f8fd1
chore(deps): update npm packages ( #22292 )
...
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/ ) | [Adoption](https://docs.renovatebot.com/merge-confidence/ ) | [Passing](https://docs.renovatebot.com/merge-confidence/ ) | [Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
| [@types/estree](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree ) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/estree )) | [`1.0.8` → `1.0.9`](https://renovatebot.com/diffs/npm/@types%2festree/1.0.8/1.0.9 ) |  |  |  |  |
| [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser ) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser )) | [`8.59.1` → `8.59.2`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.59.1/8.59.2 ) |  |  |  |  |
| [@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager ) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager )) | [`8.59.1` → `8.59.2`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.59.1/8.59.2 ) |  |  |  |  |
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io ) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys )) | [`8.59.1` → `8.59.2`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.59.1/8.59.2 ) |  |  |  |  |
| [eslint](https://eslint.org ) ([source](https://redirect.github.com/eslint/eslint )) | [`10.2.1` → `10.3.0`](https://renovatebot.com/diffs/npm/eslint/10.2.1/10.3.0 ) |  |  |  |  |
| [publint](https://publint.dev ) ([source](https://redirect.github.com/publint/publint/tree/HEAD/packages/publint )) | [`0.3.18` → `0.3.19`](https://renovatebot.com/diffs/npm/publint/0.3.18/0.3.19 ) |  |  |  |  |
---
### Release Notes
<details>
<summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary>
### [`v8.59.2`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8592-2026-05-04 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.59.1...v8.59.2 )
This was a version bump only for parser to align it with other projects, there were no code changes.
See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.2 ) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint (@​typescript-eslint/scope-manager)</summary>
### [`v8.59.2`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8592-2026-05-04 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.59.1...v8.59.2 )
This was a version bump only for scope-manager to align it with other projects, there were no code changes.
See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.2 ) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint (@​typescript-eslint/visitor-keys)</summary>
### [`v8.59.2`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8592-2026-05-04 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.59.1...v8.59.2 )
This was a version bump only for visitor-keys to align it with other projects, there were no code changes.
See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.2 ) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
### [`v10.3.0`](https://redirect.github.com/eslint/eslint/compare/v10.2.1...78892043a36da4aa7640b59c99344b00c181048a )
[Compare Source](https://redirect.github.com/eslint/eslint/compare/v10.2.1...v10.3.0 )
</details>
<details>
<summary>publint/publint (publint)</summary>
### [`v0.3.19`](https://redirect.github.com/publint/publint/blob/HEAD/packages/publint/CHANGELOG.md#0319 )
[Compare Source](https://redirect.github.com/publint/publint/compare/publint@0.3.18...publint@0.3.19 )
##### Patch Changes
- Add `NESTED_PACKAGE_JSON_FIELD_IGNORED` to warn when published nested `package.json` files define `"exports"` or `"imports"`, which Node.js ignores outside the package root. ([#​224](https://redirect.github.com/publint/publint/pull/224 ))
- Fix internal browser directory traversal logic ([#​224](https://redirect.github.com/publint/publint/pull/224 ))
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions ) if that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
2026-05-10 21:14:27 +00:00
Said Atrahouch
cf86d7ab44
feat(linter): bulk suppression ( #19328 )
...
# AI Disclosure
I have used AI to:
* Fix all my grammar mistakes in this PR description, as English isn't
my first language.
* Iterate on some ideas that I had during development, for example
whether it is better to modify the concurrent hash map or send diffs
through a channel.
Apart from these situations, the code has been written without AI
assistance. As mentioned in my first PR in Oxlint, these contributions
help improve Oxlint while at the same time helping me improve my Rust
skills.
# Description
This PR implements `bulk-suppressions` for Oxlint. I had in mind the
goals mentioned in
[https://github.com/oxc-project/oxc/issues/10549#issuecomment-3102429390 ](https://github.com/oxc-project/oxc/issues/10549#issuecomment-3102429390 )
# Implementation details
It is split into sections with all the decisions that I have taken to
implement this PR.
## Suppression Manager
The code is located in `crates/oxc_linter/src/suppression/mod.rs` and it
is split into three files:
* `tracking.rs`: Contains all the code that handles the loading, saving,
and updating of `oxlint-suppressions.json`.
* `mod.rs`: Implements the `SuppressionManager`. It also acts as a
middleman between `oxlint` and `tsgolint` and `tracking` to update the
information, and `diff` to execute the diff operations.
* `diff.rs`: Hides all the complexity of how the diff works from the
rest of the project.
## Filtering Diagnostics
The Suppression Manager only filters diagnostics, that have a valid
`OxcCode`, otherwise the message is ignored as we can't scope it to a
rule or plugin.
The messages are only filtered if the new count is lower or equal than
the registered one; otherwise, they are displayed. Same behavior as
ESLint.
## Sharing and updating the data
Oxlint uses `rayon::scope` to create as many workers as there are
available threads. Those workers do the heavy linting work, and this is
the data that I need for filtering or creating the file.
The semantics of `Send + Sync` in Rust make it hard, for good reason, to
share information between threads. So the quick approach is for each
worker to read the whole file just to pick a subset of the data. On top
of that, the feature is probably more oriented toward medium/large
projects, so this approach doesn't scale.
So the implemented approach is the following:
* `SuppressionManager` ~~duplicates the data into a `concurrent hash
map`. This map is safe to be shared between threads and is only used in
read mode.~~ **Update:** The data is wrapped in a `Arc` instead of
duplicating it. It reduces a level of indirection. Thanks @wagenet for
the suggestion.
* Each worker holds a reference to a `DiffManager`, this struct contains
all data necessary for his operations.
* The file is linted. The errors emitted by the lint are used to track
the number of detected errors.
* `DiffManager` calculate a diff based on the args provided and if
`bulk-suppressions` file exists:
* If we have diffs and no CLI args are provided, then the diffs are
converted to `OxcDiagnostic` to be reported.
* If we have diffs and at least one of the CLI args is provided, then
the diffs are sent to the parent through a channel.
Once the linting is completed and we are back in the main thread, we
consume the channel with the diffs sent by the workers. If we are in
`update` or `create` mode and no diffs have been emitted, then we do
nothing. Otherwise, we mutate the map in the `SuppressionManager` with
the operations sent by the workers and save it.
In a few words, I'm trading memory usage for what is, in my opinion, a
simpler process. The option that I discarded was relying on `interior
mutability`, but that would mean ensuring that all operations are safe
and that no worker panics.
## TSGo lint errors are the only recorded errors.
Rather than completely changing how fixable and non-fixable errors are
emitted, I have attached to the existing flow. Type errors and related
errors are ignored and not recorded.
## CLI Args
Currently, both commands update the file, no matter the diff found. The
only situation that doesn't work the same is when the file
`oxlint-suppressions.json` does not exist. The only way to create it is
by running `oxlint --suppress-all`.
# Comments
* ~130 files from this PR are file in the fixtures folders.
* The current state of the PR handle lint errors emited by Oxlint,
JSPlugin and TSGO.
* All suppression test fixtures are self contained in the `suppression`
folder.
* Only the Default Output is rendered if the file has been created or
updated.
* ~~`--fix` or related commands do not update the file.~~ **UPDATE**:
The fix commands are handle.
* I have manually tested the feature in
[PostHog](https://github.com/PostHog/posthog ) and in
https://github.com/TheAlexLichter/oxlint-react-compiler-rules
* Added a `SuppressionTest` that implements `Drop` to handle the cleanup
of this tests.
* Thanks @Sysix for you manually test in Windows, and mentioned how to
run the test in Windows using the CI.
* Windows CI are green
https://github.com/oxc-project/oxc/actions/runs/22840798852 .
PostHog
<img width="790" height="155" alt="imagen"
src="https://github.com/user-attachments/assets/fe16b2a6-e98a-492f-a9c5-dd92d57c2091 "
/>
Oxlint React Compiler Rules
<img width="1297" height="757" alt="imagen"
src="https://github.com/user-attachments/assets/fc9ac9b1-bb08-4ff8-825b-ca91d107f4dc "
/>
# Fixes
*
[https://github.com/oxc-project/oxc/issues/10549 ](https://github.com/oxc-project/oxc/issues/10549 )
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cam McHenry <camchenry@users.noreply.github.com >
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
Co-authored-by: Copilot <copilot@github.com >
2026-05-05 22:58:39 -04:00
bab
46ab679d79
fix(linter/plugins): trim leading newline for partial sources ( #20928 )
...
fixes https://github.com/oxc-project/oxc/issues/20896
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-05-05 11:36:58 +01:00
renovate[bot]
82dbbec0b7
chore(deps): update npm packages (major) ( #21558 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Adoption](https://docs.renovatebot.com/merge-confidence/ ) |
[Passing](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
| [diff](https://redirect.github.com/kpdecker/jsdiff ) | [`^8.0.3` →
`^9.0.0`](https://renovatebot.com/diffs/npm/diff/8.0.4/9.0.0 ) |

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`^9.13.0` →
`^10.0.0`](https://renovatebot.com/diffs/npm/eslint/9.39.4/10.2.1 ) |

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`9.39.4` →
`10.2.1`](https://renovatebot.com/diffs/npm/eslint/9.39.4/10.2.1 ) |

|

|

|

|
---
### Release Notes
<details>
<summary>kpdecker/jsdiff (diff)</summary>
###
[`v9.0.0`](https://redirect.github.com/kpdecker/jsdiff/blob/HEAD/release-notes.md#900 )
[Compare
Source](https://redirect.github.com/kpdecker/jsdiff/compare/8.0.4...v9.0.0 )
(All changes part of PR
[#​672](https://redirect.github.com/kpdecker/jsdiff/pull/672 ).)
- **ES5 support is dropped**. `parsePatch` now uses `TextDecoder` and
`Uint8Array`, which are not available in ES5, and TypeScript is now
compiled with the "es6" `target`. From now on, I intend to freely use
any features that are deemed "Widely available" by
[Baseline](https://web.dev/baseline ). Users who need ES5 support should
stick to version 8.
- **C-style quoted strings in filename headers are now properly
supported**.
When the name of either the old or new file in a patch contains "special
characters", both GNU `diff` and Git quote the filename in the patch's
headers and escape special characters using the same escape sequences
that are used in string literals in C, including octal escapes for all
non-ASCII characters. Previously, jsdiff had very little support for
this; `parsePatch` would remove the quotes, and unescape any escaped
backslashes, but would not unescape other escape sequences.
`formatPatch`, meanwhile, did not quote or escape special characters at
all.
Now, `parsePatch` parses all the possible escape sequences that GNU diff
(or Git) ever output, and `formatPatch` quotes and escapes filenames
containing special characters in the same way GNU diff does.
- **`formatPatch` now omits file headers when `oldFileName` or
`newFileName` in the provided patch object are `undefined`**, regardless
of the `headerOptions` parameter. (Previously, it would treat the
absence of `oldFileName` or `newFileName` as indicating the filename was
the word "undefined" and emit headers `--- undefined` / `+++
undefined`.)
- **`formatPatch` no longer outputs trailing tab characters at the end
of `---`/`+++` headers.**
Previously, if `formatPatch` was passed a patch object to serialize that
had empty strings for the `oldHeader` or `newHeader` property, it would
include a trailing tab character after the filename in the `---` and/or
`+++` file header. Now, this scenario is treated the same as when
`oldHeader`/`newHeader` is `undefined` - i.e. the trailing tab is
omitted.
- **`formatPatch` no longer mutates its input** when serializing a patch
containing a hunk where either the old or new content contained zero
lines. (Such a hunk occurs only when the hunk has no context lines and
represents a pure insertion or pure deletion, which for instance will
occur whenever one of the two files being diffed is completely empty.)
Previously `formatPatch` would provide the correct output but also
mutate the `oldLines` or `newLines` property on the hunk, changing the
meaning of the underlying patch.
- **Git-style patches are now supported by `parsePatch`, `formatPatch`,
and `reversePatch`**.
Patches output by `git diff` can include some features that are unlike
those output by GNU `diff`, and therefore not handled by an ordinary
unified diff format parser. An ordinary diff simply describes the
differences between the *content* of two files, but Git diffs can also
indicate, via "extended headers", the creation or deletion of
(potentially empty) files, indicate that a file was renamed, and contain
information about file mode changes. Furthermore, when these changes
appear in a diff in the absence of a content change (e.g. when an empty
file is created, or a file is renamed without content changes), the
patch will contain no associated `---`/`+++` file headers nor any hunks.
jsdiff previously did not support parsing Git's extended headers, nor
hunkless patches. Now `parsePatch` parses some of the extended headers,
parses hunkless Git patches, and can determine filenames (e.g. from the
extended headers) when parsing a patch that includes no `---` or `+++`
file headers. The additional information conveyed by the extended
headers we support is recorded on new fields on the result object
returned by `parsePatch`. See `isGit` and subsequent properties in the
docs in the README.md file.
`formatPatch` now outputs extended headers based on these new
Git-specific properties, and `reversePatch` respects them as far as
possible (with one unavoidable caveat noted in the README.md file).
- **Unpaired file headers now cause `parsePatch` to throw**.
It remains acceptable to have a patch with no file headers whatsoever
(e.g. one that begins with a `@@​` hunk header on the very first
line), but a patch with *only* a `---` header or only a `+++` header is
now considered an error.
- **`parsePatch` is now more tolerant of "trailing garbage"**
That is: after a patch, or between files/indexes in a patch, it is now
acceptable to have arbitrary lines of "garbage" (so long as they
unambiguously have no syntactic meaning - e.g. trailing garbage that
leads with a `+`, `-`, or ` ` and thus is interpretable as part of a
hunk still triggers a throw).
This means we no longer reject patches output by tools that include
extra data in "garbage" lines not understood by generic unified diff
parsers. (For example, SVN patches can include "Property changes on:"
lines that generic unified diff parsers should discard as garbage;
jsdiff previously threw errors when encountering them.)
This change brings jsdiff's behaviour more in line with GNU `patch`,
which is highly permissive of "garbage".
- **The `oldFileName` and `newFileName` fields of `StructuredPatch` are
now typed as `string | undefined` instead of `string`**. This type
change reflects the (pre-existing) reality that `parsePatch` can produce
patches without filenames (e.g. when parsing a patch that simply
contains hunks with no file headers).
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
###
[`v10.2.1`](https://redirect.github.com/eslint/eslint/compare/v10.2.0...4d1d8f9737236603f64bbe83d5bb8001627b5611 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.2.0...v10.2.1 )
###
[`v10.2.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.2.0 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.1.0...v10.2.0 )
#### Features
-
[`586ec2f`](https://redirect.github.com/eslint/eslint/commit/586ec2f43092779acc957866db4abe999112d1e1 )
feat: Add `meta.languages` support to rules
([#​20571](https://redirect.github.com/eslint/eslint/issues/20571 ))
(Copilot)
-
[`14207de`](https://redirect.github.com/eslint/eslint/commit/14207dee3939dc87cfa8b2fcfc271fff2cfd6471 )
feat: add `Temporal` to `no-obj-calls`
([#​20675](https://redirect.github.com/eslint/eslint/issues/20675 ))
(Pixel998)
-
[`bbb2c93`](https://redirect.github.com/eslint/eslint/commit/bbb2c93a2b31bd30924f32fe69a9acf41f9dfe35 )
feat: add Temporal to ES2026 globals
([#​20672](https://redirect.github.com/eslint/eslint/issues/20672 ))
(Pixel998)
#### Bug Fixes
-
[`542cb3e`](https://redirect.github.com/eslint/eslint/commit/542cb3e6442a4e6ee3457c799e2a0ee23bef0c6a )
fix: update first-party dependencies
([#​20714](https://redirect.github.com/eslint/eslint/issues/20714 ))
(Francesco Trotta)
#### Documentation
-
[`a2af743`](https://redirect.github.com/eslint/eslint/commit/a2af743ea60f683d0e0de9d98267c1e7e4f5e412 )
docs: add `language` to configuration objects
([#​20712](https://redirect.github.com/eslint/eslint/issues/20712 ))
(Francesco Trotta)
-
[`845f23f`](https://redirect.github.com/eslint/eslint/commit/845f23f1370892bf07d819497ac518c9e65090d6 )
docs: Update README (GitHub Actions Bot)
-
[`5fbcf59`](https://redirect.github.com/eslint/eslint/commit/5fbcf5958b897cc4df5d652924d18428db37f7ee )
docs: remove `sourceType` from ts playground link
([#​20477](https://redirect.github.com/eslint/eslint/issues/20477 ))
(Tanuj Kanti)
-
[`8702a47`](https://redirect.github.com/eslint/eslint/commit/8702a474659be786b6b1392e5e7c0c56355ae4a4 )
docs: Update README (GitHub Actions Bot)
-
[`ddeaded`](https://redirect.github.com/eslint/eslint/commit/ddeaded2ab36951383ff67c60fb64ec68d29a46a )
docs: Update README (GitHub Actions Bot)
-
[`2b44966`](https://redirect.github.com/eslint/eslint/commit/2b4496691266547784a7f7ad1989ce53381bab91 )
docs: add Major Releases section to Manage Releases
([#​20269](https://redirect.github.com/eslint/eslint/issues/20269 ))
(Milos Djermanovic)
-
[`eab65c7`](https://redirect.github.com/eslint/eslint/commit/eab65c700ebb16a6e790910c720450c9908961fd )
docs: update `eslint` versions in examples
([#​20664](https://redirect.github.com/eslint/eslint/issues/20664 ))
(루밀LuMir)
-
[`3e4a299`](https://redirect.github.com/eslint/eslint/commit/3e4a29903bf31f0998e45ad9128a265bce1edc56 )
docs: update ESM Dependencies policies with note for own-usage packages
([#​20660](https://redirect.github.com/eslint/eslint/issues/20660 ))
(Milos Djermanovic)
#### Chores
-
[`8120e30`](https://redirect.github.com/eslint/eslint/commit/8120e30f833474f47acc061d24d164e9f022264f )
refactor: extract no unmodified loop condition
([#​20679](https://redirect.github.com/eslint/eslint/issues/20679 ))
(kuldeep kumar)
-
[`46e8469`](https://redirect.github.com/eslint/eslint/commit/46e8469786be1b2bbb522100e1d44624d98d3745 )
chore: update dependency markdownlint-cli2 to ^0.22.0
([#​20697](https://redirect.github.com/eslint/eslint/issues/20697 ))
(renovate\[bot])
-
[`01ed3aa`](https://redirect.github.com/eslint/eslint/commit/01ed3aa68477f81a7188e1498cf4906e02015b7c )
test: add unit tests for unicode utilities
([#​20622](https://redirect.github.com/eslint/eslint/issues/20622 ))
(Manish chaudhary)
-
[`811f493`](https://redirect.github.com/eslint/eslint/commit/811f4930f82ee2b6ac8eae75cade9bed63de0781 )
ci: remove `--legacy-peer-deps` from types integration tests
([#​20667](https://redirect.github.com/eslint/eslint/issues/20667 ))
(Milos Djermanovic)
-
[`6b86fcf`](https://redirect.github.com/eslint/eslint/commit/6b86fcfc5c75d6a3b8a2cf7bcdb3ef60635a9a03 )
chore: update dependency npm-run-all2 to v8
([#​20663](https://redirect.github.com/eslint/eslint/issues/20663 ))
(renovate\[bot])
-
[`632c4f8`](https://redirect.github.com/eslint/eslint/commit/632c4f83bf32b77981c7d395cacddd1bb172ee25 )
chore: add `prettier` update commit to `.git-blame-ignore-revs`
([#​20662](https://redirect.github.com/eslint/eslint/issues/20662 ))
(루밀LuMir)
-
[`b0b0f21`](https://redirect.github.com/eslint/eslint/commit/b0b0f21927e03ba092400e3c70d7058f537765c8 )
chore: update dependency eslint-plugin-regexp to ^3.1.0
([#​20659](https://redirect.github.com/eslint/eslint/issues/20659 ))
(Milos Djermanovic)
-
[`228a2dd`](https://redirect.github.com/eslint/eslint/commit/228a2dd4b272c17f516ee3541f1dd69eca0a8ab0 )
chore: update dependency eslint-plugin-eslint-plugin to ^7.3.2
([#​20661](https://redirect.github.com/eslint/eslint/issues/20661 ))
(Milos Djermanovic)
-
[`3ab4d7e`](https://redirect.github.com/eslint/eslint/commit/3ab4d7e244df244102de9d0d250b2ff12456a785 )
test: Add tests for eslintrc-style keys
([#​20645](https://redirect.github.com/eslint/eslint/issues/20645 ))
(kuldeep kumar)
###
[`v10.1.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.1.0 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.0.3...v10.1.0 )
#### Features
-
[`ff4382b`](https://redirect.github.com/eslint/eslint/commit/ff4382be349035acdb170627a2dc92828e134562 )
feat: apply fix for `no-var` in `TSModuleBlock`
([#​20638](https://redirect.github.com/eslint/eslint/issues/20638 ))
(Tanuj Kanti)
-
[`0916995`](https://redirect.github.com/eslint/eslint/commit/0916995b51528872b15ba4fedb24172cf25fcb3f )
feat: Implement api support for bulk-suppressions
([#​20565](https://redirect.github.com/eslint/eslint/issues/20565 ))
(Blake Sager)
#### Bug Fixes
-
[`2b8824e`](https://redirect.github.com/eslint/eslint/commit/2b8824e6be4223980e929a20025602df20d05ea2 )
fix: Prevent `no-var` autofix when a variable is used before declaration
([#​20464](https://redirect.github.com/eslint/eslint/issues/20464 ))
(Amaresh S M)
-
[`e58b4bf`](https://redirect.github.com/eslint/eslint/commit/e58b4bff167e79afd067d1b0ee9360bec2d3393e )
fix: update eslint
([#​20597](https://redirect.github.com/eslint/eslint/issues/20597 ))
(renovate\[bot])
#### Documentation
-
[`b7b57fe`](https://redirect.github.com/eslint/eslint/commit/b7b57fe9942c572ff651230f1f96cefed787ca52 )
docs: use correct JSDoc link in require-jsdoc.md
([#​20641](https://redirect.github.com/eslint/eslint/issues/20641 ))
(mkemna-clb)
-
[`58e4cfc`](https://redirect.github.com/eslint/eslint/commit/58e4cfc7dbf0fe40c73f09bf0ff94ad944d0ba0e )
docs: add deprecation notice partial
([#​20639](https://redirect.github.com/eslint/eslint/issues/20639 ))
(Milos Djermanovic)
-
[`7143dbf`](https://redirect.github.com/eslint/eslint/commit/7143dbf99df27c61edf1552da981794e99a0b2f2 )
docs: update v9 migration guide for `@eslint/js` usage
([#​20540](https://redirect.github.com/eslint/eslint/issues/20540 ))
(fnx)
-
[`035fc4f`](https://redirect.github.com/eslint/eslint/commit/035fc4fbe506e3e4524882cf50db37a4e430adf4 )
docs: note that `globalReturn` applies only with `sourceType: "script"`
([#​20630](https://redirect.github.com/eslint/eslint/issues/20630 ))
(Milos Djermanovic)
-
[`e972c88`](https://redirect.github.com/eslint/eslint/commit/e972c88ab7474a74191ee99ac2558b00d0427a8a )
docs: merge ESLint option descriptions into type definitions
([#​20608](https://redirect.github.com/eslint/eslint/issues/20608 ))
(Francesco Trotta)
-
[`7f10d84`](https://redirect.github.com/eslint/eslint/commit/7f10d8440137f0cfd75f18f4746ba6a1c621b953 )
docs: Update README (GitHub Actions Bot)
-
[`aeed007`](https://redirect.github.com/eslint/eslint/commit/aeed0078ca2f73d4744cc522102178d45b5be64e )
docs: open playground link in new tab
([#​20602](https://redirect.github.com/eslint/eslint/issues/20602 ))
(Tanuj Kanti)
-
[`a0d1a37`](https://redirect.github.com/eslint/eslint/commit/a0d1a3772679d3d74bb860fc65b5b58678acd452 )
docs: Add AI Usage Policy
([#​20510](https://redirect.github.com/eslint/eslint/issues/20510 ))
(Nicholas C. Zakas)
#### Chores
-
[`a9f9cce`](https://redirect.github.com/eslint/eslint/commit/a9f9cce82d80b540a0e3549d0e91c16df28740d8 )
chore: update dependency eslint-plugin-unicorn to ^63.0.0
([#​20584](https://redirect.github.com/eslint/eslint/issues/20584 ))
(Milos Djermanovic)
-
[`1f42bd7`](https://redirect.github.com/eslint/eslint/commit/1f42bd7876ae4192cf7f7f4faf73b4ef3d2563cb )
chore: update `prettier` to 3.8.1
([#​20651](https://redirect.github.com/eslint/eslint/issues/20651 ))
(루밀LuMir)
-
[`c0a6f4a`](https://redirect.github.com/eslint/eslint/commit/c0a6f4a2b4169edeca2a81bf7b47783e39ade366 )
chore: update dependency
[@​eslint/json](https://redirect.github.com/eslint/json ) to ^1.2.0
([#​20652](https://redirect.github.com/eslint/eslint/issues/20652 ))
(renovate\[bot])
-
[`cc43f79`](https://redirect.github.com/eslint/eslint/commit/cc43f795c42e5ec2f19bb43b1f6d534ef2e469f3 )
chore: update dependency c8 to v11
([#​20650](https://redirect.github.com/eslint/eslint/issues/20650 ))
(renovate\[bot])
-
[`2ce4635`](https://redirect.github.com/eslint/eslint/commit/2ce4635b036ff2665c7009afddf9c0fb2274dceb )
chore: update dependency
[@​eslint/json](https://redirect.github.com/eslint/json ) to v1
([#​20649](https://redirect.github.com/eslint/eslint/issues/20649 ))
(renovate\[bot])
-
[`f0406ee`](https://redirect.github.com/eslint/eslint/commit/f0406eedcc3dc415babbbf6bbdb5db1eebfd487b )
chore: update dependency markdownlint-cli2 to ^0.21.0
([#​20646](https://redirect.github.com/eslint/eslint/issues/20646 ))
(renovate\[bot])
-
[`dbb4c95`](https://redirect.github.com/eslint/eslint/commit/dbb4c9582a00bac604d5c6ac671bb7111468a846 )
chore: remove trunk
([#​20478](https://redirect.github.com/eslint/eslint/issues/20478 ))
(sethamus)
-
[`c672a2a`](https://redirect.github.com/eslint/eslint/commit/c672a2a70579fddf1c6ce33dfa712d705726e1c9 )
test: fix CLI test for empty output file
([#​20640](https://redirect.github.com/eslint/eslint/issues/20640 ))
(kuldeep kumar)
-
[`c7ada24`](https://redirect.github.com/eslint/eslint/commit/c7ada2455680036bbfc42fcb1511ff28afe3c587 )
ci: bump pnpm/action-setup from 4.3.0 to 4.4.0
([#​20636](https://redirect.github.com/eslint/eslint/issues/20636 ))
(dependabot\[bot])
-
[`07c4b8b`](https://redirect.github.com/eslint/eslint/commit/07c4b8b4a9f49145e60a3448dd57853213ed4de3 )
test: fix `RuleTester` test without test runners
([#​20631](https://redirect.github.com/eslint/eslint/issues/20631 ))
(Francesco Trotta)
-
[`079bba7`](https://redirect.github.com/eslint/eslint/commit/079bba7ff17d0a99fdffe32bf991d005ba797fae )
test: Add tests for `isValidWithUnicodeFlag`
([#​20601](https://redirect.github.com/eslint/eslint/issues/20601 ))
(Manish chaudhary)
-
[`5885ae6`](https://redirect.github.com/eslint/eslint/commit/5885ae66216bcee9310bbf73786b7d7d5774aeaf )
ci: unpin Node.js 25.x in CI
([#​20615](https://redirect.github.com/eslint/eslint/issues/20615 ))
(Copilot)
-
[`f65e5d3`](https://redirect.github.com/eslint/eslint/commit/f65e5d3c0df65fdb317ad6d23f7ae113c5f4b6d7 )
chore: update pnpm/action-setup digest to
[`b906aff`](https://redirect.github.com/eslint/eslint/commit/b906aff )
([#​20610](https://redirect.github.com/eslint/eslint/issues/20610 ))
(renovate\[bot])
###
[`v10.0.3`](https://redirect.github.com/eslint/eslint/compare/v10.0.2...bfce7eaa0ec5d6591fd247b7ff57b51e45fb88a1 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.0.2...v10.0.3 )
###
[`v10.0.2`](https://redirect.github.com/eslint/eslint/compare/v10.0.1...55122d6f971119607c85b0df8e62942171c939f7 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.0.1...v10.0.2 )
###
[`v10.0.1`](https://redirect.github.com/eslint/eslint/releases/tag/v10.0.1 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.0.0...v10.0.1 )
#### Bug Fixes
-
[`c87d5bd`](https://redirect.github.com/eslint/eslint/commit/c87d5bded54c5cf491eb04c24c9d09bbbd42c23e )
fix: update eslint
([#​20531](https://redirect.github.com/eslint/eslint/issues/20531 ))
(renovate\[bot])
-
[`d841001`](https://redirect.github.com/eslint/eslint/commit/d84100115c14691691058f00779c94e74fca946a )
fix: update `minimatch` to `10.2.1` to address security vulnerabilities
([#​20519](https://redirect.github.com/eslint/eslint/issues/20519 ))
(루밀LuMir)
-
[`04c2147`](https://redirect.github.com/eslint/eslint/commit/04c21475b3004904948f02049f2888b401d82c78 )
fix: update error message for unused suppressions
([#​20496](https://redirect.github.com/eslint/eslint/issues/20496 ))
(fnx)
-
[`38b089c`](https://redirect.github.com/eslint/eslint/commit/38b089c1726feac0e31a31d47941bd99e29ce003 )
fix: update dependency
[@​eslint/config-array](https://redirect.github.com/eslint/config-array )
to ^0.23.1
([#​20484](https://redirect.github.com/eslint/eslint/issues/20484 ))
(renovate\[bot])
#### Documentation
-
[`5b3dbce`](https://redirect.github.com/eslint/eslint/commit/5b3dbce50a1404a9f118afe810cefeee79388a2a )
docs: add AI acknowledgement section to templates
([#​20431](https://redirect.github.com/eslint/eslint/issues/20431 ))
(루밀LuMir)
-
[`6f23076`](https://redirect.github.com/eslint/eslint/commit/6f23076037d5879f20fb3be2ef094293b1e8d38c )
docs: toggle nav in no-JS mode
([#​20476](https://redirect.github.com/eslint/eslint/issues/20476 ))
(Tanuj Kanti)
-
[`b69cfb3`](https://redirect.github.com/eslint/eslint/commit/b69cfb32a16c5d5e9986390d484fae1d21e406f9 )
docs: Update README (GitHub Actions Bot)
#### Chores
-
[`e5c281f`](https://redirect.github.com/eslint/eslint/commit/e5c281ffd038a3a7a3e5364db0b9378e0ad83020 )
chore: updates for v9.39.3 release (Jenkins)
-
[`8c3832a`](https://redirect.github.com/eslint/eslint/commit/8c3832adb77cd993b4a24891900d5eeaaf093cdc )
chore: update
[@​typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser )
to ^8.56.0
([#​20514](https://redirect.github.com/eslint/eslint/issues/20514 ))
(Milos Djermanovic)
-
[`8330d23`](https://redirect.github.com/eslint/eslint/commit/8330d238ae6adb68bb6a1c9381e38cfedd990d94 )
test: add tests for config-api
([#​20493](https://redirect.github.com/eslint/eslint/issues/20493 ))
(Milos Djermanovic)
-
[`37d6e91`](https://redirect.github.com/eslint/eslint/commit/37d6e91e88fa6a2ca6d8726679096acff21ba6cc )
chore: remove eslint v10 prereleases from eslint-config-eslint deps
([#​20494](https://redirect.github.com/eslint/eslint/issues/20494 ))
(Milos Djermanovic)
-
[`da7cd0e`](https://redirect.github.com/eslint/eslint/commit/da7cd0e79197ad16e17052eef99df141de6dbfb1 )
refactor: cleanup error message templates
([#​20479](https://redirect.github.com/eslint/eslint/issues/20479 ))
(Francesco Trotta)
-
[`84fb885`](https://redirect.github.com/eslint/eslint/commit/84fb885d49ac810e79a9491276b4828b53d913e5 )
chore: package.json update for
[@​eslint/js](https://redirect.github.com/eslint/js ) release
(Jenkins)
-
[`1f66734`](https://redirect.github.com/eslint/eslint/commit/1f667344b57c4c09b548d94bcfac1f91b6e5c63d )
chore: add `eslint` to `peerDependencies` of `@eslint/js`
([#​20467](https://redirect.github.com/eslint/eslint/issues/20467 ))
(Milos Djermanovic)
###
[`v10.0.0`](https://redirect.github.com/eslint/eslint/compare/v9.39.2...4e6c4ac042e321da8fc29ce53ed03c86dcaa44a7 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.39.4...v10.0.0 )
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjMuOCIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-05-04 21:33:50 +01:00
Nicolas Le Cam
1884833279
feat(linter/plugins): implement SourceCode.getDisableDirectives method ( #21029 )
...
Used by [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/0e023e3ad4dfb22ace33ef70c420513946528fa4/rules/utils/eslint-directive.js )
It crashes when trying to use it through jsPlugins (for unicorn/expiring-todo-comments)
ESLint [documentation](https://eslint.org/docs/latest/extend/languages#the-sourcecode-object ) says its optional but unicorn doesn't seem to guard against its absence
---------
Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com >
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-05-04 21:17:38 +01:00
camc314
2047a35a62
fix(linter): treat adjacent fixes as overlapping ( #22071 )
...
Treat boundary-adjacent autofixes as overlapping by default to match ESLint's conservative fixer behavior.
Resolves #19160 .
2026-05-02 11:01:55 +00:00
camc314
0beaffc1ea
fix(linter): print resolved extended config ( #22040 )
...
Fixes #20863 .
`--print-config` previously serialized the original config after replacing only resolved rules, so inherited plugins and overrides from `oxlint.config.ts` object `extends` were missing from the printed output; this now prints the resolved builder state and adds a regression fixture.
2026-05-01 16:07:23 +00:00
Connor Shea
e7f8d55131
feat(linter): remove eslint prefixes from plugin names in diagnostics ( #21806 )
...
Fixes #21805 .
This was generated with Claude Code and reviewed/tested by me. The first
commit is the change to the code, the second is all the snapshots that
needed to be updated.
Before:
```
x eslint-plugin-jest(no-restricted-jest-methods): Use of `advanceTimersByTime` is not allowed
,-[test.js:7:6]
6 | it('calls the callback after 1 second via advanceTimersByTime', () => {
7 | vi.advanceTimersByTime(1000);
: ^^^^^^^^^^^^^^^^^^^
8 | })
`----
```
After:
```
x jest(no-restricted-jest-methods): Use of `advanceTimersByTime` is not allowed
,-[test.js:7:6]
6 | it('calls the callback after 1 second via advanceTimersByTime', () => {
7 | vi.advanceTimersByTime(1000);
: ^^^^^^^^^^^^^^^^^^^
8 | })
`----
```
Note that I need to confirm whether this change will be a problem for
the LSP integrations (I don't think it will?), as well as any other
tooling we have. I am pretty confident that oxlint-migrate won't care,
and neither should vite-plus - except maybe with integration/snapshot
tests in vite-plus.
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-04-27 20:36:07 +01:00
renovate
180bba3b4f
chore(deps): update dependency oxlint to v1.62.0 ( #21848 )
...
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/ ) | [Adoption](https://docs.renovatebot.com/merge-confidence/ ) | [Passing](https://docs.renovatebot.com/merge-confidence/ ) | [Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
| [oxlint](https://oxc.rs/docs/guide/usage/linter ) ([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxlint )) | [`1.61.0` → `1.62.0`](https://renovatebot.com/diffs/npm/oxlint/1.61.0/1.62.0 ) |  |  |  |  |
---
### Release Notes
<details>
<summary>oxc-project/oxc (oxlint)</summary>
### [`v1.62.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/npm/oxlint/CHANGELOG.md#1620---2026-04-27 )
[Compare Source](https://redirect.github.com/oxc-project/oxc/compare/oxlint_v1.61.0...oxlint_v1.62.0 )
##### 🚀 Features
- [`348f46c`](https://redirect.github.com/oxc-project/oxc/commit/348f46c ) linter: Add `respectEslintDisableDirectives` option ([#​21384](https://redirect.github.com/oxc-project/oxc/issues/21384 )) (Christian Vuerings)
##### 🐛 Bug Fixes
- [`8c425db`](https://redirect.github.com/oxc-project/oxc/commit/8c425db ) linter: Allow string for jest version in config schema ([#​21649](https://redirect.github.com/oxc-project/oxc/issues/21649 )) (camc314)
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, 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 was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNDEuMyIsInVwZGF0ZWRJblZlciI6IjQzLjE0MS4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
2026-04-27 14:57:21 +00:00
camc314
fdd4c92791
refactor(oxlint,oxfmt): share config discovery code ( #21642 )
2026-04-23 10:12:18 +00:00
camc314
ce7a4dc3cb
feat(linter/no-unreachable): move rule from nursery to correctness ( #21618 )
2026-04-21 18:58:20 +00:00
camc314
e3b5e78eeb
feat(linter/getter-return): move rule from nursery to correctness ( #21617 )
...
This rule has been in in nursey for a significant amount of time, it should now be stable enough to promote to correctness.
2026-04-21 18:32:26 +00:00
leaysgur
f99ecdaa76
feat(oxlint): Gate vite.config.ts recognition behind VP_VERSION env var ( #21298 )
...
Fixes #20416 for Oxlint
- Same `VP_VERSION` gating for config discovery, LSP file watchers, and JS config loading
- Refactor JS config loader into `resolveJsConfig` / `resolveVitePlusConfig` with shared `importConfig` + `loadConfigs`
- Split test fixtures into `vite_config_*` (non VP mode) and `vite_plus_*` (VP mode)
- Add `env` field to fixture `options.json` for passing env vars to test runs
- Fix repo `oxlintrc.json` ignore glob (`*/files/**` → `**/files/**`) for nested fixture paths like monorepo usecase
2026-04-13 01:10:46 +00:00
Théo LUDWIG
ecbcf5e53a
fix(linter): more info to summary output for GitHub formatter ( #21330 )
...
Fixes #21329
Refactor `format_execution_summary()` from `DefaultOutputFormatter` into
`LintCommandInfo` to share the logic between formatters
Developed with assistance from AI tool (Claude Opus 4.6).
All changes have been reviewed and tested.
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-04-12 20:53:09 +01:00
Sysix
ab1070d4fb
fix(oxlint/cli): skip parsing base config again for nested config search ( #20809 )
...
Added a skip check for the base config to avoid parsing it again. Very useful for JS config or JS plugins, where we need roundtrips to JS integrations.
closes https://github.com/oxc-project/oxc/issues/16356
2026-03-27 19:18:24 +00:00
overlookmotel
d89ae8f012
fix(linter/plugins): patch WeakMap to emulate WeakMaps keyed by sourceCode ( #20799 )
...
Fixes #20700 .
Patch global `WeakMap` before loading plugins to make a `WeakMap` keyed by `context.sourceCode` act as if every file has a unique `context.sourceCode`.
The runtime cost of this patch is very low - for the use case of `WeakMap` keyed by `SourceCode`, it should be *faster* than an actual `WeakMap`, as no methods do actual hash map lookups. The implementation takes care not to leak memory even if plugins use `WeakMap`s extensively or in pathological patterns.
I rebased #20611 on top of this, and after this PR, 100% of `eslint-plugin-mocha`'s conformance tests pass.
It's pretty hacky to be patching globals, but I believe the implementation to be robust. My rationale for this solution is explained in detail in #20700 .
2026-03-27 15:13:09 +00:00
camc314
c0ebbce18c
feat(linter)!: report error on unknown builtin rule ( #20464 )
2026-03-25 21:47:06 +00:00
overlookmotel
0aa1ff0fcb
fix(linter/plugins): ensure after hook is always called in ESLint compat mode ( #20721 )
...
In Oxlint, when using `createOnce` API, we ensure that `after` hooks are always called for all rules even in the event of a rule throwing an error during AST traversal.
Uphold the same guarantee when a plugin using `createOnce` API runs in ESLint via `eslintCompatPlugin`, including in language server environments where the process lives on after an error is thrown.
We now make sure that:
1. `after` hooks are always run even if an error occurs during AST visitation.
2. `after` hooks for all rules are always run after *all* the plugin's rules complete AST visitation (not just after each individual rule finishes AST visitation).
These guarantees allow creating a reliable per-file cache shared between rules with a pattern like this:
```ts
let cache: Data | null = null;
let numRunningRules = 0;
function setupCache(context) {
if (cache === null) cache = new Data(context);
numRunningRules++;
}
function teardownCache() {
numRunningRules--;
if (numRunningRules === 0) cache = null;
}
const rule1 = {
createOnce(context) {
return {
before() {
setupCache(context);
},
Identifier(node) {
// Use `cache`
},
after() {
teardownCache();
},
};
},
};
const rule2 = {
// Same as above
};
const rule3 = {
// Same as above
};
```
We can build on this to create a dedicated API for the shared cache use case, and have it work reliably in ESLint as well as Oxlint. Related: #20700 .
2026-03-25 01:02:05 +00:00
overlookmotel
31145a9c6d
fix(linter/plugins): fire after hook after CFG events in ESLint compat ( #20720 )
...
Fix a bug in `eslintCompatPlugin`.
`after` hooks should fire after all other visit functions, including CFG event handlers.
Previously `eslintCompatPlugin` added a `Program:exit` visit function to run the `after` hook, but it turns out this isn't the last to fire during AST visitation - last is the `onCodePathEnd` CFG event on `Program` node.
Fix this by running `after` hook in `onCodePathEnd` event handler instead. This simplifies the code somewhat as we no longer need to make sure that the visit function's key is a selector with higher specificity than all other `:exit` visit functions.
The downside is that the `onCodePathEnd` handler needs to check each time that the node it's called with is root `Program` node. But we make that check as cheap as possible by keeping a reference to `Program` node in a local var.
2026-03-25 01:02:05 +00:00
camc314
c09a5abe63
fix(diagnostics): skip minified fallback for single-line reporters ( #20716 )
...
fixes #20712
2026-03-24 22:18:42 +00:00