Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(deps): update typescript-eslint monorepo to v8 (major) - abandoned #25

Open
wants to merge 66 commits into
base: deps
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Aug 24, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@typescript-eslint/eslint-plugin (source) ^7.0.1 -> ^8.0.0 age adoption passing confidence
@typescript-eslint/parser (source) ^7.0.1 -> ^8.0.0 age adoption passing confidence
typescript-eslint (source) ^7.2.0 -> ^8.0.0 age adoption passing confidence

Configuration

📅 Schedule: 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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

renovate bot and others added 30 commits August 20, 2024 19:02
##### [v4.17.0](privatenumber/tsx@v4.16.5...bd83d3b)

##### [v4.16.5](https://github.com/privatenumber/tsx/releases/tag/v4.16.5)

##### Bug Fixes

-   **resolver:** directory import nested ".." ([2fada74](privatenumber/tsx@2fada74))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.16.5)
##### [v4.16.4](https://github.com/privatenumber/tsx/releases/tag/v4.16.4)

##### Bug Fixes

-   **resolver:** handle importing ".." ([3cf0b6a](privatenumber/tsx@3cf0b6a)), closes [#626](privatenumber/tsx#626)

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.16.4)
##### [v4.16.3](privatenumber/tsx@v4.16.2...ca4bf11)

##### [v4.16.2](privatenumber/tsx@v4.16.1...042be03)

##### [v4.16.1](https://github.com/privatenumber/tsx/releases/tag/v4.16.1)

##### Bug Fixes

-   **cjs:** isolate implicit resolver enhancement ([#59](privatenumber/tsx#59)) ([143a5bd](privatenumber/tsx@143a5bd))
-   **cjs:** namespace filter to preserve file path ([6ef949c](privatenumber/tsx@6ef949c))
-   **esm:** implicit resolution with tsconfig paths ([a74aa58](privatenumber/tsx@a74aa58)), closes [#607](privatenumber/tsx#607)

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.16.1)
##### [v4.16.0](privatenumber/tsx@v4.15.9...da3bcb0)

##### [v4.15.9](privatenumber/tsx@v4.15.8...c67e3ba)

##### [v4.15.8](privatenumber/tsx@v4.15.7...ae2a1bc)

##### [v4.15.7](https://github.com/privatenumber/tsx/releases/tag/v4.15.7)

##### Bug Fixes

-   nyc coverage compatibility ([#54](privatenumber/tsx#54)) ([26d633c](privatenumber/tsx@26d633c))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.15.7)
##### [v4.15.6](https://github.com/privatenumber/tsx/releases/tag/v4.15.6)

##### Bug Fixes

-   minimum Node version in warning for `module.register()` ([#592](privatenumber/tsx#592)) ([cb27d4d](privatenumber/tsx@cb27d4d))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.15.6)
##### [v4.15.5](https://github.com/privatenumber/tsx/releases/tag/v4.15.5)

##### Bug Fixes

-   **cjs:** make transformers overwritable ([c22fa7d](privatenumber/tsx@c22fa7d))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.15.5)
##### [v4.15.4](https://github.com/privatenumber/tsx/releases/tag/v4.15.4)

##### Bug Fixes

-   **cjs:** handle re-exports from relative paths ([5166122](privatenumber/tsx@5166122))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.15.4)
##### [v4.15.3](https://github.com/privatenumber/tsx/releases/tag/v4.15.3)

##### Bug Fixes

-   **cjs:** load json with namespace ([6b03a38](privatenumber/tsx@6b03a38))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.15.3)
##### [v4.15.2](https://github.com/privatenumber/tsx/releases/tag/v4.15.2)

##### Bug Fixes

-   **esm:** resolve implicit extension in package subpath ([7e1fe22](privatenumber/tsx@7e1fe22))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.15.2)
##### [v4.15.1](https://github.com/privatenumber/tsx/releases/tag/v4.15.1)

##### Bug Fixes

-   prevent ERR_DOMAIN_CANNOT_SET_UNCAUGHT_EXCEPTION_CAPTURE ([fb247eb](privatenumber/tsx@fb247eb))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.15.1)
##### [v4.15.0](https://github.com/privatenumber/tsx/releases/tag/v4.15.0)

##### Features

-   esbuild 0.21 ([#19](privatenumber/tsx#19)) ([6f1d305](privatenumber/tsx@6f1d305))
-   esbuild 0.21.3 ([edbdfdf](privatenumber/tsx@edbdfdf))
-   esbuild 0.21.4 ([c67d746](privatenumber/tsx@c67d746))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.15.0)
##### [v4.14.1](https://github.com/privatenumber/tsx/releases/tag/v4.14.1)

##### Bug Fixes

-   **cjs:** only hide transformers when namespaced ([9e647a5](privatenumber/tsx@9e647a5))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.14.1)
##### [v4.14.0](https://github.com/privatenumber/tsx/releases/tag/v4.14.0)

##### Features

-   resolve .js → .ts in `package.json` exports & main ([4503421](privatenumber/tsx@4503421))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.14.0)
##### [v4.13.3](https://github.com/privatenumber/tsx/releases/tag/v4.13.3)

##### Bug Fixes

