Breaking
- Require Node.js 22 (#3090) 93164fb
- Require ESLint 10.4 (#3090) 93164fb
- Rename
no-array-for-eachrule tono-for-each(#3216) b87c8a9 - Drop
no-hex-escaperule (#3202) d68b09e- Replaced by
prefer-unicode-code-point-escapes, which covers more cases.
- Replaced by
New rules
class-reference-in-static-methods(#3154) bbeb92fcomment-content(#3104) d14d0fdconsistent-class-member-order(#3226) d116a6bconsistent-export-decorator-position(#3175) 9302e8dconsistent-function-style(#3137) a86fe5econsistent-optional-chaining(#3195) c07bf4eexplicit-timer-delay(#2814) 29ae4ebid-match(#3109) d39bfa3max-nested-calls(#3183) 0763b75no-asterisk-prefix-in-documentation-comments(#3191) 4a95ff6no-break-in-nested-loop(#3148) 41648c1no-computed-property-existence-check(#3151) af0e3c4no-confusing-array-with(#3178) 95a748bno-declarations-before-early-exit(#3139) f7241c8no-duplicate-loops(#3142) 745e9edno-error-property-assignment(#3114) bf9d72eno-global-object-property-assignment(#3136) b03927eno-incorrect-template-string-interpolation(#3162) 32380f9no-mismatched-map-key(#3192) 154049fno-negated-array-predicate(#3203) 6ba7506no-negated-comparison(#3149) 5733173no-object-methods-with-collections(#3194) c9ffbf9no-optional-chaining-on-undeclared-variable(#3223) 74be15eno-redundant-comparison(#3068) 115837dno-return-array-push(#3098) b8735b0no-subtraction-comparison(#3123) 178184bno-top-level-side-effects(#3184) 442fba3no-undeclared-class-members(#3153) 93cbfc0no-unnecessary-global-this(#3161) a9e2c65no-unnecessary-splice(#3124) 646ad09no-unreadable-new-expression(#3113) 6ae57a9no-unreadable-object-destructuring(#3160) 1696abdno-unsafe-buffer-conversion(#3174) a85f2c6no-unsafe-dom-html(#3218) c70380ano-unsafe-property-key(#3227) d1b6ba7no-unsafe-string-replacement(#3120) e097996no-useless-boolean-cast(#3097) b55d2f8no-useless-concat(#3146) 5a88edeno-useless-else(#3152) a99a914no-useless-recursion(#3150) d7ecd39no-useless-template-literals(#3225) b752111prefer-add-event-listener-options(#3169) 347abffprefer-array-from-map(#3158) 584d39dprefer-await(#3147) 15632b6prefer-direct-iteration(#3107) 0e2fcfdprefer-dispose(#3085) ce29c25prefer-dom-node-html-methods(#3119) 1887853prefer-early-return(#3131) eaca182prefer-global-number-constants(#3127) 3c7c767prefer-identifier-import-export-specifiers(#3134) b222909prefer-iterable-in-constructor(#3129) 5d76a2dprefer-iterator-to-array(#3094) 21eb45bprefer-location-assign(#3132) a064465prefer-minimal-ternary(#3222) 9c952e0prefer-number-coercion(#3105) 2e6696dprefer-number-is-safe-integer(#3073) 55d9f7eprefer-object-define-properties(#3189) ced7bcdprefer-object-destructuring-defaults(#3210) d52f71bprefer-object-iterable-methods(#3156) 825fbc0prefer-path2d(#3187) a131574prefer-private-class-fields(#3116) 4b2273eprefer-scoped-selector(#3099) 2c6eca5prefer-short-arrow-method(#3118) 745cd27prefer-simple-sort-comparator(#3081) 72d12e5prefer-single-array-predicate(#3164) cd42516prefer-single-object-destructuring(#3163) c08a8fbprefer-smaller-scope(#3206) 4374b0eprefer-temporal(#3075) 74c55afprefer-type-literal-last(#3121) 9967938prefer-uint8array-base64(#3086) 254e2e0prefer-unicode-code-point-escapes(#3202) d68b09eprefer-url-href(#3186) 790bbfdrequire-array-sort-compare(#3166) ed51c89require-proxy-trap-boolean-return(#3159) 54ccecb
Improvements
- Harden some rules with type info (#3228) 1c85dd1
- Harden array checks (#3145) 6b2de0a
- Improve type detection in some rules (#3197) 3cb9d4b
- Improve comment handling (#3133) d698a60
- Expand language support for additional rules (#3176) fec53a5
- Support non-JavaScript files in more rules (#3079) 52c1774
consistent-compound-words: AllownewLineword (#3117) 949e56bconsistent-compound-words: Improve performance (#3185) fc4e29aconsistent-destructuring: Stop expanding destructuring (#3115) 65afb79consistent-function-scoping: Track JSX references (#3101) e0130c2expiring-todo-comments: Addpeer:condition (#3088) 93e9a0cexpiring-todo-comments: Simplify report messages (#3215) d0945e0explicit-length-check: Detectlength <= 0as a zero-length check (#3071) ea471f1filename-case: AddcamelCaseWithAcronymscase (#3168) 1a7126efilename-case: Allow acronyms in pascal case (#3125) b70cb64import-style: Supportnode:builtins (#3207) abf805fno-empty-file: Support all file extensions (#3077) c4fa5b1no-for-each: Improve autofix reliability (#3213) 0116e32no-for-loop: Support cached length loops (#3190) c3f79c8no-invalid-argument-count: Handle TypeScript wrappers (#3179) 2639a3bno-invalid-file-input-accept: Normalize legacy MIME types (#3093) 27104c0no-single-promise-in-promise-methods: AutofixPromise.allfirst element (#3112) 50b5658no-unnecessary-polyfills: Respect Browserslist config (#3122) 8b3660ano-unused-properties: Support inline TypeScript object type literals (#3204) ec77d4eno-useless-fallback-in-spread: Support ternary (#3083) 0b6c452no-useless-spread: Check object spread inObject.assign()(#3188) c8f2bf5no-useless-switch-case: Allowcase nullandcase undefinedin TypeScript files beforedefault(#3128) 556b6a9no-useless-undefined: Handle guarded indexed access (#3201) 4cd318dprefer-array-flat: Stop reporting plainconcatnormalization (#3106) b4e5ce2prefer-array-flat-map: Support.filter(…).flatMap(…)(#3199) a14375bprefer-array-from-map: Supportfor-ofarray mapping (#3220) 174d5a5prefer-at: Check single-character substring (#3100) 6a33b04prefer-at: Preferat()for string indexing (#3200) 2ac7dd1prefer-early-return: Add autofix (#3212) 0f0ac96prefer-includes: Simplify boolean array predicates (#3096) 950e137prefer-math-trunc: CheckparseInt(#3108) c9632b9prefer-modern-dom-apis: Handle.replaceChildren()(#3170) 27daf8eprefer-number-is-safe-integer: Check legacy integer patterns (#3214) 4e50131prefer-number-properties: Auto-fixisNaN/isFinitewhen the argument is a number (#3082) 5e27e8fprefer-object-from-entries: Check for-of loops (#3221) 2123d95prefer-regexp-test: Improve TypeScript support (#3193) a8338abprefer-regexp-test: SupportString#search()checks (#3089) 7cef013prefer-spread: Handle trivialfor...ofcopies (#3196) dd6e4a1prefer-spread: Improveconcat()array detection (#3171) 0f6dc8aprefer-spread: Stop checkingString#split('')(#3110) a4009b1prefer-string-replace-all: Allow more regex flags for string fixes (#3180) 19580d8prefer-string-starts-ends-with: DetectindexOf() === 0(#3087) 92b6d79prefer-ternary: Detectletdeclaration withifreassignment (#3084) 7c7e724prefer-ternary: Only report captured values (#3181) 6df473astring-content: Ignoresqltagged templates (#3143) 3796576switch-case-braces: Supportsingle-statementoption (#3182) f897537
Fixes
better-dom-traversing: Ignoreprops.children(#3177) 486d9b7consistent-function-scoping: Fix loop capture false positives (#3157) 522e188custom-error-definition: PreserveError#cause(#3092) f182d63max-nested-calls: Ignore JSX wrappers (#3209) 1e273ddno-array-callback-reference: Ignore non-array TypeScript receivers (#3130) 64dfda9no-array-method-this-argument: Fix false positives (#3219) 9aeec5eno-for-loop: Guard unsafe.entries()autofixes (#3211) d5f8a89no-useless-spread: Reduce false positives (#3167) 2c19771no-useless-undefined: Ignore TypeScript call arguments (#3095) 51a7fd6prefer-array-some: Ignore non-array find checks (#3208) 5d9dae2prefer-at: Ignore DOM collection receivers (#3102) 4db8f05prefer-global-this: Don't flagtypeofexistence checks (#3070) 2767382prefer-https: Ignore well-known XML namespace URIs (#3076) 40df180prefer-native-coercion-functions: Ignore type predicates (#3144) d86a467prefer-switch: Ignore literal discriminants (#3103) 512a534prefer-type-error: Don't flagtypeof x === 'undefined'existence checks (#3067) 3676ba1prevent-abbreviations: Ignoree2eanda11y(#3069) febc992switch-case-braces: Fix incorrect autofix with comment (#3172) 9368d98