Skip to content

Commit 0aaea0f

Browse files
Merge branch 'Rel1cx:main' into main
2 parents 7d7719f + 161a0b8 commit 0aaea0f

File tree

56 files changed

+1513
-1502
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1513
-1502
lines changed

.pkgs/configs/eslint.js

Lines changed: 113 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -88,130 +88,124 @@ const p11tGroups = {
8888
},
8989
groups: ["id", "type", "meta", "alias", "rules", "unknown"],
9090
};
91-
export const strictTypeChecked = defineConfig([
92-
{
93-
ignores: GLOB_JS,
94-
},
95-
{
96-
extends: [
97-
js.configs.recommended,
98-
...tseslint.configs.strict,
91+
export const strictTypeChecked = defineConfig({
92+
ignores: GLOB_JS,
93+
}, {
94+
extends: [
95+
js.configs.recommended,
96+
...tseslint.configs.strict,
97+
],
98+
files: GLOB_TS,
99+
rules: {
100+
eqeqeq: ["error", "smart"],
101+
"no-console": "error",
102+
"no-else-return": "error",
103+
"no-fallthrough": ["error", { commentPattern: ".*intentional fallthrough.*" }],
104+
"no-implicit-coercion": ["error", { allow: ["!!"] }],
105+
"prefer-object-has-own": "error",
106+
"no-restricted-syntax": [
107+
"error",
108+
{
109+
message: "no typescript named import",
110+
selector: "ImportDeclaration[source.value='typescript'] ImportSpecifier",
111+
},
99112
],
100-
files: GLOB_TS,
101-
rules: {
102-
eqeqeq: ["error", "smart"],
103-
"no-console": "error",
104-
"no-else-return": "error",
105-
"no-fallthrough": ["error", { commentPattern: ".*intentional fallthrough.*" }],
106-
"no-implicit-coercion": ["error", { allow: ["!!"] }],
107-
"prefer-object-has-own": "error",
108-
"no-restricted-syntax": [
109-
"error",
110-
{
111-
message: "no typescript named import",
112-
selector: "ImportDeclaration[source.value='typescript'] ImportSpecifier",
113-
},
114-
],
115-
"@typescript-eslint/ban-ts-comment": [
116-
"error",
117-
{
118-
"ts-check": false,
119-
"ts-expect-error": "allow-with-description",
120-
"ts-ignore": true,
121-
"ts-nocheck": true,
122-
},
123-
],
124-
"@typescript-eslint/ban-types": "off",
125-
"@typescript-eslint/consistent-type-exports": "error",
126-
"@typescript-eslint/consistent-type-imports": "error",
127-
"@typescript-eslint/explicit-function-return-type": "off",
128-
"@typescript-eslint/no-confusing-void-expression": "off",
129-
"@typescript-eslint/no-empty-object-type": "off",
130-
"@typescript-eslint/no-misused-promises": "warn",
131-
"@typescript-eslint/no-namespace": "off",
132-
"@typescript-eslint/no-unnecessary-parameter-property-assignment": "warn",
133-
"@typescript-eslint/no-unused-vars": ["warn", { caughtErrors: "all" }],
134-
"@typescript-eslint/strict-boolean-expressions": ["error", {
135-
allowAny: false,
136-
allowNullableBoolean: false,
137-
allowNullableEnum: false,
138-
allowNullableNumber: false,
139-
allowNullableObject: false,
140-
allowNullableString: false,
141-
allowNumber: true,
142-
allowString: false,
143-
}],
144-
},
145-
},
146-
{
147-
extends: [
148-
jsdoc({ config: "flat/recommended-typescript-error" }),
149-
pluginDeMorgan.configs.recommended,
150-
pluginPerfectionist.configs["recommended-natural"],
151-
pluginRegexp.configs["flat/recommended"],
113+
"@typescript-eslint/ban-ts-comment": [
114+
"error",
115+
{
116+
"ts-check": false,
117+
"ts-expect-error": "allow-with-description",
118+
"ts-ignore": true,
119+
"ts-nocheck": true,
120+
},
152121
],
153-
files: GLOB_TS,
154-
plugins: {
155-
["@stylistic"]: stylistic,
156-
["function"]: pluginFunction,
157-
["unicorn"]: pluginUnicorn,
158-
},
159-
rules: {
160-
"function/function-return-boolean": ["error", { pattern: "/^(is|has|can|should)/" }],
161-
"@stylistic/arrow-parens": ["warn", "always"],
162-
"@stylistic/no-multi-spaces": ["warn"],
163-
"@stylistic/operator-linebreak": "off",
164-
"@stylistic/quote-props": ["error", "as-needed"],
165-
"perfectionist/sort-exports": "off",
166-
"perfectionist/sort-imports": "off",
167-
"perfectionist/sort-interfaces": [
168-
"warn",
169-
{ ...p11tOptions, ...p11tGroups },
170-
],
171-
"perfectionist/sort-intersection-types": "off",
172-
"perfectionist/sort-modules": "off",
173-
"perfectionist/sort-named-exports": "off",
174-
"perfectionist/sort-named-imports": "off",
175-
"perfectionist/sort-object-types": [
176-
"warn",
177-
{ ...p11tOptions, ...p11tGroups },
178-
],
179-
"perfectionist/sort-objects": [
180-
"warn",
181-
{ ...p11tOptions, ...p11tGroups },
182-
],
183-
"perfectionist/sort-switch-case": "off",
184-
"perfectionist/sort-union-types": "off",
185-
"jsdoc/check-param-names": "warn",
186-
"jsdoc/check-tag-names": "warn",
187-
"jsdoc/informative-docs": "off",
188-
"jsdoc/lines-before-block": "off",
189-
"jsdoc/require-jsdoc": "off",
190-
"jsdoc/require-param": "warn",
191-
"jsdoc/require-param-description": "warn",
192-
"jsdoc/require-returns": "off",
193-
"jsdoc/require-yields": "warn",
194-
"jsdoc/tag-lines": "off",
195-
"unicorn/template-indent": [
196-
"warn",
197-
{
198-
comments: templateIndentTags,
199-
tags: templateIndentTags,
200-
},
201-
],
202-
},
122+
"@typescript-eslint/ban-types": "off",
123+
"@typescript-eslint/consistent-type-exports": "error",
124+
"@typescript-eslint/consistent-type-imports": "error",
125+
"@typescript-eslint/explicit-function-return-type": "off",
126+
"@typescript-eslint/no-confusing-void-expression": "off",
127+
"@typescript-eslint/no-empty-object-type": "off",
128+
"@typescript-eslint/no-misused-promises": "warn",
129+
"@typescript-eslint/no-namespace": "off",
130+
"@typescript-eslint/no-unnecessary-parameter-property-assignment": "warn",
131+
"@typescript-eslint/no-unused-vars": ["warn", { caughtErrors: "all" }],
132+
"@typescript-eslint/strict-boolean-expressions": ["error", {
133+
allowAny: false,
134+
allowNullableBoolean: false,
135+
allowNullableEnum: false,
136+
allowNullableNumber: false,
137+
allowNullableObject: false,
138+
allowNullableString: false,
139+
allowNumber: true,
140+
allowString: false,
141+
}],
203142
},
204-
]);
205-
export const disableTypeChecked = defineConfig([
206-
{
207-
extends: [
208-
tseslint.configs.disableTypeChecked,
143+
}, {
144+
extends: [
145+
jsdoc({ config: "flat/recommended-typescript-error" }),
146+
pluginDeMorgan.configs.recommended,
147+
pluginPerfectionist.configs["recommended-natural"],
148+
pluginRegexp.configs["flat/recommended"],
149+
],
150+
files: GLOB_TS,
151+
plugins: {
152+
["@stylistic"]: stylistic,
153+
["function"]: pluginFunction,
154+
["unicorn"]: pluginUnicorn,
155+
},
156+
rules: {
157+
"function/function-return-boolean": ["error", { pattern: "/^(is|has|can|should)/" }],
158+
"@stylistic/arrow-parens": ["warn", "always"],
159+
"@stylistic/no-multi-spaces": ["warn"],
160+
"@stylistic/operator-linebreak": "off",
161+
"@stylistic/quote-props": ["error", "as-needed"],
162+
"perfectionist/sort-exports": "off",
163+
"perfectionist/sort-imports": "off",
164+
"perfectionist/sort-interfaces": [
165+
"warn",
166+
{ ...p11tOptions, ...p11tGroups },
209167
],
210-
rules: {
211-
"function/function-return-boolean": "off",
212-
},
168+
"perfectionist/sort-intersection-types": "off",
169+
"perfectionist/sort-modules": "off",
170+
"perfectionist/sort-named-exports": "off",
171+
"perfectionist/sort-named-imports": "off",
172+
"perfectionist/sort-object-types": [
173+
"warn",
174+
{ ...p11tOptions, ...p11tGroups },
175+
],
176+
"perfectionist/sort-objects": [
177+
"warn",
178+
{ ...p11tOptions, ...p11tGroups },
179+
],
180+
"perfectionist/sort-switch-case": "off",
181+
"perfectionist/sort-union-types": "off",
182+
"jsdoc/check-param-names": "warn",
183+
"jsdoc/check-tag-names": "warn",
184+
"jsdoc/informative-docs": "off",
185+
"jsdoc/lines-before-block": "off",
186+
"jsdoc/require-jsdoc": "off",
187+
"jsdoc/require-param": "warn",
188+
"jsdoc/require-param-description": "warn",
189+
"jsdoc/require-returns": "off",
190+
"jsdoc/require-yields": "warn",
191+
"jsdoc/tag-lines": "off",
192+
"unicorn/template-indent": [
193+
"warn",
194+
{
195+
comments: templateIndentTags,
196+
tags: templateIndentTags,
197+
},
198+
],
199+
},
200+
});
201+
export const disableTypeChecked = defineConfig({
202+
extends: [
203+
tseslint.configs.disableTypeChecked,
204+
],
205+
rules: {
206+
"function/function-return-boolean": "off",
213207
},
214-
]);
208+
});
215209
/**
216210
* Common ESLint JS rules to disable that are problematic when using TypeScript.
217211
*/

.pkgs/configs/eslint.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ const p11tGroups = {
9898
groups: ["id", "type", "meta", "alias", "rules", "unknown"],
9999
};
100100

101-
export const strictTypeChecked: Linter.Config[] = defineConfig([
101+
export const strictTypeChecked: Linter.Config[] = defineConfig(
102102
{
103103
ignores: GLOB_JS,
104104
},
@@ -217,9 +217,9 @@ export const strictTypeChecked: Linter.Config[] = defineConfig([
217217
],
218218
},
219219
},
220-
]);
220+
);
221221

222-
export const disableTypeChecked: Linter.Config[] = defineConfig([
222+
export const disableTypeChecked: Linter.Config[] = defineConfig(
223223
{
224224
extends: [
225225
tseslint.configs.disableTypeChecked,
@@ -228,7 +228,7 @@ export const disableTypeChecked: Linter.Config[] = defineConfig([
228228
"function/function-return-boolean": "off",
229229
},
230230
},
231-
]);
231+
);
232232

233233
/**
234234
* Common ESLint JS rules to disable that are problematic when using TypeScript.

.pkgs/configs/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@
2222
"@eslint/js": "^9.39.1",
2323
"@stylistic/eslint-plugin": "^5.5.0",
2424
"eslint-plugin-de-morgan": "^2.0.0",
25-
"eslint-plugin-function": "^0.0.33",
26-
"eslint-plugin-function-rule": "^0.0.15",
27-
"eslint-plugin-jsdoc": "^61.1.12",
25+
"eslint-plugin-function": "^0.0.34",
26+
"eslint-plugin-function-rule": "^0.0.16",
27+
"eslint-plugin-jsdoc": "^61.2.1",
2828
"eslint-plugin-perfectionist": "^4.15.1",
2929
"eslint-plugin-regexp": "^2.10.0",
3030
"eslint-plugin-unicorn": "^62.0.0",
3131
"typescript-eslint": "^8.46.4"
3232
},
3333
"peerDependencies": {
34-
"eslint": "^9.38.0",
34+
"eslint": "^9.39.1",
3535
"typescript": "^5.9.3"
3636
}
3737
}

.pkgs/function-rules/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121
"lint:ts": "tsc --noEmit"
2222
},
2323
"dependencies": {
24-
"eslint-plugin-function-rule": "^0.0.15"
24+
"eslint-plugin-function-rule": "^0.0.16"
2525
},
2626
"devDependencies": {
2727
"eslint": "^9.39.1",
28-
"tsdown": "^0.16.1"
28+
"tsdown": "^0.16.4"
2929
},
3030
"peerDependencies": {
3131
"eslint": "^9.39.1",

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## v2.3.5 (2025-11-13)
2+
3+
### 🐞 Fixes
4+
5+
- fix: rule names in `disable-conflict-eslint-plugin-react`, closes #1315 by @jkbdk in https://github.com/Rel1cx/eslint-react/pull/1316
6+
7+
**Full Changelog**: https://github.com/Rel1cx/eslint-react/compare/v2.3.4...v2.3.5
8+
19
## v2.3.4 (2025-11-10)
210

311
### ✨ New

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
[![Version](https://img.shields.io/npm/v/@eslint-react/eslint-plugin?style=flat&colorA=111111&colorB=000000)](https://npmjs.com/package/@eslint-react/eslint-plugin)
66
[![Downloads](https://img.shields.io/npm/dt/@eslint-react/eslint-plugin.svg?style=flat&colorA=222222&colorB=000000)](https://npmjs.com/package/@eslint-react/eslint-plugin)
77
[![License](https://img.shields.io/npm/l/@eslint-react/eslint-plugin?style=flat&colorA=333333&colorB=000000)](https://npmjs.com/package/@eslint-react/eslint-plugin)
8-
[![Build with](https://img.shields.io/badge/[email protected].1-000000?style=flat)](https://tsdown.dev)
8+
[![Build with](https://img.shields.io/badge/[email protected].4-000000?style=flat)](https://tsdown.dev)
99

1010
4-7x faster composable ESLint rules for React and friends.
1111

1212
## Table of Contents
1313

14+
- [Table of Contents](#table-of-contents)
1415
- [Features](#features)
1516
- [Public Packages](#public-packages)
1617
- [Unified ESLint Plugin](#unified-eslint-plugin)
@@ -20,8 +21,8 @@
2021
- [Setup](#setup)
2122
- [Presets](#presets)
2223
- [Bare Bones](#bare-bones)
23-
- [General Purpose](#general-purpose)
24-
- [TypeScript Specialized](#typescript-specialized)
24+
- [General Purpose](#general-purpose)
25+
- [TypeScript Specialized](#typescript-specialized)
2526
- [Other](#other)
2627
- [Rules](#rules)
2728
- [Benchmark](#benchmark)
@@ -80,7 +81,7 @@ import eslintJs from "@eslint/js";
8081
import { defineConfig } from "eslint/config";
8182
import tseslint from "typescript-eslint";
8283

83-
export default defineConfig([
84+
export default defineConfig(
8485
{
8586
files: ["**/*.ts", "**/*.tsx"],
8687

@@ -110,7 +111,7 @@ export default defineConfig([
110111
"@eslint-react/no-missing-key": "warn",
111112
},
112113
},
113-
]);
114+
);
114115
```
115116

116117
[Full Installation Guide ↗](https://eslint-react.xyz/docs/getting-started/typescript)

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.3.5-beta.4
1+
2.3.6-beta.7

apps/website/content/docs/changelog.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22
title: Changelog
33
---
44

5+
## v2.3.5 (2025-11-13)
6+
7+
### 🐞 Fixes
8+
9+
- fix: rule names in `disable-conflict-eslint-plugin-react`, closes #1315 by @jkbdk in https://github.com/Rel1cx/eslint-react/pull/1316
10+
11+
**Full Changelog**: https://github.com/Rel1cx/eslint-react/compare/v2.3.4...v2.3.5
12+
513
## v2.3.4 (2025-11-10)
614

715
### ✨ New

0 commit comments

Comments
 (0)