Commit Graph

2615 Commits

Author SHA1 Message Date
oxc-guard[bot] 5306f24d9e release(apps): oxlint v1.72.0 && oxfmt v0.57.0 (#23935)
# Oxlint
### 💥 BREAKING CHANGES

- 88f4455 str: [**BREAKING**] `Str` and `Ident` methods take
`&GetAllocator` (#23781) (overlookmotel)

### 🚀 Features

- f2091b3 ast: Unify old and new `AstBuilder`s (#23875) (overlookmotel)
- 1c8f50c linter: Add schema for `eslint/no-restricted-import` (#23642)
(Sysix)

### 🐛 Bug Fixes

- 7cb85c4 linter/eslint/no-negated-condition: Add autofix for negated
conditions (#23825) (Yagiz Nizipli)
- f7d1f50 oxlint, oxfmt: Enable `disable_old_builder` Cargo feature for
`oxc_ast` crate (#23886) (overlookmotel)
- d891990 linter/jsx-a11y/role-supports-aria-props: Ignore nullish prop
values (#23865) (Mikhail Baev)
- 94b6599 linter: Deduplicate missing plugin errors (#23853) (camc314)
- eff3eff linter/oxc/branches-sharing-code: Avoid else-if false
positives (#23843) (camc314)
- 2a2d3b9 linter/eslint/prefer-destructuring: Skip
`AssignmentExpression` autofixes (#23818) (camc314)
- ddc24ae linter/eslint/id-length: Respect checkGeneric for mapped type
keys (#23802) (bab)
- cd89202 linter/react/exhaustive-deps: Skip wrapper expression when
analyzing hook initializers (#23793) (camc314)
- 20e8285 linter/unicorn/prefer-native-coercion-function: Allow ts type
predicates (#23774) (camc314)
- d86f60b lsp: Normalize user config path to watch pattern (#23723)
(Sysix)
- 52032cf linter: Newline-terminate tsgolint errors (#23762) (Mikhail
Baev)
- 368fda7 linter/eslint/no-warning-comments: Avoid dropping generated
regex patterns (#23741) (camc314)
- ce44fbd linter/valid-title: Escape disallowed words regex (#23742)
(camc314)
- 3100d11 linter/prefer-called-exactly-once-with: Avoid out-of-bounds
slice panic at end of file (#23625) (Jerry Zhao)
- 742be36 refactor/node/handle-callback-err: Reject invalid regex config
(#23740) (camc314)
- d7be179 linter/eslint/no-restricted-globals: Handle shadowed locals
(#23736) (camc314)
- b3b1ff8 linter/vitest/expect-expect: Handle global vitest detection
correctly (#23734) (camc314)

### ⚡ Performance

- 68f9472 linter/jsx-a11y: Skip lowercasing non-aria attribute names
(#23906) (Lawrence Lin)
- b9312b4 linter/unicorn/prefer-export-from: Use keyed binding lookup
(#23893) (Marius Schulz)
- cd5204e linter/typescript/no-unsafe-declaration-merging: Use keyed
binding lookup (#23894) (Marius Schulz)
- e948498 linter/eslint/prefer-named-capture-group: Only dispatch for
relevant node types (#23868) (Connor Shea)
- 4ac7a8e linter/eslint/max-depth: Derive node types (#23896) (Connor
Shea)
- daeed09 linter/eslint/no-restricted-globals: Only scan unresolved
references (#23890) (camc314)
- e808514 linter/jest-vitest: Speed up no-standalone-expect (#23883)
(camc314)
- 8b165e5 linter/react/exhaustive-deps: Skip non-reactive calls early
(#23882) (camc314)
- 54005e7 linter/eslint/no-unused-vars: Precompute exported bindings
(#23881) (camc314)
- 9bc2f8c linter/unicorn/prefer-number-properties: Speed up global
checks (#23880) (camc314)
- 4ff104f linter: Optimize `require-hook` and `prefer-mock-*` rules to
run on specific node types (#23871) (Connor Shea)
- cc2213b linter: Run `no-underscore-dangle` only when relevant node
types are present (#23867) (Connor Shea)
- 3e55c21 linter/promise/always-return: Narrow to function node types
(#23878) (Connor Shea)
- 7136182 linter/jest-vitest: Speed up no-commented-out-tests (#23864)
(camc314)
- f138264 linter/eslint/no-script-url: Match javascript: prefix without
allocating (#23861) (Lawrence Lin)
- 7ef6895 linter/react/no-array-index-key: Delay index symbol lookup
(#23857) (camc314)
- 26bc171 linter/react/no-array-index-key: Match callback methods
directly (#23856) (camc314)
- 44fbbda linter/jsx-a11y/interactive-supports-focus: Check cheap
conditions first (#23854) (camc314)
- 84a5aa3 linter/eslint/no-extend-native: Skip lowercase references
early (#23851) (camc314)
- 88a74b2 linter/eslint/no-nonoctal-decimal-escape: Scan decimal escapes
as bytes (#23850) (camc314)
- fca69a8 linter: Skip traversal without this expressions (#23845)
(camc314)
- 838fd63 linter: Reduce preallocation for per-file diagnostics `Vec`
(#23705) (Marius Schulz)
- 417b506 linter/typescript/array-type: Remove full source text clone
(#23751) (Marius Schulz)

### 📚 Documentation

- 57e4469 linter/unicorn: Update prefer-dom-node-text-content rationale
(#23933) (Mikhail Baev)
- 3d61dea all: Correct capitalization in comments (#23887)
(overlookmotel)

### 🛡️ Security

- 3cdd18f deps: Update npm packages (#23690) (renovate[bot])
# Oxfmt
### 💥 BREAKING CHANGES

- 259e0cd oxfmt,formatter_graphql: [**BREAKING**] Support draft syntax
with removing prettier fallback (#23326) (leaysgur)
- accbc49 oxfmt: [**BREAKING**] Format `parser:css,less,scss` files +
css-in-js by `oxc_formatter_css` (#23321) (leaysgur)

### 🚀 Features

- dffa4b3 formatter_css: Implement `oxc_formatter_css` (#23320)
(leaysgur)
- 01de9ec oxfmt: Format `parser:graphql` files by
`oxc_formatter_graphql` (#23318) (leaysgur)
- 4e66212 formatter_graphql: Implement oxc_formatter_graphql (#23317)
(leaysgur)

### 🐛 Bug Fixes

- 67325ae formatter_css: Handle frontmatter language (#23819) (leaysgur)
- 3f355e5 formatter_graphql: Improve major prettier diffs (#23419)
(leaysgur)
- 48e2d78 formatter_css: Improve major prettier diffs (#23327)
(leaysgur)
- 8c07cad all: Enable `disable_old_builder` Cargo feature for `oxc_ast`
crate in tests (#23888) (overlookmotel)
- f7d1f50 oxlint, oxfmt: Enable `disable_old_builder` Cargo feature for
`oxc_ast` crate (#23886) (overlookmotel)
- d86f60b lsp: Normalize user config path to watch pattern (#23723)
(Sysix)

### ⚡ Performance

- 4ddcba0 formatter_core: Add printable-ASCII fast path to TextWidth
(#23913) (Lawrence Lin)

### 📚 Documentation

- b4d0dc9 oxfmt,formatter,formatter_css,formatter_core: Update AGENTS.md
(#23814) (leaysgur)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com>
2026-06-29 20:11:12 +01:00
leaysgur dbf27196fc chore(formatter_css): use oxc-css-parser (#23920) 2026-06-29 04:15:34 +00:00
leaysgur 2dc451ca8b chore(formatter_graphql): use oxc-graphql-parser (#23919) 2026-06-29 04:15:34 +00:00
leaysgur b4d0dc9e30 docs(oxfmt,formatter,formatter_css,formatter_core): update AGENTS.md (#23814) 2026-06-29 04:15:33 +00:00
leaysgur 4e030183bd refactor(oxfmt,formatter): clean up tailwind sorter usage (#23809)
Tailwind sorting is handled by JS, while the Rust side only collects class names.
Therefore, not all options are used on the Rust side (in the case of CSS, a `bool` is sufficient).

Because of this, unnecessary options are not passed to the Rust side.
(Previously, they were being passed even though they were not used.)
2026-06-29 04:06:44 +00:00
leaysgur 4e2a194b7b refactor(oxfmt,formatter): move embedded logics to host side (#23805)
- The logic for escaping characters when formatting `gql-in-js` segments before returning them to the JS side, so as not to break the JS templates
- The logic for verifying the number of embedded placeholders in `css-in-js` or `html-in-js`

These were all matters pertaining to `formatter_js`.

Up until now, this logic resided in `Oxfmt` under the assumption that it was related to Prettier-specific knowledge, but decided to rethink that division of responsibilities.
2026-06-29 04:06:43 +00:00
leaysgur 692c73aae5 refactor(oxfmt,formatter_css): rework css-in-js with substituion (#23787)
As we have forked the CSS parser, we can control how JS substitutions `${}` inside css-in-js are represented and how they interact.

We are no longer bound by Prettier’s conventions, allowing us to implement the code more efficiently.
2026-06-29 03:54:45 +00:00
leaysgur 6fe3e45c8f refactor(oxfmt): fix up code and comments (#23770)
There's still room for refactoring, but this will serve as a starting point for now.
2026-06-29 03:15:28 +00:00
leaysgur cc8db2b11c refactor(formatter_graphql): fix up code and comments (#23488)
Finally fixed up Fable's work.
2026-06-29 03:15:27 +00:00
leaysgur af77116ac2 test(oxfmt): add css + less + scss conformance (#23435)
- Added a few repos for oxfmt conformance
  - CSS: mantine, docsaurous
  - LESS: NG-ZORRO
  - SCSS: Reuse vben, gitlab
2026-06-29 03:15:27 +00:00
leaysgur f5a49cd383 test(oxfmt): add gitlab as graphql conformance (#23421)
- Add `gitlabhq/gitlab` repo to oxfmt conformance
  - There are 700~ graphql files
- Once `gitlab` repo is migrated Oxfmt, we can add it to ecosystem-ci
2026-06-29 03:15:26 +00:00
leaysgur 48e2d7855b fix(formatter_css): improve major prettier diffs (#23327)
Fixed many formatting diffs by checking real world repo.
2026-06-29 03:15:26 +00:00
leaysgur 259e0cdf60 feat(oxfmt,formatter_graphql)!: support draft syntax with removing prettier fallback (#23326)
- Fork `apollo-rs` to be compatible with Prettier(`latest` for now)
  - https://github.com/leaysgur/apollo-rs
- By doing this, Prettier fallback is no longer needed
- And now all prettier_conformance are passed, no parse error skip

> [!WARNING]
> TODO: Move fork under `oxc-project` org and replace refs
2026-06-29 03:15:25 +00:00
leaysgur 72a5d0887a refactor(oxfmt): use unified embedded ir results (#23325)
- Add `EmbeddedIr` struct in `oxc_formatter_core`
- Each `format_to_ir` implementation returns this as unified result
2026-06-29 03:15:25 +00:00
leaysgur 721667ec8e refactor(oxfmt)!: remove prettier fallback for css-in-js failure (#23324)
- Removed last remaining Prettier fallback path for css-in-js failure case
- In our Rust formatter host paths, Prettier is not used for CSS/LESS/SCSS anymore
2026-06-29 03:15:25 +00:00
leaysgur 43aa5fe1ef refactor(formatter_css): update oxc_formatter_css to support sortTailwindcss option (#23323)
- Before this PR: If `sortTailwindcss` option is enabled for CSS/LESS/SCSS, it was formatted by Prettier
- After this PR: `oxc_formatter_css` also handles `sortTailwindcss` as like `oxc_formatter` does
2026-06-29 03:15:24 +00:00
leaysgur 9d2a9579c1 refactor(oxfmt): use Rust formatters for jsdoc code fence (#23322)
In addition to basic embedded (e.g. css-in-js), JSDoc also contain code fence as markdown.

This PR makes JSDoc code fence also formatted by `oxc_formatter_(css|graphql)` if specified.
2026-06-29 03:15:24 +00:00
leaysgur accbc49def feat(oxfmt)!: format parser:css,less,scss files + css-in-js by oxc_formatter_css (#23321)
- Use `oxc_formatter_css` from Oxfmt to handle CSS/LESS/SCSS files
- css-in-js is also handled by `oxc_formatter_css`
  - But it will fallback to Prettier if formatting failed
  - No fallback for no-embedded path
- At the point of this PR, it will fallback to Prettier when tailwind is required to format

NOTE: Both fallback will be removed in later PR.

In that sense, as a result of this series of PRs, Oxfmt's CSS support will no longer be 100% compatible compared to Prettier.

Since the parsers used are also different, it will no longer be possible to support certain postcss-plugin-specific syntax, invalid syntax or legacy syntax.

> [!WARNING]
> TODO: Move fork under `oxc-project` org and replace refs
2026-06-29 03:15:24 +00:00
leaysgur a7fd35e7df refactor(oxfmt): handle gql-in-js by oxc_formatter_graphql (#23319)
- To use `oxc_formatter_graphql` in gql-in-js context, ground level refactoring was needed
- Extracted common logic for handling embeddings into `oxc_formatter_core`
- Updated other `xxx-in-js` callers to reflect these changes
- Added a `format_to_ir()` method to each formatter in addition to the existing `format()` method
2026-06-29 02:55:31 +00:00
leaysgur 01de9ece8b feat(oxfmt): format parser:graphql files by oxc_formatter_graphql (#23318)
- Use `oxc_formatter_graphql` from Oxfmt to handle `.gql` and `.graphql` files
- At point of this PR, gql-in-js is still handled by Prettier

As described in #23317, Prettier supports more syntax than ours, so for now fallback to Prettier when `oxc_formatter_graphql` failed to format.

NOTE: This fallback will be removed in later PR.
2026-06-29 02:55:30 +00:00
renovate[bot] b7bdfb190a chore(deps): update rust crates (#23904)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [handlebars](https://redirect.github.com/sunng87/handlebars-rust) |
workspace.dependencies | patch | `6.4.1` → `6.4.2` |
| [javascript-globals](https://crates.io/crates/javascript-globals) |
workspace.dependencies | patch | `1.5.0` → `1.5.1` |
| [mimalloc-safe](https://crates.io/crates/mimalloc-safe) |
workspace.dependencies | patch | `0.1.63` → `0.1.64` |
| [quote](https://crates.io/crates/quote) | workspace.dependencies |
patch | `1.0.45` → `1.0.46` |

---

### Release Notes

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

###
[`v6.4.2`](https://redirect.github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#642---2026-06-24)

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

- \[Fixed] Access to local variables like `@key`, `@index`, etc. in
`#with` and
partial block
\[[#&#8203;758](https://redirect.github.com/sunng87/handlebars-rust/issues/758)]
- \[Fixed] Preserve ordering when iterating an array context inside a
partial
that receives hash parameters
\[[#&#8203;760](https://redirect.github.com/sunng87/handlebars-rust/issues/760)]
- \[Changed] Enable serde\_json `preserve_order` feature. JSON objects
are now
iterated in insertion order (matching Handlebars.js semantics) instead
of
alphabetical key order. This fixes index-key ordering for array contexts
converted into objects by partial hash parameters (e.g. `"10"` no longer
  sorts before `"2"`).

</details>

---

### Configuration

📅 **Schedule**: (in timezone Asia/Shanghai)

- Branch creation
  - "before 10am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

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

---

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

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-06-28 20:51:51 +01:00
overlookmotel f7d1f504d4 fix(oxlint, oxfmt): enable disable_old_builder Cargo feature for oxc_ast crate (#23886)
Part of #23043.

We don't enable `oxc_ast`'s `disable_old_builder` Cargo feature in any of our published crates, or crates that are depended on by published crates.

`apps/oxlint` and `apps/oxfmt` are not published, so enable the feature on them, to ensure no usage of legacy `AstBuilder` methods sneak in during the transition period before we delete these methods.
2026-06-28 12:13:17 +00:00
camc314 94b6599728 fix(linter): deduplicate missing plugin errors (#23853)
Closes #23840.

When several configured rules reference the same missing JavaScript plugin, report that plugin only once instead of emitting one diagnostic per rule. Distinct missing plugins are still reported separately.

Adds a NAPI CLI snapshot covering repeated scoped and unscoped plugin names.
2026-06-26 20:21:07 +00:00
camc314 5ac725d5d2 chore(linter): remove timeout from ESLint compat tests (#23828) 2026-06-26 16:36:02 +00:00
Sysix d86f60b61c fix(lsp): normalize user config path to watch pattern (#23723)
When a user defined a custom config path, like `fmt.configPath` or `configPath`, the watch pattern returned the same path.
VS Code does not respect this as a valid pattern and does not watch for files defined like `./define-config.ts`.
Resulting into an LSP client, which will not send a watched-file-change requests to the server, when the user edited an important config path.
2026-06-25 00:15:37 +00:00
Mikhail Baev 52032cf181 fix(linter): newline-terminate tsgolint errors (#23762)
Fixes #23686, adds trailing `\n` to tsgolint error output, matching
other CLI errors

tested locally with:
```
cargo build -p oxlint

mkdir -p /tmp/oxlint-npx-repro
cd /tmp/oxlint-npx-repro
npm init -y

echo 'export default {}' > index.ts
echo '{"rules": {}}' > oxlintrc.json

mkdir -p node_modules/.bin
ln -sf oxc/target/debug/oxlint node_modules/.bin/oxlint

npx --no-install oxlint -c oxlintrc.json --type-aware
```

Before fix:


https://github.com/user-attachments/assets/4c70115d-1c26-4c9b-9f0a-c4c33d767029

After fix:


https://github.com/user-attachments/assets/1a1fd337-cca1-4fb6-ab63-326ca16095ce

Co-authored-by: Cameron <cameron.clark@hey.com>
2026-06-24 15:59:01 +01:00
overlookmotel d1f18cda21 refactor(all): import arena Box and Vec as ArenaBox / ArenaVec (#23747)
Pure refactor.

Use `ArenaBox` and `ArenaVec` everywhere for the arena-allocated types from `oxc_allocator`, instead of plain `Box` and `Vec`.

This disambiguates when `Vec` is `oxc_allocator::Vec` and when it's `std::vec::Vec`, making code clearer to follow.

Previously it was easy to confuse the two, and such confusion led to UB in `Traverse` (fixed in #23745).

Ditto other arena types - `ArenaHashMap`, `ArenaHashSet`, `ArenaStringBuilder`.

The only exceptions are:

1. Inside `oxc_allocator` crate itself.
2. AST type definitions.
3. Generated code (migrated separately in #23749).
2026-06-24 01:21:41 +00:00
renovate[bot] 3cdd18f557 chore(deps): update npm packages (#23690)
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Adoption](https://docs.renovatebot.com/merge-confidence/) |
[Passing](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [@codspeed/vitest-plugin](https://codspeed.io)
([source](https://redirect.github.com/CodSpeedHQ/codspeed-node)) |
[`5.5.0` →
`5.6.0`](https://renovatebot.com/diffs/npm/@codspeed%2fvitest-plugin/5.5.0/5.6.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@codspeed%2fvitest-plugin/5.6.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@codspeed%2fvitest-plugin/5.6.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@codspeed%2fvitest-plugin/5.5.0/5.6.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@codspeed%2fvitest-plugin/5.5.0/5.6.0?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.61.0` →
`8.61.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.61.0/8.61.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/8.61.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/8.61.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/8.61.0/8.61.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/8.61.0/8.61.1?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.61.0` →
`8.61.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.61.0/8.61.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fscope-manager/8.61.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fscope-manager/8.61.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fscope-manager/8.61.0/8.61.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fscope-manager/8.61.0/8.61.1?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.61.0` →
`8.61.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.61.0/8.61.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fvisitor-keys/8.61.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fvisitor-keys/8.61.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fvisitor-keys/8.61.0/8.61.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fvisitor-keys/8.61.0/8.61.1?slim=true)
|
| [@vitest/browser](https://vitest.dev/guide/browser/)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser))
| [`4.1.8` →
`4.1.9`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/4.1.8/4.1.9)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fbrowser/4.1.9?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fbrowser/4.1.9?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fbrowser/4.1.8/4.1.9?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fbrowser/4.1.8/4.1.9?slim=true)
|
|
[@vitest/browser-playwright](https://vitest.dev/config/browser/playwright)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright))
| [`4.1.8` →
`4.1.9`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser-playwright/4.1.8/4.1.9)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fbrowser-playwright/4.1.9?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fbrowser-playwright/4.1.9?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fbrowser-playwright/4.1.8/4.1.9?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fbrowser-playwright/4.1.8/4.1.9?slim=true)
|
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`10.4.1` →
`10.5.0`](https://renovatebot.com/diffs/npm/eslint/10.4.1/10.5.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/10.5.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint/10.5.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint/10.4.1/10.5.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/10.4.1/10.5.0?slim=true)
|
| [playwright](https://playwright.dev)
([source](https://redirect.github.com/microsoft/playwright)) | [`1.60.0`
→ `1.61.0`](https://renovatebot.com/diffs/npm/playwright/1.60.0/1.61.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/playwright/1.61.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright/1.61.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright/1.60.0/1.61.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright/1.60.0/1.61.0?slim=true)
|
|
[serialize-javascript](https://redirect.github.com/yahoo/serialize-javascript)
| [`7.0.5` →
`7.0.6`](https://renovatebot.com/diffs/npm/serialize-javascript/7.0.5/7.0.6)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/serialize-javascript/7.0.6?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/serialize-javascript/7.0.6?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/serialize-javascript/7.0.5/7.0.6?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/serialize-javascript/7.0.5/7.0.6?slim=true)
|
| [vitest](https://vitest.dev)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| [`4.1.8` →
`4.1.9`](https://renovatebot.com/diffs/npm/vitest/4.1.8/4.1.9) |
![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/4.1.9?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/4.1.9?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/4.1.8/4.1.9?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/4.1.8/4.1.9?slim=true)
|

---

### Release Notes

<details>
<summary>CodSpeedHQ/codspeed-node
(@&#8203;codspeed/vitest-plugin)</summary>

###
[`v5.6.0`](https://redirect.github.com/CodSpeedHQ/codspeed-node/releases/tag/v5.6.0)

[Compare
Source](https://redirect.github.com/CodSpeedHQ/codspeed-node/compare/v5.5.0...v5.6.0)

#### What's Changed

- feat: add MacOS support by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;81](https://redirect.github.com/CodSpeedHQ/codspeed-node/pull/81)

**Full Changelog**:
<https://github.com/CodSpeedHQ/codspeed-node/compare/v5.5.0...v5.6.0>

</details>

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;typescript-eslint/parser)</summary>

###
[`v8.61.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8611-2026-06-15)

[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.61.0...v8.61.1)

This was a version bump only for parser to align it with other projects,
there were no code changes.

See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.61.1)
for more information.

You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning) and
[releases](https://typescript-eslint.io/users/releases) on our website.

</details>

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;typescript-eslint/scope-manager)</summary>

###
[`v8.61.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8611-2026-06-15)

[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.61.0...v8.61.1)

This was a version bump only for scope-manager to align it with other
projects, there were no code changes.

See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.61.1)
for more information.

You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning) and
[releases](https://typescript-eslint.io/users/releases) on our website.

</details>

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;typescript-eslint/visitor-keys)</summary>

###
[`v8.61.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8611-2026-06-15)

[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.61.0...v8.61.1)

This was a version bump only for visitor-keys to align it with other
projects, there were no code changes.

See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.61.1)
for more information.

You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning) and
[releases](https://typescript-eslint.io/users/releases) on our website.

</details>

<details>
<summary>vitest-dev/vitest (@&#8203;vitest/browser)</summary>

###
[`v4.1.9`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.1.9)

[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.8...v4.1.9)

##### 🐞 Bug Fixes

- Fix `importOriginal` with optimizer and query import \[backport to v4]
- by **Hiroshi Ogawa**, **David Harris**, **Codex**and **Vladimir** in
[#&#8203;10546](https://redirect.github.com/vitest-dev/vitest/issues/10546)
[<samp>(a5180)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a5180190c)
- **browser**:
- Wait for orchestrator readiness before resolving browser sessions
\[backport to v4] - by **Vladimir** and **Séamus O'Connor** in
[#&#8203;10555](https://redirect.github.com/vitest-dev/vitest/issues/10555)
[<samp>(7fb29)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7fb29651a)
- Wait for iframe tester readiness before preparing \[backport to v4] -
by **Vladimir** and **Séamus O'Connor** in
[#&#8203;10497](https://redirect.github.com/vitest-dev/vitest/issues/10497)
and
[#&#8203;10556](https://redirect.github.com/vitest-dev/vitest/issues/10556)
[<samp>(fbc62)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fbc626c40)
- **mocker**:
- Hoist vi.mock() for vite-plus/test imports \[backport to v4] - by
**Hiroshi Ogawa**, **LongYinan**, **Claude Opus 4.8** and **Vladimir**
in
[#&#8203;10548](https://redirect.github.com/vitest-dev/vitest/issues/10548)
[<samp>(2c955)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2c9559c02)
- **pool**:
- Prevent test run hang on worker crash \[backport to v4] - by **Ari
Perkkiö** and **Jattioui Ismail** in
[#&#8203;10543](https://redirect.github.com/vitest-dev/vitest/issues/10543)
and
[#&#8203;10564](https://redirect.github.com/vitest-dev/vitest/issues/10564)
[<samp>(934b0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/934b0f587)

##### [View changes on
GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.8...v4.1.9)

</details>

<details>
<summary>eslint/eslint (eslint)</summary>

###
[`v10.5.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.5.0)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.4.1...v10.5.0)

#### Features

-
[`5ca8c52`](https://redirect.github.com/eslint/eslint/commit/5ca8c5278edea1fd84d3ba83d8ea3f52fb3831ad)
feat: correct stack tracking in max-nested-callbacks
([#&#8203;20973](https://redirect.github.com/eslint/eslint/issues/20973))
(Pixel998)
-
[`b565783`](https://redirect.github.com/eslint/eslint/commit/b5657837604fa5e8cf1278074782025cadd34b6c)
feat: report no-with violations at the with keyword
([#&#8203;20971](https://redirect.github.com/eslint/eslint/issues/20971))
(Pixel998)
-
[`2ce032f`](https://redirect.github.com/eslint/eslint/commit/2ce032fbc72a1a80c024c084a4f382fb6dece684)
feat: report max-lines-per-function violations at function head
([#&#8203;20966](https://redirect.github.com/eslint/eslint/issues/20966))
(Pixel998)
-
[`732cb3e`](https://redirect.github.com/eslint/eslint/commit/732cb3e09d5b8b809b5f461d118a5d9fdcd6427f)
feat: report max-nested-callbacks violations at function head
([#&#8203;20967](https://redirect.github.com/eslint/eslint/issues/20967))
(Pixel998)
-
[`f9c138a`](https://redirect.github.com/eslint/eslint/commit/f9c138a0ba7d8e37aed39aef4a3ff1cae8c669f7)
feat: report max-depth violations on keywords
([#&#8203;20943](https://redirect.github.com/eslint/eslint/issues/20943))
(Pixel998)
-
[`bdb496c`](https://redirect.github.com/eslint/eslint/commit/bdb496cc0d54b6d0a023aef9abd5f040ccff2101)
feat: correct max-depth handling for else-if chains
([#&#8203;20944](https://redirect.github.com/eslint/eslint/issues/20944))
(Pixel998)
-
[`c296873`](https://redirect.github.com/eslint/eslint/commit/c29687354a7f96093f57f7d73eecb866ad5e2953)
feat: update error loc in `max-statements` to function header
([#&#8203;20907](https://redirect.github.com/eslint/eslint/issues/20907))
(Taejin Kim)

#### Documentation

-
[`8ae1b5b`](https://redirect.github.com/eslint/eslint/commit/8ae1b5b856dc031cd6c701d89a4df7da4772cd56)
docs: Update README (GitHub Actions Bot)
-
[`ca7eb90`](https://redirect.github.com/eslint/eslint/commit/ca7eb90127dcad917188bb1342623f02a272e781)
docs: update Node.js prerequisites to include ICU support
([#&#8203;20962](https://redirect.github.com/eslint/eslint/issues/20962))
(Francesco Trotta)
-
[`f99b47a`](https://redirect.github.com/eslint/eslint/commit/f99b47a6799be25321552402a49303bb06a43fe4)
docs: Update README (GitHub Actions Bot)
-
[`acf03d4`](https://redirect.github.com/eslint/eslint/commit/acf03d4eed31d259c7dc62af5b9640629784f7cc)
docs: clarify precedence of parserOptions over languageOptions
([#&#8203;20926](https://redirect.github.com/eslint/eslint/issues/20926))
(sethamus)

#### Chores

-
[`b18bf58`](https://redirect.github.com/eslint/eslint/commit/b18bf58c5ac748415ffffdff2d96980fbd6a57e8)
chore: update ecosystem plugins
([#&#8203;20959](https://redirect.github.com/eslint/eslint/issues/20959))
(ESLint Bot)
-
[`c2d1444`](https://redirect.github.com/eslint/eslint/commit/c2d1444df77cb42e5a0b89ab70496879d180a54d)
refactor: replace areAllSegmentsUnreachable with !isAnySegmentReachable
([#&#8203;20951](https://redirect.github.com/eslint/eslint/issues/20951))
(Taejin Kim)
-
[`243b8c5`](https://redirect.github.com/eslint/eslint/commit/243b8c56014bbbe63771185b0731d8dd4d1316e9)
chore: enhance config-rule to support oneOf, anyOf, and nested schemas
([#&#8203;20788](https://redirect.github.com/eslint/eslint/issues/20788))
(kuldeep kumar)
-
[`217b2a9`](https://redirect.github.com/eslint/eslint/commit/217b2a91f46137c5ffd693965e71306c4c15ea6b)
test: add unit tests for ParserService
([#&#8203;20949](https://redirect.github.com/eslint/eslint/issues/20949))
(Taejin Kim)
-
[`72003e7`](https://redirect.github.com/eslint/eslint/commit/72003e781d76bd4ee0d98a6601730d0b829070f9)
test: add location information to error messages in `max-statements`
([#&#8203;20945](https://redirect.github.com/eslint/eslint/issues/20945))
(lumir)
-
[`7797c26`](https://redirect.github.com/eslint/eslint/commit/7797c266977b0bc4971aa79721813d480de72cd1)
refactor: deduplicate isAnySegmentReachable across rules
([#&#8203;20890](https://redirect.github.com/eslint/eslint/issues/20890))
(Taejin Kim)
-
[`67c46fa`](https://redirect.github.com/eslint/eslint/commit/67c46fa6e4f34e88cc6bc82f8a0dcc917c65d257)
chore: update ecosystem plugins
([#&#8203;20938](https://redirect.github.com/eslint/eslint/issues/20938))
(ESLint Bot)
-
[`95d8c7a`](https://redirect.github.com/eslint/eslint/commit/95d8c7a99f991abd8ab618d0ee2cbd4f58effc29)
chore: update dependency
[@&#8203;eslint/json](https://redirect.github.com/eslint/json) to v2
([#&#8203;20934](https://redirect.github.com/eslint/eslint/issues/20934))
(renovate\[bot])
-
[`cf9e496`](https://redirect.github.com/eslint/eslint/commit/cf9e496205142cd4971b9f98aed85866d1010b9c)
chore: update
[@&#8203;arethetypeswrong/cli](https://redirect.github.com/arethetypeswrong/cli)
to 0.18.3
([#&#8203;20933](https://redirect.github.com/eslint/eslint/issues/20933))
(Pixel998)
-
[`fb6d396`](https://redirect.github.com/eslint/eslint/commit/fb6d3960cacc51fc12383fa5ded2382adbf90c1c)
test: run type tests with TypeScript 7
([#&#8203;20868](https://redirect.github.com/eslint/eslint/issues/20868))
(sethamus)

</details>

<details>
<summary>microsoft/playwright (playwright)</summary>

###
[`v1.61.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.61.0)

[Compare
Source](https://redirect.github.com/microsoft/playwright/compare/v1.60.0...v1.61.0)

##### 🔑 WebAuthn passkeys

New [Credentials](https://playwright.dev/docs/api/class-credentials)
virtual authenticator, available via
[browserContext.credentials](https://playwright.dev/docs/api/class-browsercontext#browser-context-credentials),
lets tests register passkeys and answer `navigator.credentials.create()`
/ `navigator.credentials.get()` ceremonies in the page — no real
hardware key required, works in all browsers:

```js
const context = await browser.newContext();

// Seed a passkey your backend provisioned for a test user.
await context.credentials.create('example.com', {
  id: credentialId,
  userHandle,
  privateKey,
  publicKey,
});
await context.credentials.install();

const page = await context.newPage();
await page.goto('https://example.com/login');
// The page's navigator.credentials.get() is answered with the seeded passkey.
```

You can also let the app register a passkey once in a setup test, read
it back with
[credentials.get()](https://playwright.dev/docs/api/class-credentials#credentials-get),
and seed it into later tests — see
[Credentials](https://playwright.dev/docs/api/class-credentials) for
details.

##### 🗃️ Web Storage

New [WebStorage](https://playwright.dev/docs/api/class-webstorage) API,
available via
[page.localStorage](https://playwright.dev/docs/api/class-page#page-local-storage)
and
[page.sessionStorage](https://playwright.dev/docs/api/class-page#page-session-storage),
reads and writes the page's storage for the current origin:

```js
await page.localStorage.setItem('token', 'abc');
const token = await page.localStorage.getItem('token');
const items = await page.sessionStorage.items();
```

##### New APIs

##### Network

-
[apiResponse.securityDetails()](https://playwright.dev/docs/api/class-apiresponse#api-response-security-details)
and
[apiResponse.serverAddr()](https://playwright.dev/docs/api/class-apiresponse#api-response-server-addr)
mirror the browser-side
[response.securityDetails()](https://playwright.dev/docs/api/class-response#response-security-details)
and
[response.serverAddr()](https://playwright.dev/docs/api/class-response#response-server-addr).

##### Browser and Screencast

- New option `artifactsDir` in
[browserType.connectOverCDP()](https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp)
controls where artifacts such as traces and downloads are stored when
attached to an existing browser.
- New option `cursor` in
[screencast.showActions()](https://playwright.dev/docs/api/class-screencast#screencast-show-actions)
controls the cursor decoration rendered for pointer actions.
- The `onFrame` callback in
[screencast.start()](https://playwright.dev/docs/api/class-screencast#screencast-start)
now receives a `timestamp` of when the frame was presented by the
browser.

##### Test runner

- The
[testOptions.video](https://playwright.dev/docs/api/class-testoptions#test-options-video)
option now supports the same set of modes as `trace`: new
`'on-all-retries'`, `'retain-on-first-failure'` and
`'retain-on-failure-and-retries'` values. See the [video modes
table](https://playwright.dev/docs/test-use-options#video-modes) for
which runs are recorded and kept in each mode.
- Supported `expect.soft.poll(...)`.
- New
[fullConfig.argv](https://playwright.dev/docs/api/class-fullconfig#full-config-argv)
— a snapshot of `process.argv` from the runner process, handy for
reading custom arguments passed after the `--` separator.
- New
[fullConfig.failOnFlakyTests](https://playwright.dev/docs/api/class-fullconfig#full-config-fail-on-flaky-tests)
mirrors the config option, so reporters can explain why a flaky run
failed.
-
[testInfo.errors](https://playwright.dev/docs/api/class-testinfo#test-info-errors)
now lists each sub-error of an `AggregateError` as a separate entry.
- New `-G` command line shorthand for `--grep-invert`.

##### 🛠️ Other improvements

- Playwright now supports Ubuntu 26.04.
- HAR and trace recordings now include WebSocket requests.

##### Browser Versions

- Chromium 149.0.7827.55
- Mozilla Firefox 151.0
- WebKit 26.5

This version was also tested against the following stable channels:

- Google Chrome 149
- Microsoft Edge 149

</details>

<details>
<summary>yahoo/serialize-javascript (serialize-javascript)</summary>

###
[`v7.0.6`](https://redirect.github.com/yahoo/serialize-javascript/releases/tag/v7.0.6)

[Compare
Source](https://redirect.github.com/yahoo/serialize-javascript/compare/v7.0.5...v7.0.6)

##### What's Changed

- build(deps-dev): bump lodash from 4.17.23 to 4.18.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;215](https://redirect.github.com/yahoo/serialize-javascript/pull/215)
- fix: reject spoofed URL objects with non-string toString() result by
[@&#8203;redonkulus](https://redirect.github.com/redonkulus) in
[#&#8203;217](https://redirect.github.com/yahoo/serialize-javascript/pull/217)
- release: v7.0.6 by
[@&#8203;okuryu](https://redirect.github.com/okuryu) in
[#&#8203;221](https://redirect.github.com/yahoo/serialize-javascript/pull/221)

**Full Changelog**:
<https://github.com/yahoo/serialize-javascript/compare/v7.0.5...v7.0.6>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Asia/Shanghai)

- Branch creation
  - "before 10am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

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

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

---

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

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMzEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIzNS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-06-23 12:36:01 +01:00
camc314 742be3616f fix(refactor/node/handle-callback-err): reject invalid regex config (#23740)
Reject invalid caret-prefixed `node/handle-callback-err` patterns during configuration parsing instead of falling back to literal string matching.

`^`-prefixed options are documented as regex patterns, so malformed regex input should surface as a config error.

Part of #23594
2026-06-23 11:09:29 +00:00
Sysix 1c8f50c67f feat(linter): add schema for eslint/no-restricted-import (#23642) 2026-06-23 08:27:16 +00:00
renovate[bot] 1449f183bd chore(deps): update npm packages (major) (#23692)
> ℹ️ **Note**
> 
> This PR body was truncated due to platform limits.

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/) |
|---|---|---|---|---|---|
| [@babel/code-frame](https://babel.dev/docs/en/next/babel-code-frame)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-code-frame))
| [`^7.28.6` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fcode-frame/7.29.7/8.0.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fcode-frame/8.0.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fcode-frame/8.0.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fcode-frame/7.29.7/8.0.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fcode-frame/7.29.7/8.0.0?slim=true)
|
| [@babel/core](https://babel.dev/docs/en/next/babel-core)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-core))
| [`^7.26.0` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fcore/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fcore/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fcore/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fcore/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fcore/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-external-helpers](https://babel.dev/docs/en/next/babel-plugin-external-helpers)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-external-helpers))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-external-helpers/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-external-helpers/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-external-helpers/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-external-helpers/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-external-helpers/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-proposal-decorators](https://babel.dev/docs/en/next/babel-plugin-proposal-decorators)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-proposal-decorators/7.29.7/8.0.2)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-proposal-decorators/8.0.2?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-proposal-decorators/8.0.2?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-proposal-decorators/7.29.7/8.0.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-proposal-decorators/7.29.7/8.0.2?slim=true)
|
|
[@babel/plugin-transform-arrow-functions](https://babel.dev/docs/en/next/babel-plugin-transform-arrow-functions)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-arrow-functions))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-arrow-functions/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-arrow-functions/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-arrow-functions/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-arrow-functions/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-arrow-functions/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-transform-async-to-generator](https://babel.dev/docs/en/next/babel-plugin-transform-async-to-generator)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-async-to-generator))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-async-to-generator/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-async-to-generator/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-async-to-generator/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-async-to-generator/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-async-to-generator/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-transform-class-properties](https://babel.dev/docs/en/next/babel-plugin-transform-class-properties)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-class-properties))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-class-properties/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-class-properties/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-class-properties/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-class-properties/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-class-properties/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-transform-class-static-block](https://babel.dev/docs/en/next/babel-plugin-transform-class-static-block)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-class-static-block))
| [`^7.26.0` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-class-static-block/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-class-static-block/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-class-static-block/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-class-static-block/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-class-static-block/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-transform-explicit-resource-management](https://babel.dev/docs/en/next/babel-plugin-transform-explicit-resource-management)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-explicit-resource-management))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-explicit-resource-management/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-explicit-resource-management/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-explicit-resource-management/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-explicit-resource-management/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-explicit-resource-management/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-transform-exponentiation-operator](https://babel.dev/docs/en/next/babel-plugin-transform-exponentiation-operator)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-exponentiation-operator))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-exponentiation-operator/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-exponentiation-operator/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-exponentiation-operator/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-exponentiation-operator/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-exponentiation-operator/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-transform-logical-assignment-operators](https://babel.dev/docs/en/next/babel-plugin-transform-logical-assignment-operators)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-logical-assignment-operators))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-logical-assignment-operators/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-logical-assignment-operators/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-logical-assignment-operators/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-logical-assignment-operators/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-logical-assignment-operators/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-transform-optional-chaining](https://babel.dev/docs/en/next/babel-plugin-transform-optional-chaining)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-optional-chaining))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-optional-chaining/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-optional-chaining/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-optional-chaining/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-optional-chaining/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-optional-chaining/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-transform-private-methods](https://babel.dev/docs/en/next/babel-plugin-transform-private-methods)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-private-methods))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-private-methods/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-private-methods/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-private-methods/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-private-methods/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-private-methods/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-transform-private-property-in-object](https://babel.dev/docs/en/next/babel-plugin-transform-private-property-in-object)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-private-property-in-object))
| [`^7.25.9` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-private-property-in-object/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-private-property-in-object/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-private-property-in-object/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-private-property-in-object/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-private-property-in-object/7.29.7/8.0.1?slim=true)
|
|
[@babel/plugin-transform-typescript](https://babel.dev/docs/en/next/babel-plugin-transform-typescript)
([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript))
| [`^7.26.3` →
`^8.0.0`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-typescript/7.29.7/8.0.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-typescript/8.0.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-typescript/8.0.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-typescript/7.29.7/8.0.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-typescript/7.29.7/8.0.1?slim=true)
|
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`^9.13.0` →
`^10.0.0`](https://renovatebot.com/diffs/npm/eslint/9.39.4/10.5.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/10.5.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint/10.5.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint/9.39.4/10.5.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/9.39.4/10.5.0?slim=true)
|

---

### Release Notes

<details>
<summary>babel/babel (@&#8203;babel/code-frame)</summary>

###
[`v8.0.0`](https://redirect.github.com/babel/babel/blob/HEAD/CHANGELOG.md#v800-2026-06-16)

[Compare
Source](https://redirect.github.com/babel/babel/compare/v7.29.7...v8.0.0)

##### 👓 Spec Compliance

- `babel-core`
- [#&#8203;18039](https://redirect.github.com/babel/babel/pull/18039)
perf: Only extract source map comments at the end of the file
([@&#8203;liuxingbaoyu](https://redirect.github.com/liuxingbaoyu))

##### 💥 Breaking Change

- `babel-cli`, `babel-node`, `babel-plugin-proposal-decorators`,
`babel-plugin-transform-classes`,
`babel-plugin-transform-function-name`,
`babel-plugin-transform-modules-commonjs`,
`babel-plugin-transform-object-rest-spread`,
`babel-plugin-transform-parameters`,
`babel-plugin-transform-react-constant-elements`,
`babel-plugin-transform-regenerator`, `babel-preset-env`,
`babel-register`
- [#&#8203;18069](https://redirect.github.com/babel/babel/pull/18069)
Fallback to assuming ESM support with `modules: auto`
([@&#8203;nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo))
- `babel-plugin-transform-runtime`, `babel-runtime-corejs3`,
`babel-runtime`
- [#&#8203;18036](https://redirect.github.com/babel/babel/pull/18036)
Remove corejs exports for `@babe/runtime-corejs3`
([@&#8203;liuxingbaoyu](https://redirect.github.com/liuxingbaoyu))
- `babel-parser`
- [#&#8203;18034](https://redirect.github.com/babel/babel/pull/18034)
Remove `locations: "packed"`
([@&#8203;liuxingbaoyu](https://redirect.github.com/liuxingbaoyu))

##### 🐛 Bug Fix

- `babel-generator`
- [#&#8203;18046](https://redirect.github.com/babel/babel/pull/18046)
fix(generator): improve new callee parens check
([@&#8203;JLHwung](https://redirect.github.com/JLHwung))
- `babel-plugin-transform-modules-systemjs`
- [#&#8203;18032](https://redirect.github.com/babel/babel/pull/18032)
fix(systemjs): support **proto** as an export name
([@&#8203;JLHwung](https://redirect.github.com/JLHwung))

##### 📝 Documentation

- [#&#8203;18070](https://redirect.github.com/babel/babel/pull/18070)
Add EOL date for Babel 7 (end of June 2027) to SECURITY.md
([@&#8203;nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo))

##### 🏠 Internal

- [#&#8203;18018](https://redirect.github.com/babel/babel/pull/18018)
ci: enforce yarn integrity
([@&#8203;JLHwung](https://redirect.github.com/JLHwung))

##### :running\_woman: Performance

- `babel-core`
- [#&#8203;18039](https://redirect.github.com/babel/babel/pull/18039)
perf: Only extract source map comments at the end of the file
([@&#8203;liuxingbaoyu](https://redirect.github.com/liuxingbaoyu))

</details>

<details>
<summary>eslint/eslint (eslint)</summary>

###
[`v10.5.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.5.0)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.4.1...v10.5.0)

#### Features

-
[`5ca8c52`](https://redirect.github.com/eslint/eslint/commit/5ca8c5278edea1fd84d3ba83d8ea3f52fb3831ad)
feat: correct stack tracking in max-nested-callbacks
([#&#8203;20973](https://redirect.github.com/eslint/eslint/issues/20973))
(Pixel998)
-
[`b565783`](https://redirect.github.com/eslint/eslint/commit/b5657837604fa5e8cf1278074782025cadd34b6c)
feat: report no-with violations at the with keyword
([#&#8203;20971](https://redirect.github.com/eslint/eslint/issues/20971))
(Pixel998)
-
[`2ce032f`](https://redirect.github.com/eslint/eslint/commit/2ce032fbc72a1a80c024c084a4f382fb6dece684)
feat: report max-lines-per-function violations at function head
([#&#8203;20966](https://redirect.github.com/eslint/eslint/issues/20966))
(Pixel998)
-
[`732cb3e`](https://redirect.github.com/eslint/eslint/commit/732cb3e09d5b8b809b5f461d118a5d9fdcd6427f)
feat: report max-nested-callbacks violations at function head
([#&#8203;20967](https://redirect.github.com/eslint/eslint/issues/20967))
(Pixel998)
-
[`f9c138a`](https://redirect.github.com/eslint/eslint/commit/f9c138a0ba7d8e37aed39aef4a3ff1cae8c669f7)
feat: report max-depth violations on keywords
([#&#8203;20943](https://redirect.github.com/eslint/eslint/issues/20943))
(Pixel998)
-
[`bdb496c`](https://redirect.github.com/eslint/eslint/commit/bdb496cc0d54b6d0a023aef9abd5f040ccff2101)
feat: correct max-depth handling for else-if chains
([#&#8203;20944](https://redirect.github.com/eslint/eslint/issues/20944))
(Pixel998)
-
[`c296873`](https://redirect.github.com/eslint/eslint/commit/c29687354a7f96093f57f7d73eecb866ad5e2953)
feat: update error loc in `max-statements` to function header
([#&#8203;20907](https://redirect.github.com/eslint/eslint/issues/20907))
(Taejin Kim)

#### Documentation

-
[`8ae1b5b`](https://redirect.github.com/eslint/eslint/commit/8ae1b5b856dc031cd6c701d89a4df7da4772cd56)
docs: Update README (GitHub Actions Bot)
-
[`ca7eb90`](https://redirect.github.com/eslint/eslint/commit/ca7eb90127dcad917188bb1342623f02a272e781)
docs: update Node.js prerequisites to include ICU support
([#&#8203;20962](https://redirect.github.com/eslint/eslint/issues/20962))
(Francesco Trotta)
-
[`f99b47a`](https://redirect.github.com/eslint/eslint/commit/f99b47a6799be25321552402a49303bb06a43fe4)
docs: Update README (GitHub Actions Bot)
-
[`acf03d4`](https://redirect.github.com/eslint/eslint/commit/acf03d4eed31d259c7dc62af5b9640629784f7cc)
docs: clarify precedence of parserOptions over languageOptions
([#&#8203;20926](https://redirect.github.com/eslint/eslint/issues/20926))
(sethamus)

#### Chores

-
[`b18bf58`](https://redirect.github.com/eslint/eslint/commit/b18bf58c5ac748415ffffdff2d96980fbd6a57e8)
chore: update ecosystem plugins
([#&#8203;20959](https://redirect.github.com/eslint/eslint/issues/20959))
(ESLint Bot)
-
[`c2d1444`](https://redirect.github.com/eslint/eslint/commit/c2d1444df77cb42e5a0b89ab70496879d180a54d)
refactor: replace areAllSegmentsUnreachable with !isAnySegmentReachable
([#&#8203;20951](https://redirect.github.com/eslint/eslint/issues/20951))
(Taejin Kim)
-
[`243b8c5`](https://redirect.github.com/eslint/eslint/commit/243b8c56014bbbe63771185b0731d8dd4d1316e9)
chore: enhance config-rule to support oneOf, anyOf, and nested schemas
([#&#8203;20788](https://redirect.github.com/eslint/eslint/issues/20788))
(kuldeep kumar)
-
[`217b2a9`](https://redirect.github.com/eslint/eslint/commit/217b2a91f46137c5ffd693965e71306c4c15ea6b)
test: add unit tests for ParserService
([#&#8203;20949](https://redirect.github.com/eslint/eslint/issues/20949))
(Taejin Kim)
-
[`72003e7`](https://redirect.github.com/eslint/eslint/commit/72003e781d76bd4ee0d98a6601730d0b829070f9)
test: add location information to error messages in `max-statements`
([#&#8203;20945](https://redirect.github.com/eslint/eslint/issues/20945))
(lumir)
-
[`7797c26`](https://redirect.github.com/eslint/eslint/commit/7797c266977b0bc4971aa79721813d480de72cd1)
refactor: deduplicate isAnySegmentReachable across rules
([#&#8203;20890](https://redirect.github.com/eslint/eslint/issues/20890))
(Taejin Kim)
-
[`67c46fa`](https://redirect.github.com/eslint/eslint/commit/67c46fa6e4f34e88cc6bc82f8a0dcc917c65d257)
chore: update ecosystem plugins
([#&#8203;20938](https://redirect.github.com/eslint/eslint/issues/20938))
(ESLint Bot)
-
[`95d8c7a`](https://redirect.github.com/eslint/eslint/commit/95d8c7a99f991abd8ab618d0ee2cbd4f58effc29)
chore: update dependency
[@&#8203;eslint/json](https://redirect.github.com/eslint/json) to v2
([#&#8203;20934](https://redirect.github.com/eslint/eslint/issues/20934))
(renovate\[bot])
-
[`cf9e496`](https://redirect.github.com/eslint/eslint/commit/cf9e496205142cd4971b9f98aed85866d1010b9c)
chore: update
[@&#8203;arethetypeswrong/cli](https://redirect.github.com/arethetypeswrong/cli)
to 0.18.3
([#&#8203;20933](https://redirect.github.com/eslint/eslint/issues/20933))
(Pixel998)
-
[`fb6d396`](https://redirect.github.com/eslint/eslint/commit/fb6d3960cacc51fc12383fa5ded2382adbf90c1c)
test: run type tests with TypeScript 7
([#&#8203;20868](https://redirect.github.com/eslint/eslint/issues/20868))
(sethamus)

###
[`v10.4.1`](https://redirect.github.com/eslint/eslint/releases/tag/v10.4.1)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.4.0...v10.4.1)

#### Bug Fixes

-
[`e557467`](https://redirect.github.com/eslint/eslint/commit/e557467db7496220eebcbe2ac5ea6d38c12bb1ec)
fix: update `@eslint/plugin-kit` version to 0.7.2
([#&#8203;20930](https://redirect.github.com/eslint/eslint/issues/20930))
(Francesco Trotta)
-
[`d4ce898`](https://redirect.github.com/eslint/eslint/commit/d4ce898796ca22c3b96aa70d3014cb85f4bac1cd)
fix: propagate failures from delegated commands
([#&#8203;20917](https://redirect.github.com/eslint/eslint/issues/20917))
(Minh Vu)
-
[`f4f3507`](https://redirect.github.com/eslint/eslint/commit/f4f3507460bc016b5be979c05d2969793f570cbf)
fix: prefer-arrow-callback invalid autofix with newline after `async`
([#&#8203;20916](https://redirect.github.com/eslint/eslint/issues/20916))
(kuldeep kumar)
-
[`c5bc78b`](https://redirect.github.com/eslint/eslint/commit/c5bc78b37e08b9054a11f0cc2d81808bb24acb85)
fix: false positive for reference in `finally` block
([#&#8203;20655](https://redirect.github.com/eslint/eslint/issues/20655))
(Tanuj Kanti)
-
[`27538c0`](https://redirect.github.com/eslint/eslint/commit/27538c01f5df4e9306f6f4ba867b2dd6307fae59)
fix: add missing CodePath and CodePathSegment types
([#&#8203;20853](https://redirect.github.com/eslint/eslint/issues/20853))
(Pixel998)

#### Documentation

-
[`61b0add`](https://redirect.github.com/eslint/eslint/commit/61b0add61ffc52665562be7bb96f526690a78b30)
docs: remove deprecated rule from related rules of `max-params`
([#&#8203;20921](https://redirect.github.com/eslint/eslint/issues/20921))
(Tanuj Kanti)
-
[`305d5b9`](https://redirect.github.com/eslint/eslint/commit/305d5b91aeac24d36fde42f75625a8f183d4ce43)
docs: remove deprecated rules from related rules section
([#&#8203;20911](https://redirect.github.com/eslint/eslint/issues/20911))
(Tanuj Kanti)
-
[`49b0202`](https://redirect.github.com/eslint/eslint/commit/49b0202d01918b8061720d586dffd7c68047090c)
docs: fix `display: none` of ad
([#&#8203;20901](https://redirect.github.com/eslint/eslint/issues/20901))
(Tanuj Kanti)
-
[`9067f94`](https://redirect.github.com/eslint/eslint/commit/9067f9492ec998afc5b4f057a477ecf6ebd45e44)
docs: switch build to Node.js 24
([#&#8203;20893](https://redirect.github.com/eslint/eslint/issues/20893))
(Milos Djermanovic)
-
[`c91b041`](https://redirect.github.com/eslint/eslint/commit/c91b0417e3420c76807ce1fa2aea76e2de87ab86)
docs: Update README (GitHub Actions Bot)
-
[`e349265`](https://redirect.github.com/eslint/eslint/commit/e349265cb37f3ebc837e178e48a725bb782bd870)
docs: clarify semver strings in rule deprecation objects
([#&#8203;20885](https://redirect.github.com/eslint/eslint/issues/20885))
(Milos Djermanovic)

#### Chores

-
[`b0e466b`](https://redirect.github.com/eslint/eslint/commit/b0e466b6ab47bfc7de43d8de0c315d8ee83aa584)
test: add `data` property to invalid tests cases for rules
([#&#8203;20924](https://redirect.github.com/eslint/eslint/issues/20924))
(Tanuj Kanti)
-
[`f78838b`](https://redirect.github.com/eslint/eslint/commit/f78838bc4c86d487e1bcc7cede260c4467721c46)
test: add CodePath type coverage
([#&#8203;20904](https://redirect.github.com/eslint/eslint/issues/20904))
(Pixel998)
-
[`1daa4bd`](https://redirect.github.com/eslint/eslint/commit/1daa4bd734b79a62e317d0394394a6b38cff49f9)
chore: update `eslint-plugin-eslint-comments` test data to latest commit
([#&#8203;20922](https://redirect.github.com/eslint/eslint/issues/20922))
(Francesco Trotta)
-
[`002942c`](https://redirect.github.com/eslint/eslint/commit/002942ce988ea28b78e0a2f3b074081e638b552c)
ci: declare contents:read on update-readme workflow
([#&#8203;20919](https://redirect.github.com/eslint/eslint/issues/20919))
(Arpit Jain)
-
[`64bca24`](https://redirect.github.com/eslint/eslint/commit/64bca24e7bed35bc3c864fc625cb2d89eca87d5b)
chore: update ecosystem plugins
([#&#8203;20912](https://redirect.github.com/eslint/eslint/issues/20912))
(ESLint Bot)
-
[`6d7c832`](https://redirect.github.com/eslint/eslint/commit/6d7c832950d5e92499d88e504080661f888f8f56)
chore: ignore fflate updates in renovate
([#&#8203;20908](https://redirect.github.com/eslint/eslint/issues/20908))
(Pixel998)
-
[`b2c8638`](https://redirect.github.com/eslint/eslint/commit/b2c86382164d87c6203b78d52068cd6a2a6ffe30)
ci: bump pnpm/action-setup from 6.0.7 to 6.0.8
([#&#8203;20889](https://redirect.github.com/eslint/eslint/issues/20889))
(dependabot\[bot])
-
[`a9b8d7f`](https://redirect.github.com/eslint/eslint/commit/a9b8d7f74c50211701cfc49710fa541fd91b2aa5)
chore: increase maxBuffer for ecosystem tests
([#&#8203;20881](https://redirect.github.com/eslint/eslint/issues/20881))
(sethamus)
-
[`b702ead`](https://redirect.github.com/eslint/eslint/commit/b702ead5e1ed7cb9f28238a454797662efb37396)
chore: update ecosystem update PR settings
([#&#8203;20884](https://redirect.github.com/eslint/eslint/issues/20884))
(Pixel998)
-
[`507f60e`](https://redirect.github.com/eslint/eslint/commit/507f60e9a78c9a902bc8759f066ae17a1ea6cd81)
chore: update ecosystem plugins
([#&#8203;20882](https://redirect.github.com/eslint/eslint/issues/20882))
(ESLint Bot)
-
[`92f5c5b`](https://redirect.github.com/eslint/eslint/commit/92f5c5bb6bf3a5d167c8ee53a430833410295c6d)
test: add unit test for message-count
([#&#8203;20878](https://redirect.github.com/eslint/eslint/issues/20878))
(kuldeep kumar)
-
[`df32108`](https://redirect.github.com/eslint/eslint/commit/df321080af5758b1fa25e4b9a40e26135642dd6e)
chore: add
[@&#8203;eslint/markdown](https://redirect.github.com/eslint/markdown)
and typescript-eslint ecosystem tests
([#&#8203;20837](https://redirect.github.com/eslint/eslint/issues/20837))
(sethamus)
-
[`327f91d`](https://redirect.github.com/eslint/eslint/commit/327f91d36aa49f2a50ded931d841a16374fd875f)
chore: use includeIgnoreFile internally
([#&#8203;20876](https://redirect.github.com/eslint/eslint/issues/20876))
(Kirk Waiblinger)
-
[`f0dc4bd`](https://redirect.github.com/eslint/eslint/commit/f0dc4bd893fb3a9f44e4ddc3ad7063ffb0beacd3)
chore: pin fflate\@&#8203;0.8.2
([#&#8203;20877](https://redirect.github.com/eslint/eslint/issues/20877))
(Milos Djermanovic)
-
[`0f4bd25`](https://redirect.github.com/eslint/eslint/commit/0f4bd257a67a082b756de746d9e0c4842ab764ca)
ci: run Discord alert for ecosystem test failures
([#&#8203;20873](https://redirect.github.com/eslint/eslint/issues/20873))
(Copilot)

###
[`v10.4.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.4.0)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.3.0...v10.4.0)

#### Features

-
[`1a45ec5`](https://redirect.github.com/eslint/eslint/commit/1a45ec596af1dd5f880e6874cb8f24dafb6a7ecf)
feat: check sequence expressions in `for-direction`
([#&#8203;20701](https://redirect.github.com/eslint/eslint/issues/20701))
(kuldeep kumar)
-
[`450040b`](https://redirect.github.com/eslint/eslint/commit/450040bd89b989b3531824c6be45feb5fe3d936b)
feat: add `includeIgnoreFile()` to `eslint/config`
([#&#8203;20735](https://redirect.github.com/eslint/eslint/issues/20735))
(Kirk Waiblinger)

#### Bug Fixes

-
[`544c0c3`](https://redirect.github.com/eslint/eslint/commit/544c0c3da589166ad8e5d634f35d3d06701c57be)
fix: escape code path DOT labels in debug output
([#&#8203;20866](https://redirect.github.com/eslint/eslint/issues/20866))
(Pixel998)
-
[`6799431`](https://redirect.github.com/eslint/eslint/commit/6799431203f2579632d0870f98ba132067f4040c)
fix: update dependency
[@&#8203;eslint/config-helpers](https://redirect.github.com/eslint/config-helpers)
to ^0.6.0
([#&#8203;20850](https://redirect.github.com/eslint/eslint/issues/20850))
(renovate\[bot])
-
[`f078fef`](https://redirect.github.com/eslint/eslint/commit/f078fef5005dceb14fc162aab7c7200e027688dd)
fix: handle non-array deprecated rule replacements
([#&#8203;20825](https://redirect.github.com/eslint/eslint/issues/20825))
(xbinaryx)

#### Documentation

-
[`7e52a71`](https://redirect.github.com/eslint/eslint/commit/7e52a7151fb92eec0e0f67fe4e5ddbd1ccce796f)
docs: add mention of `@eslint-react/eslint-plugin`
([#&#8203;20869](https://redirect.github.com/eslint/eslint/issues/20869))
(Pavel)
-
[`db3468b`](https://redirect.github.com/eslint/eslint/commit/db3468ba746407d7f286f18f7ea9db6df0e3bc08)
docs: tweak wording around ambiguous CJS-vs-ESM config
([#&#8203;20865](https://redirect.github.com/eslint/eslint/issues/20865))
(Kirk Waiblinger)
-
[`9084664`](https://redirect.github.com/eslint/eslint/commit/90846643ec6e97d447ae0d831fabe6d17b0a998a)
docs: Update README (GitHub Actions Bot)
-
[`9cc7387`](https://redirect.github.com/eslint/eslint/commit/9cc73875046e3c4b8313644cbb1e99e26b36bd3f)
docs: Update README (GitHub Actions Bot)
-
[`3d7b548`](https://redirect.github.com/eslint/eslint/commit/3d7b5484407403817aa9071a394d336d8ea96eb5)
docs: Update README (GitHub Actions Bot)
-
[`191ec3c`](https://redirect.github.com/eslint/eslint/commit/191ec3c0a3f94ce0f110df761f0b2b8949011ccb)
docs: Update README (GitHub Actions Bot)

#### Chores

-
[`6616856`](https://redirect.github.com/eslint/eslint/commit/6616856f28fa514a30f87b5539fc100d739a94bf)
chore: upgrade knip to v6
([#&#8203;20875](https://redirect.github.com/eslint/eslint/issues/20875))
(Pixel998)
-
[`d13b084`](https://redirect.github.com/eslint/eslint/commit/d13b084a3ad02f926e9addaa35fc383759ea5554)
ci: ensure auto-created PRs run CI
([#&#8203;20860](https://redirect.github.com/eslint/eslint/issues/20860))
(lumir)
-
[`e71c7af`](https://redirect.github.com/eslint/eslint/commit/e71c7af86dce9acc1d18cb12d2184309f6841594)
ci: bump pnpm/action-setup from 6.0.5 to 6.0.7
([#&#8203;20862](https://redirect.github.com/eslint/eslint/issues/20862))
(dependabot\[bot])
-
[`d84393d`](https://redirect.github.com/eslint/eslint/commit/d84393dea170f54191fd20c8268b52c81c0ccd99)
test: add unit tests for SuppressionsService.applySuppressions()
([#&#8203;20863](https://redirect.github.com/eslint/eslint/issues/20863))
(kuldeep kumar)
-
[`24db8cb`](https://redirect.github.com/eslint/eslint/commit/24db8cb8e6f07fba667121777a15b1785486be94)
test: add tests for SuppressionsService.save()
([#&#8203;20802](https://redirect.github.com/eslint/eslint/issues/20802))
(kuldeep kumar)
-
[`2ef0549`](https://redirect.github.com/eslint/eslint/commit/2ef0549cac4a9537e4c3a26b9f3edd4c99476bf6)
chore: update ecosystem plugins
([#&#8203;20857](https://redirect.github.com/eslint/eslint/issues/20857))
(github-actions\[bot])
-
[`a429791`](https://redirect.github.com/eslint/eslint/commit/a4297918d264d229a06cd96051ef9b91c7b86732)
ci: remove `eslint-webpack-plugin` types integration test
([#&#8203;20668](https://redirect.github.com/eslint/eslint/issues/20668))
(Milos Djermanovic)
-
[`9e37386`](https://redirect.github.com/eslint/eslint/commit/9e37386aa7f2ce220b2ef74a6afbac5f6b3527c5)
chore: replace `recast` with range approach in code-sample-minimizer
([#&#8203;20682](https://redirect.github.com/eslint/eslint/issues/20682))
(Copilot)
-
[`0dd1f9f`](https://redirect.github.com/eslint/eslint/commit/0dd1f9ffc9a07704d46e2a4c8d4ccc0d0908b0c0)
test: disable warning for `vm.constants.USE_MAIN_CONTEXT_DEFAULT_LOADER`
([#&#8203;20845](https://redirect.github.com/eslint/eslint/issues/20845))
(Francesco Trotta)
-
[`9da3c7b`](https://redirect.github.com/eslint/eslint/commit/9da3c7bc92d9579f8db19ecb56e718538d09db2b)
refactor: remove deprecated `meta.language` and migrate `meta.dialects`
([#&#8203;20716](https://redirect.github.com/eslint/eslint/issues/20716))
(Pixel998)
-
[`2099ed1`](https://redirect.github.com/eslint/eslint/commit/2099ed12a0a74c3d7f0808514362af2499b4fe2b)
refactor: add `meta.defaultOptions` to more rules, enable linting
([#&#8203;20800](https://redirect.github.com/eslint/eslint/issues/20800))
(xbinaryx)
-
[`f1dfbc9`](https://redirect.github.com/eslint/eslint/commit/f1dfbc9ca57196de7092e1888cc99427bd6fe06e)
chore: update ecosystem plugins
([#&#8203;20836](https://redirect.github.com/eslint/eslint/issues/20836))
(github-actions\[bot])
-
[`c759413`](https://redirect.github.com/eslint/eslint/commit/c75941390c14728806cd4baef4f6072f6de78318)
ci: bump pnpm/action-setup from 6.0.3 to 6.0.5
([#&#8203;20843](https://redirect.github.com/eslint/eslint/issues/20843))
(dependabot\[bot])
-
[`5b817d6`](https://redirect.github.com/eslint/eslint/commit/5b817d6fdc9ae2c35b528dc662b2eca8f40f64aa)
test: add unit tests for lib/shared/ast-utils
([#&#8203;20838](https://redirect.github.com/eslint/eslint/issues/20838))
(kuldeep kumar)
-
[`1c13ae3`](https://redirect.github.com/eslint/eslint/commit/1c13ae3934c198c494e5958fa3a68b33244ff06a)
test: add unit tests for lib/shared/severity
([#&#8203;20835](https://redirect.github.com/eslint/eslint/issues/20835))
(kuldeep kumar)

###
[`v10.3.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.3.0)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.2.1...v10.3.0)

#### Features

-
[`379571a`](https://redirect.github.com/eslint/eslint/commit/379571a975f2b24d88037b9de2e72ec61d004130)
feat: add suggestions for no-unused-private-class-members
([#&#8203;20773](https://redirect.github.com/eslint/eslint/issues/20773))
(sethamus)

#### Bug Fixes

-
[`b6ae5cf`](https://redirect.github.com/eslint/eslint/commit/b6ae5cf07b9b51802367539cb24b245b61eaa37c)
fix: handle unavailable require cache
([#&#8203;20812](https://redirect.github.com/eslint/eslint/issues/20812))
(Simon Podlipsky)
-
[`6fb3685`](https://redirect.github.com/eslint/eslint/commit/6fb3685bcbe9a6f72fd7dfb9129686b6fb96b0bd)
fix: rule suggestions cause continuation in class body
([#&#8203;20787](https://redirect.github.com/eslint/eslint/issues/20787))
(Milos Djermanovic)

#### Documentation

-
[`32cc7ab`](https://redirect.github.com/eslint/eslint/commit/32cc7ab4ec653ce89da92deb5c40a9f4fc707fe5)
docs: fix typos in docs and comments
([#&#8203;20809](https://redirect.github.com/eslint/eslint/issues/20809))
(Tanuj Kanti)
-
[`7f47937`](https://redirect.github.com/eslint/eslint/commit/7f479376a2fa463d823ab762db6bb37ce8d2ee8f)
docs: Update README (GitHub Actions Bot)

#### Chores

-
[`d32235e`](https://redirect.github.com/eslint/eslint/commit/d32235ec19ceea211fa86452afa383ca05f5c2f9)
ci: use pnpm in `eslint-flat-config-utils` type integration test
([#&#8203;20826](https://redirect.github.com/eslint/eslint/issues/20826))
(Francesco Trotta)
-
[`3ffb14e`](https://redirect.github.com/eslint/eslint/commit/3ffb14ea517de750ed1181579ef844af342e4096)
chore: clean up typos in comments and JSDoc
([#&#8203;20821](https://redirect.github.com/eslint/eslint/issues/20821))
(Pixel998)
-
[`22eb58a`](https://redirect.github.com/eslint/eslint/commit/22eb58a21cbde2fbd53a1fae99453d408672de50)
chore: add missing continue-on-error to ecosystem-tests.yml
([#&#8203;20818](https://redirect.github.com/eslint/eslint/issues/20818))
(Josh Goldberg ✨)
-
[`88bf002`](https://redirect.github.com/eslint/eslint/commit/88bf0024cb36caebf2880516d9a1f81aa75dafe2)
ci: bump pnpm/action-setup from 6.0.1 to 6.0.3
([#&#8203;20815](https://redirect.github.com/eslint/eslint/issues/20815))
(dependabot\[bot])
-
[`97c8c33`](https://redirect.github.com/eslint/eslint/commit/97c8c330beae9557ad24e19f94eebc8d08d1a722)
chore: update ilshidur/action-discord action to v0.4.0
([#&#8203;20811](https://redirect.github.com/eslint/eslint/issues/20811))
(renovate\[bot])
-
[`2f58136`](https://redirect.github.com/eslint/eslint/commit/2f58136dd47364a4cae7054a64f7bf1e79693813)
chore: pin peter-evans/create-pull-request action to
[`5f6978f`](https://redirect.github.com/eslint/eslint/commit/5f6978f)
([#&#8203;20810](https://redirect.github.com/eslint/eslint/issues/20810))
(renovate\[bot])
-
[`77add7f`](https://redirect.github.com/eslint/eslint/commit/77add7f1bc91ed17bba3be3289928a9146c5f5a1)
chore: add initial ecosystem plugin tests workflow
([#&#8203;19643](https://redirect.github.com/eslint/eslint/issues/19643))
(Josh Goldberg ✨)
-
[`4023b55`](https://redirect.github.com/eslint/eslint/commit/4023b55490fae55e464fe35530ef038cdf5d79a5)
test: Add unit tests for SuppressionsService.prune()
([#&#8203;20797](https://redirect.github.com/eslint/eslint/issues/20797))
(kuldeep kumar)
-
[`54080da`](https://redirect.github.com/eslint/eslint/commit/54080dad4f77bb39a1a843933d4ff3a2b7c175e2)
test: add unit tests for ForkContext
([#&#8203;20778](https://redirect.github.com/eslint/eslint/issues/20778))
(kuldeep kumar)
-
[`f0e2bcc`](https://redirect.github.com/eslint/eslint/commit/f0e2bcc4bf19253aaebfbd7df87824b0ca4a151f)
test: add unit tests for SuppressionsService.suppress() method
([#&#8203;20765](https://redirect.github.com/eslint/eslint/issues/20765))
(kuldeep kumar)
-
[`a7f0b94`](https://redirect.github.com/eslint/eslint/commit/a7f0b94743a99bcdf8d07cff15ffbfa6a6c5f927)
chore: update dependency prettier to v3.8.3
([#&#8203;20782](https://redirect.github.com/eslint/eslint/issues/20782))
(renovate\[bot])
-
[`7bf93d9`](https://redirect.github.com/eslint/eslint/commit/7bf93d9e79f6dbf77242cbb9a9b8be834730fccd)
chore: update TypeScript to v6
([#&#8203;20677](https://redirect.github.com/eslint/eslint/issues/20677))
(sethamus)
-
[`b42dd72`](https://redirect.github.com/eslint/eslint/commit/b42dd72e76e7f90e7f0be9458288d93353052adc)
ci: bump pnpm/action-setup from 6.0.0 to 6.0.1
([#&#8203;20781](https://redirect.github.com/eslint/eslint/issues/20781))
(dependabot\[bot])
-
[`2b252be`](https://redirect.github.com/eslint/eslint/commit/2b252be80f362cca7be3326a6dbe958680fdfe9a)
test: add unit tests for IdGenerator
([#&#8203;20775](https://redirect.github.com/eslint/eslint/issues/20775))
(kuldeep kumar)

###
[`v10.2.1`](https://redirect.github.com/eslint/eslint/releases/tag/v10.2.1)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.2.0...v10.2.1)

#### Bug Fixes

-
[`14be92b`](https://redirect.github.com/eslint/eslint/commit/14be92b6d1fa0923b8923830f2208e5e2705b002)
fix: model generator yield resumption paths in code path analysis
([#&#8203;20665](https://redirect.github.com/eslint/eslint/issues/20665))
(sethamus)
-
[`84a19d2`](https://redirect.github.com/eslint/eslint/commit/84a19d2c32255db6b9cfc08644a607aae6d5cb62)
fix: no-async-promise-executor false positives for shadowed Promise
([#&#8203;20740](https://redirect.github.com/eslint/eslint/issues/20740))
(xbinaryx)
-
[`af764af`](https://redirect.github.com/eslint/eslint/commit/af764af0ec38225755fbf8a6f207f0c77b595a8d)
fix: clarify language and processor validation errors
([#&#8203;20729](https://redirect.github.com/eslint/eslint/issues/20729))
(Pixel998)
-
[`e251b89`](https://redirect.github.com/eslint/eslint/commit/e251b89a38280973e468a4a9386c138f4f55d10d)
fix: update eslint
([#&#8203;20715](https://redirect.github.com/eslint/eslint/issues/20715))
(renovate\[bot])

#### Documentation

-
[`ca92ca0`](https://redirect.github.com/eslint/eslint/commit/ca92ca0fb4599e8de1e2fb914e695fe7397cbe63)
docs: reuse markdown-it instance for markdown filter
([#&#8203;20768](https://redirect.github.com/eslint/eslint/issues/20768))
(Amaresh S M)
-
[`57d2ee2`](https://redirect.github.com/eslint/eslint/commit/57d2ee213305cee0cb55ef08e0480b57396269a9)
docs: Enable Eleventy incremental mode for watch
([#&#8203;20767](https://redirect.github.com/eslint/eslint/issues/20767))
(Amaresh S M)
-
[`c1621b9`](https://redirect.github.com/eslint/eslint/commit/c1621b915742276e5f4b25efe790ca62296330dc)
docs: fix typos in code-path-analyzer.js
([#&#8203;20700](https://redirect.github.com/eslint/eslint/issues/20700))
(Ayush Shukla)
-
[`1418d52`](https://redirect.github.com/eslint/eslint/commit/1418d522d10bde1960f4942afb548bc7160ec49e)
docs: Update README (GitHub Actions Bot)
-
[`39771e6`](https://redirect.github.com/eslint/eslint/commit/39771e6e600f0b0617fdeafff6dd07e4211ffde6)
docs: Update README (GitHub Actions Bot)
-
[`71e0469`](https://redirect.github.com/eslint/eslint/commit/71e04693def2df57268f08f3072a2749df6bf438)
docs: fix incomplete JSDoc param description in no-shadow rule
([#&#8203;20728](https://redirect.github.com/eslint/eslint/issues/20728))
(kuldeep kumar)
-
[`22119ce`](https://redirect.github.com/eslint/eslint/commit/22119ceb93e28f62262fc1d98ff1b1442d6e2dbf)
docs: clarify scope of for-direction rule with dead code examples
([#&#8203;20723](https://redirect.github.com/eslint/eslint/issues/20723))
(Amaresh S M)
-
[`8f3fb77`](https://redirect.github.com/eslint/eslint/commit/8f3fb77f122a5641d1833cad5d93f3f54fa3be0b)
docs: document `meta.docs.dialects`
([#&#8203;20718](https://redirect.github.com/eslint/eslint/issues/20718))
(Pixel998)

#### Chores

-
[`7ddfea9`](https://redirect.github.com/eslint/eslint/commit/7ddfea9c4f62add1588c5c0b0da568c299246383)
chore: update dependency prettier to v3.8.2
([#&#8203;20770](https://redirect.github.com/eslint/eslint/issues/20770))
(renovate\[bot])
-
[`fac40e1`](https://redirect.github.com/eslint/eslint/commit/fac40e1de2ba7646cc7cd2d3f93fbdd1f8819001)
ci: bump pnpm/action-setup from 5.0.0 to 6.0.0
([#&#8203;20763](https://redirect.github.com/eslint/eslint/issues/20763))
(dependabot\[bot])
-
[`7246f92`](https://redirect.github.com/eslint/eslint/commit/7246f923332522d8b3d46b6ee646fce88535f3fb)
test: add tests for SuppressionsService.load() error handling
([#&#8203;20734](https://redirect.github.com/eslint/eslint/issues/20734))
(kuldeep kumar)
-
[`4f34b1e`](https://redirect.github.com/eslint/eslint/commit/4f34b1e592b0f63d766d9903998e8e36eb49d3aa)
chore: update pnpm/action-setup action to v5
([#&#8203;20762](https://redirect.github.com/eslint/eslint/issues/20762))
(renovate\[bot])
-
[`51080eb`](https://redirect.github.com/eslint/eslint/commit/51080eb5c98d619434e4835dbe9f1c6654aca3b8)
test: processor service
([#&#8203;20731](https://redirect.github.com/eslint/eslint/issues/20731))
(kuldeep kumar)
-
[`e7e1889`](https://redirect.github.com/eslint/eslint/commit/e7e1889fca9b6044e08f41b38df20a1ce45808c8)
chore: remove stale babel-eslint10 fixture and test
([#&#8203;20727](https://redirect.github.com/eslint/eslint/issues/20727))
(kuldeep kumar)
-
[`4e1a87c`](https://redirect.github.com/eslint/eslint/commit/4e1a87cb8fb90e309524bc36bc5f31b9f9cfaa76)
test: remove redundant async/await in flat config array tests
([#&#8203;20722](https://redirect.github.com/eslint/eslint/issues/20722))
(Pixel998)
-
[`066eabb`](https://redirect.github.com/eslint/eslint/commit/066eabb3643b12931f991594969bcc0028f71a5f)
test: add rule metadata coverage for `languages` and `docs.dialects`
([#&#8203;20717](https://redirect.github.com/eslint/eslint/issues/20717))
(Pixel998)

###
[`v10.2.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.2.0)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.1.0...v10.2.0)

#### Features

-
[`586ec2f`](https://redirect.github.com/eslint/eslint/commit/586ec2f43092779acc957866db4abe999112d1e1)
feat: Add `meta.languages` support to rules
([#&#8203;20571](https://redirect.github.com/eslint/eslint/issues/20571))
(Copilot)
-
[`14207de`](https://redirect.github.com/eslint/eslint/commit/14207dee3939dc87cfa8b2fcfc271fff2cfd6471)
feat: add `Temporal` to `no-obj-calls`
([#&#8203;20675](https://redirect.github.com/eslint/eslint/issues/20675))
(Pixel998)
-
[`bbb2c93`](https://redirect.github.com/eslint/eslint/commit/bbb2c93a2b31bd30924f32fe69a9acf41f9dfe35)
feat: add Temporal to ES2026 globals
([#&#8203;20672](https://redirect.github.com/eslint/eslint/issues/20672))
(Pixel998)

#### Bug Fixes

-
[`542cb3e`](https://redirect.github.com/eslint/eslint/commit/542cb3e6442a4e6ee3457c799e2a0ee23bef0c6a)
fix: update first-party dependencies
([#&#8203;20714](https://redirect.github.com/eslint/eslint/issues/20714))
(Francesco Trotta)

#### Documentation

-
[`a2af743`](https://redirect.github.com/eslint/eslint/commit/a2af743ea60f683d0e0de9d98267c1e7e4f5e412)
docs: add `language` to configuration objects
([#&#8203;20712](https://redirect.github.com/eslint/eslint/issues/20712))
(Francesco Trotta)
-
[`845f23f`](https://redirect.github.com/eslint/eslint/commit/845f23f1370892bf07d819497ac518c9e65090d6)
docs: Update README (GitHub Actions Bot)
-
[`5fbcf59`](https://redirect.github.com/eslint/eslint/commit/5fbcf5958b897cc4df5d652924d18428db37f7ee)
docs: remove `sourceType` from ts playground link
([#&#8203;20477](https://redirect.github.com/eslint/eslint/issues/20477))
(Tanuj Kanti)
-
[`8702a47`](https://redirect.github.com/eslint/eslint/commit/8702a474659be786b6b1392e5e7c0c56355ae4a4)
docs: Update README (GitHub Actions Bot)
-
[`ddeaded`](https://redirect.github.com/eslint/eslint/commit/ddeaded2ab36951383ff67c60fb64ec68d29a46a)
docs: Update README (GitHub Actions Bot)
-
[`2b44966`](https://redirect.github.com/eslint/eslint/commit/2b4496691266547784a7f7ad1989ce53381bab91)
docs: add Major Releases section to Manage Releases
([#&#8203;20269](https://redirect.github.com/eslint/eslint/issues/20269))
(Milos Djermanovic)
-
[`eab65c7`](https://redirect.github.com/eslint/eslint/commit/eab65c700ebb16a6e790910c720450c9908961fd)
docs: update `eslint` versions in examples
([#&#8203;20664](https://redirect.github.com/eslint/eslint/issues/20664))
(루밀LuMir)
-
[`3e4a299`](https://redirect.github.com/eslint/eslint/commit/3e4a29903bf31f0998e45ad9128a265bce1edc56)
docs: update ESM Dependencies policies with note for own-usage packages
([#&#8203;20660](https://redirect.github.com/eslint/eslint/issues/20660))
(Milos Djermanovic)

#### Chores

-
[`8120e30`](https://redirect.github.com/eslint/eslint/commit/8120e30f833474f47acc061d24d164e9f022264f)
refactor: extract no unmodified loop condition
([#&#8203;20679](https://redirect.github.com/eslint/eslint/issues/20679))
(kuldeep kumar)
-
[`46e8469`](https://redirect.github.com/eslint/eslint/commit/46e8469786be1b2bbb522100e1d44624d98d3745)
chore: update dependency markdownlint-cli2 to ^0.22.0
([#&#8203;20697](https://redirect.github.com/eslint/eslint/issues/20697))
(renovate\[bot])
-
[`01ed3aa`](https://redirect.github.com/eslint/eslint/commit/01ed3aa68477f81a7188e1498cf4906e02015b7c)
test: add unit tests for unicode utilities
([#&#8203;20622](https://redirect.github.com/eslint/eslint/issues/20622))
(Manish chaudhary)
-
[`811f493`](https://redirect.github.com/eslint/eslint/commit/811f4930f82ee2b6ac8eae75cade9bed63de0781)
ci: remove `--legacy-peer-deps` from types integration tests
([#&#8203;20667](https://redirect.github.com/eslint/eslint/issues/20667))
(Milos Djermanovic)
-
[`6b86fcf`](https://redirect.github.com/eslint/eslint/commit/6b86fcfc5c75d6a3b8a2cf7bcdb3ef60635a9a03)
chore: update dependency npm-run-all2 to v8
([#&#8203;20663](https://redirect.github.com/eslint/eslint/issues/20663))
(renovate\[bot])
-
[`632c4f8`](https://redirect.github.com/eslint/eslint/commit/632c4f83bf32b77981c7d395cacddd1bb172ee25)
chore: add `prettier` update commit to `.git-blame-ignore-revs`
([#&#8203;20662](https://redirect.github.com/eslint/eslint/issues/20662))
(루밀LuMir)
-
[`b0b0f21`](https://redirect.github.com/eslint/eslint/commit/b0b0f21927e03ba092400e3c70d7058f537765c8)
chore: update dependency eslint-plugin-regexp to ^3.1.0
([#&#8203;20659](https://redirect.github.com/eslint/eslint/issues/20659))
(Milos Djermanovic)
-
[`228a2dd`](https://redirect.github.com/eslint/eslint/commit/228a2dd4b272c17f516ee3541f1dd69eca0a8ab0)
chore: update dependency eslint-plugin-eslint-plugin to ^7.3.2
([#&#8203;20661](https://redirect.github.com/eslint/eslint/issues/20661))
(Milos Djermanovic)
-
[`3ab4d7e`](https://redirect.github.com/eslint/eslint/commit/3ab4d7e244df244102de9d0d250b2ff12456a785)
test: Add tests for eslintrc-style keys
([#&#8203;20645](https://redirect.github.com/eslint/eslint/issues/20645))
(kuldeep kumar)

###
[`v10.1.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.1.0)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.0.3...v10.1.0)

#### Features

-
[`ff4382b`](https://redirect.github.com/eslint/eslint/commit/ff4382be349035acdb170627a2dc92828e134562)
feat: apply fix for `no-var` in `TSModuleBlock`
([#&#8203;20638](https://redirect.github.com/eslint/eslint/issues/20638))
(Tanuj Kanti)
-
[`0916995`](https://redirect.github.com/eslint/eslint/commit/0916995b51528872b15ba4fedb24172cf25fcb3f)
feat: Implement api support for bulk-suppressions
([#&#8203;20565](https://redirect.github.com/eslint/eslint/issues/20565))
(Blake Sager)

#### Bug Fixes

-
[`2b8824e`](https://redirect.github.com/eslint/eslint/commit/2b8824e6be4223980e929a20025602df20d05ea2)
fix: Prevent `no-var` autofix when a variable is used before declaration
([#&#8203;20464](https://redirect.github.com/eslint/eslint/issues/20464))
(Amaresh S M)
-
[`e58b4bf`](https://redirect.github.com/eslint/eslint/commit/e58b4bff167e79afd067d1b0ee9360bec2d3393e)
fix: update eslint
([#&#8203;20597](https://redirect.github.com/eslint/eslint/issues/20597))
(renovate\[bot])

#### Documentation

-
[`b7b57fe`](https://redirect.github.com/eslint/eslint/commit/b7b57fe9942c572ff651230f1f96cefed787ca52)
docs: use correct JSDoc link in require-jsdoc.md
([#&#8203;20641](https://redirect.github.com/eslint/eslint/issues/20641))
(mkemna-clb)
-
[`58e4cfc`](https://redirect.github.com/eslint/eslint/commit/58e4cfc7dbf0fe40c73f09bf0ff94ad944d0ba0e)
docs: add deprecation notice partial
([#&#8203;20639](https://redirect.github.com/eslint/eslint/issues/20639))
(Milos Djermanovic)
-
[`7143dbf`](https://redirect.github.com/eslint/eslint/commit/7143dbf99df27c61edf1552da981794e99a0b2f2)
docs: update v9 migration guide for `@eslint/js` usage
([#&#8203;20540](https://redirect.github.com/eslint/eslint/issues/20540))
(fnx)
-
[`035fc4f`](https://redirect.github.com/eslint/eslint/commit/035fc4fbe506e3e4524882cf50db37a4e430adf4)
docs: note that `globalReturn` applies only with `sourceType: "script"`
([#&#8203;20630](https://redirect.github.com/eslint/eslint/issues/20630))
(Milos Djermanovic)
-
[`e972c88`](https://redirect.github.com/eslint/eslint/commit/e972c88ab7474a74191ee99ac2558b00d0427a8a)
docs: merge ESLint option descriptions into type definitions
([#&#8203;20608](https://redirect.github.com/eslint/eslint/issues/20608))
(Francesco Trotta)
-
[`7f10d84`](https://redirect.github.com/eslint/eslint/commit/7f10d8440137f0cfd75f18f4746ba6a1c621b953)
docs: Update README (GitHub Actions Bot)
-
[`aeed007`](https://redirect.github.com/eslint/eslint/commit/aeed0078ca2f73d4744cc522102178d45b5be64e)
docs: open playground link in new tab
([#&#8203;20602](https://redirect.github.com/eslint/eslint/issues/20602))
(Tanuj Kanti)
-
[`a0d1a37`](https://redirect.github.com/eslint/eslint/commit/a0d1a3772679d3d74bb860fc65b5b58678acd452)
docs: Add AI Usage Policy
([#&#8203;20510](https://redirect.github.com/eslint/eslint/issues/20510))
(Nicholas C. Zakas)

#### Chores

-
[`a9f9cce`](https://redirect.github.com/eslint/eslint/commit/a9f9cce82d80b540a0e3549d0e91c16df28740d8)
chore: update dependency eslint-plugin-unicorn to ^63.0.0
([#&#8203;20584](https://redirect.github.com/eslint/eslint/issues/20584))
(Milos Djermanovic)
-
[`1f42bd7`](https://redirect.github.com/eslint/eslint/commit/1f42bd7876ae4192cf7f7f4faf73b4ef3d2563cb)
chore: update `prettier` to 3.8.1
([#&#8203;20651](https://redirect.github.com/eslint/eslint/issues/20651))
(루밀LuMir)
-
[`c0a6f4a`](https://redirect.github.com/eslint/eslint/commit/c0a6f4a2b4169edeca2a81bf7b47783e39ade366)
chore: update dependency
[@&#8203;eslint/json](https://redirect.github.com/eslint/json) to ^1.2.0
([#&#8203;20652](https://redirect.github.com/eslint/eslint/issues/20652))
(renovate\[bot])
-
[`cc43f79`](https://redirect.github.com/eslint/eslint/commit/cc43f795c42e5ec2f19bb43b1f6d534ef2e469f3)
chore: update dependency c8 to v11
([#&#8203;20650](https://redirect.github.com/eslint/eslint/issues/20650))
(renovate\[bot])
-
[`2ce4635`](https://redirect.github.com/eslint/eslint/commit/2ce4635b036ff2665c7009afddf9c0fb2274dceb)
chore: update dependency
[@&#8203;eslint/json](https://redirect.github.com/eslint/json) to v1
([#&#8203;20649](https://redirect.github.com/eslint/eslint/issues/20649))
(renovate\[bot])
-
[`f0406ee`](https://redirect.github.com/eslint/eslint/commit/f0406eedcc3dc415babbbf6bbdb5db1eebfd487b)
chore: update dependency markdownlint-cli2 to ^0.21.0
([#&#8203;20646](https://redirect.github.com/eslint/eslint/issues/20646))
(renovate\[bot])
-
[`dbb4c95`](https://redirect.github.com/eslint/eslint/commit/dbb4c9582a00bac604d5c6ac671bb7111468a846)
chore: remove trunk
([#&#8203;20478](https://redirect.github.com/eslint/eslint/issues/20478))
(sethamus)
-
[`c672a2a`](https://redirect.github.com/eslint/eslint/commit/c672a2a70579fddf1c6ce33dfa712d705726e1c9)
test: fix CLI test for empty output file
([#&#8203;20640](https://redirect.github.com/eslint/eslint/issues/20640))
(kuldeep kumar)
-
[`c7ada24`](https://redirect.github.com/eslint/eslint/commit/c7ada2455680036bbfc42fcb1511ff28afe3c587)
ci: bump pnpm/action-setup from 4.3.0 to 4.4.0
([#&#8203;20636](https://redirect.github.com/eslint/eslint/issues/20636))
(dependabot\[bot])
-
[`07c4b8b`](https://redirect.github.com/eslint/eslint/commit/07c4b8b4a9f49145e60a3448dd57853213ed4de3)
test: fix `RuleTester` test without test runners
([#&#8203;20631](https://redirect.github.com/eslint/eslint/issues/20631))
(Francesco Trotta)
-
[`079bba7`](https://redirect.github.com/eslint/eslint/commit/079bba7ff17d0a99fdffe32bf991d005ba797fae)
test: Add tests for `isValidWithUnicodeFlag`
([#&#8203;20601](https://redirect.github.com/eslint/eslint/issues/20601))
(Manish chaudhary)
-
[`5885ae6`](https://redirect.github.com/eslint/eslint/commit/5885ae66216bcee9310bbf73786b7d7d5774aeaf)
ci: unpin Node.js 25.x in CI
([#&#8203;20615](https://redirect.github.com/eslint/eslint/issues/20615))
(Copilot)
-
[`f65e5d3`](https://redirect.github.com/eslint/eslint/commit/f65e5d3c0df65fdb317ad6d23f7ae113c5f4b6d7)
chore: update pnpm/action-setup digest to
[`b906aff`](https://redirect.github.com/eslint/eslint/commit/b906aff)
([#&#8203;20610](https://redirect.github.com/eslint/eslint/issues/20610))
(renovate\[bot])

###
[`v10.0.3`](https://redirect.github.com/eslint/eslint/releases/tag/v10.0.3)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.0.2...v10.0.3)

#### Bug Fixes

-
[`e511b58`](https://redirect.github.com/eslint/eslint/commit/e511b58d5ecd63a232b87743614867f4eaadbba4)
fix: update eslint
([#&#8203;20595](https://redirect.github.com/eslint/eslint/issues/20595))
(renovate\[bot])
-
[`f4c9cf9`](https://redirect.github.com/eslint/eslint/commit/f4c9cf9b8dc5642de555a09295933464080d722a)
fix: include variable name in `no-useless-assignment` message
([#&#8203;20581](https://redirect.github.com/eslint/eslint/issues/20581))
(sethamus)
-
[`ee9ff31`](https://redirect.github.com/eslint/eslint/commit/ee9ff31cee13712d2be2a6b5c0a4a54449fe9fe1)
fix: update dependency minimatch to ^10.2.4
([#&#8203;20562](https://redirect.github.com/eslint/eslint/issues/20562))
(Milos Djermanovic)

#### Documentation

-
[`9fc31b0`](https://redirect.github.com/eslint/eslint/commit/9fc31b03ef05abfc4f0f449b22947029d51a72f6)
docs: Update README (GitHub Actions Bot)
-
[`4efaa36`](https://redirect.github.com/eslint/eslint/commit/4efaa367c62d5a45dd21e246e4a506e11dd51758)
docs: add info box for `eslint-plugin-eslint-comments`
([#&#8203;20570](https://redirect.github.com/eslint/eslint/issues/20570))
(DesselBane)
-
[`23b2759`](https://redirect.github.com/eslint/eslint/commit/23b2759dd5cd70976ab2e8f4a1cf86ffe4b9f65d)
docs: add v10 migration guide link to Use docs index
([#&#8203;20577](https://redirect.gith

> ✂ **Note**
> 
> PR body was truncated to here.


</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:eyJjcmVhdGVkSW5WZXIiOiI0My4yMzEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIzMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Sysix <sysix@sysix-coding.de>
Co-authored-by: Cameron <cameron.clark@hey.com>
2026-06-22 20:08:46 +02:00
oxc-guard[bot] c4be770f24 release(apps): oxlint v1.71.0 && oxfmt v0.56.0 (#23707)
# Oxlint
### 💥 BREAKING CHANGES

- 36009dd allocator: [**BREAKING**] `GetAllocator::allocator` take
`&self` (#23676) (overlookmotel)

### 🚀 Features

- ff65285 linter: `no-restricted-globals` add missing upstream options
(#23663) (Sysix)
- 7b8bd89 linter/typescript: Implement suggestion for
`no-unnecessary-type-constraint` rule (#23646) (Mikhail Baev)
- 0dc2405 linter: Add schema for `eslint/no-restricted-properties`
(#23619) (Sysix)
- b638d0e linter: Add schema for `node/callback-return` (#23615) (Sysix)
- eb8bedc linter: Add schema for `import/extensions` (#23557)
(WaterWhisperer)
- 46f3625 linter: Implement node/no-sync rule (#23589) (fujitani sora)
- b01739a linter: Add schema for `unicorn/numeric-separators-style`
(#23554) (Mikhail Baev)
- 68afd2a linter/node: Implement `no-mixed-requires` rule (#23539)
(fujitani sora)
- 59d8893 linter: `unicorn/numeric-separators-style` support missing
options (#23524) (Sysix)
- a421215 linter: Add schema for `eslint/prefer-destructuring` (#23410)
(WaterWhisperer)
- 84438be linter/jsdoc: Added missing options to
`require-param-description` (#23416) (kapobajza)
- c145b72 linter/jsdoc/require-param-type: Implement fixer (#23513)
(camc314)
- 51910df linter/jsdoc: Add missing options to `require-param-type` rule
(#23418) (kapobajza)
- e90925f linter/unicorn: Implement prefer-number-coercion rule (#23497)
(Shekhu☺️)
- dd1c866 linter/vue: Implement no-async-in-computed-properties rule
(#23493) (bab)
- b02444e linter: Add schema for `react/jsx-no-script-url` (#23475)
(WaterWhisperer)
- 53509a8 minifier: Treeshake pure typed arrays and Set/Map array
literals (#23469) (Dunqing)
- a8dce46 linter/unicorn: Implement `max-nested-calls` rule (#23461)
(arieleli01212)

### 🐛 Bug Fixes

- b1948a1 linter/radix: Avoid panic on `parseInt` with a spread radix
argument (#23623) (Jerry Zhao)
- f28ccfd linter/prefer-query-selector: Use a compound selector for
multiple classes (#23628) (Jerry Zhao)
- 13f2970 linter/prefer-numeric-literals: Avoid panic on `parseInt` with
a spread radix argument (#23624) (Jerry Zhao)
- 57612b3 linter: Report invalid capitalized-comments ignore patterns
(#23608) (camc314)
- 800ee2a linter/consistent-vitest-vi: Preserve import aliases when
rewriting the import (#23568) (Yunfei He)
- f78b5e1 linter/consistent-indexed-object-style: Don't leak a stray
comma into the value type (#23566) (Yunfei He)
- 6b104e8 linter/radix: Detect a trailing comma only after the argument
(#23569) (Yunfei He)
- 2de20cb linter/unicorn/prefer-at: Correct two-argument `slice().pop()`
index (#23565) (Yunfei He)
- de778ec linter: `unicorn/numeric-separators-style` preserve dot for
floats without decial part (#23553) (Sysix)
- 651027c linter/curly: Remove only the block's own braces (#23580)
(Yunfei He)
- 687e835 linter/array-type: Parenthesize a conditional-type element
(#23579) (Yunfei He)
- 9c80dff linter/unicorn/no-unnecessary-await: Don't paste operators
into invalid syntax (#23556) (Yunfei He)
- 46e1463 linter/no-compare-neg-zero: Delete the `-` of a parenthesized
`-0` (#23578) (Yunfei He)
- d172a97 linter/unicorn/prefer-math-trunk: Skip fixer for LHS with side
effects (#23548) (camc314)
- 1c3a9bd linter/unicorn/prefer-negative-index: Don't report
`Array#with` (#23518) (Yunfei He)
- c17db5d linter/unicorn/prefer-spread: Don't report `.slice()` on
non-array receivers (#23520) (Yunfei He)
- 9cd0c2f linter/unicorn/prefer-date-now: Keep `BigInt` wrapper when
fixing `BigInt(new Date())` (#23523) (Yunfei He)
- 16bb890 linter/unicorn/prefer-array-flat: Skip non-array `flatMap`
receivers (#23527) (Yunfei He)
- 3e6f90f linter/unicorn/no-zero-fractions: Insert a space after any
preceding keyword (#23529) (Yunfei He)
- 79a7d69 linter/eslint/no-useless-assignment: Handle exceptional
control-flow paths (#23544) (camc314)
- e8e2741 linter/unicorn/prefer-math-min-max: Preserve operand source
text in the fix (#23533) (Yunfei He)
- f592154 linter/react/display-name: Ignore lowercase jsx helpers
(#23510) (camc314)
- df7612f linter/jsx-a11y/no-noninteractive-element-to-interactive-role:
Allow custom roles config (#23507) (camc314)
- 924b931 linter/unicorn/prefer-at: Handle checking all indexes
correctly (#23504) (camc314)
- ca9686b linter/unicorn/prefer-at: Report zero indexes (#23503)
(camc314)
- e96a4e3 linter/unicorn/explicit-length-check: Ignore optional chains
(#23487) (camc314)
- a303c23 linter/jsx-a11y: Align `anchor-is-valid` config with upstream
(#23446) (camc314)
- f27a6d1 linter: False positives with non `*.setTimeout` call in
`no-confusing-set-timeout` (#23444) (camc314)

### ⚡ Performance

- 8e0dd65 linter: Emit RuleEnum dispatch match once instead of per
timing branch (#23499) (Boshen)
- d5c7d99 linter/expect-expect: Avoid recompiling matches on every
traversal (#23593) (camc314)
- f191520 linter/no-useless-spread: Avoid collecting `Vec` before
iterating (#23546) (camc314)
- 79340d1 linter: Stream React lifecycle ancestors (#23545) (camc314)
- 1923169 linter/eslint/max-classes: Gate rule by rule config threshold
(#23509) (camc314)
- 3f60de3 linter: Use bucketed dispatch for all files (#23452) (camc314)
- 3699971
linter/typescript/no-unnecessary-parameter-property-assignment: Avoid
temporary vec allocations (#23492) (camc314)
- 4ef0ceb linter/eslint/no-useless-switch-case: Avoid temporary vec
allocations (#23489) (camc314)
- 2e09dd3 linter: Avoid JSX fragment child collections (#23486)
(camc314)
- f30a64c linter/oxc/branches-sharing-code: Borrow shared branch
suggestion text (#23484) (camc314)
- 097a317 linter/eslint/no-control-regex: Retain control regex
candidates in place (#23482) (camc314)
- b3a093d linter: Reuse rule dispatch buckets (#23450) (camc314)
- 9f1a985 oxlint: Start Tokio only for LSP (#23447) (camc314)

### 📚 Documentation

- 9e219de linter/plugins: Update usage instruction (#23495) (Tony)
- b50bf4d linter: Remove manually written options doc for
`eslint/arrow-body-style` (#23490) (Mikhail Baev)
# Oxfmt
### 💥 BREAKING CHANGES

- 36009dd allocator: [**BREAKING**] `GetAllocator::allocator` take
`&self` (#23676) (overlookmotel)

### 🐛 Bug Fixes

- f21ed2c formatter_json: Normalize CRLF for suppressed text (#23702)
(leaysgur)
- 7cd1737 formatter: Normalize CRLF for suppressed text (#23701)
(leaysgur)
- a36e444 formatter: Member chain panic when tail is merged with comment
in dev build (#23698) (leaysgur)
- 600d306 formatter: Preserve parens with default export and type cast
(#23697) (leaysgur)
- 61290f2 formatter: Single-member intersection/union type with comment
formatting (#21915) (Leonabcd123)
- 5a1b0b4 formatter: Parenthesize a type assertion used as the base of
`**` (#23633) (Jerry Zhao)
- 91827e2 formatter: Use `Ordering::reverse()` with `order: desc` for
idempotency (#23543) (leaysgur)
- 8fa7394 formatter_json: Handle wrapped error span (#23472) (leaysgur)
- 37a34a1 oxfmt/lsp: Avoid newlines line ending changes (#23463) (Sysix)

### ⚡ Performance

- 80f1697 formatter: Avoid arena copy for already-lowercase bigint
literals (#23534) (Yunfei He)
- 1a40b71 formatter: Avoid arena copy for borrowed numeric-literal text
(#23512) (Yunfei He)
- 12e4451 formatter: Avoid arena copy for borrowed string-literal text
(#23465) (Yunfei He)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2026-06-22 19:49:06 +08:00
leaysgur 439214b97c chore(oxfmt): update prettier-plugin-svelte@4.1.1 (#23696) 2026-06-22 01:11:28 +00:00
Sysix b1b83d5b9f refactor(linter): remove second | undefined from DummyRuleMap ts generation (#23684) 2026-06-21 13:54:06 +00:00
Sysix 0dc2405411 feat(linter): add schema for eslint/no-restricted-properties (#23619) 2026-06-20 20:38:31 +00:00
Sysix b638d0ee1d feat(linter): add schema for node/callback-return (#23615)
- Avoided looping over `array` of `array`, we only want to know the first level of structure for detecting a tuple config
- refactored some code and introduced a `.clone()` at the beginning. Hope this is fine for the rule doc code path. Feeling sometimes stupid without AI quick fixes :')
- enabled `node-callback-return` schema, which is the only rule that accepts a array as a config
  - https://github.com/eslint-community/eslint-plugin-n/blob/master/docs/rules/callback-return.md
2026-06-20 20:38:31 +00:00
Sysix 6d355ab8b3 refactor(linter): remove number_as_object_schema helper (#23614)
The helper generated just `number`. With the `Enum` approach, the generator creates a `u32` with `minimum: 0.0` for the JSON schema.
2026-06-20 20:28:54 +00:00
WaterWhisperer eb8bedc2fb feat(linter): add schema for import/extensions (#23557)
Adds verified config schema generation for `import/extensions`.

Refs #22955.
2026-06-19 10:31:17 +02:00
fujitani sora 46f362530d feat(linter): implement node/no-sync rule (#23589)
## Summary

- Implement `node/no-sync` from eslint-plugin-n to disallow synchronous
Node.js method calls (names ending with `Sync`).
- Support `allowAtRootLevel` and `ignores` options matching the upstream
rule's string-based configuration.

Closes part of #493.

## Test plan

- [x] `cargo test -p oxc_linter no_sync`
- [x] CI

---------

Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-06-18 14:04:46 +01:00
renovate db620239d4 chore(deps): update oxc to ^0.137.0 (#23595)
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.136.0` → `^0.137.0`](https://renovatebot.com/diffs/npm/@oxc-project%2ftypes/0.136.0/0.137.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@oxc-project%2ftypes/0.137.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@oxc-project%2ftypes/0.137.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@oxc-project%2ftypes/0.136.0/0.137.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@oxc-project%2ftypes/0.136.0/0.137.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.136.0` → `^0.137.0`](https://renovatebot.com/diffs/npm/oxc-parser/0.136.0/0.137.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/oxc-parser/0.137.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxc-parser/0.137.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxc-parser/0.136.0/0.137.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxc-parser/0.136.0/0.137.0?slim=true) |

---

### Release Notes

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

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

##### 💥 BREAKING CHANGES

- [`7a76cd3`](https://redirect.github.com/oxc-project/oxc/commit/7a76cd3) estree: \[**BREAKING**] Make whether to include TS fields a runtime option ([#&#8203;23574](https://redirect.github.com/oxc-project/oxc/issues/23574)) (overlookmotel)

##### 🚀 Features

- [`53509a8`](https://redirect.github.com/oxc-project/oxc/commit/53509a8) minifier: Treeshake pure typed arrays and Set/Map array literals ([#&#8203;23469](https://redirect.github.com/oxc-project/oxc/issues/23469)) (Dunqing)

##### 🐛 Bug Fixes

- [`ae02b4e`](https://redirect.github.com/oxc-project/oxc/commit/ae02b4e) ci/parser: Use `minimal` for vitest reporter ([#&#8203;23457](https://redirect.github.com/oxc-project/oxc/issues/23457)) (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:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
2026-06-18 10:51:18 +00:00
Mikhail Baev b01739ade3 feat(linter): add schema for unicorn/numeric-separators-style (#23554)
issue #22955
2026-06-17 19:06:34 +02:00
fujitani sora 68afd2a1f7 feat(linter/node): implement no-mixed-requires rule (#23539)
## Summary

- Implement `n/no-mixed-requires` from eslint-plugin-n (#493)
- Disallows mixing `require()` declarations with other variable
declarations in the same `var` statement
- Supports `grouping` and `allowCall` options (including legacy boolean
config for grouping)

## Test plan

- [x] `cargo test -p oxc_linter no_mixed_requires`
- [x] Snapshot tests from upstream eslint-plugin-n test cases

---------

Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-06-17 15:01:10 +01:00
Sysix b08e9f5b9e refactor(linter): re-enable schema for jsx_a11y/no-noninteractive-element-interactions (#23522) 2026-06-17 10:15:19 +00:00
Sysix 0338b49476 refactor(linter): use strictIndexSignatures when generating TS config (#23521)
This PR enables `strictIndexSignatures` option when generating `oxlint` config type declarations, allowing us to implement rule config schemas where the generation would produce a TS error.
See https://github.com/oxc-project/oxc/issues/23299 for the problem.

The generated code now appends `undefined` for some rule config options.

The docs of the option:

```
    /**
     * Append all index signatures with `| undefined` so that they are strictly typed.
     *
     * This is required to be compatible with `strictNullChecks`.
     */
    strictIndexSignatures: boolean;
```
2026-06-17 10:02:46 +00:00
WaterWhisperer a4212152da feat(linter): add schema for eslint/prefer-destructuring (#23410)
Adds verified config schema generation for
`eslint/prefer-destructuring`.

Refs #22955.

---------

Signed-off-by: Alexander S. <sysix@sysix-coding.de>
Co-authored-by: Alexander S. <sysix@sysix-coding.de>
Co-authored-by: Cameron <cameron.clark@hey.com>
Co-authored-by: Cameron <cclark@cloudflare.com>
2026-06-16 18:34:17 +02:00
kapobajza 84438bebab feat(linter/jsdoc): Added missing options to require-param-description (#23416)
Closes #23370

### AI usage disclosure

I used Claude Code to assist me with: port the upstream test cases, wire
up the config/fixer, and generate this description.

### Summary

Adds the missing `setDefaultDestructuredRootDescription` and
`defaultDestructuredRootDescription` options to the
`jsdoc/require-param-description` rule, matching the upstream
`eslint-plugin-jsdoc` rule.

When `setDefaultDestructuredRootDescription` is `true`, a destructured
root `@param` that is missing a description is reported with a dedicated
"Missing root description for @param." message and **auto-fixed** by
inserting a default description. The inserted text defaults to `"The
root object"` and can be customized via
`defaultDestructuredRootDescription`.

---------

Co-authored-by: Kapobajza <kapobajza@gmail.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-06-16 16:57:51 +01:00
kapobajza 51910df66e feat(linter/jsdoc): Add missing options to require-param-type rule (#23418)
Closes #23371

### AI usage disclosure

I used Claude Code to generate this PR description.

### Summary

Adds configuration support and a fixer to the `jsdoc/require-param-type`
rule, matching `eslint-plugin-jsdoc`.

**New options:**
- `setDefaultDestructuredRootType` (default `false`). When `true`,
auto-fixes a missing type on a destructured root `@param`.
- `defaultDestructuredRootType` (default `"object"`). The type string
used by that fix.

---------

Co-authored-by: Kapobajza <kapobajza@gmail.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-06-16 16:42:44 +01:00
Shekhu☺️ e90925ff52 feat(linter/unicorn): implement prefer-number-coercion rule (#23497)
Add unicorn/prefer-number-coercion to prefer Number() over parseFloat()
and Math.trunc(Number()) over base-10 parseInt(), with suggestion fixes
and tests for radix, arity, shadowing, computed members, and nested
calls.

Refs #684

---------

Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-06-16 14:47:29 +01:00
bab dd1c866b3f feat(linter/vue): implement no-async-in-computed-properties rule (#23493)
Implements `vue/no-async-in-computed-properties` from eslint-plugin-vue.

Part of #11440.

eslint-plugin-vue reference:
https://eslint.vuejs.org/rules/no-async-in-computed-properties.html

The computed getter detection helpers (`find_computed_context` /
`get_computed_getter_context` / `is_vue_computed_call`) are copied from
`no-side-effects-in-computed-properties` (#23282); I'll extract them
into a shared util in a follow-up PR (also covering
`return-in-computed-property`, which has the same logic).

Note: one upstream valid test (`return z.a?.['b'].[c].d.method()...`)
has a syntax typo — `.[c]` is invalid ECMAScript (`.` only accepts
IdentifierName, not `[`). espree parses it leniently but oxc's strict
parser rejects it. Changed to `?.[c]` here to preserve the test's intent
(root identifier `z` matches `ignoredObjectNames: ['z']`).

---------

Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-06-16 14:17:19 +01:00
camc314 3f60de33a5 perf(linter): use bucketed dispatch for all files (#23452)
- Split from #23409.
- Uses bucketed linter rule dispatch for all optimized runs, not only files above the large-node threshold.
- Removes the separate small-file optimized path that walked every AST node once per rule.

**Details**
The previous threshold existed because bucketed dispatch allocated bucket storage per file, so it only paid off for very large ASTs. After #23450, those buckets are reused through a thread-local `RuleBuckets` buffer, so the allocation cost no longer needs to gate the dispatch strategy.

This PR makes the optimized path consistently node-major:

```text
before: for each rule -> walk all nodes -> check whether the rule cares about the node type
after:  for each node -> run only rules bucketed for that node type
```

The debug unoptimized reference path is left unchanged, so it can still compare diagnostics against the optimized path.

## Flamegraph

Before:

<img width="1378" height="707" alt="Screenshot 2026-06-15 at 15 01 49" src="https://github.com/user-attachments/assets/e5b10680-2ccd-48f9-a7c1-5c284984fda7" />

After:

<img width="1378" height="707" alt="Screenshot 2026-06-15 at 15 01 40" src="https://github.com/user-attachments/assets/487e3669-ff1e-4ba4-8bf7-a6d2bad159dc" />

The before profile still shows time in the small-file rule iteration path, where each rule repeatedly walks the AST and checks node-type filters. The after profile shifts optimized dispatch to a single AST traversal using the reused rule buckets.

Co-authored-by: Boshen <boshenc@gmail.com>
2026-06-16 12:52:29 +00:00