11import * as parserBase from "@typescript-eslint/parser" ;
22import { TSESLint } from "@typescript-eslint/utils" ;
3- import { Linter } from "@typescript-eslint/utils/ts-eslint" ;
3+ import { FlatConfig , Linter } from "@typescript-eslint/utils/ts-eslint" ;
44
5- import { rules } from "./rules" ;
5+ import { recommendedRulesConfig , rules } from "./rules" ;
66
77export const parser : TSESLint . FlatConfig . Parser = {
88 meta : parserBase . meta ,
@@ -27,13 +27,46 @@ const { name, version } =
2727// Plugin not fully initialized yet.
2828// See https://eslint.org/docs/latest/extend/plugins#configs-in-plugins
2929const plugin = {
30- // `configs`, assigned later
31- configs : { } ,
32- rules,
3330 meta : {
3431 name,
3532 version,
3633 } ,
34+ // `configs`, assigned later
35+ configs : { } ,
36+ rules,
3737} satisfies Linter . Plugin ;
3838
39+ // Config base for all configurations
40+ const configBase : FlatConfig . Config = {
41+ name : "tailwindcss/base" ,
42+ plugins : {
43+ tailwindcss : plugin ,
44+ } ,
45+ settings : {
46+ tailwindcss : { } ,
47+ } ,
48+ files : [ "**/*.ts" , "**/*.tsx" , "**/*.js" , "**/*.jsx" ] ,
49+ languageOptions : {
50+ parserOptions : {
51+ ecmaVersion : "latest" ,
52+ sourceType : "module" ,
53+ ecmaFeatures : {
54+ jsx : true ,
55+ } ,
56+ } ,
57+ } ,
58+ } ;
59+
60+ // Prepare configs here so we can reference `plugin`
61+ const sharedConfigs : FlatConfig . SharedConfigs = {
62+ recommended : {
63+ ...configBase ,
64+ name : "tailwindcss/recommended" ,
65+ rules : recommendedRulesConfig ,
66+ } ,
67+ } ;
68+
69+ // Inject shared configs into the plugin
70+ Object . assign ( plugin . configs , sharedConfigs ) ;
71+
3972export default plugin ;
0 commit comments