@@ -6,53 +6,59 @@ import eslint from "@eslint/js";
66import tseslint from "typescript-eslint" ;
77import baseConfig from "./eslint.config.base.js" ;
88
9- export default tseslint . config (
10- // == Typescript =============================================================
11- eslint . configs . recommended ,
12- ...tseslint . configs . recommended ,
13- // ...tseslint.configs.recommendedTypeChecked,
14- // ...tseslint.configs.stylisticTypeChecked,
15- {
16- languageOptions : {
17- parserOptions : {
18- project : [ "tsconfig.json" , "tsconfig.node.json" ] ,
19- tsconfigRootDir : cwd ( ) ,
20- EXPERIMENTAL_useProjectService : true ,
21- // EXPERIMENTAL_useProjectService: {
22- // // default is 8
23- // // https://typescript-eslint.io/packages/typescript-estree/
24- // maximumDefaultProjectFileMatchCount_THIS_WILL_SLOW_DOWN_LINTING: 100
25- // },
9+ /** @typedef {import("typescript-eslint").InfiniteDepthConfigWithExtends } TSConfig */
10+ /** @typedef {import("typescript-eslint").ConfigArray } ConfigArray */
2611
27- ecmaVersion : "latest" ,
28- sourceType : "module" ,
29- globals : {
30- ...globals . nodeBuiltin ,
31- ...globals . es2025
12+ /**
13+ * @export
14+ * @type {(userConfigs?: TSConfig) => ConfigArray }
15+ */
16+ export function eslintConfig ( userConfigs = [ ] ) {
17+ return tseslint . config (
18+ // == Typescript =============================================================
19+ eslint . configs . recommended ,
20+ ...tseslint . configs . recommended ,
21+ // ...tseslint.configs.recommendedTypeChecked,
22+ // ...tseslint.configs.stylisticTypeChecked,
23+ {
24+ languageOptions : {
25+ parserOptions : {
26+ project : [ "tsconfig.json" ] ,
27+ tsconfigRootDir : cwd ( ) ,
28+ projectService : true ,
29+
30+ ecmaVersion : "latest" ,
31+ sourceType : "module" ,
32+ globals : {
33+ ...globals . nodeBuiltin ,
34+ ...globals . es2025
35+ }
3236 }
37+ } ,
38+ rules : {
39+ "@typescript-eslint/no-unused-vars" : [
40+ "error" ,
41+ {
42+ args : "all" ,
43+ argsIgnorePattern : "^_" ,
44+ caughtErrors : "all" ,
45+ caughtErrorsIgnorePattern : "^_" ,
46+ destructuredArrayIgnorePattern : "^_" ,
47+ varsIgnorePattern : "^_" ,
48+ ignoreRestSiblings : true
49+ }
50+ ]
3351 }
3452 } ,
35- rules : {
36- "@typescript-eslint/no-unused-vars" : [
37- "error" ,
38- {
39- args : "all" ,
40- argsIgnorePattern : "^_" ,
41- caughtErrors : "all" ,
42- caughtErrorsIgnorePattern : "^_" ,
43- destructuredArrayIgnorePattern : "^_" ,
44- varsIgnorePattern : "^_" ,
45- ignoreRestSiblings : true
46- }
47- ]
48- }
49- } ,
5053
51- // == Javascript =============================================================
52- {
53- files : [ "*.js" ] ,
54- extends : [ tseslint . configs . disableTypeChecked ]
55- } ,
54+ // == Javascript =============================================================
55+ {
56+ files : [ "*.js" , "*.cjs" , "*.mjs" ] ,
57+ extends : [ tseslint . configs . disableTypeChecked ]
58+ } ,
59+
60+ ...baseConfig ,
5661
57- ...baseConfig
58- ) ;
62+ ...( Array . isArray ( userConfigs ) ? userConfigs : [ userConfigs ?? { } ] )
63+ ) ;
64+ }
0 commit comments