Skip to content

Commit 79b4eb3

Browse files
committed
Reconfigure eslint; Fix lint issues
1 parent 2d0e2ba commit 79b4eb3

14 files changed

Lines changed: 488 additions & 121 deletions

docusaurus.config.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
import { Config } from "@docusaurus/types";
2-
import {
3-
Options as PresetClassicOptions,
4-
ThemeConfig as PresetClassicThemeConfig,
5-
} from "@docusaurus/preset-classic";
62
import { join } from "node:path";
73

84
import badgeRemarkPlugin from "./src/remark/badge";
@@ -151,7 +147,7 @@ const config: Config = {
151147
googleTagManager: {
152148
containerId: "GTM-K5CRKPFN",
153149
},
154-
} as PresetClassicOptions,
150+
},
155151
],
156152
],
157153

@@ -331,7 +327,7 @@ const config: Config = {
331327
apiKey: "4233fb28085f0a6ad2922954762bf39b",
332328
indexName: "imgproxy",
333329
},
334-
} as PresetClassicThemeConfig,
330+
},
335331

336332
markdown: {
337333
hooks: {

eslint.config.mjs

Lines changed: 46 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,90 @@
11
// @ts-check
22

3-
import * as globals from "globals";
3+
import globals from "globals";
44

5+
import { defineConfig } from "eslint/config";
56
import eslint from "@eslint/js";
6-
import tseslint from "typescript-eslint";
7-
import { flatConfigs as importPlugin } from "eslint-plugin-import";
7+
import { configs as tseslint } from "typescript-eslint";
8+
import { flatConfigs as importPlugin } from "eslint-plugin-import-x";
89
import reactPlugin from "eslint-plugin-react";
910
import reactHooksPlugin from "eslint-plugin-react-hooks";
1011
import jsxA11yPugin from "eslint-plugin-jsx-a11y";
1112
import prettierPlugin from "eslint-plugin-prettier/recommended";
1213

13-
export default tseslint.config(
14+
import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript";
15+
16+
export default defineConfig(
1417
{
1518
ignores: [
1619
"**/.idea/",
1720
"**/.vscode/",
1821
"**/.docusaurus/",
1922
"**/node_modules/",
2023
"build/",
24+
".netlify/",
2125
],
2226
},
27+
28+
eslint.configs.recommended,
29+
tseslint.recommendedTypeChecked,
30+
importPlugin.recommended,
31+
importPlugin.typescript,
32+
reactPlugin.configs.flat?.recommended,
33+
reactPlugin.configs.flat?.["jsx-runtime"],
34+
reactHooksPlugin.configs.flat.recommended,
35+
jsxA11yPugin.flatConfigs.recommended,
36+
prettierPlugin,
37+
2338
{
24-
extends: [
25-
eslint.configs.recommended,
26-
...tseslint.configs.recommendedTypeChecked,
27-
importPlugin.recommended,
28-
reactPlugin.configs.flat?.recommended,
29-
reactPlugin.configs.flat?.["jsx-runtime"],
30-
{
31-
plugins: { "react-hooks": reactHooksPlugin },
32-
rules: { ...reactHooksPlugin.configs.recommended.rules },
33-
},
34-
jsxA11yPugin.flatConfigs.recommended,
35-
prettierPlugin,
36-
],
39+
files: ["**/*.{js,jsx,ts,tsx,mjs}"],
3740

3841
languageOptions: {
3942
...reactPlugin.configs.flat?.recommended.languageOptions,
4043

4144
globals: {
4245
...globals.browser,
4346
...globals.node,
47+
...globals.commonjs,
48+
...globals.es2024,
4449
window: true,
4550
},
4651

47-
ecmaVersion: 5,
48-
sourceType: "commonjs",
52+
ecmaVersion: "latest",
53+
sourceType: "module",
4954

5055
parserOptions: {
51-
// projectService: true,
52-
projectService: {
53-
// allowDefaultProject: ["eslint.config.mjs"],
54-
defaultProject: "tsconfig.json",
55-
},
56-
tsconfigRootDir: import.meta.dirname,
56+
projectService: true,
5757
},
5858
},
5959

6060
settings: {
6161
react: {
6262
version: "detect",
6363
},
64-
65-
"import/extensions": [".ts", ".tsx"],
66-
67-
"import/resolver": {
68-
node: {
69-
paths: ["front"],
70-
},
71-
},
64+
"import-x/resolver-next": [
65+
createTypeScriptImportResolver({
66+
alwaysTryTypes: true,
67+
project: "./tsconfig.json",
68+
// `@docusaurus/tsconfig` sets `baseUrl` to its own package dir under
69+
// `node_modules/`, which mis-anchors the `@site/*` -> `./*` mapping
70+
// there. Re-anchor at the project root.
71+
alias: {
72+
"@site": [import.meta.dirname],
73+
},
74+
}),
75+
],
7276
},
7377

7478
rules: {
75-
"react/jsx-uses-react": 2,
76-
"@typescript-eslint/no-unused-vars": 2,
77-
78-
// TODO Need to fix the errors in project and delete all the rows below
79-
// basic
80-
"no-async-promise-executor": 0,
81-
"import/no-unresolved": 0,
82-
83-
// react
84-
"react/prop-types": 0,
85-
"react/no-find-dom-node": 0,
86-
"react/no-unescaped-entities": 0,
87-
"react-hooks/exhaustive-deps": 0,
88-
89-
// ts
90-
"@typescript-eslint/no-unsafe-member-access": 0,
91-
"@typescript-eslint/no-unsafe-assignment": 0,
92-
"@typescript-eslint/no-unsafe-call": 0,
93-
"@typescript-eslint/no-unsafe-argument": 0,
94-
"@typescript-eslint/no-unsafe-return": 0,
95-
"@typescript-eslint/no-explicit-any": 0,
96-
"@typescript-eslint/restrict-template-expressions": 0,
97-
"@typescript-eslint/restrict-plus-operands": 0,
98-
"@typescript-eslint/no-floating-promises": 0,
99-
"@typescript-eslint/no-misused-promises": 0,
100-
"@typescript-eslint/no-empty-interface": 0,
101-
102-
// a11y
103-
"jsx-a11y/click-events-have-key-events": 0,
104-
"jsx-a11y/no-static-element-interactions": 0,
105-
"jsx-a11y/img-redundant-alt": 0,
106-
"jsx-a11y/alt-text": 0,
107-
"jsx-a11y/interactive-supports-focus": 0,
79+
"react/jsx-uses-react": "error",
80+
"@typescript-eslint/no-unused-vars": "error",
81+
// Docusaurus virtual modules — declared as ambient types in
82+
// `@docusaurus/module-type-aliases` and resolved by webpack at build
83+
// time. They have no on-disk path for the resolver to find.
84+
"import-x/no-unresolved": [
85+
"error",
86+
{ ignore: ["^@theme-(original|init)/", "^@generated/"] },
87+
],
10888
},
10989
},
11090
);

package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
},
1717
"dependencies": {
1818
"@docusaurus/core": "^3.10.1",
19+
"@docusaurus/plugin-content-docs": "^3.10.1",
1920
"@docusaurus/preset-classic": "^3.10.1",
2021
"@mdx-js/react": "^3.1.1",
2122
"clsx": "^1.2.1",
@@ -34,11 +35,15 @@
3435
"@eslint/js": "^9.39.4",
3536
"@evilmartians/lefthook": "^2.1.6",
3637
"@netlify/edge-functions": "^3.0.6",
38+
"@types/eslint-plugin-jsx-a11y": "^6.10.1",
3739
"@types/mdast": "4.0.4",
40+
"@types/node": "^25.6.0",
41+
"@types/prismjs": "^1.26.6",
42+
"@types/react": "^19.2.14",
3843
"eslint": "^9.39.4",
3944
"eslint-config-prettier": "^10.1.8",
40-
"eslint-import-resolver-alias": "^1.1.2",
41-
"eslint-plugin-import": "^2.32.0",
45+
"eslint-import-resolver-typescript": "^4.4.4",
46+
"eslint-plugin-import-x": "^4.16.2",
4247
"eslint-plugin-jsx-a11y": "^6.10.2",
4348
"eslint-plugin-prettier": "^5.5.5",
4449
"eslint-plugin-react": "^7.37.5",

0 commit comments

Comments
 (0)