Skip to content

docs: add TypeScript config guidance for MCP server#20796

Merged
fasttime merged 7 commits into
eslint:mainfrom
pierluigilenoci:docs/mcp-server-ts-config
Jun 18, 2026
Merged

docs: add TypeScript config guidance for MCP server#20796
fasttime merged 7 commits into
eslint:mainfrom
pierluigilenoci:docs/mcp-server-ts-config

Conversation

@pierluigilenoci

@pierluigilenoci pierluigilenoci commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a "Using TypeScript Configuration Files" section to the MCP server documentation explaining how to get the MCP server working with eslint.config.ts files.

Two approaches are documented:

  • Option A: Local installation with jiti — install @eslint/mcp and jiti as project dev dependencies so npx @eslint/mcp resolves jiti from the shared node_modules directory. Includes a Yarn PnP note recommending nodeLinker: node-modules (other PnP modes may not work as expected).
  • Option B: Native Node.js TypeScript support — for Node.js >= 22.13.0, use ESLINT_FLAGS=unstable_native_nodejs_ts_config and NODE_OPTIONS=--experimental-transform-types environment variables in the MCP configuration.

Configuration examples are provided for VS Code, Cursor, and Windsurf.

fixes #20290

Changes

  • docs/src/use/mcp.md: Add "Using TypeScript Configuration Files" section with Option A (jiti + local install, Yarn PnP note) and Option B (native Node.js TS support). Import npm_tabs macro for install command rendering.

Status: Draft — CI iterating. Not yet ready for review.

@pierluigilenoci pierluigilenoci requested a review from a team as a code owner April 24, 2026 15:17
@github-project-automation github-project-automation Bot moved this to Needs Triage in Triage Apr 24, 2026
@eslint-github-bot eslint-github-bot Bot added the documentation Relates to ESLint's documentation label Apr 24, 2026
@linux-foundation-easycla

linux-foundation-easycla Bot commented Apr 24, 2026

Copy link
Copy Markdown

CLA Signed
The committers listed above are authorized under a signed CLA.

@netlify

netlify Bot commented Apr 24, 2026

Copy link
Copy Markdown

Deploy Preview for docs-eslint canceled.

Name Link
🔨 Latest commit 31862d4
🔍 Latest deploy log https://app.netlify.com/projects/docs-eslint/deploys/6a3324be4fe8f40008e19b8a

@lumirlumir lumirlumir moved this from Needs Triage to Triaging in Triage Apr 26, 2026

@lumirlumir lumirlumir left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR. There’s currently a CI error related to npm_tabs. Could you take a look?

@pierluigilenoci

Copy link
Copy Markdown
Contributor Author

@lumirlumir Thanks for catching that! The npm_tabs issue was already fixed in the second commit (ac9a1fd) — I had forgotten the import macro in the initial commit. All CI checks are green now and the deploy preview renders the tabbed install commands correctly.

Could you re-review when you have a chance?

Add a "TypeScript configuration" tab to the MCP server documentation
page showing how to configure ESLint MCP server with typescript-eslint.

Fixes eslint/eslint.org#xxx

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
@pierluigilenoci pierluigilenoci force-pushed the docs/mcp-server-ts-config branch from ac9a1fd to 3c0ff9f Compare May 3, 2026 21:25
Comment thread docs/src/use/mcp.md Outdated

### Option A: Install jiti (Node.js)

