From 86887e6985a93d6138170adc6597d9c60904299f Mon Sep 17 00:00:00 2001 From: Anettkva Date: Wed, 9 Sep 2026 11:37:00 +0200 Subject: [PATCH 1/4] fix(eslint): lint plain JS files under Node globals, not just ts/tsx Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01QBMskeuxnXKiWCxQXzJyD2 --- t29-project-1/eslint.config.js | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/t29-project-1/eslint.config.js b/t29-project-1/eslint.config.js index ef614d2..bb07b17 100644 --- a/t29-project-1/eslint.config.js +++ b/t29-project-1/eslint.config.js @@ -1,9 +1,9 @@ -import js from '@eslint/js' -import globals from 'globals' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' -import tseslint from 'typescript-eslint' -import { defineConfig, globalIgnores } from 'eslint/config' +import js from '@eslint/js'; +import globals from 'globals'; +import reactHooks from 'eslint-plugin-react-hooks'; +import reactRefresh from 'eslint-plugin-react-refresh'; +import tseslint from 'typescript-eslint'; +import { defineConfig, globalIgnores } from 'eslint/config'; export default defineConfig([ globalIgnores(['dist']), @@ -19,4 +19,13 @@ export default defineConfig([ globals: globals.browser, }, }, -]) + { + // Plain JS files (e.g. server/**/*.js, root config files) run under Node, not the browser. + files: ['**/*.{js,cjs,mjs}'], + extends: [js.configs.recommended], + languageOptions: { + globals: globals.node, + sourceType: 'module', + }, + }, +]); From 0ca824ca4141d685ac21860c7ed6c0d62ceff9f4 Mon Sep 17 00:00:00 2001 From: Anettkva Date: Wed, 9 Sep 2026 11:37:06 +0200 Subject: [PATCH 2/4] chore(lint): extend prettier check and pre-commit hook to whole repo Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01QBMskeuxnXKiWCxQXzJyD2 --- t29-project-1/.husky/pre-commit | 5 ++--- t29-project-1/package.json | 10 +++++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/t29-project-1/.husky/pre-commit b/t29-project-1/.husky/pre-commit index 36af219..6911329 100644 --- a/t29-project-1/.husky/pre-commit +++ b/t29-project-1/.husky/pre-commit @@ -1,4 +1,3 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - +#!/usr/bin/env sh +cd -- "$(dirname -- "$0")/.." || exit 1 npx lint-staged diff --git a/t29-project-1/package.json b/t29-project-1/package.json index 878378c..fef2092 100644 --- a/t29-project-1/package.json +++ b/t29-project-1/package.json @@ -8,16 +8,16 @@ "build": "tsc -b && vite build", "lint": "eslint .", "preview": "vite preview", - "format": "prettier --write \"src/**/*.{js,ts,tsx,jsx,json,css,md}\"", - "prettier:check": "prettier --check \"src/**/*.{js,ts,tsx,jsx,json,css,md}\"", - "prepare": "husky install" + "format": "prettier --write .", + "prettier:check": "prettier --check .", + "prepare": "cd .. && husky t29-project-1/.husky" }, "lint-staged": { - "src/**/*.{js,ts,tsx,jsx}": [ + "**/*.{js,ts,tsx,jsx}": [ "eslint --fix", "prettier --write" ], - "src/**/*.{json,css,md}": [ + "**/*.{json,css,md}": [ "prettier --write" ] }, From 4c8cda3d09f1f07e5a4798da1a25fb32ff93e226 Mon Sep 17 00:00:00 2001 From: Anettkva Date: Wed, 9 Sep 2026 12:09:48 +0200 Subject: [PATCH 3/4] style: reformat codebase with prettier --- t29-project-1/README.md | 10 ++++------ t29-project-1/package-lock.json | 30 ------------------------------ t29-project-1/src/App.tsx | 16 ++++++++-------- t29-project-1/src/main.tsx | 12 ++++++------ t29-project-1/vite.config.ts | 6 +++--- 5 files changed, 21 insertions(+), 53 deletions(-) diff --git a/t29-project-1/README.md b/t29-project-1/README.md index 2d31cb6..d8cb914 100644 --- a/t29-project-1/README.md +++ b/t29-project-1/README.md @@ -40,16 +40,15 @@ export default defineConfig([ // other options... }, }, -]) - +]); ``` You can also install [eslint-plugin-react-x](https://npmx.dev/package/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://npmx.dev/package/eslint-plugin-react-dom) for React-specific lint rules: ```js // eslint.config.js -import reactX from 'eslint-plugin-react-x' -import reactDom from 'eslint-plugin-react-dom' +import reactX from 'eslint-plugin-react-x'; +import reactDom from 'eslint-plugin-react-dom'; export default defineConfig([ globalIgnores(['dist']), @@ -70,6 +69,5 @@ export default defineConfig([ // other options... }, }, -]) - +]); ``` diff --git a/t29-project-1/package-lock.json b/t29-project-1/package-lock.json index 5a10040..2b37c6f 100644 --- a/t29-project-1/package-lock.json +++ b/t29-project-1/package-lock.json @@ -681,9 +681,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -701,9 +698,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -721,9 +715,6 @@ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -741,9 +732,6 @@ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -761,9 +749,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -781,9 +766,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -2052,9 +2034,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -2076,9 +2055,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -2100,9 +2076,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -2124,9 +2097,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ diff --git a/t29-project-1/src/App.tsx b/t29-project-1/src/App.tsx index 9ca8e8d..251febe 100644 --- a/t29-project-1/src/App.tsx +++ b/t29-project-1/src/App.tsx @@ -1,11 +1,11 @@ -import { useState } from 'react' -import heroImg from './assets/hero.png' -import reactLogo from './assets/react.svg' -import viteLogo from './assets/vite.svg' -import './App.css' +import { useState } from 'react'; +import heroImg from './assets/hero.png'; +import reactLogo from './assets/react.svg'; +import viteLogo from './assets/vite.svg'; +import './App.css'; function App() { - const [count, setCount] = useState(0) + const [count, setCount] = useState(0); return ( <> @@ -116,7 +116,7 @@ function App() {
- ) + ); } -export default App +export default App; diff --git a/t29-project-1/src/main.tsx b/t29-project-1/src/main.tsx index bef5202..df655ea 100644 --- a/t29-project-1/src/main.tsx +++ b/t29-project-1/src/main.tsx @@ -1,10 +1,10 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import './index.css' -import App from './App.tsx' +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; +import './index.css'; +import App from './App.tsx'; createRoot(document.getElementById('root')!).render( - , -) + +); diff --git a/t29-project-1/vite.config.ts b/t29-project-1/vite.config.ts index 9982072..a74ec84 100644 --- a/t29-project-1/vite.config.ts +++ b/t29-project-1/vite.config.ts @@ -1,7 +1,7 @@ -import react from '@vitejs/plugin-react' -import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; // https://vite.dev/config/ export default defineConfig({ plugins: [react()], -}) +}); From 8a082db3731394af0645bc8e039df3474afce4ce Mon Sep 17 00:00:00 2001 From: Anettkva Date: Wed, 9 Sep 2026 12:11:25 +0200 Subject: [PATCH 4/4] chore: add .env to gitignore to prevent api key leaks --- t29-project-1/.gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/t29-project-1/.gitignore b/t29-project-1/.gitignore index a547bf3..de28197 100644 --- a/t29-project-1/.gitignore +++ b/t29-project-1/.gitignore @@ -22,3 +22,8 @@ dist-ssr *.njsproj *.sln *.sw? + +# Environment variables +.env +.env.* +!.env.example