1+ const { FlatCompat } = require ( "@eslint/eslintrc" ) ;
2+ const js = require ( "@eslint/js" ) ;
3+ const tsParser = require ( "@typescript-eslint/parser" ) ;
4+ const react = require ( "eslint-plugin-react" ) ;
5+ const reactHooks = require ( "eslint-plugin-react-hooks" ) ;
6+ const typescript = require ( "@typescript-eslint/eslint-plugin" ) ;
7+ const storybook = require ( "eslint-plugin-storybook" ) ;
8+ const globals = require ( "globals" ) ;
9+
10+ const compat = new FlatCompat ( {
11+ baseDirectory : __dirname ,
12+ recommendedConfig : js . configs . recommended ,
13+ allConfig : js . configs . all
14+ } ) ;
15+
16+ module . exports = [
17+ // Global ignores
18+ {
19+ ignores : [
20+ "**/node_modules/**" ,
21+ "**/dist/**" ,
22+ "**/*.md" ,
23+ "**/jest.config.js" ,
24+ "**/vite.config.ts" ,
25+ "**/.eslintrc.cjs" ,
26+ "**/site/**" ,
27+ "apps/next-12/**" ,
28+ "**/.yarnrc.yml" ,
29+ "**/.eslintrc.*js" ,
30+ "**/*.config.*js" ,
31+ "**/eslint-config-sistent/**" ,
32+ "apps/design-system/**" ,
33+ "examples/**" ,
34+ "**/build/**" ,
35+ "**/coverage/**" ,
36+ ]
37+ } ,
38+
39+ // Test files configuration
40+ {
41+ files : [ "**/*.test.{js,jsx,ts,tsx}" , "**/__tests__/**/*.{js,jsx,ts,tsx}" ] ,
42+
43+ languageOptions : {
44+ globals : {
45+ ...globals . browser ,
46+ ...globals . node ,
47+ ...globals . jest ,
48+ React : "readonly" ,
49+ JSX : "readonly" ,
50+ NodeJS : "readonly" ,
51+ } ,
52+ parser : tsParser ,
53+ ecmaVersion : "latest" ,
54+ sourceType : "module" ,
55+ parserOptions : {
56+ requireConfigFile : false ,
57+ ecmaFeatures : {
58+ jsx : true ,
59+ } ,
60+ } ,
61+ } ,
62+
63+ plugins : {
64+ react,
65+ "react-hooks" : reactHooks ,
66+ "@typescript-eslint" : typescript ,
67+ storybook,
68+ } ,
69+
70+ rules : {
71+ // ESLint recommended rules
72+ ...js . configs . recommended . rules ,
73+
74+ // TypeScript recommended rules
75+ ...typescript . configs . recommended . rules ,
76+
77+ // React hooks recommended rules
78+ ...reactHooks . configs . recommended . rules ,
79+
80+ // Storybook recommended rules
81+ ...storybook . configs . recommended . rules ,
82+ } ,
83+
84+ settings : {
85+ react : {
86+ version : "detect" ,
87+ } ,
88+ } ,
89+
90+ linterOptions : {
91+ reportUnusedDisableDirectives : true ,
92+ } ,
93+ } ,
94+
95+ // Main configuration - matches your old .eslintrc.js exactly
96+ {
97+ files : [ "**/*.{js,jsx,ts,tsx}" ] ,
98+ ignores : [ "**/*.test.{js,jsx,ts,tsx}" , "**/__tests__/**/*.{js,jsx,ts,tsx}" ] ,
99+
100+ languageOptions : {
101+ globals : {
102+ ...globals . browser ,
103+ ...globals . node ,
104+ React : "readonly" ,
105+ JSX : "readonly" ,
106+ NodeJS : "readonly" ,
107+ } ,
108+ parser : tsParser ,
109+ ecmaVersion : "latest" ,
110+ sourceType : "module" ,
111+ parserOptions : {
112+ requireConfigFile : false ,
113+ ecmaFeatures : {
114+ jsx : true ,
115+ } ,
116+ } ,
117+ } ,
118+
119+ plugins : {
120+ react,
121+ "react-hooks" : reactHooks ,
122+ "@typescript-eslint" : typescript ,
123+ storybook,
124+ } ,
125+
126+ rules : {
127+ // ESLint recommended rules
128+ ...js . configs . recommended . rules ,
129+
130+ // TypeScript recommended rules
131+ ...typescript . configs . recommended . rules ,
132+
133+ // React hooks recommended rules
134+ ...reactHooks . configs . recommended . rules ,
135+
136+ // Storybook recommended rules
137+ ...storybook . configs . recommended . rules ,
138+ } ,
139+
140+ settings : {
141+ react : {
142+ version : "detect" ,
143+ } ,
144+ } ,
145+
146+ linterOptions : {
147+ reportUnusedDisableDirectives : true ,
148+ } ,
149+ }
150+ ] ;
0 commit comments