@lobehub/eslint-config 2.0.3 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/eslint-typegen.d.ts +10199 -0
- package/dist/index.cjs +35 -2
- package/dist/index.d.cts +8 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -3
- package/dist/index.js.map +1 -1
- package/package.json +5 -1
package/dist/index.cjs
CHANGED
|
@@ -41,6 +41,7 @@ const eslint_plugin_perfectionist = __toESM(require("eslint-plugin-perfectionist
|
|
|
41
41
|
const typescript_eslint = __toESM(require("typescript-eslint"));
|
|
42
42
|
const eslint_plugin_unicorn = __toESM(require("eslint-plugin-unicorn"));
|
|
43
43
|
const eslint_plugin_unused_imports = __toESM(require("eslint-plugin-unused-imports"));
|
|
44
|
+
const eslint_plugin_yml = __toESM(require("eslint-plugin-yml"));
|
|
44
45
|
|
|
45
46
|
//#region src/globs.ts
|
|
46
47
|
const GLOB_JS = "**/*.?([cm])js";
|
|
@@ -55,6 +56,7 @@ const GLOB_TEST = [
|
|
|
55
56
|
"**/*.spec.{js,jsx,ts,tsx}",
|
|
56
57
|
"**/__tests__/**/*.{js,jsx,ts,tsx}"
|
|
57
58
|
];
|
|
59
|
+
const GLOB_YAML = ["**/*.yaml", "**/*.yml"];
|
|
58
60
|
const GLOB_IGNORES = [
|
|
59
61
|
"**/node_modules/**",
|
|
60
62
|
"**/dist/**",
|
|
@@ -144,6 +146,7 @@ function imports(options) {
|
|
|
144
146
|
|
|
145
147
|
//#endregion
|
|
146
148
|
//#region src/configs/javascript.ts
|
|
149
|
+
const GLOB_SCRIPTS = ["**/scripts/**"];
|
|
147
150
|
function javascript() {
|
|
148
151
|
return (0, eslint_config.defineConfig)([{
|
|
149
152
|
...__eslint_js.default.configs.recommended,
|
|
@@ -165,10 +168,24 @@ function javascript() {
|
|
|
165
168
|
linterOptions: { reportUnusedDisableDirectives: "error" },
|
|
166
169
|
rules: {
|
|
167
170
|
...__eslint_js.default.configs.recommended.rules,
|
|
171
|
+
"no-console": ["error", { allow: [
|
|
172
|
+
"warn",
|
|
173
|
+
"error",
|
|
174
|
+
"info",
|
|
175
|
+
"table",
|
|
176
|
+
"group",
|
|
177
|
+
"groupCollapsed",
|
|
178
|
+
"groupEnd",
|
|
179
|
+
"assert",
|
|
180
|
+
"clear"
|
|
181
|
+
] }],
|
|
168
182
|
"no-empty": "warn",
|
|
169
183
|
"no-extra-boolean-cast": "off",
|
|
170
184
|
"no-unused-vars": "off"
|
|
171
185
|
}
|
|
186
|
+
}, {
|
|
187
|
+
files: [...GLOB_TEST, ...GLOB_SCRIPTS],
|
|
188
|
+
rules: { "no-console": "off" }
|
|
172
189
|
}]);
|
|
173
190
|
}
|
|
174
191
|
|
|
@@ -384,7 +401,7 @@ const GLOB_NEXT_APP_FILES = [
|
|
|
384
401
|
"**/app/**/robots.{js,ts}",
|
|
385
402
|
"**/app/**/manifest.{js,ts}"
|
|
386
403
|
];
|
|
387
|
-
const GLOB_CONFIG_FILES = ["**/*.config.{js,mjs,ts,mts,cjs,cts}"
|
|
404
|
+
const GLOB_CONFIG_FILES = ["**/*.config.{js,mjs,ts,mts,cjs,cts}"];
|
|
388
405
|
function unicorn() {
|
|
389
406
|
return (0, eslint_config.defineConfig)([
|
|
390
407
|
{
|
|
@@ -486,10 +503,21 @@ function unused() {
|
|
|
486
503
|
}]);
|
|
487
504
|
}
|
|
488
505
|
|
|
506
|
+
//#endregion
|
|
507
|
+
//#region src/configs/yml.ts
|
|
508
|
+
function yml(options) {
|
|
509
|
+
const { yml: ymlOption = true } = options;
|
|
510
|
+
if (!ymlOption) return [];
|
|
511
|
+
return (0, eslint_config.defineConfig)([...eslint_plugin_yml.default.configs.recommended, { rules: { "yml/quotes": ["error", {
|
|
512
|
+
avoidEscape: true,
|
|
513
|
+
prefer: "single"
|
|
514
|
+
}] } }]);
|
|
515
|
+
}
|
|
516
|
+
|
|
489
517
|
//#endregion
|
|
490
518
|
//#region src/index.ts
|
|
491
519
|
function defineConfig(options = {}, ...userConfigs) {
|
|
492
|
-
const { a11y: a11yOption = false, ignores: userIgnores = [], next: nextOption = false, react: reactOption = false, reactNative: reactNativeOption = false, regexp: regexpOption = true, sortImports = true, sortKeys = true, typeChecked = false, typescript: tsOption = true } = options;
|
|
520
|
+
const { a11y: a11yOption = false, ignores: userIgnores = [], next: nextOption = false, react: reactOption = false, reactNative: reactNativeOption = false, regexp: regexpOption = true, sortImports = true, sortKeys = true, typeChecked = false, typescript: tsOption = true, yml: ymlOption = true } = options;
|
|
493
521
|
const configs = [
|
|
494
522
|
ignores(userIgnores),
|
|
495
523
|
...javascript(),
|
|
@@ -529,6 +557,10 @@ function defineConfig(options = {}, ...userConfigs) {
|
|
|
529
557
|
regexp: regexpOption
|
|
530
558
|
}),
|
|
531
559
|
...unused(),
|
|
560
|
+
...yml({
|
|
561
|
+
...options,
|
|
562
|
+
yml: ymlOption
|
|
563
|
+
}),
|
|
532
564
|
...eslintCommentsConfig(),
|
|
533
565
|
...userConfigs
|
|
534
566
|
];
|
|
@@ -545,4 +577,5 @@ exports.GLOB_TEST = GLOB_TEST
|
|
|
545
577
|
exports.GLOB_TS = GLOB_TS
|
|
546
578
|
exports.GLOB_TSX = GLOB_TSX
|
|
547
579
|
exports.GLOB_TS_ALL = GLOB_TS_ALL
|
|
580
|
+
exports.GLOB_YAML = GLOB_YAML
|
|
548
581
|
exports.defineConfig = defineConfig
|
package/dist/index.d.cts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference path="./eslint-typegen.d.ts" />
|
|
1
2
|
import { ParserOptions, ParserOptions as ParserOptions$1 } from "@typescript-eslint/parser";
|
|
2
3
|
import { Linter, Linter as Linter$1 } from "eslint";
|
|
3
4
|
|
|
@@ -65,6 +66,11 @@ interface Options {
|
|
|
65
66
|
* @default true
|
|
66
67
|
*/
|
|
67
68
|
typescript?: boolean | 'strict';
|
|
69
|
+
/**
|
|
70
|
+
* 是否启用 YAML 规则(如字符串使用单引号)
|
|
71
|
+
* @default true
|
|
72
|
+
*/
|
|
73
|
+
yml?: boolean;
|
|
68
74
|
}
|
|
69
75
|
type FlatConfig = Linter$1.Config;
|
|
70
76
|
type FlatConfigArray = Linter$1.Config[]; //#endregion
|
|
@@ -77,6 +83,7 @@ declare const GLOB_JS_ALL: string[];
|
|
|
77
83
|
declare const GLOB_TS_ALL: string[];
|
|
78
84
|
declare const GLOB_SRC: string[];
|
|
79
85
|
declare const GLOB_TEST: string[];
|
|
86
|
+
declare const GLOB_YAML: string[];
|
|
80
87
|
declare const GLOB_IGNORES: string[];
|
|
81
88
|
|
|
82
89
|
//#endregion
|
|
@@ -85,5 +92,5 @@ declare const GLOB_IGNORES: string[];
|
|
|
85
92
|
declare function defineConfig(options?: Options, ...userConfigs: FlatConfig[]): FlatConfigArray;
|
|
86
93
|
|
|
87
94
|
//#endregion
|
|
88
|
-
export { FlatConfig, FlatConfigArray, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_JS_ALL, GLOB_SRC, GLOB_TEST, GLOB_TS, GLOB_TSX, GLOB_TS_ALL, Linter, Options, ParserOptions, defineConfig };
|
|
95
|
+
export { FlatConfig, FlatConfigArray, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_JS_ALL, GLOB_SRC, GLOB_TEST, GLOB_TS, GLOB_TSX, GLOB_TS_ALL, GLOB_YAML, Linter, Options, ParserOptions, defineConfig };
|
|
89
96
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/globs.ts","../src/index.ts"],"sourcesContent":null,"mappings":";;;;UAGiB,OAAA;;AAAjB;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/globs.ts","../src/index.ts"],"sourcesContent":null,"mappings":";;;;UAGiB,OAAA;;AAAjB;AAmFA;AACA;;;;ACvFA;EACa,OAAA,CAAA,EAAA,MAAQ,EAAA;EACR;AACb;AAEA;AACA;EACa,IAAA,CAAA,EAAA,OAA2C;EAE3C;AAMb;AAEA;kBDOkB;;;AEHlB;;EAA4B,KAAU,CAAA,EAAA,OAAA,GAAA,MAAA,GAAA,OAAA,GAAA,MAAA,GAAA,MAAA;EAAY;;AAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KFiEtF,UAAA,GAAa,QAAA,CAAO;KACpB,eAAA,GAAkB,QAAA,CAAO;;cCvFxB,OAAA;cACA,QAAA;cACA,OAAA;cACA,QAAA;ADAI,cCEJ,WDmBK,EAAA,MAAa,EAAA;AA8DnB,cChFC,WDgFY,EAAA,MAAO,EAAA;AACpB,cChFC,QDgFc,EAAA,MAAG,EAAA;cC9EjB;cAMA;cAEA;;;;AAjBb;iBCqBgB,YAAA,WAAsB,yBAA8B,eAAe"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference path="./eslint-typegen.d.ts" />
|
|
1
2
|
import { ParserOptions, ParserOptions as ParserOptions$1 } from "@typescript-eslint/parser";
|
|
2
3
|
import { Linter, Linter as Linter$1 } from "eslint";
|
|
3
4
|
|
|
@@ -65,6 +66,11 @@ interface Options {
|
|
|
65
66
|
* @default true
|
|
66
67
|
*/
|
|
67
68
|
typescript?: boolean | 'strict';
|
|
69
|
+
/**
|
|
70
|
+
* 是否启用 YAML 规则(如字符串使用单引号)
|
|
71
|
+
* @default true
|
|
72
|
+
*/
|
|
73
|
+
yml?: boolean;
|
|
68
74
|
}
|
|
69
75
|
type FlatConfig = Linter$1.Config;
|
|
70
76
|
type FlatConfigArray = Linter$1.Config[]; //#endregion
|
|
@@ -77,6 +83,7 @@ declare const GLOB_JS_ALL: string[];
|
|
|
77
83
|
declare const GLOB_TS_ALL: string[];
|
|
78
84
|
declare const GLOB_SRC: string[];
|
|
79
85
|
declare const GLOB_TEST: string[];
|
|
86
|
+
declare const GLOB_YAML: string[];
|
|
80
87
|
declare const GLOB_IGNORES: string[];
|
|
81
88
|
|
|
82
89
|
//#endregion
|
|
@@ -85,5 +92,5 @@ declare const GLOB_IGNORES: string[];
|
|
|
85
92
|
declare function defineConfig(options?: Options, ...userConfigs: FlatConfig[]): FlatConfigArray;
|
|
86
93
|
|
|
87
94
|
//#endregion
|
|
88
|
-
export { FlatConfig, FlatConfigArray, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_JS_ALL, GLOB_SRC, GLOB_TEST, GLOB_TS, GLOB_TSX, GLOB_TS_ALL, Linter, Options, ParserOptions, defineConfig };
|
|
95
|
+
export { FlatConfig, FlatConfigArray, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_JS_ALL, GLOB_SRC, GLOB_TEST, GLOB_TS, GLOB_TSX, GLOB_TS_ALL, GLOB_YAML, Linter, Options, ParserOptions, defineConfig };
|
|
89
96
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/globs.ts","../src/index.ts"],"sourcesContent":null,"mappings":";;;;UAGiB,OAAA;;AAAjB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/globs.ts","../src/index.ts"],"sourcesContent":null,"mappings":";;;;UAGiB,OAAA;;AAAjB;AAmFA;AACA;;;;ACvFA;EACa,OAAA,CAAA,EAAA,MAAQ,EAAA;EACR;AACb;AAEA;AACA;EACa,IAAA,CAAA,EAAA,OAA2C;EAE3C;AAMb;AAEA;kBDOkB;;;AEHlB;;EAA4B,KAAU,CAAA,EAAA,OAAA,GAAA,MAAA,GAAA,OAAA,GAAA,MAAA,GAAA,MAAA;EAAY;;AAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KFiEtF,UAAA,GAAa,QAAA,CAAO;KACpB,eAAA,GAAkB,QAAA,CAAO;;cCvFxB,OAAA;cACA,QAAA;cACA,OAAA;cACA,QAAA;ADAI,cCEJ,WDmBK,EAAA,MAAa,EAAA;AA8DnB,cChFC,WDgFY,EAAA,MAAO,EAAA;AACpB,cChFC,QDgFc,EAAA,MAAG,EAAA;cC9EjB;cAMA;cAEA;;;;AAjBb;iBCqBgB,YAAA,WAAsB,yBAA8B,eAAe"}
|
package/dist/index.js
CHANGED
|
@@ -17,6 +17,7 @@ import perfectionistPlugin from "eslint-plugin-perfectionist";
|
|
|
17
17
|
import tseslint from "typescript-eslint";
|
|
18
18
|
import unicornPlugin from "eslint-plugin-unicorn";
|
|
19
19
|
import unusedImportsPlugin from "eslint-plugin-unused-imports";
|
|
20
|
+
import eslintPluginYml from "eslint-plugin-yml";
|
|
20
21
|
|
|
21
22
|
//#region src/globs.ts
|
|
22
23
|
const GLOB_JS = "**/*.?([cm])js";
|
|
@@ -31,6 +32,7 @@ const GLOB_TEST = [
|
|
|
31
32
|
"**/*.spec.{js,jsx,ts,tsx}",
|
|
32
33
|
"**/__tests__/**/*.{js,jsx,ts,tsx}"
|
|
33
34
|
];
|
|
35
|
+
const GLOB_YAML = ["**/*.yaml", "**/*.yml"];
|
|
34
36
|
const GLOB_IGNORES = [
|
|
35
37
|
"**/node_modules/**",
|
|
36
38
|
"**/dist/**",
|
|
@@ -120,6 +122,7 @@ function imports(options) {
|
|
|
120
122
|
|
|
121
123
|
//#endregion
|
|
122
124
|
//#region src/configs/javascript.ts
|
|
125
|
+
const GLOB_SCRIPTS = ["**/scripts/**"];
|
|
123
126
|
function javascript() {
|
|
124
127
|
return defineConfig$1([{
|
|
125
128
|
...js.configs.recommended,
|
|
@@ -141,10 +144,24 @@ function javascript() {
|
|
|
141
144
|
linterOptions: { reportUnusedDisableDirectives: "error" },
|
|
142
145
|
rules: {
|
|
143
146
|
...js.configs.recommended.rules,
|
|
147
|
+
"no-console": ["error", { allow: [
|
|
148
|
+
"warn",
|
|
149
|
+
"error",
|
|
150
|
+
"info",
|
|
151
|
+
"table",
|
|
152
|
+
"group",
|
|
153
|
+
"groupCollapsed",
|
|
154
|
+
"groupEnd",
|
|
155
|
+
"assert",
|
|
156
|
+
"clear"
|
|
157
|
+
] }],
|
|
144
158
|
"no-empty": "warn",
|
|
145
159
|
"no-extra-boolean-cast": "off",
|
|
146
160
|
"no-unused-vars": "off"
|
|
147
161
|
}
|
|
162
|
+
}, {
|
|
163
|
+
files: [...GLOB_TEST, ...GLOB_SCRIPTS],
|
|
164
|
+
rules: { "no-console": "off" }
|
|
148
165
|
}]);
|
|
149
166
|
}
|
|
150
167
|
|
|
@@ -360,7 +377,7 @@ const GLOB_NEXT_APP_FILES = [
|
|
|
360
377
|
"**/app/**/robots.{js,ts}",
|
|
361
378
|
"**/app/**/manifest.{js,ts}"
|
|
362
379
|
];
|
|
363
|
-
const GLOB_CONFIG_FILES = ["**/*.config.{js,mjs,ts,mts,cjs,cts}"
|
|
380
|
+
const GLOB_CONFIG_FILES = ["**/*.config.{js,mjs,ts,mts,cjs,cts}"];
|
|
364
381
|
function unicorn() {
|
|
365
382
|
return defineConfig$1([
|
|
366
383
|
{
|
|
@@ -462,10 +479,21 @@ function unused() {
|
|
|
462
479
|
}]);
|
|
463
480
|
}
|
|
464
481
|
|
|
482
|
+
//#endregion
|
|
483
|
+
//#region src/configs/yml.ts
|
|
484
|
+
function yml(options) {
|
|
485
|
+
const { yml: ymlOption = true } = options;
|
|
486
|
+
if (!ymlOption) return [];
|
|
487
|
+
return defineConfig$1([...eslintPluginYml.configs.recommended, { rules: { "yml/quotes": ["error", {
|
|
488
|
+
avoidEscape: true,
|
|
489
|
+
prefer: "single"
|
|
490
|
+
}] } }]);
|
|
491
|
+
}
|
|
492
|
+
|
|
465
493
|
//#endregion
|
|
466
494
|
//#region src/index.ts
|
|
467
495
|
function defineConfig(options = {}, ...userConfigs) {
|
|
468
|
-
const { a11y: a11yOption = false, ignores: userIgnores = [], next: nextOption = false, react: reactOption = false, reactNative: reactNativeOption = false, regexp: regexpOption = true, sortImports = true, sortKeys = true, typeChecked = false, typescript: tsOption = true } = options;
|
|
496
|
+
const { a11y: a11yOption = false, ignores: userIgnores = [], next: nextOption = false, react: reactOption = false, reactNative: reactNativeOption = false, regexp: regexpOption = true, sortImports = true, sortKeys = true, typeChecked = false, typescript: tsOption = true, yml: ymlOption = true } = options;
|
|
469
497
|
const configs = [
|
|
470
498
|
ignores(userIgnores),
|
|
471
499
|
...javascript(),
|
|
@@ -505,6 +533,10 @@ function defineConfig(options = {}, ...userConfigs) {
|
|
|
505
533
|
regexp: regexpOption
|
|
506
534
|
}),
|
|
507
535
|
...unused(),
|
|
536
|
+
...yml({
|
|
537
|
+
...options,
|
|
538
|
+
yml: ymlOption
|
|
539
|
+
}),
|
|
508
540
|
...eslintCommentsConfig(),
|
|
509
541
|
...userConfigs
|
|
510
542
|
];
|
|
@@ -512,5 +544,5 @@ function defineConfig(options = {}, ...userConfigs) {
|
|
|
512
544
|
}
|
|
513
545
|
|
|
514
546
|
//#endregion
|
|
515
|
-
export { GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_JS_ALL, GLOB_SRC, GLOB_TEST, GLOB_TS, GLOB_TSX, GLOB_TS_ALL, defineConfig };
|
|
547
|
+
export { GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_JS_ALL, GLOB_SRC, GLOB_TEST, GLOB_TS, GLOB_TSX, GLOB_TS_ALL, GLOB_YAML, defineConfig };
|
|
516
548
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["options: Options","userIgnores: string[]","options: Options","options: Options","options: Options","options: Options","options: Options","options: Options","options: Options","options: Options","configs: FlatConfigArray"],"sources":["../src/globs.ts","../src/configs/a11y.ts","../src/configs/eslint-comments.ts","../src/configs/ignores.ts","../src/configs/imports.ts","../src/configs/javascript.ts","../src/configs/next.ts","../src/configs/react.ts","../src/configs/react-native.ts","../src/configs/regexp.ts","../src/configs/sorting.ts","../src/configs/typescript.ts","../src/configs/unicorn.ts","../src/configs/unused.ts","../src/index.ts"],"sourcesContent":["export const GLOB_JS = '**/*.?([cm])js';\nexport const GLOB_JSX = '**/*.?([cm])jsx';\nexport const GLOB_TS = '**/*.?([cm])ts';\nexport const GLOB_TSX = '**/*.?([cm])tsx';\n\nexport const GLOB_JS_ALL = [GLOB_JS, GLOB_JSX];\nexport const GLOB_TS_ALL = [GLOB_TS, GLOB_TSX];\nexport const GLOB_SRC = [...GLOB_JS_ALL, ...GLOB_TS_ALL];\n\nexport const GLOB_TEST = [\n '**/*.test.{js,jsx,ts,tsx}',\n '**/*.spec.{js,jsx,ts,tsx}',\n '**/__tests__/**/*.{js,jsx,ts,tsx}',\n];\n\nexport const GLOB_IGNORES = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.next/**',\n '**/coverage/**',\n '**/.turbo/**',\n '**/out/**',\n '**/*.min.*',\n '**/public/**',\n];\n","import { defineConfig } from 'eslint/config';\nimport jsxA11y from 'eslint-plugin-jsx-a11y';\n\nimport { GLOB_JSX, GLOB_TSX } from '../globs';\nimport { type Options } from '../types';\n\nexport function a11y(options: Options) {\n const { a11y: a11yOption, react: reactOption } = options;\n\n if (!a11yOption || !reactOption) return [];\n\n const files = [GLOB_JSX, GLOB_TSX];\n\n return defineConfig([\n {\n files,\n plugins: {\n 'jsx-a11y': jsxA11y,\n },\n rules: {\n ...jsxA11y.flatConfigs.recommended.rules,\n 'jsx-a11y/alt-text': 'warn',\n 'jsx-a11y/anchor-has-content': 'warn',\n 'jsx-a11y/anchor-is-valid': 'warn',\n 'jsx-a11y/click-events-have-key-events': 'warn',\n 'jsx-a11y/no-static-element-interactions': 'warn',\n },\n },\n ]);\n}\n","import eslintComments from '@eslint-community/eslint-plugin-eslint-comments/configs';\nimport { defineConfig } from 'eslint/config';\n\nimport { GLOB_SRC } from '../globs';\n\nexport function eslintCommentsConfig() {\n return defineConfig([\n {\n ...eslintComments.recommended,\n files: GLOB_SRC,\n rules: {\n ...eslintComments.recommended.rules,\n // 允许文件级别的 eslint-disable 没有对应的 eslint-enable\n '@eslint-community/eslint-comments/disable-enable-pair': 'off',\n // 禁止未使用的 eslint-disable 注释(可自动修复)\n '@eslint-community/eslint-comments/no-unused-disable': 'error',\n // 禁止没有规则名的 eslint-disable(必须指定具体规则)\n '@eslint-community/eslint-comments/no-unlimited-disable': 'error',\n // 禁止重复的 eslint-disable\n '@eslint-community/eslint-comments/no-duplicate-disable': 'error',\n // 禁止一个 eslint-enable 同时启用多个 eslint-disable(鼓励合并多行 disable 注释)\n '@eslint-community/eslint-comments/no-aggregating-enable': 'error',\n },\n },\n ]);\n}\n","import { GLOB_IGNORES } from '../globs';\nimport { type FlatConfig } from '../types';\n\nexport function ignores(userIgnores: string[] = []): FlatConfig {\n return {\n ignores: [...GLOB_IGNORES, ...userIgnores],\n };\n}\n","import { defineConfig } from 'eslint/config';\nimport { importX } from 'eslint-plugin-import-x';\nimport simpleImportSort from 'eslint-plugin-simple-import-sort';\n\nimport { GLOB_SRC } from '../globs';\nimport { type Options } from '../types';\n\nexport function imports(options: Options) {\n const { sortImports = true } = options;\n\n const configs = defineConfig([\n {\n files: GLOB_SRC,\n plugins: {\n 'import-x': importX as any,\n },\n settings: {\n 'import-x/resolver': {\n node: true,\n typescript: true,\n },\n },\n rules: {\n 'import-x/first': 'error',\n 'import-x/newline-after-import': 'error',\n 'import-x/no-duplicates': 'error',\n 'import-x/no-mutable-exports': 'error',\n 'import-x/no-self-import': 'error',\n 'import-x/consistent-type-specifier-style': 0,\n },\n },\n ]);\n\n if (sortImports) {\n configs.push({\n files: GLOB_SRC,\n plugins: {\n 'simple-import-sort': simpleImportSort,\n },\n rules: {\n 'simple-import-sort/imports': 'error',\n 'simple-import-sort/exports': 'error',\n 'sort-imports': 'off',\n },\n });\n }\n\n return configs;\n}\n","import js from '@eslint/js';\nimport { defineConfig } from 'eslint/config';\nimport globals from 'globals';\n\nimport { GLOB_SRC } from '../globs';\n\nexport function javascript() {\n return defineConfig([\n {\n ...js.configs.recommended,\n files: GLOB_SRC,\n languageOptions: {\n ecmaVersion: 'latest',\n globals: {\n ...globals.browser,\n ...globals.node,\n ...globals.es2021,\n },\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n ecmaVersion: 'latest',\n sourceType: 'module',\n },\n sourceType: 'module',\n },\n linterOptions: {\n reportUnusedDisableDirectives: 'error',\n },\n rules: {\n ...js.configs.recommended.rules,\n 'no-empty': 'warn',\n 'no-extra-boolean-cast': 'off',\n 'no-unused-vars': 'off',\n },\n },\n ]);\n}\n","import nextPlugin from '@next/eslint-plugin-next';\nimport { defineConfig } from 'eslint/config';\n\nimport { GLOB_JSX, GLOB_TSX } from '../globs';\nimport { type Options } from '../types';\n\nexport function next(options: Options) {\n const { next: nextOption } = options;\n\n if (!nextOption) return [];\n\n const files = [GLOB_JSX, GLOB_TSX];\n\n return defineConfig([\n {\n files,\n plugins: {\n '@next/next': nextPlugin,\n },\n rules: {\n ...nextPlugin.configs.recommended.rules,\n ...nextPlugin.configs['core-web-vitals'].rules,\n '@next/next/no-img-element': 'off',\n },\n },\n ]);\n}\n","import eslintReact from '@eslint-react/eslint-plugin';\nimport { defineConfig } from 'eslint/config';\nimport reactPlugin from 'eslint-plugin-react';\nimport reactCompiler from 'eslint-plugin-react-compiler';\nimport reactHooksPlugin from 'eslint-plugin-react-hooks';\nimport reactRefresh from 'eslint-plugin-react-refresh';\n\nimport { GLOB_JSX, GLOB_TSX } from '../globs';\nimport { type Options } from '../types';\n\nexport function react(options: Options) {\n const { react: reactOption, reactCompiler: reactCompilerOption } = options;\n\n if (!reactOption) return [];\n\n const files = [GLOB_JSX, GLOB_TSX];\n\n const configs = defineConfig([\n {\n files,\n ...eslintReact.configs['recommended-typescript'],\n },\n {\n files,\n plugins: {\n 'react': reactPlugin,\n 'react-hooks': reactHooksPlugin,\n 'react-refresh': reactRefresh,\n },\n rules: {\n ...reactHooksPlugin.configs.recommended.rules,\n\n '@eslint-react/dom/no-dangerously-set-innerhtml': 'off',\n '@eslint-react/no-array-index-key': 'warn',\n '@eslint-react/no-leaked-conditional-rendering': 'off',\n\n 'react/self-closing-comp': 'warn',\n\n 'react-refresh/only-export-components': [\n 'warn',\n {\n allowConstantExport: true,\n allowExportNames:\n reactOption === 'next'\n ? [\n 'dynamic',\n 'dynamicParams',\n 'revalidate',\n 'fetchCache',\n 'runtime',\n 'preferredRegion',\n 'maxDuration',\n 'config',\n 'generateStaticParams',\n 'metadata',\n 'generateMetadata',\n 'viewport',\n 'generateViewport',\n ]\n : reactOption === 'remix'\n ? ['meta', 'links', 'headers', 'loader', 'action']\n : undefined,\n },\n ],\n },\n settings: {\n 'react-x': {\n version: 'detect',\n },\n },\n },\n ]);\n\n if (reactCompilerOption) {\n configs.push({\n files,\n plugins: {\n 'react-compiler': reactCompiler,\n },\n rules: {\n 'react-compiler/react-compiler': 'error',\n },\n });\n }\n\n return configs;\n}\n","import { defineConfig } from 'eslint/config';\nimport reactNativePlugin from 'eslint-plugin-react-native';\n\nimport { GLOB_JSX, GLOB_TSX } from '../globs';\nimport { type Options } from '../types';\n\nexport function reactNative(options: Options) {\n const { reactNative: reactNativeOption } = options;\n\n if (!reactNativeOption) return [];\n\n const files = [GLOB_JSX, GLOB_TSX];\n\n return defineConfig([\n {\n files,\n plugins: {\n 'react-native': reactNativePlugin,\n },\n languageOptions: {\n globals: {\n __DEV__: 'readonly',\n },\n },\n rules: {\n 'react-native/no-color-literals': 'warn',\n 'react-native/no-inline-styles': 'warn',\n 'react-native/no-raw-text': 'off',\n 'react-native/no-single-element-style-arrays': 'warn',\n 'react-native/no-unused-styles': 'error',\n 'react-native/split-platform-components': 'warn',\n },\n },\n ]);\n}\n","import { defineConfig } from 'eslint/config';\nimport regexpPlugin from 'eslint-plugin-regexp';\n\nimport { GLOB_SRC } from '../globs';\nimport { type Options } from '../types';\n\nexport function regexp(options: Options) {\n const { regexp: regexpOption = true } = options;\n\n if (!regexpOption) return [];\n\n return defineConfig([\n {\n files: GLOB_SRC,\n plugins: {\n regexp: regexpPlugin,\n },\n rules: {\n ...(regexpPlugin.configs['flat/recommended'].rules as any),\n },\n },\n ]);\n}\n","import { defineConfig } from 'eslint/config';\nimport perfectionistPlugin from 'eslint-plugin-perfectionist';\nimport reactPlugin from 'eslint-plugin-react';\n\nimport { GLOB_JSX, GLOB_TS_ALL, GLOB_TSX } from '../globs';\nimport { type Options } from '../types';\n\nexport function sorting(options: Options) {\n const { sortKeys = true } = options;\n\n if (!sortKeys) return [];\n\n return defineConfig([\n // TypeScript interface and enum sorting\n {\n files: GLOB_TS_ALL,\n plugins: {\n perfectionist: perfectionistPlugin,\n },\n rules: {\n 'perfectionist/sort-enums': [\n 'error',\n {\n order: 'asc',\n type: 'natural',\n },\n ],\n 'perfectionist/sort-interfaces': [\n 'error',\n {\n order: 'asc',\n type: 'natural',\n },\n ],\n },\n },\n // JSX props sorting\n {\n files: [GLOB_JSX, GLOB_TSX],\n plugins: {\n react: reactPlugin,\n },\n rules: {\n 'react/jsx-sort-props': [\n 'warn',\n {\n callbacksLast: true,\n multiline: 'last',\n shorthandFirst: true,\n },\n ],\n },\n },\n ]);\n}\n","import { defineConfig } from 'eslint/config';\nimport tseslint from 'typescript-eslint';\n\nimport { GLOB_TS_ALL } from '../globs';\nimport { type Options } from '../types';\n\nexport function typescript(options: Options) {\n const {\n typescript: tsOption,\n typeChecked,\n tsconfigPath,\n parserOptions: userParserOptions,\n } = options;\n\n if (!tsOption) return [];\n\n const isStrict = tsOption === 'strict';\n\n const baseConfigs = isStrict\n ? typeChecked\n ? tseslint.configs.strictTypeChecked\n : tseslint.configs.strict\n : typeChecked\n ? tseslint.configs.recommendedTypeChecked\n : tseslint.configs.recommended;\n\n const configs = defineConfig([\n ...baseConfigs,\n {\n files: GLOB_TS_ALL,\n languageOptions: {\n parser: tseslint.parser,\n parserOptions: {\n ecmaVersion: 'latest',\n sourceType: 'module',\n ...(typeChecked && {\n projectService: !tsconfigPath,\n project: tsconfigPath,\n }),\n ...userParserOptions,\n },\n },\n rules: {\n '@typescript-eslint/consistent-type-imports': [\n 'error',\n {\n disallowTypeAnnotations: false,\n fixStyle: 'inline-type-imports',\n prefer: 'type-imports',\n },\n ],\n '@typescript-eslint/method-signature-style': ['error', 'property'],\n '@typescript-eslint/no-import-type-side-effects': 'off',\n '@typescript-eslint/no-unused-expressions': [\n 'error',\n {\n allowShortCircuit: true,\n allowTaggedTemplates: true,\n allowTernary: true,\n },\n ],\n\n ...(isStrict\n ? {}\n : {\n '@typescript-eslint/ban-ts-comment': 'off',\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-empty-object-type': 'off',\n '@typescript-eslint/no-require-imports': 'off',\n }),\n\n '@typescript-eslint/no-unused-vars': 'off',\n '@typescript-eslint/no-use-before-define': 'off',\n '@typescript-eslint/no-useless-constructor': 'off',\n },\n },\n ]);\n\n if (typeChecked) {\n configs.push({\n files: GLOB_TS_ALL,\n rules: {\n '@typescript-eslint/await-thenable': 'error',\n '@typescript-eslint/no-floating-promises': 'error',\n '@typescript-eslint/no-misused-promises': ['error', { checksVoidReturn: false }],\n '@typescript-eslint/require-await': 'error',\n },\n });\n }\n\n return configs;\n}\n","import { defineConfig } from 'eslint/config';\nimport unicornPlugin from 'eslint-plugin-unicorn';\n\nimport { GLOB_SRC } from '../globs';\n\nconst GLOB_NEXT_APP_FILES = [\n '**/app/**/page.{js,jsx,ts,tsx}',\n '**/app/**/layout.{js,jsx,ts,tsx}',\n '**/app/**/loading.{js,jsx,ts,tsx}',\n '**/app/**/error.{js,jsx,ts,tsx}',\n '**/app/**/not-found.{js,jsx,ts,tsx}',\n '**/app/**/template.{js,jsx,ts,tsx}',\n '**/app/**/default.{js,jsx,ts,tsx}',\n '**/app/**/route.{js,ts}',\n '**/app/**/opengraph-image.{js,jsx,ts,tsx}',\n '**/app/**/twitter-image.{js,jsx,ts,tsx}',\n '**/app/**/apple-icon.{js,jsx,ts,tsx}',\n '**/app/**/icon.{js,jsx,ts,tsx}',\n '**/app/**/sitemap.{js,ts}',\n '**/app/**/robots.{js,ts}',\n '**/app/**/manifest.{js,ts}',\n];\n\nconst GLOB_CONFIG_FILES = ['**/*.config.{js,mjs,ts,mts,cjs,cts}', '**/.*.{js,mjs,ts,mts,cjs,cts}'];\n\nexport function unicorn() {\n return defineConfig([\n {\n files: GLOB_SRC,\n plugins: {\n unicorn: unicornPlugin,\n },\n rules: {\n // ===== Error Prevention / Bug Detection =====\n 'unicorn/better-regex': 'warn',\n 'unicorn/error-message': 'error',\n 'unicorn/new-for-builtins': 'error',\n 'unicorn/no-abusive-eslint-disable': 'error',\n 'unicorn/no-accessor-recursion': 'error',\n 'unicorn/no-await-in-promise-methods': 'error',\n 'unicorn/no-immediate-mutation': 'error',\n 'unicorn/no-instanceof-builtins': 'error',\n 'unicorn/no-invalid-fetch-options': 'error',\n 'unicorn/no-invalid-remove-event-listener': 'error',\n 'unicorn/no-negation-in-equality-check': 'error',\n 'unicorn/no-single-promise-in-promise-methods': 'error',\n 'unicorn/no-thenable': 'error',\n 'unicorn/throw-new-error': 'error',\n\n // ===== Code Cleanliness =====\n 'unicorn/escape-case': 'warn',\n 'unicorn/no-anonymous-default-export': 'error',\n 'unicorn/no-console-spaces': 'warn',\n 'unicorn/no-empty-file': 'warn',\n 'unicorn/no-lonely-if': 'warn',\n 'unicorn/no-new-array': 'error',\n 'unicorn/no-new-buffer': 'error',\n 'unicorn/no-unnecessary-await': 'error',\n 'unicorn/no-unreadable-iife': 'warn',\n 'unicorn/no-useless-fallback-in-spread': 'warn',\n 'unicorn/no-useless-length-check': 'warn',\n 'unicorn/no-useless-promise-resolve-reject': 'warn',\n 'unicorn/no-useless-spread': 'warn',\n 'unicorn/no-useless-switch-case': 'warn',\n 'unicorn/no-zero-fractions': 'warn',\n 'unicorn/number-literal-case': 'warn',\n 'unicorn/switch-case-braces': 'warn',\n 'unicorn/text-encoding-identifier-case': 'warn',\n 'unicorn/import-style': 'warn',\n\n // ===== Modern APIs =====\n 'unicorn/prefer-array-find': 'warn',\n 'unicorn/prefer-array-flat': 'warn',\n 'unicorn/prefer-array-flat-map': 'warn',\n 'unicorn/prefer-array-index-of': 'warn',\n 'unicorn/prefer-array-some': 'warn',\n 'unicorn/prefer-at': 'warn',\n 'unicorn/prefer-date-now': 'warn',\n 'unicorn/prefer-includes': 'warn',\n 'unicorn/prefer-logical-operator-over-ternary': 'warn',\n 'unicorn/prefer-node-protocol': 'warn',\n 'unicorn/prefer-object-from-entries': 'warn',\n 'unicorn/prefer-regexp-test': 'warn',\n 'unicorn/prefer-string-replace-all': 'warn',\n 'unicorn/prefer-string-slice': 'warn',\n 'unicorn/prefer-string-starts-ends-with': 'warn',\n 'unicorn/prefer-structured-clone': 'warn',\n\n // Styles\n 'unicorn/catch-error-name': 0,\n 'unicorn/explicit-length-check': 0,\n 'unicorn/no-array-callback-reference': 0,\n 'unicorn/require-module-specifiers': 0,\n 'unicorn/no-array-for-each': 0,\n 'unicorn/no-negated-condition': 0,\n 'unicorn/no-null': 0,\n 'unicorn/no-typeof-undefined': 0,\n 'unicorn/no-useless-undefined': 0,\n 'unicorn/prefer-code-point': 0,\n 'unicorn/prefer-number-properties': 0,\n 'unicorn/prefer-query-selector': 0,\n 'unicorn/prefer-spread': 0,\n 'unicorn/prefer-ternary': 0,\n 'unicorn/prefer-type-error': 0,\n },\n },\n {\n files: GLOB_NEXT_APP_FILES,\n rules: {\n 'unicorn/no-anonymous-default-export': 'off',\n },\n },\n {\n files: GLOB_CONFIG_FILES,\n rules: {\n 'unicorn/no-anonymous-default-export': 'off',\n },\n },\n ]);\n}\n","import { defineConfig } from 'eslint/config';\nimport unusedImportsPlugin from 'eslint-plugin-unused-imports';\n\nimport { GLOB_SRC } from '../globs';\n\nexport function unused() {\n return defineConfig([\n {\n files: GLOB_SRC,\n plugins: {\n 'unused-imports': unusedImportsPlugin,\n },\n rules: {\n 'unused-imports/no-unused-imports': 'error',\n 'unused-imports/no-unused-vars': [\n 'warn',\n {\n args: 'after-used',\n argsIgnorePattern: '^_',\n vars: 'all',\n varsIgnorePattern: '^_',\n },\n ],\n },\n },\n ]);\n}\n","import { a11y } from './configs/a11y';\nimport { eslintCommentsConfig } from './configs/eslint-comments';\nimport { ignores } from './configs/ignores';\nimport { imports } from './configs/imports';\nimport { javascript } from './configs/javascript';\nimport { next } from './configs/next';\nimport { react } from './configs/react';\nimport { reactNative } from './configs/react-native';\nimport { regexp } from './configs/regexp';\nimport { sorting } from './configs/sorting';\nimport { typescript } from './configs/typescript';\nimport { unicorn } from './configs/unicorn';\nimport { unused } from './configs/unused';\nimport { type FlatConfig, type FlatConfigArray, type Options } from './types';\n\nexport type { FlatConfig, FlatConfigArray, Linter, Options, ParserOptions } from './types';\n\nexport function defineConfig(options: Options = {}, ...userConfigs: FlatConfig[]): FlatConfigArray {\n const {\n a11y: a11yOption = false,\n ignores: userIgnores = [],\n next: nextOption = false,\n react: reactOption = false,\n reactNative: reactNativeOption = false,\n regexp: regexpOption = true,\n sortImports = true,\n sortKeys = true,\n typeChecked = false,\n typescript: tsOption = true,\n } = options;\n\n const configs: FlatConfigArray = [\n ignores(userIgnores),\n ...javascript(),\n ...typescript({ ...options, typeChecked, typescript: tsOption }),\n ...react({ ...options, react: reactOption }),\n ...reactNative({ ...options, reactNative: reactNativeOption }),\n ...next({ ...options, next: nextOption }),\n ...a11y({ ...options, a11y: a11yOption, react: reactOption }),\n ...imports({ ...options, sortImports }),\n ...unicorn(),\n ...sorting({ ...options, sortKeys }),\n ...regexp({ ...options, regexp: regexpOption }),\n ...unused(),\n ...eslintCommentsConfig(),\n // 用户自定义配置(最高优先级)\n ...userConfigs,\n ];\n\n return configs;\n}\n\nexport * from './globs';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["options: Options","userIgnores: string[]","options: Options","options: Options","options: Options","options: Options","options: Options","options: Options","options: Options","options: Options","options: Options","configs: FlatConfigArray"],"sources":["../src/globs.ts","../src/configs/a11y.ts","../src/configs/eslint-comments.ts","../src/configs/ignores.ts","../src/configs/imports.ts","../src/configs/javascript.ts","../src/configs/next.ts","../src/configs/react.ts","../src/configs/react-native.ts","../src/configs/regexp.ts","../src/configs/sorting.ts","../src/configs/typescript.ts","../src/configs/unicorn.ts","../src/configs/unused.ts","../src/configs/yml.ts","../src/index.ts"],"sourcesContent":["export const GLOB_JS = '**/*.?([cm])js';\nexport const GLOB_JSX = '**/*.?([cm])jsx';\nexport const GLOB_TS = '**/*.?([cm])ts';\nexport const GLOB_TSX = '**/*.?([cm])tsx';\n\nexport const GLOB_JS_ALL = [GLOB_JS, GLOB_JSX];\nexport const GLOB_TS_ALL = [GLOB_TS, GLOB_TSX];\nexport const GLOB_SRC = [...GLOB_JS_ALL, ...GLOB_TS_ALL];\n\nexport const GLOB_TEST = [\n '**/*.test.{js,jsx,ts,tsx}',\n '**/*.spec.{js,jsx,ts,tsx}',\n '**/__tests__/**/*.{js,jsx,ts,tsx}',\n];\n\nexport const GLOB_YAML = ['**/*.yaml', '**/*.yml'];\n\nexport const GLOB_IGNORES = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.next/**',\n '**/coverage/**',\n '**/.turbo/**',\n '**/out/**',\n '**/*.min.*',\n '**/public/**',\n];\n","import { defineConfig } from 'eslint/config';\nimport jsxA11y from 'eslint-plugin-jsx-a11y';\n\nimport { GLOB_JSX, GLOB_TSX } from '../globs';\nimport { type Options } from '../types';\n\nexport function a11y(options: Options) {\n const { a11y: a11yOption, react: reactOption } = options;\n\n if (!a11yOption || !reactOption) return [];\n\n const files = [GLOB_JSX, GLOB_TSX];\n\n return defineConfig([\n {\n files,\n plugins: {\n 'jsx-a11y': jsxA11y,\n },\n rules: {\n ...jsxA11y.flatConfigs.recommended.rules,\n 'jsx-a11y/alt-text': 'warn',\n 'jsx-a11y/anchor-has-content': 'warn',\n 'jsx-a11y/anchor-is-valid': 'warn',\n 'jsx-a11y/click-events-have-key-events': 'warn',\n 'jsx-a11y/no-static-element-interactions': 'warn',\n },\n },\n ]);\n}\n","import eslintComments from '@eslint-community/eslint-plugin-eslint-comments/configs';\nimport { defineConfig } from 'eslint/config';\n\nimport { GLOB_SRC } from '../globs';\n\nexport function eslintCommentsConfig() {\n return defineConfig([\n {\n ...eslintComments.recommended,\n files: GLOB_SRC,\n rules: {\n ...eslintComments.recommended.rules,\n // 允许文件级别的 eslint-disable 没有对应的 eslint-enable\n '@eslint-community/eslint-comments/disable-enable-pair': 'off',\n // 禁止未使用的 eslint-disable 注释(可自动修复)\n '@eslint-community/eslint-comments/no-unused-disable': 'error',\n // 禁止没有规则名的 eslint-disable(必须指定具体规则)\n '@eslint-community/eslint-comments/no-unlimited-disable': 'error',\n // 禁止重复的 eslint-disable\n '@eslint-community/eslint-comments/no-duplicate-disable': 'error',\n // 禁止一个 eslint-enable 同时启用多个 eslint-disable(鼓励合并多行 disable 注释)\n '@eslint-community/eslint-comments/no-aggregating-enable': 'error',\n },\n },\n ]);\n}\n","import { GLOB_IGNORES } from '../globs';\nimport { type FlatConfig } from '../types';\n\nexport function ignores(userIgnores: string[] = []): FlatConfig {\n return {\n ignores: [...GLOB_IGNORES, ...userIgnores],\n };\n}\n","import { defineConfig } from 'eslint/config';\nimport { importX } from 'eslint-plugin-import-x';\nimport simpleImportSort from 'eslint-plugin-simple-import-sort';\n\nimport { GLOB_SRC } from '../globs';\nimport { type Options } from '../types';\n\nexport function imports(options: Options) {\n const { sortImports = true } = options;\n\n const configs = defineConfig([\n {\n files: GLOB_SRC,\n plugins: {\n 'import-x': importX as any,\n },\n settings: {\n 'import-x/resolver': {\n node: true,\n typescript: true,\n },\n },\n rules: {\n 'import-x/first': 'error',\n 'import-x/newline-after-import': 'error',\n 'import-x/no-duplicates': 'error',\n 'import-x/no-mutable-exports': 'error',\n 'import-x/no-self-import': 'error',\n 'import-x/consistent-type-specifier-style': 0,\n },\n },\n ]);\n\n if (sortImports) {\n configs.push({\n files: GLOB_SRC,\n plugins: {\n 'simple-import-sort': simpleImportSort,\n },\n rules: {\n 'simple-import-sort/imports': 'error',\n 'simple-import-sort/exports': 'error',\n 'sort-imports': 'off',\n },\n });\n }\n\n return configs;\n}\n","import js from '@eslint/js';\nimport { defineConfig } from 'eslint/config';\nimport globals from 'globals';\n\nimport { GLOB_SRC, GLOB_TEST } from '../globs';\n\nconst GLOB_SCRIPTS = ['**/scripts/**'];\n\nexport function javascript() {\n return defineConfig([\n {\n ...js.configs.recommended,\n files: GLOB_SRC,\n languageOptions: {\n ecmaVersion: 'latest',\n globals: {\n ...globals.browser,\n ...globals.node,\n ...globals.es2021,\n },\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n ecmaVersion: 'latest',\n sourceType: 'module',\n },\n sourceType: 'module',\n },\n linterOptions: {\n reportUnusedDisableDirectives: 'error',\n },\n rules: {\n ...js.configs.recommended.rules,\n // Only disallow console.log, allow console.warn/error/info/etc.\n 'no-console': [\n 'error',\n {\n allow: [\n 'warn',\n 'error',\n 'info',\n\n 'table',\n\n 'group',\n 'groupCollapsed',\n 'groupEnd',\n\n 'assert',\n 'clear',\n ],\n },\n ],\n 'no-empty': 'warn',\n 'no-extra-boolean-cast': 'off',\n 'no-unused-vars': 'off',\n },\n },\n // Allow all console in test and script files\n {\n files: [...GLOB_TEST, ...GLOB_SCRIPTS],\n rules: {\n 'no-console': 'off',\n },\n },\n ]);\n}\n","import nextPlugin from '@next/eslint-plugin-next';\nimport { defineConfig } from 'eslint/config';\n\nimport { GLOB_JSX, GLOB_TSX } from '../globs';\nimport { type Options } from '../types';\n\nexport function next(options: Options) {\n const { next: nextOption } = options;\n\n if (!nextOption) return [];\n\n const files = [GLOB_JSX, GLOB_TSX];\n\n return defineConfig([\n {\n files,\n plugins: {\n '@next/next': nextPlugin,\n },\n rules: {\n ...nextPlugin.configs.recommended.rules,\n ...nextPlugin.configs['core-web-vitals'].rules,\n '@next/next/no-img-element': 'off',\n },\n },\n ]);\n}\n","import eslintReact from '@eslint-react/eslint-plugin';\nimport { defineConfig } from 'eslint/config';\nimport reactPlugin from 'eslint-plugin-react';\nimport reactCompiler from 'eslint-plugin-react-compiler';\nimport reactHooksPlugin from 'eslint-plugin-react-hooks';\nimport reactRefresh from 'eslint-plugin-react-refresh';\n\nimport { GLOB_JSX, GLOB_TSX } from '../globs';\nimport { type Options } from '../types';\n\nexport function react(options: Options) {\n const { react: reactOption, reactCompiler: reactCompilerOption } = options;\n\n if (!reactOption) return [];\n\n const files = [GLOB_JSX, GLOB_TSX];\n\n const configs = defineConfig([\n {\n files,\n ...eslintReact.configs['recommended-typescript'],\n },\n {\n files,\n plugins: {\n 'react': reactPlugin,\n 'react-hooks': reactHooksPlugin,\n 'react-refresh': reactRefresh,\n },\n rules: {\n ...reactHooksPlugin.configs.recommended.rules,\n\n '@eslint-react/dom/no-dangerously-set-innerhtml': 'off',\n '@eslint-react/no-array-index-key': 'warn',\n '@eslint-react/no-leaked-conditional-rendering': 'off',\n\n 'react/self-closing-comp': 'warn',\n\n 'react-refresh/only-export-components': [\n 'warn',\n {\n allowConstantExport: true,\n allowExportNames:\n reactOption === 'next'\n ? [\n 'dynamic',\n 'dynamicParams',\n 'revalidate',\n 'fetchCache',\n 'runtime',\n 'preferredRegion',\n 'maxDuration',\n 'config',\n 'generateStaticParams',\n 'metadata',\n 'generateMetadata',\n 'viewport',\n 'generateViewport',\n ]\n : reactOption === 'remix'\n ? ['meta', 'links', 'headers', 'loader', 'action']\n : undefined,\n },\n ],\n },\n settings: {\n 'react-x': {\n version: 'detect',\n },\n },\n },\n ]);\n\n if (reactCompilerOption) {\n configs.push({\n files,\n plugins: {\n 'react-compiler': reactCompiler,\n },\n rules: {\n 'react-compiler/react-compiler': 'error',\n },\n });\n }\n\n return configs;\n}\n","import { defineConfig } from 'eslint/config';\nimport reactNativePlugin from 'eslint-plugin-react-native';\n\nimport { GLOB_JSX, GLOB_TSX } from '../globs';\nimport { type Options } from '../types';\n\nexport function reactNative(options: Options) {\n const { reactNative: reactNativeOption } = options;\n\n if (!reactNativeOption) return [];\n\n const files = [GLOB_JSX, GLOB_TSX];\n\n return defineConfig([\n {\n files,\n plugins: {\n 'react-native': reactNativePlugin,\n },\n languageOptions: {\n globals: {\n __DEV__: 'readonly',\n },\n },\n rules: {\n 'react-native/no-color-literals': 'warn',\n 'react-native/no-inline-styles': 'warn',\n 'react-native/no-raw-text': 'off',\n 'react-native/no-single-element-style-arrays': 'warn',\n 'react-native/no-unused-styles': 'error',\n 'react-native/split-platform-components': 'warn',\n },\n },\n ]);\n}\n","import { defineConfig } from 'eslint/config';\nimport regexpPlugin from 'eslint-plugin-regexp';\n\nimport { GLOB_SRC } from '../globs';\nimport { type Options } from '../types';\n\nexport function regexp(options: Options) {\n const { regexp: regexpOption = true } = options;\n\n if (!regexpOption) return [];\n\n return defineConfig([\n {\n files: GLOB_SRC,\n plugins: {\n regexp: regexpPlugin,\n },\n rules: {\n ...regexpPlugin.configs['flat/recommended'].rules,\n },\n },\n ]);\n}\n","import { defineConfig } from 'eslint/config';\nimport perfectionistPlugin from 'eslint-plugin-perfectionist';\nimport reactPlugin from 'eslint-plugin-react';\n\nimport { GLOB_JSX, GLOB_TS_ALL, GLOB_TSX } from '../globs';\nimport { type Options } from '../types';\n\nexport function sorting(options: Options) {\n const { sortKeys = true } = options;\n\n if (!sortKeys) return [];\n\n return defineConfig([\n // TypeScript interface and enum sorting\n {\n files: GLOB_TS_ALL,\n plugins: {\n perfectionist: perfectionistPlugin,\n },\n rules: {\n 'perfectionist/sort-enums': [\n 'error',\n {\n order: 'asc',\n type: 'natural',\n },\n ],\n 'perfectionist/sort-interfaces': [\n 'error',\n {\n order: 'asc',\n type: 'natural',\n },\n ],\n },\n },\n // JSX props sorting\n {\n files: [GLOB_JSX, GLOB_TSX],\n plugins: {\n react: reactPlugin,\n },\n rules: {\n 'react/jsx-sort-props': [\n 'warn',\n {\n callbacksLast: true,\n multiline: 'last',\n shorthandFirst: true,\n },\n ],\n },\n },\n ]);\n}\n","import { defineConfig } from 'eslint/config';\nimport tseslint from 'typescript-eslint';\n\nimport { GLOB_TS_ALL } from '../globs';\nimport { type Options } from '../types';\n\nexport function typescript(options: Options) {\n const {\n typescript: tsOption,\n typeChecked,\n tsconfigPath,\n parserOptions: userParserOptions,\n } = options;\n\n if (!tsOption) return [];\n\n const isStrict = tsOption === 'strict';\n\n const baseConfigs = isStrict\n ? typeChecked\n ? tseslint.configs.strictTypeChecked\n : tseslint.configs.strict\n : typeChecked\n ? tseslint.configs.recommendedTypeChecked\n : tseslint.configs.recommended;\n\n const configs = defineConfig([\n ...baseConfigs,\n {\n files: GLOB_TS_ALL,\n languageOptions: {\n parser: tseslint.parser,\n parserOptions: {\n ecmaVersion: 'latest',\n sourceType: 'module',\n ...(typeChecked && {\n projectService: !tsconfigPath,\n project: tsconfigPath,\n }),\n ...userParserOptions,\n },\n },\n rules: {\n '@typescript-eslint/consistent-type-imports': [\n 'error',\n {\n disallowTypeAnnotations: false,\n fixStyle: 'inline-type-imports',\n prefer: 'type-imports',\n },\n ],\n '@typescript-eslint/method-signature-style': ['error', 'property'],\n '@typescript-eslint/no-import-type-side-effects': 'off',\n '@typescript-eslint/no-unused-expressions': [\n 'error',\n {\n allowShortCircuit: true,\n allowTaggedTemplates: true,\n allowTernary: true,\n },\n ],\n\n ...(isStrict\n ? {}\n : {\n '@typescript-eslint/ban-ts-comment': 'off',\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-empty-object-type': 'off',\n '@typescript-eslint/no-require-imports': 'off',\n }),\n\n '@typescript-eslint/no-unused-vars': 'off',\n '@typescript-eslint/no-use-before-define': 'off',\n '@typescript-eslint/no-useless-constructor': 'off',\n },\n },\n ]);\n\n if (typeChecked) {\n configs.push({\n files: GLOB_TS_ALL,\n rules: {\n '@typescript-eslint/await-thenable': 'error',\n '@typescript-eslint/no-floating-promises': 'error',\n '@typescript-eslint/no-misused-promises': ['error', { checksVoidReturn: false }],\n '@typescript-eslint/require-await': 'error',\n },\n });\n }\n\n return configs;\n}\n","import { defineConfig } from 'eslint/config';\nimport unicornPlugin from 'eslint-plugin-unicorn';\n\nimport { GLOB_SRC } from '../globs';\n\nconst GLOB_NEXT_APP_FILES = [\n '**/app/**/page.{js,jsx,ts,tsx}',\n '**/app/**/layout.{js,jsx,ts,tsx}',\n '**/app/**/loading.{js,jsx,ts,tsx}',\n '**/app/**/error.{js,jsx,ts,tsx}',\n '**/app/**/not-found.{js,jsx,ts,tsx}',\n '**/app/**/template.{js,jsx,ts,tsx}',\n '**/app/**/default.{js,jsx,ts,tsx}',\n '**/app/**/route.{js,ts}',\n '**/app/**/opengraph-image.{js,jsx,ts,tsx}',\n '**/app/**/twitter-image.{js,jsx,ts,tsx}',\n '**/app/**/apple-icon.{js,jsx,ts,tsx}',\n '**/app/**/icon.{js,jsx,ts,tsx}',\n '**/app/**/sitemap.{js,ts}',\n '**/app/**/robots.{js,ts}',\n '**/app/**/manifest.{js,ts}',\n];\n\nconst GLOB_CONFIG_FILES = ['**/*.config.{js,mjs,ts,mts,cjs,cts}'];\n\nexport function unicorn() {\n return defineConfig([\n {\n files: GLOB_SRC,\n plugins: {\n unicorn: unicornPlugin,\n },\n rules: {\n // ===== Error Prevention / Bug Detection =====\n 'unicorn/better-regex': 'warn',\n 'unicorn/error-message': 'error',\n 'unicorn/new-for-builtins': 'error',\n 'unicorn/no-abusive-eslint-disable': 'error',\n 'unicorn/no-accessor-recursion': 'error',\n 'unicorn/no-await-in-promise-methods': 'error',\n 'unicorn/no-immediate-mutation': 'error',\n 'unicorn/no-instanceof-builtins': 'error',\n 'unicorn/no-invalid-fetch-options': 'error',\n 'unicorn/no-invalid-remove-event-listener': 'error',\n 'unicorn/no-negation-in-equality-check': 'error',\n 'unicorn/no-single-promise-in-promise-methods': 'error',\n 'unicorn/no-thenable': 'error',\n 'unicorn/throw-new-error': 'error',\n\n // ===== Code Cleanliness =====\n 'unicorn/escape-case': 'warn',\n 'unicorn/no-anonymous-default-export': 'error',\n 'unicorn/no-console-spaces': 'warn',\n 'unicorn/no-empty-file': 'warn',\n 'unicorn/no-lonely-if': 'warn',\n 'unicorn/no-new-array': 'error',\n 'unicorn/no-new-buffer': 'error',\n 'unicorn/no-unnecessary-await': 'error',\n 'unicorn/no-unreadable-iife': 'warn',\n 'unicorn/no-useless-fallback-in-spread': 'warn',\n 'unicorn/no-useless-length-check': 'warn',\n 'unicorn/no-useless-promise-resolve-reject': 'warn',\n 'unicorn/no-useless-spread': 'warn',\n 'unicorn/no-useless-switch-case': 'warn',\n 'unicorn/no-zero-fractions': 'warn',\n 'unicorn/number-literal-case': 'warn',\n 'unicorn/switch-case-braces': 'warn',\n 'unicorn/text-encoding-identifier-case': 'warn',\n 'unicorn/import-style': 'warn',\n\n // ===== Modern APIs =====\n 'unicorn/prefer-array-find': 'warn',\n 'unicorn/prefer-array-flat': 'warn',\n 'unicorn/prefer-array-flat-map': 'warn',\n 'unicorn/prefer-array-index-of': 'warn',\n 'unicorn/prefer-array-some': 'warn',\n 'unicorn/prefer-at': 'warn',\n 'unicorn/prefer-date-now': 'warn',\n 'unicorn/prefer-includes': 'warn',\n 'unicorn/prefer-logical-operator-over-ternary': 'warn',\n 'unicorn/prefer-node-protocol': 'warn',\n 'unicorn/prefer-object-from-entries': 'warn',\n 'unicorn/prefer-regexp-test': 'warn',\n 'unicorn/prefer-string-replace-all': 'warn',\n 'unicorn/prefer-string-slice': 'warn',\n 'unicorn/prefer-string-starts-ends-with': 'warn',\n 'unicorn/prefer-structured-clone': 'warn',\n\n // Styles\n 'unicorn/catch-error-name': 0,\n 'unicorn/explicit-length-check': 0,\n 'unicorn/no-array-callback-reference': 0,\n 'unicorn/require-module-specifiers': 0,\n 'unicorn/no-array-for-each': 0,\n 'unicorn/no-negated-condition': 0,\n 'unicorn/no-null': 0,\n 'unicorn/no-typeof-undefined': 0,\n 'unicorn/no-useless-undefined': 0,\n 'unicorn/prefer-code-point': 0,\n 'unicorn/prefer-number-properties': 0,\n 'unicorn/prefer-query-selector': 0,\n 'unicorn/prefer-spread': 0,\n 'unicorn/prefer-ternary': 0,\n 'unicorn/prefer-type-error': 0,\n },\n },\n {\n files: GLOB_NEXT_APP_FILES,\n rules: {\n 'unicorn/no-anonymous-default-export': 'off',\n },\n },\n {\n files: GLOB_CONFIG_FILES,\n rules: {\n 'unicorn/no-anonymous-default-export': 'off',\n },\n },\n ]);\n}\n","import { defineConfig } from 'eslint/config';\nimport unusedImportsPlugin from 'eslint-plugin-unused-imports';\n\nimport { GLOB_SRC } from '../globs';\n\nexport function unused() {\n return defineConfig([\n {\n files: GLOB_SRC,\n plugins: {\n 'unused-imports': unusedImportsPlugin,\n },\n rules: {\n 'unused-imports/no-unused-imports': 'error',\n 'unused-imports/no-unused-vars': [\n 'warn',\n {\n args: 'after-used',\n argsIgnorePattern: '^_',\n vars: 'all',\n varsIgnorePattern: '^_',\n },\n ],\n },\n },\n ]);\n}\n","import { defineConfig } from 'eslint/config';\nimport eslintPluginYml from 'eslint-plugin-yml';\n\nimport { type Options } from '../types';\n\nexport function yml(options: Options) {\n const { yml: ymlOption = true } = options;\n\n if (!ymlOption) return [];\n\n return defineConfig([\n ...eslintPluginYml.configs.recommended,\n {\n rules: {\n 'yml/quotes': [\n 'error',\n {\n avoidEscape: true,\n prefer: 'single',\n },\n ],\n },\n },\n ]);\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./eslint-typegen.d.ts\" />\n\nimport { a11y } from './configs/a11y';\nimport { eslintCommentsConfig } from './configs/eslint-comments';\nimport { ignores } from './configs/ignores';\nimport { imports } from './configs/imports';\nimport { javascript } from './configs/javascript';\nimport { next } from './configs/next';\nimport { react } from './configs/react';\nimport { reactNative } from './configs/react-native';\nimport { regexp } from './configs/regexp';\nimport { sorting } from './configs/sorting';\nimport { typescript } from './configs/typescript';\nimport { unicorn } from './configs/unicorn';\nimport { unused } from './configs/unused';\nimport { yml } from './configs/yml';\nimport { type FlatConfig, type FlatConfigArray, type Options } from './types';\n\nexport type { FlatConfig, FlatConfigArray, Linter, Options, ParserOptions } from './types';\n\nexport function defineConfig(options: Options = {}, ...userConfigs: FlatConfig[]): FlatConfigArray {\n const {\n a11y: a11yOption = false,\n ignores: userIgnores = [],\n next: nextOption = false,\n react: reactOption = false,\n reactNative: reactNativeOption = false,\n regexp: regexpOption = true,\n sortImports = true,\n sortKeys = true,\n typeChecked = false,\n typescript: tsOption = true,\n yml: ymlOption = true,\n } = options;\n\n const configs: FlatConfigArray = [\n ignores(userIgnores),\n ...javascript(),\n ...typescript({ ...options, typeChecked, typescript: tsOption }),\n ...react({ ...options, react: reactOption }),\n ...reactNative({ ...options, reactNative: reactNativeOption }),\n ...next({ ...options, next: nextOption }),\n ...a11y({ ...options, a11y: a11yOption, react: reactOption }),\n ...imports({ ...options, sortImports }),\n ...unicorn(),\n ...sorting({ ...options, sortKeys }),\n ...regexp({ ...options, regexp: regexpOption }),\n ...unused(),\n ...yml({ ...options, yml: ymlOption }),\n ...eslintCommentsConfig(),\n // 用户自定义配置(最高优先级)\n ...userConfigs,\n ];\n\n return configs;\n}\n\nexport * from './globs';\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/eslint-config",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "ESLint Flat Config configuration for LobeHub projects",
|
|
5
5
|
"homepage": "https://github.com/lobehub/lobe-lint/tree/master/packages/eslint-config",
|
|
6
6
|
"bugs": {
|
|
@@ -46,10 +46,12 @@
|
|
|
46
46
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
47
47
|
"eslint-plugin-unicorn": "^62.0.0",
|
|
48
48
|
"eslint-plugin-unused-imports": "^4.3.0",
|
|
49
|
+
"eslint-plugin-yml": "^3.1.2",
|
|
49
50
|
"globals": "^17.3.0",
|
|
50
51
|
"typescript-eslint": "^8.54.0"
|
|
51
52
|
},
|
|
52
53
|
"devDependencies": {
|
|
54
|
+
"eslint-typegen": "^2.3.0",
|
|
53
55
|
"glob": "^13.0.1"
|
|
54
56
|
},
|
|
55
57
|
"peerDependencies": {
|
|
@@ -69,7 +71,9 @@
|
|
|
69
71
|
"registry": "https://registry.npmjs.org"
|
|
70
72
|
},
|
|
71
73
|
"scripts": {
|
|
74
|
+
"prebuild": "node ./scripts/generate-eslint-typegen.mjs",
|
|
72
75
|
"build": "tsdown",
|
|
76
|
+
"postbuild": "node ./scripts/postbuild.mjs",
|
|
73
77
|
"dev": "tsdown --watch",
|
|
74
78
|
"test": "vitest run",
|
|
75
79
|
"type-check": "tsc --noEmit"
|