1- import eslint from '@eslint/js' ;
1+ /* eslint-disable import-x/no-named-as-default-member */
22import { includeIgnoreFile } from '@eslint/compat' ;
3- import { defineConfig , globalIgnores } from 'eslint/config' ;
4- import { configs as tseslintConfigs } from 'typescript-eslint' ;
3+ import css from '@eslint/css' ;
4+ import eslint from '@eslint/js' ;
5+ import html from '@html-eslint/eslint-plugin' ;
6+ import stylistic from '@stylistic/eslint-plugin' ;
7+ import { importX } from 'eslint-plugin-import-x' ;
8+ import jsonc from 'eslint-plugin-jsonc' ;
59import jsxA11y from 'eslint-plugin-jsx-a11y' ;
6- import solidTsConfig from 'eslint-plugin-solid/configs/typescript ' ;
10+ import perfectionist from 'eslint-plugin-perfectionist ' ;
711import prettierRecommended from 'eslint-plugin-prettier/recommended' ;
8- import jsonc from 'eslint-plugin-jsonc ' ;
12+ import solidTsConfig from 'eslint-plugin-solid/configs/typescript ' ;
913import yml from 'eslint-plugin-yml' ;
10- import { importX } from 'eslint-plugin-import-x' ;
11- import stylistic from '@stylistic/eslint-plugin' ;
14+ import { defineConfig , globalIgnores } from 'eslint/config' ;
1215import { fileURLToPath } from 'node:url' ;
13- import { createTypeScriptImportResolver } from 'eslint-import-resolver- typescript' ;
16+ import tseslint from 'typescript-eslint ' ;
1417
1518export default defineConfig (
16- eslint . configs . recommended ,
17- tseslintConfigs . strictTypeChecked ,
18- tseslintConfigs . stylisticTypeChecked ,
19- jsxA11y . flatConfigs . strict ,
20- // @ts -expect-error Argument of type is not assignable to parameter of type 'InfiniteArray<ConfigWithExtends>'ts(2345)
21- solidTsConfig ,
22- importX . flatConfigs . recommended ,
23- importX . flatConfigs . typescript ,
24- stylistic . configs . customize ( {
25- semi : true ,
26- } ) ,
27- prettierRecommended ,
2819 includeIgnoreFile ( fileURLToPath ( new URL ( '.gitignore' , import . meta. url ) ) ) ,
2920 globalIgnores ( [ 'pnpm-lock.yaml' ] ) ,
3021 {
@@ -34,26 +25,76 @@ export default defineConfig(
3425 ecmaFeatures : {
3526 jsx : true ,
3627 } ,
28+ extraFileExtensions : [ '.css' ] ,
3729 projectService : true ,
3830 tsconfigRootDir : import . meta. dirname ,
3931 } ,
4032 } ,
33+ } ,
34+ {
35+ extends : [
36+ eslint . configs . recommended ,
37+ tseslint . configs . strictTypeChecked ,
38+ tseslint . configs . stylisticTypeChecked ,
39+ jsxA11y . flatConfigs . strict ,
40+ // @ts -expect-error Types of property create are incompatible. (ts 2322)
41+ solidTsConfig ,
42+ // @ts -expect-error Types of property languageOptions are incompatible. (ts 2322)
43+ importX . flatConfigs . recommended ,
44+ // @ts -expect-error Types of property languageOptions are incompatible. (ts 2322)
45+ importX . flatConfigs . typescript ,
46+ stylistic . configs . customize ( {
47+ jsx : false ,
48+ semi : true ,
49+ } ) ,
50+ perfectionist . configs [ 'recommended-natural' ] ,
51+ prettierRecommended ,
52+ ] ,
53+ files : [ '**/*.{ts,tsx}' ] ,
4154 rules : {
4255 '@typescript-eslint/restrict-template-expressions' : [
4356 'error' ,
4457 { allowNumber : true } ,
4558 ] ,
4659 } ,
47- settings : {
48- 'import-x/resolver-next' : [ createTypeScriptImportResolver ( ) ] ,
60+ } ,
61+ {
62+ extends : [
63+ jsonc . configs [ 'flat/recommended-with-jsonc' ] ,
64+ jsonc . configs [ 'flat/prettier' ] ,
65+ prettierRecommended ,
66+ ] ,
67+ files : [ '**/*.json' ] ,
68+ } ,
69+ {
70+ extends : [
71+ yml . configs [ 'flat/recommended' ] ,
72+ yml . configs [ 'flat/prettier' ] ,
73+ prettierRecommended ,
74+ ] ,
75+ files : [ '**/*.{yml,yaml}' ] ,
76+ } ,
77+ {
78+ extends : [ 'css/recommended' , prettierRecommended ] ,
79+ files : [ '**/*.css' ] ,
80+ language : 'css/css' ,
81+ plugins : { css } ,
82+ rules : {
83+ 'css/no-invalid-at-rules' : 'off' ,
4984 } ,
5085 } ,
51- jsonc . configs [ 'flat/recommended-with-jsonc' ] ,
52- jsonc . configs [ 'flat/prettier' ] ,
53- yml . configs [ 'flat/recommended' ] ,
54- yml . configs [ 'flat/prettier' ] ,
5586 {
56- files : [ '**/*.{json,yml,yaml}' ] ,
57- ...tseslintConfigs . disableTypeChecked ,
87+ extends : [ 'html/recommended' ] ,
88+ files : [ '**/*.html' ] ,
89+ language : 'html/html' ,
90+ plugins : { html } ,
91+ rules : {
92+ 'html/attrs-newline' : [
93+ 'error' ,
94+ { closeStyle : 'newline' , ifAttrsMoreThan : 3 } ,
95+ ] ,
96+ 'html/indent' : [ 'error' , 2 ] ,
97+ 'html/no-trailing-spaces' : 'error' ,
98+ } ,
5899 } ,
59100) ;
0 commit comments