Mikhail Baev
ae43c804e4
fix(linter/unicorn/prefer-single-call): remove duplicate fix status ( #28763 )
...
Noticed that `unicorn/prefer-single-call` rule declared both `pending`
and `fix` as its fix status, this PR removes `pending` and also changes
to `fix` to `conditional_fix` since the fix is skipped in 2 cases.
Also small change to `declare_oxc_lint` so that it rejects a second fix
capability
2026-11-03 15:04:12 +00:00
Mikhail Baev
848a4e7173
docs(linter): update fix metadata for tsgolint rules that already provide fixes ( #27408 )
...
updates fix metadata for tsgolint rules that provide fixes\suggestions:
- typescript/no-unnecessary-boolean-literal-compare -
[fix](https://github.com/oxc-project/tsgolint/blob/24b18b48c47b7ae0d84e21a0e974575026e27908/internal/rules/no_unnecessary_boolean_literal_compare/no_unnecessary_boolean_literal_compare.go#L191 )
- typescript/no-unnecessary-condition -
[conditional_suggestion](https://github.com/oxc-project/tsgolint/blob/24b18b48c47b7ae0d84e21a0e974575026e27908/internal/rules/no_unnecessary_condition/no_unnecessary_condition.go#L1397 )
- typescript/consistent-type-exports -
[fix](https://github.com/oxc-project/tsgolint/blob/24b18b48c47b7ae0d84e21a0e974575026e27908/internal/rules/consistent_type_exports/consistent_type_exports.go#L193 )
- typescript/prefer-readonly -
[fix](https://github.com/oxc-project/tsgolint/blob/24b18b48c47b7ae0d84e21a0e974575026e27908/internal/rules/prefer_readonly/prefer_readonly.go#L464 )
- typescript/dot-notation -
[conditional_fix](https://github.com/oxc-project/tsgolint/blob/24b18b48c47b7ae0d84e21a0e974575026e27908/internal/rules/dot_notation/dot_notation.go#L213 )
- typescript/prefer-string-starts-ends-with -
[conditional_fix](https://github.com/oxc-project/tsgolint/blob/24b18b48c47b7ae0d84e21a0e974575026e27908/internal/rules/prefer_string_starts_ends_with/prefer_string_starts_ends_with.go#L531 )
2026-10-07 13:36:07 +00:00
Mikhail Baev and Cameron
3c361a7fb5
feat(linter/unicorn/prefer-query-selector): add allowWithVariables option ( #27346 )
...
fixes #27344
---------
Signed-off-by: Cameron <cameron.clark@hey.com >
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-10-05 11:13:25 +00:00
Mikhail Baev
42dcfd234c
feat(linter/react/no-unescaped-entities): implement suggestion ( #27292 )
...
this PR implements suggestion for `react/no-unescaped-entities`, issue #1022
2026-10-04 11:02:27 +01:00
Mikhail Baev
cd4510d3f6
feat(linter/unicorn/no-useless-switch-case): implement suggestion ( #27245 )
...
this PR implements suggestion for `unicorn/no-useless-switch-case` rule.
Issue #684
2026-10-01 10:31:31 +01:00
Mikhail Baev
1a7c902a96
feat(linter/react/jsx-no-target-blank): implement suggestion ( #27181 )
...
this PR implements suggestion for `react/jsx-no-target-blank` rule. Used
all upstream tests.
issue #1022
2026-09-29 16:47:34 +01:00
Mikhail Baev
64f7ccdf5a
docs(linter): mark unsupported unicorn css rules ( #26734 )
...
Some new rules released in [v75.0.0](https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v75.0.0 )
require css parsing
unicorn issue #684
2026-09-17 17:23:04 +08:00
Mikhail Baev
23008981ef
feat(linter/unicorn/no-unreadable-iife): implement suggestion ( #26658 )
...
implements suggestion for `unicorn/no-unreadable-iife` rule, used
upstream tests. Issue #684
2026-09-15 11:45:27 +08:00
Mikhail Baev
1e90019ea7
fix(linter/typescript): mark no-unnecessary-type-parameters and prefer-find suggestions as implemented ( #26586 )
...
made a mistake in #24956 , suggestions for these 2 rules were already
implemented in tsgolint, so I should have added `suggestion`, not
`pending`
2026-09-13 06:50:01 +01:00
Mikhail Baev
562dd14e3d
fix(jsx-a11y/anchor-has-content): allow anchors passed as custom component props ( #26360 )
2026-09-06 10:54:29 +00:00
Mikhail Baev
60b945d61d
feat(linter/nextjs/no-typos): implement suggestion ( #26091 )
...
add suggestion for `nextjs/no-typos` rule, upstream rule rn doesnt
provide suggestion, but since we already have the matched suggestion, I
think it should be safe to implement
issue #1929
2026-08-26 08:41:18 +01:00
Mikhail Baev
70c3e35356
feat(linter/typescript/no-confusing-non-null-assertion): implement suggestion ( #26012 )
...
implements suggestion for `typescript/no-confusing-non-null-assertion`,
used tests from upstream. Issue #2180
2026-08-23 18:14:00 +01:00
Mikhail Baev
9b7394ed8b
feat(linter/typescript/no-empty-object-type): implement suggestion ( #25833 )
...
Implement suggestion for `typescript/no-empty-object-type` rule, issue
#2180 . Tests ported from
[upstream](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/tests/rules/no-empty-object-type.test.ts )
2026-08-18 08:18:48 +01:00
Mikhail Baev
1cbbcb7c3e
fix(linter/unicorn/prefer-string-replace-all): apply fixes in one pass ( #25709 )
2026-08-15 16:50:21 +01:00
Mikhail Baev
285820eed6
fix(linter/no-large-snapshots): precompile and document allowed snapshot matchers ( #25611 )
...
issue #23594
- Move regex compilation to configuration parsing to avoid recompiling
patterns for every snapshot entry
- Document the matching behavior of allowedSnapshots (first interpret as
regex, if not valid match as string)
- Fix a small typo where both example sections were labeled “incorrect"
- Replace manual config parsing with DefaultRuleConfig
2026-08-14 10:47:51 +01:00
Mikhail Baev
1be1e20c18
fix(linter/eslint/prefer-promise-reject-errors): report on spread arguments ( #25648 )
...
fixes #25620 . Matches upstream:
https://eslint.org/play/#eyJ0ZXh0IjoiXG5uZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdHNvbWVQcm9taXNlLmNhdGNoKCguLi5hcmdzKSA9PiB7XG5cdFx0cmVqZWN0KC4uLmFyZ3MpXG5cdH0pXG59KSIsIm9wdGlvbnMiOnsicnVsZXMiOnsibm8tbG9uZS1ibG9ja3MiOiJlcnJvciIsInByZWZlci1wcm9taXNlLXJlamVjdC1lcnJvcnMiOlsiZXJyb3IiXX0sImxhbmd1YWdlT3B0aW9ucyI6eyJwYXJzZXJPcHRpb25zIjp7ImVjbWFGZWF0dXJlcyI6eyJqc3giOnRydWV9fX19fQ==
2026-08-14 10:39:54 +01:00
Mikhail Baev
80e64c20f2
fix(linter/expect-expect): validate assertion regex ( #25504 )
...
this PR adds validation for regex for `jest/expect-expect` rule, issue
#23594 (issue tracks matches_assert_function_name as affecting
expect-expect, but the rule had moved its regex logic into its own
implementation, so it was missed by the earlier fix)
2026-08-12 10:10:49 +01:00
Mikhail Baev
c451a0ebcf
fix(linter/vitest): validate consistent-test-filename regex patterns ( #25408 )
...
adds validation for the regex patterns from #23594 , also replaced manual
config parsing with DefaultRuleConfig
2026-08-09 10:10:15 +01:00
Mikhail Baev
589e5fb576
fix(linter/eslint/no-param-reassign): validate ignorePropertyModificationsForRegex property ( #25346 )
2026-08-07 09:26:30 +01:00
Mikhail Baev
ccb8fe89db
feat(linter/jsdoc): implement no-blank-blocks rule ( #25207 )
...
this PR implements `jsdoc/no-blank-blocks` rule, issue #1170
2026-08-05 22:38:24 +01:00
Mikhail Baev
9573937df3
fix(linter/typescript): validate ban-ts-comment description_format ( #25320 )
...
adds validation for the `descriptionFormat` regex option from #23594 and
replaces manual config parsing with `DefaultRuleConfig`
2026-08-05 20:21:36 +01:00
Mikhail Baev
bdcd3dfc2f
docs(linter): mark redundant unicorn rules unsupported ( #25288 )
...
unicorn issue #684
2026-08-04 16:29:00 +01:00
Mikhail Baev
0b9f83c4f4
feat(linter/oxc/bad-char-at-comparison): expand coverage ( #25001 )
...
closes #24990 .
2026-08-01 19:28:53 +01:00
Mikhail Baev
5c0fa61ddb
fix(linter/eslint/no-warning-comments): unify config structs and remove manual options docs ( #25151 )
...
this PR unifies 2 config structs for `eslint/no-warning-comments` and
removes the manually written options doc, related issue: #14743 .
Doc after fix:
<img width="919" height="1295" alt="image"
src="https://github.com/user-attachments/assets/dab8f999-fffa-4a77-8d6d-39746cfa3860 "
/>
2026-08-01 19:26:30 +01:00
Mikhail Baev
f9097f893d
docs(linter): mark redundant unicorn rules unsupported ( #25124 )
...
2 rules covered by typescript type check, 1 rule covered by oxc rule
unicorn issue #684
2026-07-30 17:23:31 +01:00
Mikhail Baev
a5f3a0e45e
fix(linter): mark missing suggestions as pending ( #24956 )
...
found some rules that provide suggestions upstream but were missing the
`pending` status:
typescript/no-unnecessary-condition -
[upstream](https://github.com/typescript-eslint/typescript-eslint/blob/3b71948c6c5d6bbe0f96346b280fafaee467cc6b/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts )
typescript/no-unnecessary-type-conversion -
[upstream](https://github.com/typescript-eslint/typescript-eslint/blob/3b71948c6c5d6bbe0f96346b280fafaee467cc6b/packages/eslint-plugin/src/rules/no-unnecessary-type-conversion.ts )
typescript/no-unnecessary-type-parameters -
[upstream](https://github.com/typescript-eslint/typescript-eslint/blob/3b71948c6c5d6bbe0f96346b280fafaee467cc6b/packages/eslint-plugin/src/rules/no-unnecessary-type-parameters.ts )
typescript/prefer-find -
[upstream](https://github.com/typescript-eslint/typescript-eslint/blob/3b71948c6c5d6bbe0f96346b280fafaee467cc6b/packages/eslint-plugin/src/rules/prefer-find.ts )
eslint/no-unused-private-class-members -
[upstream](https://github.com/eslint/eslint/blob/d08629382b0a6aaa042823b796e5100e60053b54/lib/rules/no-unused-private-class-members.js )
eslint/prefer-named-capture-group -
[upstream](https://github.com/eslint/eslint/blob/d08629382b0a6aaa042823b796e5100e60053b54/lib/rules/prefer-named-capture-group.js )
unicorn/no-array-reduce -
[upstream](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/a33b1c1e207b37f5c6f4ea8f3e66dad9a9d1ad43/rules/no-array-reduce.js )
unicorn/no-unreadable-iife -
[upstream](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/a33b1c1e207b37f5c6f4ea8f3e66dad9a9d1ad43/rules/no-unreadable-iife.js )
2026-07-26 20:15:38 +01:00
Mikhail Baev
0aef19e70d
fix(linter/typescript/no-confusing-non-null-assertion): report in and instanceof ( #24825 )
...
report `in` and `instanceof` in
`typescript-eslint/no-confusing-non-null-assertion` rule, ported PR from
upstream
https://github.com/typescript-eslint/typescript-eslint/pull/9994
2026-07-24 12:12:16 +01:00
Mikhail Baev and Cameron
cdc941e5f8
feat(linter/n): implement exports-style rule ( #24087 )
...
this PR implements `n/exports-style` rule. Issue #493
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-07-22 16:50:23 +01:00
Mikhail Baev
1ad6f6c823
feat(linter/eslint): implement id-denylist rule ( #24632 )
...
this PR implements `eslint/id-denylist`, issue #479
2026-07-22 16:30:20 +01:00
Mikhail Baev
678bbb5f34
feat(linter/typescript-eslint): implement suggestion for class-literal-property-style rule ( #24766 )
...
this PR implements suggestion for
`typescript-eslint/class-literal-property-style` rule. Passes all (19)
[upstream test
cases](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts )
issue #2180
2026-07-22 11:52:59 +01:00
Mikhail Baev
346eed13c9
perf(linter/unicorn/prefer-event-target): only run on Class and NewExpression nodes ( #24685 )
...
Narrow `unicorn/prefer-event-target` dispatch from every
`IdentifierReference` to only `Class` and `NewExpression` nodes.
This reduces rule invocations from 209,565 to 1,721 (99.18%) while
preserving existing behavior
P.S. found it running oxlint on my work codebase, used chatgpt 5.6 to
implement the performance improvement
2026-07-19 18:27:48 +01:00
Mikhail Baev
54cc4415af
docs(linter): mark redundant unicorn rules unsupported ( #24642 )
...
https://github.com/oxc-project/oxc/issues/684#issuecomment-5009671130
2026-07-18 13:48:55 +01:00
Mikhail Baev
cf8a868b21
docs(linter): mark redundant unicorn rules unsupported ( #24602 )
...
2 new unicorn rules are already covered by `typescript/*` rules, other 3
are reported by typescript type checking
2026-07-16 17:17:52 +01:00
Mikhail Baev and autofix-ci[bot]
7f1f585b86
feat(linter): reuse jest/padding-around-test-blocks for vitest/padding-around-test-blocks ( #24519 )
...
this PR moves `jest/padding-around-test-blocks` to the shared
jest_vitest rules, so it can be reused by both the jest and vitest
rules.
issue #4656
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-14 18:22:11 +01:00
Mikhail Baev
4e5a65f91c
docs(linter/unicorn): mark no-non-function-verb-prefix as requiring type information ( #24266 )
...
`unicorn/no-non-function-verb-prefix` is one of the new unicorn rules
that requires type information, so I think it can be added to the
unsupported rules list
[upstream rule
doc](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-non-function-verb-prefix.md )
issue #684
2026-07-07 15:33:49 +01:00
Mikhail Baev
5bd3f28eff
docs(linter): mark n/prefer-global-* rules as unsupported ( #24139 )
...
this PR marks `n/prefer-global-*` rules as unsupported as discussed
[here](https://github.com/oxc-project/oxc/pull/23607#pullrequestreview-4626731228 )
2026-07-03 22:38:30 +01:00
Mikhail Baev and Cameron
a2c97f348c
feat(linter/unicorn): implement explicit-timer-delay rule ( #23612 )
...
this PR implements `unicorn/explicit-timer-delay`, issue #684
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-07-03 16:08:33 +01:00
Mikhail Baev
743e22293b
feat(linter/react): add disallowedValues option for forbid-dom-props rule ( #23970 )
...
fixes #23049 . Tests regenerated from upstream
2026-06-30 09:06:52 +01:00
Mikhail Baev
2428c501ba
feat(linter/react): implement suggestion for no-unknown-property rule ( #23936 )
...
this PR implements suggestion for `react/no-unknown-property` rule, uses
upstream rule tests. Issue #1022
2026-06-29 14:36:25 +01:00
Mikhail Baev
57e4469142
docs(linter/unicorn): update prefer-dom-node-text-content rationale ( #23933 )
...
Fixes #23921 .
Uses the differences documented by
[MDN](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#differences_from_innertext )
2026-06-29 10:09:33 +01:00
Mikhail Baev
90faebbd6b
test(linter/jsx-a11y/scope): cover fixer with settings ( #23902 )
...
Uncommented the TODO test in the `jsx-a11y/scope` rule and changed it to
actually test settings passed to the rule
2026-06-28 17:08:05 +01:00
Mikhail Baev and Cameron
d8919904e5
fix(linter/jsx-a11y/role-supports-aria-props): ignore nullish prop values ( #23865 )
...
Fixed tests for nullish values in the
`jsx-a11y/role-supports-aria-props` rule
ref:
https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/8f75961d965e47afb88854d324bd32fafde7acfe/__tests__/src/rules/role-supports-aria-props-test.js#L374
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-28 11:50:03 +01:00
Mikhail Baev and Cameron
52032cf181
fix(linter): newline-terminate tsgolint errors ( #23762 )
...
Fixes #23686 , adds trailing `\n` to tsgolint error output, matching
other CLI errors
tested locally with:
```
cargo build -p oxlint
mkdir -p /tmp/oxlint-npx-repro
cd /tmp/oxlint-npx-repro
npm init -y
echo 'export default {}' > index.ts
echo '{"rules": {}}' > oxlintrc.json
mkdir -p node_modules/.bin
ln -sf oxc/target/debug/oxlint node_modules/.bin/oxlint
npx --no-install oxlint -c oxlintrc.json --type-aware
```
Before fix:
https://github.com/user-attachments/assets/4c70115d-1c26-4c9b-9f0a-c4c33d767029
After fix:
https://github.com/user-attachments/assets/1a1fd337-cca1-4fb6-ab63-326ca16095ce
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-24 15:59:01 +01:00
Mikhail Baev and Cameron
7b8bd8918e
feat(linter/typescript): implement suggestion for no-unnecessary-type-constraint rule ( #23646 )
...
this PR implements suggestion for
`typescript/no-unnecessary-type-constraint` rule. passes all upstream
test cases
issue #2180
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-21 19:18:04 +02:00
Mikhail Baev
b01739ade3
feat(linter): add schema for unicorn/numeric-separators-style ( #23554 )
...
issue #22955
2026-06-17 19:06:34 +02:00
Mikhail Baev and Cameron
b50bf4df69
docs(linter): remove manually written options doc for eslint/arrow-body-style ( #23490 )
...
this PR removes manually written options doc for
`eslint/arrow-body-style` to avoid duplication
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-16 11:37:40 +01:00
Mikhail Baev and Cameron
f682e25389
docs(linter): remove manually written options doc for eslint/prefer-arrow-callback ( #23438 )
...
this PR removes manually written options doc for
`eslint/prefer-arrow-callback` to avoid duplication
before:
<img width="1116" height="1218" alt="Снимок экрана 2026-06-15 в 14 42
27"
src="https://github.com/user-attachments/assets/3e485bdd-ca0e-4c5a-b9e2-38601df45852 "
/>
after:
<img width="928" height="1037" alt="Снимок экрана 2026-06-15 в 14 47 48"
src="https://github.com/user-attachments/assets/8abb72cb-162e-4dd9-aa98-9409fff6ccd4 "
/>
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-15 10:59:17 +01:00
Mikhail Baev and Cameron
64c942cffe
docs(linter): remove manually written options doc for eslint/no-sequences ( #23420 )
...
this PR removes manually written options doc for `eslint/no-sequences`
to avoid duplication
before:
<img width="2658" height="2524" alt="image"
src="https://github.com/user-attachments/assets/0c47043b-c05a-430b-968d-d0297f9a1bf8 "
/>
after:
<img width="2604" height="2366" alt="image"
src="https://github.com/user-attachments/assets/93b3dcfa-5d56-4814-b531-27aa547f913e "
/>
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-15 08:56:25 +01:00
Mikhail Baev and Cameron
dd560ae213
feat(linter/unicorn): implement no-array-fill-with-reference-type rule ( #23397 )
...
this PR implements `unicorn/no-array-fill-with-reference-type` rule
issue #684
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-14 14:08:06 +01:00
Mikhail Baev
0f2fff48d2
feat(linter): add schema for react/exhaustive-deps ( #23372 )
...
part of #22955
2026-06-13 15:51:43 +01:00
Mikhail Baev and Alexander S.
e3e4e105bc
feat(linter): add schema for react_perf/jsx-no-new-object-as-prop ( #23368 )
...
issue #22955
---------
Signed-off-by: Alexander S. <sysix@sysix-coding.de >
Co-authored-by: Alexander S. <sysix@sysix-coding.de >
2026-06-13 15:38:33 +02:00
Mikhail Baev
51fa83ef5f
feat(linter): add schema for react/no-did-update-set-state ( #23357 )
...
issue #22955
There are three rules that use the same config and default value:
- `react/no-did-mount-set-state`
- `react/no-did-update-set-state`
- `react/no-will-update-set-state`
this PR also moves that config into a shared `SetStateInFunctionConfig`
type to avoid duplication, similar to the `AlwaysNever` enum
2026-06-12 19:20:41 +02:00
Mikhail Baev
0806aae474
feat(linter): add schema for jsx_a11y/no-noninteractive-tabindex ( #23337 )
...
issue #22955
also replaced manual config parsing with `DefaultRuleConfig`
2026-06-12 13:39:39 +02:00
Mikhail Baev and Cameron
0708b5a233
feat(linter): add schema for react/jsx-filename-extension ( #23315 )
...
issue #22955
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-12 10:05:03 +01:00
Mikhail Baev
3d782b7d06
feat(linter): add schema for react/no-unstable-nested-components ( #23287 )
...
issue #22955
2026-06-11 20:23:58 +02:00
Mikhail Baev
e3869ac312
feat(linter): add schema for react/no-object-type-as-default-prop ( #23279 )
...
issue #22955
`react/no-object-type-as-default-prop` rule has no configuration
2026-06-11 12:49:03 +01:00
Mikhail Baev
44806094fc
feat(linter): add schema for react/jsx-props-no-spreading ( #23276 )
...
part of #22955
also replaced `get_tag_name` in rule with shared react helper `get_jsx_element_name`
2026-06-11 12:10:16 +01:00
Mikhail Baev
e77ff81a6b
feat(linter): add schema for unicorn/prefer-object-from-entries ( #23249 )
...
issue #22955
2026-06-10 20:06:58 +02:00
Mikhail Baev and Cameron
3f018e7a3f
feat(linter): add schema for unicorn/no-instanceof-builtins ( #23225 )
...
issue #22955
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-10 12:52:55 +01:00
Mikhail Baev
cd0b384f12
feat(linter): add schema for unicorn/explicit-length-check ( #23155 )
...
this PR adds schema for `unicorn/explicit-length-check` rule.
issue #22955
2026-06-09 14:46:30 +01:00
Mikhail Baev
9d6a387710
feat(linter): add schema for unicorn/catch-error-name ( #23137 )
...
this PR adds schema for `unicorn/catch-error-name` rule.
issue #22955
2026-06-08 21:13:47 +02:00
Mikhail Baev and Cameron
8420acb018
docs(linter): mark react/require-default-props rule as unsupported ( #22995 )
...
`react/sort-default-props` rule was marked as unsupported in #18617 . I
think the same can also be done for `react/require-default-props`.
issue #1022
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-06 12:28:49 +01:00
Mikhail Baev and Cameron Clark
e4b1f46bec
feat(linter/typescript): implement method-signature-style rule ( #22679 )
...
This PR implements `typescript-eslint/method-signature-style`.
Part of issue #2180 .
It uses all upstream test cases. The only changes are to 4 setter test
cases, changing this:
```
set f(value: number): void;
```
to this:
```
set f(value: number);
```
because they failed with `TS(1095): A 'set' accessor cannot have a
return type annotation.`
---------
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-06-01 10:29:17 +01:00
Mikhail Baev and Cameron
8422e8bc44
feat(linter/jsdoc): implement require-yields-description rule ( #22805 )
...
this PR implements `jsdoc/require-yields-description` rule.
[rule doc](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-description.md )
[rule source](https://github.com/gajus/eslint-pluginjsdoc/blob/3d53b88baed2b49e04b4aa71599d1b449efcc3f8/src/index.js#L245 )
issue #1170
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-05-28 20:34:08 +01:00
Mikhail Baev and Cameron
0c6ebc27fc
fix(linter/eslint/no-lone-blocks): do not flag empty loops ( #22649 )
...
fixes #22648 . matches
[upstream](https://eslint.org/play/#eyJ0ZXh0IjoiLy8gbG9uZSBibG9ja1xue1xufVxuXG4vLyBub3QgYSBsb25lIGJsb2NrXG5sZXQgaSA9IDU7XG53aGlsZSAoaSA+IDApIHt9XG5cbi8vIG5vdCBhIGxvbmUgYmxvY2tcbmZvciAobGV0IGlkeCA9IDA7IGlkeCA8IDU7IGlkeCsrKSB7fSIsIm9wdGlvbnMiOnsicnVsZXMiOnsibm8tbG9uZS1ibG9ja3MiOiJlcnJvciJ9LCJsYW5ndWFnZU9wdGlvbnMiOnsicGFyc2VyT3B0aW9ucyI6eyJlY21hRmVhdHVyZXMiOnsianN4Ijp0cnVlfX19fX0= )
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-05-21 18:04:26 +01:00
Mikhail Baev
f7f370e010
fix(linter/vitest/prefer-expect-type-of): recommend toBeTypeOf instead of expectTypeOf ( #22612 )
...
Aligns the `vitest/prefer-expect-type-of` rule with upstream by
recommending `toBeTypeOf` instead of `expectTypeOf`
[ref PR](https://github.com/vitest-dev/eslint-plugin-vitest/pull/896 )
released in
[1.6.17](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.17 )
2026-05-20 08:41:38 +01:00
Mikhail Baev and Cameron Clark
5fa47746a3
feat(linter/n): implement callback-return rule ( #22470 )
...
this PR implements `callback-return` rule, passes all upstream tests.
issue #493
there is an issue with config doc generation for array with default
values. Ill fix it a little later and then move the PR out of draft.
---------
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-05-18 15:54:28 +01:00
Mikhail Baev and Cameron
5478fb5aad
feat(linter/jsdoc): implement require-throws-description rule ( #22386 )
...
this PR implements `jsdoc/require-throws-description` rule. Unlike
`require-returns-description` and `require-property-description`, this
rule is not listed in the recommended section, so i picked `style`
category for it
[rule doc](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-description.md )
[rule source](https://github.com/gajus/eslint-plugin-jsdoc/blob/f631620cc1b5bc948f2dfec4228913d19bb2ec0d/src/index.js#L221 )
issue #1170
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-05-14 18:25:49 +01:00
Mikhail Baev and Cameron
ba2a1d39c6
feat(linter/jsdoc): implement require-throws-type rule ( #22358 )
...
this PR implements `jsdoc/require-throws-type` rule, issue #1170
[rule source](https://github.com/gajus/eslint-plugin-jsdoc/blob/f631620cc1b5bc948f2dfec4228913d19bb2ec0d/src/index-cjs.js#L226 )
[rule doc](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-type.md )
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-05-12 18:26:09 +01:00
Mikhail Baev and Cameron
1d04903a9d
feat(linter/jsdoc): implement require-yields-type rule ( #22331 )
...
this PR implement `jsdoc/require-yields-type` rule, issue #1170
[upstream rule source](https://github.com/gajus/eslint-plugin-jsdoc/blob/f631620cc1b5bc948f2dfec4228913d19bb2ec0d/src/index.js#L256 )
[upstream rule doc](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md )
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-05-11 20:36:05 +01:00
Mikhail Baev and Cameron
ae5930523d
feat(linter/promise/no-promise-in-callback): add exemptDeclarations option ( #22275 )
...
this PR adds `exemptDeclarations` option in
`promise/no-promise-in-callback` from upstream rule
ref: https://github.com/eslint-community/eslint-plugin-promise/releases/tag/v7.3.0
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-05-09 23:29:58 +01:00
Mikhail Baev and Cameron
545c80f193
feat(linter/eslint): implement prefer-regex-literals rule ( #22192 )
...
this PR implements `eslint/prefer-regex-literals` rule, passes all
upstream tests
issue #479
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-05-06 22:06:08 +01:00
Mikhail Baev and Cameron Clark
5b9ea93824
feat(linter/eslint): implement require-unicode-regexp rule ( #22096 )
...
this PR implements `eslint/require-unicode-regexp`, passes all upstream
tests
issue #479
---------
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-05-04 20:39:21 +01:00
Mikhail Baev and autofix-ci[bot]
8804425dab
feat(linter/eslint): implement logical-assignment-operators rule ( #21900 )
...
this PR implements `eslint/logical-assignment-operators` rule, passes
all upstream tests
issue #479
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-04-29 09:48:23 -04:00
Mikhail Baev and Cameron Clark
5f818830c9
feat(linter/eslint): implement func-name-matching rule ( #21708 )
...
this PR implements `eslint/func-name-matching` rule, issue #479 . passes
all upstream tests
## AI Disclosure
This PR was developed with AI assistance (chatgpt 5.5 high)
---------
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-04-25 11:45:34 +01:00
Mikhail Baev and Cameron
3617864096
fix(linter/react/display-name): fix false positive for named default class ( #21643 )
...
fixes #21632 , matches upstream rule logic
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-04-22 17:45:56 +01:00
ca81199211
feat(linter/react): implement forbid-component-props rule ( #20005 )
...
this PR adds `react/forbid-component-props` rule
issue #1022
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-04-21 20:22:40 +01:00
Mikhail Baev
d3a7e9a84a
feat(linter/unicorn): implement suggestion for no-useless-iterator-to-array rule ( #21610 )
...
this PR implements suggestion for `no-useless-iterator-to-array` rule,
issue #684
2026-04-21 12:33:04 +01:00
4d578514dc
fix(linter/eslint): enhance no-empty-function rule to support async and generator functions in VariableDeclarator ( #21542 )
...
Fixes tests:
`const foo = function*(param: string) {};` with `allow:
["generatorFunctions"]`
`const foo = async function(param: string) {}` with `allow:
["asyncFunctions"]`
Other tests were already passing, they were just uncommented
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-04-20 09:14:40 +01:00
Mikhail Baev
7dbbb99bf2
feat(linter/eslint): implement suggestion for no-case-declarations rule ( #21508 )
...
this PR implements suggestion for `eslint/no-case-declarations` rule,
also removed `None` options from test cases
issue #479
2026-04-16 21:02:17 +01:00
Mikhail Baev
61088e0b38
fix(linter/unicorn): handle computed property access in prefer-dom-node-remove rule ( #21470 )
2026-04-15 18:21:56 +01:00
Mikhail Baev and Cameron
b577efc2ca
fix(linter/unicorn): handle optional chaining in prefer-array-flat and no-invalid-remove-event-listener ( #21299 )
...
fixes commented out tests with optionals in in `unicorn/prefer-array-flat` and `unicorn/no-invalid-remove-event-listener` rules
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-04-13 09:15:33 +01:00
Mikhail Baev
cf459d3ed2
feat(linter): implement suggestion for no-empty-function rule ( #21347 )
...
this PR implements suggestion for `no-empty-function` rule, it is same
as original rule, adds `/* empty */` comment inside empty functions
issue #479
2026-04-12 20:16:49 +01:00
Mikhail Baev
f636217d2e
docs(linter): add explanation for n/no-callback-literal in unsupported rules ( #21327 )
2026-04-11 09:52:31 +01:00
Mikhail Baev
f21d3aa8d0
fix(linter/unicorn): report on optional in require-number-to-fixed-digits-argument rule ( #21207 )
...
fixes commented out test with optional in
`unicorn/require-number-to-fixed-digits-argument`
2026-04-09 09:16:01 +01:00
Mikhail Baev
a950f555c8
fix(linter/unicorn): do not report on optionals in no-single-promise-in-promise-methods ( #21157 )
2026-04-08 08:41:29 +01:00
Mikhail Baev
7e8d5206c8
fix(linter/unicorn): report on optional foo?.postMessage in require-post-message-target-origin rule ( #21104 )
...
fixes commented out test for optional `foo?.postMessage` in
`unicorn/require-post-message-target-origin` rule
2026-04-07 09:07:54 +01:00
Mikhail Baev
8be4de7e3e
fix(linter/unicorn): do not report on optionals in prefer-array-flat-map ( #21082 )
...
fixes commented out tests for optionals in
https://github.com/oxc-project/oxc/pull/19428
2026-04-06 13:12:28 +01:00
Mikhail Baev and Cameron
7fdf7222d7
feat(linter/unicorn): implement no-useless-iterator-to-array rule ( #20945 )
...
this PR implements `unicorn/no-useless-iterator-to-array` rule, part of #684
---------
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-04-05 14:31:35 +01:00
8c3607060b
fix(linter/unicorn): add support for Array.from() for prefer-set-size rule ( #21016 )
...
fixed commented out tests in #19428 for `Array.from()` in `unicorn/prefer-set-size` rule
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-04-03 21:14:02 +01:00
b9199b160a
feat(linter/unicorn): implement switch-case-break-position ( #20872 )
...
this PR implements `unicorn/switch-case-break-position` rule
issue #684
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-03-31 17:21:44 +01:00
Mikhail Baev and autofix-ci[bot]
ae0365304a
feat(linter): implement suggestion for eslint/no-useless-computed-key rule ( #20805 )
...
this PR implements suggestion for `eslint/no-useless-computed-key` rule
issue #479
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-28 22:37:41 +00:00
Mikhail Baev
2244984ed6
feat(linter): implement vitest/prefer-strict-boolean-matchers rule ( #20603 )
...
This PR adds `vitest/prefer-strict-boolean-matchers` rule.
Passes all [original tests](https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/tests/prefer-strict-boolean-matchers.test.ts )with
added extra tests for cases like this: `expect(value)["toBeFalsy"]();`
issue #4656
2026-03-21 20:33:12 +00:00
Mikhail Baev and Cameron Clark
f9a63cacf0
feat(linter): implement unicorn/custom-error-definition rule ( #20520 )
...
part of #684
---------
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-03-19 21:43:06 +00:00
7a2a7d0ab9
feat(linter): implement n/handle-callback-err rule ( #19616 )
...
this PR implements `n/handle-callback-err` rule, passes all tests from original [rule](https://github.com/eslint-community/eslint-plugin-n/blob/master/tests/lib/rules/handle-callback-err.js )
issue #493
---------
Signed-off-by: Mikhail Baev <baev2m@gmail.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-03-12 16:48:48 +00:00
Mikhail Baev
c8563d1531
docs(linter): mark react/require-optimization as legacy rule ( #20110 )
...
this PR moves`react/require-optimization` rule to legacy, as discussed
here
https://github.com/oxc-project/oxc/pull/17370#issuecomment-4017100880
2026-03-08 17:43:34 +00:00
2b95537911
feat(linter): implement n/no-path-concat rule ( #19502 )
...
this PR adds `n/no-path-concat` rule, passes all [test
cases](https://github.com/eslint-community/eslint-plugin-n/blob/master/tests/lib/rules/no-path-concat.js )
from original rule
issue #493
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-02-19 14:58:35 +00:00
Mikhail Baev
8588670c4b
feat(linter/unicorn): implement suggestion for unicorn/no-await-in-promise-methods rule ( #19359 )
...
this PR adds suggestion for `unicorn/no-await-in-promise-methods` rule,
issue #684 . Also fixed commented tests with promise optionals
2026-02-13 11:45:57 +00:00
Mikhail Baev
aef2af511c
feat(linter/unicorn): add fixer for unicorn/relative-url-style rule ( #19186 )
...
this PR adds fixer for `unicorn/relative-url-style` rule, issue #684
for template literal urls it uses suggestion, just like in original rule
2026-02-09 18:36:20 +00:00
Mikhail Baev
533013d5ba
feat(linter/unicorn): implement suggestion for unicorn/prefer-dom-node-dataset ( #19051 )
...
this PR adds suggestion for `unicorn/prefer-dom-node-dataset` rule, issue #684
2026-02-06 12:00:41 +00:00