From 6d0932e44cf0dee537c9442b7e01aa792c21c015 Mon Sep 17 00:00:00 2001 From: Jonas Braathen Date: Mon, 31 Aug 2026 02:50:00 +0200 Subject: [PATCH] web: migrate eslint to flat config, replacing removed next lint --- web/.eslintrc.json | 3 --- web/eslint.config.mjs | 8 ++++++++ web/package.json | 2 +- web/src/components/layout/Header.tsx | 1 + web/src/components/search/SearchShell.tsx | 1 + 5 files changed, 11 insertions(+), 4 deletions(-) delete mode 100644 web/.eslintrc.json create mode 100644 web/eslint.config.mjs diff --git a/web/.eslintrc.json b/web/.eslintrc.json deleted file mode 100644 index bffb357..0000000 --- a/web/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/web/eslint.config.mjs b/web/eslint.config.mjs new file mode 100644 index 0000000..6c07dde --- /dev/null +++ b/web/eslint.config.mjs @@ -0,0 +1,8 @@ +import nextCoreWebVitals from "eslint-config-next/core-web-vitals"; + +export default [ + { + ignores: [".next/**", "node_modules/**", "src/gql/**", "next-env.d.ts"], + }, + ...nextCoreWebVitals, +]; diff --git a/web/package.json b/web/package.json index 4e74850..d893efd 100644 --- a/web/package.json +++ b/web/package.json @@ -6,7 +6,7 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint", + "lint": "eslint .", "test": "vitest run", "test:watch": "vitest", "codegen": "graphql-codegen", diff --git a/web/src/components/layout/Header.tsx b/web/src/components/layout/Header.tsx index 77dc93b..f2975d8 100644 --- a/web/src/components/layout/Header.tsx +++ b/web/src/components/layout/Header.tsx @@ -36,6 +36,7 @@ export const Header = () => { // hide menu on path change useEffect(() => { + // eslint-disable-next-line react-hooks/set-state-in-effect -- intentional: close the menu when navigation changes the path setShowMenu(false); }, [pathname]); diff --git a/web/src/components/search/SearchShell.tsx b/web/src/components/search/SearchShell.tsx index b59ea01..dd9875a 100644 --- a/web/src/components/search/SearchShell.tsx +++ b/web/src/components/search/SearchShell.tsx @@ -24,6 +24,7 @@ export function SearchShell({ const [inputValue, setInputValue] = useState(initialQuery); const [isPending, startTransition] = useTransition(); const lastPushedRef = useRef(initialQuery); + // eslint-disable-next-line react-hooks/refs -- deliberate: compares against the last debounced push; a stale read only briefly extends the spinner const fetching = isPending || inputValue !== lastPushedRef.current; const pushQuery = useDebouncedCallback((next: string) => {