diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 5e6b472f5..4f353f6ae 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -19,5 +19,39 @@ export default defineConfig([ ecmaVersion: 2020, globals: globals.browser, }, + rules: { + // Keep core React Hooks rules + 'react-hooks/rules-of-hooks': 'error', + 'react-hooks/exhaustive-deps': 'warn', + // Disable React Compiler rules (too strict for non-compiler codebases) + 'react-hooks/static-components': 'off', + 'react-hooks/set-state-in-effect': 'off', + 'react-hooks/purity': 'off', + 'react-hooks/immutability': 'off', + 'react-hooks/preserve-manual-memoization': 'off', + 'react-hooks/refs': 'off', + }, + }, + // Relaxed rules for test files + { + files: ['**/__tests__/**/*.{ts,tsx}', '**/*.test.{ts,tsx}', '**/*.spec.{ts,tsx}'], + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], + 'react-refresh/only-export-components': 'off', + }, + }, + // Files that legitimately export non-components (contexts, hooks, utilities) + { + files: [ + '**/contexts/**/*.{ts,tsx}', + '**/hooks/**/*.{ts,tsx}', + '**/components/IconPicker.tsx', + '**/components/Layout.tsx', + '**/components/HMSErrorModal.tsx', + ], + rules: { + 'react-refresh/only-export-components': 'off', + }, }, ]) diff --git a/frontend/src/components/ModelViewer.tsx b/frontend/src/components/ModelViewer.tsx index 471d99b34..20b20b847 100644 --- a/frontend/src/components/ModelViewer.tsx +++ b/frontend/src/components/ModelViewer.tsx @@ -162,7 +162,7 @@ async function parse3MF(arrayBuffer: ArrayBuffer): Promise<{ objects: Map