1- import { defineConfig } from 'eslint/config' ;
1+ import path from 'node:path' ;
2+ import { fileURLToPath } from 'node:url' ;
3+ import { defineConfig , includeIgnoreFile } from 'eslint/config' ;
24import eslint from '@eslint/js' ;
3- import { configs , parser } from 'typescript-eslint' ;
45import stylistic from '@stylistic/eslint-plugin' ;
6+ import { configs , parser } from 'typescript-eslint' ;
57import { importX , createNodeResolver } from 'eslint-plugin-import-x' ;
68import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript' ;
7- // @ts -expect-error ignore type errors
8- import pluginPromise from 'eslint-plugin-promise' ;
9- import { configs as awscdkConfigs } from 'eslint-plugin-awscdk' ;
10-
11- import { includeIgnoreFile } from '@eslint/compat' ;
12- import path from 'node:path' ;
13- import { fileURLToPath } from 'node:url' ;
9+ import { configs as cdkPluginConfigs } from 'eslint-plugin-awscdk' ;
1410
1511const __filename = fileURLToPath ( import . meta. url ) ;
1612const __dirname = path . dirname ( __filename ) ;
17- const gitignorePath = path . resolve ( __dirname , '.gitignore' ) ;
13+ const gitignorePath = path . resolve ( __dirname , './. gitignore' ) ;
1814
1915export default defineConfig (
16+ includeIgnoreFile ( gitignorePath ) ,
2017 {
2118 ignores : [
22- ...( includeIgnoreFile ( gitignorePath ) . ignores || [ ] ) ,
2319 '**/*.d.ts' ,
20+ '*.{js,jsx}' ,
2421 'src/tsconfig.json' ,
2522 'src/stories' ,
2623 '**/*.css' ,
2724 'node_modules/**/*' ,
25+ './.next/*' ,
2826 'out' ,
29- 'cdk.out ' ,
27+ '.storybook ' ,
3028 'dist' ,
29+ '.vinxi' ,
30+ '.output' ,
3131 ] ,
3232 } ,
3333 eslint . configs . recommended ,
34- configs . strict ,
35- configs . stylistic ,
36- pluginPromise . configs [ 'flat/recommended' ] ,
34+ ...configs . strict ,
35+ ...configs . stylistic ,
36+ importX . flatConfigs . recommended ,
37+ importX . flatConfigs . typescript ,
3738 {
38- files : [ '**/*.ts' , '*.js' ] ,
39- plugins : {
40- 'import-x' : importX ,
41- '@stylistic' : stylistic ,
42- } ,
39+ files : [
40+ 'bin/**/*.ts' ,
41+ 'lib/**/*.ts' ,
42+ 'lambda/**/*.ts' ,
43+ 'eslint.config.ts' ,
44+ ] ,
4345 languageOptions : {
46+ parser,
4447 ecmaVersion : 'latest' ,
4548 sourceType : 'module' ,
46- parser,
4749 parserOptions : {
50+ tsconfigRootDir : __dirname ,
4851 projectService : {
4952 allowDefaultProject : [ 'eslint.config.ts' ] ,
5053 } ,
51- tsconfigRootDir : __dirname ,
5254 } ,
5355 } ,
54- extends : [
55- 'import-x/flat/recommended' ,
56- awscdkConfigs . recommended ,
57- ] ,
56+ plugins : {
57+ '@stylistic' : stylistic ,
58+ } ,
5859 settings : {
5960 'import-x/resolver-next' : [
6061 createTypeScriptImportResolver ( {
@@ -63,14 +64,31 @@ export default defineConfig(
6364 createNodeResolver ( ) ,
6465 ] ,
6566 } ,
67+ extends : [
68+ cdkPluginConfigs . recommended ,
69+ ] ,
6670 rules : {
6771 '@stylistic/semi' : [ 'error' , 'always' ] ,
6872 '@stylistic/indent' : [ 'error' , 2 ] ,
6973 '@stylistic/comma-dangle' : [ 'error' , 'always-multiline' ] ,
70- '@stylistic/arrow-parens' : [ 'error' , 'always' ] ,
7174 '@stylistic/quotes' : [ 'error' , 'single' ] ,
72- 'awscdk/no-construct-stack-suffix' : 'off' ,
73- 'awscdk/pascal-case-construct-id' : 'off' ,
75+
76+ 'import-x/order' : [
77+ 'error' ,
78+ {
79+ 'groups' : [
80+ // Imports of builtins are first
81+ 'builtin' ,
82+ // Then sibling and parent imports. They can be mingled together
83+ [ 'sibling' , 'parent' ] ,
84+ // Then index file imports
85+ 'index' ,
86+ // Then any arcane TypeScript imports
87+ 'object' ,
88+ // Then the omitted imports: internal, external, type, unknown
89+ ] ,
90+ } ,
91+ ] ,
7492 } ,
7593 } ,
7694) ;
0 commit comments