If you use Node.js and have [`jiti`](https://github.com/unjs/jiti) installed as a project dependency, the MCP server will use it automatically. No changes to the MCP configuration are needed — just make sure `jiti` is installed:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the pull request @pierluigilenoci. Unfortunately, installing jiti locally in a project's node_modules isn't sufficient when @eslint/mcp@latest is started via npx. When you run it with npx, npm installs @eslint/mcp and its dependencies (i.e. eslint) into a temporary directory in the npm cache. Because the process runs from that location, Node.js module resolution won't see the project's local node_modules, so a locally installed jiti won't be used, and you will still get an error like:

The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.

In other words, to use a local jiti installation, you also need to install @eslint/mcp locally so it resolves dependencies from the project. That defeats the purpose of using @eslint/mcp@latest via npx to always pull the newest version from the npm registry.

@pierluigilenoci

Copy link
Copy Markdown
Contributor Author

Thanks @fasttime — that's a great catch. You're right that npx installs to a temp directory, so a locally installed jiti won't be resolved.

Would you recommend one of these alternatives for the docs?

  1. Document local installation of @eslint/mcp (instead of npx) so that project-local jiti is resolved
  2. Suggest a different approach entirely — e.g., a wrapper script or a global install path

Happy to revise the PR in whichever direction makes most sense for the project. Thanks!

@fasttime

fasttime commented May 6, 2026

Copy link
Copy Markdown
Member

Would you recommend one of these alternatives for the docs?

  1. Document local installation of @eslint/mcp (instead of npx) so that project-local jiti is resolved

That could be a useful alternative to running npx @eslint/mcp@latest when jiti is required. The only drawback is that you won't get the latest version of the MCP server automatically.

  1. Suggest a different approach entirely — e.g., a wrapper script or a global install path

Those could also be useful if we can figure out how to make them work reliably across environments.

The challenge here is not documenting a particular solution, but finding one that works consistently in the first place. Running the MCP server with jiti is still an open issue, and some of the previously suggested approaches didn't hold up on closer look. If you (or anyone) is willing to dig further and share what you find, that would help a lot.

When run via npx @eslint/mcp@latest, ESLint is installed into a
temporary directory and cannot resolve jiti from the project's
node_modules. Fix by documenting local installation of both packages
so that standard Node.js module resolution finds jiti.

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
@pierluigilenoci

Copy link
Copy Markdown
Contributor Author

Thanks @fasttime — great feedback. I've updated Option A to address the npx resolution issue:

  • Install both @eslint/mcp and jiti locally (npm install --save-dev @eslint/mcp jiti)
  • Use npx @eslint/mcp (without @latest) so npx resolves the local binary instead of downloading to a temp directory
  • Added a brief explanation of why this works (shared node_modules → standard module resolution finds jiti)

This way ESLint within the local @eslint/mcp can resolve jiti from the project's node_modules, which doesn't happen with npx @eslint/mcp@latest (installs to an isolated temp dir).

The trade-off is that users need to manually update @eslint/mcp to get new versions, but TypeScript config users already manage jiti as a dev dependency so this fits their workflow.

@fasttime fasttime left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the update! I left a couple of notes.

Comment thread docs/src/use/mcp.md
Comment on lines +145 to +149
{{ npm_tabs({
command: "install",
packages: ["@eslint/mcp", "jiti"],
args: ["--save-dev"]
}) }}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It makes sense to use the template since not all projects use npm as a package manager, but I think we also need to test the MCP server when the packages are installed with yarn, pnpm or bun in this scenario.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I attempted to install the dependencies using Yarn (latest version v4.14.1), which enables Plug'n'Play mode by default and therefore does not create a local node_modules directory. When I start the MCP server in VS Code it launches normally, but it fails as soon as it's asked to lint a file with ESLint:

The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.

This suggests that this kind of installation (package using Yarn in PnP mode) is not supported when running npx @eslint/mcp. I will create a repro and post it here when I have a chance (the tests are time-consuming, so it may take a while).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread docs/src/use/mcp.md Outdated
Comment thread docs/src/use/mcp.md Outdated
Comment on lines +238 to +240
::: tip
Deno and Bun support TypeScript natively, so no additional configuration is needed if you use either of these runtimes.
:::

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIRC, only npx is supported when running @eslint/mcp. It that case, it's better to remove the tip.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I'm not sure if there was a decision to only support npx, but it's recommended (see eslint/rewrite#239 (comment)). So probably it's still better not to encourage using alternative runtimes for the time being.

@pierluigilenoci

Copy link
Copy Markdown
Contributor Author

Hi — friendly follow-up. All checks are passing and the PR is ready for review. Would you be able to take a look when you get a chance? Thank you!

@fasttime

Copy link
Copy Markdown
Member

@pierluigilenoci please see my above comments.

- Merge Cursor and Windsurf configuration sections (identical JSON,
  only the file path differs)
- Remove tip about Deno/Bun alternative runtimes (only npx is
  supported for @eslint/mcp)

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
@pierluigilenoci

Copy link
Copy Markdown
Contributor Author

@fasttime Thanks for the thorough review! I've pushed a commit addressing your feedback:

  1. Merged Cursor/Windsurf sections — Since the JSON configuration is identical (only the file path differs), I've combined them into a single "Cursor / Windsurf" heading in both Option A and Option B.

  2. Removed the Deno/Bun alternative runtimes tip — Understood that only npx is supported for @eslint/mcp at this time.

  3. Option A (jiti + local install) — This was already updated in the previous commit to document installing @eslint/mcp locally (not via npx @latest) so that jiti resolves from the shared node_modules. Let me know if the current wording needs further refinement.

Regarding your note about testing with yarn, pnpm, and bun for the local install scenario (Option A) — I'll verify that the npm_tabs template approach works correctly when packages are installed with those package managers. Would you like me to add any specific notes about package manager compatibility, or is this something to validate separately?

@fasttime fasttime left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding your note about testing with yarn, pnpm, and bun for the local install scenario (Option A) — I'll verify that the npm_tabs template approach works correctly when packages are installed with those package managers. Would you like me to add any specific notes about package manager compatibility, or is this something to validate separately?

Thanks for the update @pierluigilenoci. It would be great if you could verify whether the local installation approach works or doesn't work with package managers other than npm (we can collect the results in the discussion first, and add notes to the docs later). I've started testing with Yarn v4 and my impression is that this approach would not work in that particular scenario, but please double-check if you have a chance.

Comment thread docs/src/use/mcp.md
Comment on lines +145 to +149
{{ npm_tabs({
command: "install",
packages: ["@eslint/mcp", "jiti"],
args: ["--save-dev"]
}) }}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I attempted to install the dependencies using Yarn (latest version v4.14.1), which enables Plug'n'Play mode by default and therefore does not create a local node_modules directory. When I start the MCP server in VS Code it launches normally, but it fails as soon as it's asked to lint a file with ESLint:

The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.

This suggests that this kind of installation (package using Yarn in PnP mode) is not supported when running npx @eslint/mcp. I will create a repro and post it here when I have a chance (the tests are time-consuming, so it may take a while).

@pierluigilenoci

Copy link
Copy Markdown
Contributor Author

@fasttime Thanks for testing with Yarn v4 and sharing the findings! I did some research on the module resolution behavior of each package manager when used with npx @eslint/mcp (local install, no @latest):

Summary of expected behavior:

Package Manager node_modules? Local npx @eslint/mcp resolves jiti? Notes
npm Yes (flat) Yes Standard resolution works
Yarn v4 (PnP, default) No No PnP requires patched resolution; npx bypasses it
Yarn v4 (nodeLinker: node-modules) Yes (hoisted) Likely yes Behaves like npm/Yarn Classic
pnpm Yes (symlinked, non-flat) Needs testing Direct deps symlinked to root node_modules/; npx resolves local binary from .pnpm/ — unclear if Node.js traversal finds sibling deps
Bun Yes (flat) Likely yes Flat layout similar to npm

Analysis:

  • Yarn v4 PnP fails because there's no node_modules/ at all — Node.js standard require() cannot find jiti. This matches your finding.
  • pnpm is the uncertain case: it creates node_modules/ but with a nested symlink structure (.pnpm/ store). When npx resolves the local @eslint/mcp binary, the actual file lives at node_modules/.pnpm/@eslint+mcp@.../node_modules/@eslint/mcp/. From there, Node.js resolution walks up to .pnpm/@eslint+mcp@.../node_modules/ which should contain symlinks to peer/optional deps — but jiti might not be there unless pnpm hoists it or it's declared as a peer dependency of @eslint/mcp.
  • Bun uses a flat node_modules/ layout and should behave identically to npm.

I'll set up test environments for pnpm and bun to verify empirically and report back. For Yarn v4, would it be worth documenting that users need nodeLinker: node-modules in .yarnrc.yml for this approach to work, or should we consider that scenario unsupported for now?

Yarn Plug'n'Play (default since Yarn 2) does not create a node_modules
directory, so 'npx @eslint/mcp' falls back to a temporary install where
jiti cannot be resolved. Document two workarounds: run the server via
'yarn run -B mcp' so PnP can resolve jiti from the project's dependency
graph, or switch the project's linker to node-modules in .yarnrc.yml.

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
@pierluigilenoci

Copy link
Copy Markdown
Contributor Author

@fasttime good catch — verified this on Yarn v4.6.0:

  • nodeLinker: node-modules: Option A works as documented (npx finds the local binary, jiti resolves from node_modules).
  • PnP (default): npx @eslint/mcp fails because npx ignores Yarn's PnP resolver and downloads the package to npm's cache, where jiti is absent.

Pushed b80b4bdcd which adds a Yarn Plug'n'Play (PnP) subsection under Option A documenting two workarounds:

  1. Run the server through yarn run -B mcp so PnP resolves jiti from the project's dependency graph (verified working).
  2. Switch the project to nodeLinker: node-modules in .yarnrc.yml.

PTAL.

@fasttime fasttime moved this from Triaging to Implementing in Triage May 29, 2026
@fasttime fasttime added accepted There is consensus among the team that this change meets the criteria for inclusion contributor pool labels May 29, 2026
Comment thread docs/src/use/mcp.md Outdated
Drop the 'yarn run -B mcp' workaround and recommend only setting
nodeLinker: node-modules for npx @eslint/mcp. Note that other
Yarn PnP modes may not work as expected.

Per @fasttime's review feedback.

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>

@fasttime fasttime left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the update. For pnpm, ESLint's official recommendation is to set auto-install-peers=true and node-linker=hoisted in the config:

eslint/README.md

Lines 66 to 75 in f99b47a

### pnpm Installation
To use ESLint with pnpm, we recommend setting up a `.npmrc` file with at least the following settings:
```text
auto-install-peers=true
node-linker=hoisted
```
This ensures that pnpm installs dependencies in a way that is more compatible with npm and is less likely to produce errors.

With those settings, the MCP server seems to work well (repro).

Comment thread docs/src/use/mcp.md

#### Yarn Plug'n'Play (PnP)

Yarn 2+ uses Plug'n'Play by default and does not create a `node_modules` directory. To run `npx @eslint/mcp` in a Yarn project, set `nodeLinker` to `node-modules` in your `.yarnrc.yml` and run `yarn install` again:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BTW, nodeLinker: pnpm seems to work also fine (repro). Only the setting nodeLinker: pnp, i.e. the default, is problematic.

fasttime
fasttime previously approved these changes Jun 5, 2026

@fasttime fasttime left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks! For reference, here is a list of repro projects I set up to test the MCP server with the different package managers:

Leaving open for @lumirlumir to finish reviewing.

@fasttime fasttime moved this from Implementing to Second Review Needed in Triage Jun 5, 2026
Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
@pierluigilenoci

Copy link
Copy Markdown
Contributor Author

@fasttime Good catch — addressed in 95788fc. Updated the sentence to: The nodeLinker: pnpm setting also works. Only the default Plug'n'Play (nodeLinker: pnp) mode is not supported with npx @eslint/mcp. Thanks for the repro and thorough testing!

@pierluigilenoci

Copy link
Copy Markdown
Contributor Author

@fasttime — heads up: your approval was auto-dismissed when the last commit (95788fc) landed. Could you re-approve when you get a chance? Thank you!

fasttime
fasttime previously approved these changes Jun 6, 2026

@lumirlumir lumirlumir left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’m sorry for the delay. I missed that I’d been pinged.

I’ve left one small suggestion, as there was a previous issue about it. Otherwise LGTM. Thanks everyone for the hard work on this PR.

Comment thread docs/src/use/mcp.md Outdated

Note: MCP tool calls in Windsurf will consume credits regardless of success or failure.

## Using TypeScript Configuration Files

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Using TypeScript Configuration Files
## Use TypeScript Configuration Files

As there was a previous issue about using non-gerund forms for headings in #16578, I think Use would be nicer here.

@pierluigilenoci

Copy link
Copy Markdown
Contributor Author

Done — changed 'Using TypeScript Configuration Files' to 'Use TypeScript Configuration Files' per ESLint heading conventions (#16578). @lumirlumir @fasttime — could you re-review when you have a chance? Thank you!

Signed-off-by: Pierluigi Lenoci <pierlugi.lenoci@gmail.com>
@pierluigilenoci pierluigilenoci force-pushed the docs/mcp-server-ts-config branch from 294c7ef to 31862d4 Compare June 17, 2026 22:50
@fasttime fasttime dismissed lumirlumir’s stale review June 18, 2026 15:15

Feedback addressed.

@fasttime fasttime merged commit 8890c2d into eslint:main Jun 18, 2026
36 checks passed
@github-project-automation github-project-automation Bot moved this from Second Review Needed to Complete in Triage Jun 18, 2026
bjw-s added a commit to bjw-s-labs/action-changed-files that referenced this pull request Jun 28, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@rollup/rollup-linux-x64-gnu](https://rollupjs.org/) ([source](https://github.com/rollup/rollup)) | [`4.62.0` → `4.62.2`](https://renovatebot.com/diffs/npm/@rollup%2frollup-linux-x64-gnu/4.62.0/4.62.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@rollup%2frollup-linux-x64-gnu/4.62.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@rollup%2frollup-linux-x64-gnu/4.62.0/4.62.2?slim=true) |
| [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | [`8.61.1` → `8.62.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.61.1/8.62.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2feslint-plugin/8.62.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2feslint-plugin/8.61.1/8.62.0?slim=true) |
| [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | [`8.61.1` → `8.62.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.61.1/8.62.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/8.62.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/8.61.1/8.62.0?slim=true) |
| [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | [`10.5.0` → `10.6.0`](https://renovatebot.com/diffs/npm/eslint/10.5.0/10.6.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/10.6.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/10.5.0/10.6.0?slim=true) |
| [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) | [`29.15.2` → `29.15.3`](https://renovatebot.com/diffs/npm/eslint-plugin-jest/29.15.2/29.15.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-jest/29.15.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-jest/29.15.2/29.15.3?slim=true) |
| [globals](https://github.com/sindresorhus/globals) | [`17.6.0` → `17.7.0`](https://renovatebot.com/diffs/npm/globals/17.6.0/17.7.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/globals/17.7.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/globals/17.6.0/17.7.0?slim=true) |
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | [`3.8.4` → `3.9.1`](https://renovatebot.com/diffs/npm/prettier/3.8.4/3.9.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.9.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.8.4/3.9.1?slim=true) |
| [rollup](https://rollupjs.org/) ([source](https://github.com/rollup/rollup)) | [`4.62.0` → `4.62.2`](https://renovatebot.com/diffs/npm/rollup/4.62.0/4.62.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/rollup/4.62.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/rollup/4.62.0/4.62.2?slim=true) |

---

### Release Notes

<details>
<summary>rollup/rollup (@&#8203;rollup/rollup-linux-x64-gnu)</summary>

### [`v4.62.2`](https://github.com/rollup/rollup/blob/HEAD/CHANGELOG.md#4622)

[Compare Source](rollup/rollup@v4.62.1...v4.62.2)

*2026-06-19*

##### Bug Fixes

- Do not add spurious side-effect-free external imports to chunks when using minChunkSize ([#&#8203;6411](rollup/rollup#6411))

##### Pull Requests

- [#&#8203;6411](rollup/rollup#6411): Skip side-effect-free external imports when hoisting is disabled ([@&#8203;morgan-coded](https://github.com/morgan-coded), [@&#8203;lukastaegert](https://github.com/lukastaegert))
- [#&#8203;6416](rollup/rollup#6416): refactor(rust/parser\_ast): extract property AstConverter write buffer kind logic to new method ([@&#8203;fabianbernhart](https://github.com/fabianbernhart), [@&#8203;lukastaegert](https://github.com/lukastaegert))

### [`v4.62.1`](https://github.com/rollup/rollup/blob/HEAD/CHANGELOG.md#4621)

[Compare Source](rollup/rollup@v4.62.0...v4.62.1)

*2026-06-19*

##### Bug Fixes

- Preserve multipart file extensions when deconflicting output chunks ([#&#8203;6408](rollup/rollup#6408))
- Fix an issue where getLogFilter would match additional logs ([#&#8203;6415](rollup/rollup#6415))

##### Pull Requests

- [#&#8203;6393](rollup/rollup#6393): Use import attributes for importing JSON ([@&#8203;selfisekai](https://github.com/selfisekai), [@&#8203;lukastaegert](https://github.com/lukastaegert))
- [#&#8203;6408](rollup/rollup#6408): fix: insert conflict numbers before first extension in multi-extension filenames ([@&#8203;LeSingh1](https://github.com/LeSingh1), [@&#8203;lukastaegert](https://github.com/lukastaegert))
- [#&#8203;6415](rollup/rollup#6415): fix: advance value past wildcard prefix before suffix check in getLogFilter ([@&#8203;JSap0914](https://github.com/JSap0914), [@&#8203;lukastaegert](https://github.com/lukastaegert))
- [#&#8203;6417](rollup/rollup#6417): chore(deps): update msys2/setup-msys2 digest to [`66cd2cc`](rollup/rollup@66cd2cc) ([@&#8203;renovate](https://github.com/renovate)\[bot])
- [#&#8203;6418](rollup/rollup#6418): fix(deps): update minor/patch updates ([@&#8203;renovate](https://github.com/renovate)\[bot], [@&#8203;lukastaegert](https://github.com/lukastaegert))
- [#&#8203;6419](rollup/rollup#6419): chore(deps): update dependency eslint-plugin-unicorn to v66 ([@&#8203;renovate](https://github.com/renovate)\[bot])
- [#&#8203;6420](rollup/rollup#6420): chore(deps): lock file maintenance minor/patch updates ([@&#8203;renovate](https://github.com/renovate)\[bot], [@&#8203;lukastaegert](https://github.com/lukastaegert))

</details>

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

### [`v8.62.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8620-2026-06-22)

[Compare Source](typescript-eslint/typescript-eslint@v8.61.1...v8.62.0)

##### 🚀 Features

- remove redundant package.json "files" ([#&#8203;12444](typescript-eslint/typescript-eslint#12444))

##### ❤️ Thank You

- Kirk Waiblinger [@&#8203;kirkwaiblinger](https://github.com/kirkwaiblinger)

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

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

</details>

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

### [`v8.62.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8620-2026-06-22)

[Compare Source](typescript-eslint/typescript-eslint@v8.61.1...v8.62.0)

##### 🚀 Features

- remove redundant package.json "files" ([#&#8203;12444](typescript-eslint/typescript-eslint#12444))

##### ❤️ Thank You

- Kirk Waiblinger [@&#8203;kirkwaiblinger](https://github.com/kirkwaiblinger)

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

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

</details>

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

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

[Compare Source](eslint/eslint@v10.5.0...v10.6.0)

#### Features

- [`b1f9106`](eslint/eslint@b1f9106) feat: detect Symbol() and BigInt() in no-constant-binary-expression ([#&#8203;20981](eslint/eslint#20981)) (Taejin Kim)
- [`f291007`](eslint/eslint@f291007) feat: add checkRelationalComparisons to no-constant-binary-expression ([#&#8203;20948](eslint/eslint#20948)) (sethamus)

#### Bug Fixes

- [`6b05784`](eslint/eslint@6b05784) fix: prefer-exponentiation-operator invalid autofix at statement start ([#&#8203;20997](eslint/eslint#20997)) (Milos Djermanovic)
- [`bb9eb2a`](eslint/eslint@bb9eb2a) fix: account for shadowed `Boolean` in `no-extra-boolean-cast` ([#&#8203;21013](eslint/eslint#21013)) (den$)
- [`8fd8741`](eslint/eslint@8fd8741) fix: don't report shadowed undefined in `radix` rule ([#&#8203;21011](eslint/eslint#21011)) (Pixel)
- [`5784980`](eslint/eslint@5784980) fix: don't report shadowed undefined in no-throw-literal ([#&#8203;21010](eslint/eslint#21010)) (Pixel)
- [`9cd1e6d`](eslint/eslint@9cd1e6d) fix: suppress invalid class suggestion in no-promise-executor-return ([#&#8203;21008](eslint/eslint#21008)) (Pixel)
- [`d4eb2dc`](eslint/eslint@d4eb2dc) fix: don't report shadowed undefined in prefer-promise-reject-errors ([#&#8203;21006](eslint/eslint#21006)) (Pixel)
- [`2360464`](eslint/eslint@2360464) fix: prefer-promise-reject-errors false positives for shadowed Promise ([#&#8203;21003](eslint/eslint#21003)) (den$)
- [`63d52d2`](eslint/eslint@63d52d2) fix: restore max-classes-per-file report range ([#&#8203;21002](eslint/eslint#21002)) (Pixel)
- [`7feaff0`](eslint/eslint@7feaff0) fix: callback detection logic for IIFEs in max-nested-callbacks ([#&#8203;20979](eslint/eslint#20979)) (fnx)
- [`399a2ec`](eslint/eslint@399a2ec) fix: don't report inner non-callbacks in `max-nested-callbacks` ([#&#8203;20995](eslint/eslint#20995)) (Milos Djermanovic)

#### Documentation

- [`a83683d`](eslint/eslint@a83683d) docs: Update README (GitHub Actions Bot)
- [`f5449f9`](eslint/eslint@f5449f9) docs: document userland patterns for global assertionOptions in RuleT… ([#&#8203;20986](eslint/eslint#20986)) (playgirl)
- [`bea49f7`](eslint/eslint@bea49f7) docs: Update README (GitHub Actions Bot)
- [`e5f70f9`](eslint/eslint@e5f70f9) docs: update code-path diagrams ([#&#8203;20984](eslint/eslint#20984)) (Tanuj Kanti)
- [`8890c2d`](eslint/eslint@8890c2d) docs: add TypeScript config guidance for MCP server ([#&#8203;20796](eslint/eslint#20796)) (Pierluigi Lenoci)
- [`3eb3d9b`](eslint/eslint@3eb3d9b) docs: Update README (GitHub Actions Bot)
- [`c5bb59c`](eslint/eslint@c5bb59c) docs: Update README (GitHub Actions Bot)
- [`eb3c97c`](eslint/eslint@eb3c97c) docs: fix grammar in prefer-const rule description ([#&#8203;20983](eslint/eslint#20983)) (lumir)

#### Chores

- [`6a42034`](eslint/eslint@6a42034) ci: run ecosystem tests on main branch ([#&#8203;20891](eslint/eslint#20891)) (sethamus)
- [`3dbacdb`](eslint/eslint@3dbacdb) ci: bump actions/checkout from 6 to 7 ([#&#8203;21014](eslint/eslint#21014)) (dependabot\[bot])
- [`c3abfca`](eslint/eslint@c3abfca) chore: correct JSDoc param types in html formatter ([#&#8203;21018](eslint/eslint#21018)) (Minseon Kim)
- [`a832320`](eslint/eslint@a832320) ci: split ecosystem tests into separate jobs ([#&#8203;21001](eslint/eslint#21001)) (xbinaryx)
- [`27166e7`](eslint/eslint@27166e7) chore: update ecosystem plugins ([#&#8203;21005](eslint/eslint#21005)) (ESLint Bot)
- [`865d76e`](eslint/eslint@865d76e) ci: bump pnpm/action-setup from 6.0.8 to 6.0.9 ([#&#8203;20989](eslint/eslint#20989)) (dependabot\[bot])
- [`27a88c9`](eslint/eslint@27a88c9) chore: update dependency markdown-it to v14 in root ([#&#8203;20994](eslint/eslint#20994)) (Milos Djermanovic)
- [`970cea6`](eslint/eslint@970cea6) chore: update dependency markdown-it to v14 ([#&#8203;20993](eslint/eslint#20993)) (Milos Djermanovic)
- [`b482120`](eslint/eslint@b482120) chore: update dependency prettier to v3.8.4 ([#&#8203;20990](eslint/eslint#20990)) (renovate\[bot])
- [`6993fb3`](eslint/eslint@6993fb3) chore: update ecosystem plugins ([#&#8203;20985](eslint/eslint#20985)) (ESLint Bot)

</details>

<details>
<summary>jest-community/eslint-plugin-jest (eslint-plugin-jest)</summary>

### [`v29.15.3`](https://github.com/jest-community/eslint-plugin-jest/blob/HEAD/CHANGELOG.md#29153-2026-06-26)

[Compare Source](jest-community/eslint-plugin-jest@v29.15.2...v29.15.3)

##### Bug Fixes

- **no-export:** treat describe blocks as test files ([#&#8203;1978](jest-community/eslint-plugin-jest#1978)) ([70568b0](jest-community/eslint-plugin-jest@70568b0))

</details>

<details>
<summary>sindresorhus/globals (globals)</summary>

### [`v17.7.0`](https://github.com/sindresorhus/globals/releases/tag/v17.7.0)

[Compare Source](sindresorhus/globals@v17.6.0...v17.7.0)

- Update globals (2026-06-22) ([#&#8203;345](sindresorhus/globals#345))  [`33b75f9`](sindresorhus/globals@33b75f9)

***

</details>

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.9.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#391)

[Compare Source](prettier/prettier@3.9.0...3.9.1)

[diff](prettier/prettier@3.9.0...3.9.1)

##### CLI: Fix ignored file has been cached incorrectly ([#&#8203;19483](prettier/prettier#19483) by [@&#8203;kovsu](https://github.com/kovsu))

Bug details [#&#8203;18016](prettier/prettier#18016)

### [`v3.9.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#390)

[Compare Source](prettier/prettier@3.8.5...3.9.0)

[diff](prettier/prettier@3.8.5...3.9.0)

🔗 [Release Notes](https://prettier.io/blog/2026/06/27/3.9.0)

### [`v3.8.5`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#385)

[Compare Source](prettier/prettier@3.8.4...3.8.5)

[diff](prettier/prettier@3.8.4...3.8.5)

##### Flow: Support `readonly` as a variance annotation ([#&#8203;19022](prettier/prettier#19022) by [@&#8203;marcoww6](https://github.com/marcoww6))

Flow now accepts `readonly` as a property variance annotation, equivalent to `+` (covariant/read-only).

<!-- prettier-ignore -->

```jsx
// Input
type T = {
  readonly foo: string,
};

// Prettier 3.8.4
SyntaxError

// Prettier 3.8.5
type T = {
  readonly foo: string,
};
```

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Amsterdam)

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

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

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

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](undefined) if that's undesired.

---

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

---

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

Co-authored-by: Bernd Schorgers <me@bjw-s.dev>
Co-authored-by: lab-assistant <lab-assistant@git.bjw-s.dev>
Reviewed-on: https://git.bjw-s.dev/bjw-s/action-changed-files/pulls/56
@jookira

jookira commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

@fasttime This PR originally had an AI disclosure, but it was removed at some point. I took a look at this account, and all of their PRs and comments appear to be AI-generated. Just a heads up in case you wanted to take another look at what was said here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

accepted There is consensus among the team that this change meets the criteria for inclusion contributor pool documentation Relates to ESLint's documentation

Projects

Status: Complete

Development

Successfully merging this pull request may close these issues.

Docs: ESLint MCP Server docs should explain how to get it working with TypeScript config requiring jiti

4 participants