From 8060934ee9fd8aef3ed0af26439c6c11cec0b043 Mon Sep 17 00:00:00 2001 From: James Brunton Date: Wed, 29 Oct 2025 11:58:04 +0000 Subject: [PATCH] Add linting to ensure correct imports style is used (#4759) # Description of Changes Add linting to ensure correct imports style is used. I've disabled the linting for two imports which use relative paths because the files they're importing are siblings to core and proprietary. They could probs be imported by `@app/../assets/xxx` but it seems silly. The other thing we could do is add an explicit `@assets` path alias or something, but it seemed more complex than just disabling the lint for those two imports at this stage. We could always do it in the future if we want to import stuff up there a lot in the future. --- frontend/eslint.config.mjs | 9 +++++++++ frontend/src/core/components/shared/LocalIcon.tsx | 2 +- frontend/src/index.tsx | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/frontend/eslint.config.mjs b/frontend/eslint.config.mjs index c4c826183..89928251b 100644 --- a/frontend/eslint.config.mjs +++ b/frontend/eslint.config.mjs @@ -27,6 +27,15 @@ export default defineConfig( tseslint.configs.recommended, { rules: { + 'no-restricted-imports': [ + 'error', + { + patterns: [ + ".*", // Disallow any relative imports (they should be '@app/x/y/z' or similar) + "src/*", // Disallow any absolute imports (they should be '@app/x/y/z' or similar) + ], + }, + ], '@typescript-eslint/no-empty-object-type': [ 'error', { diff --git a/frontend/src/core/components/shared/LocalIcon.tsx b/frontend/src/core/components/shared/LocalIcon.tsx index 9701f6ace..a9b7198fc 100644 --- a/frontend/src/core/components/shared/LocalIcon.tsx +++ b/frontend/src/core/components/shared/LocalIcon.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { addCollection, Icon } from '@iconify/react'; -import iconSet from '../../../assets/material-symbols-icons.json'; +import iconSet from '../../../assets/material-symbols-icons.json'; // eslint-disable-line no-restricted-imports -- Outside app paths // Load icons synchronously at import time - guaranteed to be ready on first render let iconsLoaded = false; diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx index c8e9081c1..c52fb3753 100644 --- a/frontend/src/index.tsx +++ b/frontend/src/index.tsx @@ -1,6 +1,6 @@ import '@mantine/core/styles.css'; import '@mantine/dates/styles.css'; -import '../vite-env.d.ts'; +import '../vite-env.d.ts'; // eslint-disable-line no-restricted-imports -- Outside app paths import '@app/styles/index.css'; // Import global styles import React from 'react'; import ReactDOM from 'react-dom/client';