-
-
Notifications
You must be signed in to change notification settings - Fork 368
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
Add no-single-promise-in-promise-methods
rule
#2258
Add no-single-promise-in-promise-methods
rule
#2258
Conversation
Same feedback as in #2259 |
Should we add an option to skip const [{reason: error, value}] = await Promise.allSettled([promise]); can be useful to avoid |
a8ed4c3
to
f530229
Compare
It's corrected. |
I hadn't thought of this scenario, in which case shouldn't we simply not apply this rule to the Promise.allSettled() method? |
const getMethodName = node => node.callee.property.name; | ||
|
||
const getFixer = ({sourceCode}, node) => fixer => | ||
fixer.replaceText(node, sourceCode.getText(node.arguments[0].elements[0])); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will break
await Promise.all([(a, b)])
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's corrected.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know how you fix it, but it's incorrect. Please try not to force push, I can't see changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I removed the fix when I limited the types by excluding SequenceExpression but I put it back.
Sorry about the push force.
f530229
to
f312b71
Compare
I've excluded the allSettled method from this rule in order to take this usage into account. |
d93070d
to
a8c6d19
Compare
Another edge case
|
I don't think we can auto fix cases when it's not awaited. const promise = Promise.all([somethingMaybeNotPromise])
await promise.catch(...) call |
This comment was marked as outdated.
This comment was marked as outdated.
2b848ae
to
80e3343
Compare
This comment was marked as outdated.
This comment was marked as outdated.
Thank you @fisker for all these improvements. |
5d45c19
to
c97843e
Compare
##### [v55.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v55.0.0) ##### New rules - [`no-length-as-slice-end`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-length-as-slice-end.md) ([#2400](sindresorhus/eslint-plugin-unicorn#2400)) [`3c33820`](sindresorhus/eslint-plugin-unicorn@3c33820) ##### Improvements - Add TypeScript types ([#2382](sindresorhus/eslint-plugin-unicorn#2382)) [`68e0f13`](sindresorhus/eslint-plugin-unicorn@68e0f13) ##### Fixes - `no-single-promise-in-promise-methods`: Remove broken autofix for `Promise.all()` ([#2386](sindresorhus/eslint-plugin-unicorn#2386)) [`8d28b6e`](sindresorhus/eslint-plugin-unicorn@8d28b6e) - `prefer-node-protocol`: Ignore Bun modules ([#2384](sindresorhus/eslint-plugin-unicorn#2384)) [`a45b24a`](sindresorhus/eslint-plugin-unicorn@a45b24a) - `no-negation-in-equality-check`: Ignore boolean type casting ([#2379](sindresorhus/eslint-plugin-unicorn#2379)) [`37e00dd`](sindresorhus/eslint-plugin-unicorn@37e00dd) ##### [v54.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v54.0.0) ##### New rules - [`no-negation-in-equality-check`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negation-in-equality-check.md) ([#2353](sindresorhus/eslint-plugin-unicorn#2353)) [`8957a03`](sindresorhus/eslint-plugin-unicorn@8957a03) ##### Breaking - `prefer-array-find`: Change [`checkFromLast`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-find.md#checkfromlast) default value to `true` ([#2367](sindresorhus/eslint-plugin-unicorn#2367)) [`a449af9`](sindresorhus/eslint-plugin-unicorn@a449af9) ##### Improvements - Add name to flat configs ([#2377](sindresorhus/eslint-plugin-unicorn#2377)) [`ac8536e`](sindresorhus/eslint-plugin-unicorn@ac8536e) - `prefer-array-some`: Check `Array#{findIndex,findLastIndex}()` ([#2370](sindresorhus/eslint-plugin-unicorn#2370)) [`10568ab`](sindresorhus/eslint-plugin-unicorn@10568ab) - `prefer-includes`: Check `.lastIndexOf()` ([#2368](sindresorhus/eslint-plugin-unicorn#2368)) [`d812ad1`](sindresorhus/eslint-plugin-unicorn@d812ad1) - `prefer-string-raw`: Ignore strings in Enums ([#2354](sindresorhus/eslint-plugin-unicorn#2354)) [`175ea04`](sindresorhus/eslint-plugin-unicorn@175ea04) ##### Fixes - Fix edge cases when add `new` to calls ([#2352](sindresorhus/eslint-plugin-unicorn#2352)) [`d8f8161`](sindresorhus/eslint-plugin-unicorn@d8f8161) ##### [v53.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v53.0.0) ##### New rules - [`consistent-empty-array-spread`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-empty-array-spread.md) ([#2349](sindresorhus/eslint-plugin-unicorn#2349)) [`8d7954c`](sindresorhus/eslint-plugin-unicorn@8d7954c) - [`prefer-string-raw`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-raw.md) ([#2339](sindresorhus/eslint-plugin-unicorn#2339)) [`4f1400a`](sindresorhus/eslint-plugin-unicorn@4f1400a) - [`no-invalid-fetch-options`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-fetch-options.md) ([#2338](sindresorhus/eslint-plugin-unicorn#2338)) [`342aafb`](sindresorhus/eslint-plugin-unicorn@342aafb) - [`no-magic-array-flat-depth`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-magic-array-flat-depth.md) ([#2335](sindresorhus/eslint-plugin-unicorn#2335)) [`bc17428`](sindresorhus/eslint-plugin-unicorn@bc17428) - [`prefer-structured-clone`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-structured-clone.md) ([#2329](sindresorhus/eslint-plugin-unicorn#2329)) [`497519e`](sindresorhus/eslint-plugin-unicorn@497519e) ##### Breaking - Require Node.js 18.18 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) ##### Meta - You can now [sponsor @fisker](https://github.com/sponsors/fisker) for his work on this project ([#2348](sindresorhus/eslint-plugin-unicorn#2348)) [`b82542d`](sindresorhus/eslint-plugin-unicorn@b82542d) ##### Improvements - Support ESLint 9 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) - `no-array-method-this-argument`: Check `Array.fromAsync()` ([#2330](sindresorhus/eslint-plugin-unicorn#2330)) [`99489b9`](sindresorhus/eslint-plugin-unicorn@99489b9) - `prefer-number-properties`: Add `checkNaN` option ([#2315](sindresorhus/eslint-plugin-unicorn#2315)) [`d30de50`](sindresorhus/eslint-plugin-unicorn@d30de50) - `template-indent`: Support member expression paths in `tags` and `functions` ([#2346](sindresorhus/eslint-plugin-unicorn#2346)) [`aabcf1d`](sindresorhus/eslint-plugin-unicorn@aabcf1d) - `prefer-number-properties`: Don't require by default for `Infinity`/`-Infinity` to be written as `Number.POSITIVE_INFINITY`/`Number.NEGATIVE_INFINITY` ([#2312](sindresorhus/eslint-plugin-unicorn#2312)) [`e0dfed2`](sindresorhus/eslint-plugin-unicorn@e0dfed2) - `escape-case`: Ignore `String.raw` ([#2342](sindresorhus/eslint-plugin-unicorn#2342)) [`45bd444`](sindresorhus/eslint-plugin-unicorn@45bd444) - `no-hex-escape`: Ignore `String.raw` ([#2343](sindresorhus/eslint-plugin-unicorn#2343)) [`cc02a7f`](sindresorhus/eslint-plugin-unicorn@cc02a7f) - `prefer-dom-node-dataset`: Ignore `await`ed `getAttribute` call ([#2334](sindresorhus/eslint-plugin-unicorn#2334)) [`45f23d5`](sindresorhus/eslint-plugin-unicorn@45f23d5) - `prevent-abbreviations`: Support non-ASCII filenames ([#2308](sindresorhus/eslint-plugin-unicorn#2308)) [`28762c8`](sindresorhus/eslint-plugin-unicorn@28762c8) - `throw-new-error`: Check all call expressions instead of just argument of `ThrowStatement` ([#2332](sindresorhus/eslint-plugin-unicorn#2332)) [`1626852`](sindresorhus/eslint-plugin-unicorn@1626852) ##### [v52.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v52.0.0) ##### New rules - [`no-single-promise-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-single-promise-in-promise-methods.md) ([#2258](sindresorhus/eslint-plugin-unicorn#2258)) [`8f0ee89`](sindresorhus/eslint-plugin-unicorn@8f0ee89) - [`no-await-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-await-in-promise-methods.md) ([#2259](sindresorhus/eslint-plugin-unicorn#2259)) [`a3be554`](sindresorhus/eslint-plugin-unicorn@a3be554) - [`no-anonymous-default-export`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-anonymous-default-export.md) ([#2273](sindresorhus/eslint-plugin-unicorn#2273)) [`c035216`](sindresorhus/eslint-plugin-unicorn@c035216) ##### Improvements - `filename-case`: Add option for multiple file extensions ([#2186](sindresorhus/eslint-plugin-unicorn#2186)) [`4594020`](sindresorhus/eslint-plugin-unicorn@4594020) - `import-style`: Support `node:` protocol ([#2297](sindresorhus/eslint-plugin-unicorn#2297)) [`c28a086`](sindresorhus/eslint-plugin-unicorn@c28a086) - `prefer-array-find`: Check `array.filter().at(0)` ([#2284](sindresorhus/eslint-plugin-unicorn#2284)) [`e6074fe`](sindresorhus/eslint-plugin-unicorn@e6074fe) - `prefer-prototype-methods`: Check `Object.prototype` methods from `globalThis` ([#2286](sindresorhus/eslint-plugin-unicorn#2286)) [`1792d33`](sindresorhus/eslint-plugin-unicorn@1792d33) - `no-array-callback-reference`: Check logical expressions and check ternaries deeply ([#2289](sindresorhus/eslint-plugin-unicorn#2289)) [`231529a`](sindresorhus/eslint-plugin-unicorn@231529a) ##### Fixes - `prefer-spread`: Fix it to not report on optional chaining ([#2304](sindresorhus/eslint-plugin-unicorn#2304)) [`df1ff1c`](sindresorhus/eslint-plugin-unicorn@df1ff1c) - `no-anonymous-default-export`: Uppercase class name ([#2282](sindresorhus/eslint-plugin-unicorn#2282)) [`5ce4169`](sindresorhus/eslint-plugin-unicorn@5ce4169) ##### [v51.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.1) - `prefer-node-protocol`: Fix false positive on `bun:*` modules ([#2272](sindresorhus/eslint-plugin-unicorn#2272)) [`43fc638`](sindresorhus/eslint-plugin-unicorn@43fc638) ##### [v51.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.0) ##### Breaking - `consistent-destructuring`: Remove from `recommended` preset ([#2260](sindresorhus/eslint-plugin-unicorn#2260)) [`702d51b`](sindresorhus/eslint-plugin-unicorn@702d51b) ##### Improvements - `no-array-method-this-argument`: Check `Array.from()` ([#2262](sindresorhus/eslint-plugin-unicorn#2262)) [`797caee`](sindresorhus/eslint-plugin-unicorn@797caee) ##### Fixes - `no-thenable`: Fix crash on `{[Symbol.prototype]: 0}` ([#2248](sindresorhus/eslint-plugin-unicorn#2248)) [`3c7d7c0`](sindresorhus/eslint-plugin-unicorn@3c7d7c0) - `prefer-prototype-methods`: Fix argument of `isMethodCall` ([#2247](sindresorhus/eslint-plugin-unicorn#2247)) [`3b504fa`](sindresorhus/eslint-plugin-unicorn@3b504fa) ##### [v50.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.1) ##### Fixes - `no-unnecessary-polyfills`: Fix missing dependency error ([#2242](sindresorhus/eslint-plugin-unicorn#2242)) [`3df1606`](sindresorhus/eslint-plugin-unicorn@3df16068) ##### [v50.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.0) ##### New rules - [`no-unnecessary-polyfills`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-polyfills.md) ([#1717](sindresorhus/eslint-plugin-unicorn#1717)) [`6788d86`](sindresorhus/eslint-plugin-unicorn@6788d86) ##### Improvements - Support ESLint's new config system ([#1886](sindresorhus/eslint-plugin-unicorn#1886)) [`65711f9`](sindresorhus/eslint-plugin-unicorn@65711f9) - `no-useless-undefined`: Add `checkArrowFunctionBody` option ([#2232](sindresorhus/eslint-plugin-unicorn#2232)) [`9d7048c`](sindresorhus/eslint-plugin-unicorn@9d7048c) - `prefer-negative-index`: Check `TypedArray#subarray()` ([#2237](sindresorhus/eslint-plugin-unicorn#2237)) [`6708a30`](sindresorhus/eslint-plugin-unicorn@6708a30) - `no-useless-undefined`: Ignore React state setters ([#2223](sindresorhus/eslint-plugin-unicorn#2223)) [`42881ba`](sindresorhus/eslint-plugin-unicorn@42881ba) - `prefer-module`: Allow `module` as TSTypeParameter name ([#2213](sindresorhus/eslint-plugin-unicorn#2213)) [`8f61f7c`](sindresorhus/eslint-plugin-unicorn@8f61f7c) ##### Fixes - `string-content`: Fix JSX autofix for newlines, etc. ([#2222](sindresorhus/eslint-plugin-unicorn#2222)) [`b95e75e`](sindresorhus/eslint-plugin-unicorn@b95e75e)
##### [v55.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v55.0.0) ##### New rules - [`no-length-as-slice-end`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-length-as-slice-end.md) ([#2400](sindresorhus/eslint-plugin-unicorn#2400)) [`3c33820`](sindresorhus/eslint-plugin-unicorn@3c33820) ##### Improvements - Add TypeScript types ([#2382](sindresorhus/eslint-plugin-unicorn#2382)) [`68e0f13`](sindresorhus/eslint-plugin-unicorn@68e0f13) ##### Fixes - `no-single-promise-in-promise-methods`: Remove broken autofix for `Promise.all()` ([#2386](sindresorhus/eslint-plugin-unicorn#2386)) [`8d28b6e`](sindresorhus/eslint-plugin-unicorn@8d28b6e) - `prefer-node-protocol`: Ignore Bun modules ([#2384](sindresorhus/eslint-plugin-unicorn#2384)) [`a45b24a`](sindresorhus/eslint-plugin-unicorn@a45b24a) - `no-negation-in-equality-check`: Ignore boolean type casting ([#2379](sindresorhus/eslint-plugin-unicorn#2379)) [`37e00dd`](sindresorhus/eslint-plugin-unicorn@37e00dd) ##### [v54.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v54.0.0) ##### New rules - [`no-negation-in-equality-check`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negation-in-equality-check.md) ([#2353](sindresorhus/eslint-plugin-unicorn#2353)) [`8957a03`](sindresorhus/eslint-plugin-unicorn@8957a03) ##### Breaking - `prefer-array-find`: Change [`checkFromLast`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-find.md#checkfromlast) default value to `true` ([#2367](sindresorhus/eslint-plugin-unicorn#2367)) [`a449af9`](sindresorhus/eslint-plugin-unicorn@a449af9) ##### Improvements - Add name to flat configs ([#2377](sindresorhus/eslint-plugin-unicorn#2377)) [`ac8536e`](sindresorhus/eslint-plugin-unicorn@ac8536e) - `prefer-array-some`: Check `Array#{findIndex,findLastIndex}()` ([#2370](sindresorhus/eslint-plugin-unicorn#2370)) [`10568ab`](sindresorhus/eslint-plugin-unicorn@10568ab) - `prefer-includes`: Check `.lastIndexOf()` ([#2368](sindresorhus/eslint-plugin-unicorn#2368)) [`d812ad1`](sindresorhus/eslint-plugin-unicorn@d812ad1) - `prefer-string-raw`: Ignore strings in Enums ([#2354](sindresorhus/eslint-plugin-unicorn#2354)) [`175ea04`](sindresorhus/eslint-plugin-unicorn@175ea04) ##### Fixes - Fix edge cases when add `new` to calls ([#2352](sindresorhus/eslint-plugin-unicorn#2352)) [`d8f8161`](sindresorhus/eslint-plugin-unicorn@d8f8161) ##### [v53.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v53.0.0) ##### New rules - [`consistent-empty-array-spread`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-empty-array-spread.md) ([#2349](sindresorhus/eslint-plugin-unicorn#2349)) [`8d7954c`](sindresorhus/eslint-plugin-unicorn@8d7954c) - [`prefer-string-raw`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-raw.md) ([#2339](sindresorhus/eslint-plugin-unicorn#2339)) [`4f1400a`](sindresorhus/eslint-plugin-unicorn@4f1400a) - [`no-invalid-fetch-options`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-fetch-options.md) ([#2338](sindresorhus/eslint-plugin-unicorn#2338)) [`342aafb`](sindresorhus/eslint-plugin-unicorn@342aafb) - [`no-magic-array-flat-depth`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-magic-array-flat-depth.md) ([#2335](sindresorhus/eslint-plugin-unicorn#2335)) [`bc17428`](sindresorhus/eslint-plugin-unicorn@bc17428) - [`prefer-structured-clone`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-structured-clone.md) ([#2329](sindresorhus/eslint-plugin-unicorn#2329)) [`497519e`](sindresorhus/eslint-plugin-unicorn@497519e) ##### Breaking - Require Node.js 18.18 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) ##### Meta - You can now [sponsor @fisker](https://github.com/sponsors/fisker) for his work on this project ([#2348](sindresorhus/eslint-plugin-unicorn#2348)) [`b82542d`](sindresorhus/eslint-plugin-unicorn@b82542d) ##### Improvements - Support ESLint 9 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) - `no-array-method-this-argument`: Check `Array.fromAsync()` ([#2330](sindresorhus/eslint-plugin-unicorn#2330)) [`99489b9`](sindresorhus/eslint-plugin-unicorn@99489b9) - `prefer-number-properties`: Add `checkNaN` option ([#2315](sindresorhus/eslint-plugin-unicorn#2315)) [`d30de50`](sindresorhus/eslint-plugin-unicorn@d30de50) - `template-indent`: Support member expression paths in `tags` and `functions` ([#2346](sindresorhus/eslint-plugin-unicorn#2346)) [`aabcf1d`](sindresorhus/eslint-plugin-unicorn@aabcf1d) - `prefer-number-properties`: Don't require by default for `Infinity`/`-Infinity` to be written as `Number.POSITIVE_INFINITY`/`Number.NEGATIVE_INFINITY` ([#2312](sindresorhus/eslint-plugin-unicorn#2312)) [`e0dfed2`](sindresorhus/eslint-plugin-unicorn@e0dfed2) - `escape-case`: Ignore `String.raw` ([#2342](sindresorhus/eslint-plugin-unicorn#2342)) [`45bd444`](sindresorhus/eslint-plugin-unicorn@45bd444) - `no-hex-escape`: Ignore `String.raw` ([#2343](sindresorhus/eslint-plugin-unicorn#2343)) [`cc02a7f`](sindresorhus/eslint-plugin-unicorn@cc02a7f) - `prefer-dom-node-dataset`: Ignore `await`ed `getAttribute` call ([#2334](sindresorhus/eslint-plugin-unicorn#2334)) [`45f23d5`](sindresorhus/eslint-plugin-unicorn@45f23d5) - `prevent-abbreviations`: Support non-ASCII filenames ([#2308](sindresorhus/eslint-plugin-unicorn#2308)) [`28762c8`](sindresorhus/eslint-plugin-unicorn@28762c8) - `throw-new-error`: Check all call expressions instead of just argument of `ThrowStatement` ([#2332](sindresorhus/eslint-plugin-unicorn#2332)) [`1626852`](sindresorhus/eslint-plugin-unicorn@1626852) ##### [v52.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v52.0.0) ##### New rules - [`no-single-promise-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-single-promise-in-promise-methods.md) ([#2258](sindresorhus/eslint-plugin-unicorn#2258)) [`8f0ee89`](sindresorhus/eslint-plugin-unicorn@8f0ee89) - [`no-await-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-await-in-promise-methods.md) ([#2259](sindresorhus/eslint-plugin-unicorn#2259)) [`a3be554`](sindresorhus/eslint-plugin-unicorn@a3be554) - [`no-anonymous-default-export`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-anonymous-default-export.md) ([#2273](sindresorhus/eslint-plugin-unicorn#2273)) [`c035216`](sindresorhus/eslint-plugin-unicorn@c035216) ##### Improvements - `filename-case`: Add option for multiple file extensions ([#2186](sindresorhus/eslint-plugin-unicorn#2186)) [`4594020`](sindresorhus/eslint-plugin-unicorn@4594020) - `import-style`: Support `node:` protocol ([#2297](sindresorhus/eslint-plugin-unicorn#2297)) [`c28a086`](sindresorhus/eslint-plugin-unicorn@c28a086) - `prefer-array-find`: Check `array.filter().at(0)` ([#2284](sindresorhus/eslint-plugin-unicorn#2284)) [`e6074fe`](sindresorhus/eslint-plugin-unicorn@e6074fe) - `prefer-prototype-methods`: Check `Object.prototype` methods from `globalThis` ([#2286](sindresorhus/eslint-plugin-unicorn#2286)) [`1792d33`](sindresorhus/eslint-plugin-unicorn@1792d33) - `no-array-callback-reference`: Check logical expressions and check ternaries deeply ([#2289](sindresorhus/eslint-plugin-unicorn#2289)) [`231529a`](sindresorhus/eslint-plugin-unicorn@231529a) ##### Fixes - `prefer-spread`: Fix it to not report on optional chaining ([#2304](sindresorhus/eslint-plugin-unicorn#2304)) [`df1ff1c`](sindresorhus/eslint-plugin-unicorn@df1ff1c) - `no-anonymous-default-export`: Uppercase class name ([#2282](sindresorhus/eslint-plugin-unicorn#2282)) [`5ce4169`](sindresorhus/eslint-plugin-unicorn@5ce4169) ##### [v51.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.1) - `prefer-node-protocol`: Fix false positive on `bun:*` modules ([#2272](sindresorhus/eslint-plugin-unicorn#2272)) [`43fc638`](sindresorhus/eslint-plugin-unicorn@43fc638) ##### [v51.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.0) ##### Breaking - `consistent-destructuring`: Remove from `recommended` preset ([#2260](sindresorhus/eslint-plugin-unicorn#2260)) [`702d51b`](sindresorhus/eslint-plugin-unicorn@702d51b) ##### Improvements - `no-array-method-this-argument`: Check `Array.from()` ([#2262](sindresorhus/eslint-plugin-unicorn#2262)) [`797caee`](sindresorhus/eslint-plugin-unicorn@797caee) ##### Fixes - `no-thenable`: Fix crash on `{[Symbol.prototype]: 0}` ([#2248](sindresorhus/eslint-plugin-unicorn#2248)) [`3c7d7c0`](sindresorhus/eslint-plugin-unicorn@3c7d7c0) - `prefer-prototype-methods`: Fix argument of `isMethodCall` ([#2247](sindresorhus/eslint-plugin-unicorn#2247)) [`3b504fa`](sindresorhus/eslint-plugin-unicorn@3b504fa) ##### [v50.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.1) ##### Fixes - `no-unnecessary-polyfills`: Fix missing dependency error ([#2242](sindresorhus/eslint-plugin-unicorn#2242)) [`3df1606`](sindresorhus/eslint-plugin-unicorn@3df16068) ##### [v50.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.0) ##### New rules - [`no-unnecessary-polyfills`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-polyfills.md) ([#1717](sindresorhus/eslint-plugin-unicorn#1717)) [`6788d86`](sindresorhus/eslint-plugin-unicorn@6788d86) ##### Improvements - Support ESLint's new config system ([#1886](sindresorhus/eslint-plugin-unicorn#1886)) [`65711f9`](sindresorhus/eslint-plugin-unicorn@65711f9) - `no-useless-undefined`: Add `checkArrowFunctionBody` option ([#2232](sindresorhus/eslint-plugin-unicorn#2232)) [`9d7048c`](sindresorhus/eslint-plugin-unicorn@9d7048c) - `prefer-negative-index`: Check `TypedArray#subarray()` ([#2237](sindresorhus/eslint-plugin-unicorn#2237)) [`6708a30`](sindresorhus/eslint-plugin-unicorn@6708a30) - `no-useless-undefined`: Ignore React state setters ([#2223](sindresorhus/eslint-plugin-unicorn#2223)) [`42881ba`](sindresorhus/eslint-plugin-unicorn@42881ba) - `prefer-module`: Allow `module` as TSTypeParameter name ([#2213](sindresorhus/eslint-plugin-unicorn#2213)) [`8f61f7c`](sindresorhus/eslint-plugin-unicorn@8f61f7c) ##### Fixes - `string-content`: Fix JSX autofix for newlines, etc. ([#2222](sindresorhus/eslint-plugin-unicorn#2222)) [`b95e75e`](sindresorhus/eslint-plugin-unicorn@b95e75e)
##### [v55.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v55.0.0) ##### New rules - [`no-length-as-slice-end`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-length-as-slice-end.md) ([#2400](sindresorhus/eslint-plugin-unicorn#2400)) [`3c33820`](sindresorhus/eslint-plugin-unicorn@3c33820) ##### Improvements - Add TypeScript types ([#2382](sindresorhus/eslint-plugin-unicorn#2382)) [`68e0f13`](sindresorhus/eslint-plugin-unicorn@68e0f13) ##### Fixes - `no-single-promise-in-promise-methods`: Remove broken autofix for `Promise.all()` ([#2386](sindresorhus/eslint-plugin-unicorn#2386)) [`8d28b6e`](sindresorhus/eslint-plugin-unicorn@8d28b6e) - `prefer-node-protocol`: Ignore Bun modules ([#2384](sindresorhus/eslint-plugin-unicorn#2384)) [`a45b24a`](sindresorhus/eslint-plugin-unicorn@a45b24a) - `no-negation-in-equality-check`: Ignore boolean type casting ([#2379](sindresorhus/eslint-plugin-unicorn#2379)) [`37e00dd`](sindresorhus/eslint-plugin-unicorn@37e00dd) ##### [v54.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v54.0.0) ##### New rules - [`no-negation-in-equality-check`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negation-in-equality-check.md) ([#2353](sindresorhus/eslint-plugin-unicorn#2353)) [`8957a03`](sindresorhus/eslint-plugin-unicorn@8957a03) ##### Breaking - `prefer-array-find`: Change [`checkFromLast`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-find.md#checkfromlast) default value to `true` ([#2367](sindresorhus/eslint-plugin-unicorn#2367)) [`a449af9`](sindresorhus/eslint-plugin-unicorn@a449af9) ##### Improvements - Add name to flat configs ([#2377](sindresorhus/eslint-plugin-unicorn#2377)) [`ac8536e`](sindresorhus/eslint-plugin-unicorn@ac8536e) - `prefer-array-some`: Check `Array#{findIndex,findLastIndex}()` ([#2370](sindresorhus/eslint-plugin-unicorn#2370)) [`10568ab`](sindresorhus/eslint-plugin-unicorn@10568ab) - `prefer-includes`: Check `.lastIndexOf()` ([#2368](sindresorhus/eslint-plugin-unicorn#2368)) [`d812ad1`](sindresorhus/eslint-plugin-unicorn@d812ad1) - `prefer-string-raw`: Ignore strings in Enums ([#2354](sindresorhus/eslint-plugin-unicorn#2354)) [`175ea04`](sindresorhus/eslint-plugin-unicorn@175ea04) ##### Fixes - Fix edge cases when add `new` to calls ([#2352](sindresorhus/eslint-plugin-unicorn#2352)) [`d8f8161`](sindresorhus/eslint-plugin-unicorn@d8f8161) ##### [v53.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v53.0.0) ##### New rules - [`consistent-empty-array-spread`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-empty-array-spread.md) ([#2349](sindresorhus/eslint-plugin-unicorn#2349)) [`8d7954c`](sindresorhus/eslint-plugin-unicorn@8d7954c) - [`prefer-string-raw`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-raw.md) ([#2339](sindresorhus/eslint-plugin-unicorn#2339)) [`4f1400a`](sindresorhus/eslint-plugin-unicorn@4f1400a) - [`no-invalid-fetch-options`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-fetch-options.md) ([#2338](sindresorhus/eslint-plugin-unicorn#2338)) [`342aafb`](sindresorhus/eslint-plugin-unicorn@342aafb) - [`no-magic-array-flat-depth`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-magic-array-flat-depth.md) ([#2335](sindresorhus/eslint-plugin-unicorn#2335)) [`bc17428`](sindresorhus/eslint-plugin-unicorn@bc17428) - [`prefer-structured-clone`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-structured-clone.md) ([#2329](sindresorhus/eslint-plugin-unicorn#2329)) [`497519e`](sindresorhus/eslint-plugin-unicorn@497519e) ##### Breaking - Require Node.js 18.18 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) ##### Meta - You can now [sponsor @fisker](https://github.com/sponsors/fisker) for his work on this project ([#2348](sindresorhus/eslint-plugin-unicorn#2348)) [`b82542d`](sindresorhus/eslint-plugin-unicorn@b82542d) ##### Improvements - Support ESLint 9 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) - `no-array-method-this-argument`: Check `Array.fromAsync()` ([#2330](sindresorhus/eslint-plugin-unicorn#2330)) [`99489b9`](sindresorhus/eslint-plugin-unicorn@99489b9) - `prefer-number-properties`: Add `checkNaN` option ([#2315](sindresorhus/eslint-plugin-unicorn#2315)) [`d30de50`](sindresorhus/eslint-plugin-unicorn@d30de50) - `template-indent`: Support member expression paths in `tags` and `functions` ([#2346](sindresorhus/eslint-plugin-unicorn#2346)) [`aabcf1d`](sindresorhus/eslint-plugin-unicorn@aabcf1d) - `prefer-number-properties`: Don't require by default for `Infinity`/`-Infinity` to be written as `Number.POSITIVE_INFINITY`/`Number.NEGATIVE_INFINITY` ([#2312](sindresorhus/eslint-plugin-unicorn#2312)) [`e0dfed2`](sindresorhus/eslint-plugin-unicorn@e0dfed2) - `escape-case`: Ignore `String.raw` ([#2342](sindresorhus/eslint-plugin-unicorn#2342)) [`45bd444`](sindresorhus/eslint-plugin-unicorn@45bd444) - `no-hex-escape`: Ignore `String.raw` ([#2343](sindresorhus/eslint-plugin-unicorn#2343)) [`cc02a7f`](sindresorhus/eslint-plugin-unicorn@cc02a7f) - `prefer-dom-node-dataset`: Ignore `await`ed `getAttribute` call ([#2334](sindresorhus/eslint-plugin-unicorn#2334)) [`45f23d5`](sindresorhus/eslint-plugin-unicorn@45f23d5) - `prevent-abbreviations`: Support non-ASCII filenames ([#2308](sindresorhus/eslint-plugin-unicorn#2308)) [`28762c8`](sindresorhus/eslint-plugin-unicorn@28762c8) - `throw-new-error`: Check all call expressions instead of just argument of `ThrowStatement` ([#2332](sindresorhus/eslint-plugin-unicorn#2332)) [`1626852`](sindresorhus/eslint-plugin-unicorn@1626852) ##### [v52.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v52.0.0) ##### New rules - [`no-single-promise-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-single-promise-in-promise-methods.md) ([#2258](sindresorhus/eslint-plugin-unicorn#2258)) [`8f0ee89`](sindresorhus/eslint-plugin-unicorn@8f0ee89) - [`no-await-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-await-in-promise-methods.md) ([#2259](sindresorhus/eslint-plugin-unicorn#2259)) [`a3be554`](sindresorhus/eslint-plugin-unicorn@a3be554) - [`no-anonymous-default-export`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-anonymous-default-export.md) ([#2273](sindresorhus/eslint-plugin-unicorn#2273)) [`c035216`](sindresorhus/eslint-plugin-unicorn@c035216) ##### Improvements - `filename-case`: Add option for multiple file extensions ([#2186](sindresorhus/eslint-plugin-unicorn#2186)) [`4594020`](sindresorhus/eslint-plugin-unicorn@4594020) - `import-style`: Support `node:` protocol ([#2297](sindresorhus/eslint-plugin-unicorn#2297)) [`c28a086`](sindresorhus/eslint-plugin-unicorn@c28a086) - `prefer-array-find`: Check `array.filter().at(0)` ([#2284](sindresorhus/eslint-plugin-unicorn#2284)) [`e6074fe`](sindresorhus/eslint-plugin-unicorn@e6074fe) - `prefer-prototype-methods`: Check `Object.prototype` methods from `globalThis` ([#2286](sindresorhus/eslint-plugin-unicorn#2286)) [`1792d33`](sindresorhus/eslint-plugin-unicorn@1792d33) - `no-array-callback-reference`: Check logical expressions and check ternaries deeply ([#2289](sindresorhus/eslint-plugin-unicorn#2289)) [`231529a`](sindresorhus/eslint-plugin-unicorn@231529a) ##### Fixes - `prefer-spread`: Fix it to not report on optional chaining ([#2304](sindresorhus/eslint-plugin-unicorn#2304)) [`df1ff1c`](sindresorhus/eslint-plugin-unicorn@df1ff1c) - `no-anonymous-default-export`: Uppercase class name ([#2282](sindresorhus/eslint-plugin-unicorn#2282)) [`5ce4169`](sindresorhus/eslint-plugin-unicorn@5ce4169) ##### [v51.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.1) - `prefer-node-protocol`: Fix false positive on `bun:*` modules ([#2272](sindresorhus/eslint-plugin-unicorn#2272)) [`43fc638`](sindresorhus/eslint-plugin-unicorn@43fc638) ##### [v51.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.0) ##### Breaking - `consistent-destructuring`: Remove from `recommended` preset ([#2260](sindresorhus/eslint-plugin-unicorn#2260)) [`702d51b`](sindresorhus/eslint-plugin-unicorn@702d51b) ##### Improvements - `no-array-method-this-argument`: Check `Array.from()` ([#2262](sindresorhus/eslint-plugin-unicorn#2262)) [`797caee`](sindresorhus/eslint-plugin-unicorn@797caee) ##### Fixes - `no-thenable`: Fix crash on `{[Symbol.prototype]: 0}` ([#2248](sindresorhus/eslint-plugin-unicorn#2248)) [`3c7d7c0`](sindresorhus/eslint-plugin-unicorn@3c7d7c0) - `prefer-prototype-methods`: Fix argument of `isMethodCall` ([#2247](sindresorhus/eslint-plugin-unicorn#2247)) [`3b504fa`](sindresorhus/eslint-plugin-unicorn@3b504fa) ##### [v50.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.1) ##### Fixes - `no-unnecessary-polyfills`: Fix missing dependency error ([#2242](sindresorhus/eslint-plugin-unicorn#2242)) [`3df1606`](sindresorhus/eslint-plugin-unicorn@3df16068) ##### [v50.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.0) ##### New rules - [`no-unnecessary-polyfills`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-polyfills.md) ([#1717](sindresorhus/eslint-plugin-unicorn#1717)) [`6788d86`](sindresorhus/eslint-plugin-unicorn@6788d86) ##### Improvements - Support ESLint's new config system ([#1886](sindresorhus/eslint-plugin-unicorn#1886)) [`65711f9`](sindresorhus/eslint-plugin-unicorn@65711f9) - `no-useless-undefined`: Add `checkArrowFunctionBody` option ([#2232](sindresorhus/eslint-plugin-unicorn#2232)) [`9d7048c`](sindresorhus/eslint-plugin-unicorn@9d7048c) - `prefer-negative-index`: Check `TypedArray#subarray()` ([#2237](sindresorhus/eslint-plugin-unicorn#2237)) [`6708a30`](sindresorhus/eslint-plugin-unicorn@6708a30) - `no-useless-undefined`: Ignore React state setters ([#2223](sindresorhus/eslint-plugin-unicorn#2223)) [`42881ba`](sindresorhus/eslint-plugin-unicorn@42881ba) - `prefer-module`: Allow `module` as TSTypeParameter name ([#2213](sindresorhus/eslint-plugin-unicorn#2213)) [`8f61f7c`](sindresorhus/eslint-plugin-unicorn@8f61f7c) ##### Fixes - `string-content`: Fix JSX autofix for newlines, etc. ([#2222](sindresorhus/eslint-plugin-unicorn#2222)) [`b95e75e`](sindresorhus/eslint-plugin-unicorn@b95e75e)
##### [v55.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v55.0.0) ##### New rules - [`no-length-as-slice-end`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-length-as-slice-end.md) ([#2400](sindresorhus/eslint-plugin-unicorn#2400)) [`3c33820`](sindresorhus/eslint-plugin-unicorn@3c33820) ##### Improvements - Add TypeScript types ([#2382](sindresorhus/eslint-plugin-unicorn#2382)) [`68e0f13`](sindresorhus/eslint-plugin-unicorn@68e0f13) ##### Fixes - `no-single-promise-in-promise-methods`: Remove broken autofix for `Promise.all()` ([#2386](sindresorhus/eslint-plugin-unicorn#2386)) [`8d28b6e`](sindresorhus/eslint-plugin-unicorn@8d28b6e) - `prefer-node-protocol`: Ignore Bun modules ([#2384](sindresorhus/eslint-plugin-unicorn#2384)) [`a45b24a`](sindresorhus/eslint-plugin-unicorn@a45b24a) - `no-negation-in-equality-check`: Ignore boolean type casting ([#2379](sindresorhus/eslint-plugin-unicorn#2379)) [`37e00dd`](sindresorhus/eslint-plugin-unicorn@37e00dd) ##### [v54.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v54.0.0) ##### New rules - [`no-negation-in-equality-check`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negation-in-equality-check.md) ([#2353](sindresorhus/eslint-plugin-unicorn#2353)) [`8957a03`](sindresorhus/eslint-plugin-unicorn@8957a03) ##### Breaking - `prefer-array-find`: Change [`checkFromLast`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-find.md#checkfromlast) default value to `true` ([#2367](sindresorhus/eslint-plugin-unicorn#2367)) [`a449af9`](sindresorhus/eslint-plugin-unicorn@a449af9) ##### Improvements - Add name to flat configs ([#2377](sindresorhus/eslint-plugin-unicorn#2377)) [`ac8536e`](sindresorhus/eslint-plugin-unicorn@ac8536e) - `prefer-array-some`: Check `Array#{findIndex,findLastIndex}()` ([#2370](sindresorhus/eslint-plugin-unicorn#2370)) [`10568ab`](sindresorhus/eslint-plugin-unicorn@10568ab) - `prefer-includes`: Check `.lastIndexOf()` ([#2368](sindresorhus/eslint-plugin-unicorn#2368)) [`d812ad1`](sindresorhus/eslint-plugin-unicorn@d812ad1) - `prefer-string-raw`: Ignore strings in Enums ([#2354](sindresorhus/eslint-plugin-unicorn#2354)) [`175ea04`](sindresorhus/eslint-plugin-unicorn@175ea04) ##### Fixes - Fix edge cases when add `new` to calls ([#2352](sindresorhus/eslint-plugin-unicorn#2352)) [`d8f8161`](sindresorhus/eslint-plugin-unicorn@d8f8161) ##### [v53.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v53.0.0) ##### New rules - [`consistent-empty-array-spread`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-empty-array-spread.md) ([#2349](sindresorhus/eslint-plugin-unicorn#2349)) [`8d7954c`](sindresorhus/eslint-plugin-unicorn@8d7954c) - [`prefer-string-raw`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-raw.md) ([#2339](sindresorhus/eslint-plugin-unicorn#2339)) [`4f1400a`](sindresorhus/eslint-plugin-unicorn@4f1400a) - [`no-invalid-fetch-options`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-fetch-options.md) ([#2338](sindresorhus/eslint-plugin-unicorn#2338)) [`342aafb`](sindresorhus/eslint-plugin-unicorn@342aafb) - [`no-magic-array-flat-depth`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-magic-array-flat-depth.md) ([#2335](sindresorhus/eslint-plugin-unicorn#2335)) [`bc17428`](sindresorhus/eslint-plugin-unicorn@bc17428) - [`prefer-structured-clone`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-structured-clone.md) ([#2329](sindresorhus/eslint-plugin-unicorn#2329)) [`497519e`](sindresorhus/eslint-plugin-unicorn@497519e) ##### Breaking - Require Node.js 18.18 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) ##### Meta - You can now [sponsor @fisker](https://github.com/sponsors/fisker) for his work on this project ([#2348](sindresorhus/eslint-plugin-unicorn#2348)) [`b82542d`](sindresorhus/eslint-plugin-unicorn@b82542d) ##### Improvements - Support ESLint 9 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) - `no-array-method-this-argument`: Check `Array.fromAsync()` ([#2330](sindresorhus/eslint-plugin-unicorn#2330)) [`99489b9`](sindresorhus/eslint-plugin-unicorn@99489b9) - `prefer-number-properties`: Add `checkNaN` option ([#2315](sindresorhus/eslint-plugin-unicorn#2315)) [`d30de50`](sindresorhus/eslint-plugin-unicorn@d30de50) - `template-indent`: Support member expression paths in `tags` and `functions` ([#2346](sindresorhus/eslint-plugin-unicorn#2346)) [`aabcf1d`](sindresorhus/eslint-plugin-unicorn@aabcf1d) - `prefer-number-properties`: Don't require by default for `Infinity`/`-Infinity` to be written as `Number.POSITIVE_INFINITY`/`Number.NEGATIVE_INFINITY` ([#2312](sindresorhus/eslint-plugin-unicorn#2312)) [`e0dfed2`](sindresorhus/eslint-plugin-unicorn@e0dfed2) - `escape-case`: Ignore `String.raw` ([#2342](sindresorhus/eslint-plugin-unicorn#2342)) [`45bd444`](sindresorhus/eslint-plugin-unicorn@45bd444) - `no-hex-escape`: Ignore `String.raw` ([#2343](sindresorhus/eslint-plugin-unicorn#2343)) [`cc02a7f`](sindresorhus/eslint-plugin-unicorn@cc02a7f) - `prefer-dom-node-dataset`: Ignore `await`ed `getAttribute` call ([#2334](sindresorhus/eslint-plugin-unicorn#2334)) [`45f23d5`](sindresorhus/eslint-plugin-unicorn@45f23d5) - `prevent-abbreviations`: Support non-ASCII filenames ([#2308](sindresorhus/eslint-plugin-unicorn#2308)) [`28762c8`](sindresorhus/eslint-plugin-unicorn@28762c8) - `throw-new-error`: Check all call expressions instead of just argument of `ThrowStatement` ([#2332](sindresorhus/eslint-plugin-unicorn#2332)) [`1626852`](sindresorhus/eslint-plugin-unicorn@1626852) ##### [v52.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v52.0.0) ##### New rules - [`no-single-promise-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-single-promise-in-promise-methods.md) ([#2258](sindresorhus/eslint-plugin-unicorn#2258)) [`8f0ee89`](sindresorhus/eslint-plugin-unicorn@8f0ee89) - [`no-await-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-await-in-promise-methods.md) ([#2259](sindresorhus/eslint-plugin-unicorn#2259)) [`a3be554`](sindresorhus/eslint-plugin-unicorn@a3be554) - [`no-anonymous-default-export`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-anonymous-default-export.md) ([#2273](sindresorhus/eslint-plugin-unicorn#2273)) [`c035216`](sindresorhus/eslint-plugin-unicorn@c035216) ##### Improvements - `filename-case`: Add option for multiple file extensions ([#2186](sindresorhus/eslint-plugin-unicorn#2186)) [`4594020`](sindresorhus/eslint-plugin-unicorn@4594020) - `import-style`: Support `node:` protocol ([#2297](sindresorhus/eslint-plugin-unicorn#2297)) [`c28a086`](sindresorhus/eslint-plugin-unicorn@c28a086) - `prefer-array-find`: Check `array.filter().at(0)` ([#2284](sindresorhus/eslint-plugin-unicorn#2284)) [`e6074fe`](sindresorhus/eslint-plugin-unicorn@e6074fe) - `prefer-prototype-methods`: Check `Object.prototype` methods from `globalThis` ([#2286](sindresorhus/eslint-plugin-unicorn#2286)) [`1792d33`](sindresorhus/eslint-plugin-unicorn@1792d33) - `no-array-callback-reference`: Check logical expressions and check ternaries deeply ([#2289](sindresorhus/eslint-plugin-unicorn#2289)) [`231529a`](sindresorhus/eslint-plugin-unicorn@231529a) ##### Fixes - `prefer-spread`: Fix it to not report on optional chaining ([#2304](sindresorhus/eslint-plugin-unicorn#2304)) [`df1ff1c`](sindresorhus/eslint-plugin-unicorn@df1ff1c) - `no-anonymous-default-export`: Uppercase class name ([#2282](sindresorhus/eslint-plugin-unicorn#2282)) [`5ce4169`](sindresorhus/eslint-plugin-unicorn@5ce4169) ##### [v51.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.1) - `prefer-node-protocol`: Fix false positive on `bun:*` modules ([#2272](sindresorhus/eslint-plugin-unicorn#2272)) [`43fc638`](sindresorhus/eslint-plugin-unicorn@43fc638) ##### [v51.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.0) ##### Breaking - `consistent-destructuring`: Remove from `recommended` preset ([#2260](sindresorhus/eslint-plugin-unicorn#2260)) [`702d51b`](sindresorhus/eslint-plugin-unicorn@702d51b) ##### Improvements - `no-array-method-this-argument`: Check `Array.from()` ([#2262](sindresorhus/eslint-plugin-unicorn#2262)) [`797caee`](sindresorhus/eslint-plugin-unicorn@797caee) ##### Fixes - `no-thenable`: Fix crash on `{[Symbol.prototype]: 0}` ([#2248](sindresorhus/eslint-plugin-unicorn#2248)) [`3c7d7c0`](sindresorhus/eslint-plugin-unicorn@3c7d7c0) - `prefer-prototype-methods`: Fix argument of `isMethodCall` ([#2247](sindresorhus/eslint-plugin-unicorn#2247)) [`3b504fa`](sindresorhus/eslint-plugin-unicorn@3b504fa) ##### [v50.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.1) ##### Fixes - `no-unnecessary-polyfills`: Fix missing dependency error ([#2242](sindresorhus/eslint-plugin-unicorn#2242)) [`3df1606`](sindresorhus/eslint-plugin-unicorn@3df16068) ##### [v50.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.0) ##### New rules - [`no-unnecessary-polyfills`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-polyfills.md) ([#1717](sindresorhus/eslint-plugin-unicorn#1717)) [`6788d86`](sindresorhus/eslint-plugin-unicorn@6788d86) ##### Improvements - Support ESLint's new config system ([#1886](sindresorhus/eslint-plugin-unicorn#1886)) [`65711f9`](sindresorhus/eslint-plugin-unicorn@65711f9) - `no-useless-undefined`: Add `checkArrowFunctionBody` option ([#2232](sindresorhus/eslint-plugin-unicorn#2232)) [`9d7048c`](sindresorhus/eslint-plugin-unicorn@9d7048c) - `prefer-negative-index`: Check `TypedArray#subarray()` ([#2237](sindresorhus/eslint-plugin-unicorn#2237)) [`6708a30`](sindresorhus/eslint-plugin-unicorn@6708a30) - `no-useless-undefined`: Ignore React state setters ([#2223](sindresorhus/eslint-plugin-unicorn#2223)) [`42881ba`](sindresorhus/eslint-plugin-unicorn@42881ba) - `prefer-module`: Allow `module` as TSTypeParameter name ([#2213](sindresorhus/eslint-plugin-unicorn#2213)) [`8f61f7c`](sindresorhus/eslint-plugin-unicorn@8f61f7c) ##### Fixes - `string-content`: Fix JSX autofix for newlines, etc. ([#2222](sindresorhus/eslint-plugin-unicorn#2222)) [`b95e75e`](sindresorhus/eslint-plugin-unicorn@b95e75e)
##### [v55.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v55.0.0) ##### New rules - [`no-length-as-slice-end`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-length-as-slice-end.md) ([#2400](sindresorhus/eslint-plugin-unicorn#2400)) [`3c33820`](sindresorhus/eslint-plugin-unicorn@3c33820) ##### Improvements - Add TypeScript types ([#2382](sindresorhus/eslint-plugin-unicorn#2382)) [`68e0f13`](sindresorhus/eslint-plugin-unicorn@68e0f13) ##### Fixes - `no-single-promise-in-promise-methods`: Remove broken autofix for `Promise.all()` ([#2386](sindresorhus/eslint-plugin-unicorn#2386)) [`8d28b6e`](sindresorhus/eslint-plugin-unicorn@8d28b6e) - `prefer-node-protocol`: Ignore Bun modules ([#2384](sindresorhus/eslint-plugin-unicorn#2384)) [`a45b24a`](sindresorhus/eslint-plugin-unicorn@a45b24a) - `no-negation-in-equality-check`: Ignore boolean type casting ([#2379](sindresorhus/eslint-plugin-unicorn#2379)) [`37e00dd`](sindresorhus/eslint-plugin-unicorn@37e00dd) ##### [v54.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v54.0.0) ##### New rules - [`no-negation-in-equality-check`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negation-in-equality-check.md) ([#2353](sindresorhus/eslint-plugin-unicorn#2353)) [`8957a03`](sindresorhus/eslint-plugin-unicorn@8957a03) ##### Breaking - `prefer-array-find`: Change [`checkFromLast`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-find.md#checkfromlast) default value to `true` ([#2367](sindresorhus/eslint-plugin-unicorn#2367)) [`a449af9`](sindresorhus/eslint-plugin-unicorn@a449af9) ##### Improvements - Add name to flat configs ([#2377](sindresorhus/eslint-plugin-unicorn#2377)) [`ac8536e`](sindresorhus/eslint-plugin-unicorn@ac8536e) - `prefer-array-some`: Check `Array#{findIndex,findLastIndex}()` ([#2370](sindresorhus/eslint-plugin-unicorn#2370)) [`10568ab`](sindresorhus/eslint-plugin-unicorn@10568ab) - `prefer-includes`: Check `.lastIndexOf()` ([#2368](sindresorhus/eslint-plugin-unicorn#2368)) [`d812ad1`](sindresorhus/eslint-plugin-unicorn@d812ad1) - `prefer-string-raw`: Ignore strings in Enums ([#2354](sindresorhus/eslint-plugin-unicorn#2354)) [`175ea04`](sindresorhus/eslint-plugin-unicorn@175ea04) ##### Fixes - Fix edge cases when add `new` to calls ([#2352](sindresorhus/eslint-plugin-unicorn#2352)) [`d8f8161`](sindresorhus/eslint-plugin-unicorn@d8f8161) ##### [v53.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v53.0.0) ##### New rules - [`consistent-empty-array-spread`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-empty-array-spread.md) ([#2349](sindresorhus/eslint-plugin-unicorn#2349)) [`8d7954c`](sindresorhus/eslint-plugin-unicorn@8d7954c) - [`prefer-string-raw`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-raw.md) ([#2339](sindresorhus/eslint-plugin-unicorn#2339)) [`4f1400a`](sindresorhus/eslint-plugin-unicorn@4f1400a) - [`no-invalid-fetch-options`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-fetch-options.md) ([#2338](sindresorhus/eslint-plugin-unicorn#2338)) [`342aafb`](sindresorhus/eslint-plugin-unicorn@342aafb) - [`no-magic-array-flat-depth`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-magic-array-flat-depth.md) ([#2335](sindresorhus/eslint-plugin-unicorn#2335)) [`bc17428`](sindresorhus/eslint-plugin-unicorn@bc17428) - [`prefer-structured-clone`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-structured-clone.md) ([#2329](sindresorhus/eslint-plugin-unicorn#2329)) [`497519e`](sindresorhus/eslint-plugin-unicorn@497519e) ##### Breaking - Require Node.js 18.18 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) ##### Meta - You can now [sponsor @fisker](https://github.com/sponsors/fisker) for his work on this project ([#2348](sindresorhus/eslint-plugin-unicorn#2348)) [`b82542d`](sindresorhus/eslint-plugin-unicorn@b82542d) ##### Improvements - Support ESLint 9 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) - `no-array-method-this-argument`: Check `Array.fromAsync()` ([#2330](sindresorhus/eslint-plugin-unicorn#2330)) [`99489b9`](sindresorhus/eslint-plugin-unicorn@99489b9) - `prefer-number-properties`: Add `checkNaN` option ([#2315](sindresorhus/eslint-plugin-unicorn#2315)) [`d30de50`](sindresorhus/eslint-plugin-unicorn@d30de50) - `template-indent`: Support member expression paths in `tags` and `functions` ([#2346](sindresorhus/eslint-plugin-unicorn#2346)) [`aabcf1d`](sindresorhus/eslint-plugin-unicorn@aabcf1d) - `prefer-number-properties`: Don't require by default for `Infinity`/`-Infinity` to be written as `Number.POSITIVE_INFINITY`/`Number.NEGATIVE_INFINITY` ([#2312](sindresorhus/eslint-plugin-unicorn#2312)) [`e0dfed2`](sindresorhus/eslint-plugin-unicorn@e0dfed2) - `escape-case`: Ignore `String.raw` ([#2342](sindresorhus/eslint-plugin-unicorn#2342)) [`45bd444`](sindresorhus/eslint-plugin-unicorn@45bd444) - `no-hex-escape`: Ignore `String.raw` ([#2343](sindresorhus/eslint-plugin-unicorn#2343)) [`cc02a7f`](sindresorhus/eslint-plugin-unicorn@cc02a7f) - `prefer-dom-node-dataset`: Ignore `await`ed `getAttribute` call ([#2334](sindresorhus/eslint-plugin-unicorn#2334)) [`45f23d5`](sindresorhus/eslint-plugin-unicorn@45f23d5) - `prevent-abbreviations`: Support non-ASCII filenames ([#2308](sindresorhus/eslint-plugin-unicorn#2308)) [`28762c8`](sindresorhus/eslint-plugin-unicorn@28762c8) - `throw-new-error`: Check all call expressions instead of just argument of `ThrowStatement` ([#2332](sindresorhus/eslint-plugin-unicorn#2332)) [`1626852`](sindresorhus/eslint-plugin-unicorn@1626852) ##### [v52.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v52.0.0) ##### New rules - [`no-single-promise-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-single-promise-in-promise-methods.md) ([#2258](sindresorhus/eslint-plugin-unicorn#2258)) [`8f0ee89`](sindresorhus/eslint-plugin-unicorn@8f0ee89) - [`no-await-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-await-in-promise-methods.md) ([#2259](sindresorhus/eslint-plugin-unicorn#2259)) [`a3be554`](sindresorhus/eslint-plugin-unicorn@a3be554) - [`no-anonymous-default-export`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-anonymous-default-export.md) ([#2273](sindresorhus/eslint-plugin-unicorn#2273)) [`c035216`](sindresorhus/eslint-plugin-unicorn@c035216) ##### Improvements - `filename-case`: Add option for multiple file extensions ([#2186](sindresorhus/eslint-plugin-unicorn#2186)) [`4594020`](sindresorhus/eslint-plugin-unicorn@4594020) - `import-style`: Support `node:` protocol ([#2297](sindresorhus/eslint-plugin-unicorn#2297)) [`c28a086`](sindresorhus/eslint-plugin-unicorn@c28a086) - `prefer-array-find`: Check `array.filter().at(0)` ([#2284](sindresorhus/eslint-plugin-unicorn#2284)) [`e6074fe`](sindresorhus/eslint-plugin-unicorn@e6074fe) - `prefer-prototype-methods`: Check `Object.prototype` methods from `globalThis` ([#2286](sindresorhus/eslint-plugin-unicorn#2286)) [`1792d33`](sindresorhus/eslint-plugin-unicorn@1792d33) - `no-array-callback-reference`: Check logical expressions and check ternaries deeply ([#2289](sindresorhus/eslint-plugin-unicorn#2289)) [`231529a`](sindresorhus/eslint-plugin-unicorn@231529a) ##### Fixes - `prefer-spread`: Fix it to not report on optional chaining ([#2304](sindresorhus/eslint-plugin-unicorn#2304)) [`df1ff1c`](sindresorhus/eslint-plugin-unicorn@df1ff1c) - `no-anonymous-default-export`: Uppercase class name ([#2282](sindresorhus/eslint-plugin-unicorn#2282)) [`5ce4169`](sindresorhus/eslint-plugin-unicorn@5ce4169) ##### [v51.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.1) - `prefer-node-protocol`: Fix false positive on `bun:*` modules ([#2272](sindresorhus/eslint-plugin-unicorn#2272)) [`43fc638`](sindresorhus/eslint-plugin-unicorn@43fc638) ##### [v51.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.0) ##### Breaking - `consistent-destructuring`: Remove from `recommended` preset ([#2260](sindresorhus/eslint-plugin-unicorn#2260)) [`702d51b`](sindresorhus/eslint-plugin-unicorn@702d51b) ##### Improvements - `no-array-method-this-argument`: Check `Array.from()` ([#2262](sindresorhus/eslint-plugin-unicorn#2262)) [`797caee`](sindresorhus/eslint-plugin-unicorn@797caee) ##### Fixes - `no-thenable`: Fix crash on `{[Symbol.prototype]: 0}` ([#2248](sindresorhus/eslint-plugin-unicorn#2248)) [`3c7d7c0`](sindresorhus/eslint-plugin-unicorn@3c7d7c0) - `prefer-prototype-methods`: Fix argument of `isMethodCall` ([#2247](sindresorhus/eslint-plugin-unicorn#2247)) [`3b504fa`](sindresorhus/eslint-plugin-unicorn@3b504fa) ##### [v50.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.1) ##### Fixes - `no-unnecessary-polyfills`: Fix missing dependency error ([#2242](sindresorhus/eslint-plugin-unicorn#2242)) [`3df1606`](sindresorhus/eslint-plugin-unicorn@3df16068) ##### [v50.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.0) ##### New rules - [`no-unnecessary-polyfills`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-polyfills.md) ([#1717](sindresorhus/eslint-plugin-unicorn#1717)) [`6788d86`](sindresorhus/eslint-plugin-unicorn@6788d86) ##### Improvements - Support ESLint's new config system ([#1886](sindresorhus/eslint-plugin-unicorn#1886)) [`65711f9`](sindresorhus/eslint-plugin-unicorn@65711f9) - `no-useless-undefined`: Add `checkArrowFunctionBody` option ([#2232](sindresorhus/eslint-plugin-unicorn#2232)) [`9d7048c`](sindresorhus/eslint-plugin-unicorn@9d7048c) - `prefer-negative-index`: Check `TypedArray#subarray()` ([#2237](sindresorhus/eslint-plugin-unicorn#2237)) [`6708a30`](sindresorhus/eslint-plugin-unicorn@6708a30) - `no-useless-undefined`: Ignore React state setters ([#2223](sindresorhus/eslint-plugin-unicorn#2223)) [`42881ba`](sindresorhus/eslint-plugin-unicorn@42881ba) - `prefer-module`: Allow `module` as TSTypeParameter name ([#2213](sindresorhus/eslint-plugin-unicorn#2213)) [`8f61f7c`](sindresorhus/eslint-plugin-unicorn@8f61f7c) ##### Fixes - `string-content`: Fix JSX autofix for newlines, etc. ([#2222](sindresorhus/eslint-plugin-unicorn#2222)) [`b95e75e`](sindresorhus/eslint-plugin-unicorn@b95e75e)
##### [v55.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v55.0.0) ##### New rules - [`no-length-as-slice-end`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-length-as-slice-end.md) ([#2400](sindresorhus/eslint-plugin-unicorn#2400)) [`3c33820`](sindresorhus/eslint-plugin-unicorn@3c33820) ##### Improvements - Add TypeScript types ([#2382](sindresorhus/eslint-plugin-unicorn#2382)) [`68e0f13`](sindresorhus/eslint-plugin-unicorn@68e0f13) ##### Fixes - `no-single-promise-in-promise-methods`: Remove broken autofix for `Promise.all()` ([#2386](sindresorhus/eslint-plugin-unicorn#2386)) [`8d28b6e`](sindresorhus/eslint-plugin-unicorn@8d28b6e) - `prefer-node-protocol`: Ignore Bun modules ([#2384](sindresorhus/eslint-plugin-unicorn#2384)) [`a45b24a`](sindresorhus/eslint-plugin-unicorn@a45b24a) - `no-negation-in-equality-check`: Ignore boolean type casting ([#2379](sindresorhus/eslint-plugin-unicorn#2379)) [`37e00dd`](sindresorhus/eslint-plugin-unicorn@37e00dd) ##### [v54.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v54.0.0) ##### New rules - [`no-negation-in-equality-check`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negation-in-equality-check.md) ([#2353](sindresorhus/eslint-plugin-unicorn#2353)) [`8957a03`](sindresorhus/eslint-plugin-unicorn@8957a03) ##### Breaking - `prefer-array-find`: Change [`checkFromLast`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-find.md#checkfromlast) default value to `true` ([#2367](sindresorhus/eslint-plugin-unicorn#2367)) [`a449af9`](sindresorhus/eslint-plugin-unicorn@a449af9) ##### Improvements - Add name to flat configs ([#2377](sindresorhus/eslint-plugin-unicorn#2377)) [`ac8536e`](sindresorhus/eslint-plugin-unicorn@ac8536e) - `prefer-array-some`: Check `Array#{findIndex,findLastIndex}()` ([#2370](sindresorhus/eslint-plugin-unicorn#2370)) [`10568ab`](sindresorhus/eslint-plugin-unicorn@10568ab) - `prefer-includes`: Check `.lastIndexOf()` ([#2368](sindresorhus/eslint-plugin-unicorn#2368)) [`d812ad1`](sindresorhus/eslint-plugin-unicorn@d812ad1) - `prefer-string-raw`: Ignore strings in Enums ([#2354](sindresorhus/eslint-plugin-unicorn#2354)) [`175ea04`](sindresorhus/eslint-plugin-unicorn@175ea04) ##### Fixes - Fix edge cases when add `new` to calls ([#2352](sindresorhus/eslint-plugin-unicorn#2352)) [`d8f8161`](sindresorhus/eslint-plugin-unicorn@d8f8161) ##### [v53.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v53.0.0) ##### New rules - [`consistent-empty-array-spread`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-empty-array-spread.md) ([#2349](sindresorhus/eslint-plugin-unicorn#2349)) [`8d7954c`](sindresorhus/eslint-plugin-unicorn@8d7954c) - [`prefer-string-raw`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-raw.md) ([#2339](sindresorhus/eslint-plugin-unicorn#2339)) [`4f1400a`](sindresorhus/eslint-plugin-unicorn@4f1400a) - [`no-invalid-fetch-options`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-fetch-options.md) ([#2338](sindresorhus/eslint-plugin-unicorn#2338)) [`342aafb`](sindresorhus/eslint-plugin-unicorn@342aafb) - [`no-magic-array-flat-depth`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-magic-array-flat-depth.md) ([#2335](sindresorhus/eslint-plugin-unicorn#2335)) [`bc17428`](sindresorhus/eslint-plugin-unicorn@bc17428) - [`prefer-structured-clone`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-structured-clone.md) ([#2329](sindresorhus/eslint-plugin-unicorn#2329)) [`497519e`](sindresorhus/eslint-plugin-unicorn@497519e) ##### Breaking - Require Node.js 18.18 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) ##### Meta - You can now [sponsor @fisker](https://github.com/sponsors/fisker) for his work on this project ([#2348](sindresorhus/eslint-plugin-unicorn#2348)) [`b82542d`](sindresorhus/eslint-plugin-unicorn@b82542d) ##### Improvements - Support ESLint 9 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) - `no-array-method-this-argument`: Check `Array.fromAsync()` ([#2330](sindresorhus/eslint-plugin-unicorn#2330)) [`99489b9`](sindresorhus/eslint-plugin-unicorn@99489b9) - `prefer-number-properties`: Add `checkNaN` option ([#2315](sindresorhus/eslint-plugin-unicorn#2315)) [`d30de50`](sindresorhus/eslint-plugin-unicorn@d30de50) - `template-indent`: Support member expression paths in `tags` and `functions` ([#2346](sindresorhus/eslint-plugin-unicorn#2346)) [`aabcf1d`](sindresorhus/eslint-plugin-unicorn@aabcf1d) - `prefer-number-properties`: Don't require by default for `Infinity`/`-Infinity` to be written as `Number.POSITIVE_INFINITY`/`Number.NEGATIVE_INFINITY` ([#2312](sindresorhus/eslint-plugin-unicorn#2312)) [`e0dfed2`](sindresorhus/eslint-plugin-unicorn@e0dfed2) - `escape-case`: Ignore `String.raw` ([#2342](sindresorhus/eslint-plugin-unicorn#2342)) [`45bd444`](sindresorhus/eslint-plugin-unicorn@45bd444) - `no-hex-escape`: Ignore `String.raw` ([#2343](sindresorhus/eslint-plugin-unicorn#2343)) [`cc02a7f`](sindresorhus/eslint-plugin-unicorn@cc02a7f) - `prefer-dom-node-dataset`: Ignore `await`ed `getAttribute` call ([#2334](sindresorhus/eslint-plugin-unicorn#2334)) [`45f23d5`](sindresorhus/eslint-plugin-unicorn@45f23d5) - `prevent-abbreviations`: Support non-ASCII filenames ([#2308](sindresorhus/eslint-plugin-unicorn#2308)) [`28762c8`](sindresorhus/eslint-plugin-unicorn@28762c8) - `throw-new-error`: Check all call expressions instead of just argument of `ThrowStatement` ([#2332](sindresorhus/eslint-plugin-unicorn#2332)) [`1626852`](sindresorhus/eslint-plugin-unicorn@1626852) ##### [v52.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v52.0.0) ##### New rules - [`no-single-promise-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-single-promise-in-promise-methods.md) ([#2258](sindresorhus/eslint-plugin-unicorn#2258)) [`8f0ee89`](sindresorhus/eslint-plugin-unicorn@8f0ee89) - [`no-await-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-await-in-promise-methods.md) ([#2259](sindresorhus/eslint-plugin-unicorn#2259)) [`a3be554`](sindresorhus/eslint-plugin-unicorn@a3be554) - [`no-anonymous-default-export`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-anonymous-default-export.md) ([#2273](sindresorhus/eslint-plugin-unicorn#2273)) [`c035216`](sindresorhus/eslint-plugin-unicorn@c035216) ##### Improvements - `filename-case`: Add option for multiple file extensions ([#2186](sindresorhus/eslint-plugin-unicorn#2186)) [`4594020`](sindresorhus/eslint-plugin-unicorn@4594020) - `import-style`: Support `node:` protocol ([#2297](sindresorhus/eslint-plugin-unicorn#2297)) [`c28a086`](sindresorhus/eslint-plugin-unicorn@c28a086) - `prefer-array-find`: Check `array.filter().at(0)` ([#2284](sindresorhus/eslint-plugin-unicorn#2284)) [`e6074fe`](sindresorhus/eslint-plugin-unicorn@e6074fe) - `prefer-prototype-methods`: Check `Object.prototype` methods from `globalThis` ([#2286](sindresorhus/eslint-plugin-unicorn#2286)) [`1792d33`](sindresorhus/eslint-plugin-unicorn@1792d33) - `no-array-callback-reference`: Check logical expressions and check ternaries deeply ([#2289](sindresorhus/eslint-plugin-unicorn#2289)) [`231529a`](sindresorhus/eslint-plugin-unicorn@231529a) ##### Fixes - `prefer-spread`: Fix it to not report on optional chaining ([#2304](sindresorhus/eslint-plugin-unicorn#2304)) [`df1ff1c`](sindresorhus/eslint-plugin-unicorn@df1ff1c) - `no-anonymous-default-export`: Uppercase class name ([#2282](sindresorhus/eslint-plugin-unicorn#2282)) [`5ce4169`](sindresorhus/eslint-plugin-unicorn@5ce4169) ##### [v51.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.1) - `prefer-node-protocol`: Fix false positive on `bun:*` modules ([#2272](sindresorhus/eslint-plugin-unicorn#2272)) [`43fc638`](sindresorhus/eslint-plugin-unicorn@43fc638) ##### [v51.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.0) ##### Breaking - `consistent-destructuring`: Remove from `recommended` preset ([#2260](sindresorhus/eslint-plugin-unicorn#2260)) [`702d51b`](sindresorhus/eslint-plugin-unicorn@702d51b) ##### Improvements - `no-array-method-this-argument`: Check `Array.from()` ([#2262](sindresorhus/eslint-plugin-unicorn#2262)) [`797caee`](sindresorhus/eslint-plugin-unicorn@797caee) ##### Fixes - `no-thenable`: Fix crash on `{[Symbol.prototype]: 0}` ([#2248](sindresorhus/eslint-plugin-unicorn#2248)) [`3c7d7c0`](sindresorhus/eslint-plugin-unicorn@3c7d7c0) - `prefer-prototype-methods`: Fix argument of `isMethodCall` ([#2247](sindresorhus/eslint-plugin-unicorn#2247)) [`3b504fa`](sindresorhus/eslint-plugin-unicorn@3b504fa) ##### [v50.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.1) ##### Fixes - `no-unnecessary-polyfills`: Fix missing dependency error ([#2242](sindresorhus/eslint-plugin-unicorn#2242)) [`3df1606`](sindresorhus/eslint-plugin-unicorn@3df16068) ##### [v50.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.0) ##### New rules - [`no-unnecessary-polyfills`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-polyfills.md) ([#1717](sindresorhus/eslint-plugin-unicorn#1717)) [`6788d86`](sindresorhus/eslint-plugin-unicorn@6788d86) ##### Improvements - Support ESLint's new config system ([#1886](sindresorhus/eslint-plugin-unicorn#1886)) [`65711f9`](sindresorhus/eslint-plugin-unicorn@65711f9) - `no-useless-undefined`: Add `checkArrowFunctionBody` option ([#2232](sindresorhus/eslint-plugin-unicorn#2232)) [`9d7048c`](sindresorhus/eslint-plugin-unicorn@9d7048c) - `prefer-negative-index`: Check `TypedArray#subarray()` ([#2237](sindresorhus/eslint-plugin-unicorn#2237)) [`6708a30`](sindresorhus/eslint-plugin-unicorn@6708a30) - `no-useless-undefined`: Ignore React state setters ([#2223](sindresorhus/eslint-plugin-unicorn#2223)) [`42881ba`](sindresorhus/eslint-plugin-unicorn@42881ba) - `prefer-module`: Allow `module` as TSTypeParameter name ([#2213](sindresorhus/eslint-plugin-unicorn#2213)) [`8f61f7c`](sindresorhus/eslint-plugin-unicorn@8f61f7c) ##### Fixes - `string-content`: Fix JSX autofix for newlines, etc. ([#2222](sindresorhus/eslint-plugin-unicorn#2222)) [`b95e75e`](sindresorhus/eslint-plugin-unicorn@b95e75e)
##### [v55.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v55.0.0) ##### New rules - [`no-length-as-slice-end`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-length-as-slice-end.md) ([#2400](sindresorhus/eslint-plugin-unicorn#2400)) [`3c33820`](sindresorhus/eslint-plugin-unicorn@3c33820) ##### Improvements - Add TypeScript types ([#2382](sindresorhus/eslint-plugin-unicorn#2382)) [`68e0f13`](sindresorhus/eslint-plugin-unicorn@68e0f13) ##### Fixes - `no-single-promise-in-promise-methods`: Remove broken autofix for `Promise.all()` ([#2386](sindresorhus/eslint-plugin-unicorn#2386)) [`8d28b6e`](sindresorhus/eslint-plugin-unicorn@8d28b6e) - `prefer-node-protocol`: Ignore Bun modules ([#2384](sindresorhus/eslint-plugin-unicorn#2384)) [`a45b24a`](sindresorhus/eslint-plugin-unicorn@a45b24a) - `no-negation-in-equality-check`: Ignore boolean type casting ([#2379](sindresorhus/eslint-plugin-unicorn#2379)) [`37e00dd`](sindresorhus/eslint-plugin-unicorn@37e00dd) ##### [v54.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v54.0.0) ##### New rules - [`no-negation-in-equality-check`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negation-in-equality-check.md) ([#2353](sindresorhus/eslint-plugin-unicorn#2353)) [`8957a03`](sindresorhus/eslint-plugin-unicorn@8957a03) ##### Breaking - `prefer-array-find`: Change [`checkFromLast`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-find.md#checkfromlast) default value to `true` ([#2367](sindresorhus/eslint-plugin-unicorn#2367)) [`a449af9`](sindresorhus/eslint-plugin-unicorn@a449af9) ##### Improvements - Add name to flat configs ([#2377](sindresorhus/eslint-plugin-unicorn#2377)) [`ac8536e`](sindresorhus/eslint-plugin-unicorn@ac8536e) - `prefer-array-some`: Check `Array#{findIndex,findLastIndex}()` ([#2370](sindresorhus/eslint-plugin-unicorn#2370)) [`10568ab`](sindresorhus/eslint-plugin-unicorn@10568ab) - `prefer-includes`: Check `.lastIndexOf()` ([#2368](sindresorhus/eslint-plugin-unicorn#2368)) [`d812ad1`](sindresorhus/eslint-plugin-unicorn@d812ad1) - `prefer-string-raw`: Ignore strings in Enums ([#2354](sindresorhus/eslint-plugin-unicorn#2354)) [`175ea04`](sindresorhus/eslint-plugin-unicorn@175ea04) ##### Fixes - Fix edge cases when add `new` to calls ([#2352](sindresorhus/eslint-plugin-unicorn#2352)) [`d8f8161`](sindresorhus/eslint-plugin-unicorn@d8f8161) ##### [v53.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v53.0.0) ##### New rules - [`consistent-empty-array-spread`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-empty-array-spread.md) ([#2349](sindresorhus/eslint-plugin-unicorn#2349)) [`8d7954c`](sindresorhus/eslint-plugin-unicorn@8d7954c) - [`prefer-string-raw`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-raw.md) ([#2339](sindresorhus/eslint-plugin-unicorn#2339)) [`4f1400a`](sindresorhus/eslint-plugin-unicorn@4f1400a) - [`no-invalid-fetch-options`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-fetch-options.md) ([#2338](sindresorhus/eslint-plugin-unicorn#2338)) [`342aafb`](sindresorhus/eslint-plugin-unicorn@342aafb) - [`no-magic-array-flat-depth`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-magic-array-flat-depth.md) ([#2335](sindresorhus/eslint-plugin-unicorn#2335)) [`bc17428`](sindresorhus/eslint-plugin-unicorn@bc17428) - [`prefer-structured-clone`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-structured-clone.md) ([#2329](sindresorhus/eslint-plugin-unicorn#2329)) [`497519e`](sindresorhus/eslint-plugin-unicorn@497519e) ##### Breaking - Require Node.js 18.18 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) ##### Meta - You can now [sponsor @fisker](https://github.com/sponsors/fisker) for his work on this project ([#2348](sindresorhus/eslint-plugin-unicorn#2348)) [`b82542d`](sindresorhus/eslint-plugin-unicorn@b82542d) ##### Improvements - Support ESLint 9 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) - `no-array-method-this-argument`: Check `Array.fromAsync()` ([#2330](sindresorhus/eslint-plugin-unicorn#2330)) [`99489b9`](sindresorhus/eslint-plugin-unicorn@99489b9) - `prefer-number-properties`: Add `checkNaN` option ([#2315](sindresorhus/eslint-plugin-unicorn#2315)) [`d30de50`](sindresorhus/eslint-plugin-unicorn@d30de50) - `template-indent`: Support member expression paths in `tags` and `functions` ([#2346](sindresorhus/eslint-plugin-unicorn#2346)) [`aabcf1d`](sindresorhus/eslint-plugin-unicorn@aabcf1d) - `prefer-number-properties`: Don't require by default for `Infinity`/`-Infinity` to be written as `Number.POSITIVE_INFINITY`/`Number.NEGATIVE_INFINITY` ([#2312](sindresorhus/eslint-plugin-unicorn#2312)) [`e0dfed2`](sindresorhus/eslint-plugin-unicorn@e0dfed2) - `escape-case`: Ignore `String.raw` ([#2342](sindresorhus/eslint-plugin-unicorn#2342)) [`45bd444`](sindresorhus/eslint-plugin-unicorn@45bd444) - `no-hex-escape`: Ignore `String.raw` ([#2343](sindresorhus/eslint-plugin-unicorn#2343)) [`cc02a7f`](sindresorhus/eslint-plugin-unicorn@cc02a7f) - `prefer-dom-node-dataset`: Ignore `await`ed `getAttribute` call ([#2334](sindresorhus/eslint-plugin-unicorn#2334)) [`45f23d5`](sindresorhus/eslint-plugin-unicorn@45f23d5) - `prevent-abbreviations`: Support non-ASCII filenames ([#2308](sindresorhus/eslint-plugin-unicorn#2308)) [`28762c8`](sindresorhus/eslint-plugin-unicorn@28762c8) - `throw-new-error`: Check all call expressions instead of just argument of `ThrowStatement` ([#2332](sindresorhus/eslint-plugin-unicorn#2332)) [`1626852`](sindresorhus/eslint-plugin-unicorn@1626852) ##### [v52.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v52.0.0) ##### New rules - [`no-single-promise-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-single-promise-in-promise-methods.md) ([#2258](sindresorhus/eslint-plugin-unicorn#2258)) [`8f0ee89`](sindresorhus/eslint-plugin-unicorn@8f0ee89) - [`no-await-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-await-in-promise-methods.md) ([#2259](sindresorhus/eslint-plugin-unicorn#2259)) [`a3be554`](sindresorhus/eslint-plugin-unicorn@a3be554) - [`no-anonymous-default-export`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-anonymous-default-export.md) ([#2273](sindresorhus/eslint-plugin-unicorn#2273)) [`c035216`](sindresorhus/eslint-plugin-unicorn@c035216) ##### Improvements - `filename-case`: Add option for multiple file extensions ([#2186](sindresorhus/eslint-plugin-unicorn#2186)) [`4594020`](sindresorhus/eslint-plugin-unicorn@4594020) - `import-style`: Support `node:` protocol ([#2297](sindresorhus/eslint-plugin-unicorn#2297)) [`c28a086`](sindresorhus/eslint-plugin-unicorn@c28a086) - `prefer-array-find`: Check `array.filter().at(0)` ([#2284](sindresorhus/eslint-plugin-unicorn#2284)) [`e6074fe`](sindresorhus/eslint-plugin-unicorn@e6074fe) - `prefer-prototype-methods`: Check `Object.prototype` methods from `globalThis` ([#2286](sindresorhus/eslint-plugin-unicorn#2286)) [`1792d33`](sindresorhus/eslint-plugin-unicorn@1792d33) - `no-array-callback-reference`: Check logical expressions and check ternaries deeply ([#2289](sindresorhus/eslint-plugin-unicorn#2289)) [`231529a`](sindresorhus/eslint-plugin-unicorn@231529a) ##### Fixes - `prefer-spread`: Fix it to not report on optional chaining ([#2304](sindresorhus/eslint-plugin-unicorn#2304)) [`df1ff1c`](sindresorhus/eslint-plugin-unicorn@df1ff1c) - `no-anonymous-default-export`: Uppercase class name ([#2282](sindresorhus/eslint-plugin-unicorn#2282)) [`5ce4169`](sindresorhus/eslint-plugin-unicorn@5ce4169) ##### [v51.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.1) - `prefer-node-protocol`: Fix false positive on `bun:*` modules ([#2272](sindresorhus/eslint-plugin-unicorn#2272)) [`43fc638`](sindresorhus/eslint-plugin-unicorn@43fc638) ##### [v51.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.0) ##### Breaking - `consistent-destructuring`: Remove from `recommended` preset ([#2260](sindresorhus/eslint-plugin-unicorn#2260)) [`702d51b`](sindresorhus/eslint-plugin-unicorn@702d51b) ##### Improvements - `no-array-method-this-argument`: Check `Array.from()` ([#2262](sindresorhus/eslint-plugin-unicorn#2262)) [`797caee`](sindresorhus/eslint-plugin-unicorn@797caee) ##### Fixes - `no-thenable`: Fix crash on `{[Symbol.prototype]: 0}` ([#2248](sindresorhus/eslint-plugin-unicorn#2248)) [`3c7d7c0`](sindresorhus/eslint-plugin-unicorn@3c7d7c0) - `prefer-prototype-methods`: Fix argument of `isMethodCall` ([#2247](sindresorhus/eslint-plugin-unicorn#2247)) [`3b504fa`](sindresorhus/eslint-plugin-unicorn@3b504fa) ##### [v50.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.1) ##### Fixes - `no-unnecessary-polyfills`: Fix missing dependency error ([#2242](sindresorhus/eslint-plugin-unicorn#2242)) [`3df1606`](sindresorhus/eslint-plugin-unicorn@3df16068) ##### [v50.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.0) ##### New rules - [`no-unnecessary-polyfills`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-polyfills.md) ([#1717](sindresorhus/eslint-plugin-unicorn#1717)) [`6788d86`](sindresorhus/eslint-plugin-unicorn@6788d86) ##### Improvements - Support ESLint's new config system ([#1886](sindresorhus/eslint-plugin-unicorn#1886)) [`65711f9`](sindresorhus/eslint-plugin-unicorn@65711f9) - `no-useless-undefined`: Add `checkArrowFunctionBody` option ([#2232](sindresorhus/eslint-plugin-unicorn#2232)) [`9d7048c`](sindresorhus/eslint-plugin-unicorn@9d7048c) - `prefer-negative-index`: Check `TypedArray#subarray()` ([#2237](sindresorhus/eslint-plugin-unicorn#2237)) [`6708a30`](sindresorhus/eslint-plugin-unicorn@6708a30) - `no-useless-undefined`: Ignore React state setters ([#2223](sindresorhus/eslint-plugin-unicorn#2223)) [`42881ba`](sindresorhus/eslint-plugin-unicorn@42881ba) - `prefer-module`: Allow `module` as TSTypeParameter name ([#2213](sindresorhus/eslint-plugin-unicorn#2213)) [`8f61f7c`](sindresorhus/eslint-plugin-unicorn@8f61f7c) ##### Fixes - `string-content`: Fix JSX autofix for newlines, etc. ([#2222](sindresorhus/eslint-plugin-unicorn#2222)) [`b95e75e`](sindresorhus/eslint-plugin-unicorn@b95e75e)
##### [v55.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v55.0.0) ##### New rules - [`no-length-as-slice-end`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-length-as-slice-end.md) ([#2400](sindresorhus/eslint-plugin-unicorn#2400)) [`3c33820`](sindresorhus/eslint-plugin-unicorn@3c33820) ##### Improvements - Add TypeScript types ([#2382](sindresorhus/eslint-plugin-unicorn#2382)) [`68e0f13`](sindresorhus/eslint-plugin-unicorn@68e0f13) ##### Fixes - `no-single-promise-in-promise-methods`: Remove broken autofix for `Promise.all()` ([#2386](sindresorhus/eslint-plugin-unicorn#2386)) [`8d28b6e`](sindresorhus/eslint-plugin-unicorn@8d28b6e) - `prefer-node-protocol`: Ignore Bun modules ([#2384](sindresorhus/eslint-plugin-unicorn#2384)) [`a45b24a`](sindresorhus/eslint-plugin-unicorn@a45b24a) - `no-negation-in-equality-check`: Ignore boolean type casting ([#2379](sindresorhus/eslint-plugin-unicorn#2379)) [`37e00dd`](sindresorhus/eslint-plugin-unicorn@37e00dd) ##### [v54.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v54.0.0) ##### New rules - [`no-negation-in-equality-check`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negation-in-equality-check.md) ([#2353](sindresorhus/eslint-plugin-unicorn#2353)) [`8957a03`](sindresorhus/eslint-plugin-unicorn@8957a03) ##### Breaking - `prefer-array-find`: Change [`checkFromLast`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-find.md#checkfromlast) default value to `true` ([#2367](sindresorhus/eslint-plugin-unicorn#2367)) [`a449af9`](sindresorhus/eslint-plugin-unicorn@a449af9) ##### Improvements - Add name to flat configs ([#2377](sindresorhus/eslint-plugin-unicorn#2377)) [`ac8536e`](sindresorhus/eslint-plugin-unicorn@ac8536e) - `prefer-array-some`: Check `Array#{findIndex,findLastIndex}()` ([#2370](sindresorhus/eslint-plugin-unicorn#2370)) [`10568ab`](sindresorhus/eslint-plugin-unicorn@10568ab) - `prefer-includes`: Check `.lastIndexOf()` ([#2368](sindresorhus/eslint-plugin-unicorn#2368)) [`d812ad1`](sindresorhus/eslint-plugin-unicorn@d812ad1) - `prefer-string-raw`: Ignore strings in Enums ([#2354](sindresorhus/eslint-plugin-unicorn#2354)) [`175ea04`](sindresorhus/eslint-plugin-unicorn@175ea04) ##### Fixes - Fix edge cases when add `new` to calls ([#2352](sindresorhus/eslint-plugin-unicorn#2352)) [`d8f8161`](sindresorhus/eslint-plugin-unicorn@d8f8161) ##### [v53.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v53.0.0) ##### New rules - [`consistent-empty-array-spread`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-empty-array-spread.md) ([#2349](sindresorhus/eslint-plugin-unicorn#2349)) [`8d7954c`](sindresorhus/eslint-plugin-unicorn@8d7954c) - [`prefer-string-raw`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-raw.md) ([#2339](sindresorhus/eslint-plugin-unicorn#2339)) [`4f1400a`](sindresorhus/eslint-plugin-unicorn@4f1400a) - [`no-invalid-fetch-options`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-fetch-options.md) ([#2338](sindresorhus/eslint-plugin-unicorn#2338)) [`342aafb`](sindresorhus/eslint-plugin-unicorn@342aafb) - [`no-magic-array-flat-depth`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-magic-array-flat-depth.md) ([#2335](sindresorhus/eslint-plugin-unicorn#2335)) [`bc17428`](sindresorhus/eslint-plugin-unicorn@bc17428) - [`prefer-structured-clone`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-structured-clone.md) ([#2329](sindresorhus/eslint-plugin-unicorn#2329)) [`497519e`](sindresorhus/eslint-plugin-unicorn@497519e) ##### Breaking - Require Node.js 18.18 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) ##### Meta - You can now [sponsor @fisker](https://github.com/sponsors/fisker) for his work on this project ([#2348](sindresorhus/eslint-plugin-unicorn#2348)) [`b82542d`](sindresorhus/eslint-plugin-unicorn@b82542d) ##### Improvements - Support ESLint 9 ([#2250](sindresorhus/eslint-plugin-unicorn#2250)) [`598f57b`](sindresorhus/eslint-plugin-unicorn@598f57b) - `no-array-method-this-argument`: Check `Array.fromAsync()` ([#2330](sindresorhus/eslint-plugin-unicorn#2330)) [`99489b9`](sindresorhus/eslint-plugin-unicorn@99489b9) - `prefer-number-properties`: Add `checkNaN` option ([#2315](sindresorhus/eslint-plugin-unicorn#2315)) [`d30de50`](sindresorhus/eslint-plugin-unicorn@d30de50) - `template-indent`: Support member expression paths in `tags` and `functions` ([#2346](sindresorhus/eslint-plugin-unicorn#2346)) [`aabcf1d`](sindresorhus/eslint-plugin-unicorn@aabcf1d) - `prefer-number-properties`: Don't require by default for `Infinity`/`-Infinity` to be written as `Number.POSITIVE_INFINITY`/`Number.NEGATIVE_INFINITY` ([#2312](sindresorhus/eslint-plugin-unicorn#2312)) [`e0dfed2`](sindresorhus/eslint-plugin-unicorn@e0dfed2) - `escape-case`: Ignore `String.raw` ([#2342](sindresorhus/eslint-plugin-unicorn#2342)) [`45bd444`](sindresorhus/eslint-plugin-unicorn@45bd444) - `no-hex-escape`: Ignore `String.raw` ([#2343](sindresorhus/eslint-plugin-unicorn#2343)) [`cc02a7f`](sindresorhus/eslint-plugin-unicorn@cc02a7f) - `prefer-dom-node-dataset`: Ignore `await`ed `getAttribute` call ([#2334](sindresorhus/eslint-plugin-unicorn#2334)) [`45f23d5`](sindresorhus/eslint-plugin-unicorn@45f23d5) - `prevent-abbreviations`: Support non-ASCII filenames ([#2308](sindresorhus/eslint-plugin-unicorn#2308)) [`28762c8`](sindresorhus/eslint-plugin-unicorn@28762c8) - `throw-new-error`: Check all call expressions instead of just argument of `ThrowStatement` ([#2332](sindresorhus/eslint-plugin-unicorn#2332)) [`1626852`](sindresorhus/eslint-plugin-unicorn@1626852) ##### [v52.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v52.0.0) ##### New rules - [`no-single-promise-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-single-promise-in-promise-methods.md) ([#2258](sindresorhus/eslint-plugin-unicorn#2258)) [`8f0ee89`](sindresorhus/eslint-plugin-unicorn@8f0ee89) - [`no-await-in-promise-methods`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-await-in-promise-methods.md) ([#2259](sindresorhus/eslint-plugin-unicorn#2259)) [`a3be554`](sindresorhus/eslint-plugin-unicorn@a3be554) - [`no-anonymous-default-export`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-anonymous-default-export.md) ([#2273](sindresorhus/eslint-plugin-unicorn#2273)) [`c035216`](sindresorhus/eslint-plugin-unicorn@c035216) ##### Improvements - `filename-case`: Add option for multiple file extensions ([#2186](sindresorhus/eslint-plugin-unicorn#2186)) [`4594020`](sindresorhus/eslint-plugin-unicorn@4594020) - `import-style`: Support `node:` protocol ([#2297](sindresorhus/eslint-plugin-unicorn#2297)) [`c28a086`](sindresorhus/eslint-plugin-unicorn@c28a086) - `prefer-array-find`: Check `array.filter().at(0)` ([#2284](sindresorhus/eslint-plugin-unicorn#2284)) [`e6074fe`](sindresorhus/eslint-plugin-unicorn@e6074fe) - `prefer-prototype-methods`: Check `Object.prototype` methods from `globalThis` ([#2286](sindresorhus/eslint-plugin-unicorn#2286)) [`1792d33`](sindresorhus/eslint-plugin-unicorn@1792d33) - `no-array-callback-reference`: Check logical expressions and check ternaries deeply ([#2289](sindresorhus/eslint-plugin-unicorn#2289)) [`231529a`](sindresorhus/eslint-plugin-unicorn@231529a) ##### Fixes - `prefer-spread`: Fix it to not report on optional chaining ([#2304](sindresorhus/eslint-plugin-unicorn#2304)) [`df1ff1c`](sindresorhus/eslint-plugin-unicorn@df1ff1c) - `no-anonymous-default-export`: Uppercase class name ([#2282](sindresorhus/eslint-plugin-unicorn#2282)) [`5ce4169`](sindresorhus/eslint-plugin-unicorn@5ce4169) ##### [v51.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.1) - `prefer-node-protocol`: Fix false positive on `bun:*` modules ([#2272](sindresorhus/eslint-plugin-unicorn#2272)) [`43fc638`](sindresorhus/eslint-plugin-unicorn@43fc638) ##### [v51.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.0) ##### Breaking - `consistent-destructuring`: Remove from `recommended` preset ([#2260](sindresorhus/eslint-plugin-unicorn#2260)) [`702d51b`](sindresorhus/eslint-plugin-unicorn@702d51b) ##### Improvements - `no-array-method-this-argument`: Check `Array.from()` ([#2262](sindresorhus/eslint-plugin-unicorn#2262)) [`797caee`](sindresorhus/eslint-plugin-unicorn@797caee) ##### Fixes - `no-thenable`: Fix crash on `{[Symbol.prototype]: 0}` ([#2248](sindresorhus/eslint-plugin-unicorn#2248)) [`3c7d7c0`](sindresorhus/eslint-plugin-unicorn@3c7d7c0) - `prefer-prototype-methods`: Fix argument of `isMethodCall` ([#2247](sindresorhus/eslint-plugin-unicorn#2247)) [`3b504fa`](sindresorhus/eslint-plugin-unicorn@3b504fa) ##### [v50.0.1](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.1) ##### Fixes - `no-unnecessary-polyfills`: Fix missing dependency error ([#2242](sindresorhus/eslint-plugin-unicorn#2242)) [`3df1606`](sindresorhus/eslint-plugin-unicorn@3df16068) ##### [v50.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.0) ##### New rules - [`no-unnecessary-polyfills`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-polyfills.md) ([#1717](sindresorhus/eslint-plugin-unicorn#1717)) [`6788d86`](sindresorhus/eslint-plugin-unicorn@6788d86) ##### Improvements - Support ESLint's new config system ([#1886](sindresorhus/eslint-plugin-unicorn#1886)) [`65711f9`](sindresorhus/eslint-plugin-unicorn@65711f9) - `no-useless-undefined`: Add `checkArrowFunctionBody` option ([#2232](sindresorhus/eslint-plugin-unicorn#2232)) [`9d7048c`](sindresorhus/eslint-plugin-unicorn@9d7048c) - `prefer-negative-index`: Check `TypedArray#subarray()` ([#2237](sindresorhus/eslint-plugin-unicorn#2237)) [`6708a30`](sindresorhus/eslint-plugin-unicorn@6708a30) - `no-useless-undefined`: Ignore React state setters ([#2223](sindresorhus/eslint-plugin-unicorn#2223)) [`42881ba`](sindresorhus/eslint-plugin-unicorn@42881ba) - `prefer-module`: Allow `module` as TSTypeParameter name ([#2213](sindresorhus/eslint-plugin-unicorn#2213)) [`8f61f7c`](sindresorhus/eslint-plugin-unicorn@8f61f7c) ##### Fixes - `string-content`: Fix JSX autofix for newlines, etc. ([#2222](sindresorhus/eslint-plugin-unicorn#2222)) [`b95e75e`](sindresorhus/eslint-plugin-unicorn@b95e75e)
Fixes #2256