Skip to content

Commit b775c40

Browse files
fix: linting errors + migrate to new config system (#415)
1 parent 9a8bb49 commit b775c40

File tree

17 files changed

+225
-153
lines changed

17 files changed

+225
-153
lines changed

frontend/.eslintignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

frontend/.eslintrc.cjs

Lines changed: 0 additions & 29 deletions
This file was deleted.

frontend/eslint.config.mjs

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import { fixupConfigRules, fixupPluginRules } from "@eslint/compat";
2+
import { FlatCompat } from "@eslint/eslintrc";
3+
import js from "@eslint/js";
4+
import typescriptEslint from "@typescript-eslint/eslint-plugin";
5+
import tsParser from "@typescript-eslint/parser";
6+
import reactRefresh from "eslint-plugin-react-refresh";
7+
import globals from "globals";
8+
import path from "node:path";
9+
import { fileURLToPath } from "node:url";
10+
const __filename = fileURLToPath(import.meta.url);
11+
const __dirname = path.dirname(__filename);
12+
13+
const compat = new FlatCompat({
14+
baseDirectory: __dirname,
15+
recommendedConfig: js.configs.recommended,
16+
allConfig: js.configs.all,
17+
});
18+
19+
export default [
20+
{
21+
ignores: [
22+
"**/dist",
23+
"**/node_modules",
24+
"**/dist",
25+
"src/components/ui/navigation-menu.tsx",
26+
],
27+
},
28+
...fixupConfigRules(
29+
compat.extends(
30+
"eslint:recommended",
31+
"plugin:@typescript-eslint/recommended",
32+
"plugin:react-hooks/recommended",
33+
"prettier"
34+
)
35+
),
36+
{
37+
plugins: {
38+
"react-refresh": reactRefresh,
39+
"@typescript-eslint": fixupPluginRules(typescriptEslint),
40+
},
41+
42+
languageOptions: {
43+
globals: {
44+
...globals.browser,
45+
},
46+
47+
parser: tsParser,
48+
},
49+
files: ["**/*.ts", "**/*.tsx"],
50+
rules: {
51+
"react-refresh/only-export-components": [
52+
"warn",
53+
{
54+
allowConstantExport: true,
55+
},
56+
],
57+
58+
"@typescript-eslint/ban-ts-comment": [
59+
"error",
60+
{
61+
"ts-ignore": "allow-with-description",
62+
},
63+
],
64+
65+
"@typescript-eslint/no-unused-vars": [
66+
"warn",
67+
{
68+
args: "none",
69+
},
70+
],
71+
72+
"no-console": [
73+
"error",
74+
{
75+
allow: ["info", "warn", "error"],
76+
},
77+
],
78+
79+
"no-constant-binary-expression": "error",
80+
curly: "error",
81+
},
82+
},
83+
];

frontend/lint-staged.config.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
export default {
2-
"src/**/*.{ts,tsx,json}": ["eslint --fix --max-warnings 0","prettier --write"],
2+
"src/**/*.{ts,tsx,json}": [
3+
"eslint --fix --no-warn-ignored --max-warnings 0",
4+
"prettier --write",
5+
],
36
"platform_specific/**/*.ts": ["prettier --write"],
47
"package.json": ["prettier --write"],
58
"src/**/*.ts": () => "tsc --noEmit",

frontend/package.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
"prepare:wails": "shx cp ./platform_specific/wails/src/utils/*.ts src/utils/",
1212
"prepare:http": "shx cp ./platform_specific/http/src/utils/*.ts src/utils/",
1313
"lint": "yarn lint:js && yarn tsc:compile && yarn format:fix --report-unused-disable-directives --max-warnings 0",
14-
"lint:js": "eslint src --ext .js,.ts,.tsx --max-warnings 0",
15-
"lint:js:fix": "eslint src --ext .js,.ts,.tsx --fix",
14+
"lint:js": "eslint src --max-warnings 0",
15+
"lint:js:fix": "eslint src --fix",
1616
"tsc:compile": "tsc --noEmit",
1717
"format": "prettier --check '**/*.(md|json)' 'src/**/*.(js|ts|tsx)' '!src/assets/**/*.json' 'platform_specific/**/*.ts'",
1818
"format:fix": "prettier --loglevel silent --write '**/*.(md|json)' 'src/**/*.(js|ts|tsx)' '!src/assets/**/*.json' 'platform_specific/**/*.ts'",
@@ -59,6 +59,9 @@
5959
"devDependencies": {
6060
"@commitlint/cli": "^19.3.0",
6161
"@commitlint/config-conventional": "^19.2.2",
62+
"@eslint/compat": "^1.0.3",
63+
"@eslint/eslintrc": "^3.1.0",
64+
"@eslint/js": "^9.4.0",
6265
"@tailwindcss/aspect-ratio": "^0.4.2",
6366
"@tailwindcss/forms": "^0.5.7",
6467
"@tailwindcss/typography": "^0.5.10",
@@ -71,10 +74,11 @@
7174
"@typescript-eslint/parser": "^7.11.0",
7275
"@vitejs/plugin-react-swc": "^3.3.2",
7376
"autoprefixer": "^10.4.16",
74-
"eslint": "^8.45.0",
77+
"eslint": "^9.4.0",
7578
"eslint-config-prettier": "^9.1.0",
7679
"eslint-plugin-react-hooks": "^4.6.0",
7780
"eslint-plugin-react-refresh": "^0.4.3",
81+
"globals": "^15.4.0",
7882
"husky": "^9.0.11",
7983
"lint-staged": "^15.2.5",
8084
"postcss": "^8.4.32",

frontend/src/components/redirects/SetupRedirect.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export function SetupRedirect() {
1616
if (didSetupThisSession) {
1717
// ensure redirect does not happen as node may still be starting
1818
// which would then incorrectly redirect to the login page
19-
console.log("Skipping setup redirect on initial setup");
19+
console.info("Skipping setup redirect on initial setup");
2020
return;
2121
}
2222
if (info.setupCompleted) {

frontend/src/components/ui/badge.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ function Badge({ className, variant, ...props }: BadgeProps) {
3333
);
3434
}
3535

36+
// eslint-disable-next-line react-refresh/only-export-components
3637
export { Badge, badgeVariants };

frontend/src/components/ui/button.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import * as React from "react";
21
import { Slot } from "@radix-ui/react-slot";
32
import { cva, type VariantProps } from "class-variance-authority";
3+
import * as React from "react";
44

55
import { cn } from "src/lib/utils";
66

@@ -54,4 +54,5 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
5454
);
5555
Button.displayName = "Button";
5656

57+
// eslint-disable-next-line react-refresh/only-export-components
5758
export { Button, buttonVariants };

frontend/src/components/ui/navigation-menu.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import * as React from "react";
21
import { ChevronDownIcon } from "@radix-ui/react-icons";
32
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
43
import { cva } from "class-variance-authority";
4+
import * as React from "react";
55

66
import { cn } from "src/lib/utils";
77

@@ -116,13 +116,13 @@ NavigationMenuIndicator.displayName =
116116
NavigationMenuPrimitive.Indicator.displayName;
117117

118118
export {
119-
navigationMenuTriggerStyle,
120119
NavigationMenu,
121-
NavigationMenuList,
122-
NavigationMenuItem,
123120
NavigationMenuContent,
124-
NavigationMenuTrigger,
125-
NavigationMenuLink,
126121
NavigationMenuIndicator,
122+
NavigationMenuItem,
123+
NavigationMenuLink,
124+
NavigationMenuList,
125+
NavigationMenuTrigger,
126+
navigationMenuTriggerStyle,
127127
NavigationMenuViewport,
128128
};

frontend/src/components/ui/theme-provider.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,13 @@ export function ThemeProvider({
6262
);
6363
}
6464

65+
// eslint-disable-next-line react-refresh/only-export-components
6566
export const useTheme = () => {
6667
const context = useContext(ThemeProviderContext);
6768

68-
if (context === undefined)
69+
if (context === undefined) {
6970
throw new Error("useTheme must be used within a ThemeProvider");
71+
}
7072

7173
return context;
7274
};

0 commit comments

Comments
 (0)