eslint-config-setup 0.2.7 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -357,47 +357,10 @@
357
357
  ],
358
358
  "node/no-exports-assign": "error",
359
359
  "node/no-path-concat": "error",
360
- "react/jsx-no-target-blank": "error",
361
- "react/jsx-no-undef": "error",
362
- "react/no-danger": "warn",
363
- "react/no-direct-mutation-state": "error",
364
- "react/no-unknown-property": "error",
365
360
  "react/no-children-prop": "error",
366
- "react/self-closing-comp": "error",
367
- "react/void-dom-elements-no-children": "error",
368
- "react/jsx-key": [
369
- "error",
370
- {
371
- "checkFragmentShorthand": true
372
- }
373
- ],
361
+ "react/no-direct-mutation-state": "error",
374
362
  "react/jsx-no-comment-textnodes": "error",
375
- "react/jsx-no-duplicate-props": "error",
376
- "react/jsx-no-useless-fragment": [
377
- "error",
378
- {
379
- "allowExpressions": true
380
- }
381
- ],
382
- "react/jsx-pascal-case": "error",
383
- "react/jsx-boolean-value": [
384
- "error",
385
- "never"
386
- ],
387
- "react/jsx-curly-brace-presence": [
388
- "error",
389
- {
390
- "props": "never",
391
- "children": "never"
392
- }
393
- ],
394
- "react/iframe-missing-sandbox": "error",
395
363
  "react/no-array-index-key": "error",
396
- "react/jsx-no-constructed-context-values": "error",
397
- "react/style-prop-object": "error",
398
- "react/no-string-refs": "error",
399
- "react/button-has-type": "error",
400
- "react/no-danger-with-children": "error",
401
364
  "react-hooks/rules-of-hooks": "error",
402
365
  "react-hooks/exhaustive-deps": "error",
403
366
  "jsx-a11y/alt-text": "error",
@@ -582,6 +545,9 @@
582
545
  "files": [
583
546
  "**/*.{md,mdx}"
584
547
  ],
548
+ "rules": {
549
+ "react/react-in-jsx-scope": "off"
550
+ },
585
551
  "globals": {
586
552
  "React": "readonly"
587
553
  }
@@ -5,7 +5,6 @@
5
5
  "import",
6
6
  "unicorn",
7
7
  "jsdoc",
8
- "react",
9
8
  "jsx-a11y"
10
9
  ],
11
10
  "categories": {
@@ -358,7 +357,7 @@
358
357
  "allowExpressions": true,
359
358
  "allowTypedFunctionExpressions": true,
360
359
  "allowHigherOrderFunctions": true,
361
- "allowIIFE": true
360
+ "allowIIFEs": true
362
361
  }
363
362
  ],
364
363
  "@typescript-eslint/prefer-enum-initializers": "error",
@@ -385,7 +384,6 @@
385
384
  "unicorn/prefer-set-size": "error",
386
385
  "unicorn/explicit-length-check": "error",
387
386
  "unicorn/switch-case-braces": "error",
388
- "react/no-multi-comp": "error",
389
387
  "jsx-a11y/no-static-element-interactions": "error",
390
388
  "complexity": [
391
389
  "error",
@@ -633,7 +631,10 @@
633
631
  },
634
632
  "globals": {
635
633
  "React": "readonly"
636
- }
634
+ },
635
+ "plugins": [
636
+ "react"
637
+ ]
637
638
  },
638
639
  {
639
640
  "files": [
@@ -6,7 +6,6 @@
6
6
  "unicorn",
7
7
  "jsdoc",
8
8
  "node",
9
- "react",
10
9
  "jsx-a11y"
11
10
  ],
12
11
  "categories": {
@@ -362,7 +361,7 @@
362
361
  "allowExpressions": true,
363
362
  "allowTypedFunctionExpressions": true,
364
363
  "allowHigherOrderFunctions": true,
365
- "allowIIFE": true
364
+ "allowIIFEs": true
366
365
  }
367
366
  ],
368
367
  "@typescript-eslint/prefer-enum-initializers": "error",
@@ -389,7 +388,6 @@
389
388
  "unicorn/prefer-set-size": "error",
390
389
  "unicorn/explicit-length-check": "error",
391
390
  "unicorn/switch-case-braces": "error",
392
- "react/no-multi-comp": "error",
393
391
  "jsx-a11y/no-static-element-interactions": "error",
394
392
  "complexity": [
395
393
  "error",
@@ -637,7 +635,10 @@
637
635
  },
638
636
  "globals": {
639
637
  "React": "readonly"
640
- }
638
+ },
639
+ "plugins": [
640
+ "react"
641
+ ]
641
642
  },
642
643
  {
643
644
  "files": [
@@ -353,47 +353,10 @@
353
353
  "skipComments": true
354
354
  }
355
355
  ],
