@@ -14,11 +14,13 @@ import { importX } from 'eslint-plugin-import-x'
1414import globals from 'globals'
1515import tseslint , { type ConfigArray } from 'typescript-eslint'
1616
17+
1718const OPTIONS = {
1819 ENABLE_SCRIPT : true , // Set to enable typescript javascript file features
1920 ENABLE_TYPE_CHECKED : true , // Set to enable type features
20- ENABLE_PROJECT_BASE_TYPE_CHECKED : false , // Set to enable project-based type features
21- ENABLE_FRONTEND : false , // Set to enable Next.js, JSX, React, Reacts Hooks, and other frontend features
21+ ENABLE_PROJECT_BASE_TYPE_CHECKED : true , // Set to enable project-based type features
22+ ENABLE_FRONTEND : true , // Set to enable JSX, React, Reacts Hooks, and other frontend features
23+ ENABLE_NEXT : false , // Set to enable Next.js and other frontend features
2224 ENABLE_MARKDOWN : true , // Set to enable markdown file features
2325 ENABLE_JSON : true , // Set to enable json file features
2426 ENABLE_STYLESHEET : true , // Set to enable CSS, SCSS, SASS and other stylesheet features
@@ -52,53 +54,53 @@ if (OPTIONS.ENABLE_SCRIPT && OPTIONS.ENABLE_TYPE_CHECKED) {
5254 tsConfig . push (
5355 ...( OPTIONS . ENABLE_PROJECT_BASE_TYPE_CHECKED
5456 ? [
55- {
56- ignores : [ 'eslint.config.ts' ] ,
57- } ,
58- {
59- files : allScriptFiles ,
60- languageOptions : {
61- parserOptions : {
62- projectService : true ,
63- tsconfigRootDir : __dirname ,
64- } ,
57+ {
58+ ignores : [ 'eslint.config.ts' ] ,
59+ } ,
60+ {
61+ files : allScriptFiles ,
62+ languageOptions : {
63+ parserOptions : {
64+ projectService : true ,
65+ tsconfigRootDir : __dirname ,
6566 } ,
6667 } ,
67- {
68- ...tseslint . configs . strictTypeChecked [ 0 ] ,
69- files : allScriptFiles ,
70- } ,
71- {
72- ...tseslint . configs . strictTypeChecked [ 1 ] ,
73- files : allTsFiles ,
74- } ,
75- {
76- ...tseslint . configs . strictTypeChecked [ 2 ] ,
77- files : allScriptFiles ,
78- } ,
79- {
80- ...tseslint . configs . stylisticTypeChecked [ 2 ] ,
81- files : allScriptFiles ,
82- } ,
83- ]
68+ } ,
69+ {
70+ ...tseslint . configs . strictTypeChecked [ 0 ] ,
71+ files : allScriptFiles ,
72+ } ,
73+ {
74+ ...tseslint . configs . strictTypeChecked [ 1 ] ,
75+ files : allTsFiles ,
76+ } ,
77+ {
78+ ...tseslint . configs . strictTypeChecked [ 2 ] ,
79+ files : allScriptFiles ,
80+ } ,
81+ {
82+ ...tseslint . configs . stylisticTypeChecked [ 2 ] ,
83+ files : allScriptFiles ,
84+ } ,
85+ ]
8486 : [
85- {
86- ...tseslint . configs . strict [ 0 ] ,
87- files : allScriptFiles ,
88- } ,
89- {
90- ...tseslint . configs . strict [ 1 ] ,
91- files : allTsFiles ,
92- } ,
93- {
94- ...tseslint . configs . strict [ 2 ] ,
95- files : allScriptFiles ,
96- } ,
97- {
98- ...tseslint . configs . stylistic [ 2 ] ,
99- files : allScriptFiles ,
100- } ,
101- ] ) ,
87+ {
88+ ...tseslint . configs . strict [ 0 ] ,
89+ files : allScriptFiles ,
90+ } ,
91+ {
92+ ...tseslint . configs . strict [ 1 ] ,
93+ files : allTsFiles ,
94+ } ,
95+ {
96+ ...tseslint . configs . strict [ 2 ] ,
97+ files : allScriptFiles ,
98+ } ,
99+ {
100+ ...tseslint . configs . stylistic [ 2 ] ,
101+ files : allScriptFiles ,
102+ } ,
103+ ] ) ,
102104 )
103105}
104106
@@ -152,11 +154,20 @@ if (OPTIONS.ENABLE_SCRIPT) {
152154
153155const frontendConfig : ConfigArray = [ ]
154156if ( OPTIONS . ENABLE_FRONTEND ) {
155- frontendConfig . push (
156- ...compat . config ( {
157- extends : [ 'next/core-web-vitals' , 'next/typescript' ] ,
158- } ) ,
159- )
157+ if ( OPTIONS . ENABLE_NEXT ) {
158+ frontendConfig . push (
159+ ...compat . config ( {
160+ extends : [ 'next/core-web-vitals' , 'next/typescript' ] ,
161+ } ) ,
162+ )
163+ } else {
164+ frontendConfig . push (
165+ ...compat . extends (
166+ 'plugin:react/recommended' ,
167+ 'plugin:react-hooks/recommended'
168+ ) ,
169+ )
170+ }
160171 for ( const nextConfigElement of frontendConfig ) {
161172 nextConfigElement . files ??= allScriptFiles
162173 }
@@ -220,6 +231,8 @@ const customConfig: ConfigArray = defineConfig([
220231 '@typescript-eslint/no-unnecessary-type-parameters' : 'off' ,
221232 '@typescript-eslint/no-unused-vars' : 'off' ,
222233 '@typescript-eslint/no-empty-function' : 'off' ,
234+ '@typescript-eslint/require-await' : 'off' ,
235+ 'import-x/no-named-as-default' : 'error' ,
223236 'import-x/no-named-as-default-member' : 'off' ,
224237 'import-x/order' : [
225238 'error' ,
@@ -256,12 +269,15 @@ const customConfig: ConfigArray = defineConfig([
256269 } ,
257270 {
258271 files : allScriptFiles ,
259- rules : OPTIONS . ENABLE_FRONTEND
260- ? {
261- 'react-hooks/exhaustive-deps' : 'error' ,
262- '@next/next/no-img-element' : 'error' ,
263- }
264- : { } ,
272+ rules : OPTIONS . ENABLE_FRONTEND ? {
273+ 'react-hooks/exhaustive-deps' : 'error' ,
274+ } : { } ,
275+ } ,
276+ {
277+ files : allScriptFiles ,
278+ rules : ( OPTIONS . ENABLE_FRONTEND && OPTIONS . ENABLE_NEXT ) ? {
279+ '@next/next/no-img-element' : 'error' ,
280+ } : { } ,
265281 } ,
266282 {
267283 files : [ '**/*.css' ] ,
0 commit comments