1- import path from 'node:path' ;
21import { fileURLToPath } from 'node:url' ;
32
43import { includeIgnoreFile } from '@eslint/compat' ;
5- import { FlatCompat } from '@eslint/eslintrc' ;
6- import js from '@eslint/js' ;
7- import typescriptEslint from '@typescript-eslint/eslint-plugin' ;
8- import tsParser from '@typescript-eslint/parser' ;
4+ import eslint from '@eslint/js' ;
5+ import { defineConfig } from 'eslint/config' ;
96import prettier from 'eslint-plugin-prettier' ;
107import simpleImportSort from 'eslint-plugin-simple-import-sort' ;
8+ import tsdoc from 'eslint-plugin-tsdoc' ;
119import globals from 'globals' ;
10+ import tseslint from 'typescript-eslint' ;
1211
13- const __filename = fileURLToPath ( import . meta. url ) ;
14- const __dirname = path . dirname ( __filename ) ;
15- const gitignorePath = path . resolve ( __dirname , '.gitignore' ) ;
12+ const gitignorePath = fileURLToPath ( new URL ( '.gitignore' , import . meta. url ) ) ;
1613
17- const compat = new FlatCompat ( {
18- baseDirectory : __dirname ,
19- recommendedConfig : js . configs . recommended ,
20- allConfig : js . configs . all ,
21- } ) ;
22-
23- export default [
14+ export default defineConfig ( [
2415 includeIgnoreFile ( gitignorePath ) ,
2516
26- ...compat . extends (
27- 'eslint:recommended' ,
28- 'plugin:@typescript-eslint/recommended' ,
29- ) ,
30-
3117 {
18+ files : [ '**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}' ] ,
19+
3220 plugins : {
33- '@typescript-eslint' : typescriptEslint ,
3421 'simple-import-sort' : simpleImportSort ,
22+ eslint,
3523 prettier,
24+ tsdoc,
3625 } ,
3726
27+ extends : [
28+ eslint . configs . recommended ,
29+ tseslint . configs . recommended ,
30+ tseslint . configs . recommendedTypeChecked ,
31+ tseslint . configs . strictTypeChecked ,
32+ tseslint . configs . stylisticTypeChecked ,
33+ ] ,
34+
3835 languageOptions : {
3936 globals : {
4037 ...globals . browser ,
4138 ...globals . mocha ,
4239 ...globals . node ,
4340 } ,
44- parser : tsParser ,
41+ parserOptions : {
42+ project : [ 'tsconfig.build.json' , 'tsconfig.test.json' ] ,
43+ tsconfigRootDir : import . meta. dirname ,
44+ } ,
4545 } ,
4646
4747 rules : {
@@ -62,4 +62,4 @@ export default [
6262 '@typescript-eslint/no-require-imports' : 'off' ,
6363 } ,
6464 } ,
65- ] ;
65+ ] ) ;
0 commit comments