356
- "react/jsx-no-target-blank": "error",
357
- "react/jsx-no-undef": "error",
358
- "react/no-danger": "warn",
359
- "react/no-direct-mutation-state": "error",
360
- "react/no-unknown-property": "error",
361
356
  "react/no-children-prop": "error",
362
- "react/self-closing-comp": "error",
363
- "react/void-dom-elements-no-children": "error",
364
- "react/jsx-key": [
365
- "error",
366
- {
367
- "checkFragmentShorthand": true
368
- }
369
- ],
357
+ "react/no-direct-mutation-state": "error",
370
358
  "react/jsx-no-comment-textnodes": "error",
371
- "react/jsx-no-duplicate-props": "error",
372
- "react/jsx-no-useless-fragment": [
373
- "error",
374
- {
375
- "allowExpressions": true
376
- }
377
- ],
378
- "react/jsx-pascal-case": "error",
379
- "react/jsx-boolean-value": [
380
- "error",
381
- "never"
382
- ],
383
- "react/jsx-curly-brace-presence": [
384
- "error",
385
- {
386
- "props": "never",
387
- "children": "never"
388
- }
389
- ],
390
- "react/iframe-missing-sandbox": "error",
391
359
  "react/no-array-index-key": "error",
392
- "react/jsx-no-constructed-context-values": "error",
393
- "react/style-prop-object": "error",
394
- "react/no-string-refs": "error",
395
- "react/button-has-type": "error",
396
- "react/no-danger-with-children": "error",
397
360
  "react-hooks/rules-of-hooks": "error",
398
361
  "react-hooks/exhaustive-deps": "error",
399
362
  "jsx-a11y/alt-text": "error",
@@ -578,6 +541,9 @@
578
541
  "files": [
579
542
  "**/*.{md,mdx}"
580
543
  ],
544
+ "rules": {
545
+ "react/react-in-jsx-scope": "off"
546
+ },
581
547
  "globals": {
582
548
  "React": "readonly"
583
549
  }
@@ -327,47 +327,10 @@
327
327
  "jsdoc/require-property-name": "error",
328
328
  "jsdoc/require-returns": "error",
329
329
  "jsdoc/require-returns-description": "warn",
330
- "react/jsx-no-target-blank": "error",
331
- "react/jsx-no-undef": "error",
332
- "react/no-danger": "warn",
333
- "react/no-direct-mutation-state": "error",
334
- "react/no-unknown-property": "error",
335
330
  "react/no-children-prop": "error",
336
- "react/self-closing-comp": "error",
337
- "react/void-dom-elements-no-children": "error",
338
- "react/jsx-key": [
339
- "error",
340
- {
341
- "checkFragmentShorthand": true
342
- }
343
- ],
331
+ "react/no-direct-mutation-state": "error",
344
332
  "react/jsx-no-comment-textnodes": "error",
345
- "react/jsx-no-duplicate-props": "error",
346
- "react/jsx-no-useless-fragment": [
347
- "error",
348
- {
349
- "allowExpressions": true
350
- }
351
- ],
352
- "react/jsx-pascal-case": "error",
353
- "react/jsx-boolean-value": [
354
- "error",
355
- "never"
356
- ],
357
- "react/jsx-curly-brace-presence": [
358
- "error",
359
- {
360
- "props": "never",
361
- "children": "never"
362
- }
363
- ],
364
- "react/iframe-missing-sandbox": "error",
365
333
  "react/no-array-index-key": "error",
366
- "react/jsx-no-constructed-context-values": "error",
367
- "react/style-prop-object": "error",
368
- "react/no-string-refs": "error",
369
- "react/button-has-type": "error",
370
- "react/no-danger-with-children": "error",
371
334
  "react-hooks/rules-of-hooks": "error",
372
335
  "react-hooks/exhaustive-deps": "error",
373
336
  "jsx-a11y/alt-text": "error",
@@ -431,7 +394,7 @@
431
394
  "allowExpressions": true,
432
395
  "allowTypedFunctionExpressions": true,
433
396
  "allowHigherOrderFunctions": true,
434
- "allowIIFE": true
397
+ "allowIIFEs": true
435
398
  }
436
399
  ],
437
400
  "@typescript-eslint/prefer-enum-initializers": "error",
@@ -458,7 +421,6 @@
458
421
  "unicorn/prefer-set-size": "error",
459
422
  "unicorn/explicit-length-check": "error",
460
423
  "unicorn/switch-case-braces": "error",
461
- "react/no-multi-comp": "error",
462
424
  "jsx-a11y/no-static-element-interactions": "error",
