Commit Graph

2055 Commits

Author SHA1 Message Date
renovate[bot] f4eacfcfef chore(deps): update oxc to ^0.149.0 (#26412)
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/) |
|---|---|---|---|---|---|
| [@oxc-project/types](https://oxc.rs)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxc-types))
| [`^0.148.0` →
`^0.149.0`](https://renovatebot.com/diffs/npm/@oxc-project%2ftypes/0.148.0/0.149.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@oxc-project%2ftypes/0.149.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@oxc-project%2ftypes/0.149.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@oxc-project%2ftypes/0.148.0/0.149.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@oxc-project%2ftypes/0.148.0/0.149.0?slim=true)
|
| [oxc-parser](https://oxc.rs/docs/guide/usage/parser)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/napi/parser))
| [`^0.148.0` →
`^0.149.0`](https://renovatebot.com/diffs/npm/oxc-parser/0.148.0/0.149.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/oxc-parser/0.149.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxc-parser/0.149.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxc-parser/0.148.0/0.149.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxc-parser/0.148.0/0.149.0?slim=true)
|

---

### Release Notes

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

###
[`v0.149.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/napi/parser/CHANGELOG.md#01490---2026-09-07)

##### 🐛 Bug Fixes

-
[`c966aca`](https://redirect.github.com/oxc-project/oxc/commit/c966aca)
parser: Do not omit `<` token opening type argument list
([#&#8203;26328](https://redirect.github.com/oxc-project/oxc/issues/26328))
(overlookmotel)

</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 these
updates 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:eyJjcmVhdGVkSW5WZXIiOiI0NC42OS4xIiwidXBkYXRlZEluVmVyIjoiNDQuNjkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-07 16:03:12 +00:00
oxc-guard b4da00b621 release(apps): oxlint v1.82.0 && oxfmt v0.67.0 (#26384)
# Oxlint
### 🚀 Features

- 6a0e19c linter/eslint/no-unmodified-loop-condition: Support `checkConditionalExpressions` option (#26249) (camc314)

### 🐛 Bug Fixes

- 562dd14 jsx-a11y/anchor-has-content: Allow anchors passed as custom component props (#26360) (Mikhail Baev)
- 253cdb2 linter/eslint/id-length: Exempt TS interface/type-literal members with never (#26310) (Pearce Ropion)
- 8c7ea76 ast_visit: Account for trimmed source offsets (#26223) (Cameron)
- 5f9cffc linter/typescript/no-explicit-any: Fix rest parameter to `unknown[]` (#26279) (camc314)
- 4de9fa3 linter/react/jsx-no-literals: Check nested JSX expression literals (#26253) (camc314)
- 07851b9 parser: Fix debug assert failure when lexer error with tokens enabled (#26229) (overlookmotel)
- 9cee146 oxlint/lsp: Don't try to parse fix message, always fallback (#26204) (Sysix)
- a662c40 linter/eslint/no-useless-assignment: Handle destructuring assignments (#25925) (camc314)
- 304bd9a linter/eslint/no-array-constructor: Handle ASI hazards in fixer (#26166) (Hamody We)
- b41bb35 linter: Qualify rules in rules output (#26250) (camc314)
- 895c685 linter/typescript/no-extraneous-class: Avoid deleting class expressions (#26231) (camc314)
- 4ba33c8 linter/eslint/no-unused-vars: Handle stored arrow references (#26225) (camc314)

### 🛡️ Security

- 9a612d5 deps: Update npm packages (#26178) (renovate[bot])
# Oxfmt
### 💥 BREAKING CHANGES

- 2c9a947 parser: [**BREAKING**] Reduce `MAX_LEN` to 256 bytes below `u32::MAX` (#26352) (overlookmotel)

### 🚀 Features

- 68e12ab formatter_css: Follow the oxc-css-parser's acceptance line (#26337) (leaysgur)

### 🐛 Bug Fixes

- f7acdc0 formatter: Treat a JSDoc cast target as opaque in chain layouts (#26375) (leaysgur)
- 104061b formatter: Keep JSDoc cast parens with a comment inside them (#26374) (leaysgur)
- 3d00a76 formatter_css: Keep comment inside important and simple-vars colon (#26370) (leaysgur)
- 172ddb6 formatter_css: Keep a same-line line comment on its line (#26321) (leaysgur)
- cafaf32 formatter_css: Never drop comments inside an at-rule prelude (#26320) (leaysgur)
- 534a0fe formatter_css: Keep a line comment on its comma's line (#26319) (leaysgur)
- 99cfd75 formatter_css: Hide raw comment printing API, use strcut instead (#26316) (leaysgur)
- 2028896 formatter_css: Preserve comments around SCSS/Less variable values (#26276) (leaysgur)
- 6752abc formatter_css: Keep leading comments before (#26272) (leaysgur)
- 3b054de formatter_graphql: Align comment printing after open `{` (#26271) (leaysgur)
- b3c287a formatter_css: Fix SCSS bracket list printing (#26270) (leaysgur)
- bac770a formatter_css: Preserve comment in SCSS paren comma list (#26269) (leaysgur)
- c7b57ef formatter_css: Print SCSS map consisntent with and without comment (#26268) (leaysgur)
- 063e2b6 formatter_css: Preserve trailing comma in single-item scss lists (#26245) (leaysgur)
- 5f9580d oxfmt: Bump prettier-plugin-tailwindcss (#26273) (leaysgur)

### ⚡ Performance

- 1cad286 oxfmt: Match editorconfig once per file (#26239) (Yuji Sugiura)
- 260c5eb oxfmt: Match `overrides` once per file (#26238) (leaysgur)
- 61565bc oxfmt: Share resolved `FormatConfig` via `Arc` instead of cloning per file (#26237) (leaysgur)

### 📚 Documentation

- 32084d4 formatter_core: Clarify printer hard_line compression (#26312) (leaysgur)
- 4fabdcc formatter,formatter_css,formatter_graphql,formatter_yaml: Update DIVERGENCES.md (#26267) (leaysgur)
- 26a1fa4 formatter_core: Refine FORMATTER_POLICY (#26266) (leaysgur)

### 🛡️ Security

- 9a612d5 deps: Update npm packages (#26178) (renovate[bot])
2026-09-07 14:13:57 +00:00
camc314 aa38ddfbea fix(linter/unicorn/numeric-separators-style): correct schema defaults (#26393)
## Summary

Fix the generated defaults for `unicorn/numeric-separators-style`. The rule already uses `number.minimumDigits: 5`, matching Unicorn, but the generated documentation and JSON schema advertise `0`. The same schema issue also advertises `groupLength: 0` for every numeric base.

## Why the defaults are wrong

`NumericBaseConfig` is shared by binary, hexadecimal, octal, and decimal configuration. Its derived `Default` initializes both numeric fields to zero. The rule supplies the actual defaults in `NumericSeparatorsStyleConfig::default()` and `NumericNumberConfig::default()`.

Schema generation uses the shared type's defaults for its individual properties. In particular, flattening `NumericBaseConfig` into `NumericNumberConfig` preserves the zero-valued property defaults instead of the decimal defaults. This makes the documented threshold disagree with the rule's existing behavior:

```js
1234;   // Allowed with the default configuration.
12345;  // Reported; the fix is 12_345.
```

## Change

Add a single parameterized schema helper for `NumericBaseConfig`, then select the appropriate defaults with `schemars(schema_with = ...)` on each field. The helper retains the derived schema's property descriptions, types, and constraints, and overrides only the `groupLength` and `minimumDigits` default metadata.

The resulting defaults are:

| Configuration | `groupLength` | `minimumDigits` |
| --- | --- | --- |
| `binary` | 4 | 0 |
| `hexadecimal` | 2 | 0 |
| `octal` | 4 | 0 |
| `number` | 3 | 5 |

The schema annotation on the flattened decimal base also corrects `number.minimumDigits`. `number.fractionGroupLength` remains unchanged, and the documentation continues to display its default as `Infinity`.

Regenerate the JSON configuration schema and the TypeScript configuration types from it. The generated TypeScript types inline the binary, hexadecimal, and octal option objects because those properties now have individual schemas; their accepted configuration shapes are unchanged.

This changes schema and documentation metadata only. Runtime defaults, option parsing, diagnostics, and autofixes are unchanged.

Fixes #26391
2026-09-07 13:48:04 +00:00
overlookmotel 66744f0eb9 feat(parser)!: rename panicked to fatal_error in ParserReturn (#26382)
`ParserReturn` contains a property `panicked`.

The name `panicked` is misleading. The parser did _not_ panic. When `true`, it means that the parser encountered a fatal error and is unable to parse the source, because it contains an unrecoverable syntax error.

Rename this property to `fatal_error`, to better describe what it means.

This is a breaking change, but one that's trivial to fix in downstream code - the property doesn't change its meaning or behavior, just its name.

All the changes in this PR in other crates are just reacting to this change and making everywhere use the term "fatal error" instead of "panicked", so the codebase is consistent.
2026-09-07 09:41:52 +00:00
Sysix 5a52c8d53d test(oxlint/lsp): avoid calling run_file (#26353)
`run_file` is an internal function, which does not get called by the language server.
Instead, it calls the parent function `run_diagnostic`. Refactor the code, so internal implication is kept secret in tests.
2026-09-06 15:08:44 +00:00
Sysix a5a4ac8811 refactor(lsp): ToolTrait consume TextDocument & CodeActionParams (#26339)
Refactors the `oxc_language_server::Tool` trait and associated LSP plumbing to pass `TextDocument` and `CodeActionParams` by value, aligning tool APIs with “consume” semantics and simplifying call sites that previously had to keep borrowed values alive.
2026-09-05 18:33:58 +00:00
renovate[bot] 8dd81f9bb8 chore(deps): update dependency @napi-rs/cli to v3.9.0 (#26256)
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/cli](https://napi.rs/)
([source](https://redirect.github.com/napi-rs/napi-rs)) | [`3.8.6` →
`3.9.0`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.8.6/3.9.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fcli/3.9.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fcli/3.9.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fcli/3.8.6/3.9.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fcli/3.8.6/3.9.0?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the warning logs for
more information.

---

### Release Notes

<details>
<summary>napi-rs/napi-rs (@&#8203;napi-rs/cli)</summary>

###
[`v3.9.0`](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.8.6...@napi-rs/cli@3.9.0)

[Compare
Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.8.6...@napi-rs/cli@3.9.0)

</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:eyJjcmVhdGVkSW5WZXIiOiI0NC41Ny4zIiwidXBkYXRlZEluVmVyIjoiNDQuNjEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com>
2026-09-04 14:22:16 +00:00
Sysix 3b7e45399d refactor(oxlint/lsp): remove offset_to_position (#26336)
With https://github.com/oxc-project/oxc/pull/23329 the conversion from offset to line/column position is now done by a helper function in `oxc_language_server`.
There was a helper function inside `oxlint` to call the function. Instead, call it directly now.
Moved the tests to the correct place, and removed duplicated ones.
2026-09-04 14:00:48 +00:00
Sysix 2a68cc458b refactor(oxlint/lsp): remove Option for code actions map (#26335)
The `Option<>` wrap for `Vec<LinterCodeAction>` is not needed, after each lint-run we save an entry (even if empty) to the map.
There is no different code branch for `None` as a value.
2026-09-04 13:31:46 +00:00
camc314 949d7a9302 chore(deps): update vitest to v5 (#26299)
## Summary

- update workspace test dependencies to Vitest 5.0.0
- pin Vitest and related tooling to Vite 8.2.2
- migrate removed sequential and benchmark APIs
- update the pnpm lockfile
2026-09-03 19:05:05 +00:00
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
Sysix 9cee146886 fix(oxlint/lsp): don't try to parse fix message, always fallback (#26204)
We had at the beginning some rules' diagnostics like `<rule-name>: diagnostic message`, from that message we did create a code action `Fix this <rule-name> problem`, but this is buggy.
I searched in `crates/oxc_linter` for `OxcDiagnostic::\w+\(".*:` and found only `no-invalid-regexp` to be a useful case.
For other rules this could be wrong like:
- Unexpected `javascript:` url
- `<Document />` from `next/document` should not be imported outside of `pages/_document.js`. See: https:/..`
- Always prefer `const x: T = { ... }`.
2026-09-02 19:28:32 +00:00
camc314 b41bb35bca fix(linter): qualify rules in rules output (#26250)
## Summary

- preserve plugin names when tracking default and enabled rules
- prevent same-named rules from inheriting another plugin’s state in Markdown and JSON output
- add regression coverage for all known rule-name collisions

Fixes #26209.
2026-09-02 13:29:56 +00:00
camc314 6a0e19cfaa feat(linter/eslint/no-unmodified-loop-condition): support checkConditionalExpressions option (#26249)
## Summary

- add the ESLint-compatible `checkConditionalExpressions` option to `no-unmodified-loop-condition`, defaulting to `false`
- port tests added by eslint/eslint#21175 and add regression coverage for repeated references within and across binary groups

Closes #26182.
2026-09-02 10:39:45 +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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/8.68.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/8.68.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/8.67.0/8.68.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/8.67.0/8.68.0?slim=true)
|
|
[@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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fscope-manager/8.68.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fscope-manager/8.68.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fscope-manager/8.67.0/8.68.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fscope-manager/8.67.0/8.68.0?slim=true)
|
| [@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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fvisitor-keys/8.68.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fvisitor-keys/8.68.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fvisitor-keys/8.67.0/8.68.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fvisitor-keys/8.67.0/8.68.0?slim=true)
|
| [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) |
![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/10.9.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint/10.9.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint/10.8.1/10.9.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/10.8.1/10.9.1?slim=true)
|
| [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) |
![age](https://developer.mend.io/api/mc/badges/age/npm/svelte/5.57.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/svelte/5.57.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/svelte/5.56.10/5.57.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/svelte/5.56.10/5.57.0?slim=true)
|
| [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) |
![age](https://developer.mend.io/api/mc/badges/age/npm/tinypool/2.1.2?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/tinypool/2.1.2?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/tinypool/2.1.0/2.1.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/tinypool/2.1.0/2.1.2?slim=true)
|
|
[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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/vscode-languageserver-protocol/3.18.3?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vscode-languageserver-protocol/3.18.3?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vscode-languageserver-protocol/3.18.2/3.18.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vscode-languageserver-protocol/3.18.2/3.18.3?slim=true)
|
|
[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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/vscode-languageserver-textdocument/1.0.14?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vscode-languageserver-textdocument/1.0.14?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vscode-languageserver-textdocument/1.0.12/1.0.14?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vscode-languageserver-textdocument/1.0.12/1.0.14?slim=true)
|

---

### Release Notes

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;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
(@&#8203;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
(@&#8203;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`
([#&#8203;18648](https://redirect.github.com/sveltejs/svelte/pull/18648))

- feat: add `has` function to `createContext`
([#&#8203;18472](https://redirect.github.com/sveltejs/svelte/pull/18472))

- feat: support `defaultValue` on `<select>`
([#&#8203;18591](https://redirect.github.com/sveltejs/svelte/pull/18591))

- feat: add getOrInsert/getOrInsertComputed to SvelteMap
([#&#8203;18728](https://redirect.github.com/sveltejs/svelte/pull/18728))

##### Patch Changes

- fix: block template store subscriptions on the promise that assigns
the store
([#&#8203;18582](https://redirect.github.com/sveltejs/svelte/pull/18582))

- fix: route $derived teardown errors through invoke\_error\_boundary
([#&#8203;18486](https://redirect.github.com/sveltejs/svelte/pull/18486))

- fix: track SvelteDate snapshots in reactions
([#&#8203;18700](https://redirect.github.com/sveltejs/svelte/pull/18700))

- fix: remove `<svelte:head>` anchors on unmount
([#&#8203;18697](https://redirect.github.com/sveltejs/svelte/pull/18697))

- fix: warn on undeclared shorthand event handlers on `<svelte:window>`,
`<svelte:document>` and `<svelte:body>`
([#&#8203;18480](https://redirect.github.com/sveltejs/svelte/pull/18480))

- perf: reuse the cached value in the `<option>`/`<select>` value guard
([#&#8203;18713](https://redirect.github.com/sveltejs/svelte/pull/18713))

- fix: prevent malformed AST output for `<select>` with static `value`
attribute
([#&#8203;18449](https://redirect.github.com/sveltejs/svelte/pull/18449))

- fix: apply ownership mutation ignores to binding assignments
([#&#8203;18718](https://redirect.github.com/sveltejs/svelte/pull/18718))

- fix: prevent onoutroend from firing twice when compilerOptions.hmr is
true
([#&#8203;18655](https://redirect.github.com/sveltejs/svelte/pull/18655))

- fix: preserve whitespace after inline elements when printing
([#&#8203;18685](https://redirect.github.com/sveltejs/svelte/pull/18685))

- perf: fold SSR block-open markers into the branch's first push
([#&#8203;18712](https://redirect.github.com/sveltejs/svelte/pull/18712))

- fix: run `onDestroy` callbacks when a server render throws
([#&#8203;18585](https://redirect.github.com/sveltejs/svelte/pull/18585))

- fix: report `derived_invalid_export` for `export let x =
$derived(...)` in runes mode
([#&#8203;18692](https://redirect.github.com/sveltejs/svelte/pull/18692))

- fix: never apply class hash to elements inside `<svelte:head>`
([#&#8203;18160](https://redirect.github.com/sveltejs/svelte/pull/18160))

- fix: keep `defaultChecked` on hydrated radio inputs with spread
attributes
([#&#8203;18701](https://redirect.github.com/sveltejs/svelte/pull/18701))

- fix: accept `onfocusin`/`onfocusout` in
`a11y_mouse_events_have_key_events`
([#&#8203;18689](https://redirect.github.com/sveltejs/svelte/pull/18689))

- perf: O(n²)→O(n) Map lookups for legacy `$:` reactive statement
ordering
([#&#8203;18602](https://redirect.github.com/sveltejs/svelte/pull/18602))

- fix: distinct memoizer on style/class directives
([#&#8203;18466](https://redirect.github.com/sveltejs/svelte/pull/18466))

- fix: measure nested transitions before applying their starting styles
([#&#8203;18647](https://redirect.github.com/sveltejs/svelte/pull/18647))

- fix: don't turn component instances stored in `$state` into state
proxies
([#&#8203;18646](https://redirect.github.com/sveltejs/svelte/pull/18646))

- perf: emit `$.only_child` for elements with a single child
([#&#8203;18717](https://redirect.github.com/sveltejs/svelte/pull/18717))

- fix: omit `bind:focused` from SSR output (it has no HTML attribute)
([#&#8203;18724](https://redirect.github.com/sveltejs/svelte/pull/18724))

- fix: more robust rendering of Svelte custom element slots
([#&#8203;18710](https://redirect.github.com/sveltejs/svelte/pull/18710))

- perf: optimize simple object destructuring in `@const` tags
([#&#8203;18390](https://redirect.github.com/sveltejs/svelte/pull/18390))

- fix: properly apply static textarea value attribute during CSR
([#&#8203;18727](https://redirect.github.com/sveltejs/svelte/pull/18727))

- fix: end a restored reaction context at the end of its synchronous
segment
([#&#8203;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
([#&#8203;18703](https://redirect.github.com/sveltejs/svelte/pull/18703))

- fix: don't resurrect outroing elements when an ancestor block is
paused and resumed
([#&#8203;18431](https://redirect.github.com/sveltejs/svelte/pull/18431))

- perf: use `$.comment()` for single-comment templates
([#&#8203;18714](https://redirect.github.com/sveltejs/svelte/pull/18714))

- chore: move `@types/trusted-types` to devDependencies
([#&#8203;18730](https://redirect.github.com/sveltejs/svelte/pull/18730))

- perf: store setters cache as `Set` instead of `Array`
([#&#8203;18251](https://redirect.github.com/sveltejs/svelte/pull/18251))

- fix: transform derived assignments and select function bindings
correctly during server-side rendering
([#&#8203;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
([#&#8203;18721](https://redirect.github.com/sveltejs/svelte/pull/18721))

- fix: sync `SvelteURL` port signal when the protocol setter clears the
port
([#&#8203;18705](https://redirect.github.com/sveltejs/svelte/pull/18705))

- fix: block declaration tags and `{@const}` on async values read inside
closures
([#&#8203;18533](https://redirect.github.com/sveltejs/svelte/pull/18533))

- fix: avoid css tree-shaking for exported Snippet
([#&#8203;18540](https://redirect.github.com/sveltejs/svelte/pull/18540))

- perf: treat `<img loading>` as a static element again
([#&#8203;18711](https://redirect.github.com/sveltejs/svelte/pull/18711))

- fix: prevent `selectedcontent` mutation from changing the selected
option
([#&#8203;18495](https://redirect.github.com/sveltejs/svelte/pull/18495))

- fix: avoid `NaN` keyframe values in `slide` transition for elements
without a layout box
([#&#8203;18430](https://redirect.github.com/sveltejs/svelte/pull/18430))

- fix: preserve line feed character references in attribute values
([#&#8203;18691](https://redirect.github.com/sveltejs/svelte/pull/18691))

- fix: decode uppercase-`X` hex numeric character references (`&#X...;`)
([#&#8203;18708](https://redirect.github.com/sveltejs/svelte/pull/18708))

- chore: clarify when `$effect.pre` runs relative to DOM updates
([#&#8203;18534](https://redirect.github.com/sveltejs/svelte/pull/18534))

- fix: scope SSR boundary failed snippets to their boundary
([#&#8203;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
[@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#&#8203;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
[@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#&#8203;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
renovate[bot] b9559fb8e9 chore(deps): update oxc to ^0.148.0 (#26221)
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/) |
|---|---|---|---|---|---|
| [@oxc-project/types](https://oxc.rs)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxc-types))
| [`^0.147.0` →
`^0.148.0`](https://renovatebot.com/diffs/npm/@oxc-project%2ftypes/0.147.0/0.148.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@oxc-project%2ftypes/0.148.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@oxc-project%2ftypes/0.148.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@oxc-project%2ftypes/0.147.0/0.148.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@oxc-project%2ftypes/0.147.0/0.148.0?slim=true)
|
| [oxc-parser](https://oxc.rs/docs/guide/usage/parser)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/napi/parser))
| [`^0.147.0` →
`^0.148.0`](https://renovatebot.com/diffs/npm/oxc-parser/0.147.0/0.148.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/oxc-parser/0.148.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxc-parser/0.148.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxc-parser/0.147.0/0.148.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxc-parser/0.147.0/0.148.0?slim=true)
|

---

### 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 these
updates 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:eyJjcmVhdGVkSW5WZXIiOiI0NC40OS4wIiwidXBkYXRlZEluVmVyIjoiNDQuNDkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-01 10:27:40 +00:00
oxc-guard 0b4e2e67f4 release(apps): oxlint v1.81.0 && oxfmt v0.66.0 (#26199)
# Oxlint
### 🚀 Features

- 60b945d linter/nextjs/no-typos: Implement suggestion (#26091) (Mikhail Baev)

### 🐛 Bug Fixes

- 33ac4b0 linter/lsp: Prevent tsgolint from holding onto processes (#25570) (Adrian Schaedle)
- baf4b1e linter/import/no-empty-named-blocks: Make empty value import removal a suggestion (#26155) (camc314)
- 77cfaec linter/eslint/object-shorthand: Preserve `__proto__` semantics (#26154) (camc314)
- fa3c082 linter/unicorn/prefer-set-size: Ignore shadowed `Set` constructors (#26153) (camc314)
- e412cf2 linter: Clamp invalid JS plugin locations (#26144) (camc314)
- d86c113 linter: Normalize reversed JS plugin locations (#26138) (camc314)
- 73c09b2 linter/eslint/no-use-before-define: Run on JS, JSX files (#26114) (camc314)
- 03ef0f2 linter/unicorn/no-useless-spread: Treat typed arrays as a distinct value hint (#26067) (Aadharsh  Pannirselvam)
- bd15905 linter/react/no-unstable-nested-components: Check nested component object property names (#26101) (camc314)
- 3910e2b linter/eslint/no-unassigned-vars: Skip Svelte and Vue files (#26042) (Hamody We)
- 047f7ca linter/plugins: Fix interaction between JS plugins and Vue rules (#26080) (overlookmotel)
- 8531b9b linter/plugins: Alter method for obtaining mutable `Program` when sending AST to JS plugins (#26077) (overlookmotel)
- dc464ff linter/unicorn/prefer-math-min-max: Avoid unsafe autofix (#26060) (camc314)

### 📚 Documentation

- 464ddd1 linter: Support a shared short description for jest/vitest rules (#26186) (connorshea)
- 9db5ad3 linter: Add short description to `vue/no-dupe-keys` (#26183) (connorshea)
- db66f58 linter: Correct export/import mismatch in bar and foo example (#25927) (billychannnnnn)
- d5be037 linter/typescript/switch-exhaustiveness-check: Clarify default case comment pattern (#26100) (camc314)
# Oxfmt
### 🚀 Features

- 1fb37b6 formatter/css: Format declaration-shaped raw-prelude rules (postcss nested config blocks) (#26194) (leaysgur)

### 🐛 Bug Fixes

- 57e8e22 formatter_css: Space a folded sign after a call in Less operations (#26134) (leaysgur)
- e4298fb formatter/jsdoc: Follow CommonMark for interrupting lists and guard wrapping from creating them (#26098) (leaysgur)
- a1e21c2 formatter: Apply head body policy everywhere (#26074) (leaysgur)
- 676b7e1 formatter: Keep comments in their for-head slot, before an empty-statement body and do-while (#26073) (leaysgur)
- 3bbcea6 formatter: Keep comments between a head and its body out of the braces across all constructs (#26071) (leaysgur)
- 57537a2 formatter: Place comments between a head and open paren (#26058) (leaysgur)
- e2d53e7 formatter: Place comments between a statement head and its body (#26043) (leaysgur)
- 662556c formatter: Print the idempotent placement for comments in dropped parens (#26041) (leaysgur)
- faf11d9 formatter_yaml: Keep trailing whitespace in block scalars (#26072) (leaysgur)

### ⚡ Performance

- ac4785a diagnostics: Use fixed ANSI styles (#26130) (Boshen)

### 📚 Documentation

- b879608 formatter,formatter_graphql,formatter_yaml: Annotate own-line comment inlining as known policy violation (#26131) (leaysgur)
- 181953b oxfmt,formatter_core,formatter,formatter_yaml,formatter_css,formatter_graphql: Extract `DIVERGENCES.md` out from `AGENTS.md` (#26121) (leaysgur)
- a67cb9d formatter,formatter_core: Document comment moving policy (#26075) (leaysgur)
- fc175b0 formatter_core: Clarify idempotency test infra (#26069) (leaysgur)
2026-09-01 08:25:16 +00:00
Sysix 9e1b635d34 refactor(oxlint/lsp): delay String Conversion for FixedContent to CodeAction properties (#26176)
**Before:**
Converting `Fix` to `FixContent` did convert `Cow` into `String` and stored into the `ServerLinter.code_action` Map, to get requested later by the client, where we convert `FixContent` to `CodeAction` (where we need the `String` format)

**After:**
Consume directly `Fix` `Cow` fields, and delay to conversion to `String` until the `CodeAction` is requested to be converted.
So only downside I see, is that `textDocument/codeAction` is requested more times than a `textDocument/diagnostic` request. So the conversion does happen more times, but get released quickly.
2026-09-01 08:09:29 +00:00
Sysix 8af5703b56 chore(oxlint/generate-config-types): remove unneeded DummyRule tsType mapping (#26206)
With the major update in https://github.com/oxc-project/oxc/pull/26193, this code does not do anything.
Removing it.
2026-08-31 19:28:43 +00:00
Yuji Sugiura cd00a2c635 chore(oxlint): regenerate config types by cargo lintgen (#26195)
Follow up on #26193. (Also fixes main CI failures)

`json-schema-to-typescript`: `^15.0.4` → `^16.0.0` changed the output.
2026-08-31 13:25:13 +09: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
camc314 d5be0375e6 docs(linter/typescript/switch-exhaustiveness-check): clarify default case comment pattern (#26100)
## Summary
- clarify that `defaultCaseCommentPattern` recognizes a trailing comment in place of an omitted `default` clause
- document the required location, absence of a live `default`, and the `considerDefaultExhaustiveForUnions` requirement for union switches
- regenerate the JSON schema and TypeScript configuration types

Fixes #26087
2026-08-26 08:14:27 +00:00
Hamody We 3910e2b9b1 fix(linter/eslint/no-unassigned-vars): skip Svelte and Vue files (#26042)
## Summary

Closes #26038.

`no-unassigned-vars` is a `correctness` rule, so this fires by default
with no config:

```svelte
<script lang="ts">
  let dialog: HTMLDialogElement;

  function openDialog() {
    dialog.showModal();
  }
</script>

<dialog bind:this={dialog}>Hello</dialog>
```

```text
repro.svelte:2:7: warning eslint(no-unassigned-vars): 'dialog' is always 'undefined' because it's never assigned.
```

## Why the rule cannot get this right today

The rule's decision is `has_read && no reference is_write()`, taken over
the symbol's references in the current script block. Oxlint reaches
`.svelte`/`.vue` through `PartialLoader`, which extracts the `<script>`
blocks and throws the markup away before parsing — so the template's
write is not in the AST the rule sees, and no reference on `dialog` is
ever a write. Every ingredient of the diagnostic is satisfied, and the
diagnostic is still wrong: Svelte assigns the element to `dialog` on
mount.

The same shape exists in Vue, where a `<script setup>` `let` is a
`setup-let` binding that `v-model="x"` and inline handlers such as
`@click="x = 1"` compile to direct assignments against.

This is not a matter of tightening the check — the write is in a part of
the file the linter never parses.

## The change

`prefer-const` hit exactly this and already skips both extensions
([#25148](https://github.com/oxc-project/oxc/pull/25148)):

```rust
fn should_run(&self, ctx: &crate::context::ContextHost) -> bool {
    // ignore svelte/vue: their templates can reassign a binding, which we can't see.
    !ctx.file_extension().is_some_and(|ext| ext == "svelte" || ext == "vue")
}
```

This applies the sibling rule's guard rather than inventing one, and
documents it in the rule docs under an `#### Ignored Files` heading,
matching `prefer-const`'s wording.

`.astro` is deliberately **not** included: an Astro template renders a
frontmatter binding but has no construct that writes back to it, so the
false positive does not arise there. `prefer-const` drew the same line.

## Scope, stated honestly

This trades a false positive for lost coverage: a genuinely unassigned
variable inside a `.svelte`/`.vue` `<script>` block is no longer
reported. That matches the precedent and the reporter's own request, and
a `correctness` false positive that fires on the documented Svelte idiom
costs more than the missed report. Restoring coverage needs
template-aware analysis, which is the language-support effort tracked
separately (#13017, #17991).

## Verification

- `cargo test -p oxc_linter --lib` — **1254 passed, 0 failed**.
- Two new tests, `test_svelte` and `test_vue`, cover the reported repro,
`bind:value`, a two-`<script>` Svelte component, `v-model`, and an
inline `@click` handler.
- **Revert-checked:** with `should_run` removed and the tests kept,
exactly those two tests fail and the rest pass. The failure output
reproduces the reported diagnostic verbatim, including the `let shared`
case from the two-script component — so the tests fail for the right
reason, not because the fixture path changed.
- `cargo clippy -p oxc_linter --lib --all-features` — no new findings
(the two `FromIterator::from_iter` warnings are pre-existing, in
`tsgolint.rs` and `lib.rs`).
- `cargo fmt --check` clean.
- The rule is not part of `docs_rule_pages.snap`, so the doc addition
needs no snapshot regeneration.

Built and tested on Windows with the `1.97.1-x86_64-pc-windows-gnu`
toolchain rather than the pinned `1.98.0`, and with `RUSTFLAGS`
overridden to drop the MSVC-only link args that `.cargo/config.toml`
applies to every `target_os = "windows"` target. Nothing in the
repository was changed for that.

---
Written with AI assistance (Claude Code), reviewed and tested by me
before submitting, per AGENTS.md.

---------

Signed-off-by: hamodywe <iosapk.org@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 08:32:41 +01:00
overlookmotel d5d3c76cf6 test(linter/plugins): skip ESLint Stylistic conformance test with invalid syntax (#26082)
#26076 updated Oxlint JS plugin conformance snapshots, revealing that one ESLint Stylistic test was failing.

Turns out the cause was #25154 which (correctly) made it illegal for a `TSIndexSignature` to contain more than one parameter. The code in this test case is invalid. So just skip the test.
2026-08-25 14:13:28 +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
overlookmotel 36ec0ef2ba test(linter/plugins): update conformance snapshot (#26076)
Conformance snapshots had got out of sync. At some point 1 test for ESLint Stylistic's `no-comma` rule has got broken (unclear when or how).

This PR doesn't attempt to fix the bug, but just makes sure the snapshot matches reality.
2026-08-25 10:10:46 +00:00
renovate[bot] 1c87f82a4e chore(deps): update oxc to ^0.147.0 (#26059)
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/) |
|---|---|---|---|---|---|
| [@oxc-project/types](https://oxc.rs)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxc-types))
| [`^0.146.0` →
`^0.147.0`](https://renovatebot.com/diffs/npm/@oxc-project%2ftypes/0.146.0/0.147.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@oxc-project%2ftypes/0.147.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@oxc-project%2ftypes/0.147.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@oxc-project%2ftypes/0.146.0/0.147.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@oxc-project%2ftypes/0.146.0/0.147.0?slim=true)
|
| [oxc-parser](https://oxc.rs/docs/guide/usage/parser)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/napi/parser))
| [`^0.146.0` →
`^0.147.0`](https://renovatebot.com/diffs/npm/oxc-parser/0.146.0/0.147.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/oxc-parser/0.147.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxc-parser/0.147.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxc-parser/0.146.0/0.147.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxc-parser/0.146.0/0.147.0?slim=true)
|

---

### Release Notes

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

###
[`v0.147.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/napi/parser/CHANGELOG.md#01470---2026-08-24)

##### 🐛 Bug Fixes

-
[`8a9bdbd`](https://redirect.github.com/oxc-project/oxc/commit/8a9bdbd)
estree: Include decorators in `FormalParameterRest ` spans
([#&#8203;26021](https://redirect.github.com/oxc-project/oxc/issues/26021))
(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 these
updates 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:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-24 13:22:37 +00:00
oxc-guard 97e99b8548 release(apps): oxlint v1.80.0 && oxfmt v0.65.0 (#26045)
# Oxlint
### 🚀 Features

- 70c3e35 linter/typescript/no-confusing-non-null-assertion: Implement suggestion (#26012) (Mikhail Baev)

### 🐛 Bug Fixes

- 8a353a7 linter/eslint/no-control-regex: Refine help message text (#25996) (Rahul Mishra)
- 8a9bdbd estree: Include decorators in `FormalParameterRest ` spans (#26021) (camc314)
- 8d94cd1 linter/eslint/no-useless-rename: Preserve type modifiers (#26020) (Cameron)
- 2cde1f6 rust: Address nightly deprecations (#25998) (Boshen)
- 51d36d7 linter/vue: Resolve `vue` imports via shared import helpers (#25903) (Connor Shea)
- 83a68d2 linter/react/no-react-children: Resolve `react` imports by symbol (#25901) (Connor Shea)
- 124e196 linter: Resolve globals by reference, not by name (#25905) (Connor Shea)
- a701bcc linter: Remove invalid React compiler doc links (#25900) (Boshen)

### 📚 Documentation

- 9b7e153 linter: Set `version` to 1.79.0 for rules shipped in 1.79.0 (#25902) (connorshea)
# Oxfmt
### 🐛 Bug Fixes

- bf37dd5 formatter: Preserve class decorators before export when the statement is suppressed (#26034) (leaysgur)
2026-08-24 11:33:15 +00:00
Rahul Mishra 8a353a76e9 fix(linter/eslint/no-control-regex): refine help message text (#25996)
`eslint(no-control-regex)` correctly flags this regex
```ts
const fnKeyRe = /^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/
```

`'U+001B' is a control character.` and shows in help text, `help: Avoid
matching control characters in regular expressions. If intentional,
consider using a Unicode escape instead.`
but the help text is misleading, all forms of unicode escapes are also
flagged.

```ts
const a = /\x1b/;
const b = /\u001b/;
const c = /\u{1b}/u;
const d = /\u{001b}/u;
```
This behaviour is consistent with upstream eslint rule, just the help
text is misleading, so I have changed the help text to say to disable
this rule when its intentional
2026-08-24 07:47:09 +00:00
camc314 8a9bdbd6d8 fix(estree): include decorators in FormalParameterRest spans (#26021)
Serialize `FormalParameterRest` with its outer span so its range includes parameter decorators. Regenerate the raw-transfer deserializers and remove `sourceMapValidationDecorators.ts` from the ESTree mismatch baseline.

Fixes #26011.
2026-08-23 18:32:30 +00:00
renovate[bot] 32c2675084 chore(deps): update rust crates (#26024)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[javascript-globals](https://redirect.github.com/oxc-project/javascript-globals)
| workspace.dependencies | minor | `1.5.2` → `1.6.0` |
| [papaya](https://redirect.github.com/ibraheemdev/papaya) |
workspace.dependencies | patch | `0.2.4` → `0.2.5` |
| [saphyr](https://redirect.github.com/saphyr-rs/saphyr) |
workspace.dependencies | patch | `0.0.11` → `0.0.12` |
| [similar](https://redirect.github.com/mitsuhiko/similar) |
workspace.dependencies | minor | `3.1.2` → `3.2.0` |

---

### Release Notes

<details>
<summary>oxc-project/javascript-globals (javascript-globals)</summary>

###
[`v1.6.0`](https://redirect.github.com/oxc-project/javascript-globals/blob/HEAD/CHANGELOG.md#160---2026-08-18)

[Compare
Source](https://redirect.github.com/oxc-project/javascript-globals/compare/javascript-globals-v1.5.2...javascript-globals-v1.6.0)

##### Added

- add Bun globals
([#&#8203;275](https://redirect.github.com/oxc-project/javascript-globals/pull/275))

##### Other

- reduce Rust dev debug info
([#&#8203;271](https://redirect.github.com/oxc-project/javascript-globals/pull/271))

</details>

<details>
<summary>ibraheemdev/papaya (papaya)</summary>

###
[`v0.2.5`](https://redirect.github.com/ibraheemdev/papaya/releases/tag/v0.2.5):
0.2.5

[Compare
Source](https://redirect.github.com/ibraheemdev/papaya/compare/v0.2.4...v0.2.5)

- Added the `fast-barrier` feature to allow opting out of process wide
memory barriers, which can be expensive to initialize
([#&#8203;100](https://redirect.github.com/ibraheemdev/papaya/pull/100)).
- Fixed a bug where blocking resizes could lead to deadlocks
([#&#8203;92](https://redirect.github.com/ibraheemdev/papaya/pull/92)).
- `HashSet::retain` no longer takes a mutable reference
([#&#8203;101](https://redirect.github.com/ibraheemdev/papaya/pull/101)).

</details>

<details>
<summary>saphyr-rs/saphyr (saphyr)</summary>

###
[`v0.0.12`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.0.11...v0.0.12)

[Compare
Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.0.11...v0.0.12)

</details>

<details>
<summary>mitsuhiko/similar (similar)</summary>

###
[`v3.2.0`](https://redirect.github.com/mitsuhiko/similar/blob/HEAD/CHANGELOG.md#320)

[Compare
Source](https://redirect.github.com/mitsuhiko/similar/compare/3.1.2...3.2.0)

- Added structured, line-oriented three-way merging through `TextMerge`,
with
merge and diff3 conflict output, configurable labels and marker sizes,
owned
and borrowed inputs, byte output, and whitespace-insensitive comparison.
- Added `WhitespaceMode` and `TextDiffConfig::whitespace_mode` for
Git-style
line comparisons that ignore changes in whitespace (`-b`) or all
whitespace
  (`-w`).
- Changed `Algorithm::Myers` to reduce unmatched/confusing records and
use
  Git-style bounded, non-minimal splits on expensive searches, and added
`Algorithm::RawMyers` for the previous shortest-edit-script behavior
without
  output-changing heuristics.
- Improved heuristics and performance for most algorithms other than
LCS.
- Improved large-input performance by avoiding quadratic Histogram
scans.

</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:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-08-23 17:02:20 +00:00
Sysix 7e2f193dc2 refactor(lsp): allow tools to send multiple ClientMessages (#25961)
> ## Pull request overview
>
> Refactors the language-server tool initialization/restart plumbing to support emitting multiple `ClientMessage`s (instead of a single optional message), so tools can surface more than one warning/error to the client during startup and config changes.
>
2026-08-22 10:17:51 +00:00
renovate[bot] d5d575c1de chore(deps): update rust to v1.98.0 (#25945)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [rust](https://rust-lang.org/)
([source](https://redirect.github.com/rust-lang/rust),
[changelog](https://redirect.github.com/rust-lang/rust/blob/main/RELEASES.md))
| toolchain | minor | `1.97.1` → `1.98.0` |

---

### 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.

🔕 **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:eyJjcmVhdGVkSW5WZXIiOiI0NC4zNS40IiwidXBkYXRlZEluVmVyIjoiNDQuMzUuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com>
2026-08-20 18:04:07 +00:00
Boshen 1193c9dbaf chore(oxfmt): dogfood operator position at line start (#25937)
dogfood
2026-08-20 14:36:47 +00:00
renovate[bot] f7be7cc5d3 chore(deps): update dependency oxc-parser to ^0.146.0 (#25921)
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/) |
|---|---|---|---|---|---|
| [oxc-parser](https://oxc.rs/docs/guide/usage/parser)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/napi/parser))
| [`^0.145.0` →
`^0.146.0`](https://renovatebot.com/diffs/npm/oxc-parser/0.145.0/0.146.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/oxc-parser/0.146.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxc-parser/0.146.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxc-parser/0.145.0/0.146.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxc-parser/0.145.0/0.146.0?slim=true)
|

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0NC4zMy4yIiwidXBkYXRlZEluVmVyIjoiNDQuMzMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-19 10:31:37 +00:00
renovate[bot] 2878ee943b chore(deps): update dependency @oxc-project/types to ^0.146.0 (#25915)
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/) |
|---|---|---|---|---|---|
| [@oxc-project/types](https://oxc.rs)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxc-types))
| [`^0.145.0` →
`^0.146.0`](https://renovatebot.com/diffs/npm/@oxc-project%2ftypes/0.145.0/0.146.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@oxc-project%2ftypes/0.146.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@oxc-project%2ftypes/0.146.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@oxc-project%2ftypes/0.145.0/0.146.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@oxc-project%2ftypes/0.145.0/0.146.0?slim=true)
|

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0NC4zMy4yIiwidXBkYXRlZEluVmVyIjoiNDQuMzMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-19 09:44:51 +00:00
renovate[bot] 82ebb48d68 chore(deps): update oxc to ^0.145.0 (#25878)
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/) |
|---|---|---|---|---|---|
| [@oxc-project/types](https://oxc.rs)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxc-types))
| [`^0.144.0` →
`^0.145.0`](https://renovatebot.com/diffs/npm/@oxc-project%2ftypes/0.144.0/0.145.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@oxc-project%2ftypes/0.145.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@oxc-project%2ftypes/0.145.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@oxc-project%2ftypes/0.144.0/0.145.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@oxc-project%2ftypes/0.144.0/0.145.0?slim=true)
|
| [oxc-parser](https://oxc.rs/docs/guide/usage/parser)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/napi/parser))
| [`^0.144.0` →
`^0.145.0`](https://renovatebot.com/diffs/npm/oxc-parser/0.144.0/0.145.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/oxc-parser/0.145.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxc-parser/0.145.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxc-parser/0.144.0/0.145.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxc-parser/0.144.0/0.145.0?slim=true)
|

---

### Release Notes

<details>
<summary>oxc-project/oxc (@&#8203;oxc-project/types)</summary>

###
[`v0.145.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/npm/oxc-types/CHANGELOG.md#01450---2026-08-18)

##### 🐛 Bug Fixes

-
[`0c68b7f`](https://redirect.github.com/oxc-project/oxc/commit/0c68b7f)
estree: Emit `decorators` on `FormalParameterRest`
([#&#8203;25582](https://redirect.github.com/oxc-project/oxc/issues/25582))
(camc314)

</details>

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

###
[`v0.145.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/napi/parser/CHANGELOG.md#01450---2026-08-18)

##### 🐛 Bug Fixes

-
[`db44651`](https://redirect.github.com/oxc-project/oxc/commit/db44651)
napi: Disable reuseWorker in browser bindings
([#&#8203;25640](https://redirect.github.com/oxc-project/oxc/issues/25640))
(leaysgur)
-
[`0c68b7f`](https://redirect.github.com/oxc-project/oxc/commit/0c68b7f)
estree: Emit `decorators` on `FormalParameterRest`
([#&#8203;25582](https://redirect.github.com/oxc-project/oxc/issues/25582))
(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 these
updates 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:eyJjcmVhdGVkSW5WZXIiOiI0NC4zMi42IiwidXBkYXRlZEluVmVyIjoiNDQuMzIuNiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-18 16:11:53 +00:00
oxc-guard[bot] 0db127cc16 release(apps): oxlint v1.79.0 && oxfmt v0.64.0 (#25866)
# Oxlint
### 💥 BREAKING CHANGES

- 8c4552d linter: [**BREAKING**] Split react/react-compiler into
per-category rules (#25500) (Boshen)

### 🚀 Features

- 9b7394e linter/typescript/no-empty-object-type: Implement suggestion
(#25833) (Mikhail Baev)

### 🐛 Bug Fixes

- 345f981 react_compiler: Skip node_modules by default (#25859) (Boshen)
- 2f40afa linter/unicorn/no-array-callback-reference: Ignore effect
library imports (#25857) (Michaël Bitard)
- 7b565a0 linter: Align React Compiler rule categories (#25840) (Boshen)
- 228e8e0 linter: Resolve inactive React compiler rules (#25830)
(Boshen)
- f8e4884 linter/eslint/no-useless-constructor: Allow parameter
properties (#25811) (camc314)
- e4b6993 linter: Report exhaustive effect dependencies (#25829)
(Boshen)
- 742e25f linter/eslint/no-return-assign: Anchor diagnostic on return
stmt (#25803) (camc314)
- b831ca8 react-compiler: Improve derived state diagnostic (#25804)
(Boshen)
- 5908c87 linter/jest/prefer-mock-return-shorthand: Preserve
implementations using this (#25802) (camc314)
- f6b2265 linter/eslint/no-redeclare: Run in ES modules, skipping only
the globals check (#25691) (Hamody We)
- ca9f553 linter/unicorn/prefer-default-parameters: Mark fixer as a
suggestion (#25801) (camc314)
- aa49d86 linter: Allow spread rule options in config types (#25675)
(ch3rry)
- d5483f8 linter/typescript/no-useless-empty-export: Skip TS declaration
files (#25789) (Evyatar Daud)
- 57f2199 linter/typescript/no-useless-empty-export: Report after
imports (#25786) (camc314)
- 633bc19 linter/typescript/no-unnecessary-type-conversion: Mark fixer
as `suggestion` (#25787) (camc314)
- dea3339 linter/typescript/explicit-module-boundary-types: Anchor
diagnostics on arrows (#25779) (camc314)
- 5cd6f02 linter/eslint/array-callback-return: Anchor diagnostic on
callback (#25780) (camc314)
- ef8cebf linter/eslint/preserve-caught-error: Handle AggregateError
options (#25775) (camc314)
- c108d5c linter: Improve React Compiler diagnostics (#25742) (Boshen)
- c9ec55e react-compiler: Improve diagnostic spans (#25731) (Boshen)
- 1cbbcb7 linter/unicorn/prefer-string-replace-all: Apply fixes in one
pass (#25709) (Mikhail Baev)
- dec0a86 react-compiler: Standardize diagnostics (#25702) (Boshen)
- 5fd77f7 linter/react/display-name: Report curried HOC inner component
(#25662) (camc314)
- 4dbb80e linter/import/no-named-as-default: Report local export
conflicts (#25658) (camc314)
- e8a7214 linter/react/rules-of-hooks: Report hooks inside try blocks
(#25670) (camc314)
- 36f8451 linter/eslint/no-eval: Align indirect default with ESLint
(#25656) (camc314)
- d901d24 linter/react/exhaustive-deps: Handle destructured object
dependencies (#25669) (camc314)
- beb724d linter/eslint/no-unused-vars: Report bare underscore
parameters (#25663) (camc314)
- fa36f26 linter/react/no-this-in-sfc: Detect this in nested arrow
callbacks (#25653) (camc314)
- 44d1be3 linter/typescript/no-var-requires: Run rule on JavaScript
(#25664) (camc314)
- 4004c10 linter/eslint/no-irregular-whitespace: Check comments by
default (#25660) (camc314)
- 625401d linter/import/no-named-default: Flag type-only named defaults
(#25661) (camc314)
- 8eacb2d linter/typescript/no-non-null-asserted-optional-chain: Detect
assertions after continued optional chains (#25659) (camc314)
- d55b76c linter/react/no-direct-mutation-state: Detect computed state
mutations (#25654) (camc314)
- f92c651 linter/unicorn/no-abusive-eslint-disable: Use directive prefix
in diagnostic (#25657) (camc314)
- ee44996 linter/eslint/max-classes-per-file: Anchor diagnostic at
program start (#25652) (camc314)
- 403ec40 linter/eslint/no-multi-assign: Handle parenthesized declarator
initializers (#25651) (camc314)
- 6c9ba37 linter/jest/expect-expect: Detect assertions in nested
function declarations (#25650) (camc314)
- 285820e linter/no-large-snapshots: Precompile and document allowed
snapshot matchers (#25611) (Mikhail Baev)
- 1be1e20 linter/eslint/prefer-promise-reject-errors: Report on spread
arguments (#25648) (Mikhail Baev)
- a38f7b3 oxlint,oxfmt: Apply .gitignore only to walk targets, not
explicitly named files (#25531) (leaysgur)
- 509931b semantic: Classify global references per identifier (#25608)
(camc314)
- 0c68b7f estree: Emit `decorators` on `FormalParameterRest` (#25582)
(camc314)
- 1d22912 linter/plugins: Parse rule-less directive justifications
(#25559) (camc314)
- eaf80d8 linter/unicorn/prefer-node-protocol: Validate exact Node.js
built-in specifiers (#25558) (camc314)
- 57b94af linter/promise/no-multiple-resolved: Ignore unresolved globals
(#25530) (Tushar Singh)
- 80e64c2 linter/expect-expect: Validate assertion regex (#25504)
(Mikhail Baev)
- 7830604 linter/react/exhaustive-deps: Treat binary expressions as a
stable dependency (#25508) (Hamody We)
- 4df5835 linter: Allow capitalized built-in calls (#25516) (Boshen)
- 9d49d27 react_compiler: Bail out instead of panicking on "Expected a
node for all scopes" (#25506) (Boshen)
- d43b562 linter/vitest/prefer-expect-assertions: Handle parameterized
Vitest assertion suggestions (#25476) (camc314)

### ⚡ Performance

- e8303d6 linter: Shrink rule serialization dispatch (#25818) (Boshen)
- c84ede3 estree_tokens: Share JS token update entry point (#25826)
(Boshen)
- 35c8eb2 linter: Compute sort keys once with sort_by_cached_key
(#25821) (Boshen)
- f0121ed linter: Share config deserialization entry point (#25820)
(Boshen)
- 2dacf7a oxlint: Reduce debug formatting code size (#25797) (Boshen)
- 9ed10b7 linter: Use unstable sorts for unique keys (#25778) (Boshen)
- 63ff8ef linter: Outline diagnostic construction (#25762) (Boshen)
- 2dd7446 diagnostics: Preallocate graphical output (#25721) (Boshen)
- 9c8abab diagnostics: Batch graphical reports (#25710) (Boshen)
- 8e9b95f linter: Use table for rule names (#25458) (Boshen)
# Oxfmt
### 🚀 Features

- c07fe7c oxfmt: Support `experimentalOperatorPosition` (#25643)
(leaysgur)
- 2adb8fb formatter: Implement `operatorPosition` option (#25581)
(leaysgur)

### 🐛 Bug Fixes

- 44231fb formatter: Fix comment and indent issues around unions
(#25665) (leaysgur)
- 2465e87 formatter: Keep comments in place when dropping
`EmptyStatement` (#25730) (leaysgur)
- 7e4f3b7 formatter: Print `JSDocUnknownType` (#25729) (leaysgur)
- 5238d9e formatter: Keep nested awaited-paren member chain grouped in
call arguments (#25646) (leaysgur)
- a38f7b3 oxlint,oxfmt: Apply .gitignore only to walk targets, not
explicitly named files (#25531) (leaysgur)
- 5c0a5ff formatter_css: Fill own-line block comments inside
space-separated values (#25578) (leaysgur)
- 53debfa formatter_css: Keep trailing comma and indent after
comment-preceded last map value (#25577) (leaysgur)
- 1a83a8d oxfmt: Mirror printer line suppression and restore
dedent-to-root (#25573) (leaysgur)
- 7f350d1 formatter: Keep unary comment and print only needed parens
(#25526) (leaysgur)
- f405789 formatter_yaml: Consistent chomped eos behavior (#25523)
(leaysgur)
- a243311 formatter_yaml: Bump oxc-yaml-parser for contentless block
scalar (#25519) (leaysgur)
- 40d38a0 formatter_css: Keep multi value function args intact after
leading comment (#25518) (leaysgur)

### 📚 Documentation

- 223e785 oxfmt/conformance: Update notes on conformance (#25757) (Yuji
Sugiura)
- 673dc6d oxfmt: Move some docs from AGENTS.md to code comment (#25649)
(leaysgur)
- fed6681 oxfmt: Skip expanding overrides options (#25572) (leaysgur)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2026-08-18 22:27:08 +08:00
Boshen 228e8e0f85 fix(linter): resolve inactive React compiler rules (#25830)
Enable React Compiler memo dependency validation so `react/memo-dependencies` reports missing and extra values. Remove `react/gating` until Oxlint exposes compiler gating options.

Validated with `just ready`.

AI-assisted.
2026-08-18 16:16:24 +08:00
Boshen c84ede371b perf(estree_tokens): share JS token update entry point (#25826)
Add a shared non-generic JS-style token update entry point so `oxc_linter` and `oxlint` do not each instantiate the ESTree token visitor.

On `aarch64-apple-darwin`, `cargo build -p oxlint --release --features allocator` reduces the `oxlint` binary by 49,616 bytes (48.5 KiB, 0.39%), from 12,756,960 to 12,707,344 bytes.

Validated with `just ready`.

AI assistance was used for implementation and measurement.
2026-08-18 07:19:31 +00:00
Boshen f0121edb71 perf(linter): share config deserialization entry point (#25820)
Share a non-generic JSON deserialization entry point across `oxc_linter` and `oxlint`, avoiding duplicate monomorphizations. Also deserialize well-known settings without deep-cloning the raw JSON value.

Validated with `just ready`.

AI assistance was used for implementation and measurement.
2026-08-18 04:40:16 +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
Boshen 9ed10b728d perf(linter): use unstable sorts for unique keys (#25778)
Switches order-independent sorts to unstable sorting and avoids cloning rule-table plugin names.

Reduces the stripped `oxlint` release binary from 12,773,568 to 12,757,040 bytes: 16,528 bytes (0.13%).

Validated with `cargo test -p oxc_linter` and focused oxlint JSON checks.

AI assistance was used for analysis and implementation.
2026-08-17 09:34:39 +00: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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fwasm-runtime/1.2.3?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fwasm-runtime/1.2.3?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fwasm-runtime/1.2.2/1.2.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fwasm-runtime/1.2.2/1.2.3?slim=true)
|
|
[@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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/8.67.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/8.67.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/8.66.0/8.67.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/8.66.0/8.67.0?slim=true)
|
|
[@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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fscope-manager/8.67.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fscope-manager/8.67.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fscope-manager/8.66.0/8.67.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fscope-manager/8.66.0/8.67.0?slim=true)
|
| [@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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fvisitor-keys/8.67.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fvisitor-keys/8.67.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fvisitor-keys/8.66.0/8.67.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fvisitor-keys/8.66.0/8.67.0?slim=true)
|
| [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) |
![age](https://developer.mend.io/api/mc/badges/age/npm/degit/3.7.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/degit/3.7.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/degit/3.6.6/3.7.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/degit/3.6.6/3.7.0?slim=true)
|
| [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) |
![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/10.8.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint/10.8.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint/10.8.0/10.8.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/10.8.0/10.8.1?slim=true)
|
|
[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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/serialize-javascript/7.1.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/serialize-javascript/7.1.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/serialize-javascript/7.0.7/7.1.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/serialize-javascript/7.0.7/7.1.0?slim=true)
|
| [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) |
![age](https://developer.mend.io/api/mc/badges/age/npm/svelte/5.56.9?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/svelte/5.56.9?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/svelte/5.56.8/5.56.9?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/svelte/5.56.8/5.56.9?slim=true)
|
| [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) |
![age](https://developer.mend.io/api/mc/badges/age/npm/tsx/4.23.12?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/tsx/4.23.12?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/tsx/4.23.9/4.23.12?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/tsx/4.23.9/4.23.12?slim=true)
|

---

### Release Notes

<details>
<summary>napi-rs/napi-rs (@&#8203;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
([#&#8203;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
([#&#8203;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
(@&#8203;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
(@&#8203;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
(@&#8203;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
([#&#8203;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`
([#&#8203;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`
([#&#8203;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`
([#&#8203;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
([#&#8203;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`
([#&#8203;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
([#&#8203;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`
([#&#8203;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`
([#&#8203;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
([#&#8203;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
([#&#8203;20937](https://redirect.github.com/eslint/eslint/issues/20937))
(crimsonjay0)
-
[`1f6edde`](https://redirect.github.com/eslint/eslint/commit/1f6eddee609b369b50993eab08d437dda4700991)
chore: update ecosystem plugins
([#&#8203;21182](https://redirect.github.com/eslint/eslint/issues/21182))
(ESLint Bot)
-
[`d3266fb`](https://redirect.github.com/eslint/eslint/commit/d3266fb26c719c6b90a6cbe54bb120c9335ad19c)
chore: unpin `webpack` dependency
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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`
([#&#8203;21156](https://redirect.github.com/eslint/eslint/issues/21156))
(Francesco Trotta)
-
[`60a178d`](https://redirect.github.com/eslint/eslint/commit/60a178d5ef1b0c471be0831031ed7347f8f81dc2)
chore: update ecosystem plugins
([#&#8203;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`
([#&#8203;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`
([#&#8203;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`
([#&#8203;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
([#&#8203;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`
([#&#8203;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`
([#&#8203;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`
([#&#8203;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`
([#&#8203;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
[@&#8203;okuryu](https://redirect.github.com/okuryu) in
[#&#8203;224](https://redirect.github.com/yahoo/serialize-javascript/pull/224)
- release: v7.1.0 by
[@&#8203;okuryu](https://redirect.github.com/okuryu) in
[#&#8203;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
([#&#8203;18625](https://redirect.github.com/sveltejs/svelte/pull/18625))

- fix: better whitespace handling inside printer
([#&#8203;18638](https://redirect.github.com/sveltejs/svelte/pull/18638))

- fix: don't duplicate comments in attributes
([#&#8203;18636](https://redirect.github.com/sveltejs/svelte/pull/18636))

- fix: preserve CSS comments in the AST printer
([#&#8203;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
([#&#8203;829](https://redirect.github.com/privatenumber/tsx/issues/829))
([ed9d330](https://redirect.github.com/privatenumber/tsx/commit/ed9d33046a135de13a35fdfce12368b79d1b1518)),
closes
[#&#8203;828](https://redirect.github.com/privatenumber/tsx/issues/828)

***

This release is also available on:

- [npm package (@&#8203;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
([#&#8203;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 (@&#8203;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
renovate[bot] 9c6f1912b5 chore(deps): update rust crates (#25756)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [futures](https://rust-lang.github.io/futures-rs)
([source](https://redirect.github.com/rust-lang/futures-rs)) |
workspace.dependencies | patch | `0.3.33` → `0.3.34` |
| [handlebars](https://redirect.github.com/sunng87/handlebars-rust) |
workspace.dependencies | patch | `6.4.3` → `6.4.4` |
|
[javascript-globals](https://redirect.github.com/oxc-project/javascript-globals)
| workspace.dependencies | patch | `1.5.1` → `1.5.2` |

---

### Release Notes

<details>
<summary>rust-lang/futures-rs (futures)</summary>

###
[`v0.3.34`](https://redirect.github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0334---2026-08-11)

[Compare
Source](https://redirect.github.com/rust-lang/futures-rs/compare/0.3.33...0.3.34)

- Preserve cloned waker identity.
([#&#8203;3032](https://redirect.github.com/rust-lang/futures-rs/issues/3032))
- Updato `syn` to 3.
([#&#8203;3028](https://redirect.github.com/rust-lang/futures-rs/issues/3028))

</details>

<details>
<summary>sunng87/handlebars-rust (handlebars)</summary>

###
[`v6.4.4`](https://redirect.github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#644---2026-08-12)

[Compare
Source](https://redirect.github.com/sunng87/handlebars-rust/compare/v6.4.3...v6.4.4)

- \[Changed] We have to revert `preserve_json_order` as a default
feature. Users
  who need this can still enable it for handlebars-rust, or enable
  `preserve_order` for you serde\_json.

</details>

<details>
<summary>oxc-project/javascript-globals (javascript-globals)</summary>

###
[`v1.5.2`](https://redirect.github.com/oxc-project/javascript-globals/blob/HEAD/CHANGELOG.md#152---2026-08-13)

[Compare
Source](https://redirect.github.com/oxc-project/javascript-globals/compare/javascript-globals-v1.5.1...javascript-globals-v1.5.2)

##### Other

- Auto update globals from upstream
([#&#8203;268](https://redirect.github.com/oxc-project/javascript-globals/pull/268))
- Auto update globals from upstream
([#&#8203;265](https://redirect.github.com/oxc-project/javascript-globals/pull/265))
- Auto update globals from upstream
([#&#8203;261](https://redirect.github.com/oxc-project/javascript-globals/pull/261))
- *(deps)* update rust crate serde\_json to v1.0.151
([#&#8203;259](https://redirect.github.com/oxc-project/javascript-globals/pull/259))
- *(deps)* update rust crate serde to v1.0.229
([#&#8203;256](https://redirect.github.com/oxc-project/javascript-globals/pull/256))
- update sponsor section
- *(deps)* update rust crate rustc-hash to v2.1.3
([#&#8203;247](https://redirect.github.com/oxc-project/javascript-globals/pull/247))
- standardize rustfmt config
- normalize README sponsor section
- add crates environment to release workflow

</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:30:18 +00:00
Boshen 892238149b refactor(linter): remove inactive react config rule (#25740)
Remove the inactive `react/config` rule and its generated metadata. Oxlint uses fixed, valid React Compiler options, so the rule cannot produce actionable diagnostics.

AI-assisted: Codex was used to implement and validate this change.
2026-08-16 12:39:27 +00:00