11// @ts -check
22
3+ import { dirname } from 'node:path' ;
4+ import { fileURLToPath } from 'node:url' ;
5+
36import js from '@eslint/js' ;
47import { defineConfig , globalIgnores } from 'eslint/config' ;
58import prettierConfig from 'eslint-config-prettier/flat' ;
69import { importX } from 'eslint-plugin-import-x' ;
710import jest from 'eslint-plugin-jest' ;
811import * as jestFormatting from 'eslint-plugin-jest-formatting' ;
12+ import nodePlugin from 'eslint-plugin-n' ;
913import globals from 'globals' ;
1014import tseslint from 'typescript-eslint' ;
1115
16+ const __dirname = dirname ( fileURLToPath ( import . meta. url ) ) ;
17+
1218const config = defineConfig (
1319 js . configs . recommended ,
1420 tseslint . configs . recommendedTypeChecked ,
1521 importX . flatConfigs . recommended ,
1622 importX . flatConfigs . typescript ,
23+ nodePlugin . configs [ 'flat/recommended-module' ] ,
1724 {
1825 name : 'Language options' ,
1926 files : [ '**/*.{js,mjs,cjs,ts,mts}' ] ,
@@ -26,12 +33,12 @@ const config = defineConfig(
2633 parser : tseslint . parser ,
2734 parserOptions : {
2835 projectService : true ,
29- tsconfigRootDir : import . meta . dirname ,
36+ tsconfigRootDir : __dirname ,
3037 } ,
3138 } ,
3239 } ,
3340 {
34- name : 'Rules overrides for all files' ,
41+ name : 'Overrides for all files' ,
3542 rules : {
3643 // Base
3744 'max-lines-per-function' : 'off' ,
@@ -74,6 +81,10 @@ const config = defineConfig(
7481 'import-x/no-mutable-exports' : 'error' ,
7582 'import-x/no-named-default' : 'error' ,
7683 'import-x/no-relative-packages' : 'warn' ,
84+
85+ // Node
86+ 'n/no-missing-import' : 'off' , // handled by import-x and TS
87+ 'n/no-missing-require' : 'off' , // handled by import-x and TS
7788 } ,
7889 } ,
7990 {
0 commit comments