diff --git a/eslint.config.mjs b/eslint.config.mjs index 805361011..14d908731 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,21 +1,27 @@ import nx from "@nx/eslint-plugin"; +import reactHooks from "eslint-plugin-react-hooks"; export default [ ...nx.configs["flat/base"], ...nx.configs["flat/typescript"], ...nx.configs["flat/javascript"], - { "ignores": [ - "**/dist", - "**/vite.config.*.timestamp*", - "**/vitest.config.*.timestamp*" + { + files: ['**/*.{ts,tsx}'], + plugins: { 'react-hooks': reactHooks }, + rules: { + 'react-hooks/rules-of-hooks': 'error', + } + }, + { + "ignores": [ + "**/dist", + "**/vite.config.*.timestamp*", + "**/vitest.config.*.timestamp*" ] }, { files: [ - "**/*.ts", "**/*.tsx", - "**/*.js", - "**/*.jsx" ], rules: { "@nx/enforce-module-boundaries": [ diff --git a/package.json b/package.json index 41d65b90a..1917e473e 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "eslint": "^9.8.0", "eslint-config-prettier": "^10.0.0", "eslint-plugin-playwright": "^2.0.0", + "eslint-plugin-react-hooks": "5.2.0", "happy-dom": "~18.0.0", "jiti": "2.5.1", "jsdom": "~26.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9171bdfdc..83b9fb1b6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -111,6 +111,9 @@ importers: eslint-plugin-playwright: specifier: ^2.0.0 version: 2.2.2(eslint@9.34.0(jiti@2.5.1)) + eslint-plugin-react-hooks: + specifier: 5.2.0 + version: 5.2.0(eslint@9.34.0(jiti@2.5.1)) happy-dom: specifier: ~18.0.0 version: 18.0.1 @@ -8535,6 +8538,12 @@ packages: peerDependencies: eslint: '>=8.40.0' + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + eslint-plugin-svelte@3.11.0: resolution: {integrity: sha512-KliWlkieHyEa65aQIkRwUFfHzT5Cn4u3BQQsu3KlkJOs7c1u7ryn84EWaOjEzilbKgttT4OfBURA8Uc4JBSQIw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -16770,6 +16779,8 @@ snapshots: '@ckeditor/ckeditor5-typing': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-autosave@46.0.2': dependencies: @@ -16788,6 +16799,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-block-quote@46.0.2': dependencies: @@ -16798,6 +16811,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-bookmark@46.0.2': dependencies: @@ -16919,8 +16934,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-watchdog': 46.0.2 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-dev-build-tools@43.1.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.2)': dependencies: @@ -17074,6 +17087,8 @@ snapshots: '@ckeditor/ckeditor5-upload': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-balloon@46.0.2': dependencies: @@ -17110,6 +17125,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-multi-root@46.0.2': dependencies: @@ -17132,8 +17149,6 @@ snapshots: '@ckeditor/ckeditor5-table': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-emoji@46.0.2': dependencies: @@ -17451,6 +17466,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-mention@46.0.2(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -17603,8 +17620,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-restricted-editing@46.0.2': dependencies: @@ -23549,6 +23564,8 @@ snapshots: ckeditor5-collaboration@46.0.2: dependencies: '@ckeditor/ckeditor5-collaboration-core': 46.0.2 + transitivePeerDependencies: + - supports-color ckeditor5-premium-features@46.0.2(bufferutil@4.0.9)(ckeditor5@46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41))(utf-8-validate@6.0.5): dependencies: @@ -25283,6 +25300,10 @@ snapshots: eslint: 9.34.0(jiti@2.5.1) globals: 13.24.0 + eslint-plugin-react-hooks@5.2.0(eslint@9.34.0(jiti@2.5.1)): + dependencies: + eslint: 9.34.0(jiti@2.5.1) + eslint-plugin-svelte@3.11.0(eslint@9.34.0(jiti@2.5.1))(svelte@5.38.3)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.2.1)(typescript@5.9.2)): dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1))