1+ import { defineConfig } from "eslint/config" ;
2+ import { fixupConfigRules , fixupPluginRules } from "@eslint/compat" ;
3+ import prettier from "eslint-plugin-prettier" ;
4+ import _import from "eslint-plugin-import" ;
5+ import path from "node:path" ;
6+ import { fileURLToPath } from "node:url" ;
7+ import js from "@eslint/js" ;
8+ import { FlatCompat } from "@eslint/eslintrc" ;
9+
10+ const __filename = fileURLToPath ( import . meta. url ) ;
11+ const __dirname = path . dirname ( __filename ) ;
12+ const compat = new FlatCompat ( {
13+ baseDirectory : __dirname ,
14+ recommendedConfig : js . configs . recommended ,
15+ allConfig : js . configs . all
16+ } ) ;
17+
18+ export default defineConfig ( [ {
19+ extends : fixupConfigRules ( compat . extends (
20+ "next/core-web-vitals" ,
21+ "next/typescript" ,
22+ "plugin:prettier/recommended" ,
23+ "plugin:import/errors" ,
24+ "plugin:import/warnings" ,
25+ "plugin:import/typescript" ,
26+ ) ) ,
27+
28+ plugins : {
29+ prettier : fixupPluginRules ( prettier ) ,
30+ import : fixupPluginRules ( _import ) ,
31+ } ,
32+
33+ rules : {
34+ // Code quality
35+ "no-console" : "warn" ,
36+ "no-debugger" : "error" ,
37+ "no-unused-vars" : "off" , // Handled by TS version above
38+
39+ // Import sorting and cleanliness
40+ "import/order" : [ "error" , {
41+ groups : [
42+ "builtin" ,
43+ "external" ,
44+ "internal" ,
45+ "parent" ,
46+ "sibling" ,
47+ "index" ,
48+ "object" ,
49+ "type" ,
50+ ] ,
51+
52+ "newlines-between" : "always" ,
53+
54+ alphabetize : {
55+ order : "asc" ,
56+ caseInsensitive : true ,
57+ } ,
58+ } ] ,
59+
60+ "import/newline-after-import" : "error" ,
61+ "import/no-duplicates" : "error" ,
62+
63+ // Prettier takes over formatting rules now
64+ "prettier/prettier" : "error" ,
65+ } ,
66+ } ] ) ;
0 commit comments