463
425
  "complexity": [
464
426
  "error",
@@ -707,6 +669,9 @@
707
669
  "files": [
708
670
  "**/*.{md,mdx}"
709
671
  ],
672
+ "rules": {
673
+ "react/react-in-jsx-scope": "off"
674
+ },
710
675
  "globals": {
711
676
  "React": "readonly"
712
677
  }
@@ -331,47 +331,10 @@
331
331
  "jsdoc/require-returns-description": "warn",
332
332
  "node/no-exports-assign": "error",
333
333
  "node/no-path-concat": "error",
334
- "react/jsx-no-target-blank": "error",
335
- "react/jsx-no-undef": "error",
336
- "react/no-danger": "warn",
337
- "react/no-direct-mutation-state": "error",
338
- "react/no-unknown-property": "error",
339
334
  "react/no-children-prop": "error",
340
- "react/self-closing-comp": "error",
341
- "react/void-dom-elements-no-children": "error",
342
- "react/jsx-key": [
343
- "error",
344
- {
345
- "checkFragmentShorthand": true
346
- }
347
- ],
335
+ "react/no-direct-mutation-state": "error",
348
336
  "react/jsx-no-comment-textnodes": "error",
349
- "react/jsx-no-duplicate-props": "error",
350
- "react/jsx-no-useless-fragment": [
351
- "error",
352
- {
353
- "allowExpressions": true
354
- }
355
- ],
356
- "react/jsx-pascal-case": "error",
357
- "react/jsx-boolean-value": [
358
- "error",
359
- "never"
360
- ],
361
- "react/jsx-curly-brace-presence": [
362
- "error",
363
- {
364
- "props": "never",
365
- "children": "never"
366
- }
367
- ],
368
- "react/iframe-missing-sandbox": "error",
369
337
  "react/no-array-index-key": "error",
370
- "react/jsx-no-constructed-context-values": "error",
371
- "react/style-prop-object": "error",
372
- "react/no-string-refs": "error",
373
- "react/button-has-type": "error",
374
- "react/no-danger-with-children": "error",
375
338
  "react-hooks/rules-of-hooks": "error",
376
339
  "react-hooks/exhaustive-deps": "error",
377
340
  "jsx-a11y/alt-text": "error",
@@ -435,7 +398,7 @@
435
398
  "allowExpressions": true,
436
399
  "allowTypedFunctionExpressions": true,
437
400
  "allowHigherOrderFunctions": true,
438
- "allowIIFE": true
401
+ "allowIIFEs": true
439
402
  }
440
403
  ],
441
404
  "@typescript-eslint/prefer-enum-initializers": "error",
@@ -462,7 +425,6 @@
462
425
  "unicorn/prefer-set-size": "error",
463
426
  "unicorn/explicit-length-check": "error",
464
427
  "unicorn/switch-case-braces": "error",
465
- "react/no-multi-comp": "error",
466
428
  "jsx-a11y/no-static-element-interactions": "error",
467
429
  "complexity": [
468
430
  "error",
@@ -711,6 +673,9 @@
711
673
  "files": [
712
674
  "**/*.{md,mdx}"
713
675
  ],
676
+ "rules": {
677
+ "react/react-in-jsx-scope": "off"
678
+ },
714
679
  "globals": {
715
680
  "React": "readonly"
716
681
  }
@@ -1,7 +1,7 @@
1
1
  import { Linter } from 'eslint';
2
2
 
3
3
  interface ConfigOptions {
4
- /** Enable React 19+ rules (Hooks, Compiler, JSX-A11y, Server Components) */
4
+ /** Enable React 19+ rules via `@eslint-react` (Hooks, DOM, Web API leaks, JSX-A11y) */
5
5
  react?: boolean;
6
6
  /** Enable Node.js-specific rules and globals */
7
7
  node?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-config-setup",
3
- "version": "0.2.7",
3
+ "version": "0.3.0",
4
4
  "description": "Pre-generated, permutation-based ESLint flat configs for modern TypeScript & React projects",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -81,14 +81,15 @@
81
81
  "eslint-plugin-package-json": "^0.89.2",
82
82
  "eslint-plugin-perfectionist": "^5.6.0",
83
83
  "eslint-plugin-playwright": "^2.9.0",
84
- "eslint-plugin-react": "^7.37.5",
84
+ "@eslint-react/eslint-plugin": "^2.13.0",
85
+ "@stylistic/eslint-plugin": "^4.2.0",
85
86
  "eslint-plugin-react-hooks": "^7.0.1",
86
87
  "eslint-plugin-react-refresh": "^0.5.2",
87
88
  "eslint-plugin-react-you-might-not-need-an-effect": "^0.9.2",
88
89
  "eslint-plugin-regexp": "^3.0.0",
89
90
  "eslint-plugin-security": "^4.0.0",
90
91
  "eslint-plugin-sonarjs": "^4.0.0",
91
- "eslint-plugin-storybook": "^10.2.14",
92
+ "eslint-plugin-storybook": "^10.2.15",
92
93
  "eslint-plugin-testing-library": "^7.16.0",
93
94
  "eslint-plugin-unicorn": "^63.0.0",
94
95
  "eslint-plugin-unused-imports": "^4.4.1",