-
-
Notifications
You must be signed in to change notification settings - Fork 399
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
prevent-abbreviations
- non-ASCII characters ignored in filenames
#2308
prevent-abbreviations
- non-ASCII characters ignored in filenames
#2308
Conversation
Here is an explanation of the updated regular expression:
|
The solution looks tricky to me, I prefer just ignore if non-ascii characters included. |
rules/prevent-abbreviations.js
Outdated
@@ -116,7 +116,7 @@ const getNameReplacements = (name, options, limit = 3) => { | |||
} | |||
|
|||
// Split words | |||
const words = name.split(/(?=[^a-z])|(?<=[^A-Za-z])/).filter(Boolean); | |||
const words = name.split(/(?=\P{Ll})|(?<=\P{L})/u).filter(Boolean); |
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.
Use the verbose names (Lowercase_Letter
), for readability.
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.
Updated to include the verbose names
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.
We should make a rule for it 😄
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.
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'll work on it actually
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.
Note: the proposal is on another repo.
@fisker Tricky how? The solution looks fine to me. |
6295fde
to
411f6e3
Compare
My explanation of the regex wasn't that clear. \P{Letter} is equivalent to [^a-zA-Z] but it includes non-ASCII characters |
In different languages, the latin letters can be used with other characters together to be a word, so the non-letter characters not a word boundary. For example, in Chinese, "B超" "T恤" are words. Similar in Japanese, I think. |
Can you please provide me a valid/invalid test case to see if this fix doesn't already account for that? |
I don't really have a case now. |
@fisker you're saying that |
I don't think Chinese characters are "letter"s, but I can be wrong. |
That's right, it's why quoted "one-letter word". The rule counts characters as "letters" but not all writing systems have letters. https://en.wikipedia.org/wiki/Writing_system#Basic_terminology The rule is based on the idea that no concept can be defined in 2 characters because in most languages words are longer than that. |
Probably not helpful here, but: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter |
I'll explore a solution using the segmenter. Looks promising |
I added this code to the valid tests and it is passing with the current implementation? Is that the correct behavior? |
##### [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 #2292