11// @ts -check
22
3+ import { defineConfig } from 'eslint/config' ;
34import eslint from '@eslint/js' ;
45import stylistic from '@stylistic/eslint-plugin' ;
5- import tseslint from 'typescript-eslint' ;
6+ import { parser , configs } from 'typescript-eslint' ;
67import importPlugin from 'eslint-plugin-import' ;
7-
8- import solid from 'eslint-plugin-solid' ;
9-
10-
11- import { FlatCompat } from '@eslint/eslintrc' ;
12-
13- const compat = new FlatCompat ( ) ;
8+ import pluginPromise from 'eslint-plugin-promise' ;
9+ import solid from "eslint-plugin-solid/configs/typescript" ;
1410
1511import { includeIgnoreFile } from '@eslint/compat' ;
1612import path from 'node:path' ;
@@ -20,7 +16,7 @@ const __filename = fileURLToPath(import.meta.url);
2016const __dirname = path . dirname ( __filename ) ;
2117const gitignorePath = path . resolve ( __dirname , '.gitignore' ) ;
2218
23- export default tseslint . config (
19+ export default defineConfig (
2420 includeIgnoreFile ( gitignorePath ) ,
2521 {
2622 ignores : [
@@ -34,22 +30,28 @@ export default tseslint.config(
3430 ] ,
3531 } ,
3632 eslint . configs . recommended ,
37- ...tseslint . configs . strict ,
38- ...tseslint . configs . stylistic ,
39- importPlugin . flatConfigs . recommended ,
33+ ...configs . strict ,
34+ ...configs . stylistic ,
35+ // @ts -expect-error eslint-plugin-promise has no types
36+ pluginPromise . configs [ 'flat/recommended' ] ,
4037 {
41- files : [ 'src/**/*.{ts,tsx}' , 'api/**/*.ts' ] ,
38+ files : [ 'src/**/*.{ts,tsx}' ] ,
39+ ...solid ,
4240 languageOptions : {
41+ parser,
42+ ecmaVersion : 'latest' ,
43+ sourceType : 'module' ,
4344 parserOptions : {
44- ecmaVersion : 'latest ' ,
45- sourceType : 'module' ,
45+ project : './tsconfig.json ' ,
46+ tsconfigRootDir : import . meta . dirname ,
4647 } ,
4748 } ,
49+ extends : [
50+ importPlugin . flatConfigs . recommended ,
51+ importPlugin . flatConfigs . typescript ,
52+ ] ,
4853 plugins : {
4954 '@stylistic' : stylistic ,
50- '@stylistic/ts' : stylistic ,
51- '@stylistic/jsx' : stylistic ,
52- solid,
5355 } ,
5456 settings : {
5557 'import/parsers' : {
@@ -58,19 +60,21 @@ export default tseslint.config(
5860 } ,
5961 'import/internal-regex' : '^~/' ,
6062 'import/resolver' : {
61- node : {
62- extensions : [ '.ts' , '.tsx' ] ,
63- } ,
64- typescript : {
65- alwaysTryTypes : true ,
66- } ,
63+ node : true ,
64+ typescript : true ,
6765 } ,
6866 } ,
6967 rules : {
7068 '@stylistic/semi' : [ 'error' , 'always' ] ,
71- // '@stylistic/indent': ['error', 2],
69+ '@stylistic/indent' : [ 'error' , 2 ] ,
7270 '@stylistic/comma-dangle' : [ 'error' , 'always-multiline' ] ,
7371 '@stylistic/quotes' : [ 'error' , 'single' ] ,
74- }
72+ 'import/namespace' : 'off' ,
73+ 'import/no-unresolved' : 'off' ,
74+ 'import/default' : 'off' ,
75+ 'import/no-duplicates' : 'off' ,
76+ 'import/no-named-as-default' : 'off' ,
77+ 'import/no-named-as-default-member' : 'off' ,
78+ } ,
7579 } ,
7680) ;
0 commit comments