-   **cjs:** resolve directory import relative to parent ([#42](privatenumber/tsx#42)) ([02d3856](privatenumber/tsx@02d3856))
-   **esm:** cjs interop to support decorators ([807f467](privatenumber/tsx@807f467))
-   **esm:** resolve .ts extension in imports map ([89621bf](privatenumber/tsx@89621bf))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.13.3)
##### [v4.13.2](https://github.com/privatenumber/tsx/releases/tag/v4.13.2)

##### Bug Fixes

-   **esm:** ignore transforming .js files with CJS syntax ([#40](privatenumber/tsx#40)) ([87a7683](privatenumber/tsx@87a7683))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.13.2)
##### [v4.13.1](https://github.com/privatenumber/tsx/releases/tag/v4.13.1)

##### Bug Fixes

-   **esm/api:** `tsImport()` to parse CJS exports ([0a78bfd](privatenumber/tsx@0a78bfd))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.13.1)
##### [v4.13.0](https://github.com/privatenumber/tsx/releases/tag/v4.13.0)

##### Features

-   **cjs/api:** `register()` to support namespace ([#35](privatenumber/tsx#35)) ([c703300](privatenumber/tsx@c703300))
-   **esm/api:** `tsImport()` to support loading CommonJS files ([0eb4e91](privatenumber/tsx@0eb4e91))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.13.0)
##### [v4.12.1](https://github.com/privatenumber/tsx/releases/tag/v4.12.1)

##### Bug Fixes

-   **esm:** resolve implicit ts paths in packages ([de900a1](privatenumber/tsx@de900a1))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.12.1)
##### [v4.12.0](https://github.com/privatenumber/tsx/releases/tag/v4.12.0)

##### Bug Fixes

-   **cjs:** make resolver chainable ([585f117](privatenumber/tsx@585f117))
-   **esm:** named import from CommonJS file ([#33](privatenumber/tsx#33)) ([7c85303](privatenumber/tsx@7c85303))

##### Features

-   **cjs:** support query for cache busting ([#37](privatenumber/tsx#37)) ([e1464cf](privatenumber/tsx@e1464cf))

##### Performance Improvements

-   **esm:** only try extensions if file path ([72d0896](privatenumber/tsx@72d0896))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.12.0)
##### [v4.11.2](https://github.com/privatenumber/tsx/releases/tag/v4.11.2)

##### Bug Fixes

-   **cjs:** esm interop in `.mjs` files ([#32](https://github.com/privatenumber/tsx/issues/32)) ([aa2b639](privatenumber/tsx@aa2b639))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.11.2)
##### [v4.11.1](https://github.com/privatenumber/tsx/releases/tag/v4.11.1)

##### Bug Fixes

-   **cjs/api:** resolve correct module and types when imported ([#566](privatenumber/tsx#566)) ([5e70105](privatenumber/tsx@5e70105))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.11.1)
##### [v4.11.0](https://github.com/privatenumber/tsx/releases/tag/v4.11.0)

##### Bug Fixes

-   only error on invalid tsconfig if explicitly passed in ([#30](privatenumber/tsx#30)) ([b6bf39b](privatenumber/tsx@b6bf39b))

##### Features

-   **esm api:** configurable `tsconfig` ([3f42ae3](privatenumber/tsx@3f42ae3))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.11.0)
##### [v4.10.5](https://github.com/privatenumber/tsx/releases/tag/v4.10.5)

##### Bug Fixes

-   handle parsing variable `of` ([86cf87c](privatenumber/tsx@86cf87c)), closes [#556](privatenumber/tsx#556)

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.10.5)
##### [v4.10.4](privatenumber/tsx@v4.10.3...4a8a2dc)

##### [v4.10.3](https://github.com/privatenumber/tsx/releases/tag/v4.10.3)

##### Performance Improvements

-   skip parsing if `import(` is not found in minified code ([5cdd50b](privatenumber/tsx@5cdd50b))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.10.3)
##### [v4.10.2](privatenumber/tsx@v4.10.1...2c87fc1)

##### [v4.10.1](privatenumber/tsx@v4.10.0...efb3509)

##### [v4.10.0](https://github.com/privatenumber/tsx/releases/tag/v4.10.0)

##### Features

-   **esm api:** register to return a namespaced import() method ([53bb4aa](privatenumber/tsx@53bb4aa))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.10.0)
##### [v4.9.5](privatenumber/tsx@v4.9.4...dae9f0d)

##### [v4.9.4](https://github.com/privatenumber/tsx/releases/tag/v4.9.4)

##### Bug Fixes

-   **tsImport:** import module from commonjs ([48f0a75](privatenumber/tsx@48f0a75))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.9.4)
##### [v4.9.3](https://github.com/privatenumber/tsx/releases/tag/v4.9.3)

##### Bug Fixes

-   import implicit extensions from packages ([8022fcf](privatenumber/tsx@8022fcf)), closes [#542](privatenumber/tsx#542)

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.9.3)
##### [v4.9.2](https://github.com/privatenumber/tsx/releases/tag/v4.9.2)

##### Bug Fixes

-   **esm:** resolve absolute paths ([#544](privatenumber/tsx#544)) ([3a0ea18](privatenumber/tsx@3a0ea18))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.9.2)
##### [v4.9.1](privatenumber/tsx@v4.9.0...96bc596)

##### [v4.9.0](privatenumber/tsx@v4.8.2...4f515ab)

##### [v4.8.2](https://github.com/privatenumber/tsx/releases/tag/v4.8.2)

##### Bug Fixes

-   **types:** cjs/api to use .d.cts ([4b1f03c](privatenumber/tsx@4b1f03c))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.8.2)
##### [v4.8.1](privatenumber/tsx@v4.8.0...084dec0)

##### [v4.8.0](privatenumber/tsx@v4.7.3...99ba136)

##### [v4.7.3](https://github.com/privatenumber/tsx/releases/tag/v4.7.3)

##### Bug Fixes

-   support TS resolution in JS files when `allowJs` is set ([#535](privatenumber/tsx#535)) ([081853e](privatenumber/tsx@081853e))

***

This release is also available on:

-   [npm package (@latest dist-tag)](https://www.npmjs.com/package/tsx/v/4.7.3)
##### [v4.7.2](privatenumber/tsx@v4.7.1...1a10da7)
##### [v5.5.4](microsoft/TypeScript@v5.5.3...c8a7d58)

##### [v5.5.3](microsoft/TypeScript@v5.5.2...f0e9921)

##### [v5.5.2](microsoft/TypeScript@v5.4.5...ce2e60e)

##### [v5.4.5](https://github.com/microsoft/TypeScript/releases/tag/v5.4.5)

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/).

For the complete list of fixed issues, check out the

-   [fixed issues query for Typescript 5.4.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.0%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.1%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.2 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.2%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.3%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.4 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.4%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.5 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.5%22+is%3Aclosed+).

Downloads are available on:

-   [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)
##### [v5.4.4](https://github.com/microsoft/TypeScript/releases/tag/v5.4.4)

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/).

For the complete list of fixed issues, check out the

-   [fixed issues query for Typescript 5.4.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.0%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.1%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.2 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.2%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.3%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.4 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.4%22+is%3Aclosed+).

Downloads are available on:

-   [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)
##### [v5.4.3](https://github.com/microsoft/TypeScript/releases/tag/v5.4.3)

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/).

For the complete list of fixed issues, check out the

-   [fixed issues query for Typescript 5.4.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.0%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.1%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.2 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.2%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.3%22+is%3Aclosed+).

Downloads are available on:

-   [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)
##### [v5.4.2](https://github.com/microsoft/TypeScript/releases/tag/v5.4.2)

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/).

For the complete list of fixed issues, check out the

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

Downloads are available on:

-   [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)
##### [v5.3.3](https://github.com/microsoft/TypeScript/releases/tag/v5.3.3)

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/).

For the complete list of fixed issues, check out the

-   [fixed issues query for Typescript 5.3.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.0%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.3.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.1%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.3.2 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.2%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.3.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.3%22+is%3Aclosed+).

Downloads are available on:

-   [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)
##### [v5.3.2](https://github.com/microsoft/TypeScript/releases/tag/v5.3.2)

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/).

For the complete list of fixed issues, check out the

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

Downloads are available on:

-   [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)
##### [v1.6.0](https://github.com/vitest-dev/vitest/releases/tag/v1.6.0)

#####    🚀 Features

-   Support standalone mode  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5565 [<samp>(bdce0)</samp>](vitest-dev/vitest@bdce0a29)
-   Custom "snapshotEnvironment" option  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5449 [<samp>(30f72)</samp>](vitest-dev/vitest@30f728bc)
-   **benchmark**: Support comparing benchmark result  -  by [@hi-ogawa](https://github.com/hi-ogawa) and [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5398 [<samp>(f8d3d)</samp>](vitest-dev/vitest@f8d3d22e)
-   **browser**: Allow injecting scripts  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5656 [<samp>(21e58)</samp>](vitest-dev/vitest@21e58bd8)
-   **reporter**: Support `includeConsoleOutput` and `addFileAttribute` in junit  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5659 [<samp>(2f913)</samp>](vitest-dev/vitest@2f913222)
-   **ui**: Sort items by file name  -  by [@btea](https://github.com/btea) in vitest-dev/vitest#5652 [<samp>(1f726)</samp>](vitest-dev/vitest@1f7268fa)

#####    🐞 Bug Fixes

-   Keep order of arguments for .each in custom task collectors  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5640 [<samp>(7d57c)</samp>](vitest-dev/vitest@7d57c116)
-   Call `resolveId('vitest')` after `buildStart`  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5646 [<samp>(f5faf)</samp>](vitest-dev/vitest@f5faf423)
-   Hash the name of the file when caching  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5654 [<samp>(c9e68)</samp>](vitest-dev/vitest@c9e68ced)
-   Don't panic on empty files in node_modules  -  by [@sheremet-va](https://github.com/sheremet-va) [<samp>(40c29)</samp>](vitest-dev/vitest@40c299fe)
-   Use `toJSON` for error serialization  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5526 [<samp>(19a21)</samp>](vitest-dev/vitest@19a21e49)
-   **coverage**:
    -   Exclude `*.test-d.*` by default  -  by [@MindfulPol](https://github.com/MindfulPol) in vitest-dev/vitest#5634 [<samp>(bfe8a)</samp>](vitest-dev/vitest@bfe8ad9d)
    -   Apply `vite-node`'s wrapper only to executed files  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5642 [<samp>(c9883)</samp>](vitest-dev/vitest@c9883f3e)
-   **vm**:
    -   Support network imports  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5610 [<samp>(103a6)</samp>](vitest-dev/vitest@103a6002)

#####    🏎 Performance

-   Improve performance of forks pool  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5592 [<samp>(d8304)</samp>](vitest-dev/vitest@d8304bb4)
-   Unnecessary rpc call when coverage is disabled  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5658 [<samp>(c5712)</samp>](vitest-dev/vitest@c571276a)

#####     [View changes on GitHub](vitest-dev/vitest@v1.5.3...v1.6.0)
##### [v1.5.3](https://github.com/vitest-dev/vitest/releases/tag/v1.5.3)

#####    🐞 Bug Fixes

-   Use package.json name for a workspace project if not provided  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5608 [<samp>(48fba)</samp>](vitest-dev/vitest@48fba190)
-   Backport jest iterable equality within object  -  by [@sukovanej](https://github.com/sukovanej) in vitest-dev/vitest#5621 [<samp>(30e5d)</samp>](vitest-dev/vitest@30e5dc1b)
-   **browser**: Support benchmark  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5622 [<samp>(becab)</samp>](vitest-dev/vitest@becabb5e)
-   **reporter**: Use default error formatter for JUnit  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5629 [<samp>(20060)</samp>](vitest-dev/vitest@200609cc)

#####     [View changes on GitHub](vitest-dev/vitest@v1.5.2...v1.5.3)
##### [v1.5.2](https://github.com/vitest-dev/vitest/releases/tag/v1.5.2)

#####    🐞 Bug Fixes

-   Check for null before storing in weakmap  -  by [@sheremet-va](https://github.com/sheremet-va) [<samp>(ce368)</samp>](vitest-dev/vitest@ce368457)

#####     [View changes on GitHub](vitest-dev/vitest@v1.5.1...v1.5.2)
##### [v1.5.1](https://github.com/vitest-dev/vitest/releases/tag/v1.5.1)

#####    🚀 Features

-   **api**: `startVitest()` to accept `stdout` and `stdin`  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5493 [<samp>(780b1)</samp>](vitest-dev/vitest@780b187f)
    -   This is listed as a feature, but it doesn't increase the minor version because `startVitest` API is experimental and doesn't follow semver.

#####    🐞 Bug Fixes

-   Close vite servers on all resolved projects  -  by [@surc54](https://github.com/surc54) in vitest-dev/vitest#5544 [<samp>(413ec)</samp>](vitest-dev/vitest@413ec5e6)
-   Fix default `import.meta.env.PROD: false`  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5561 [<samp>(9c649)</samp>](vitest-dev/vitest@9c64967f)
-   Resolve cwd correctly when initiating projects  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5582 [<samp>(ec9d7)</samp>](vitest-dev/vitest@ec9d7c93)
-   Always run `onTestFinished` in reverse order  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5598 [<samp>(23f29)</samp>](vitest-dev/vitest@23f29cea)
-   **browser**:
    -   Disable `fileParallelism` by default on browser pool  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5528 [<samp>(5c69f)</samp>](vitest-dev/vitest@5c69f3f5)
    -   Dispose tester iframe on done  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5595 [<samp>(b2135)</samp>](vitest-dev/vitest@b2135710)
-   **coverage**:
    -   Fix bundling of `v8-to-istanbul`  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5549 [<samp>(df6a4)</samp>](vitest-dev/vitest@df6a4328)
    -   Prevent crash when `cleanOnRerun` is disabled  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5540 [<samp>(ea3c1)</samp>](vitest-dev/vitest@ea3c16e4)
    -   `thresholds` to compare files relative to root  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5574 [<samp>(80265)</samp>](vitest-dev/vitest@80265b40)
-   **expect**:
    -   Fix `toEqual` and `toMatchObject` with circular references  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5535 [<samp>(9e641)</samp>](vitest-dev/vitest@9e6417c9)
-   **vitest**:
    -   Fix false positive file filter match with leading slash  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5578 [<samp>(316eb)</samp>](vitest-dev/vitest@316eb739)
    -   Watch the output directory correctly  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5584 [<samp>(e40f9)</samp>](vitest-dev/vitest@e40f9924)
    -   StubEnv casts boolean on PROD/SSR/DEV  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5590 [<samp>(4da88)</samp>](vitest-dev/vitest@4da88045)

#####     [View changes on GitHub](vitest-dev/vitest@v1.5.0...v1.5.1)
##### [v1.5.0](vitest-dev/vitest@v1.4.0...v1.5.0)

##### [v1.4.0](https://github.com/vitest-dev/vitest/releases/tag/v1.4.0)

#####    🚀 Features

-   Throw error when using snapshot assertion with `not`  -  by [@fenghan34](https://github.com/fenghan34) in vitest-dev/vitest#5294 [<samp>(b9d37)</samp>](vitest-dev/vitest@b9d378f5)
-   Add a flag to include test location in tasks  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5342 [<samp>(d627e)</samp>](vitest-dev/vitest@d627e209)
-   **cli**:
    -   Support wildcards in `--project` option  -  by [@fenghan34](https://github.com/fenghan34) in vitest-dev/vitest#5295 [<samp>(201bd)</samp>](vitest-dev/vitest@201bd067)
-   **config**:
    -   Add `shuffle.files` and `shuffle.tests` options  -  by [@fenghan34](https://github.com/fenghan34) in vitest-dev/vitest#5281 [<samp>(356db)</samp>](vitest-dev/vitest@356db87b)
    -   Deprecate `cache.dir` option  -  by [@fenghan34](https://github.com/fenghan34) in vitest-dev/vitest#5229 [<samp>(d7e8b)</samp>](vitest-dev/vitest@d7e8b53e)
-   **coverage**:
    -   Support `--changed` option  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5314 [<samp>(600b4)</samp>](vitest-dev/vitest@600b44d6)
-   **vitest**:
    -   Support `clearScreen` cli flag  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5241 [<samp>(e1735)</samp>](vitest-dev/vitest@e1735fb6)

#####    🐞 Bug Fixes

-   Repeatable `--project` option  -  by [@fenghan34](https://github.com/fenghan34) in vitest-dev/vitest#5265 [<samp>(d1a06)</samp>](vitest-dev/vitest@d1a06730)
-   `--inspect-brk` to pause before execution  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5355 [<samp>(e77c5)</samp>](vitest-dev/vitest@e77c553f)
-   Correct locations in test.each tasks  -  by [@sheremet-va](https://github.com/sheremet-va) [<samp>(4f6e3)</samp>](vitest-dev/vitest@4f6e39c1)
-   **api**:
    -   Use resolvedUrls from devserver  -  by [@saitonakamura](https://github.com/saitonakamura) and [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5289 [<samp>(2fef5)</samp>](vitest-dev/vitest@2fef5a7e)
-   **browser**:
    -   Add `magic-string` to `optimizeDeps.include`  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5278 [<samp>(8f04e)</samp>](vitest-dev/vitest@8f04e798)
-   **coverage**:
    -   Expensive regexp hangs v8 report generation  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5259 [<samp>(d68a7)</samp>](vitest-dev/vitest@d68a7390)
    -   V8 to ignore type-only files  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5328 [<samp>(c3eb8)</samp>](vitest-dev/vitest@c3eb8deb)
    -   Respect source maps of pre-transpiled sources  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5367 [<samp>(6eda4)</samp>](vitest-dev/vitest@6eda473f)
    -   Prevent `reportsDirectory` from removing user's project  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5376 [<samp>(07ec3)</samp>](vitest-dev/vitest@07ec3779)
-   **expect**:
    -   Show diff on `toContain/toMatch` assertion error  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5267 [<samp>(8ee59)</samp>](vitest-dev/vitest@8ee59f0d)
-   **forks**:
    -   Wrap `defines` to support `undefined` values  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5284 [<samp>(5b58b)</samp>](vitest-dev/vitest@5b58b399)
-   **typecheck**:
    -   Update get-tsconfig 4.7.3 to fix false circularity error  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5384 [<samp>(bdc37)</samp>](vitest-dev/vitest@bdc371ee)
-   **ui**:
    -   Escape html in error diff  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5325 [<samp>(ab60b)</samp>](vitest-dev/vitest@ab60bf8d)
-   **vitest**:
    -   Loosen `onConsoleLog` return type  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5337 [<samp>(6d1b1)</samp>](vitest-dev/vitest@6d1b1451)
    -   Ensure restoring terminal cursor on close  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5292 [<samp>(0bea2)</samp>](vitest-dev/vitest@0bea2247)
    -   Ignore timeout on websocket reporter rpc  -  by [@sheremet-va](https://github.com/sheremet-va) [<samp>(38119)</samp>](vitest-dev/vitest@38119b75)
    -   Correctly override api with --no-api flag  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5386 [<samp>(51d1d)</samp>](vitest-dev/vitest@51d1d472)
    -   Logs in `beforeAll` and `afterAll`  -  by [@fenghan34](https://github.com/fenghan34) in vitest-dev/vitest#5288 [<samp>(ce5ca)</samp>](vitest-dev/vitest@ce5ca6bf)
-   **workspace**:
    -   Throw error when browser mode and `@vitest/coverage-v8` are used  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5250 [<samp>(29f98)</samp>](vitest-dev/vitest@29f98cd3)

#####     [View changes on GitHub](vitest-dev/vitest@v1.3.1...v1.4.0)
##### [v9.7.1](pnpm/pnpm@v9.7.0...v9.7.1)

##### [v9.7.0](https://github.com/pnpm/pnpm/releases/tag/v9.7.0)

#### Minor Changes

-   Added pnpm version management. If the `manage-package-manager-versions` setting is set to `true`, pnpm will switch to the version specified in the `packageManager` field of `package.json` [#8363](pnpm/pnpm#8363). This is the same field used by Corepack. Example:

    ```json
    {
      "packageManager": "[email protected]"
    }
    ```

-   Added the ability to apply patch to all versions [#8337](pnpm/pnpm#8337).

    If the key of `pnpm.patchedDependencies` is a package name without a version (e.g. `pkg`), pnpm will attempt to apply the patch to all versions of the package. Failures will be skipped. If there's only one version of `pkg` installed, `pnpm patch pkg` and subsequent `pnpm patch-commit $edit_dir` will create an entry named `pkg` in `pnpm.patchedDependencies`. And pnpm will attempt to apply this patch to other versions of `pkg` in the future.

-   Change the default edit dir location when running `pnpm patch` from a temporary directory to `node_modules/.pnpm_patches/pkg[@Version]` to allow the code editor to open the edit dir in the same file tree as the main project [#8379](pnpm/pnpm#8379).

-   Substitute environment variables in config keys [#6679](pnpm/pnpm#6679).

#### Patch Changes

-   `pnpm install` should run `node-gyp rebuild` if the project has a `binding.gyp` file even if the project doesn't have an install script [#8293](pnpm/pnpm#8293).
-   Print warnings to stderr [#8342](pnpm/pnpm#8342).
-   Peer dependencies of optional peer dependencies should be automatically installed [#8323](pnpm/pnpm#8323).

#### Platinum Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://bit.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank"><img src="https://pnpm.io/img/users/bit.svg" width="80"></a>
      </td>
      <td align="center" valign="middle">
        <a href="https://figma.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank"><img src="https://pnpm.io/img/users/figma.svg" width="80"></a>
      </td>
    </tr>
  </tbody>
</table>
#### Gold Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
            <img src="https://pnpm.io/img/users/discord.svg" width="220" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://prisma.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/prisma.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/prisma_light.svg" />
            <img src="https://pnpm.io/img/users/prisma.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://uscreen.de/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/uscreen.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/uscreen_light.svg" />
            <img src="https://pnpm.io/img/users/uscreen.svg" width="180" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://www.jetbrains.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
            <img src="https://pnpm.io/img/users/jetbrains.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" />
            <img src="https://pnpm.io/img/users/nx.svg" width="120" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
            <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" />
          </picture>
        </a>
      </td>
    </tr>
  </tbody>
</table>
#### Our Silver Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://leniolabs.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <img src="https://pnpm.io/img/users/leniolabs.jpg" width="80">
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://vercel.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/vercel.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/vercel_light.svg" />
            <img src="https://pnpm.io/img/users/vercel.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://depot.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/depot.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/depot_light.svg" />
            <img src="https://pnpm.io/img/users/depot.svg" width="200" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://moonrepo.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/moonrepo.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/moonrepo_light.svg" />
            <img src="https://pnpm.io/img/users/moonrepo.svg" width="200" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://devowl.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/devowlio.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/devowlio.svg" />
            <img src="https://pnpm.io/img/users/devowlio.svg" width="200" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://macpaw.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/macpaw.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/macpaw_light.svg" />
            <img src="https://pnpm.io/img/users/macpaw.svg" width="200" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://cerbos.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/cerbos.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/cerbos_light.svg" />
            <img src="https://pnpm.io/img/users/cerbos.svg" width="180" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://vpsserver.com/en-us/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <img src="https://pnpm.io/img/users/vpsserver.svg" width="180" />
        </a>
      </td>
    </tr>
  </tbody>
</table>
##### [v9.6.0](https://github.com/pnpm/pnpm/releases/tag/v9.6.0)

#### Minor Changes

-   Support specifying node version (via `pnpm.executionEnv.nodeVersion` in `package.json`) for running lifecycle scripts per each package in a workspace [#6720](pnpm/pnpm#6720).
-   Overrides now support the [`catalogs:` protocol](https://pnpm.io/catalogs) [#8303](pnpm/pnpm#8303).

#### Patch Changes

-   The `pnpm deploy` command now supports the [`catalog:` protocol](https://pnpm.io/catalogs) [#8298](pnpm/pnpm#8298).
-   The `pnpm outdated` command now supports the [`catalog:` protocol](https://pnpm.io/catalogs) [#8304](pnpm/pnpm#8304).
-   Correct the error message when trying to run `pnpm patch` without `node_modules/.modules.yaml` [#8257](pnpm/pnpm#8257).
-   Silent reporting fixed with the `pnpm exec` command [#7608](pnpm/pnpm#7608).
-   Add registries information to the calculation of dlx cache hash [#8299](pnpm/pnpm#8299).

#### Platinum Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://bit.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank"><img src="https://pnpm.io/img/users/bit.svg" width="80"></a>
      </td>
      <td align="center" valign="middle">
        <a href="https://figma.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank"><img src="https://pnpm.io/img/users/figma.svg" width="80"></a>
      </td>
    </tr>
  </tbody>
</table>
#### Gold Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
            <img src="https://pnpm.io/img/users/discord.svg" width="220" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://prisma.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/prisma.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/prisma_light.svg" />
            <img src="https://pnpm.io/img/users/prisma.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://uscreen.de/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/uscreen.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/uscreen_light.svg" />
            <img src="https://pnpm.io/img/users/uscreen.svg" width="180" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://www.jetbrains.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
            <img src="https://pnpm.io/img/users/jetbrains.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" />
            <img src="https://pnpm.io/img/users/nx.svg" width="120" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
            <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" />
          </picture>
        </a>
      </td>
    </tr>
  </tbody>
</table>
#### Our Silver Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://leniolabs.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <img src="https://pnpm.io/img/users/leniolabs.jpg" width="80">
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://vercel.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/vercel.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/vercel_light.svg" />
            <img src="https://pnpm.io/img/users/vercel.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://depot.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/depot.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/depot_light.svg" />
            <img src="https://pnpm.io/img/users/depot.svg" width="200" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://moonrepo.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/moonrepo.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/moonrepo_light.svg" />
            <img src="https://pnpm.io/img/users/moonrepo.svg" width="200" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://devowl.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/devowlio.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/devowlio.svg" />
            <img src="https://pnpm.io/img/users/devowlio.svg" width="200" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://macpaw.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/macpaw.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/macpaw_light.svg" />
            <img src="https://pnpm.io/img/users/macpaw.svg" width="200" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://cerbos.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/cerbos.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/cerbos_light.svg" />
            <img src="https://pnpm.io/img/users/cerbos.svg" width="180" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://vpsserver.com/en-us/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <img src="https://pnpm.io/img/users/vpsserver.svg" width="180" />
        </a>
      </td>
    </tr>
  </tbody>
</table>
##### [v9.5.0](pnpm/pnpm@v9.5.0-beta.3...v9.5.0)
##### [v14.2.5](vercel/next.js@v14.2.4...v14.2.5)

##### [v14.2.4](https://github.com/vercel/next.js/releases/tag/v14.2.4)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

##### Core Changes

-   fix: ensure route handlers properly track dynamic access ([#66446](vercel/next.js#66446))
-   fix NextRequest proxy in edge runtime ([#66551](vercel/next.js#66551))
-   Fix next/dynamic with babel and src dir ([#65177](vercel/next.js#65177))
-   Use vercel deployment url for metadataBase fallbacks ([#65089](vercel/next.js#65089))
-   fix(next/image): detect react@19 for fetchPriority prop ([#65235](vercel/next.js#65235))
-   Fix loading navigation with metadata and prefetch ([#66447](vercel/next.js#66447))
-   prevent duplicate RSC fetch when action redirects ([#66620](vercel/next.js#66620))
-   ensure router cache updates reference the latest cache values ([#66681](vercel/next.js#66681))
-   Prevent append of trailing slash in cases where path ends with a file extension ([#66636](vercel/next.js#66636))
-   Fix inconsistency with 404 getStaticProps cache-control ([#66674](vercel/next.js#66674))
-   Use addDependency to track metadata route file changes ([#66714](vercel/next.js#66714))
-   Add timeout/retry handling for fetch cache ([#66652](vercel/next.js#66652))
-   fix: app-router prefetch crash when an invalid URL is passed to Link ([#66755](vercel/next.js#66755))

##### Credits

Huge thanks to [@ztanner](https://github.com/ztanner), [@ijjk](https://github.com/ijjk), [@wbinnssmith](https://github.com/wbinnssmith), [@huozhi](https://github.com/huozhi), and [@lubieowoce](https://github.com/lubieowoce) for helping!
##### [v14.2.3](vercel/next.js@v14.2.2...v14.2.3)

##### [v14.2.2](vercel/next.js@v14.2.1...v14.2.2)

##### [v14.2.1](vercel/next.js@v14.2.0...v14.2.1)

##### [v14.2.0](vercel/next.js@v14.1.4...774563f)
##### [v3.7.1](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#371)

Sat, 27 Jul 2024 00:10:27 GMT

##### Patches

-   Include CHANGELOG.md in published releases again
##### [v3.7.0](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#370)

Wed, 29 May 2024 00:10:52 GMT

##### Minor changes

-   Bump the `eslint-plugin-tsdoc` plugin.
##### [v3.6.10](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#3610)

Fri, 17 May 2024 00:10:40 GMT

*Version update only*
##### [v3.6.9](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#369)

Wed, 10 Apr 2024 21:59:39 GMT

*Version update only*
##### [v3.6.8](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#368)

Fri, 29 Mar 2024 05:46:41 GMT

*Version update only*
##### [v3.6.7](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#367)

Thu, 28 Mar 2024 18:11:12 GMT

*Version update only*
##### [v3.6.6](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#366)

Wed, 27 Mar 2024 19:47:21 GMT

*Version update only*
##### [v3.6.5](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#365)

Wed, 20 Mar 2024 02:09:14 GMT

*Version update only*
##### [v3.6.4](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#364)

Sat, 17 Feb 2024 06:24:35 GMT

*Version update only*
##### [v3.6.3](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#363)

Wed, 07 Feb 2024 01:11:18 GMT

*Version update only*
##### [v3.6.2](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#362)

Thu, 25 Jan 2024 23:03:57 GMT

*Version update only*
##### [v3.6.1](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#3610)

Fri, 17 May 2024 00:10:40 GMT

*Version update only*
##### [v3.6.0](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#360)

Tue, 16 Jan 2024 18:30:10 GMT

##### Minor changes

-   Add support for TypeScript 5.3 with [@typescript-eslint](https://github.com/typescript-eslint) 6.19.x
##### [v3.5.1](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#351)

Fri, 15 Dec 2023 01:10:06 GMT

*Version update only*
##### [v3.5.0](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#350)

Wed, 22 Nov 2023 01:45:18 GMT

##### Minor changes

-   Added eslint-bulk-suppressions to [@rushstack/eslint-config](https://github.com/rushstack/eslint-config) dependencies, allowing it to be used in all projects that use rushstack's eslint-config
##### [v0.16.0](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-plugin/CHANGELOG.md#0160)

Wed, 14 Aug 2024 22:37:32 GMT

##### Minor changes

-   Add 4 new ESLint rules: "[@rushstack/no-backslash-imports](https://github.com/rushstack/no-backslash-imports)", used to prevent backslashes in import and require statements; "[@rushstack/no-external-local-imports](https://github.com/rushstack/no-external-local-imports)", used to prevent referencing external depedencies in import and require statements; "[@rushstack/no-transitive-dependency-imports](https://github.com/rushstack/no-transitive-dependency-imports)", used to prevent referencing transitive dependencies (ie. dependencies of dependencies) in import and require statements; and "[@rushstack/normalized-imports](https://github.com/rushstack/normalized-imports)", used to ensure that the most direct path to a dependency is provided in import and require statements
##### [v0.15.2](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-plugin/CHANGELOG.md#0152)

Sat, 27 Jul 2024 00:10:27 GMT

##### Patches

-   Include CHANGELOG.md in published releases again
##### [v0.15.1](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-plugin/CHANGELOG.md#0151)

Sat, 17 Feb 2024 06:24:34 GMT

##### Patches

-   Fix broken link to API documentation
##### [v0.15.0](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-plugin/CHANGELOG.md#0150)

Wed, 07 Feb 2024 01:11:18 GMT

##### Minor changes

-   Allow using `as const` in `typedef-var`
##### [v0.14.0](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-plugin/CHANGELOG.md#0140)

Tue, 16 Jan 2024 18:30:10 GMT

##### Minor changes

-   Add support for TypeScript 5.3 with [@typescript-eslint](https://github.com/typescript-eslint) 6.19.x
##### [v0.8.2](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-plugin-security/CHANGELOG.md#082)

Sat, 27 Jul 2024 00:10:27 GMT

##### Patches

-   Include CHANGELOG.md in published releases again
##### [v0.8.1](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-plugin-security/CHANGELOG.md#081)

Sat, 17 Feb 2024 06:24:34 GMT

*Version update only*
##### [v0.8.0](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-plugin-security/CHANGELOG.md#080)

Tue, 16 Jan 2024 18:30:10 GMT

##### Minor changes

-   Add support for TypeScript 5.3 with [@typescript-eslint](https://github.com/typescript-eslint) 6.19.x
##### [v0.46.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.46.0)

##### New rules

-   [`@stylistic/indent-binary-ops`](https://eslint.style/rules/plus/indent-binary-ops)  [`d91defd`](xojs/eslint-config-xo@d91defd)
-   [`@stylistic/function-paren-newline`](https://eslint.style/rules/js/function-paren-newline)  [`fb5e204`](xojs/eslint-config-xo@fb5e204)
-   [`@stylistic/block-spacing`](https://eslint.style/rules/js/block-spacing)  [`cb6b443`](xojs/eslint-config-xo@cb6b443)
-   [`@stylistic/multiline-ternary`](https://eslint.style/rules/js/multiline-ternary)  [`3dea281`](xojs/eslint-config-xo@3dea281)

##### Breaking

-   Require Node.js 18.18
-   Migrate to flat config and require ESLint 9 ([#86](xojs/eslint-config-xo#86))  [`ec210f2`](xojs/eslint-config-xo@ec210f2)
    -   Migrate config: https://eslint.org/docs/latest/use/configure/migration-guide

##### Improvements

-   Migrate deprecated rules to [`@stylistic`](https://eslint.style)  [`0f81063`](xojs/eslint-config-xo@0f81063)
-   Enable permissive `max-len` and `max-lines` as warning ([#84](xojs/eslint-config-xo#84))  [`e669d26`](xojs/eslint-config-xo@e669d26)
-   Revert "Add option to `no-extra-boolean-cast`" ([#87](xojs/eslint-config-xo#87))  [`f010b63`](xojs/eslint-config-xo@f010b63)
-   Add option to `no-extra-boolean-cast`  [`a6dc171`](xojs/eslint-config-xo@a6dc171)
##### [v0.45.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.45.0)

-   Allow class fields with no blank lines between ([#85](xojs/eslint-config-xo#85))  [`6f2ff13`](xojs/eslint-config-xo@6f2ff13)
##### [v0.44.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.44.0)

##### Breaking

-   Require Node.js 18  [`f2060de`](xojs/eslint-config-xo@f2060de)

##### New rules

-   [`logical-assignment-operators`](https://eslint.org/docs/latest/rules/logical-assignment-operators)  [`27049c1`](xojs/eslint-config-xo@27049c1)
-   [`prefer-object-has-own`](https://eslint.org/docs/latest/rules/prefer-object-has-own)  [`288a3ca`](xojs/eslint-config-xo@288a3ca)
-   [`object-curly-newline`](https://eslint.org/docs/latest/rules/object-curly-newline) ([#83](xojs/eslint-config-xo#83))  [`3a5448b`](xojs/eslint-config-xo@3a5448b)

##### Improvements

-   Ban `atob` and `btoa`  [`dfa969c`](xojs/eslint-config-xo@dfa969c)
-   Replace deprecated `no-new-object` rule  [`7f8f92e`](xojs/eslint-config-xo@7f8f92e)
-   `no-unused-vars`: Allow ignoring variables by prefixing with underscore  [`b31ab8a`](xojs/eslint-config-xo@b31ab8a)
##### [v6.6.3](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#663-2024-07-11)

##### Bug Fixes

-   **immutable-data:** ignoreAccessorPattern can now handle NonNullExpressions and ChainExpressions ([#849](eslint-functional/eslint-plugin-functional#849)) ([f6ff69b](eslint-functional/eslint-plugin-functional@f6ff69b)), closes [#840](eslint-functional/eslint-plugin-functional#840)
##### [v6.6.2](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#662-2024-07-11)

##### Bug Fixes

-   **no-conditional-statements:** allow continue and break statements with labels to be considered "returning" ([#846](eslint-functional/eslint-plugin-functional#846)) ([969b77b](eslint-functional/eslint-plugin-functional@969b77b))
-   **no-expression-statements:** arrow functions cannot be self returning ([#847](eslint-functional/eslint-plugin-functional#847)) ([7217fa4](eslint-functional/eslint-plugin-functional@7217fa4))
-   **no-promise-reject:** new Promises and throw statements are now also checked ([#848](eslint-functional/eslint-plugin-functional#848)) ([fbe27ad](eslint-functional/eslint-plugin-functional@fbe27ad))
##### [v6.6.1](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#661-2024-07-06)

##### [v6.6.0](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#660-2024-06-19)

##### Features

-   **prefer-immutable-types:** allow for changing suggestion messages ([#828](eslint-functional/eslint-plugin-functional#828)) ([822cc33](eslint-functional/eslint-plugin-functional@822cc33))

#### [6.5.2](eslint-functional/eslint-plugin-functional@v6.5.1...v6.5.2) (2024-06-19)

#### [6.5.1](eslint-functional/eslint-plugin-functional@v6.5.0...v6.5.1) (2024-04-15)

##### Bug Fixes

-   **prefer-tacit:** don't check member functions by default ([#808](eslint-functional/eslint-plugin-functional#808)) ([4e6c3a9](eslint-functional/eslint-plugin-functional@4e6c3a9)), closes [#805](eslint-functional/eslint-plugin-functional#805)
##### [v6.5.2](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#652-2024-06-19)

##### [v6.5.1](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#651-2024-04-15)

##### Bug Fixes

-   **prefer-tacit:** don't check member functions by default ([#808](eslint-functional/eslint-plugin-functional#808)) ([4e6c3a9](eslint-functional/eslint-plugin-functional@4e6c3a9)), closes [#805](eslint-functional/eslint-plugin-functional#805)
##### [v6.5.0](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#650-2024-04-15)

##### Features

-   update is-immutable-type to v3.1.0 ([#806](eslint-functional/eslint-plugin-functional#806)) ([40435b7](eslint-functional/eslint-plugin-functional@40435b7))

#### [6.4.1](eslint-functional/eslint-plugin-functional@v6.4.0...v6.4.1) (2024-04-14)

##### Bug Fixes

-   **prefer-tacit:** handling functions that don't map to directly to an eslint node ([#802](eslint-functional/eslint-plugin-functional#802)) ([423e249](eslint-functional/eslint-plugin-functional@423e249))
##### [v6.4.1](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#641-2024-04-14)

##### Bug Fixes

-   **prefer-tacit:** handling functions that don't map to directly to an eslint node ([#802](eslint-functional/eslint-plugin-functional#802)) ([423e249](eslint-functional/eslint-plugin-functional@423e249))
##### [v6.4.0](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#640-2024-04-01)

##### Bug Fixes

-   **type-declaration-immutability:** replace fixer with suggestions for recommended and lite configs ([ae62abb](eslint-functional/eslint-plugin-functional@ae62abb))

##### Features

-   **type-declaration-immutability:** add support for in-editor suggestions ([7a0a790](eslint-functional/eslint-plugin-functional@7a0a790)), closes [#797](eslint-functional/eslint-plugin-functional#797)

#### [6.3.2](eslint-functional/eslint-plugin-functional@v6.3.1...v6.3.2) (2024-04-01)

##### Bug Fixes

-   **readonly-type:** empty object types should not trigger reports ([fc6a394](eslint-functional/eslint-plugin-functional@fc6a394)), closes [#796](eslint-functional/eslint-plugin-functional#796)

#### [6.3.1](eslint-functional/eslint-plugin-functional@v6.3.0...v6.3.1) (2024-04-01)

##### Bug Fixes

-   improve types for flat configs ([68e6450](eslint-functional/eslint-plugin-functional@68e6450))
##### [v6.3.2](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#632-2024-04-01)

##### Bug Fixes

-   **readonly-type:** empty object types should not trigger reports ([fc6a394](eslint-functional/eslint-plugin-functional@fc6a394)), closes [#796](eslint-functional/eslint-plugin-functional#796)
##### [v6.3.1](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#631-2024-04-01)

##### Bug Fixes

-   improve types for flat configs ([68e6450](eslint-functional/eslint-plugin-functional@68e6450))
##### [v6.3.0](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#630-2024-03-25)

##### Features

-   **immutable-data:** add option for `ignoreNonConstDeclarations` to `treatParametersAsConst` ([#794](eslint-functional/eslint-plugin-functional#794)) ([059591a](eslint-functional/eslint-plugin-functional@059591a)), closes [#724](eslint-functional/eslint-plugin-functional#724)

#### [6.2.3](eslint-functional/eslint-plugin-functional@v6.2.2...v6.2.3) (2024-03-25)

##### Bug Fixes

-   **no-mixed-types:** handle more than just property signatures, check the type of type references ([#793](eslint-functional/eslint-plugin-functional#793)) ([55bd794](eslint-functional/eslint-plugin-functional@55bd794)), closes [#734](eslint-functional/eslint-plugin-functional#734)

#### [6.2.2](eslint-functional/eslint-plugin-functional@v6.2.1...v6.2.2) (2024-03-25)

##### Bug Fixes

-   **immutable-data:** ignore casting when evaluating the expressions ([#792](eslint-functional/eslint-plugin-functional#792)) ([50e789a](eslint-functional/eslint-plugin-functional@50e789a)), closes [#790](eslint-functional/eslint-plugin-functional#790)

#### [6.2.1](eslint-functional/eslint-plugin-functional@v6.2.0...v6.2.1) (2024-03-24)

##### Bug Fixes

-   esm conditional imports ([a31b512](eslint-functional/eslint-plugin-functional@a31b512)), closes [#791](eslint-functional/eslint-plugin-functional#791)
-   improve typing exposed for flat configs ([6a65ac1](eslint-functional/eslint-plugin-functional@6a65ac1))
-   type errors ([b73bcd2](eslint-functional/eslint-plugin-functional@b73bcd2))
##### [v6.2.3](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#623-2024-03-25)

##### Bug Fixes

-   **no-mixed-types:** handle more than just property signatures, check the type of type references ([#793](eslint-functional/eslint-plugin-functional#793)) ([55bd794](eslint-functional/eslint-plugin-functional@55bd794)), closes [#734](eslint-functional/eslint-plugin-functional#734)
##### [v6.2.2](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#622-2024-03-25)

##### Bug Fixes

-   **immutable-data:** ignore casting when evaluating the expressions ([#792](eslint-functional/eslint-plugin-functional#792)) ([50e789a](eslint-functional/eslint-plugin-functional@50e789a)), closes [#790](eslint-functional/eslint-plugin-functional#790)
##### [v6.2.1](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#621-2024-03-24)

##### Bug Fixes

-   esm conditional imports ([a31b512](eslint-functional/eslint-plugin-functional@a31b512)), closes [#791](eslint-functional/eslint-plugin-functional#791)
-   improve typing exposed for flat configs ([6a65ac1](eslint-functional/eslint-plugin-functional@6a65ac1))
-   type errors ([b73bcd2](eslint-functional/eslint-plugin-functional@b73bcd2))
##### [v6.2.0](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#620-2024-03-22)

##### Bug Fixes

-   **type-declaration-immutability:** some (hopefully all) maximum call stack size exceeded errors ([61c561c](eslint-functional/eslint-plugin-functional@61c561c)), closes [#767](eslint-functional/eslint-plugin-functional#767)

##### Features

-   add support for flat configs ([#789](eslint-functional/eslint-plugin-functional#789)) ([5fa7c2c](eslint-functional/eslint-plugin-functional@5fa7c2c))
##### [v6.1.1](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#611-2024-03-11)

##### Bug Fixes

-   **immutable-data:** handle immediate mutation of arrays generated from strings ([b003d1c](eslint-functional/eslint-plugin-functional@b003d1c)), closes [#759](eslint-functional/eslint-plugin-functional#759)
##### [v6.1.0](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#610-2024-03-10)

##### Bug Fixes

-   **immutable-data:** treat Object.entries({}).sort() as immediate mutation ([245886f](eslint-functional/eslint-plugin-functional@245886f)), closes [#773](eslint-functional/eslint-plugin-functional#773)

##### Features

-   new config to disable all rules that require type info ([af30f15](eslint-functional/eslint-plugin-functional@af30f15))

#### [6.0.1](eslint-functional/eslint-plugin-functional@v6.0.0...v6.0.1) (2024-02-23)

##### Bug Fixes

-   typos in function names ([05b2f9c](eslint-functional/eslint-plugin-functional@05b2f9c))
##### [v6.0.1](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#601-2024-02-23)

##### Bug Fixes

-   typos in function names ([05b2f9c](eslint-functional/eslint-plugin-functional@05b2f9c))
##### [v6.9.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/CHANGELOG.md#v690---2024-06-19)

##### Fixed

-   \[Fix] `img-redundant-alt`: fixed multibyte character support [`#969`](jsx-eslint/eslint-plugin-jsx-a11y#969)
-   \[meta] fix changelog links [`#960`](jsx-eslint/eslint-plugin-jsx-a11y#960)

##### Commits

-   \[New] add support for Flat Config [`6b5f096`](jsx-eslint/eslint-plugin-jsx-a11y@6b5f096)
-   Revert "\[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1" [`75d5dd7`](jsx-eslint/eslint-plugin-jsx-a11y@75d5dd7)
-   \[Robustness] use `safe-regex-test` [`4c7e781`](jsx-eslint/eslint-plugin-jsx-a11y@4c7e781)
-   \[actions] update actions/checkout [`51a1ca7`](jsx-eslint/eslint-plugin-jsx-a11y@51a1ca7)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `eslint-doc-generator`, `object.entries` [`1271ac1`](jsx-eslint/eslint-plugin-jsx-a11y@1271ac1)
-   \[Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/register`, `aud`, `eslint-plugin-import`, `npmignore`, `object.assign` [`540cb7a`](jsx-eslint/eslint-plugin-jsx-a11y@540cb7a)
-   \[Deps] update `@babel/runtime`, `array-includes`, `es-iterator-helpers`, `hasown`, `object.fromentries`, `safe-regex-test` [`5d14408`](jsx-eslint/eslint-plugin-jsx-a11y@5d14408)
-   \[Deps] pin `aria-query` and `axobject-query`, add `ls-engines` test to CI [`32fd82c`](jsx-eslint/eslint-plugin-jsx-a11y@32fd82c)
-   \[Dev Deps] update `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-doc-generator` [`d1b4114`](jsx-eslint/eslint-plugin-jsx-a11y@d1b4114)
-   \[Fix] ensure `summary` remains non-interactive [`6a048da`](jsx-eslint/eslint-plugin-jsx-a11y@6a048da)
-   \[Deps] remove `@babel/runtime` [`0a98ad8`](jsx-eslint/eslint-plugin-jsx-a11y@0a98ad8)
-   \[New] `no-noninteractive-element-to-interactive-role`: allow `menuitemradio` and `menuitemcheckbox` on \<li> [`c0733f9`](jsx-eslint/eslint-plugin-jsx-a11y@c0733f9)
-   \[Deps] update `@babel/runtime`, `safe-regex-test` [`0d5321a`](jsx-eslint/eslint-plugin-jsx-a11y@0d5321a)
-   \[actions] pin codecov to v3.1.5 [`961817f`](jsx-eslint/eslint-plugin-jsx-a11y@961817f)
-   \[Deps] unpin `axe-core` [`b3559cf`](jsx-eslint/eslint-plugin-jsx-a11y@b3559cf)
-   \[Deps] move `object.entries` to dev deps [`1be7b70`](jsx-eslint/eslint-plugin-jsx-a11y@1be7b70)
-   \[Deps] update `@babel/runtime` [`2a48abb`](jsx-eslint/eslint-plugin-jsx-a11y@2a48abb)
-   \[Deps] update `@babel/runtime` [`1adec35`](jsx-eslint/eslint-plugin-jsx-a11y@1adec35)
##### [v7.35.0](https://github.com/jsx-eslint/eslint-plugin-react/blob/HEAD/CHANGELOG.md#7350---20240719)

##### Added

-   support eslint v9 ([#3759][] [@mdjermanovic](https://github.com/mdjermanovic))
-   export flat configs from plugin root and fix flat config crash ([#3694][] [@bradzacher](https://github.com/bradzacher) [@mdjermanovic](https://github.com/mdjermanovic))
-   add \[`jsx-props-no-spread-multi`] ([#3724][] [@SimonSchick](https://github.com/SimonSchick))
-   \[`forbid-component-props`]: add `propNamePattern` to allow / disallow prop name patterns ([#3774][] [@akulsr0](https://github.com/akulsr0))
-   \[`jsx-handler-names`]: support ignoring component names ([#3772][] [@akulsr0](https://github.com/akulsr0))
-   version settings: Allow react defaultVersion to be configurable ([#3771][] [@onlywei](https://github.com/onlywei))
-   \[`jsx-closing-tag-location`]: add `line-aligned` option ([#3777] [@kimtaejin3](https://github.com/kimtaejin3))
-   \[`no-danger`]: add `customComponentNames` option ([#3748][] [@akulsr0](https://github.com/akulsr0))

##### Fixed

-   \[`no-invalid-html-attribute`]: substitute placeholders in suggestion messages ([#3759][] [@mdjermanovic](https://github.com/mdjermanovic))
-   \[`sort-prop-types`]: single line type ending without semicolon ([#3784][] [@akulsr0](https://github.com/akulsr0))
-   \[`require-default-props`]: report when required props have default value ([#3785][] [@akulsr0](https://github.com/akulsr0))

##### Changed

-   \[Refactor] `variableUtil`: Avoid creating a single flat variable scope for each lookup ([#3782][] [@DanielRosenwasser](https://github.com/DanielRosenwasser))

[7.35.0]: https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.4...v7.35.0

[#3785]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3785

[#3784]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3784

[#3782]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3782

[#3777]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3777

[#3774]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3774

[#3772]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3772

[#3771]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3771

[#3759]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3759

[#3748]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3748

[#3724]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3724

[#3694]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3694
##### [v7.34.4](https://github.com/jsx-eslint/eslint-plugin-react/blob/HEAD/CHANGELOG.md#7344---20240713)

##### Fixed

-   \[`prop-types`]: fix `className` missing in prop validation false negative ([#3749] [@akulsr0](https://github.com/akulsr0))
-   \[`sort-prop-types`]: Check for undefined before accessing `node.typeAnnotation.typeAnnotation` ([#3779] [@tylerlaprade](https://github.com/tylerlaprade))

[7.34.4]: https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.3...v7.34.4

[#3779]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3779

[#3749]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3749
##### [v7.34.3](https://github.com/jsx-eslint/eslint-plugin-react/blob/HEAD/CHANGELOG.md#7343---20240618)

##### Fixed

-   \[`prop-types`]: null-check rootNode before calling getScope ([#3762][] [@crnhrv](https://github.com/crnhrv))
-   \[`boolean-prop-naming`]: avoid a crash with a spread prop ([#3733][] [@ljharb](https://github.com/ljharb))
-   \[`jsx-boolean-value`]: `assumeUndefinedIsFalse` with `never` must not allow explicit `true` value ([#3757][] [@6uliver](https://github.com/6uliver))
-   \[`no-object-type-as-default-prop`]: enable rule for components with many parameters ([#3768][] [@JulienR1](https://github.com/JulienR1))
-   \[`jsx-key`]: incorrect behavior for checkKeyMustBeforeSpread with map callbacks ([#3769][] [@akulsr0](https://github.com/akulsr0))

[7.34.3]: https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.2...v7.34.3

[#3769]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3769

[#3768]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3768

[#3762]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3762

[#3757]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3757

[#3733]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3733
##### [v7.34.2](https://github.com/jsx-eslint/eslint-plugin-react/releases/tag/v7.34.2)

##### Fixed

-   [`boolean-prop-naming`][boolean-prop-naming]: avoid a crash with a non-TSTypeReference type ([#3718][] [@developer-bandi](https://github.com/developer-bandi))
-   [`jsx-no-leaked-render`][jsx-no-leaked-render]: invalid report if left side is boolean ([#3746][] [@akulsr0](https://github.com/akulsr0))
-   [`jsx-closing-bracket-location`][jsx-closing-bracket-location]: message shows `{{details}}` when there are no details ([#3759][] [@mdjermanovic](https://github.com/mdjermanovic))
-   [`no-invalid-html-attribute`][no-invalid-html-attribute]: ensure error messages are correct ([#3759][] [@mdjermanovic](https://github.com/mdjermanovic), [@ljharb](https://github.com/ljharb))

##### Changed

-   \[Refactor] create various eslint utils to fix eslint deprecations ([#3759][] [@mdjermanovic](https://github.com/mdjermanovic), [@ljharb](https://github.com/ljharb))

[7.34.2]: https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.1...v7.34.2

[#3759]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3759

[#3746]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3746

[#3718]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3718

[`boolean-prop-naming`]: docs/rules/boolean-prop-naming.md

[`jsx-no-leaked-render`]: docs/rules/jsx-no-leaked-render.md

[`jsx-closing-bracket-location`]: docs/rules/jsx-closing-bracket-location.md

[`no-invalid-html-attribute`]: docs/rules/no-invalid-html-attribute.md
##### [v7.34.1](https://github.com/jsx-eslint/eslint-plugin-react/releases/tag/v7.34.1)

##### Fixed

-   [`jsx-no-leaked-render`][jsx-no-leaked-render]: prevent wrongly adding parens ([#3700][] [@developer-bandi](https://github.com/developer-bandi))
-   [`boolean-prop-naming`][boolean-prop-naming]: detect TS interfaces ([#3701][] [@developer-bandi](https://github.com/developer-bandi))
-   [`boolean-prop-naming`][boolean-prop-naming]: literalType error fix ([#3704][] [@developer-bandi](https://github.com/developer-bandi))
-   [`boolean-prop-naming`][boolean-prop-naming]: allow TSIntersectionType ([#3705][] [@developer-bandi](https://github.com/developer-bandi))
-   [`no-unknown-property`][no-unknown-property]: support `popover`, `popovertarget`, `popovertargetaction` attributes ([#3707][] [@ljharb](https://github.com/ljharb))
-   [`no-unknown-property`][no-unknown-property]: only match `data-*` attributes containing `-` ([#3713][] [@silverwind](https://github.com/silverwind))
-   [`checked-requires-onchange-or-readonly`][checked-requires-onchange-or-readonly]: correct options that were behaving opposite ([#3715][] [@jaesoekjjang](https://github.com/jaesoekjjang))

##### Changed

-   [`boolean-prop-naming`][boolean-prop-naming]: improve error message ([@ljharb](https://github.com/ljharb))

[#1000]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1000

[#1002]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1002

[#1005]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1005

[#100]: https://github.com/jsx-eslint/eslint-plugin-react/issues/100

[#1010]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1010

[#1013]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1013

[#1022]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1022

[#1029]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1029

[#102]: https://github.com/jsx-eslint/eslint-plugin-react/issues/102

[#1034]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1034

[#1038]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1038

[#1041]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1041

[#1043]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1043

[#1046]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1046

[#1047]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1047

[#1050]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1050

[#1053]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1053

[#1057]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1057

[#105]: https://github.com/jsx-eslint/eslint-plugin-react/issues/105

[#1061]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1061

[#1062]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1062

[#1070]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1070

[#1071]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1071

[#1073]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1073

[#1076]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1076

[#1079]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1079

[#1088]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1088

[#1098]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1098

[#1101]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1101

[#1103]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1103

[#110]: https://github.com/jsx-eslint/eslint-plugin-react/issues/110

[#1116]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1116

[#1117]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1117

[#1119]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1119

[#1121]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1121

[#1122]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1122

[#1123]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1123

[#1130]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1130

[#1131]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1131

[#1132]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1132

[#1134]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1134

[#1135]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1135

[#1139]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1139

[#1148]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1148

[#1149]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1149

[#114]: https://github.com/jsx-eslint/eslint-plugin-react/pull/114

[#1151]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1151

[#1155]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1155

[#1161]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1161

[#1167]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1167

[#1173]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1173

[#1174]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1174

[#1175]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1175

[#1178]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1178

[#1179]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1179

[#117]: https://github.com/jsx-eslint/eslint-plugin-react/pull/117

[#1180]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1180

[#1183]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1183

[#1189]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1189

[#118]: https://github.com/jsx-eslint/eslint-plugin-react/issues/118

[#1192]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1192

[#1195]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1195

[#1199]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1199

[#119]: https://github.com/jsx-eslint/eslint-plugin-react/pull/119

[#11]: https://github.com/jsx-eslint/eslint-plugin-react/issues/11

[#1201]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1201

[#1202]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1202

[#1206]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1206

[#1213]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1213

[#1216]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1216

[#1222]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1222

[#1226]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1226

[#1227]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1227

[#122]: https://github.com/jsx-eslint/eslint-plugin-react/issues/122

[#1231]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1231

[#1236]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1236

[#1239]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1239

[#123]: https://github.com/jsx-eslint/eslint-plugin-react/pull/123

[#1241]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1241

[#1242]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1242

[#1246]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1246

[#1249]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1249

[#1253]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1253

[#1257]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1257

[#125]: https://github.com/jsx-eslint/eslint-plugin-react/issues/125

[#1260]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1260

[#1261]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1261

[#1262]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1262

[#1264]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1264

[#1266]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1266

[#1269]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1269

[#1273]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1273

[#1274]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1274

[#1277]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1277

[#127]: https://github.com/jsx-eslint/eslint-plugin-react/pull/127

[#1281]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1281

[#1287]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1287

[#1288]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1288

[#1289]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1289

[#128]: https://github.com/jsx-eslint/eslint-plugin-react/issues/128

[#1290]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1290

[#1294]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1294

[#1296]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1296

[#129]: https://github.com/jsx-eslint/eslint-plugin-react/issues/129

[#12]: https://github.com/jsx-eslint/eslint-plugin-react/issues/12

[#1301]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1301

[#1303]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1303

[#1306]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1306

[#1308]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1308

[#1309]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1309

[#130]: https://github.com/jsx-eslint/eslint-plugin-react/issues/130

[#1310]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1310

[#1323]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1323

[#1329]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1329

[#132]: https://github.com/jsx-eslint/eslint-plugin-react/issues/132

[#1335]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1335

[#1337]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1337

[#133]: https://github.com/jsx-eslint/eslint-plugin-react/issues/133

[#1344]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1344

[#1352]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1352

[#1353]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1353

[#1354]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1354

[#135]: https://github.com/jsx-eslint/eslint-plugin-react/issues/135

[#1361]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1361

[#1363]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1363

[#1364]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1364

[#1366]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1366

[#1369]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1369

[#136]: https://github.com/jsx-eslint/eslint-plugin-react/issues/136

[#1374]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1374

[#1376]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1376

[#137]: https://github.com/jsx-eslint/eslint-plugin-react/issues/137

[#1380]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1380

[#1381]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1381

[#1382]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1382

[#1383]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1383

[#1384]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1384

[#1386]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1386

[#1388]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1388

[#1389]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1389

[#138]: https://github.com/jsx-eslint/eslint-plugin-react/pull/138

[#1392]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1392

[#1395]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1395

[#1396]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1396

[#1398]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1398

[#139]: https://github.com/jsx-eslint/eslint-plugin-react/issues/139

[#13]: https://github.com/jsx-eslint/eslint-plugin-react/issues/13

[#1400]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1400

[#1403]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1403

[#1406]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1406

[#1409]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1409

[#1412]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1412

[#1413]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1413

[#1414]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1414

[#1417]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1417

[#1422]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1422

[#1423]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1423

[#142]: https://github.com/jsx-eslint/eslint-plugin-react/issues/142

[#1432]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1432

[#1435]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1435

[#1438]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1438

[#1444]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1444

[#1449]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1449

[#144]: https://github.com/jsx-eslint/eslint-plugin-react/issues/144

[#1450]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1450

[#145]: https://github.com/jsx-eslint/eslint-plugin-react/issues/145

[#1462]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1462

[#1464]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1464

[#1467]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1467

[#1468]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1468

[#146]: https://github.com/jsx-eslint/eslint-plugin-react/issues/146

[#1471]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1471

[#1475]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1475

[#1476]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1476

[#1478]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1478

[#1479]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1479

[#147]: https://github.com/jsx-eslint/eslint-plugin-react/pull/147

[#1485]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1485

[#148]: https://github.com/jsx-eslint/eslint-plugin-react/issues/148

[#1493]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1493

[#1494]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1494

[#1496]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1496

[#1497]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1497

[#1499]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1499

[#14]: https://github.com/jsx-eslint/eslint-plugin-react/issues/14

[#1500]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1500

[#1502]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1502

[#1507]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1507

[#1508]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1508

[#1511]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1511

[#1512]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1512

[#1514]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1514

[#1515]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1515

[#1517]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1517

[#1518]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1518

[#1521]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1521

[#1524]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1524

[#1525]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1525

[#1526]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1526

[#1530]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1530

[#1533]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1533

[#1538]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1538

[#1542]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1542

[#1543]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1543

[#1546]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1546

[#1547]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1547

[#154]: https://github.com/jsx-eslint/eslint-plugin-react/issues/154

[#1552]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1552

[#1559]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1559

[#1562]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1562

[#1566]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1566

[#156]: https://github.com/jsx-eslint/eslint-plugin-react/pull/156

[#1571]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1571

[#1572]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1572

[#1576]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1576

[#1578]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1578

[#1581]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1581

[#1588]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1588

[#1591]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1591

[#1595]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1595

[#1597]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1597

[#159]: https://github.com/jsx-eslint/eslint-plugin-react/issues/159

[#15]: https://github.com/jsx-eslint/eslint-plugin-react/issues/15

[#1607]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1607

[#1610]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1610

[#1611]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1611

[#1617]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1617

[#161]: https://github.com/jsx-eslint/eslint-plugin-react/pull/161

[#1621]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1621

[#1624]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1624

[#1635]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1635

[#1636]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1636

[#163]: https://github.com/jsx-eslint/eslint-plugin-react/issues/163

[#1642]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1642

[#1644]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1644

[#164]: https://github.com/jsx-eslint/eslint-plugin-react/pull/164

[#1650]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1650

[#1653]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1653

[#1655]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1655

[#1657]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1657

[#1659]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1659

[#165]: https://github.com/jsx-eslint/eslint-plugin-react/issues/165

[#1665]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1665

[#1666]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1666

[#1669]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1669

[#1670]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1670

[#1675]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1675

[#1677]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1677

[#167]: https://github.com/jsx-eslint/eslint-plugin-react/pull/167

[#1681]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1681

[#1689]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1689

[#1690]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1690

[#1699]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1699

[#16]: https://github.com/jsx-eslint/eslint-plugin-react/issues/16

[#1703]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1703

[#1717]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1717

[#1722]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1722

[#1724]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1724

[#1728]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1728

[#172]: https://github.com/jsx-eslint/eslint-plugin-react/issues/172

[#1732]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1732

[#1737]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1737

[#1742]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1742

[#1743]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1743

[#1749]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1749

[#1750]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1750

[#1753]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1753

[#1754]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1754

[#1755]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1755

[#1758]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1758

[#1759]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1759

[#1764]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1764

[#1767]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1767

[#176]: https://github.com/jsx-eslint/eslint-plugin-react/pull/176

[#1779]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1779

[#1783]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1783

[#1785]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1785

[#178]: https://github.com/jsx-eslint/eslint-plugin-react/issues/178

[#1791]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1791

[#1793]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1793

[#1794]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1794

[#1796]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1796

[#1804]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1804

[#1805]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1805

[#1806]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1806

[#1815]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1815

[#1817]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1817

[#1819]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1819

[#181]: https://github.com/jsx-eslint/eslint-plugin-react/issues/181

[#1824]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1824

[#1825]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1825

[#1827]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1827

[#1828]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1828

[#1829]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1829

[#182]: https://github.com/jsx-eslint/eslint-plugin-react/issues/182

[#1830]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1830

[#1831]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1831

[#183]: https://github.com/jsx-eslint/eslint-plugin-react/pull/183

[#1843]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1843

[#1844]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1844

[#1845]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1845

[#1849]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1849

[#184]: https://github.com/jsx-eslint/eslint-plugin-react/issues/184

[#1851]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1851

[#1854]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1854

[#1857]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1857

[#1858]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1858

[#1860]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1860

[#1861]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1861

[#1863]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1863

[#1867]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1867

[#1868]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1868

[#1873]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1873

[#1874]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1874

[#187]: https://github.com/jsx-eslint/eslint-plugin-react/pull/187

[#1880]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1880

[#1883]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1883

[#1890]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1890

[#1891]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1891

[#1892]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1892

[#1898]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1898

[#189]: https://github.com/jsx-eslint/eslint-plugin-react/pull/189

[#1903]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1903

[#1905]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1905

[#1907]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1907

[#1909]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1909

[#1911]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1911

[#1914]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1914

[#1918]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1918

[#1924]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1924

[#1926]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1926

[#1929]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1929

[#192]: https://github.com/jsx-eslint/eslint-plugin-react/issues/192

[#1932]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1932

[#1939]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1939

[#193]: https://github.com/jsx-eslint/eslint-plugin-react/pull/193

[#1941]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1941

[#1942]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1942

[#1945]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1945

[#1946]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1946

[#1949]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1949

[#1953]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1953

[#1956]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1956

[#1957]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1957

[#1977]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1977

[#1978]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1978

[#197]: https://github.com/jsx-eslint/eslint-plugin-react/pull/197

[#1980]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1980

[#1983]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1983

[#1984]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1984

[#1988]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1988

[#1989]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1989

[#198]: https://github.com/jsx-eslint/eslint-plugin-react/pull/198

[#1994]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1994

[#1995]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1995

[#199]: https://github.com/jsx-eslint/eslint-plugin-react/issues/199

[#2001]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2001

[#2002]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2002

[#2004]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2004

[#2006]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2006

[#2008]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2008

[#2012]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2012

[#2015]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2015

[#2016]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2016

[#201]: https://github.com/jsx-eslint/eslint-plugin-react/issues/201

[#2026]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2026

[#2029]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2029

[#2032]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2032

[#2040]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2040

[#2043]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2043

[#2044]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2044

[#2051]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2051

[#2056]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2056

[#2061]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2061

[#2064]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2064

[#2065]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2065

[#2067]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2067

[#2069]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2069

[#206]: https://github.com/jsx-eslint/eslint-plugin-react/pull/206

[#2075]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2075

[#2082]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2082

[#2084]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2084

[#2085]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2085

[#2086]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2086

[#2089]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2089

[#208]: https://github.com/jsx-eslint/eslint-plugin-react/pull/208

[#2090]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2090

[#2095]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2095

[#2097]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2097

[#2098]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2098

[#2099]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2099

[#2100]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2100

[#2102]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2102

[#2103]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2103

[#2104]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2104

[#2109]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2109

[#210]: https://github.com/jsx-eslint/eslint-plugin-react/issues/210

[#2110]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2110

[#2111]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2111

[#2113]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2113

[#2114]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2114

[#2115]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2115

[#2116]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2116

[#2117]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2117

[#2118]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2118

[#211]: https://github.com/jsx-eslint/eslint-plugin-react/issues/211

[#2120]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2120

[#2123]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2123

[#2125]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2125

[#2127]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2127

[#2128]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2128

[#2131]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2131

[#2134]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2134

[#2136]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2136

[#2137]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2137

[#213]: https://github.com/jsx-eslint/eslint-plugin-react/issues/213

[#2143]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2143

[#2145]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2145

[#2146]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2146

[#2147]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2147

[#214]: https://github.com/jsx-eslint/eslint-plugin-react/issues/214

[#215]: https://github.com/jsx-eslint/eslint-plugin-react/issues/215

[#2166]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2166

[#2167]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2167

[#217]: https://github.com/jsx-eslint/eslint-plugin-react/issues/217

[#2180]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2180

[#2182]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2182

[#2183]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2183

[#2184]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2184

[#2191]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2191

[#2193]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2193

[#2198]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2198

[#219]: https://github.com/jsx-eslint/eslint-plugin-react/pull/219

[#2200]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2200

[#2202]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2202

[#2203]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2203

[#2206]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2206

[#2207]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2207

[#220]: https://github.com/jsx-eslint/eslint-plugin-react/issues/220

[#2210]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2210

[#221]: https://github.com/jsx-eslint/eslint-plugin-react/issues/221

[#2225]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2225

[#2227]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2227

[#2229]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2229

[#222]: https://github.com/jsx-eslint/eslint-plugin-react/pull/222

[#2230]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2230

[#2232]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2232

[#2233]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2233

[#2234]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2234

[#2238]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2238

[#2246]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2246

[#2250]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2250

[#2256]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2256

[#2259]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2259

[#2261]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2261

[#2262]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2262

[#2263]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2263

[#2265]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2265

[#2267]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2267

[#226]: https://github.com/jsx-eslint/eslint-plugin-react/issues/226

[#2273]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2273

[#2274]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2274

[#2276]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2276

[#2283]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2283

[#2286]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2286

[#2288]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2288

[#228]: https://github.com/jsx-eslint/eslint-plugin-react/issues/228

[#2292]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2292

[#2294]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2294

[#2295]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2295

[#2298]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2298

[#229]: https://github.com/jsx-eslint/eslint-plugin-react/issues/229

[#22]: https://github.com/jsx-eslint/eslint-plugin-react/pull/22

[#2302]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2302

[#2303]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2303

[#2304]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2304

[#230]: https://github.com/jsx-eslint/eslint-plugin-react/issues/230

[#2312]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2312

[#2316]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2316

[#2319]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2319

[#2326]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2326

[#232]: https://github.com/jsx-eslint/eslint-plugin-react/pull/232

[#2330]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2330

[#2336]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2336

[#233]: https://github.com/jsx-eslint/eslint-plugin-react/issues/233

[#2349]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2349

[#2354]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2354

[#2359]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2359

[#235]: https://github.com/jsx-eslint/eslint-plugin-react/issues/235

[#2361]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2361

[#2364]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2364

[#2367]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2367

[#236]: https://github.com/jsx-eslint/eslint-plugin-react/issues/236

[#2375]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2375

[#2378]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2378

[#237]: https://github.com/jsx-eslint/eslint-plugin-react/issues/237

[#2380]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2380

[#2383]: https://github.com/jsx-eslint/eslint-plugin-react/issue/2383

[#2385]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2385

[#2391]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2391

[#2392]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2392

[#2395]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2395

[#2399]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2399

[#23]: https://github.com/jsx-eslint/eslint-plugin-react/issues/23

[#2402]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2402

[#2408]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2408

[#2409]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2409

[#240]: https://github.com/jsx-eslint/eslint-plugin-react/issues/240

[#2410]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2410

[#2414]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2414

[#2419]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2419

[#2422]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2422

[#2425]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2425

[#2426]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2426

[#2428]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2428

[#2429]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2429

[#242]: https://github.com/jsx-eslint/eslint-plugin-react/pull/242

[#2431]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2431

[#2436]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2436

[#2437]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2437

[#2438]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2438

[#243]: https://github.com/jsx-eslint/eslint-plugin-react/issues/243

[#2443]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2443

[#2446]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2446

[#2448]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2448

[#2449]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2449

[#244]: https://github.com/jsx-eslint/eslint-plugin-react/issues/244

[#2451]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2451

[#2453]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2453

[#2460]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2460

[#2463]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2463

[#2465]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2465

[#2468]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2468

[#2469]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2469

[#2470]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2470

[#2478]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2478

[#247]: https://github.com/jsx-eslint/eslint-plugin-react/issues/247

[#2483]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2483

[#2489]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2489

[#248]: https://github.com/jsx-eslint/eslint-plugin-react/pull/248

[#249]: https://github.com/jsx-eslint/eslint-plugin-react/issues/249

[#24]: https://github.com/jsx-eslint/eslint-plugin-react/issues/24

[#2500]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2500

[#2504]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2504

[#2505]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2505

[#2507]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2507

[#2510]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2510

[#2514]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2514

[#251]: https://github.com/jsx-eslint/eslint-plugin-react/issues/251

[#2521]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2521

[#2523]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2523

[#2532]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2532

[#2533]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2533

[#2534]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2534

[#2535]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2535

[#2536]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2536

[#2540]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2540

[#2542]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2542

[#2544]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2544

[#2546]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2546

[#2547]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2547

[#254]: https://github.com/jsx-eslint/eslint-plugin-react/issues/254

[#2556]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2556

[#2557]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2557

[#255]: https://github.com/jsx-eslint/eslint-plugin-react/issues/255

[#2560]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2560

[#2561]: https://github.com/jsx-eslint/eslint-plugin-react/issue/2561

[#2564]: https://github.com/jsx-eslint/eslint-plugin-react/issue/2564

[#2568]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2568

[#256]: https://github.com/jsx-eslint/eslint-plugin-react/issues/256

[#2570]: https://github.com/jsx-eslint/eslint-plugin-react/issue/2570

[#2572]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2572

[#2575]: https://github.com/jsx-eslint/eslint-plugin-react/issue/2575

[#2578]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2578

[#2581]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2581

[#2582]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2582

[#2583]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2583

[#2587]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2587

[#2588]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2588

[#2593]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2593

[#2595]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2595

[#2596]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2596

[#259]: https://github.com/jsx-eslint/eslint-plugin-react/issues/259

[#2601]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2601

[#2604]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2604

[#2606]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2606

[#2608]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2608

[#2610]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2610

[#2614]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2614

[#2615]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2615

[#2616]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2616

[#261]: https://github.com/jsx-eslint/eslint-plugin-react/pull/261

[#2621]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2621

[#2625]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2625

[#2633]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2633

[#2635]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2635

[#2636]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2636

[#2638]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2638

[#2640]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2640

[#2643]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2643

[#264]: https://github.com/jsx-eslint/eslint-plugin-react/issues/264

[#2661]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2661

[#2667]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2667

[#2673]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2673

[#2676]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2676

[#2679]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2679

[#267]: https://github.com/jsx-eslint/eslint-plugin-react/issues/267

[#2680]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2680

[#2682]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2682

[#2683]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2683

[#2687]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2687

[#268]: https://github.com/jsx-eslint/eslint-plugin-react/issues/268

[#2690]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2690

[#2693]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2693

[#2696]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2696

[#2697]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2697

[#2699]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2699

[#269]: https://github.com/jsx-eslint/eslint-plugin-react/issues/269

[#2704]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2704

[#2708]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2708

[#2710]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2710

[#2711]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2711

[#2712]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2712

[#2713]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2713

[#2716]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2716

[#2721]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2721

[#2724]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2724

[#2730]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2730

[#2731]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2731

[#2733]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2733

[#2736]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2736

[#2737]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2737

[#2740]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2740

[#2741]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2741

[#2744]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2744

[#2746]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2746

[#2748]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2748

[#2750]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2750

[#2753]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2753

[#2756]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2756

[#2757]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2757

[#2759]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2759

[#2761]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2761

[#2763]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2763

[#2767]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2767

[#276]: https://github.com/jsx-eslint/eslint-plugin-react/issues/276

[#2770]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2770

[#2771]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2771

[#2772]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2772

[#2775]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2775

[#2779]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2779

[#277]: https://github.com/jsx-eslint/eslint-plugin-react/issues/277

[#2780]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2780

[#2782]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2782

[#2789]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2789

[#2790]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2790

[#2791]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2791

[#2792]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2792

[#2796]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2796

[#2797]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2797

[#2799]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2799

[#27]: https://github.com/jsx-eslint/eslint-plugin-react/issues/27

[#2801]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2801

[#2802]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2802

[#2803]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2803

[#2805]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2805

[#2807]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2807

[#2808]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2808

[#280]: https://github.com/jsx-eslint/eslint-plugin-react/issues/280

[#2813]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2813

[#2815]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2815

[#2816]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2816

[#281]: https://github.com/jsx-eslint/eslint-plugin-react/issues/281

[#2820]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2820

[#2822]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2822

[#2823]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2823

[#2826]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2826

[#2833]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2833

[#2835]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2835

[#2840]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2840

[#2843]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2843

[#2846]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2846

[#2848]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2848

[#2851]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2851

[#2852]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2852

[#2855]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2855

[#285]: https://github.com/jsx-eslint/eslint-plugin-react/issues/285

[#2861]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2861

[#2862]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2862

[#2863]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2863

[#2869]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2869

[#286]: https://github.com/jsx-eslint/eslint-plugin-react/issues/286

[#2870]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2870

[#2871]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2871

[#2875]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2875

[#2877]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2877

[#2878]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2878

[#2879]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2879

[#287]: https://github.com/jsx-eslint/eslint-plugin-react/issues/287

[#2881]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2881

[#2882]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2882

[#2883]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2883

[#2891]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2891

[#2893]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2893

[#2894]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2894

[#2895]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2895

[#2897]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2897

[#2899]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2899

[#28]: https://github.com/jsx-eslint/eslint-plugin-react/issues/28

[#2900]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2900

[#2906]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2906

[#2908]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2908

[#290]: https://github.com/jsx-eslint/eslint-plugin-react/issues/290

[#2910]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2910

[#2917]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2917

[#291]: https://github.com/jsx-eslint/eslint-plugin-react/issues/291

[#2921]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2921

[#2923]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2923

[#2925]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2925

[#2929]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2929

[#2930]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2930

[#2933]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2933

[#2935]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2935

[#293]: https://github.com/jsx-eslint/eslint-plugin-react/pull/293

[#2943]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2943

[#2945]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2945

[#2949]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2949

[#2950]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2950

[#2953]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2953

[#2957]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2957

[#2961]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2961

[#2963]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2963

[#2965]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2965

[#296]: https://github.com/jsx-eslint/eslint-plugin-react/issues/296

[#2972]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2972

[#2974]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2974

[#2975]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2975

[#2977]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2977

[#297]: https://github.com/jsx-eslint/eslint-plugin-react/issues/297

[#2980]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2980

[#2982]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2982

[#2985]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2985

[#2986]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2986

[#2989]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2989

[#298]: https://github.com/jsx-eslint/eslint-plugin-react/issues/298

[#2990]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2990

[#2992]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2992

[#2994]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2994

[#2998]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2998

[#29]: https://github.com/jsx-eslint/eslint-plugin-react/issues/29

[#3001]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3001

[#3002]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3002

[#3006]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3006

[#300]: https://github.com/jsx-eslint/eslint-plugin-react/issues/300

[#3016]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3016

[#3018]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3018

[#301]: https://github.com/jsx-eslint/eslint-plugin-react/pull/301

[#3025]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3025

[#3026]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3026

[#3036]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3036

[#3038]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3038

[#3039]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3039

[#303]: https://github.com/jsx-eslint/eslint-plugin-react/issues/303

[#3043]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3043

[#3048]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3048

[#3049]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3049

[#3051]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3051

[#3052]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3052

[#3053]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3053

[#3056]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3056

[#3059]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3059

[#3061]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3061

[#3064]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3064

[#3065]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3065

[#3066]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3066

[#306]: https://github.com/jsx-eslint/eslint-plugin-react/pull/306

[#3070]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3070

[#3071]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3071

[#3076]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3076

[#3078]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3078

[#307]: https://github.com/jsx-eslint/eslint-plugin-react/issues/307

[#3082]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3082

[#3083]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3083

[#3085]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3085

[#3088]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3088

[#308]: https://github.com/jsx-eslint/eslint-plugin-react/pull/308

[#3092]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3092

[#30]: https://github.com/jsx-eslint/eslint-plugin-react/issues/30

[#3102]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3102

[#3110]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3110

[#3111]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3111

[#3112]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3112

[#3113]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3113

[#3122]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3122

[#3124]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3124

[#3126]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3126

[#3129]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3129

[#3132]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3132

[#3133]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3133

[#3136]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3136

[#3141]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3141

[#3142]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3142

[#3144]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3144

[#3145]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3145

[#3146]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3146

[#3149]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3149

[#314]: https://github.com/jsx-eslint/eslint-plugin-react/pull/314

[#3156]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3156

[#315]: https://github.com/jsx-eslint/eslint-plugin-react/pull/315

[#3160]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3160

[#3163]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3163

[#3167]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3167

[#3169]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3169

[#3174]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3174

[#317]: https://github.com/jsx-eslint/eslint-plugin-react/issues/317

[#3182]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3182

[#3186]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3186

[#3189]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3189

[#318]: https://github.com/jsx-eslint/eslint-plugin-react/issues/318

[#3190]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3190

[#3191]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3191

[#3195]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3195

[#3198]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3198

[#3199]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3199

[#319]: https://github.com/jsx-eslint/eslint-plugin-react/issues/319

[#3202]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3202

[#3203]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3203

[#3207]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3207

[#320]: https:…
##### [v0.5.4](https://github.com/veritem/eslint-plugin-vitest/releases/tag/v0.5.4)

##### Features

-   support old Eslint configuration
-   update dependencies
##### [v0.5.3](https://github.com/veritem/eslint-plugin-vitest/releases/tag/v0.5.3)

##### Bug Fixes

-   configs in plugin declaration file ([#428](vitest-dev/eslint-plugin-vitest#428)) ([a554dd2](vitest-dev/eslint-plugin-vitest@a554dd2))
##### [v0.5.2](https://github.com/veritem/eslint-plugin-vitest/releases/tag/v0.5.2)

##### Features

-   **no-focused-tests:** add autofix ([#424](vitest-dev/eslint-plugin-vitest#424)) ([07be616](vitest-dev/eslint-plugin-vitest@07be616))
##### [v0.5.1](https://github.com/veritem/eslint-plugin-vitest/releases/tag/v0.5.1)

##### Bug Fixes

-   **no-focused-tests:** support .each template strings ([#420](vitest-dev/eslint-plugin-vitest#420)) ([36e5b9a](vitest-dev/eslint-plugin-vitest@36e5b9a))
##### [v0.5.0](https://github.com/veritem/eslint-plugin-vitest/releases/tag/v0.5.0)

##### ‼️ Breaking Change 🚨

This version only supports flat config!

If you run into issues consider downgrading and opening an issue ofcourse.

**Full Changelog**: vitest-dev/eslint-plugin-vitest@v0.5.0...v0.5.0
##### [v0.4.1](https://github.com/veritem/eslint-plugin-vitest/releases/tag/v0.4.1)

**Full Changelog**: vitest-dev/eslint-plugin-vitest@v0.4.1...v0.4.1

##### Changes

-   Remove `max-expect` rule in favor of `max-expects`
##### [v0.4.0](https://github.com/veritem/eslint-plugin-vitest/releases/tag/v0.4.0)

##### Bug Fixes

-   support ESLint v9 getScope() ([#399](vitest-dev/eslint-plugin-vitest#399)) ([bbe0130](vitest-dev/eslint-plugin-vitest@bbe0130))

**Full Changelog**: vitest-dev/eslint-plugin-vitest@v0.4.0...v0.4.0
##### [v3.3.3](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#333)

[diff](prettier/prettier@3.3.2...3.3.3)

##### Add parentheses for nullish coalescing in ternary ([#16391](prettier/prettier#16391) by [@cdignam-segment](https://github.com/cdignam-segment))

This change adds clarity to operator precedence.

<!-- prettier-ignore -->

```js
// Input
foo ? bar ?? foo : baz;
foo ?? bar ? a : b;
a ? b : foo ?? bar;

// Prettier 3.3.2
foo ? bar ?? foo : baz;
foo ?? bar ? a : b;
a ? b : foo ?? bar;

// Prettier 3.3.3
foo ? (bar ?? foo) : baz;
(foo ?? bar) ? a : b;
a ? b : (foo ?? bar);
```

##### Add parentheses for decorator expressions ([#16458](prettier/prettier#16458) by [@y-schneider](https://github.com/y-schneider))

Prevent parentheses around member expressions or tagged template literals from being removed to follow the stricter parsing rules of TypeScript 5.5.

<!-- prettier-ignore -->

```ts
// Input
@(foo`tagged template`)
class X {}

// Prettier 3.3.2
@foo`tagged template`
class X {}

// Prettier 3.3.3
@(foo`tagged template`)
class X {}
```

##### Support `@let` declaration syntax ([#16474](prettier/prettier#16474) by [@sosukesuzuki](https://github.com/sosukesuzuki))

Adds support for Angular v18 `@let` declaration syntax.

Please see the following code example. The `@let` declaration allows you to define local variables within the template:

<!-- prettier-ignore -->

```html
@let name = 'Frodo';

<h1>Dashboard for {{name}}</h1>
Hello, {{name}}
```

For more details, please refer to the excellent blog post by the Angular Team: [Introducing @let in Angular](https://blog.angular.dev/introducing-let-in-angular-686f9f383f0f).

We also appreciate the Angular Team for kindly answering our questions to implement this feature.
##### [v3.3.2](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#332)

[diff](prettier/prettier@3.3.1...3.3.2)

##### Fix handlebars path expressions starts with `@` ([#16358](prettier/prettier#16358) by [@Princeyadav05](https://github.com/Princeyadav05))

<!-- prettier-ignore -->

```hbs
{{! Input }}
<div>{{@x.y.z}}</div>

{{! Prettier 3.3.1 }}
<div>{{@x}}</div>

{{! Prettier 3.3.2 }}
<div>{{@x.y.z}}</div>
```
##### [v3.3.1](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#331)

[diff](prettier/prettier@3.3.0...3.3.1)

##### Preserve empty lines in front matter ([#16347](prettier/prettier#16347) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```markdown
<!-- Input -->
---
foo:
  - bar1

  - bar2

  - bar3
---
Markdown

<!-- Prettier 3.3.0 -->

---
foo:
  - bar1
  - bar2
  - bar3
---

Markdown


<!-- Prettier 3.3.1 -->
---
foo:
  - bar1

  - bar2

  - bar3
---

Markdown
```

##### Preserve explicit language in front matter ([#16348](prettier/prettier#16348) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```markdown
<!-- Input -->
---yaml
title: Hello
slug: home
---

<!-- Prettier 3.3.0 -->
---
title: Hello
slug: home
---

<!-- Prettier 3.3.1 -->
---yaml
title: Hello
slug: home
---
```

##### Avoid line breaks in import attributes ([#16349](prettier/prettier#16349) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
import something from "./some-very-very-very-very-very-very-very-very-long-path.json" with { type: "json" };

// Prettier 3.3.0
import something from "./some-very-very-very-very-very-very-very-very-long-path.json" with { type:
  "json" };

// Prettier 3.3.1
import something from "./some-very-very-very-very-very-very-very-very-long-path.json" with { type: "json" };
```
##### [v3.3.0](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#330)

[diff](prettier/prettier@3.2.5...3.3.0)

🔗 [Release Notes](https://prettier.io/blog/2024/06/01/3.3.0.html)
##### [v3.2.5](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#325)

[diff](prettier/prettier@3.2.4...3.2.5)

##### Support Angular inline styles as single template literal ([#15968](prettier/prettier#15968) by [@sosukesuzuki](https://github.com/sosukesuzuki))

[Angular v17](https://blog.angular.io/introducing-angular-v17-4d7033312e4b) supports single string inline styles.

<!-- prettier-ignore -->

```ts
// Input
@component({
  template: `<div>...</div>`,
  styles: `h1 { color: blue; }`,
})
export class AppComponent {}

// Prettier 3.2.4
@component({
  template: `<div>...</div>`,
  styles: `h1 { color: blue; }`,
})
export class AppComponent {}

// Prettier 3.2.5
@component({
  template: `<div>...</div>`,
  styles: `
    h1 {
      color: blue;
    }
  `,
})
export class AppComponent {}

```

##### Unexpected embedded formatting for Angular template ([#15969](prettier/prettier#15969) by [@JounQin](https://github.com/JounQin))

Computed template should not be considered as Angular component template

<!-- prettier-ignore -->

```ts
// Input
const template = "foobar";

@component({
  [template]: `<h1>{{       hello }}</h1>`,
})
export class AppComponent {}

// Prettier 3.2.4
const template = "foobar";

@component({
  [template]: `<h1>{{ hello }}</h1>`,
})
export class AppComponent {}

// Prettier 3.2.5
const template = "foobar";

@component({
  [template]: `<h1>{{       hello }}</h1>`,
})
export class AppComponent {}
```

##### Use `"json"` parser for `tsconfig.json` by default ([#16012](prettier/prettier#16012) by [@sosukesuzuki](https://github.com/sosukesuzuki))

In [v2.3.0](https://prettier.io/blog/2024/01/12/3.2.0#new-jsonc-parser-added-15831httpsgithubcomprettierprettierpull15831-by-fiskerhttpsgithubcomfisker), we introduced `"jsonc"` parser which adds trialing comma **by default**.

When adding a new parser we also define how it will be used based on the [`linguist-languages`](https://www.npmjs.com/package/linguist-languages) data.

`tsconfig.json` is a special file used by [TypeScript](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#using-tsconfigjson-or-jsconfigjson), it uses `.json` file extension, but it actually uses the [JSON with Comments](https://code.visualstudio.com/docs/languages/json#\_json-with-comments) syntax. However, we found that there are many third-party tools not recognize it correctly because of the confusing `.json` file extension.

We decide to treat it as a JSON file for now to avoid the extra configuration step.

To keep using the `"jsonc"` parser for your `tsconfig.json` files, add the following to your `.pretterrc` file

```json
{
  "overrides": [
    {
      "files": ["tsconfig.json", "jsconfig.json"],
      "options": {
        "parser": "jsonc"
      }
    }
  ]
}
```

<!-- prettier-ignore -->

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

[diff](prettier/prettier@3.2.3...3.2.4)

##### Fix incorrect parser inference ([#15947](prettier/prettier#15947) by [@fisker](https://github.com/fisker))

Files like `.eslintrc.json` were incorrectly formatted as JSONC files.

<!-- prettier-ignore -->

```jsx
// Input
prettier --file-info .eslintrc.json
{ "ignored": false, "inferredParser": "jsonc" }

// Prettier 3.2.4
prettier --file-info .eslintrc.json
{ "ignored": false, "inferredParser": "json" }
```
##### [v3.2.3](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#323)

[diff](prettier/prettier@3.2.2...3.2.3)

##### Throw errors for invalid code ([#15881](prettier/prettier#15881) by [@fisker](https://github.com/fisker), [@Josh-Cena](https://github.com/Josh-Cena), [@auvred](https://github.com/auvred))

<!-- prettier-ignore -->

```ts
// Input
1++;

// Prettier 3.2.2
1++;

// Prettier 3.2.3
SyntaxError: Invalid left-hand side expression in unary operation (1:1)
> 1 | 1++;
    | ^
```

<!-- prettier-ignore -->

```ts
// Input
try {} catch (error = 1){}

// Prettier 3.2.2
try {
} catch (error) {}

// Prettier 3.2.3
SyntaxError: Catch clause variable cannot have an initializer. (1:23)
> 1 | try {} catch (error = 1){}
    |                       ^
```

##### Fix parser inference ([#15927](prettier/prettier#15927) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```console
// Prettier 3.2.2
prettier --file-info tsconfig.json
{ "ignored": false, "inferredParser": "json" }

// Prettier 3.2.3
prettier --file-info tsconfig.json
{ "ignored": false, "inferredParser": "jsonc" }
```
##### [v3.2.2](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#322)

[diff](prettier/prettier@3.2.1...3.2.2)

##### Fix crash when parsing template literal CSS in a JSX style tag using a spread attribute ([#15896](prettier/prettier#15896) by [@eelco](https://github.com/eelco))

For example this code would crash before:

<!-- prettier-ignore -->

```jsx
<style {...spread}>{`.{}`}</style>
```

##### Fix formatting error on optional call expression and member chain ([#15920](prettier/prettier#15920) by [@sosukesuzuki](https://github.com/sosukesuzuki))

<!-- prettier-ignore -->

```jsx
// Input
a(() => {}, c?.d());

// Prettier 3.2.1
TypeError: Cannot read properties of undefined (reading 'type')

// Prettier 3.2.2
a(() => {}, c?.d());
```
##### [v3.2.1](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#321)

[diff](prettier/prettier@3.2.0...3.2.1)

##### Fix formatting error on member chain ([#15915](prettier/prettier#15915) by [@sosukesuzuki](https://github.com/sosukesuzuki))

<!-- prettier-ignore -->

```jsx
// Input
test().test2().test2(thing?.something);

// Prettier 3.2.0
TypeError: Cannot read properties of undefined (reading 'type')

// Prettier 3.2.1
test().test2().test2(thing?.something);

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

[diff](prettier/prettier@3.1.1...3.2.0)

🔗 [Release Notes](https://prettier.io/blog/2024/01/13/3.2.0.html)
##### [v3.1.1](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#311)

[diff](prettier/prettier@3.1.0...3.1.1)

##### Fix config file search ([#15363](prettier/prettier#15363) by [@fisker](https://github.com/fisker))

Previously, we start search for config files from the filePath as a directory, if it happened to be a directory and contains config file, it will be used by mistake.

```text
├─ .prettierrc
└─ test.js         (A directory)
  └─ .prettierrc
```

```js
// Prettier 3.1.0
await prettier.resolveConfigFile(new URL("./test.js", import.meta.url));
// <CWD>/test.js/.prettierrc

// Prettier 3.1.1
await prettier.resolveConfigFile(new URL("./test.js", import.meta.url));
// <CWD>/.prettierrc
```

##### Skip explicitly passed symbolic links with `--no-error-on-unmatched-pattern` ([#15533](prettier/prettier#15533) by [@sanmai-NL](https://github.com/sanmai-NL))

Since Prettier v3, we stopped following symbolic links, however in some use cases, the symbolic link patterns can't be filtered out, and there is no way to prevent Prettier from throwing errors.

In Prettier 3.1.1, you can use `--no-error-on-unmatched-pattern` to simply skip symbolic links.

##### Consistently use tabs in ternaries when `useTabs` is `true` ([#15662](prettier/prettier#15662) by [@auvred](https://github.com/auvred))

<!-- prettier-ignore -->

```jsx
// Input
aaaaaaaaaaaaaaa
	? bbbbbbbbbbbbbbbbbb
	: ccccccccccccccc
	  ? ddddddddddddddd
	  : eeeeeeeeeeeeeee
	    ? fffffffffffffff
	    : gggggggggggggggg;

// Prettier 3.1.0
aaaaaaaaaaaaaaa
	? bbbbbbbbbbbbbbbbbb
	: ccccccccccccccc
	  ? ddddddddddddddd
	  : eeeeeeeeeeeeeee
	    ? fffffffffffffff
	    : gggggggggggggggg;

// Prettier 3.1.1
aaaaaaaaaaaaaaa
	? bbbbbbbbbbbbbbbbbb
	: ccccccccccccccc
		? ddddddddddddddd
		: eeeeeeeeeeeeeee
			? fffffffffffffff
			: gggggggggggggggg;
```

##### Improve config file search ([#15663](prettier/prettier#15663) by [@fisker](https://github.com/fisker))

The Prettier config file search performance has been improved by more effective cache strategy.

##### Fix unstable and ugly formatting for comments in destructuring patterns ([#15708](prettier/prettier#15708) by [@sosukesuzuki](https://github.com/sosukesuzuki))

<!-- prettier-ignore -->

```tsx
// Input
const {
  foo,
  // bar
  // baz
}: Foo = expr;

// Prettier 3.1.0
const {
  foo1,
} // bar
// baz
: Foo = expr;

// Prettier 3.1.0 second output
const {
  foo1, // bar
} // baz
: Foo = expr;

// Prettier 3.1.1
const {
  foo1,
  // bar
  // baz
}: Foo = expr;
```

##### Support "Import Attributes" ([#15718](prettier/prettier#15718) by [@fisker](https://github.com/fisker))

[TypeScript 5.3](https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/#import-attributes) supports the latest updates to the [import attributes](https://github.com/tc39/proposal-import-attributes) proposal.

```tsx
import something from "./something.json" with { type: "json" };
```

##### Fix false claim in docs that cursorOffset is incompatible with rangeStart/rangeEnd ([#15750](prettier/prettier#15750) by [@ExplodingCabbage](https://github.com/ExplodingCabbage))

The cursorOffset option has in fact been compatible with rangeStart/rangeEnd for over 5 years, thanks to work by [@ds300](https://github.com/ds300). However, Prettier's documentation (including the CLI `--help` text) continued to claim otherwise, falsely. The documentation is now fixed.

##### Keep curly braces and `from` keyword in empty `import` statements ([#15756](prettier/prettier#15756) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```js
// Input
import { } from 'foo';
import { /* comment */ } from 'bar';

// Prettier 3.1.0
import {} from "foo";
import /* comment */ "bar";

// Prettier 3.1.1
import {} from "foo";
import {} from /* comment */ "bar";
```

##### Keep empty import attributes and assertions ([#15757](prettier/prettier#15757) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```js
// Input
import foo from "foo" with {};
import bar from "bar" assert {};

// Prettier 3.1.0
import foo from "foo";
import bar from "bar";

// Prettier 3.1.1
import foo from "foo" with {};
import bar from "bar" assert {};
```
##### [v7.18.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7180-2024-07-29)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unnecessary-type-assertion] prevent runtime error when asserting a variable declared in default TS lib

-   **eslint-plugin:** \[unbound-method] report on destructuring in function parameters

-   **eslint-plugin:** \[no-duplicate-type-constituents] shouldn't report on error types

-   **eslint-plugin:** \[strict-boolean-expressions] support branded booleans

##### ❤️  Thank You

-   auvred
-   Oliver Salzburg
-   Vinccool96
-   Yukihiro Hasegawa

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.17.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7170-2024-07-22)

##### 🚀 Features

-   **eslint-plugin:** backport no-unsafe-function type, no-wrapper-object-types from v8 to v7

-   **eslint-plugin:** \[return-await] add option to report in error-handling scenarios only, and deprecate "never"

##### 🩹 Fixes

-   **eslint-plugin:** \[no-floating-promises] check top-level type assertions (and more)

-   **eslint-plugin:** \[strict-boolean-expressions] consider assertion function argument a boolean context

-   **eslint-plugin:** \[no-unnecessary-condition] false positive on optional private field

##### ❤️  Thank You

-   Armano
-   Josh Goldberg ✨
-   Kirk Waiblinger
-   StyleShit

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.16.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7161-2024-07-15)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unnecessary-type-parameters] descend into all parts of mapped types in no-unnecessary-type-parameters

##### ❤️  Thank You

-   Dan Vanderkam

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.16.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7160-2024-07-08)

##### 🚀 Features

-   **rule-tester:** stricter rule test validations

-   **eslint-plugin:** \[no-unnecessary-parameter-property-assignment] add new rule

-   **eslint-plugin:** add support for nested namespaces to unsafe-member-access

-   **eslint-plugin:** \[no-floating-promises] add checkThenables option

##### 🩹 Fixes

-   **deps:** update dependency [@eslint-community/regexpp](https://github.com/eslint-community/regexpp) to v4.11.0

-   **eslint-plugin:** \[no-floating-promises] add `suggestions` to tests from [#9263](typescript-eslint/typescript-eslint#9263) `checkThenables`

-   **website:** react key error on internal pages of website

-   **eslint-plugin:** \[restrict-template-expressions] don't report tuples if `allowArray` option is enabled

##### ❤️  Thank You

-   Abraham Guo
-   auvred
-   Josh Goldberg ✨
-   Juan Sanchez
-   Vinccool96
-   YeonJuan
-   Yukihiro Hasegawa

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.15.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7150-2024-07-01)

##### 🚀 Features

-   **eslint-plugin:** \[array-type] detect `Readonly<string[]>` case

-   **eslint-plugin:** back-port new rules around empty object types from v8

##### 🩹 Fixes

-   disable `EXPERIMENTAL_useProjectService` in `disabled-type-checked` shared config

-   **eslint-plugin:** \[no-unsafe-return] differentiate a types-error any from a true any

-   **eslint-plugin:** \[no-unsafe-call] differentiate a types-error any from a true any

##### ❤️  Thank You

-   auvred
-   Kim Sang Du
-   rgehbt
-   Vinccool96

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.14.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7141-2024-06-24)

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-nullish-coalescing] treat enums and literals as their underlying primitive types

-   **eslint-plugin:** \[prefer-nullish-coalescing] ensure ternary fix does not remove parens

##### ❤️  Thank You

-   Jake Bailey

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.14.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7140-2024-06-24)

##### 🚀 Features

-   support TypeScript 5.5

##### 🩹 Fixes

-   **eslint-plugin:** \[no-extraneous-class] handle abstract members

-   **eslint-plugin:** \[prefer-nullish-coalescing] handle intersected primitive types

-   **eslint-plugin:** \[no-invalid-this] support AccessorProperty

##### ❤️  Thank You

-   Brad Zacher
-   cm-ayf
-   Jake Bailey
-   James Zhan
-   Joshua Chen
-   yoshi2no

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.13.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7131-2024-06-17)

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-readonly] refine report locations

-   **eslint-plugin:** \[return-await] support explicit resource management

-   **eslint-plugin:** \[no-unsafe-member-access] differentiate a types-error any from a true any

##### ❤️  Thank You

-   Kirk Waiblinger
-   Yukihiro Hasegawa

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.13.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7130-2024-06-10)

##### 🚀 Features

-   **typescript-estree:** require `import = require()` argument to be a string literal

-   **typescript-estree:** forbid `.body`, `.async`, `.generator` on `declare function`

-   **eslint-plugin:** \[no-dynamic-delete] allow all string literals as index

##### 🩹 Fixes

-   **ast-spec:** function-call-like callee should be Expression not LeftHandSideExpression

-   **scope-manager:** handle index signature in class

-   **eslint-plugin:** \[init-declarations] refine report locations

-   **eslint-plugin:** \[no-base-to-string] make error message more nuanced

-   **eslint-plugin:** \[no-unsafe-assignment] be more specific about error types

-   **eslint-plugin:** \[no-magic-numbers] fix implementation of the `ignore` option

##### ❤️  Thank You

-   Fotis Papadogeorgopoulos
-   Joshua Chen
-   Kirk Waiblinger
-   Tobiloba Adedeji
-   Vinccool96
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.12.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7120-2024-06-03)

##### 🚀 Features

-   **eslint-plugin:** \[no-useless-template-literals] rename to `no-useless-template-expression` (deprecate `no-useless-template-literals`)

-   **rule-tester:** check for parsing errors in suggestion fixes

-   **rule-tester:** port `checkDuplicateTestCases` from ESLint

-   **eslint-plugin:** \[no-floating-promises] add option 'allowForKnownSafePromises'

##### 🩹 Fixes

-   no-useless-template-expression -> no-unnecessary-template-expression

-   **eslint-plugin:** \[no-unnecessary-type-assertion] combine template literal check with `const` variable check

-   **eslint-plugin:** \[dot-notation] fix false positive when accessing private/protected property with optional chaining

-   **eslint-plugin:** \[explicit-member-accessibility] refine report locations

-   **eslint-plugin:** \[no-unnecessary-type-assertion] declares are always defined, so always check `declare`s

-   **eslint-plugin:** \[prefer-literal-enum-member] allow using member it self on allowBitwiseExpressions

-   **eslint-plugin:** \[return-await] clean up in-try-catch detection and make autofixes safe

-   **eslint-plugin:** \[member-ordering] also TSMethodSignature can be get/set

##### ❤️  Thank You

-   Abraham Guo
-   Han Yeong-woo
-   Joshua Chen
-   Kim Sang Du
-   Kirk Waiblinger
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.11.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7110-2024-05-27)

##### 🚀 Features

-   **eslint-plugin:** deprecate prefer-ts-expect-error in favor of ban-ts-comment

##### 🩹 Fixes

-   **eslint-plugin:** \[consistent-type-assertions] prevent syntax errors on arrow functions

##### ❤️  Thank You

-   Abraham Guo
-   auvred
-   Dom Armstrong
-   Kirk Waiblinger

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.10.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7100-2024-05-20)

##### 🚀 Features

-   **eslint-plugin:** \[sort-type-constituents] support case sensitive sorting

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-regexp-exec] fix heuristic to check whether regex may contain global flag

##### ❤️  Thank You

-   auvred
-   Emanuel Hoogeveen
-   jsfm01
-   Kirk Waiblinger

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.9.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#790-2024-05-13)

##### 🩹 Fixes

-   **eslint-plugin:** \[explicit-function-return-types] fix false positive on default parameters

##### ❤️  Thank You

-   Kirk Waiblinger
-   Sheetal Nandi
-   Vinccool96

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.8.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#780-2024-04-29)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unsafe-argument] handle  tagged templates

-   **eslint-plugin:** \[prefer-optional-chain] suggests optional chaining during strict null equality check

-   **eslint-plugin:** \[consistent-type-assertions] handle tagged templates

-   **eslint-plugin:** \[no-unsafe-return] handle union types

-   **eslint-plugin:** \[no-unused-vars] clear error report range

##### ❤️  Thank You

-   auvred
-   Josh Goldberg ✨
-   jsfm01
-   Kim Sang Du
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.7.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#771-2024-04-22)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unsafe-assignment] handle shorthand property assignment

-   **eslint-plugin:** \[explicit-function-return-type] fix checking wrong ancestor's return type

-   **eslint-plugin:** \[prefer-optional-chain] only look at left operand for `requireNullish`

-   **eslint-plugin:** \[no-for-in-array] refine report location

-   **eslint-plugin:** \[no-unnecessary-type-assertion] allow non-null assertion for void type

##### ❤️  Thank You

-   Abraham Guo
-   Kirk Waiblinger
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.7.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#770-2024-04-15)

##### 🚀 Features

-   **eslint-plugin:** replace `no-new-symbol` with `no-new-native-nonconstructor`

##### ❤️  Thank You

-   Dave
-   Josh Goldberg ✨

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.6.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#760-2024-04-08)

##### 🚀 Features

-   bump npm dependency ranges

##### ❤️  Thank You

-   Abraham Guo
-   auvred
-   Brad Zacher

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.5.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#750-2024-04-01)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-floating-promises] handle TaggedTemplateExpression

-   **eslint-plugin:** \[no-unnecessary-type-assertion] handle exactOptionalPropertyTypes compiler option

##### ❤️  Thank You

-   Brad Zacher
-   Kim Sang Du
-   Mark de Dios
-   Naru
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.4.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#740-2024-03-25)

##### 🚀 Features

-   **eslint-plugin:** \[consistent-type-imports] ignore files with decorators, experimentalDecorators, and emitDecoratorMetadata

-   **eslint-plugin:** \[no-unnecessary-type-arguments] handle tagged templates

-   **eslint-plugin:** deprecate no-throw-literal and add a renamed only-throw-error

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-optional-chain] address multipart nullish checks false positive

-   **eslint-plugin:** \[prefer-optional-chain] properly disambiguate between `boolean` and `false`

-   **eslint-plugin:** \[no-unnecessary-type-assertion] avoid remove const casting on template literals with expressions inside

##### ❤️  Thank You

-   Abraham Guo
-   Brad Zacher
-   Josh Goldberg ✨
-   Kim Sang Du
-   Kirk Waiblinger
-   Marco Pasqualetti
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.3.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#731-2024-03-18)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-floating-promises] revert disable of ignoreVoid in strict config

##### ❤️  Thank You

-   Josh Goldberg ✨

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.3.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#730-2024-03-18)

##### 🚀 Features

-   **eslint-plugin:** \[restrict-template-expressions] add `allowArray` option

-   **eslint-plugin:** add meta.docs.recommended setting for strict config options

-   **eslint-plugin:** add rule `use-unknown-in-catch-callback-variables`

-   **eslint-plugin:** \[prefer-reduce-type-parameter] supports tuple, union, intersection

##### 🩹 Fixes

-   correct `engines.node` constraints in `package.json`

-   **eslint-plugin:** \[unbound-method] check method definition in object literal using longhand form

-   **eslint-plugin:** \[consistent-type-imports] handle imports without specifiers

-   **eslint-plugin:** \[no-redundant-type-constituents] incorrectly marks & string as redundant

-   **eslint-plugin:** \[no-unnecessary-qualifier] handle merge namespace with enum

-   **eslint-plugin:** \[no-unused-expressions] false negatives when using assertions

-   **eslint-plugin:** \[ban-ts-comment] more accurate handling of multiline comments

-   **eslint-plugin:** \[explicit-function-return-type, explicit-module-boundary-types] improved checking for allowHigherOrderFunctions option

-   **eslint-plugin:** \[class-literal-property-style] ignore property assigned in constructor

-   **eslint-plugin:** \[no-unnecessary-type-assertion] fix false negative for const variable declarations

##### ❤️  Thank You

-   Abraham Guo
-   Alexu
-   Arka Pratim Chaudhuri
-   auvred
-   Derrick Isaacson
-   fnx
-   Josh Goldberg ✨
-   Kirk Waiblinger
-   Marta Cardoso
-   Michaël De Boey
-   Tristan Rasmussen
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.2.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#720-2024-03-11)

##### 🚀 Features

-   support TS 5.4

-   **eslint-plugin:** \[prefer-string-starts-ends-with] add allowSingleElementEquality option

##### 🩹 Fixes

-   **eslint-plugin:** expose \*-type-checked-only configs for extension

-   **eslint-plugin:** \[member-ordering] report alphabetical sorting for all groups instead of just the first failing group

-   **eslint-plugin:** \[no-var-requires, no-require-imports] support template literal

-   **eslint-plugin:** \[no-useless-template-literals] detect TemplateLiteral

-   **eslint-plugin:** \[no-unnecessary-condition] handle union array and tuple type

-   **eslint-plugin:** \[prefer-find] support ternary branches in prefer-find

##### ❤️  Thank You

-   Arka Pratim Chaudhuri
-   auvred
-   Chris Plummer
-   Fotis Papadogeorgopoulos
-   Josh Goldberg ✨
-   Kirk Waiblinger
-   Wayne Zhang
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.1.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#711-2024-03-04)

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

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.1.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#710-2024-02-26)

##### 🚀 Features

-   **eslint-plugin:** add \*-type-checked-only configs

-   **eslint-plugin:** \[naming-convention] support the auto-accessor syntax

-   **eslint-plugin:** \[consistent-return] add new rule

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-optional-chan] allow typeof for avoiding reference error

-   **eslint-plugin:** \[no-misused-promises] improve check union types

-   **eslint-plugin:** \[no-use-before-define] fix false positive type reference in as, satisfies

##### ❤️  Thank You

-   Arka Pratim Chaudhuri
-   Josh Goldberg ✨
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v7.0.2](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#702-2024-02-19)

##### 🩹 Fixes

-   fix tsconfig-less check errors, fix `@types/eslint` incompatibilities, add tests

##### ❤️  Thank You

-   Brad Zacher
-   Gareth Jones

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [vv4](https://github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v417)

-   Bump the minor-npm-dependencies group across 1 directory with 4 updates by [@dependabot](https://github.com/dependabot) in actions/checkout#1739
-   Bump actions/checkout from 3 to 4 by [@dependabot](https://github.com/dependabot) in actions/checkout#1697
-   Check out other refs/\* by commit by [@orhantoy](https://github.com/orhantoy) in actions/checkout#1774
-   Pin actions/checkout's own workflows to a known, good, stable version. by [@jww3](https://github.com/jww3) in actions/checkout#1776
##### [v9.3.1](https://github.com/sindresorhus/execa/compare/v9.3.0...0a51f7cbef53e7290a3604e585e1b2e61da37367)

##### [v9.3.0](https://github.com/sindresorhus/execa/releases/tag/v9.3.0)

#### Features

-   The [`verbose`](docs/api.md#optionsverbose) option can now be [a function](docs/api.md#verbose-function) to [customize logging](docs/debugging.md#custom-logging). ([#1130](https://github.com/sindresorhus/execa/issues/1130))
##### [v9.2.0](https://github.com/sindresorhus/execa/releases/tag/v9.2.0)

This release includes a [new set of methods](docs/ipc.md) to exchange messages between the current process and a Node.js subprocess, also known as "IPC". This allows [passing](docs/input.md#any-input-type) and [returning](docs/output.md#any-output-type) almost any message type to/from a Node.js subprocess. Also, [debugging](docs/ipc.md#debugging) IPC is now much easier.

Moreover, a new [`gracefulCancel`](docs/api.md#optionsgracefulcancel) option has also been added to [terminate a subprocess gracefully](docs/termination.md#graceful-termination).

For a deeper dive-in, please check and share the [release post](https://medium.com/@ehmicky/ipc-made-easy-with-execa-9-2-939c6a358731)!

Thanks [@iiroj](https://github.com/iiroj) for your contribution, [@SimonSiefke](https://github.com/SimonSiefke) and [@adymorz](https://github.com/adymorz) for reporting the bugs fixed in this release, and [@karlhorky](https://github.com/karlhorky) for improving the documentation!

#### Deprecations

-   Passing `'ipc'` to the [`stdio`](docs/api.md#optionsstdio) option has been deprecated. It will be removed in the next major release. Instead, the [`ipc: true`](docs/api.md#optionsipc) option should be used. ([#1056](https://github.com/sindresorhus/execa/issues/1056))

```diff
- await execa('npm', ['run', 'build'], {stdio: ['pipe', 'pipe', 'pipe', 'ipc']});
+ await execa('npm', ['run', 'build'], {ipc: true});
```

-   The [`execaCommand()`](https://github.com/sindresorhus/execa/blob/v9.1.0/docs/api.md#execacommandcommand-options) method has been deprecated. It will be removed in the next major release. If most cases, the [template string syntax](docs/execution.md#template-string-syntax) should be used instead.

```diff
- import {execaCommand} from 'execa';
+ import {execa} from 'execa';

- await execaCommand('npm run build');
+ await execa`npm run build`;

const taskName = 'build';
- await execaCommand(`npm run ${taskName}`);
+ await execa`npm run ${taskName}`;

const commandArguments = ['run', 'task with space'];
await execa`npm ${commandArguments}`;
```

If the file and/or multiple arguments are supplied as a single string, [parseCommandString(command)](https://github.com/sindresorhus/execa/blob/main/docs/api.md#parsecommandstringcommand) can split that string into an array. [More info.](docs/escaping.md) ([#1054](https://github.com/sindresorhus/execa/issues/1054))

```diff
- import {execaCommand} from 'execa';
+ import {execa, parseCommandString} from 'execa';

const commandString = 'npm run task';
- await execaCommand(commandString);
+ const commandArray = parseCommandString(commandString); // ['npm', 'run', 'task']
+ await execa`${commandArray}`;

// Or alternatively:
const [file, ...commandArguments] = commandArray;
await execa(file, commandArguments);
```

#### Features

-   Add [`gracefulCancel`](docs/api.md#optionsgracefulcancel) option and [`getCancelSignal()`](docs/api.md#getcancelsignal) method to [terminate a subprocess gracefully](docs/termination.md#graceful-termination). [`error.isGracefullyCanceled`](docs/api.md#errorisgracefullycanceled) was also added. ([#1109](https://github.com/sindresorhus/execa/issues/1109))
-   Add [`error.isForcefullyTerminated`](docs/api.md#errorisforcefullyterminated). It is `true` when the subprocess was terminated by the [`forceKillAfterDelay`](docs/api.md#optionsforcekillafterdelay) option. ([#1111](https://github.com/sindresorhus/execa/issues/1111))
-   New methods to simplify exchanging messages between the current process and the subprocess. [More info.](docs/ipc.md) ([#1059](https://github.com/sindresorhus/execa/issues/1059), [#1061](https://github.com/sindresorhus/execa/issues/1061), [#1076](https://github.com/sindresorhus/execa/issues/1076), [#1077](https://github.com/sindresorhus/execa/issues/1077), [#1079](https://github.com/sindresorhus/execa/issues/1079), [#1082](https://github.com/sindresorhus/execa/issues/1082), [#1083](https://github.com/sindresorhus/execa/issues/1083), [#1086](https://github.com/sindresorhus/execa/issues/1086), [#1087](https://github.com/sindresorhus/execa/issues/1087), [#1088](https://github.com/sindresorhus/execa/issues/1088), [#1089](https://github.com/sindresorhus/execa/issues/1089), [#1090](https://github.com/sindresorhus/execa/issues/1090), [#1091](https://github.com/sindresorhus/execa/issues/1091), [#1092](https://github.com/sindresorhus/execa/issues/1092), [#1094](https://github.com/sindresorhus/execa/issues/1094), [#1095](https://github.com/sindresorhus/execa/issues/1095), [#1098](https://github.com/sindresorhus/execa/issues/1098), [#1104](https://github.com/sindresorhus/execa/issues/1104), [#1107](https://github.com/sindresorhus/execa/issues/1107))
    -   The current process sends messages with [`subprocess.sendMessage(message)`](docs/api.md#subprocesssendmessagemessage-sendmessageoptions) and receives them with [`subprocess.getOneMessage()`](docs/api.md#subprocessgetonemessagegetonemessageoptions). [`subprocess.getEachMessage()`](docs/api.md#subprocessgeteachmessagegeteachmessageoptions) listens to multiple messages.
    -   The subprocess uses [`sendMessage(message)`](docs/api.md#sendmessagemessage-sendmessageoptions), [`getOneMessage()`](docs/api.md#getonemessagegetonemessageoptions) and [`getEachMessage()`](docs/api.md#geteachmessagegeteachmessageoptions) instead. Those are the same methods, but imported directly from the `'execa'` module.
-   The [`ipcInput`](docs/ipc.md#send-an-initial-message) option sends an IPC message from the current process to the subprocess as it starts. This enables [passing almost any input type](docs/input.md#any-input-type) to a Node.js subprocess. ([#1068](https://github.com/sindresorhus/execa/issues/1068))
-   The [`result.ipcOutput`](docs/ipc.md#retrieve-all-messages) array contains all the IPC messages sent by the subprocess to the current process. This enables [returning almost any output type](docs/output.md#any-output-type) from a Node.js subprocess. ([#1067](https://github.com/sindresorhus/execa/issues/1067), [#1071](https://github.com/sindresorhus/execa/issues/1071), [#1075](https://github.com/sindresorhus/execa/issues/1075))
-   The [error message](docs/errors.md#error-message) now [contains every IPC message](docs/ipc.md#debugging) sent by the subprocess. ([#1067](https://github.com/sindresorhus/execa/issues/1067))
-   The [`verbose: 'full'`](docs/api.md#optionsverbose) option now logs every IPC message sent by the subprocess, for debugging. More info [here](docs/ipc.md#debugging) and [there](docs/output.md#stdoutstderr-specific-options). ([#1063](https://github.com/sindresorhus/execa/issues/1063))

#### Types

-   Add [`ExecaMethod`](docs/typescript.md#available-types), [`ExecaNodeMethod`](docs/typescript.md#available-types) and [`ExecaScriptMethod`](docs/typescript.md#available-types), [`ExecaSyncMethod`](docs/typescript.md#synchronous-execution) and [`ExecaScriptSyncMethod`](docs/typescript.md#synchronous-execution) types. ([#1066](https://github.com/sindresorhus/execa/issues/1066))
-   Export the `Message` type, for [IPC](docs/ipc.md). ([#1059](https://github.com/sindresorhus/execa/issues/1059))
-   Fix type of `forceKillAfterDelay: true` option. ([#1116](https://github.com/sindresorhus/execa/issues/1116))

#### Bug fixes

-   Fix passing a [`{file}`](docs/output.md#file-output) to both the [`stdin`](docs/api.md#optionsstdin) and the [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) options. ([#1058](https://github.com/sindresorhus/execa/issues/1058))
-   Fix multiple minor problems with the [`cancelSignal`](docs/termination.md#canceling) option. ([#1108](https://github.com/sindresorhus/execa/issues/1108))
-   Fix accidental publishing of Vim backup files. ([#1074](https://github.com/sindresorhus/execa/issues/1074))
-   Fix `engines.node` field in [`package.json`](package.json). Supported Node.js version is `^18.19.0` or `>=20.5.0`. (by [@iiroj](https://github.com/iiroj)) ([#1101](https://github.com/sindresorhus/execa/issues/1101))
##### [v9.1.0](https://github.com/sindresorhus/execa/releases/tag/v9.1.0)

#### Features (types)

-   Export [`TemplateExpression`](docs/typescript.md#available-types) type. ([#1049](https://github.com/sindresorhus/execa/issues/1049))
##### [v9.0.2](https://github.com/sindresorhus/execa/releases/tag/v9.0.2)

#### Bug fixes (types)

-   Do not require using `--lib dom` for TypeScript users ([#1043](https://github.com/sindresorhus/execa/issues/1043), [#1044](https://github.com/sindresorhus/execa/issues/1044))
-   Fix type of the `reject` option ([#1046](https://github.com/sindresorhus/execa/issues/1046))
##### [v9.0.1](https://github.com/sindresorhus/execa/releases/tag/v9.0.1)

#### Bug fixes (types)

-   Fix types not being importable ([#1033](https://github.com/sindresorhus/execa/issues/1033))  [`3bdab60`](https://github.com/sindresorhus/execa/commit/3bdab60)
-   Fix complexity bug with types ([#1037](https://github.com/sindresorhus/execa/issues/1037))  [`6cc519b`](https://github.com/sindresorhus/execa/commit/6cc519b)
-   Fix complexity bug with types ([#1035](https://github.com/sindresorhus/execa/issues/1035))  [`fee011d`](https://github.com/sindresorhus/execa/commit/fee011d)
##### [v9.0.0](https://github.com/sindresorhus/execa/releases/tag/v9.0.0)

This major release brings many important features including:

-   [Split the output](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#3a26) into lines, or [progressively iterate](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#3a26) over them.
-   [Transform or filter](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#cbd6) the input/output using [simple functions](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#399a).
-   Print the output [to the terminal](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#693f) while still retrieving it programmatically.
-   Redirect the input/output [from/to a file](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#693f).
-   [Advanced piping](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#ec17) between multiple subprocesses.
-   Improved [verbose mode](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#2913), for debugging.
-   More [detailed errors](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#40d7), including when [terminating subprocesses](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#668c).
-   Enhanced [template string syntax](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#725b).
-   [Global/shared options](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#bcbf).
-   [Web streams](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#5731) and Transform streams support.
-   [Convert the subprocess](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f#47b9) to a stream.
-   [New documentation](https://github.com/sindresorhus/execa#documentation) with many examples.

Please check the [release post](https://medium.com/@ehmicky/execa-9-release-d0d5daaa097f) for a high-level overview! For the full list of breaking changes, features and bug fixes, please read below.

Thanks [@younggglcy](https://github.com/younggglcy), [@koshic](https://github.com/koshic), [@am0o0](https://github.com/am0o0) and [@codesmith-emmy](https://github.com/codesmith-emmy) for your help!

***

One of the maintainers [@ehmicky](https://github.com/ehmicky) is looking for a remote full-time position. Specialized in Node.js back-ends and CLIs, he led Netlify [Build](https://www.netlify.com/platform/core/build/), [Plugins](https://www.netlify.com/integrations/) and Configuration for 2.5 years. Feel free to contact him on [his website](https://www.mickael-hebert.com) or on [LinkedIn](https://www.linkedin.com/in/mickaelhebert/)!

***

#### Breaking changes

-   Minimal supported Node.js version is now `18.19.0`. ([`834e372`](https://github.com/sindresorhus/execa/commit/834e3726))

-   When the [`encoding` option](docs/api.md#optionsencoding) is `'buffer'`, the output ([`result.stdout`](docs/api.md#resultstdout), [`result.stderr`](docs/api.md#resultstderr), [`result.all`](docs/api.md#resultall)) is now an [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) instead of a [`Buffer`](https://nodejs.org/api/buffer.html#class-buffer). For more information, see [this blog post](https://sindresorhus.com/blog/goodbye-nodejs-buffer). (by [@younggglcy](https://github.com/younggglcy)) ([#586](https://github.com/sindresorhus/execa/issues/586))

```js
const {stdout} = await execa('node', ['file.js'], {encoding: 'buffer'});
console.log(stdout); // This is now an Uint8Array
```

-   Renamed some of the allowed values for the [`encoding`](docs/api.md#optionsencoding) option. ([#586](https://github.com/sindresorhus/execa/issues/586), [#928](https://github.com/sindresorhus/execa/issues/928))

```diff
- await execa('node', ['file.js'], {encoding: null});
+ await execa('node', ['file.js'], {encoding: 'buffer'});

- await execa('node', ['file.js'], {encoding: 'utf-8'});
+ await execa('node', ['file.js'], {encoding: 'utf8'});

- await execa('node', ['file.js'], {encoding: 'UTF8'});
+ await execa('node', ['file.js'], {encoding: 'utf8'});

- await execa('node', ['file.js'], {encoding: 'utf-16le'});
+ await execa('node', ['file.js'], {encoding: 'utf16le'});

- await execa('node', ['file.js'], {encoding: 'ucs2'});
+ await execa('node', ['file.js'], {encoding: 'utf16le'});

- await execa('node', ['file.js'], {encoding: 'ucs-2'});
+ await execa('node', ['file.js'], {encoding: 'utf16le'});

- await execa('node', ['file.js'], {encoding: 'binary'});
+ await execa('node', ['file.js'], {encoding: 'latin1'});
```

-   Passing a file path to `subprocess.pipeStdout()`, `subprocess.pipeStderr()` and `subprocess.pipeAll()` has been removed. Instead, a [`{file: './path'}` object](docs/output.md#file-output) should be passed to the [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. ([#752](https://github.com/sindresorhus/execa/issues/752))

```diff
- await execa('node', ['file.js']).pipeStdout('output.txt');
+ await execa('node', ['file.js'], {stdout: {file: 'output.txt'}});

- await execa('node', ['file.js']).pipeStderr('output.txt');
+ await execa('node', ['file.js'], {stderr: {file: 'output.txt'}});

- await execa('node', ['file.js']).pipeAll('output.txt');
+ await execa('node', ['file.js'], {
+	stdout: {file: 'output.txt'},
+	stderr: {file: 'output.txt'},
+});
```

-   Passing a [writable stream](https://nodejs.org/api/stream.html#class-streamwritable) to `subprocess.pipeStdout()`, `subprocess.pipeStderr()` and `subprocess.pipeAll()` has been removed. Instead, the stream should be passed to the [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. If the stream [does not have a file descriptor](docs/streams.md#file-descriptors), [`['pipe', stream]`](docs/output.md#multiple-targets) should be passed instead. ([#752](https://github.com/sindresorhus/execa/issues/752))

```diff
- await execa('node', ['file.js']).pipeStdout(stream);
+ await execa('node', ['file.js'], {stdout: ['pipe', stream]});

- await execa('node', ['file.js']).pipeStderr(stream);
+ await execa('node', ['file.js'], {stderr: ['pipe', stream]});

- await execa('node', ['file.js']).pipeAll(stream);
+ await execa('node', ['file.js'], {
+	stdout: ['pipe', stream],
+	stderr: ['pipe', stream],
+});
```

-   The `subprocess.pipeStdout()`, `subprocess.pipeStderr()` and `subprocess.pipeAll()` methods have been renamed to [`subprocess.pipe()`](docs/api.md#subprocesspipefile-arguments-options). The command and its arguments can be passed to `subprocess.pipe()` directly, without calling `execa()` a second time. The [`from`](docs/api.md#pipeoptionsfrom) piping option can specify `'stdout'` (the default value), `'stderr'` or `'all'`. ([#757](https://github.com/sindresorhus/execa/issues/757))

```diff
- await execa('node', ['file.js']).pipeStdout(execa('node', ['other.js']));
+ await execa('node', ['file.js']).pipe('node', ['other.js']);

- await execa('node', ['file.js']).pipeStderr(execa('node', ['other.js']));
+ await execa('node', ['file.js']).pipe('node', ['other.js'], {from: 'stderr'});

- await execa('node', ['file.js']).pipeAll(execa('node', ['other.js']));
+ await execa('node', ['file.js']).pipe('node', ['other.js'], {from: 'all'});
```

-   Renamed the `signal` option to [`cancelSignal`](docs/api.md#optionscancelsignal). ([#880](https://github.com/sindresorhus/execa/issues/880))

```diff
- await execa('node', ['file.js'], {signal: abortController.signal});
+ await execa('node', ['file.js'], {cancelSignal: abortController.signal});
```

-   Renamed `error.killed` to [`error.isTerminated`](docs/api.md#erroristerminated). ([#625](https://github.com/sindresorhus/execa/issues/625))

```diff
try {
	await execa('node', ['file.js']);
} catch (error) {
- if (error.killed) {
+ if (error.isTerminated) {
		// ...
	}
}
```

-   `subprocess.cancel()` has been removed. Please use either [`subprocess.kill()`](docs/api.md#subprocesskillsignal-error) or the [`cancelSignal`](docs/api.md#optionscancelsignal) option instead. ([#711](https://github.com/sindresorhus/execa/issues/711))

```diff
- subprocess.cancel();
+ subprocess.kill();
```

-   Renamed the `forceKillAfterTimeout` option to [`forceKillAfterDelay`](docs/api.md#optionsforcekillafterdelay). Also, it is now passed to [`execa()`](docs/api.md#execafile-arguments-options) instead of [`subprocess.kill()`](docs/api.md#subprocesskillsignal-error). ([#714](https://github.com/sindresorhus/execa/issues/714), [#723](https://github.com/sindresorhus/execa/issues/723))

```diff
- const subprocess = execa('node', ['file.js']);
- subprocess.kill('SIGTERM', {forceKillAfterTimeout: 1000});
+ const subprocess = execa('node', ['file.js'], {forceKillAfterDelay: 1000});
+ subprocess.kill('SIGTERM');
```

-   The [`verbose`](docs/api.md#optionsverbose) option is now a string enum instead of a boolean. `false` has been renamed to `'none'` and `true` has been renamed to [`'short'`](docs/debugging.md#short-mode). ([#884](https://github.com/sindresorhus/execa/issues/884))

```diff
- await execa('node', ['file.js'], {verbose: false});
+ await execa('node', ['file.js'], {verbose: 'none'});

- await execa('node', ['file.js'], {verbose: true});
+ await execa('node', ['file.js'], {verbose: 'short'});
```

-   The `execPath` option has been renamed to [`nodePath`](docs/api.md#optionsnodepath). It is now a noop unless the [`node`](docs/api.md#optionsnode) option is `true`. Also, it now works even if the [`preferLocal`](docs/api.md#optionspreferlocal) option is `false`. ([#812](https://github.com/sindresorhus/execa/issues/812), [#815](https://github.com/sindresorhus/execa/issues/815))

```diff
- await execa('node', ['file.js'], {execPath: './path/to/node'});
+ await execa('node', ['file.js'], {nodePath: './path/to/node'});
```

-   The [default value](docs/ipc.md#message-type) for the [`serialization`](docs/api.md#optionsserialization) option is now [`'advanced'`](https://nodejs.org/api/child_process.html#advanced-serialization) instead of `'json'`. In particular, when calling [`subprocess.send(object)`](docs/api.md#subprocesssendmessage) with an object that contains functions or symbols, those were previously silently removed. Now this will throw an exception. ([#905](https://github.com/sindresorhus/execa/issues/905))

```diff
- subprocess.send({example: true, getExample() {}});
+ subprocess.send({example: true});
```

-   If [`subprocess.stdout`](docs/api.md#subprocessstdout), [`subprocess.stderr`](docs/api.md#subprocessstderr) or [`subprocess.all`](docs/api.md#subprocessall) is manually piped, the [`.pipe()`](https://nodejs.org/api/stream.html#readablepipedestination-options) call must now happen as soon as `subprocess` is created. Otherwise, the output at the beginning of the subprocess might be missing. ([#658](https://github.com/sindresorhus/execa/issues/658), [#747](https://github.com/sindresorhus/execa/issues/747))

```diff
const subprocess = execa('node', ['file.js']);
- setTimeout(() => {
	subprocess.stdout.pipe(process.stdout);
- }, 0);
```

-   Signals passed to [`subprocess.kill()`](docs/api.md#subprocesskillsignal-error) and to the [`killSignal`](docs/api.md#optionskillsignal) option cannot be lowercase anymore. ([#1025](https://github.com/sindresorhus/execa/issues/1025))

```diff
- const subprocess = execa('node', ['file.js'], {killSignal: 'sigterm'});
+ const subprocess = execa('node', ['file.js'], {killSignal: 'SIGTERM'});

- subprocess.kill('sigterm');
+ subprocess.kill('SIGTERM');
```

#### Features

##### Execution

-   Use the [template string syntax](docs/execution.md#template-string-syntax) with any method (including [`execa()`](docs/api.md#execacommand)), as opposed to only [`$`](docs/api.md#file-arguments-options). Conversely, `$` can now use the [regular array syntax](docs/scripts.md#template-string-syntax). ([#933](https://github.com/sindresorhus/execa/issues/933))
-   A command's template string can span [multiple lines](docs/execution.md#multiple-lines). ([#843](https://github.com/sindresorhus/execa/issues/843))
-   [Share options](docs/execution.md#globalshared-options) between multiple calls, or set global options, by using [`execa(options)`](docs/api#execaoptions). ([#933](https://github.com/sindresorhus/execa/issues/933), [#965](https://github.com/sindresorhus/execa/issues/965))
-   Pass a file URL (as opposed to a file path string) to [`execa()`](docs/api.md#execafile-arguments-options), [`execaNode()`](docs/api.md#execanodescriptpath-arguments-options), the [`inputFile`](docs/api.md#optionsinputfile) option, the [`nodePath`](docs/api.md#optionsnodepath) option or the [`shell`](docs/api.md#optionsshell) option. ([#630](https://github.com/sindresorhus/execa/issues/630), [#631](https://github.com/sindresorhus/execa/issues/631), [#632](https://github.com/sindresorhus/execa/issues/632), [#635](https://github.com/sindresorhus/execa/issues/635))

##### Text lines

-   [Split the output](docs/lines.md#simple-splitting) into text lines by using the [`lines`](docs/api.md#optionslines) option. ([#741](https://github.com/sindresorhus/execa/issues/741), [#929](https://github.com/sindresorhus/execa/issues/929), [#931](https://github.com/sindresorhus/execa/issues/931), [#948](https://github.com/sindresorhus/execa/issues/948), [#951](https://github.com/sindresorhus/execa/issues/951), [#957](https://github.com/sindresorhus/execa/issues/957))
-   Subprocess is now an [async iterable](docs/api.md#subprocesssymbolasynciterator), [iterating over the output](docs/lines.md#progressive-splitting) lines while the subprocess is running. ([#923](https://github.com/sindresorhus/execa/issues/923))

##### Piping multiple subprocesses

-   Simpler syntax: pass the [command directly](docs/pipe.md#array-syntax) to [`subprocess.pipe()`](docs/api.md#subprocesspipefile-arguments-options) without calling [`execa()`](docs/api.md#execafile-arguments-options). A [template string](docs/pipe.md#template-string-syntax) can also be used. ([#840](https://github.com/sindresorhus/execa/issues/840), [#859](https://github.com/sindresorhus/execa/issues/859), [#864](https://github.com/sindresorhus/execa/issues/864))
-   [Wait for both subprocesses](docs/pipe.md#result) to complete. [Error handling](docs/pipe.md#errors) has been improved too. ([#757](https://github.com/sindresorhus/execa/issues/757), [#778](https://github.com/sindresorhus/execa/issues/778), [#834](https://github.com/sindresorhus/execa/issues/834), [#854](https://github.com/sindresorhus/execa/issues/854))
-   Retrieve the [result](docs/pipe.md#result) of each subprocess (not only the last one) by using [`result.pipedFrom`](docs/api.md#resultpipedfrom) and [`error.pipedFrom`](docs/api.md#resultpipedfrom). ([#834](https://github.com/sindresorhus/execa/issues/834))
-   Pipe 1 or [many subprocesses](docs/pipe.md#multiple-sources-1-destination) to 1 or [many subprocesses](docs/pipe.md#1-source-multiple-destinations). ([#834](https://github.com/sindresorhus/execa/issues/834))
-   Pipe subprocesses using [other file descriptors](docs/pipe.md#source-file-descriptor) than `stdin`/`stdout`/`stderr` by using the [`from`](docs/api.md#pipeoptionsfrom) and [`to`](docs/api.md#pipeoptionsto) piping options. ([#757](https://github.com/sindresorhus/execa/issues/757), [#834](https://github.com/sindresorhus/execa/issues/834), [#903](https://github.com/sindresorhus/execa/issues/903), [#920](https://github.com/sindresorhus/execa/issues/920))
-   [Cancel piping](docs/pipe.md#unpipe) subprocesses by using the [`unpipeSignal`](docs/api.md#pipeoptionsunpipesignal) piping option. ([#834](https://github.com/sindresorhus/execa/issues/834), [#852](https://github.com/sindresorhus/execa/issues/852))

##### Input/output

-   Pass an array with [multiple values](docs/output.md#multiple-targets) to the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout) and [`stderr`](docs/api.md#optionsstderr) options. For example, [`stdout: ['inherit', 'pipe']`](docs/output.md#multiple-targets) prints the output [to the terminal](docs/output.md#terminal-output) while still [returning it](docs/output.md#stdout-and-stderr) as [`result.stdout`](docs/api.md#resultstdout). ([#643](https://github.com/sindresorhus/execa/issues/643), [#765](https://github.com/sindresorhus/execa/issues/765), [#941](https://github.com/sindresorhus/execa/issues/941), [#954](https://github.com/sindresorhus/execa/issues/954))
-   Redirect the [input](docs/input.md#file-input)/[output](docs/output.md#file-output) from/to a file by passing a `{file: './path'}` object or a file URL to the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. ([#610](https://github.com/sindresorhus/execa/issues/610), [#614](https://github.com/sindresorhus/execa/issues/614), [#621](https://github.com/sindresorhus/execa/issues/621), [#671](https://github.com/sindresorhus/execa/issues/671), [#1004](https://github.com/sindresorhus/execa/issues/1004))
-   [Transform](docs/transform.md) or [filter](docs/transform.md#filtering) the input/output by passing a generator function to the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. ([#693](https://github.com/sindresorhus/execa/issues/693), [#697](https://github.com/sindresorhus/execa/issues/697), [#698](https://github.com/sindresorhus/execa/issues/698), [#699](https://github.com/sindresorhus/execa/issues/699), [#709](https://github.com/sindresorhus/execa/issues/709), [#736](https://github.com/sindresorhus/execa/issues/736), [#737](https://github.com/sindresorhus/execa/issues/737), [#739](https://github.com/sindresorhus/execa/issues/739), [#740](https://github.com/sindresorhus/execa/issues/740), [#746](https://github.com/sindresorhus/execa/issues/746), [#748](https://github.com/sindresorhus/execa/issues/748), [#755](https://github.com/sindresorhus/execa/issues/755), [#756](https://github.com/sindresorhus/execa/issues/756), [#780](https://github.com/sindresorhus/execa/issues/780), [#783](https://github.com/sindresorhus/execa/issues/783), [#867](https://github.com/sindresorhus/execa/issues/867), [#915](https://github.com/sindresorhus/execa/issues/915), [#916](https://github.com/sindresorhus/execa/issues/916), [#917](https://github.com/sindresorhus/execa/issues/917), [#919](https://github.com/sindresorhus/execa/issues/919), [#924](https://github.com/sindresorhus/execa/issues/924), [#926](https://github.com/sindresorhus/execa/issues/926), [#945](https://github.com/sindresorhus/execa/issues/945), [#969](https://github.com/sindresorhus/execa/issues/969))
-   Provide some [binary input](docs/binary.md#binary-input) by passing an [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) to the [`input`](docs/api.md#optionsinput) or [`stdin`](docs/api.md#optionsstdin) option. ([`834e372`](https://github.com/sindresorhus/execa/commit/834e3726), [#670](https://github.com/sindresorhus/execa/issues/670), [#1029](https://github.com/sindresorhus/execa/issues/1029))
-   Provide some [progressive input](docs/streams.md#iterables-as-input) by passing a sync/async [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols) to the [`stdin`](docs/api.md#optionsstdin) option. ([#604](https://github.com/sindresorhus/execa/issues/604), [#944](https://github.com/sindresorhus/execa/issues/944))
-   Provide [multiple inputs](docs/output.md#multiple-targets) by combining the [`stdin`](docs/api.md#optionsstdin), [`input`](docs/api.md#optionsinput) and [`inputFile`](docs/api.md#optionsinputfile) options. ([#666](https://github.com/sindresorhus/execa/issues/666))
-   Return [other file descriptors](docs/output.md#additional-file-descriptors) than [`result.stdout`](docs/api.md#resultstdout) and [`result.stderr`](docs/api.md#resultstderr) by using [`result.stdio`](docs/api.md#resultstdio). ([#676](https://github.com/sindresorhus/execa/issues/676))
-   [Specify different values](docs/output.md#stdoutstderr-specific-options) for [`stdout`](docs/api.md#optionsstdout) and [`stderr`](docs/api.md#optionsstderr) with the following options: [`verbose`](docs/api.md#optionsverbose), [`lines`](docs/api.md#optionslines), [`stripFinalNewline`](docs/api.md#optionsstripfinalnewline), [`maxBuffer`](docs/api.md#optionsmaxbuffer), [`buffer`](docs/api.md#optionsbuffer). ([#966](https://github.com/sindresorhus/execa/issues/966), [#970](https://github.com/sindresorhus/execa/issues/970), [#971](https://github.com/sindresorhus/execa/issues/971), [#972](https://github.com/sindresorhus/execa/issues/972), [#973](https://github.com/sindresorhus/execa/issues/973), [#974](https://github.com/sindresorhus/execa/issues/974))

##### Streams

-   Redirect the input/output from/to a [web stream](docs/streams.md#web-streams) by passing a [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) or [`WritableStream`](https://developer.mozilla.org/en-US/docs/Web/API/WritableStream) to the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. ([#615](https://github.com/sindresorhus/execa/issues/615), [#619](https://github.com/sindresorhus/execa/issues/619), [#645](https://github.com/sindresorhus/execa/issues/645))
-   [Transform or filter](docs/transform.md#duplextransform-streams) the input/output by passing a [`Duplex`](https://nodejs.org/api/stream.html#class-streamduplex), Node.js [`Transform`](https://nodejs.org/api/stream.html#class-streamtransform) or web [`TransformStream`](https://developer.mozilla.org/en-US/docs/Web/API/TransformStream) to the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option. ([#937](https://github.com/sindresorhus/execa/issues/937), [#938](https://github.com/sindresorhus/execa/issues/938))
-   [Convert the subprocess](docs/streams.md#converting-a-subprocess-to-a-stream) to a stream by using [`subprocess.readable()`](docs/api.md#subprocessreadablereadableoptions), [`subprocess.writable()`](docs/api.md#subprocesswritablewritableoptions) or [`subprocess.duplex()`](docs/api.md#subprocessduplexduplexoptions). ([#912](https://github.com/sindresorhus/execa/issues/912), [#922](https://github.com/sindresorhus/execa/issues/922), [#958](https://github.com/sindresorhus/execa/issues/958))

##### Verbose mode

-   Print the subprocess' [completion, duration and errors](docs/debugging.md#short-mode) with the [`verbose: 'short'`](docs/api.md#optionsverbose) or `verbose: 'full'` option. ([#887](https://github.com/sindresorhus/execa/issues/887), [#890](https://github.com/sindresorhus/execa/issues/890))
-   Print the subprocess' [output](docs/debugging.md#full-mode) with the [`verbose: 'full'`](docs/api.md#optionsverbose) option. ([#884](https://github.com/sindresorhus/execa/issues/884), [#950](https://github.com/sindresorhus/execa/issues/950), [#962](https://github.com/sindresorhus/execa/issues/962), [#990](https://github.com/sindresorhus/execa/issues/990))
-   Prettier formatting and [colors](docs/debugging.md#colors) with the [`verbose`](docs/api.md#optionsverbose) option. ([#883](https://github.com/sindresorhus/execa/issues/883), [#893](https://github.com/sindresorhus/execa/issues/893), [#894](https://github.com/sindresorhus/execa/issues/894))

##### Debugging

-   Retrieve the subprocess' [duration](docs/debugging.md#duration) by using [`result.durationMs`](docs/api.md#resultdurationms) and [`error.durationMs`](docs/api.md#resultdurationms). ([#896](https://github.com/sindresorhus/execa/issues/896))
-   Retrieve the subprocess' [current directory](docs/environment.md#current-directory) by using [`result.cwd`](docs/api.md#resultcwd). Previously only [`error.cwd`](docs/api.md#execaerror) was available. Also, `result.cwd` and `error.cwd` are now normalized to absolute file paths. ([#803](https://github.com/sindresorhus/execa/issues/803))
-   Printing [`result.escapedCommand`](docs/api.md#resultescapedcommand) in a terminal [is now safe](docs/debugging.md#command). ([#875](https://github.com/sindresorhus/execa/issues/875))

##### Errors

-   The [`ExecaError`](docs/api.md#execaerror) and [`ExecaSyncError`](docs/api.md#execasyncerror) classes [are now exported](docs/errors.md#subprocess-failure). ([#911](https://github.com/sindresorhus/execa/issues/911))
-   Find the subprocess failure's [root cause](docs/termination.md#error-message-and-stack-trace) by using [`error.cause`](docs/api.md#errorcause). ([#911](https://github.com/sindresorhus/execa/issues/911))
-   Know whether [the subprocess failed](docs/errors.md#failure-reason) due to the [`maxBuffer`](docs/api.md#optionsmaxbuffer) option by using [`error.isMaxBuffer`](docs/api.md#errorismaxbuffer). ([#963](https://github.com/sindresorhus/execa/issues/963))
-   Improved [`error.message`](docs/api.md#errormessage): [`error.stdout`](docs/api.md#resultstdout) and [`error.stderr`](docs/api.md#resultstderr) are now [interleaved](docs/output.md#interleaved-output) if the [`all`](docs/api.md#optionsall) option is `true`. [Additional file descriptors](docs/output.md#additional-file-descriptors) are now printed too. Also, the [formatting](docs/errors.md#error-message) has been improved. ([#676](https://github.com/sindresorhus/execa/issues/676), [#705](https://github.com/sindresorhus/execa/issues/705), [#991](https://github.com/sindresorhus/execa/issues/991), [#992](https://github.com/sindresorhus/execa/issues/992))
-   [Control characters](https://en.wikipedia.org/wiki/Control_character) in [`error.message`](docs/api.md#errormessage) are now escaped, so they don't result in visual bugs when printed in a terminal. ([#879](https://github.com/sindresorhus/execa/issues/879))
-   Improved stack trace when an [`error`](https://nodejs.org/api/stream.html#event-error\_1) event is emitted on [`subprocess.stdout`](docs/api.md#subprocessstdout) or [`subprocess.stderr`](docs/api.md#subprocessstderr). ([#814](https://github.com/sindresorhus/execa/issues/814))

##### Termination

-   Specify an [error message or stack trace](docs/termination.md#error-message-and-stack-trace) when terminating a subprocess by passing an error instance to [`subprocess.kill()`](docs/api.md#subprocesskillerror). ([#811](https://github.com/sindresorhus/execa/issues/811), [#836](https://github.com/sindresorhus/execa/issues/836), [#1023](https://github.com/sindresorhus/execa/issues/1023))
-   The [`forceKillAfterDelay`](docs/api.md#optionsforcekillafterdelay) and [`killSignal`](docs/api.md#optionskillsignal) options [now apply to terminations](docs/termination.md#default-signal) due not only to [`subprocess.kill()`](docs/api.md#subprocesskillsignal-error) but [also to](docs/termination.md#forceful-termination) the [`cancelSignal`](docs/api.md#optionscancelsignal), [`timeout`](docs/api.md#optionstimeout), [`maxBuffer`](docs/api.md#optionsmaxbuffer) and [`cleanup`](docs/api.md#optionscleanup) options. ([#714](https://github.com/sindresorhus/execa/issues/714), [#728](https://github.com/sindresorhus/execa/issues/728))

##### Node.js files

-   Use the [`nodePath`](docs/api.md#optionsnodepath) and [`nodeOptions`](docs/api.md#optionsnodeoptions) options with [any method](docs/api.md#methods), as opposed to only [`execaNode()`](docs/api.md#execanodescriptpath-arguments-options), by passing the [`node: true`](docs/api.md#optionsnode) option. ([#804](https://github.com/sindresorhus/execa/issues/804), [#812](https://github.com/sindresorhus/execa/issues/812), [#815](https://github.com/sindresorhus/execa/issues/815))
-   When using [`execaNode()`](docs/api.md#execanodescriptpath-arguments-options) or the [`node: true`](docs/api.md#optionsnode) option, the [current Node.js version](docs/node.md#nodejs-version) is now inherited deeply. If the subprocess spawns other subprocesses, they will all use the [same Node.js version](docs/api.md#optionsnodepath). ([#812](https://github.com/sindresorhus/execa/issues/812), [#815](https://github.com/sindresorhus/execa/issues/815), [#1011](https://github.com/sindresorhus/execa/issues/1011))

##### Synchronous execution

-   Use the [`all`](docs/api.md#optionsall) and [`buffer: false`](docs/api.md#optionsbuffer) options with [`execaSync()`](docs/api.md#execasyncfile-arguments-options), as opposed to only [`execa()`](docs/api.md#execafile-arguments-options). ([#953](https://github.com/sindresorhus/execa/issues/953), [#956](https://github.com/sindresorhus/execa/issues/956))
-   Added the [`$.s`](docs/api.md#file-arguments-options) alias for [`$.sync`](docs/api.md#file-arguments-options). ([#594](https://github.com/sindresorhus/execa/issues/594))

##### Inter-process communication

-   Use the [`ipc: true`](docs/api.md#optionsipc) option, as [opposed to the more verbose](docs/ipc.md#exchanging-messages) [`stdio: ['pipe', 'pipe', 'pipe', 'ipc']`](docs/api.md#optionsstdio) option. ([#794](https://github.com/sindresorhus/execa/issues/794))

##### Input validation

-   Improved the validation of the [`input`](docs/api.md#optionsinput), [`timeout`](docs/api.md#optionstimeout), [`cwd`](docs/api.md#optionscwd), [`detached`](docs/api.md#optionsdetached), [`cancelSignal`](docs/api.md#optionscancelsignal) and [`encoding`](docs/api.md#optionsencoding) options. ([#668](https://github.com/sindresorhus/execa/issues/668), [#715](https://github.com/sindresorhus/execa/issues/715), [#803](https://github.com/sindresorhus/execa/issues/803), [#928](https://github.com/sindresorhus/execa/issues/928), [#940](https://github.com/sindresorhus/execa/issues/940))
-   Improved the validation of the arguments passed to [`execa()`](docs/api.md#execafile-arguments-options) and the [other exported methods](docs/api.md#methods). ([#838](https://github.com/sindresorhus/execa/issues/838), [#873](https://github.com/sindresorhus/execa/issues/873), [#899](https://github.com/sindresorhus/execa/issues/899))
-   Improved the validation of signals passed to [`subprocess.kill()`](docs/api.md#subprocesskillsignal-error) and to the [`killSignal`](docs/api.md#optionskillsignal) option. ([#1025](https://github.com/sindresorhus/execa/issues/1025))

#### Bug fixes

-   Fixed passing `undefined` values as [options](docs/api.md#options). This now uses the option's default value. ([#712](https://github.com/sindresorhus/execa/issues/712))
-   Fixed the process crashing when the [`inputFile`](docs/api.md#optionsinputfile) option points to a missing file. ([#609](https://github.com/sindresorhus/execa/issues/609))
-   Fixed the process crashing when the [`buffer`](docs/api.md#optionsbuffer) option is `false` and [`subprocess.stdout`](docs/api.md#subprocessstdout) [errors](https://nodejs.org/api/stream.html#event-error\_1). ([#729](https://github.com/sindresorhus/execa/issues/729))
-   Fixed the process crashing when passing [`'overlapped'`](docs/windows.md#asynchronous-io) to the [`stdout`](docs/api.md#optionsstdout) or [`stderr`](docs/api.md#optionsstderr) option with [`execaSync()`](docs/api.md#execasyncfile-arguments-options). ([#949](https://github.com/sindresorhus/execa/issues/949))
-   Fixed the process crashing when multiple [`'error'`](https://nodejs.org/api/child_process.html#event-error) events are emitted on the subprocess. ([#790](https://github.com/sindresorhus/execa/issues/790))
-   Fixed the [`reject: false`](docs/api.md#optionsreject) option not being used when the subprocess [fails to spawn](docs/errors.md#failure-reason). ([#734](https://github.com/sindresorhus/execa/issues/734))
-   Fixed [some inaccuracies](docs/errors.md#failure-reason) with [`error.isTerminated`](docs/api.md#erroristerminated). ([#625](https://github.com/sindresorhus/execa/issues/625), [#719](https://github.com/sindresorhus/execa/issues/719))
    -   It is now `true` when the subprocess fails due to the [`timeout`](docs/api.md#optionstimeout) option.
    -   It is now `true` when calling [`process.kill(subprocess.pid)`](https://nodejs.org/api/process.html#processkillpid-signal), except on Windows.
    -   It is now `false` when using [non-terminating signals](https://nodejs.org/api/child_process.html#subprocesskillsignal) such as `subprocess.kill(0)`.
-   Fixed missing [`error.signal`](docs/api.md#errorsignal) and [`error.signalDescription`](docs/api.md#errorsignaldescription) when the subprocess [is terminated](docs/termination.md#canceling) by the [`cancelSignal`](docs/api.md#optionscancelsignal) option. ([#724](https://github.com/sindresorhus/execa/issues/724))
-   Fixed a situation where the [error](docs/api.md#execaerror) returned by an [`execa()`](docs/api.md#execafile-arguments-options) call might be modified by another `execa()` call. ([#796](https://github.com/sindresorhus/execa/issues/796), [#806](https://github.com/sindresorhus/execa/issues/806), [#911](https://github.com/sindresorhus/execa/issues/911))
-   Fixed the [`verbose`](docs/api.md#optionsverbose) option [printing the command](docs/debugging.md#short-mode) in the wrong order. ([#600](https://github.com/sindresorhus/execa/issues/600))
-   Fixed using both the [`maxBuffer`](docs/api.md#optionsmaxbuffer) and [`encoding`](docs/api.md#optionsencoding) options. For example, when using [`encoding: 'hex'`](docs/binary.md#encoding), `maxBuffer` will now be measured in hexadecimal characters. Also, [`error.stdout`](docs/api.md#resultstdout), [`error.stderr`](docs/api.md#resultstderr) and [`error.all`](docs/api.md#resultall) were previously not applying the `maxBuffer` option. ([#652](https://github.com/sindresorhus/execa/issues/652), [#696](https://github.com/sindresorhus/execa/issues/696))
-   Fixed the [`maxBuffer`](docs/api.md#optionsmaxbuffer) option [not truncating](docs/output.md#big-output) [`result.stdout`](docs/api.md#resultstdout) and [`result.stderr`](docs/api.md#resultstderr) when using [`execaSync()`](docs/api.md#execasyncfile-arguments-options). ([#960](https://github.com/sindresorhus/execa/issues/960))
-   Fixed empty output when using the [`buffer: true`](docs/api.md#optionsbuffer) option (its default value) and [iterating](https://nodejs.org/api/stream.html#readablesymbolasynciterator) over [`subprocess.stdout`](docs/api.md#subprocessstdout) or [`subprocess.stderr`](docs/api.md#subprocessstderr). ([#908](https://github.com/sindresorhus/execa/issues/908))
-   Fixed [`subprocess.all`](docs/api.md#subprocessall) stream incorrectly being in [object mode](https://nodejs.org/api/stream.html#object-mode). ([#717](https://github.com/sindresorhus/execa/issues/717))
-   Ensured [`subprocess.stdout`](docs/api.md#subprocessstdout) and [`subprocess.stderr`](docs/api.md#subprocessstderr) are properly [flushed](https://nodejs.org/api/stream.html#buffering) when the subprocess fails. ([#647](https://github.com/sindresorhus/execa/issues/647))
-   Fixed a race condition leading to random behavior with the [`timeout`](docs/api.md#optionstimeout) option. ([#727](https://github.com/sindresorhus/execa/issues/727))

#### Types (breaking changes)

-   Renamed `CommonOptions` type to [`Options`](types/arguments/options.d.ts) (for [`execa()`](docs/api.md#execafile-arguments-options)) and [`SyncOptions`](types/arguments/options.d.ts) (for [`execaSync()`](docs/api.md#execasyncfile-arguments-options)). ([#678](https://github.com/sindresorhus/execa/issues/678), [#682](https://github.com/sindresorhus/execa/issues/682))

```diff
import type {Options} from 'execa';

- const options: CommonOptions = {timeout: 1000};
+ const options: Options = {timeout: 1000};
```

-   Renamed `NodeOptions` type to [`Options`](types/arguments/options.d.ts). ([#804](https://github.com/sindresorhus/execa/issues/804))

```diff
import type {Options} from 'execa';

- const options: NodeOptions = {nodeOptions: ['--no-warnings']};
+ const options: Options = {nodeOptions: ['--no-warnings']};
```

-   Renamed `KillOptions` type to [`Options`](types/arguments/options.d.ts). ([#714](https://github.com/sindresorhus/execa/issues/714))

```diff
import type {Options} from 'execa';

- const options: KillOptions = {forceKillAfterTimeout: 1000};
+ const options: Options = {forceKillAfterDelay: 1000};
```

-   Removed generic parameters from the [`Options`](types/arguments/options.d.ts) and [`SyncOptions`](types/arguments/options.d.ts) types. ([#681](https://github.com/sindresorhus/execa/issues/681))

```diff
import type {Options} from 'execa';

- const options: Options<'utf8'> = {encoding: 'utf8'};
+ const options: Options = {encoding: 'utf8'};
```

-   Renamed `ExecaChildProcess` type to [`ResultPromise`](types/subprocess/subprocess.d.ts). This is the type of [`execa()`](docs/api.md#execafile-arguments-options)'s [return value](docs/api.md#return-value), which is both a [`Promise<Result>`](docs/api.md#result) and a [`Subprocess`](docs/api.md#subprocess). ([#897](https://github.com/sindresorhus/execa/issues/897), [#1007](https://github.com/sindresorhus/execa/issues/1007), [#1009](https://github.com/sindresorhus/execa/issues/1009))

```diff
import type {ResultPromise, Result} from 'execa';

- const promiseOrSubprocess: ExecaChildProcess = execa('node', ['file.js']);
+ const promiseOrSubprocess: ResultPromise = execa('node', ['file.js']);
const result: Result = await promiseOrSubprocess;
promiseOrSubprocess.kill();
```

-   Renamed `ExecaChildPromise` type to [`Subprocess`](types/subprocess/subprocess.d.ts). This is the type of the [subprocess instance](docs/api.md#subprocess). ([#897](https://github.com/sindresorhus/execa/issues/897), [#1007](https://github.com/sindresorhus/execa/issues/1007), [#1009](https://github.com/sindresorhus/execa/issues/1009))

```diff
import type {Subprocess} from 'execa';

- const subprocess: ExecaChildPromise = execa('node', ['file.js']);
+ const subprocess: Subprocess = execa('node', ['file.js']);
subprocess.kill();
```

-   Renamed `ExecaReturnBase`, `ExecaReturnValue` and `ExecaSyncReturnValue` type to [`Result`](types/return/result.d.ts) (for [`execa()`](docs/api.md#execafile-arguments-options)) and [`SyncResult`](types/return/result.d.ts) (for [`execaSync()`](docs/api.md#execasyncfile-arguments-options)). ([#897](https://github.com/sindresorhus/execa/issues/897), [#1009](https://github.com/sindresorhus/execa/issues/1009))

```diff
import type {Result, SyncResult} from 'execa';

- const result: ExecaReturnBase = await execa('node', ['file.js']);
+ const result: Result = await execa('node', ['file.js']);

- const result: ExecaReturnValue = await execa('node', ['file.js']);
+ const result: Result = await execa('node', ['file.js']);

- const result: ExecaSyncReturnValue = execaSync('node', ['file.js']);
+ const result: SyncResult = execaSync('node', ['file.js']);
```

-   Renamed the type of the [`stdin`](docs/api.md#optionsstdin) option from `StdioOption` to [`StdinOption`](types/stdio/type.d.ts) (for [`execa()`](docs/api.md#execafile-arguments-options)) and [`StdinSyncOption`](types/stdio/type.d.ts) (for [`execaSync()`](docs/api.md#execasyncfile-arguments-options)). ([#942](https://github.com/sindresorhus/execa/issues/942), [#1008](https://github.com/sindresorhus/execa/issues/1008), [#1012](https://github.com/sindresorhus/execa/issues/1012))

```diff
import {execa, type StdinOption} from 'execa';

- const stdin: StdioOption = 'inherit';
+ const stdin: StdinOption = 'inherit';
await execa('node', ['file.js'], {stdin});
```

-   Renamed the type of the [`stdout`](docs/api.md#optionsstdout) and [`stderr`](docs/api.md#optionsstderr) options from `StdioOption` to [`StdoutStderrOption`](types/stdio/type.d.ts) (for [`execa()`](docs/api.md#execafile-arguments-options)) and [`StdoutStderrSyncOption`](types/stdio/type.d.ts) (for [`execaSync()`](docs/api.md#execasyncfile-arguments-options)). ([#942](https://github.com/sindresorhus/execa/issues/942), [#1008](https://github.com/sindresorhus/execa/issues/1008), [#1012](https://github.com/sindresorhus/execa/issues/1012))

```diff
import {execa, type StdoutStderrOption} from 'execa';

- const stdout: StdioOption = 'inherit';
+ const stdout: StdoutStderrOption = 'inherit';
- const stderr: StdioOption = 'inherit';
+ const stderr: StdoutStderrOption = 'inherit';
await execa('node', ['file.js'], {stdout, stderr});
```

-   Renamed the type of the [`stdio`](docs/api.md#optionsstdio) option from `StdioOption[]` to [`Options['stdio']`](types/arguments/options.d.ts) (for [`execa()`](docs/api.md#execafile-arguments-options)) and [`SyncOptions['stdio']`](types/arguments/options.d.ts) (for [`execaSync()`](docs/api.md#execasyncfile-arguments-options)). ([#942](https://github.com/sindresorhus/execa/issues/942), [#1008](https://github.com/sindresorhus/execa/issues/1008))

```diff
import {execa, type Options} from 'execa';

- const stdio: readonly StdioOption[] = ['inherit', 'pipe', 'pipe'] as const;
+ const stdio: Options['stdio'] = ['inherit', 'pipe', 'pipe'] as const;
await execa('node', ['file.js'], {stdio});
```

-   The optional generic parameter passed to the [`Result`](types/return/result.d.ts), [`SyncResult`](types/return/result.d.ts), [`ExecaError`](types/return/final-error.d.ts), [`ExecaSyncError`](types/return/final-error.d.ts), [`ResultPromise`](types/subprocess/subprocess.d.ts) and [`Subprocess`](types/subprocess/subprocess.d.ts) types is now an [`Options`](types/arguments/options.d.ts) type. ([#681](https://github.com/sindresorhus/execa/issues/681))

```diff
import type {Result} from 'execa';

- const result: ExecaReturnValue<Buffer> = await execa('node', ['file.js'], {encoding: 'buffer'});
+ const result: Result<{encoding: 'buffer'}> = await execa('node', ['file.js'], {encoding: 'buffer'});
// Or even better, since it is inferred:
+ const result: Result = await execa('node', ['file.js'], {encoding: 'buffer'});
```

#### Types (improvements)

-   Stricter types for the [`stdin`](docs/api.md#optionsstdin), [`stdout`](docs/api.md#optionsstdout), [`stderr`](docs/api.md#optionsstderr) and [`stdio`](docs/api.md#optionsstdio) options. ([#634](https://github.com/sindresorhus/execa/issues/634), [#943](https://github.com/sindresorhus/execa/issues/943), [#952](https://github.com/sindresorhus/execa/issues/952))
-   Stricter types for [`result.stdout`](docs/api.md#resultstdout), [`result.stderr`](docs/api.md#resultstderr), [`result.all`](docs/api.md#resultall), [`subprocess.stdout`](docs/api.md#subprocessstdout), [`subprocess.stderr`](docs/api.md#subprocessstderr) and [`subprocess.all`](docs/api.md#subprocessall). ([#681](https://github.com/sindresorhus/execa/issues/681), [#684](https://github.com/sindresorhus/execa/issues/684), [#687](https://github.com/sindresorhus/execa/issues/687), [#689](https://github.com/sindresorhus/execa/issues/689), [#833](https://github.com/sindresorhus/execa/issues/833))
-   Stricter types for the [synchronous methods](docs/execution.md#synchronous-execution) like [`execaSync()`](docs/api.md#execasyncfile-arguments-options). ([#678](https://github.com/sindresorhus/execa/issues/678), [#939](https://github.com/sindresorhus/execa/issues/939))
-   Stricter types for the [`reject`](docs/api.md#optionsreject) option. ([#688](https://github.com/sindresorhus/execa/issues/688))
-   Stricter types for [`error.signal`](docs/api.md#errorsignal) and the [`killSignal`](docs/api.md#optionskillsignal) option. ([#1025](https://github.com/sindresorhus/execa/issues/1025))
-   Fixed the type of [`error.exitCode`](docs/api.md#errorexitcode), since that field is sometimes `undefined`. ([#680](https://github.com/sindresorhus/execa/issues/680))
-   Refactored and improved the types. (by [@koshic](https://github.com/koshic)) ([#583](https://github.com/sindresorhus/execa/issues/583))

#### Documentation

-   Added [user guides](readme.md#documentation) to let you explore each feature with many examples. ([#989](https://github.com/sindresorhus/execa/issues/989), [#996](https://github.com/sindresorhus/execa/issues/996), [#1015](https://github.com/sindresorhus/execa/issues/1015), [#1022](https://github.com/sindresorhus/execa/issues/1022), [#1026](https://github.com/sindresorhus/execa/issues/1026))
-   Improved the [documentation](readme.md#documentation) and fixed inaccuracies. ([#626](https://github.com/sindresorhus/execa/issues/626), [#637](https://github.com/sindresorhus/execa/issues/637), [#640](https://github.com/sindresorhus/execa/issues/640), [#641](https://github.com/sindresorhus/execa/issues/641), [#644](https://github.com/sindresorhus/execa/issues/644), [#669](https://github.com/sindresorhus/execa/issues/669), [#680](https://github.com/sindresorhus/execa/issues/680), [#710](https://github.com/sindresorhus/execa/issues/710), [#759](https://github.com/sindresorhus/execa/issues/759), [#800](https://github.com/sindresorhus/execa/issues/800), [#801](https://github.com/sindresorhus/execa/issues/801), [#802](https://github.com/sindresorhus/execa/issues/802), [#860](https://github.com/sindresorhus/execa/issues/860), [#870](https://github.com/sindresorhus/execa/issues/870), [#876](https://github.com/sindresorhus/execa/issues/876), [#888](https://github.com/sindresorhus/execa/issues/888), [#907](https://github.com/sindresorhus/execa/issues/907), [#921](https://github.com/sindresorhus/execa/issues/921), [#935](https://github.com/sindresorhus/execa/issues/935), [#967](https://github.com/sindresorhus/execa/issues/967), [#968](https://github.com/sindresorhus/execa/issues/968), [#994](https://github.com/sindresorhus/execa/issues/994), [#998](https://github.com/sindresorhus/execa/issues/998), [#999](https://github.com/sindresorhus/execa/issues/999), [#1000](https://github.com/sindresorhus/execa/issues/1000), [#1003](https://github.com/sindresorhus/execa/issues/1003), [#1005](https://github.com/sindresorhus/execa/issues/1005), [#1006](https://github.com/sindresorhus/execa/issues/1006), [#1010](https://github.com/sindresorhus/execa/issues/1010))
-   Fixed the examples for the [Script interface](docs/bash.md). (by [@am0o0](https://github.com/am0o0)) ([#575](https://github.com/sindresorhus/execa/issues/575))
-   Corrected some English grammar mistakes. (by [@codesmith-emmy](https://github.com/codesmith-emmy)) ([#731](https://github.com/sindresorhus/execa/issues/731))
##### [v2.0.5](https://github.com/vitest-dev/vitest/releases/tag/v2.0.5)

#####    🚀 Features

-   Introduce experimental reported tasks  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6149 [<samp>(13d85)</samp>](vitest-dev/vitest@13d85bd1)
    -   This is part of the experimental API and doesn't follow semver. We are hoping to stabilize it for 2.1. If you are working with custom reporters, give this a go!

#####    🐞 Bug Fixes

-   Show a difference between string characters if both values are strings  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6191 [<samp>(29176)</samp>](vitest-dev/vitest@291766d7)
-   `testNamePattern` adds leading space  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6186 [<samp>(073a5)</samp>](vitest-dev/vitest@073a50c9)
-   **browser**:
    -   Don't bundle `afterEach` cleanup hooks in node entrypoint  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6192 [<samp>(e6fbc)</samp>](vitest-dev/vitest@e6fbc620)
    -   UserEvent.setup initiates a separate state for userEvent instance  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6088 [<samp>(883f3)</samp>](vitest-dev/vitest@883f3482)
    -   Correctly import optimized module in vi.importActual  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6219 [<samp>(804ff)</samp>](vitest-dev/vitest@804ff2fd)
    -   Passing options to hover/unhover  -  by [@MNeverOff](https://github.com/MNeverOff) in vitest-dev/vitest#6175 [<samp>(d4c00)</samp>](vitest-dev/vitest@d4c005bc)
    -   Improve unique CSS selector generation  -  by [@zacharyvoase](https://github.com/zacharyvoase) and **Zack Voase** in vitest-dev/vitest#6243 [<samp>(e7acd)</samp>](vitest-dev/vitest@e7acd0cf)
-   **vitest**:
    -   Remove nuxt from auto inline deps  -  by [@sheremet-va](https://github.com/sheremet-va) [<samp>(93882)</samp>](vitest-dev/vitest@93882f38)
    -   Improve `defineProject` and `defineWorkspace` types  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6198 [<samp>(8cd82)</samp>](vitest-dev/vitest@8cd8272b)
    -   Correctly resolve mocked `node:*` imports in `__mocks__` folder  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6204 [<samp>(a48be)</samp>](vitest-dev/vitest@a48be6ff)
-   **web-worker**:
    -   Expose globals on self  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6170 [<samp>(12bb5)</samp>](vitest-dev/vitest@12bb567e)

#####     [View changes on GitHub](vitest-dev/vitest@v2.0.4...v2.0.5)
##### [v2.0.4](https://github.com/vitest-dev/vitest/releases/tag/v2.0.4)

#####    🐞 Bug Fixes

-   One-line environment options  -  by [@hahanein](https://github.com/hahanein) in vitest-dev/vitest#5105 [<samp>(38269)</samp>](vitest-dev/vitest@38269415)
-   Resolve assets imported with `require`  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6159 [<samp>(807a2)</samp>](vitest-dev/vitest@807a2cbc)
-   **browser**:
    -   Don't panic if [@vitest/browser](https://github.com/vitest/browser) is installed outside of project root  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6135 [<samp>(ccfcd)</samp>](vitest-dev/vitest@ccfcd488)
    -   Set global filepath  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6190 [<samp>(0d0b4)</samp>](vitest-dev/vitest@0d0b46b1)
    -   Allow preview and open in the editor screenshot error from ui  -  by [@userquin](https://github.com/userquin) in vitest-dev/vitest#6113 [<samp>(2d620)</samp>](vitest-dev/vitest@2d62051f)
-   **coverage**:
    -   Global thresholds to include files from glob thresholds  -  by [@thor-juhasz](https://github.com/thor-juhasz) and [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6172 [<samp>(02e3f)</samp>](vitest-dev/vitest@02e3f003)
    -   Consistent type-only file handling  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6183 [<samp>(90576)</samp>](vitest-dev/vitest@90576148)
    -   Ignore `*.cts` files  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6189 [<samp>(5da45)</samp>](vitest-dev/vitest@5da45db1)
    -   Add `thresholds.<glob>.100` option  -  by [@thor-juhasz](https://github.com/thor-juhasz) and [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6174 [<samp>(f6845)</samp>](vitest-dev/vitest@f68453f8)
-   **spy**:
    -   Fix `mockImplementation` for function overload and unions  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#6181 [<samp>(7a75b)</samp>](vitest-dev/vitest@7a75bd4c)

#####     [View changes on GitHub](vitest-dev/vitest@v2.0.3...v2.0.4)
##### [v2.0.3](https://github.com/vitest-dev/vitest/releases/tag/v2.0.3)

#####    🚀 Features

-   **ui**: Show all suites/tests when parent matches  -  by [@userquin](https://github.com/userquin) in vitest-dev/vitest#6106 [<samp>(840e0)</samp>](vitest-dev/vitest@840e02f1)

#####    🐞 Bug Fixes

-   `--inspect-brk` stop on Windows  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6110 [<samp>(f8519)</samp>](vitest-dev/vitest@f851982e)
-   **browser**:
    -   Don't import from "vite"  -  by [@sheremet-va](https://github.com/sheremet-va) [<samp>(35655)</samp>](vitest-dev/vitest@35655419)
    -   Allow immidiate reinvalidation of mocked dependencies  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6108 [<samp>(f44cc)</samp>](vitest-dev/vitest@f44cc917)
-   **spy**:
    -   Fix type error when assigning `vi.spyOn` to `MockInstance` of function overload  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#6086 [<samp>(e9f9a)</samp>](vitest-dev/vitest@e9f9adcd)
-   **vite-node**:
    -   Remove suffix slash on file protocol for window  -  by [@syi0808](https://github.com/syi0808) in vitest-dev/vitest#6109 [<samp>(93ebd)</samp>](vitest-dev/vitest@93ebdefc)

#####     [View changes on GitHub](vitest-dev/vitest@v2.0.2...v2.0.3)
##### [v2.0.2](vitest-dev/vitest@v2.0.1...v2.0.2)

##### [v2.0.1](https://github.com/vitest-dev/vitest/releases/tag/v2.0.1)

#####    🐞 Bug Fixes

-   **browser**: Correctly inherit browser config in a workspace  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6054 [<samp>(4b03e)</samp>](vitest-dev/vitest@4b03e72b)
-   **ui**: Move virtual scroller to dev dependencies  -  by [@userquin](https://github.com/userquin) in vitest-dev/vitest#6053 [<samp>(f94ed)</samp>](vitest-dev/vitest@f94ede02)
-   **vitest**: Print only running files, not every file  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6052 [<samp>(4d559)</samp>](vitest-dev/vitest@4d5597df)

#####     [View changes on GitHub](vitest-dev/vitest@v2.0.0...v2.0.1)
##### [v2.0.0](https://github.com/vitest-dev/vitest/releases/tag/v2.0.0)

Vitest 2.0 is here! This release page lists all changes made to the project during the beta. For the migration guide, please refer to the [documentation](https://vitest.dev/guide/migration.html#migrating-to-vitest-2-0).

##### 🚨 Breaking Changes

-   Simplify mock function generic types and align with jest - by **[@hi-ogawa](https://github.com/hi-ogawa)** in vitest-dev/vitest#4784 [<samp>(a0c1d37)</samp>](vitest-dev/vitest@a0c1d37)
-   Remove `--segfault-retry` - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5514 [<samp>(ed60e)</samp>](vitest-dev/vitest@ed60e405e)
    -   This flag was introduced to combat `threads` segfaults. Our current recommendation is to use the new default `forks` pool instead.
-   Run suite hooks in a stack - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5609 [<samp>(1277d)</samp>](vitest-dev/vitest@1277dc1e3)
    -   This feels like a more sensible default. Especially with the new [`onTestFinished`](https://vitest.dev/api/#ontestfinished) hook. This can make your tests run a little bit slower.
-   Enable `coverage.ignoreEmptyLines` by default - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5543 [<samp>(31994)</samp>](vitest-dev/vitest@31994942f)
    -   ⚠️ This change may cause significant differences in your coverage results compared to Vitest v1. These changes are expected as coverage reporting is now more accurate. See vitest-dev/vitest#5423 for more details.
-   Add correct location and snapshot fields in json reporter - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5434 [<samp>(bcccc)</samp>](vitest-dev/vitest@bcccce6df)
    -   Previously, the `location` field pointed to the error location instead of the test location. Now it is aligned with jest and contains the `line` and `column` of a test function, but requires [`includeTaskLocation`](https://vitest.dev/config/#includeTaskLocation) to be enabled.
-   Update dependency chai to v5 - by **renovate\[bot]** and [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5135 [<samp>(73646)</samp>](vitest-dev/vitest@73646b638)
-   Remove watchExclude - by [@patak-dev](https://github.com/patak-dev) in vitest-dev/vitest#5177 [<samp>(d7371)</samp>](vitest-dev/vitest@d7371eae3)
-   Change default `pool` to `'forks'` - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5047 [<samp>(7f8f9)</samp>](vitest-dev/vitest@7f8f9c0c0)
    -   This change is done for compatibility issues
    -   This pool may be slightly slower than previous `threads` pool: https://vitest.dev/guide/improving-performance.html#pool
-   `--merge-reports` to support coverage - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5736 [<samp>(b7438)</samp>](vitest-dev/vitest@b7438b9be)
-   Add promise-based return assertions, do not auto-resolve returned promises - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5749 [<samp>(5f710)</samp>](vitest-dev/vitest@5f710182e)
    -   ⚠️ Vitest no longer unwraps promises in `spy.mock.returns`. If the function is async or returns a promise, it will always succeed and have a `Promise` in `results`. To make migration easier, we introduced `spy.mock.settledResults` that unwraps promises and `expect().toHaveResolved()` matcher that accepts unwrapped value.
-   Do not exit process if global setup has failed - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5726 [<samp>(ddb09)</samp>](vitest-dev/vitest@ddb09eb12)
-   Don't exit process if config failed - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5715 [<samp>(f232f)</samp>](vitest-dev/vitest@f232fdd61)
-   Add meta to `json` output - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5802 [<samp>(dd754)</samp>](vitest-dev/vitest@dd754c103)
-   Rename `indexScripts` to `orchestratorScripts` in the browser config - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5842 [<samp>(49f34)</samp>](vitest-dev/vitest@49f34ec47)
-   Add "vitest list" API to print collected tests without running them - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6013 [<samp>(583dd)</samp>](vitest-dev/vitest@583dd8a98)
    -   ⚠️ This changes the custom `pool` API - now requires `collectTests` method alongside `runTests`.
-   Remove the empty suite from the runner - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5435 [<samp>(dbbbe)</samp>](vitest-dev/vitest@dbbbe4304)
-   Support concurrent suites - by **[@hi-ogawa](https://github.com/hi-ogawa)** in vitest-dev/vitest#5491 [<samp>(222ce44)</samp>](vitest-dev/vitest@222ce44)

##### 🚀 Features

-   Pretty print diffs coming from cause - by [@dubzzz](https://github.com/dubzzz) in vitest-dev/vitest#5660 [<samp>(6faf8)</samp>](vitest-dev/vitest@6faf8f84b)
-   Allow import statement as vi.mock path for better IDE support - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5690 [<samp>(a99a1)</samp>](vitest-dev/vitest@a99a14c1c)
-   Remove deprecated options - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5696 [<samp>(5c308)</samp>](vitest-dev/vitest@5c308edc6)
-   Add blob reporter - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5663 [<samp>(e2053)</samp>](vitest-dev/vitest@e20538a36)
-   Add expect.poll utility - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5708 [<samp>(e2e0f)</samp>](vitest-dev/vitest@e2e0ff46a)
-   Add browser.ui option - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5771 [<samp>(a5033)</samp>](vitest-dev/vitest@a50330eea)
-   Add median to `--output-json` - by [@Joristdh](https://github.com/Joristdh) in vitest-dev/vitest#5745 [<samp>(0766b)</samp>](vitest-dev/vitest@0766b7f72)
-   Allow augmenting config.test.env - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5784 [<samp>(b2469)</samp>](vitest-dev/vitest@b24691efd)
-   Implement module mocking in browser mode - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5765 [<samp>(7b2f6)</samp>](vitest-dev/vitest@7b2f64cfa)
-   Allow configuring expect options in the config - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5729 [<samp>(fc53f)</samp>](vitest-dev/vitest@fc53f5634)
-   Add an option to print console stack trace - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5720 [<samp>(e4fe6)</samp>](vitest-dev/vitest@e4fe6f51a)
-   Add browser frame to UI - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5808 [<samp>(3796d)</samp>](vitest-dev/vitest@3796dd7e0)
-   Image type add bmp - by **btea** in vitest-dev/vitest#5921 [<samp>(98f9b)</samp>](vitest-dev/vitest@98f9b7ab9)
-   Add an option to return base64 from page.screenshot - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5993 [<samp>(be323)</samp>](vitest-dev/vitest@be3231763)
-   Expose `parseAst`, `parseAstAsync` from vite - by [@sheremet-va](https://github.com/sheremet-va) [<samp>(f645e)</samp>](vitest-dev/vitest@f645e48c5)
-   **browser**:
    -   Add commands to communicate betweens server and the browser - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5097 [<samp>(aa431)</samp>](vitest-dev/vitest@aa431f4db)
    -   Do not reload the page during watch mode - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5810 [<samp>(e5b9a)</samp>](vitest-dev/vitest@e5b9a0be4)
    -   Support changing the viewport - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5811 [<samp>(71851)</samp>](vitest-dev/vitest@718512d80)
    -   Add browser iframe mouse interaction - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5815 [<samp>(f29b9)</samp>](vitest-dev/vitest@f29b9d408)
    -   Support `click` event - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5777 [<samp>(839c3)</samp>](vitest-dev/vitest@839c39f06)
    -   Rename none provider to preview, make it default - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5826 [<samp>(18310)</samp>](vitest-dev/vitest@1831008b1)
    -   Run tests in parallel in headless mode, add `page.screenshot` method - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5853 [<samp>(81c42)</samp>](vitest-dev/vitest@81c42fc8a)
    -   Implement several `userEvent` methods, add `fill` and `dragAndDrop` events - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5882 [<samp>(4dbea)</samp>](vitest-dev/vitest@4dbea4aed)
    -   Introduce `expect.dom` method and bundle `jest-dom` matchers with `@vitest/browser` - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5910 [<samp>(3a96a)</samp>](vitest-dev/vitest@3a96a3d0e)
    -   Expose CDP in the browser - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5938 [<samp>(bec43)</samp>](vitest-dev/vitest@bec434cb6)
    -   Add "init" command for browser tests - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5960 [<samp>(49e97)</samp>](vitest-dev/vitest@49e973cb9)
    -   Add an option to take screenshots if the browser test fails - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5975 [<samp>(154cb)</samp>](vitest-dev/vitest@154cb22de)
    -   Add `tripleClick` to interactive api - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5987 [<samp>(200a4)</samp>](vitest-dev/vitest@200a4349a)
    -   Playwright provider doesn't allow resizing the browser viewport - by [@userquin](https://github.com/userquin) and [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5984 [<samp>(ff978)</samp>](vitest-dev/vitest@ff978e58d)
-   **config**:
    -   Allow percentage value for workers option - by [@syi0808](https://github.com/syi0808) in vitest-dev/vitest#5982 [<samp>(b1a27)</samp>](vitest-dev/vitest@b1a27d404)
-   **runner**:
    -   Implement `test.for` - by [@hi-ogawa](https://github.com/hi-ogawa) and [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5861 [<samp>(c2380)</samp>](vitest-dev/vitest@c238072fd)
-   **spy**:
    -   Collect mock.contexts - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5955 [<samp>(3b31a)</samp>](vitest-dev/vitest@3b31a56d5)
-   **ui**:
    -   Render tests in a tree - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5807 [<samp>(7900f)</samp>](vitest-dev/vitest@7900f9f89)
    -   Load module graph on tab selection - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5844 [<samp>(b117e)</samp>](vitest-dev/vitest@b117e8756)
    -   Replace navigation tree with test explorer - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5907 [<samp>(45dfc)</samp>](vitest-dev/vitest@45dfc95ae)
    -   Add initializing explorer logic - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5941 [<samp>(c31c4)</samp>](vitest-dev/vitest@c31c41c72)
    -   Add action to explorer item to show the test/suite line in the source code tab - by [@userquin](https://github.com/userquin) and **Anjorin Damilare** in vitest-dev/vitest#5948 [<samp>(7ec29)</samp>](vitest-dev/vitest@7ec298eb3)
-   **ws-client**:
    -   Allow change reactive for state, filesMap and idMap - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5906 [<samp>(e6020)</samp>](vitest-dev/vitest@e6020b9c2)

##### 🐞 Bug Fixes

-   Print console statements in vmThreads - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5678 [<samp>(34a80)</samp>](vitest-dev/vitest@34a80b392)
-   Repeatable `--exclude` option - by [@fregante](https://github.com/fregante) in vitest-dev/vitest#5782 [<samp>(d6700)</samp>](vitest-dev/vitest@d6700bbd8)
-   Remove browser.fileParallelism - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5790 [<samp>(b881e)</samp>](vitest-dev/vitest@b881e88b2)
-   Install UI icons - by [@sheremet-va](https://github.com/sheremet-va) [<samp>(b84f1)</samp>](vitest-dev/vitest@b84f1721d)
-   Remove process.exit if workspace project failed to be created - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5804 [<samp>(a820e)</samp>](vitest-dev/vitest@a820e7ac6)
-   Vi.waitFor/vi.waitUntil interval is now cleared after it times out - by [@pedro00dk](https://github.com/pedro00dk) in vitest-dev/vitest#5875 [<samp>(04107)</samp>](vitest-dev/vitest@041076e7c)
-   ToJSON recursive error serialization - by [@eddienubes](https://github.com/eddienubes) in vitest-dev/vitest#5848 and vitest-dev/vitest#5884 [<samp>(8d55d)</samp>](vitest-dev/vitest@8d55d6bd4)
-   Print error properties only in verbose reporter - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5917 [<samp>(2bd8d)</samp>](vitest-dev/vitest@2bd8d9d6f)
-   Use TTY reporter when running in Deno - by [@marvinhagemeister](https://github.com/marvinhagemeister) in vitest-dev/vitest#5972 [<samp>(e0f45)</samp>](vitest-dev/vitest@e0f45cb57)
-   Don't override uppercase - by [@sheremet-va](https://github.com/sheremet-va) [<samp>(caef4)</samp>](vitest-dev/vitest@caef40a0b)
-   Clear screen and scrollback on iTerm2 - by [@kxalex](https://github.com/kxalex) in vitest-dev/vitest#5978 [<samp>(d7f23)</samp>](vitest-dev/vitest@d7f23d08c)
-   Include pretty-format in [@vitest/runner](https://github.com/vitest/runner) for optimization on npm - by [@sheremet-va](https://github.com/sheremet-va) [<samp>(42bd4)</samp>](vitest-dev/vitest@42bd4a259)
-   Transpile esnext to node18 to support newest JS and TS features - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#4409 [<samp>(8f65a)</samp>](vitest-dev/vitest@8f65ae906)
-   **api**:
    -   Correct `project.provide` type - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5959 [<samp>(0eda9)</samp>](vitest-dev/vitest@0eda99de9)
    -   Don't call process.exit manually - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5926 [<samp>(e9b63)</samp>](vitest-dev/vitest@e9b638d40)
-   **browser**:
    -   Display UI - by [@sheremet-va](https://github.com/sheremet-va) [<samp>(d41e4)</samp>](vitest-dev/vitest@d41e46a81)
    -   Browser actions icons colors - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5816 [<samp>(f9d9b)</samp>](vitest-dev/vitest@f9d9b3bef)
    -   Restore the original viewport when unselecting the preset viewport - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5821 [<samp>(5ebb3)</samp>](vitest-dev/vitest@5ebb3abf5)
    -   Don't get stuck after the manual page refresh - by [@sheremet-va](https://github.com/sheremet-va) [<samp>(2220b)</samp>](vitest-dev/vitest@2220bb3fe)
    -   Use iframe id instead of calculating it from filenames - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5823 [<samp>(34a31)</samp>](vitest-dev/vitest@34a310da1)
    -   Always clean up iframes on rerun - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5827 [<samp>(087fa)</samp>](vitest-dev/vitest@087fa87c3)
    -   Support [@testing-library/vue](https://github.com/testing-library/vue) in browser mode out of the box - by [@sheremet-va](https://github.com/sheremet-va) [<samp>(76b82)</samp>](vitest-dev/vitest@76b82e5b9)
    -   Print correct transformed module graph - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5833 [<samp>(a7581)</samp>](vitest-dev/vitest@a75815756)
    -   Use `preview` provider when running in StackBlitz - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5836 [<samp>(76e13)</samp>](vitest-dev/vitest@76e13587c)
    -   Specify entries for correct deps optimization - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5839 [<samp>(c79b3)</samp>](vitest-dev/vitest@c79b3f1f9)
    -   Allow iframe to load even if there is a custom CSP header - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5841 [<samp>(caaaf)</samp>](vitest-dev/vitest@caaafd903)
    -   Don't optimize Vitest dependencies - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5843 [<samp>(f15b4)</samp>](vitest-dev/vitest@f15b4e99d)
    -   Set server.open to false and move error handling after init - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5845 [<samp>(47003)</samp>](vitest-dev/vitest@470036794)
    -   Show correct prepare time - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5852 [<samp>(52d54)</samp>](vitest-dev/vitest@52d545bf9)
    -   Resolve `coverage.reporter` from string values - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5920 [<samp>(f33da)</samp>](vitest-dev/vitest@f33dabbef)
    -   Correctly update inline snapshot if changed - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5925 [<samp>(2380c)</samp>](vitest-dev/vitest@2380cb95e)
    -   Remove "util" warning - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5935 [<samp>(48f28)</samp>](vitest-dev/vitest@48f28f731)
    -   Remove hacky retry - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5971 [<samp>(2a2c9)</samp>](vitest-dev/vitest@2a2c9085a)
    -   Make userEvent more stable when running in parallel - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5974 [<samp>(14a21)</samp>](vitest-dev/vitest@14a217d53)
    -   Print screenshot path alongside the test error message - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5992 [<samp>(15289)</samp>](vitest-dev/vitest@152891b3d)
    -   Print correct stack trace in source files - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6003 [<samp>(62aa7)</samp>](vitest-dev/vitest@62aa72081)
    -   Correctly mock optimized cjs dependencies - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6035 [<samp>(057b4)</samp>](vitest-dev/vitest@057b4f34b)
    -   Support shadow root and svg elements - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6036 [<samp>(2e3c8)</samp>](vitest-dev/vitest@2e3c872ae)
-   **coverage**:
    -   Clean up empty coverage reports directory - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5731 [<samp>(c469c)</samp>](vitest-dev/vitest@c469c74d7)
    -   `thresholds.autoUpdate` to support `mergeConfig` - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5818 [<samp>(7afb3)</samp>](vitest-dev/vitest@7afb3682f)
    -   Pass thresholds errors to `stderr` of `startVitest()` - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5954 [<samp>(70805)</samp>](vitest-dev/vitest@708051319)
    -   Exclude bench files from coverage - by [@kouak](https://github.com/kouak) in vitest-dev/vitest#5983 [<samp>(429e1)</samp>](vitest-dev/vitest@429e1a7f8)
    -   Vite to ignore dynamic import of provider - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5998 [<samp>(6d884)</samp>](vitest-dev/vitest@6d8848e86)
    -   Istanbul to support import attributes - by [@Gravitonic](https://github.com/Gravitonic) in vitest-dev/vitest#6006 [<samp>(2898a)</samp>](vitest-dev/vitest@2898a525d)
    -   Support overriding `exclude` - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5997 [<samp>(169bc)</samp>](vitest-dev/vitest@169bc1fde)
    -   Remove work-around for implicit `else` - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6014 [<samp>(368c1)</samp>](vitest-dev/vitest@368c13728)
-   **deps**:
    -   Update dependency [@testing-library/dom](https://github.com/testing-library/dom) to v10 - by **renovate\[bot]** in vitest-dev/vitest#5866 [<samp>(e9745)</samp>](vitest-dev/vitest@e9745997e)
    -   Update vulnerable `test-exclude` to v7 - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5867 [<samp>(0a715)</samp>](vitest-dev/vitest@0a715946b)
-   **expect**:
    -   Fix immutable.js iterable equality - by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5692 [<samp>(1532c)</samp>](vitest-dev/vitest@1532c19a0)
-   **forks**:
    -   Resolve `poolOptions.<name>.isolate` from `forks` options - by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#5840 [<samp>(a60a1)</samp>](vitest-dev/vitest@a60a140ef)
-   **runner**:
    -   Ensure inner suite { sequential: true } correctly overrides outer suite { concurrent: true } - by [@pengooseDev](https://github.com/pengooseDev) in vitest-dev/vitest#5737 [<samp>(a20e7)</samp>](vitest-dev/vitest@a20e75b89)
    -   Ensure test.each print -0 and -NaN properly - by [@pengooseDev](https://github.com/pengooseDev) in vitest-dev/vitest#5806 [<samp>(9ac8f)</samp>](vitest-dev/vitest@9ac8ff9bd)
-   **snapshot**:
    -   Fix `toMatchFileSnapshot` with empty file - by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5894 [<samp>(88006)</samp>](vitest-dev/vitest@8800601d2)
-   **spy**:
    -   Correctly track constructor's "this" type - by [@sheremet-va](https://github.com/sheremet-va) [<samp>(4776e)</samp>](vitest-dev/vitest@4776eca1d)
-   **types**:
    -   Mark pool options as not available in project config - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5934 [<samp>(486fd)</samp>](vitest-dev/vitest@486fd1169)
-   **ui**:
    -   Show correct module graph and project name in a Vitest workspace - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5792 [<samp>(48c50)</samp>](vitest-dev/vitest@48c502fbe)
    -   Update running todo tests inside todo suites (each) - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5939 [<samp>(63ae1)</samp>](vitest-dev/vitest@63ae10bd9)
    -   `FileDetails` title status icon not being updated - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5942 [<samp>(e9ddf)</samp>](vitest-dev/vitest@e9ddf9ce2)
-   **ui, browser**:
    -   Disable mouse events when resizing main navigation panel - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5863 [<samp>(7cbd9)</samp>](vitest-dev/vitest@7cbd943c7)
-   **utils**:
    -   Produce valid snapshot names - by [@dubzzz](https://github.com/dubzzz) in vitest-dev/vitest#5724 [<samp>(1ec61)</samp>](vitest-dev/vitest@1ec61ceee)
    -   Fix color util maximum call stack error - by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#5733 [<samp>(a4ec5)</samp>](vitest-dev/vitest@a4ec58319)
    -   Package exports - by [@userquin](https://github.com/userquin) in vitest-dev/vitest#5847 [<samp>(07876)</samp>](vitest-dev/vitest@07876b7e0)
-   **vite-node**:
    -   Expose all envs from .env file, not just with a prefix `VITE_` - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6017 [<samp>(d87be)</samp>](vitest-dev/vitest@d87bef961)
-   **vitest**:
    -   Expose `provide` to the public API - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5897 [<samp>(66e64)</samp>](vitest-dev/vitest@66e648ff8)
    -   Cache fs code only for forks pool - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#5909 [<samp>(e30d9)</samp>](vitest-dev/vitest@e30d9b4d5)
    -   Allow testing unandled rejection/exception - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6016 [<samp>(c8d56)</samp>](vitest-dev/vitest@c8d56fe5f)
    -   Show all failed tests when rerunning a test - by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6022 [<samp>(91ba6)</samp>](vitest-dev/vitest@91ba6f95e)

##### [View changes on GitHub](vitest-dev/vitest@6b29f3d...v2.0.0)
##### [v4.0.1](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#401)

Wed, 14 Aug 2024 22:37:32 GMT

*Version update only*
##### [v4.0.0](https://github.com/microsoft/rushstack/blob/HEAD/eslint/eslint-config/CHANGELOG.md#400)

Tue, 13 Aug 2024 18:17:05 GMT

##### Breaking changes

-   \[BREAKING CHANGE] Bump "[@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/eslint-plugin)" to "~8.1.0" and "[@typescript-eslint/eslint-parser](https://github.com/typescript-eslint/eslint-parser)" to "~8.1.0". Due to these changes, node@>=17.0.0 and eslint@^8.57.0 are now required due to breaking changes in the newer rules set.
##### [v6.0.0](https://github.com/xojs/eslint-config-xo-typescript/releases/tag/v6.0.0)

##### New rules

-   [`@typescript-eslint/no-wrapper-object-types`](https://typescript-eslint.io/rules/no-wrapper-object-types/)  [`69b266f`](xojs/eslint-config-xo-typescript@69b266f)
-   [`@typescript-eslint/no-unsafe-function-type`](https://typescript-eslint.io/rules/no-unsafe-function-type/)  [`ecc1c11`](xojs/eslint-config-xo-typescript@ecc1c11)

##### Breaking

-   Require Node.js 18.18
-   Require ESLint 9
-   Update to flat config, ESLint 9, and typescript-eslint 8  [`5c79f46`](xojs/eslint-config-xo-typescript@5c79f46)
    -   ESLint 9: https://eslint.org/blog/2024/04/eslint-v9.0.0-released/
    -   typescript-eslint 8: https://typescript-eslint.io/blog/announcing-typescript-eslint-v8
    -   Migrate config: https://eslint.org/docs/latest/use/configure/migration-guide
-   You no longer need to install `eslint-config-xo` separately

##### Improvements

-   Migrate deprecated rules to [`@stylistic`](https://eslint.style)
##### [v5.0.0](https://github.com/xojs/eslint-config-xo-typescript/releases/tag/v5.0.0)

-   Add [`@typescript-eslint/no-unnecessary-parameter-property-assignment`](https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment/) rule  [`7dec07a`](xojs/eslint-config-xo-typescript@7dec07a)
-   Add [`@typescript-eslint/use-unknown-in-catch-callback-variable`](https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable/) rule  [`047d2ba`](xojs/eslint-config-xo-typescript@047d2ba)
-   Remove deprecated `@typescript-eslint/prefer-ts-expect-error` rule  [`3271346`](xojs/eslint-config-xo-typescript@3271346)
##### [v4.0.0](https://github.com/xojs/eslint-config-xo-typescript/releases/tag/v4.0.0)

-   Disable `default-case` rule to avoid conflict with stricter `@typescript-eslint/switch-exhaustiveness-check` rule ([#85](xojs/eslint-config-xo-typescript#85))  [`8cb7722`](xojs/eslint-config-xo-typescript@8cb7722)
##### [v3.0.0](https://github.com/xojs/eslint-config-xo-typescript/releases/tag/v3.0.0)

-   Revert "Revert "Update [@typescript-eslint](https://github.com/typescript-eslint) ([#82](xojs/eslint-config-xo-typescript#82))""  [`0f392ac`](xojs/eslint-config-xo-typescript@0f392ac)
##### [v2.1.1](https://github.com/xojs/eslint-config-xo-typescript/releases/tag/v2.1.1)

-   Revert "Update `@typescript-eslint` ([#82](xojs/eslint-config-xo-typescript#82))"  [`fbafd4d`](xojs/eslint-config-xo-typescript@fbafd4d)
##### [v2.1.0](https://github.com/xojs/eslint-config-xo-typescript/releases/tag/v2.1.0)

-   Update `@typescript-eslint` ([#82](xojs/eslint-config-xo-typescript#82))  [`9b65605`](xojs/eslint-config-xo-typescript@9b65605)
##### [v2.0.0](https://github.com/xojs/eslint-config-xo-typescript/releases/tag/v2.0.0)

##### Breaking

-   Require Node.js 18  [`ae44391`](xojs/eslint-config-xo-typescript@ae44391)
-   Ban `Buffer` type in favor of `Uint8Array`  [`d7fff2e`](xojs/eslint-config-xo-typescript@d7fff2e)
    -   [Learn more](https://sindresorhus.com/blog/goodbye-nodejs-buffer)

##### New rules

-   [`@typescript-eslint/prefer-find`](https://typescript-eslint.io/rules/prefer-find/)  [`0b25758`](xojs/eslint-config-xo-typescript@0b25758)
-   [`@typescript-eslint/no-array-delete`](https://typescript-eslint.io/rules/no-array-delete/)  [`819862d`](xojs/eslint-config-xo-typescript@819862d)
-   [`@typescript-eslint/prefer-promise-reject-errors`](https://eslint.org/docs/latest/rules/prefer-promise-reject-errors)  [`9533972`](xojs/eslint-config-xo-typescript@9533972)

##### Improvements

-   `@typescript-eslint/switch-exhaustiveness-check`: Make it stricter  [`df07e88`](xojs/eslint-config-xo-typescript@df07e88)
##### [v7.0.1](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#701-2024-08-07)

##### Bug Fixes

-   don't throw when typescript can't be resolved ([afb05bd](eslint-functional/eslint-plugin-functional@afb05bd))
##### [v7.0.0](https://github.com/eslint-functional/eslint-plugin-functional/blob/HEAD/CHANGELOG.md#700-2024-08-05)

##### Bug Fixes

-   checking of types from ts's lib are now more strict ([#862](eslint-functional/eslint-plugin-functional#862)) ([39beb25](eslint-functional/eslint-plugin-functional@39beb25))

##### Features

-   eslint 9 migration ([#809](eslint-functional/eslint-plugin-functional#809)) ([de4e3ea](eslint-functional/eslint-plugin-functional@de4e3ea))
-   **functional-parameters:** allow overriding options based on where the function type is declared ([#803](eslint-functional/eslint-plugin-functional#803)) ([21396d5](eslint-functional/eslint-plugin-functional@21396d5)), closes [#575](eslint-functional/eslint-plugin-functional#575)
-   **functional-parameters:** change options in recommended and lite configs ([#811](eslint-functional/eslint-plugin-functional#811)) ([b3cb8d9](eslint-functional/eslint-plugin-functional@b3cb8d9))
-   **immutable-data:** allows for applying overrides to the options based on the root object's type ([#826](eslint-functional/eslint-plugin-functional#826)) ([c04e425](eslint-functional/eslint-plugin-functional@c04e425))
-   **no-classes:** add options ignoreIdentifierPattern and ignoreCodePattern ([#863](eslint-functional/eslint-plugin-functional#863)) ([18aede1](eslint-functional/eslint-plugin-functional@18aede1)), closes [#851](eslint-functional/eslint-plugin-functional#851)
-   **no-throw-statements:** replace option `allowInAsyncFunctions` with `allowToRejectPromises` ([#839](eslint-functional/eslint-plugin-functional#839)) ([c2c589c](eslint-functional/eslint-plugin-functional@c2c589c)), closes [#838](eslint-functional/eslint-plugin-functional#838)
-   **prefer-immutable-types:** allow overriding options based on where the type is declared ([#804](eslint-functional/eslint-plugin-functional#804)) ([86fa76a](eslint-functional/eslint-plugin-functional@86fa76a)), closes [#800](eslint-functional/eslint-plugin-functional#800)
-   **prefer-immutable-types:** change the options in recommeneded and lite configs ([#810](eslint-functional/eslint-plugin-functional#810)) ([defd713](eslint-functional/eslint-plugin-functional@defd713))

##### BREAKING CHANGES

-   The minimum supported Node version is now 18.18.0 ([#809](eslint-functional/eslint-plugin-functional#809))
-   The minimum supported TypeScript version is now 4.7.4 ([#809](eslint-functional/eslint-plugin-functional#809))
-   The minimum supported Eslint version is now 9.0.0 ([#809](eslint-functional/eslint-plugin-functional#809))
-   **no-throw-statements:** replace option `allowInAsyncFunctions` with `allowToRejectPromises` ([#839](eslint-functional/eslint-plugin-functional#839))

#### [6.6.3](eslint-functional/eslint-plugin-functional@v6.6.2...v6.6.3) (2024-07-11)

##### Bug Fixes

-   **immutable-data:** ignoreAccessorPattern can now handle NonNullExpressions and ChainExpressions ([#849](eslint-functional/eslint-plugin-functional#849)) ([f6ff69b](eslint-functional/eslint-plugin-functional@f6ff69b)), closes [#840](eslint-functional/eslint-plugin-functional#840)

#### [6.6.2](eslint-functional/eslint-plugin-functional@v6.6.1...v6.6.2) (2024-07-11)

##### Bug Fixes

-   **no-conditional-statements:** allow continue and break statements with labels to be considered "returning" ([#846](eslint-functional/eslint-plugin-functional#846)) ([969b77b](eslint-functional/eslint-plugin-functional@969b77b))
-   **no-expression-statements:** arrow functions cannot be self returning ([#847](eslint-functional/eslint-plugin-functional#847)) ([7217fa4](eslint-functional/eslint-plugin-functional@7217fa4))
-   **no-promise-reject:** new Promises and throw statements are now also checked ([#848](eslint-functional/eslint-plugin-functional#848)) ([fbe27ad](eslint-functional/eslint-plugin-functional@fbe27ad))

#### [6.6.1](eslint-functional/eslint-plugin-functional@v6.6.0...v6.6.1) (2024-07-06)
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch from 70caef2 to fb2921d Compare September 4, 2024 15:24
##### [v4.2.1](https://github.com/un-ts/eslint-plugin-import-x/blob/HEAD/CHANGELOG.md#421)

##### Patch Changes

-   [#148](un-ts/eslint-plugin-import-x#148) [`d228129`](un-ts/eslint-plugin-import-x@d228129) Thanks [@SukkaW](https://github.com/SukkaW)! - Fix `newline-after-import`'s `considerComments` options when linting `require`, backports import-js/eslint-plugin-import#2952

-   [#147](un-ts/eslint-plugin-import-x#147) [`eca73ed`](un-ts/eslint-plugin-import-x@eca73ed) Thanks [@nchevsky](https://github.com/nchevsky)! - Fix regression in rule `no-unused-modules` which would incorrectly initialize option `src` to `[]` instead of `[process.cwd()]`, breaking file discovery.

-   [#148](un-ts/eslint-plugin-import-x#148) [`d228129`](un-ts/eslint-plugin-import-x@d228129) Thanks [@SukkaW](https://github.com/SukkaW)! - Fix `no-duplicates` for TypeScript, backports import-js/eslint-plugin-import#3033
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch from fb2921d to 364a45e Compare September 4, 2024 23:04
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch 2 times, most recently from b006485 to 4750d68 Compare September 5, 2024 03:32
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch from 4750d68 to 970291b Compare September 6, 2024 15:10
##### [v9.10.0](https://github.com/pnpm/pnpm/releases/tag/v9.10.0)

#### Minor Changes

-   Support for a new CLI flag, `--exclude-peers`, added to the `list` and `why` commands. When `--exclude-peers` is used, peer dependencies are not printed in the results, but dependencies of peer dependencies are still scanned [#8506](pnpm/pnpm#8506).
-   Added a new setting to `package.json` at `pnpm.auditConfig.ignoreGhsas` for ignoring vulnerabilities by their GHSA code [#6838](pnpm/pnpm#6838).

    For instance:

    ```json
    {
      "pnpm": {
        "auditConfig": {
          "ignoreGhsas": [
            "GHSA-42xw-2xvc-qx8m",
            "GHSA-4w2v-q235-vp99",
            "GHSA-cph5-m8f7-6c5x",
            "GHSA-vh95-rmgr-6w4m"
          ]
        }
      }
    }
    ```

#### Patch Changes

-   Throw an exception if pnpm switches to the same version of itself.
-   Reduce memory usage during peer dependencies resolution.

#### Platinum Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://bit.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank"><img src="https://pnpm.io/img/users/bit.svg" width="80"></a>
      </td>
      <td align="center" valign="middle">
        <a href="https://figma.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank"><img src="https://pnpm.io/img/users/figma.svg" width="80"></a>
      </td>
    </tr>
  </tbody>
</table>
#### Gold Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
            <img src="https://pnpm.io/img/users/discord.svg" width="220" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://prisma.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/prisma.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/prisma_light.svg" />
            <img src="https://pnpm.io/img/users/prisma.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://uscreen.de/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/uscreen.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/uscreen_light.svg" />
            <img src="https://pnpm.io/img/users/uscreen.svg" width="180" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://www.jetbrains.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
            <img src="https://pnpm.io/img/users/jetbrains.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" />
            <img src="https://pnpm.io/img/users/nx.svg" width="120" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
            <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" />
          </picture>
        </a>
      </td>
    </tr>
  </tbody>
</table>
#### Our Silver Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://leniolabs.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <img src="https://pnpm.io/img/users/leniolabs.jpg" width="80">
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://vercel.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/vercel.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/vercel_light.svg" />
            <img src="https://pnpm.io/img/users/vercel.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://depot.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/depot.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/depot_light.svg" />
            <img src="https://pnpm.io/img/users/depot.svg" width="200" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://moonrepo.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/moonrepo.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/moonrepo_light.svg" />
            <img src="https://pnpm.io/img/users/moonrepo.svg" width="200" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://devowl.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/devowlio.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/devowlio.svg" />
            <img src="https://pnpm.io/img/users/devowlio.svg" width="200" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://macpaw.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/macpaw.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/macpaw_light.svg" />
            <img src="https://pnpm.io/img/users/macpaw.svg" width="200" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://cerbos.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/cerbos.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/cerbos_light.svg" />
            <img src="https://pnpm.io/img/users/cerbos.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
  </tbody>
</table>
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch from 970291b to 927ec44 Compare September 9, 2024 18:49
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch 2 times, most recently from 756c3b4 to eea27d0 Compare September 10, 2024 00:41
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch from eea27d0 to 731fe3d Compare September 12, 2024 04:36
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch from 731fe3d to 6efab04 Compare September 12, 2024 09:07
##### [v2.1.0](https://github.com/vitest-dev/vitest/releases/tag/v2.1.0)

This release makes another big change to the Browser Mode by introducing [locators API](https://vitest.dev/guide/browser/locators.html):

```ts
test('renders blog posts', async () => {
  const screen = page.render(<Blog />)

  await expect.element(screen.getByRole('heading', { name: 'Blog' })).toBeInTheDocument()

  const [firstPost] = screen.getByRole('listitem').all()

  await firstPost.getByRole('button', { name: 'Delete' }).click()

  expect(screen.getByRole('listitem').all()).toHaveLength(3)
})
```

You can use either [vitest-browser-vue](https://github.com/vitest-dev/vitest-browser-vue), [vitest-browser-svelte ](https://github.com/vitest-dev/vitest-browser-svelte) or [vitest-browser-react](https://github.com/vitest-dev/vitest-browser-react) to render components and make assertions using locators. Locators are also available on the `page` object from `@vitest/browser/context`.

#####    🚀 Features

-   **api**:
    -   Make spec into a class instead of a tuple  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6355 [<samp>(874a1)</samp>](vitest-dev/vitest@874a121e)
-   **browser**:
    -   Move page.config to server.config, add more docs  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6252 [<samp>(af2b8)</samp>](vitest-dev/vitest@af2b813c)
    -   Make iframe scalable, improve documentation  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6257 [<samp>(74ca1)</samp>](vitest-dev/vitest@74ca11a4)
    -   Introduce built-in locators  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6084 [<samp>(3347f)</samp>](vitest-dev/vitest@3347f83e)
    -   Support v8 coverage  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6273 [<samp>(34199)</samp>](vitest-dev/vitest@34199bdf)
    -   Support `userEvent.upload` in playwright provider  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6442 [<samp>(cf148)</samp>](vitest-dev/vitest@cf148645)
    -   Support `--inspect`  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6433 [<samp>(0499a)</samp>](vitest-dev/vitest@0499a315)
    -   Support `--inspect-brk`  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6434 [<samp>(7ab0f)</samp>](vitest-dev/vitest@7ab0f4a8)
-   **cli**:
    -   Extend existing list command to output only a list of file names  -  by [@Ma-hawaj](https://github.com/Ma-hawaj) and [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6392 [<samp>(008f0)</samp>](vitest-dev/vitest@008f00b2)
-   **coverage**:
    -   Add `--exclude-after-remap`  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6309 [<samp>(5932a)</samp>](vitest-dev/vitest@5932a7f9)
-   **mocker**:
    -   Introduce [@vitest/mocker](https://github.com/vitest/mocker) package, allow `{ spy: true }` instead of a factory  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6289 [<samp>(95f02)</samp>](vitest-dev/vitest@95f0203f)
-   **vitest**:
    -   Add "provide" option  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6253 [<samp>(4409d)</samp>](vitest-dev/vitest@4409d779)
    -   Add return type and promisable mockFactory  -  by [@syi0808](https://github.com/syi0808) and [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6139 [<samp>(f5e0b)</samp>](vitest-dev/vitest@f5e0b987)
    -   Add `vi.advanceTimersToNextFrame`  -  by [@bnjm](https://github.com/bnjm) and [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6347 [<samp>(8ff63)</samp>](vitest-dev/vitest@8ff63560)
    -   Allow env to be stubbed to undefined  -  by [@JSanchezIO](https://github.com/JSanchezIO) and [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6359 [<samp>(c3b27)</samp>](vitest-dev/vitest@c3b2757c)

#####    🐞 Bug Fixes

-   Correctly resolve nested mocks with `index` file  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6266 [<samp>(081cf)</samp>](vitest-dev/vitest@081cfe03)
-   Don't panic when coverage.reporter is a string  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6267 [<samp>(7b37d)</samp>](vitest-dev/vitest@7b37d27b)
-   Align RawMatcherFn type definition with Jest  -  by [@wheresrhys](https://github.com/wheresrhys) in vitest-dev/vitest#6351 [<samp>(d09f0)</samp>](vitest-dev/vitest@d09f00c7)
-   Cjs build of vite node server  -  by [@AkaraChen](https://github.com/AkaraChen) in vitest-dev/vitest#6389 [<samp>(12e70)</samp>](vitest-dev/vitest@12e702bd)
-   Allow inlining vite's cached dependencies  -  by [@chriswheeldon-peakon](https://github.com/chriswheeldon-peakon) in vitest-dev/vitest#6284 [<samp>(03208)</samp>](vitest-dev/vitest@03208017)
-   Print unexpected error message if peer dependencies have a different version  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6446 [<samp>(b992b)</samp>](vitest-dev/vitest@b992b346)
-   Ignore importer when resolving Vitest  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6469 [<samp>(0b447)</samp>](vitest-dev/vitest@0b447226)
-   `expect.getState().testPath` always returns correct path  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6472 [<samp>(ac698)</samp>](vitest-dev/vitest@ac698b1c)
-   UserEvent works consistently between providers  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6480 [<samp>(0b4da)</samp>](vitest-dev/vitest@0b4da69e)
-   **browser**:
    -   Print correct stack trace for unhandled errors  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6134 [<samp>(1da6c)</samp>](vitest-dev/vitest@1da6cebe)
    -   Use documentElement as the root for selector  -  by [@sheremet-va](https://github.com/sheremet-va) [<samp>(d8077)</samp>](vitest-dev/vitest@d807767f)
    -   Keep querying elements even if locator is created with elementLocator, add pubic @vitest/browser/utils  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6296 [<samp>(30dc5)</samp>](vitest-dev/vitest@30dc5793)
    -   Produce valid config file if preview provider is used  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6305 [<samp>(7f0ae)</samp>](vitest-dev/vitest@7f0ae292)
    -   Correctly run in-source tests in the browser  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6440 [<samp>(c8531)</samp>](vitest-dev/vitest@c853126e)
    -   Exclude missed packages from optimization, print help message  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6445 [<samp>(8d883)</samp>](vitest-dev/vitest@8d883cf0)
    -   Define mocker as a dependency  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6476 [<samp>(9560a)</samp>](vitest-dev/vitest@9560ab7f)
-   **coverage**:
    -   Warn if `vitest` and `@vitest/*` versions don't match  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6317 [<samp>(e662c)</samp>](vitest-dev/vitest@e662c7b2)
    -   V8 to support source maps with multiple sources  -  by [@AriPerkkio](https://github.com/AriPerkkio) and [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6120 [<samp>(1f6cb)</samp>](vitest-dev/vitest@1f6cb59f)
    -   V8 to warn instead of crash when conversion fails  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6318 [<samp>(91dea)</samp>](vitest-dev/vitest@91dea8c1)
    -   Use project specific `vitenode` for uncovered files  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#6044 [<samp>(da52d)</samp>](vitest-dev/vitest@da52d23f)
-   **runner**:
    -   Use `performance.now` instead of `Date.now` for duration  -  by [@LuciNyan](https://github.com/LuciNyan) in vitest-dev/vitest#6382 [<samp>(fe489)</samp>](vitest-dev/vitest@fe489432)
    -   Async assertion auto await should timeout  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#6391 [<samp>(ad6e7)</samp>](vitest-dev/vitest@ad6e72fc)
-   **snapshot**:
    -   Reject multiple `toMatchInlineSnapshot` updates at the same location  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#6332 [<samp>(1606f)</samp>](vitest-dev/vitest@1606f34f)
    -   Improve inline snapshot inside loop rejection  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#6339 [<samp>(e0368)</samp>](vitest-dev/vitest@e03683c5)
-   **typecheck**:
    -   Run both runtime and typecheck tests if `typecheck.include` overlaps with `include`  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6256 [<samp>(153ff)</samp>](vitest-dev/vitest@153ff01b)
-   **types**:
    -   Allow Callbacks Passed to before\*/after\* to Return Anything  -  by [@LuciNyan](https://github.com/LuciNyan) in vitest-dev/vitest#6393 [<samp>(f6217)</samp>](vitest-dev/vitest@f6217a22)
-   **ui**:
    -   Remove "filters" flickering  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6463 [<samp>(0223b)</samp>](vitest-dev/vitest@0223bb79)
    -   Render project name consistently  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6329 [<samp>(94a18)</samp>](vitest-dev/vitest@94a186ec)
-   **vite-node**:
    -   Disable watcher if hmr is disabled  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6251 [<samp>(c51c6)</samp>](vitest-dev/vitest@c51c67aa)
    -   Fix watch on vite 6  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#6422 [<samp>(c3ac4)</samp>](vitest-dev/vitest@c3ac43c1)
-   **vitest**:
    -   Update json reporter output  -  by [@Emiyaaaaa](https://github.com/Emiyaaaaa) in vitest-dev/vitest#6064 [<samp>(c9979)</samp>](vitest-dev/vitest@c997937b)
    -   Add more type guards for --merge-reports  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6307 [<samp>(0a5d8)</samp>](vitest-dev/vitest@0a5d8169)
    -   Always resolve vitest to the root version  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6369 [<samp>(163d7)</samp>](vitest-dev/vitest@163d7624)
    -   Dispose vmForks listeners to avoid memory leak  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6448 [<samp>(2673c)</samp>](vitest-dev/vitest@2673c3bb)
-   **workspace**:
    -   Correctly resolve workspace globs and file paths  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6316 [<samp>(afdcb)</samp>](vitest-dev/vitest@afdcb8f2)

#####     [View changes on GitHub](vitest-dev/vitest@v2.0.5...v2.1.0)
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch from 6efab04 to b4a1f3b Compare September 12, 2024 16:21
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch from b4a1f3b to e20c851 Compare September 13, 2024 01:35
##### [v2.1.1](https://github.com/vitest-dev/vitest/releases/tag/v2.1.1)

#####    🐞 Bug Fixes

-   **browser**:
    -   Make example test callbacks async  -  by [@aqandrew](https://github.com/aqandrew) in vitest-dev/vitest#6484 [<samp>(16aa7)</samp>](vitest-dev/vitest@16aa76c2)
    -   Optimize vitest-browser-vue correctly  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6490 [<samp>(5cbb0)</samp>](vitest-dev/vitest@5cbb0bba)
-   **workspace**:
    -   Resolve glob pattern once to avoid name collision  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#6489 [<samp>(36b5a)</samp>](vitest-dev/vitest@36b5aceb)

#####     [View changes on GitHub](vitest-dev/vitest@v2.1.0...v2.1.1)
##### [v8.5.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#850-2024-09-09)

##### 🚀 Features

-   **eslint-plugin:** \[no-duplicate-type-constituents] prevent unnecessary \`

-   **eslint-plugin:** \[no-unsafe-argument] differentiate error types

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unnecessary-type-assertion] fix TSNonNullExpression fixer

-   **eslint-plugin:** \[no-misused-promises] handle static method

-   **eslint-plugin:** \[no-unnecessary-type-parameters] fix AST quick path scope analysis

-   **eslint-plugin:** \[consistent-type-assertions] access parser services lazily

##### ❤️  Thank You

-   [`f44da95`](typescript-eslint/typescript-eslint@f44da958e)
-   Josh Goldberg ✨
-   Kirk Waiblinger
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v8.4.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#840-2024-09-02)

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

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v8.3.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#830-2024-08-26)

##### 🚀 Features

-   **eslint-plugin:** \[no-deprecation] add rule

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unnecessary-template-expression] add missing parentheses in autofix

-   **eslint-plugin:** \[no-unnecessary-type-parameters] check mapped alias type arguments

-   **utils:** add `TSDeclareFunction` to `functionTypeTypes`

-   **ast-spec:** use `Expression` in argument of `ThrowStatement`

##### ❤️  Thank You

-   Abraham Guo
-   Daichi Kamiyama
-   Josh Goldberg ✨
-   Kim Sang Du
-   Sukka
-   Vida Xie

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v8.2.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#820-2024-08-19)

##### 🚀 Features

-   **eslint-plugin:** add suggestion to `require-await` to remove `async` keyword

##### 🩹 Fixes

-   **eslint-plugin:** \[use-unknown-in-catch-callback-variable] flag second argument of `.then`

-   **eslint-plugin:** \[no-unnecessary-type-assertion] conflict with TS for variables used before assignment

-   **eslint-plugin:** delete \[] in message if ReadOnly\<string\[]> is detected

-   **eslint-plugin:** \[no-redundant-type-constituents] differentiate a types-error any from a true any

-   **eslint-plugin:** \[no-unnecessary-type-parameters] check mapped constraint types if necessary

-   **eslint-plugin:** \[no-unsafe-enum-comparison] add logic to see through intersections

##### ❤️  Thank You

-   Abraham Guo
-   Dave
-   Jake Bailey
-   James
-   Josh Goldberg ✨
-   liuxingbaoyu
-   Yukihiro Hasegawa
-   Yutong Zhu

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v8.1.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#810-2024-08-12)

##### 🚀 Features

-   **eslint-plugin:** \[no-floating-promises] enable "add await" suggestion if ignoreVoid is true

-   **typescript-estree:** restrict variable declarator definite/init combinations

-   **eslint-plugin:** \[no-unsafe-return] check promise any

-   **eslint-plugin:** \[no-misused-promises] check subtype methods against heritage type methods

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unsafe-enum-comparison] typo in test

-   **eslint-plugin:** \[no-unnecessary-type-parameters] skip checking function bodies for AST references

-   **eslint-plugin:** \[member-ordering] get accessor member name & take into account `abstract` and decorator

-   **eslint-plugin:** \[prefer-optional-chain] wrong parenthesis fix output

-   **eslint-plugin:** \[no-unnecessary-type-parameters] clarify message

##### ❤️  Thank You

-   Aly Thobani
-   Brad Zacher
-   James
-   Josh Goldberg ✨
-   Joshua Chen
-   Olivier Zalmanski
-   YeonJuan
-   Yukihiro Hasegawa

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v8.0.1](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#801-2024-08-05)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unused-vars] ignore imports used only as types

##### ❤️  Thank You

-   Jake Bailey

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
##### [v8.0.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#800-2024-07-31)

##### 🚀 Features

-   stricter parent types for the AST

-   **typescript-estree:** split TSMappedType typeParameter into constraint and key

-   **eslint-plugin:** remove formatting/layout rules

-   **eslint-plugin:** \[prefer-nullish-coalescing] change ignoreConditionalTests default to true

-   **eslint-plugin:** deprecate no-loss-of-precision extension rule

-   **eslint-plugin:** \[no-unused-vars] align catch behavior to ESLint 9

-   **typescript-estree:** rename automaticSingleRunInference to disallowAutomaticSingleRunInference

-   **utils:** allow specifying additional rule meta.docs in RuleCreator

-   **eslint-plugin:** split no-empty-object-type out from ban-types and no-empty-interfaces

-   **rule-tester:** support multipass fixes

-   **typescript-estree:** stabilize EXPERIMENTAL_useProjectService as projectService

-   **eslint-plugin:** remove deprecated no-throw-literal rule

-   **eslint-plugin:** apply initial config changes for v8

-   **eslint-plugin:** remove no-useless-template-literals

-   **eslint-plugin:** \[no-floating-promises] add 'allowForKnownSafeCalls' option

-   **eslint-plugin:** replace ban-types with no-restricted-types, no-unsafe-function-type, no-wrapper-object-types

-   **eslint-plugin:** \[no-unused-vars] add `reportUnusedIgnorePattern` option

-   **eslint-plugin:** \[no-unused-vars] support `ignoreClassWithStaticInitBlock`

-   **eslint-plugin:** \[no-unused-vars] handle comma operator for assignments, treat for-of the same as for-in

-   **eslint-plugin:** \[no-unused-vars] report if var used only in typeof

-   **eslint-plugin:** \[no-floating-promises] disable checkThenables by default for v8

-   **rule-tester:** switched to flat config

-   **eslint-plugin:** \[no-unnecessary-type-parameters] promote to strict

##### 🩹 Fixes

-   correct eslint-plugin's peerDependency on parser@8

-   disable `projectService` in `disabled-type-checked` shared config

-   **typescript-estree:** add TSEnumBody node for TSEnumDeclaration body

-   **eslint-plugin:** include alpha pre-releases in parser peer dependency

-   **eslint-plugin:** correct rules.d.ts types to not rely on non-existent imports

-   **eslint-plugin:** remove duplicate import `RuleModuleWithMetaDocs`

-   **type-utils:** also check declared modules for package names in TypeOrValueSpecifier

-   **eslint-plugin:** \[no-unnecessary-template-expression] do not render escaped strings in autofixes

-   **eslint-plugin:** \[no-unused-vars] incorporate upstream changes around caught errors report messages

-   **eslint-plugin:** \[no-misused-promises] perf: avoid getting types of variables/functions if the annotated type is obviously not a function

-   **rule-tester:** provide Linter a cwd in its constructor

##### ❤️  Thank You

-   Abraham Guo
-   Alfred Ringstad
-   auvred
-   Brad Zacher
-   Christopher Aubut
-   Collin Bachman
-   James Henry
-   Josh Goldberg
-   Josh Goldberg ✨
-   Kirk Waiblinger
-   StyleShit
-   Victor Lin
-   Yukihiro Hasegawa

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

#### 7.18.0 (2024-07-29)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unnecessary-type-assertion] prevent runtime error when asserting a variable declared in default TS lib

-   **eslint-plugin:** \[unbound-method] report on destructuring in function parameters

-   **eslint-plugin:** \[no-duplicate-type-constituents] shouldn't report on error types

-   **eslint-plugin:** \[strict-boolean-expressions] support branded booleans

##### ❤️  Thank You

-   auvred
-   Oliver Salzburg
-   Vinccool96
-   Yukihiro Hasegawa

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

#### 7.17.0 (2024-07-22)

##### 🚀 Features

-   **eslint-plugin:** backport no-unsafe-function type, no-wrapper-object-types from v8 to v7

-   **eslint-plugin:** \[return-await] add option to report in error-handling scenarios only, and deprecate "never"

##### 🩹 Fixes

-   **eslint-plugin:** \[no-floating-promises] check top-level type assertions (and more)

-   **eslint-plugin:** \[strict-boolean-expressions] consider assertion function argument a boolean context

-   **eslint-plugin:** \[no-unnecessary-condition] false positive on optional private field

##### ❤️  Thank You

-   Armano
-   Josh Goldberg ✨
-   Kirk Waiblinger
-   StyleShit

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

#### 7.16.1 (2024-07-15)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unnecessary-type-parameters] descend into all parts of mapped types in no-unnecessary-type-parameters

##### ❤️  Thank You

-   Dan Vanderkam

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

#### 7.16.0 (2024-07-08)

##### 🚀 Features

-   **rule-tester:** stricter rule test validations

-   **eslint-plugin:** \[no-unnecessary-parameter-property-assignment] add new rule

-   **eslint-plugin:** add support for nested namespaces to unsafe-member-access

-   **eslint-plugin:** \[no-floating-promises] add checkThenables option

##### 🩹 Fixes

-   **deps:** update dependency [@eslint-community/regexpp](https://github.com/eslint-community/regexpp) to v4.11.0

-   **eslint-plugin:** \[no-floating-promises] add `suggestions` to tests from [#9263](typescript-eslint/typescript-eslint#9263) `checkThenables`

-   **website:** react key error on internal pages of website

-   **eslint-plugin:** \[restrict-template-expressions] don't report tuples if `allowArray` option is enabled

##### ❤️  Thank You

-   Abraham Guo
-   auvred
-   Josh Goldberg ✨
-   Juan Sanchez
-   Vinccool96
-   YeonJuan
-   Yukihiro Hasegawa

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

#### 7.15.0 (2024-07-01)

##### 🚀 Features

-   **eslint-plugin:** \[array-type] detect `Readonly<string[]>` case

-   **eslint-plugin:** back-port new rules around empty object types from v8

##### 🩹 Fixes

-   disable `EXPERIMENTAL_useProjectService` in `disabled-type-checked` shared config

-   **eslint-plugin:** \[no-unsafe-return] differentiate a types-error any from a true any

-   **eslint-plugin:** \[no-unsafe-call] differentiate a types-error any from a true any

##### ❤️  Thank You

-   auvred
-   Kim Sang Du
-   rgehbt
-   Vinccool96

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

#### 7.14.1 (2024-06-24)

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-nullish-coalescing] treat enums and literals as their underlying primitive types

-   **eslint-plugin:** \[prefer-nullish-coalescing] ensure ternary fix does not remove parens

##### ❤️  Thank You

-   Jake Bailey

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

#### 7.14.0 (2024-06-24)

##### 🚀 Features

-   support TypeScript 5.5

##### 🩹 Fixes

-   **eslint-plugin:** \[no-extraneous-class] handle abstract members

-   **eslint-plugin:** \[prefer-nullish-coalescing] handle intersected primitive types

-   **eslint-plugin:** \[no-invalid-this] support AccessorProperty

##### ❤️  Thank You

-   Brad Zacher
-   cm-ayf
-   Jake Bailey
-   James Zhan
-   Joshua Chen
-   yoshi2no

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

#### 7.13.1 (2024-06-17)

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-readonly] refine report locations

-   **eslint-plugin:** \[return-await] support explicit resource management

-   **eslint-plugin:** \[no-unsafe-member-access] differentiate a types-error any from a true any

##### ❤️  Thank You

-   Kirk Waiblinger
-   Yukihiro Hasegawa

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

#### 7.13.0 (2024-06-10)

##### 🚀 Features

-   **typescript-estree:** require `import = require()` argument to be a string literal

-   **typescript-estree:** forbid `.body`, `.async`, `.generator` on `declare function`

-   **eslint-plugin:** \[no-dynamic-delete] allow all string literals as index

##### 🩹 Fixes

-   **ast-spec:** function-call-like callee should be Expression not LeftHandSideExpression

-   **scope-manager:** handle index signature in class

-   **eslint-plugin:** \[init-declarations] refine report locations

-   **eslint-plugin:** \[no-base-to-string] make error message more nuanced

-   **eslint-plugin:** \[no-unsafe-assignment] be more specific about error types

-   **eslint-plugin:** \[no-magic-numbers] fix implementation of the `ignore` option

##### ❤️  Thank You

-   Fotis Papadogeorgopoulos
-   Joshua Chen
-   Kirk Waiblinger
-   Tobiloba Adedeji
-   Vinccool96
-   YeonJuan

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

#### 7.12.0 (2024-06-03)

##### 🚀 Features

-   **eslint-plugin:** \[no-useless-template-literals] rename to `no-useless-template-expression` (deprecate `no-useless-template-literals`)

-   **rule-tester:** check for parsing errors in suggestion fixes

-   **rule-tester:** port `checkDuplicateTestCases` from ESLint

-   **eslint-plugin:** \[no-floating-promises] add option 'allowForKnownSafePromises'

##### 🩹 Fixes

-   no-useless-template-expression -> no-unnecessary-template-expression

-   **eslint-plugin:** \[no-unnecessary-type-assertion] combine template literal check with `const` variable check

-   **eslint-plugin:** \[dot-notation] fix false positive when accessing private/protected property with optional chaining

-   **eslint-plugin:** \[explicit-member-accessibility] refine report locations

-   **eslint-plugin:** \[no-unnecessary-type-assertion] declares are always defined, so always check `declare`s

-   **eslint-plugin:** \[prefer-literal-enum-member] allow using member it self on allowBitwiseExpressions

-   **eslint-plugin:** \[return-await] clean up in-try-catch detection and make autofixes safe

-   **eslint-plugin:** \[member-ordering] also TSMethodSignature can be get/set

##### ❤️  Thank You

-   Abraham Guo
-   Han Yeong-woo
-   Joshua Chen
-   Kim Sang Du
-   Kirk Waiblinger
-   YeonJuan

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

#### 7.11.0 (2024-05-27)

##### 🚀 Features

-   **eslint-plugin:** deprecate prefer-ts-expect-error in favor of ban-ts-comment

##### 🩹 Fixes

-   **eslint-plugin:** \[consistent-type-assertions] prevent syntax errors on arrow functions

##### ❤️  Thank You

-   Abraham Guo
-   auvred
-   Dom Armstrong
-   Kirk Waiblinger

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

#### 7.10.0 (2024-05-20)

##### 🚀 Features

-   **eslint-plugin:** \[sort-type-constituents] support case sensitive sorting

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-regexp-exec] fix heuristic to check whether regex may contain global flag

##### ❤️  Thank You

-   auvred
-   Emanuel Hoogeveen
-   jsfm01
-   Kirk Waiblinger

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

#### 7.9.0 (2024-05-13)

##### 🩹 Fixes

-   **eslint-plugin:** \[explicit-function-return-types] fix false positive on default parameters

##### ❤️  Thank You

-   Kirk Waiblinger
-   Sheetal Nandi
-   Vinccool96

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

#### 7.8.0 (2024-04-29)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unsafe-argument] handle  tagged templates

-   **eslint-plugin:** \[prefer-optional-chain] suggests optional chaining during strict null equality check

-   **eslint-plugin:** \[consistent-type-assertions] handle tagged templates

-   **eslint-plugin:** \[no-unsafe-return] handle union types

-   **eslint-plugin:** \[no-unused-vars] clear error report range

##### ❤️  Thank You

-   auvred
-   Josh Goldberg ✨
-   jsfm01
-   Kim Sang Du
-   YeonJuan

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

#### 7.7.1 (2024-04-22)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unsafe-assignment] handle shorthand property assignment

-   **eslint-plugin:** \[explicit-function-return-type] fix checking wrong ancestor's return type

-   **eslint-plugin:** \[prefer-optional-chain] only look at left operand for `requireNullish`

-   **eslint-plugin:** \[no-for-in-array] refine report location

-   **eslint-plugin:** \[no-unnecessary-type-assertion] allow non-null assertion for void type

##### ❤️  Thank You

-   Abraham Guo
-   Kirk Waiblinger
-   YeonJuan

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

#### 7.7.0 (2024-04-15)

##### 🚀 Features

-   **eslint-plugin:** replace `no-new-symbol` with `no-new-native-nonconstructor`

##### ❤️  Thank You

-   Dave
-   Josh Goldberg ✨

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

#### 7.6.0 (2024-04-08)

##### 🚀 Features

-   bump npm dependency ranges

##### ❤️  Thank You

-   Abraham Guo
-   auvred
-   Brad Zacher

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

#### 7.5.0 (2024-04-01)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-floating-promises] handle TaggedTemplateExpression

-   **eslint-plugin:** \[no-unnecessary-type-assertion] handle exactOptionalPropertyTypes compiler option

##### ❤️  Thank You

-   Brad Zacher
-   Kim Sang Du
-   Mark de Dios
-   Naru
-   YeonJuan

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

#### 7.4.0 (2024-03-25)

##### 🚀 Features

-   **eslint-plugin:** \[consistent-type-imports] ignore files with decorators, experimentalDecorators, and emitDecoratorMetadata

-   **eslint-plugin:** \[no-unnecessary-type-arguments] handle tagged templates

-   **eslint-plugin:** deprecate no-throw-literal and add a renamed only-throw-error

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-optional-chain] address multipart nullish checks false positive

-   **eslint-plugin:** \[prefer-optional-chain] properly disambiguate between `boolean` and `false`

-   **eslint-plugin:** \[no-unnecessary-type-assertion] avoid remove const casting on template literals with expressions inside

##### ❤️  Thank You

-   Abraham Guo
-   Brad Zacher
-   Josh Goldberg ✨
-   Kim Sang Du
-   Kirk Waiblinger
-   Marco Pasqualetti
-   YeonJuan

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

#### 7.3.1 (2024-03-18)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-floating-promises] revert disable of ignoreVoid in strict config

##### ❤️  Thank You

-   Josh Goldberg ✨

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

#### 7.3.0 (2024-03-18)

##### 🚀 Features

-   **eslint-plugin:** \[restrict-template-expressions] add `allowArray` option

-   **eslint-plugin:** add meta.docs.recommended setting for strict config options

-   **eslint-plugin:** add rule `use-unknown-in-catch-callback-variables`

-   **eslint-plugin:** \[prefer-reduce-type-parameter] supports tuple, union, intersection

##### 🩹 Fixes

-   correct `engines.node` constraints in `package.json`

-   **eslint-plugin:** \[unbound-method] check method definition in object literal using longhand form

-   **eslint-plugin:** \[consistent-type-imports] handle imports without specifiers

-   **eslint-plugin:** \[no-redundant-type-constituents] incorrectly marks & string as redundant

-   **eslint-plugin:** \[no-unnecessary-qualifier] handle merge namespace with enum

-   **eslint-plugin:** \[no-unused-expressions] false negatives when using assertions

-   **eslint-plugin:** \[ban-ts-comment] more accurate handling of multiline comments

-   **eslint-plugin:** \[explicit-function-return-type, explicit-module-boundary-types] improved checking for allowHigherOrderFunctions option

-   **eslint-plugin:** \[class-literal-property-style] ignore property assigned in constructor

-   **eslint-plugin:** \[no-unnecessary-type-assertion] fix false negative for const variable declarations

##### ❤️  Thank You

-   Abraham Guo
-   Alexu
-   Arka Pratim Chaudhuri
-   auvred
-   Derrick Isaacson
-   fnx
-   Josh Goldberg ✨
-   Kirk Waiblinger
-   Marta Cardoso
-   Michaël De Boey
-   Tristan Rasmussen
-   YeonJuan

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

#### 7.2.0 (2024-03-11)

##### 🚀 Features

-   support TS 5.4

-   **eslint-plugin:** \[prefer-string-starts-ends-with] add allowSingleElementEquality option

##### 🩹 Fixes

-   **eslint-plugin:** expose \*-type-checked-only configs for extension

-   **eslint-plugin:** \[member-ordering] report alphabetical sorting for all groups instead of just the first failing group

-   **eslint-plugin:** \[no-var-requires, no-require-imports] support template literal

-   **eslint-plugin:** \[no-useless-template-literals] detect TemplateLiteral

-   **eslint-plugin:** \[no-unnecessary-condition] handle union array and tuple type

-   **eslint-plugin:** \[prefer-find] support ternary branches in prefer-find

##### ❤️  Thank You

-   Arka Pratim Chaudhuri
-   auvred
-   Chris Plummer
-   Fotis Papadogeorgopoulos
-   Josh Goldberg ✨
-   Kirk Waiblinger
-   Wayne Zhang
-   YeonJuan

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

#### 7.1.1 (2024-03-04)

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

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

#### 7.1.0 (2024-02-26)

##### 🚀 Features

-   **eslint-plugin:** add \*-type-checked-only configs

-   **eslint-plugin:** \[naming-convention] support the auto-accessor syntax

-   **eslint-plugin:** \[consistent-return] add new rule

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-optional-chan] allow typeof for avoiding reference error

-   **eslint-plugin:** \[no-misused-promises] improve check union types

-   **eslint-plugin:** \[no-use-before-define] fix false positive type reference in as, satisfies

##### ❤️  Thank You

-   Arka Pratim Chaudhuri
-   Josh Goldberg ✨
-   YeonJuan

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

#### 7.0.2 (2024-02-19)

##### 🩹 Fixes

-   fix tsconfig-less check errors, fix `@types/eslint` incompatibilities, add tests

##### ❤️  Thank You

-   Brad Zacher
-   Gareth Jones

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

#### 7.0.1 (2024-02-12)

##### 🩹 Fixes

-   **eslint-plugin:** update peer dep for parser

##### ❤️  Thank You

-   Tim Dorr

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
@renovate renovate bot force-pushed the renovate/major-typescript-eslint-monorepo branch from e20c851 to 08514ea Compare September 13, 2024 19:15
@renovate renovate bot changed the title fix(deps): update typescript-eslint monorepo to v8 (major) fix(deps): update typescript-eslint monorepo to v8 (major) - abandoned Sep 16, 2024
Copy link
Contributor Author

renovate bot commented Sep 16, 2024

Autoclosing Skipped

This PR has been flagged for autoclosing. However, it is being skipped due to the branch being already modified. Please close/delete it manually or report a bug if you think this is in error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant