@@ -2,11 +2,7 @@ import eslintReact from '@eslint-react/eslint-plugin';
22import markdown from '@eslint/markdown' ;
33import vitest from '@vitest/eslint-plugin' ;
44import jestDom from 'eslint-plugin-jest-dom' ;
5- import reactDom from 'eslint-plugin-react-dom' ;
65import reactHooks from 'eslint-plugin-react-hooks' ;
7- import reactNamingConvention from 'eslint-plugin-react-naming-convention' ;
8- import reactRsc from 'eslint-plugin-react-rsc' ;
9- import reactWebApi from 'eslint-plugin-react-web-api' ;
106import sonarjs from 'eslint-plugin-sonarjs' ;
117import testingLibrary from 'eslint-plugin-testing-library' ;
128import { defineConfig , globalIgnores } from 'eslint/config' ;
@@ -29,10 +25,6 @@ export default defineConfig([
2925 // @ts -expect-error
3026 'react-hooks' : reactHooks ,
3127 '@eslint-react' : eslintReact ,
32- '@eslint-react/rsc' : reactRsc ,
33- '@eslint-react/dom' : reactDom ,
34- '@eslint-react/web-api' : reactWebApi ,
35- '@eslint-react/naming-convention' : reactNamingConvention ,
3628 sonarjs,
3729 '@typescript-eslint' : tseslint . plugin
3830 } ,
@@ -288,7 +280,7 @@ export default defineConfig([
288280 // https://www.eslint-react.xyz/docs/rules/overview
289281 /*
290282// copy all the rules from the rules table for easy pasting
291- function getRules(id, prefix ) {
283+ function getRules(id) {
292284 return (
293285 Iterator.from(
294286 document
@@ -298,38 +290,33 @@ function getRules(id, prefix) {
298290 .querySelectorAll('tr a')
299291 )
300292 // map link to rule declaration
301- .map((a) => `'@eslint-react/${prefix}${a.textContent }': 1,`)
293+ .map((a) => `'@eslint-react/${a.getAttribute('href') }': 1,`)
302294 );
303295}
304296copy(
305297 Iterator.from([
306- getRules('x-rules', ''),
307- getRules('rsc-rules', 'rsc/'),
308- getRules('dom-rules', 'dom/'),
309- getRules('web-api-rules', 'web-api/'),
310- getRules('naming-convention-rules', 'naming-convention/'),
298+ getRules('x-rules'),
299+ getRules('jsx-rules'),
300+ getRules('rsc-rules'),
301+ getRules('dom-rules'),
302+ getRules('web-api-rules'),
303+ getRules('naming-convention-rules'),
311304 ])
312305 .flatMap((x) => x)
313306 .toArray()
314307 .join('\n')
315308);
316309 */
317- '@eslint-react/jsx-dollar' : 1 ,
318- '@eslint-react/jsx-key-before-spread' : 1 ,
319- '@eslint-react/jsx-no-comment-textnodes' : 1 ,
320- '@eslint-react/jsx-shorthand-boolean' : 1 ,
321- '@eslint-react/jsx-shorthand-fragment' : 1 ,
322310 '@eslint-react/component-hook-factories' : 1 ,
323311 '@eslint-react/error-boundaries' : 1 ,
324312 '@eslint-react/exhaustive-deps' : 1 ,
325- '@eslint-react/immutability' : 0 ,
313+ '@eslint-react/immutability' : 1 ,
326314 '@eslint-react/no-access-state-in-setstate' : 1 ,
327315 '@eslint-react/no-array-index-key' : 0 ,
328316 '@eslint-react/no-children-count' : 1 ,
329317 '@eslint-react/no-children-for-each' : 1 ,
330318 '@eslint-react/no-children-map' : 1 ,
331319 '@eslint-react/no-children-only' : 1 ,
332- '@eslint-react/no-children-prop' : 1 ,
333320 '@eslint-react/no-children-to-array' : 1 ,
334321 '@eslint-react/no-class-component' : 1 ,
335322 '@eslint-react/no-clone-element' : 1 ,
@@ -367,7 +354,6 @@ copy(
367354 '@eslint-react/no-unused-props' : 1 ,
368355 '@eslint-react/no-unused-state' : 1 ,
369356 '@eslint-react/no-use-context' : 1 ,
370- '@eslint-react/no-useless-fragment' : [ 1 , { allowExpressions : false } ] ,
371357 '@eslint-react/prefer-destructuring-assignment' : 1 ,
372358 '@eslint-react/prefer-namespace-import' : 1 ,
373359 '@eslint-react/purity' : 1 ,
@@ -378,32 +364,37 @@ copy(
378364 '@eslint-react/unsupported-syntax' : 1 ,
379365 '@eslint-react/use-memo' : 1 ,
380366 '@eslint-react/use-state' : 1 ,
381- '@eslint-react/rsc/function-definition' : 1 ,
382- '@eslint-react/dom/no-dangerously-set-innerhtml' : 1 ,
383- '@eslint-react/dom/no-dangerously-set-innerhtml-with-children' : 1 ,
384- '@eslint-react/dom/no-find-dom-node' : 1 ,
385- '@eslint-react/dom/no-flush-sync' : 0 ,
386- '@eslint-react/dom/no-hydrate' : 1 ,
387- '@eslint-react/dom/no-missing-button-type' : 1 ,
388- '@eslint-react/dom/no-missing-iframe-sandbox' : 1 ,
389- '@eslint-react/dom/no-namespace' : 1 ,
390- '@eslint-react/dom/no-render' : 1 ,
391- '@eslint-react/dom/no-render-return-value' : 1 ,
392- '@eslint-react/dom/no-script-url' : 1 ,
393- '@eslint-react/dom/no-string-style-prop' : 1 ,
394- '@eslint-react/dom/no-unknown-property' : 0 ,
395- '@eslint-react/dom/no-unsafe-iframe-sandbox' : 1 ,
396- '@eslint-react/dom/no-unsafe-target-blank' : 1 ,
397- '@eslint-react/dom/no-use-form-state' : 1 ,
398- '@eslint-react/dom/no-void-elements-with-children' : 1 ,
399- '@eslint-react/dom/prefer-namespace-import' : 1 ,
400- '@eslint-react/web-api/no-leaked-event-listener' : 1 ,
401- '@eslint-react/web-api/no-leaked-interval' : 1 ,
402- '@eslint-react/web-api/no-leaked-resize-observer' : 1 ,
403- '@eslint-react/web-api/no-leaked-timeout' : 1 ,
404- '@eslint-react/naming-convention/context-name' : 1 ,
405- '@eslint-react/naming-convention/id-name' : 1 ,
406- '@eslint-react/naming-convention/ref-name' : 1 ,
367+ '@eslint-react/jsx-no-children-prop' : 1 ,
368+ '@eslint-react/jsx-no-children-prop-with-children' : 1 ,
369+ '@eslint-react/jsx-no-comment-textnodes' : 1 ,
370+ '@eslint-react/jsx-no-useless-fragment' : [ 1 , { allowExpressions : false } ] ,
371+ '@eslint-react/jsx-no-key-after-spread' : 1 ,
372+ '@eslint-react/jsx-no-namespace' : 1 ,
373+ '@eslint-react/rsc-function-definition' : 1 ,
374+ '@eslint-react/dom-no-dangerously-set-innerhtml' : 1 ,
375+ '@eslint-react/dom-no-dangerously-set-innerhtml-with-children' : 1 ,
376+ '@eslint-react/dom-no-find-dom-node' : 1 ,
377+ '@eslint-react/dom-no-flush-sync' : 0 ,
378+ '@eslint-react/dom-no-hydrate' : 1 ,
379+ '@eslint-react/dom-no-missing-button-type' : 1 ,
380+ '@eslint-react/dom-no-missing-iframe-sandbox' : 1 ,
381+ '@eslint-react/dom-no-render' : 1 ,
382+ '@eslint-react/dom-no-render-return-value' : 1 ,
383+ '@eslint-react/dom-no-script-url' : 1 ,
384+ '@eslint-react/dom-no-string-style-prop' : 1 ,
385+ '@eslint-react/dom-no-unknown-property' : 1 ,
386+ '@eslint-react/dom-no-unsafe-iframe-sandbox' : 1 ,
387+ '@eslint-react/dom-no-unsafe-target-blank' : 1 ,
388+ '@eslint-react/dom-no-use-form-state' : 1 ,
389+ '@eslint-react/dom-no-void-elements-with-children' : 1 ,
390+ '@eslint-react/dom-prefer-namespace-import' : 1 ,
391+ '@eslint-react/web-api-no-leaked-event-listener' : 1 ,
392+ '@eslint-react/web-api-no-leaked-interval' : 1 ,
393+ '@eslint-react/web-api-no-leaked-resize-observer' : 1 ,
394+ '@eslint-react/web-api-no-leaked-timeout' : 1 ,
395+ '@eslint-react/naming-convention-context-name' : 1 ,
396+ '@eslint-react/naming-convention-id-name' : 1 ,
397+ '@eslint-react/naming-convention-ref-name' : 1 ,
407398
408399 // SonarJS rules
409400 // https://github.com/SonarSource/SonarJS/blob/master/packages/jsts/src/rules/README.md#rules
0 commit comments