11// @ts -check
22
3+ import { dirname } from 'node:path' ;
4+ import { fileURLToPath } from 'node:url' ;
5+
36import js from '@eslint/js' ;
47import vitest from '@vitest/eslint-plugin' ;
58import { defineConfig , globalIgnores } from 'eslint/config' ;
69import prettierConfig from 'eslint-config-prettier/flat' ;
710import { importX } from 'eslint-plugin-import-x' ;
11+ import nodePlugin from 'eslint-plugin-n' ;
812import globals from 'globals' ;
913import tseslint from 'typescript-eslint' ;
1014
15+ const __dirname = dirname ( fileURLToPath ( import . meta. url ) ) ;
16+
1117const config = defineConfig (
1218 js . configs . recommended ,
1319 tseslint . configs . recommendedTypeChecked ,
1420 importX . flatConfigs . recommended ,
1521 importX . flatConfigs . typescript ,
22+ nodePlugin . configs [ 'flat/recommended' ] ,
1623 {
1724 name : 'Language options' ,
1825 files : [ '**/*.{js,mjs,cjs,ts,mts}' ] ,
@@ -25,7 +32,7 @@ const config = defineConfig(
2532 parser : tseslint . parser ,
2633 parserOptions : {
2734 projectService : true ,
28- tsconfigRootDir : import . meta . dirname ,
35+ tsconfigRootDir : __dirname ,
2936 } ,
3037 } ,
3138 } ,
@@ -73,6 +80,10 @@ const config = defineConfig(
7380 'import-x/no-mutable-exports' : 'error' ,
7481 'import-x/no-named-default' : 'error' ,
7582 'import-x/no-relative-packages' : 'warn' ,
83+
84+ // Node
85+ // This one is covered by TypeScript
86+ 'n/no-missing-import' : 'off' ,
7687 } ,
7788 } ,
7889 {
0 commit comments