@fast-china/eslint-config 2.0.3 → 2.0.5

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.
Files changed (127) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +78 -19
  3. package/README.zh.md +78 -19
  4. package/dist/configs/angular.d.mts +46 -0
  5. package/dist/configs/angular.d.mts.map +1 -0
  6. package/dist/configs/angular.mjs +37 -0
  7. package/dist/configs/angular.mjs.map +1 -0
  8. package/dist/configs/common.d.mts +15 -0
  9. package/dist/configs/common.d.mts.map +1 -0
  10. package/dist/configs/common.mjs +24 -0
  11. package/dist/configs/common.mjs.map +1 -0
  12. package/dist/configs/environment.d.mts +73 -0
  13. package/dist/configs/environment.d.mts.map +1 -0
  14. package/dist/configs/environment.mjs +37 -0
  15. package/dist/configs/environment.mjs.map +1 -0
  16. package/dist/configs/ignores.d.mts +29 -0
  17. package/dist/configs/ignores.d.mts.map +1 -0
  18. package/dist/configs/ignores.mjs +46 -0
  19. package/dist/configs/ignores.mjs.map +1 -0
  20. package/dist/configs/import.d.mts +15 -0
  21. package/dist/configs/import.d.mts.map +1 -0
  22. package/dist/configs/import.mjs +25 -0
  23. package/dist/configs/import.mjs.map +1 -0
  24. package/dist/configs/index.d.mts +17 -0
  25. package/dist/configs/index.mjs +17 -0
  26. package/dist/configs/javascript.d.mts +15 -0
  27. package/dist/configs/javascript.d.mts.map +1 -0
  28. package/dist/configs/javascript.mjs +29 -0
  29. package/dist/configs/javascript.mjs.map +1 -0
  30. package/dist/configs/json.d.mts +14 -0
  31. package/dist/configs/json.d.mts.map +1 -0
  32. package/dist/configs/json.mjs +39 -0
  33. package/dist/configs/json.mjs.map +1 -0
  34. package/dist/configs/lodash.d.mts +22 -0
  35. package/dist/configs/lodash.d.mts.map +1 -0
  36. package/dist/configs/lodash.mjs +24 -0
  37. package/dist/configs/lodash.mjs.map +1 -0
  38. package/dist/configs/markdown.d.mts +13 -0
  39. package/dist/configs/markdown.d.mts.map +1 -0
  40. package/dist/configs/markdown.mjs +21 -0
  41. package/dist/configs/markdown.mjs.map +1 -0
  42. package/dist/configs/prettier.d.mts +14 -0
  43. package/dist/configs/prettier.d.mts.map +1 -0
  44. package/dist/configs/prettier.mjs +20 -0
  45. package/dist/configs/prettier.mjs.map +1 -0
  46. package/dist/configs/react.d.mts +93 -0
  47. package/dist/configs/react.d.mts.map +1 -0
  48. package/dist/configs/react.mjs +36 -0
  49. package/dist/configs/react.mjs.map +1 -0
  50. package/dist/configs/regexp.d.mts +15 -0
  51. package/dist/configs/regexp.d.mts.map +1 -0
  52. package/dist/configs/regexp.mjs +23 -0
  53. package/dist/configs/regexp.mjs.map +1 -0
  54. package/dist/configs/sort-package.d.mts +14 -0
  55. package/dist/configs/sort-package.d.mts.map +1 -0
  56. package/dist/configs/sort-package.mjs +21 -0
  57. package/dist/configs/sort-package.mjs.map +1 -0
  58. package/dist/configs/sort-tsconfig.d.mts +13 -0
  59. package/dist/configs/sort-tsconfig.d.mts.map +1 -0
  60. package/dist/configs/sort-tsconfig.mjs +21 -0
  61. package/dist/configs/sort-tsconfig.mjs.map +1 -0
  62. package/dist/configs/typescript.d.mts +76 -0
  63. package/dist/configs/typescript.d.mts.map +1 -0
  64. package/dist/configs/typescript.mjs +59 -0
  65. package/dist/configs/typescript.mjs.map +1 -0
  66. package/dist/configs/vue.d.mts +48 -0
  67. package/dist/configs/vue.d.mts.map +1 -0
  68. package/dist/configs/vue.mjs +54 -0
  69. package/dist/configs/vue.mjs.map +1 -0
  70. package/dist/constants/index.d.mts +44 -0
  71. package/dist/constants/index.d.mts.map +1 -0
  72. package/dist/constants/index.mjs +62 -0
  73. package/dist/constants/index.mjs.map +1 -0
  74. package/dist/index.d.mts +65 -163
  75. package/dist/index.d.mts.map +1 -1
  76. package/dist/index.mjs +56 -397
  77. package/dist/index.mjs.map +1 -1
  78. package/dist/rules/angular.d.mts +59 -0
  79. package/dist/rules/angular.d.mts.map +1 -0
  80. package/dist/rules/angular.mjs +60 -0
  81. package/dist/rules/angular.mjs.map +1 -0
  82. package/dist/rules/common.d.mts +33 -0
  83. package/dist/rules/common.d.mts.map +1 -0
  84. package/dist/rules/common.mjs +39 -0
  85. package/dist/rules/common.mjs.map +1 -0
  86. package/dist/rules/import.d.mts +30 -0
  87. package/dist/rules/import.d.mts.map +1 -0
  88. package/dist/rules/import.mjs +41 -0
  89. package/dist/rules/import.mjs.map +1 -0
  90. package/dist/rules/index.d.mts +12 -309
  91. package/dist/rules/index.mjs +10 -1
  92. package/dist/rules/javascript.d.mts +50 -0
  93. package/dist/rules/javascript.d.mts.map +1 -0
  94. package/dist/rules/javascript.mjs +51 -0
  95. package/dist/rules/javascript.mjs.map +1 -0
  96. package/dist/rules/lodash.d.mts +42 -0
  97. package/dist/rules/lodash.d.mts.map +1 -0
  98. package/dist/rules/lodash.mjs +45 -0
  99. package/dist/rules/lodash.mjs.map +1 -0
  100. package/dist/rules/react.d.mts +27 -0
  101. package/dist/rules/react.d.mts.map +1 -0
  102. package/dist/rules/react.mjs +28 -0
  103. package/dist/rules/react.mjs.map +1 -0
  104. package/dist/rules/sort-package.d.mts +33 -0
  105. package/dist/rules/sort-package.d.mts.map +1 -0
  106. package/dist/rules/sort-package.mjs +76 -0
  107. package/dist/rules/sort-package.mjs.map +1 -0
  108. package/dist/rules/sort-tsconfig.d.mts +21 -0
  109. package/dist/rules/sort-tsconfig.d.mts.map +1 -0
  110. package/dist/rules/sort-tsconfig.mjs +123 -0
  111. package/dist/rules/sort-tsconfig.mjs.map +1 -0
  112. package/dist/rules/typescript.d.mts +36 -0
  113. package/dist/rules/typescript.d.mts.map +1 -0
  114. package/dist/rules/typescript.mjs +37 -0
  115. package/dist/rules/typescript.mjs.map +1 -0
  116. package/dist/rules/vue.d.mts +26 -0
  117. package/dist/rules/vue.d.mts.map +1 -0
  118. package/dist/rules/vue.mjs +35 -0
  119. package/dist/rules/vue.mjs.map +1 -0
  120. package/dist/typegen.d.mts +1 -1
  121. package/docs/engineering-audit.zh.md +29 -24
  122. package/docs/rules-risk.md +3 -3
  123. package/docs/rules-risk.zh.md +3 -3
  124. package/package.json +21 -8
  125. package/dist/rules/index.d.mts.map +0 -1
  126. package/dist/rules.mjs +0 -477
  127. package/dist/rules.mjs.map +0 -1
package/dist/index.d.mts CHANGED
@@ -1,129 +1,29 @@
1
- import { t as RuleOptions } from "./typegen.mjs";
1
+ import { AngularConfigOptions } from "./configs/angular.mjs";
2
+ import { RuntimeEnvironment } from "./configs/environment.mjs";
3
+ import { ReactConfigOptions } from "./configs/react.mjs";
4
+ import { TypeScriptConfigOptions } from "./configs/typescript.mjs";
5
+ import { RuleOptions } from "./typegen.mjs";
2
6
  import { Config } from "eslint/config";
3
7
  import { Linter } from "eslint";
4
- //#region src/configs/angular.d.ts
5
- /**
6
- * Angular TypeScript 源码与 HTML 模板检查的细分选项。
7
- *
8
- * 该对象通过 `fastConfig({ angular: { ... } })` 传入。只要传入对象,Angular 支持就会
9
- * 被启用;未指定的字段继续使用各自默认值。Angular 配置始终包含框架 TypeScript 规则
10
- * 和外部 `.html` 模板基础规则,本接口只控制成本或迁移影响较高的可选部分。
11
- *
12
- * Angular 支持依赖顶层 `typescript` 能力,不能与 `typescript: false` 同时使用。
13
- * 这些选项不会修改 Angular 编译器、CLI 或模板类型检查配置。
14
- */
15
- interface AngularConfigOptions {
16
- /**
17
- * 是否使用 Angular 官方 processor,从 TypeScript 文件的
18
- * `@Component({ template: ... })` 元数据中提取内联 HTML 并复用模板规则进行检查。
19
- *
20
- * 关闭后仍会检查 Angular TypeScript 源码和外部 `.html` 模板,只是不再处理组件中的
21
- * 内联模板。大型项目若主要使用外部模板,或 processor 与其他工具发生冲突,可暂时关闭。
22
- * @default true
23
- */
24
- inlineTemplates?: boolean;
25
- /**
26
- * 是否在模板基础正确性规则之外启用 Angular 模板无障碍规则组。
27
- *
28
- * 该规则组检查替代文本、键盘交互、焦点、表单标签和 ARIA 等可访问性问题,适用于
29
- * 外部模板与已提取的内联模板。关闭后仍保留模板语法、严格比较和现代控制流等基础规则。
30
- * 对旧项目而言可能一次产生较多报告,建议在确认迁移计划后再决定是否临时关闭。
31
- * @default true
32
- */
33
- templateAccessibility?: boolean;
34
- }
35
- //#endregion
36
- //#region src/configs/environment.d.ts
37
- type RuntimeEnvironment = "browser" | "node" | "universal";
38
- //#endregion
39
- //#region src/configs/lodash.d.ts
40
- /** 项目允许使用的 Lodash 导入来源。 */
41
- type LodashPreference = "lodash" | "lodash-unified";
42
- //#endregion
43
- //#region src/configs/react.d.ts
44
- /**
45
- * React 与兼容 JSX 运行时的检测设置。
46
- *
47
- * 该对象通过 `fastConfig({ react: { ... } })` 传入。传入对象会启用 React 支持,并在
48
- * JavaScript/JSX 和 TypeScript/TSX 文件上加载对应的 `@eslint-react` 推荐预置、React
49
- * 官方 Hooks Flat Config 以及本库规则。实际文件范围仍受顶层 `javascript`、
50
- * `typescript` 开关控制。
51
- *
52
- * 这些字段只传给 ESLint 插件用于理解项目的 React 语义,不会改变 JSX 编译方式、自动
53
- * 导入 React、设置打包器别名或安装兼容运行时。
54
- */
55
- interface ReactConfigOptions {
56
- /**
57
- * 提供 React API 与 JSX 运行时的包入口名称。
58
- *
59
- * 标准 React 项目保持 `"react"`;Preact 等兼容运行时可填写自身包名,使
60
- * `@eslint-react` 按正确的导入来源识别组件和 API。该设置不会修改 TypeScript
61
- * `jsxImportSource`、Babel、Vite 或其他构建工具配置,两侧需要由项目自行保持一致。
62
- * @default "react"
63
- */
64
- importSource?: string;
65
- /**
66
- * 项目约定用于切换多态组件底层元素或组件类型的属性名。
67
- *
68
- * 例如 `<Button as="a" />` 中的 `as`。插件会据此理解多态组件最终渲染元素的语义,
69
- * 从而提高 DOM 与可访问性相关规则的判断准确度;未采用多态组件时通常无需修改。
70
- * @default "as"
71
- */
72
- polymorphicPropName?: string;
73
- /**
74
- * 供插件选择版本相关行为的 React 版本号或自动检测标记。
75
- *
76
- * `"detect"` 会尝试从当前项目依赖解析已安装的 React 版本。monorepo、PnP、兼容运行时
77
- * 或依赖不可见的执行环境若无法可靠检测,可传入明确版本号,例如 `"19.1.0"`。
78
- * 该值只影响 lint 规则判断,不会限制或安装 React 依赖版本。
79
- * @default "detect"
80
- */
81
- version?: string;
82
- }
83
- //#endregion
84
- //#region src/configs/typescript.d.ts
8
+ //#region src/index.d.ts
9
+ type RejectUnknownRuleNames<Rules extends RuleOptions> = Rules & Record<Exclude<keyof Rules, keyof RuleOptions>, never>;
85
10
  /**
86
- * TypeScript 解析器、推荐预置与类型感知检查选项。
11
+ * 为项目规则提供精确的规则名、严重级别和规则选项自动补全。
87
12
  *
88
- * 该对象通过 `fastConfig({ typescript: { ... } })` 传入。传入对象会启用 TypeScript
89
- * 支持,并检查 `.ts`、`.cts`、`.mts` 与 `.tsx`。相同的类型感知状态还会传递给已启用的
90
- * Vue 和 React 配置,使普通 TypeScript 文件、Vue SFC 与 TSX 使用一致的检查级别。
13
+ * @remarks
14
+ * 该函数不会修改传入对象;它只在 TypeScript 编译阶段拒绝未知规则和无效选项。
91
15
  *
92
- * 默认模式不读取类型信息,启动快且不要求文件属于某个 tsconfig;类型感知模式会启动
93
- * typescript-eslint Project Service,能够执行更强的语义规则,但要求项目配置和执行目录
94
- * 正确,并会增加首次检查时间与内存占用。
16
+ * @typeParam Rules - 调用方传入的规则记录类型;保留字面量键和值以提供精确推断。
17
+ * @param rules - 需要进行规则名、严重级别和选项校验的 ESLint 规则记录。
18
+ * @returns 原始规则记录。返回值同时兼容 ESLint 的通用 `RulesRecord` 类型。
95
19
  */
96
- interface TypeScriptConfigOptions {
97
- /**
98
- * 是否启用依赖完整 TypeScript 类型信息的规则。
99
- *
100
- * `false` 使用 typescript-eslint 的 `recommended` 与 `stylistic` 预置,不创建 TypeScript
101
- * Program。`true` 切换到 `recommendedTypeChecked` 与 `stylisticTypeChecked`,并启用
102
- * `parserOptions.projectService`。被检查文件通常需要包含在可发现的 tsconfig 中,否则
103
- * Project Service 会报告文件不属于项目。
104
- *
105
- * 开启后 Vue 与 React 的 TypeScript 规则也会选择类型感知版本。大型 monorepo 建议评估
106
- * lint 启动耗时和内存占用,并确保各工作区 tsconfig 边界明确。
107
- * @default false
108
- */
109
- typeChecked?: boolean;
110
- /**
111
- * typescript-eslint 查找 tsconfig 与创建 Project Service 时使用的根目录。
112
- *
113
- * 仅在 `typeChecked: true` 时写入解析器选项。普通单仓库通常可让 typescript-eslint 从
114
- * `eslint.config.*` 调用栈推断;复杂 monorepo、共享配置包装层或从其他目录启动 ESLint
115
- * 时,建议传入配置文件所在目录的绝对路径,例如 `import.meta.dirname`,避免发现错误的
116
- * tsconfig 或跨越预期的项目边界。
117
- * @default undefined
118
- */
119
- tsconfigRootDir?: string;
120
- }
121
- //#endregion
122
- //#region src/core/index.d.ts
20
+ declare const defineRules: <const Rules extends RuleOptions>(rules: RejectUnknownRuleNames<Rules>) => Rules & Linter.RulesRecord;
123
21
  /**
124
22
  * 核心工厂 `fastConfig()` 的项目级 ESLint Flat Config 选项。
125
23
  *
126
- * 每个字段只控制一个相对独立的配置片段。未传入字段时使用下方 `@default` 标注的值;
24
+ * @remarks
25
+ *
26
+ * 每个字段只控制一个相对独立的配置片段。未传入字段时使用下方 `@defaultValue` 标注的值;
127
27
  * 布尔选项传入 `false` 会让工厂完全跳过对应片段,支持对象形式的框架或 TypeScript
128
28
  * 选项传入 `true` 时采用其内部默认值,传入对象时则在启用能力的同时覆盖内部默认值。
129
29
  *
@@ -153,7 +53,7 @@ interface FastConfigOptions {
153
53
  * `typescript: false` 同时使用,否则 `fastConfig()` 会直接抛出配置错误。
154
54
  *
155
55
  * 此选项只配置 ESLint,不会创建或修改 Angular CLI、编译器或项目文件。
156
- * @default false
56
+ * @defaultValue `false`
157
57
  */
158
58
  angular?: boolean | AngularConfigOptions;
159
59
  /**
@@ -166,7 +66,7 @@ interface FastConfigOptions {
166
66
  * 常见 Vue、React、Angular 与 Vite 浏览器应用通常保持 `"browser"`。无论选择哪种
167
67
  * 环境,配置文件、脚本目录和测试文件等 Node.js 工程文件都会单独获得 Node.js
168
68
  * 全局变量。此选项不改变 JavaScript 编译目标或打包平台。
169
- * @default "browser"
69
+ * @defaultValue `"browser"`
170
70
  */
171
71
  environment?: RuntimeEnvironment;
172
72
  /**
@@ -175,7 +75,7 @@ interface FastConfigOptions {
175
75
  * 适用于测试运行器、UniApp、浏览器扩展或其他宿主平台注入的 API。值的格式遵循
176
76
  * ESLint `Linter.Globals`,可以声明为 `"readonly"`、`"writable"` 或 `"off"`。
177
77
  * 自定义值在环境预置之后合并,因此同名项目配置可以覆盖预置的读写权限。
178
- * @default undefined
78
+ * @defaultValue `undefined`
179
79
  */
180
80
  globals?: Linter.Globals;
181
81
  /**
@@ -183,7 +83,7 @@ interface FastConfigOptions {
183
83
  *
184
84
  * 关闭此项只会停止读取 `.gitignore`,不会移除本库内置的依赖目录、构建产物、
185
85
  * 缓存、生成文件和锁文件忽略模式;如需补充忽略项,请使用 `ignores`。
186
- * @default true
86
+ * @defaultValue `true`
187
87
  */
188
88
  gitignore?: boolean;
189
89
  /**
@@ -191,7 +91,7 @@ interface FastConfigOptions {
191
91
  *
192
92
  * 这些模式不会替换内置忽略项。模式按 ESLint Flat Config 的全局忽略语义解析,
193
93
  * 适合排除项目特有的生成目录、工具输出或不应参与检查的资源。
194
- * @default []
94
+ * @defaultValue `[]`
195
95
  */
196
96
  ignores?: readonly string[];
197
97
  /**
@@ -201,16 +101,16 @@ interface FastConfigOptions {
201
101
  * resolver,因此默认关闭了强依赖模块解析且容易误报的规则。如果项目重新启用这些
202
102
  * 规则,应在传给 `fastConfig()` 的覆盖配置中同时补充 resolver。关闭本选项不会影响
203
103
  * JavaScript 或 TypeScript 的基础语法检查。
204
- * @default true
104
+ * @defaultValue `true`
205
105
  */
206
106
  imports?: boolean;
207
107
  /**
208
108
  * 是否让工厂接管 JavaScript、CommonJS、ES Module 与 JSX 文件。
209
109
  *
210
110
  * 启用时匹配 `.js`、`.cjs`、`.mjs` 与 `.jsx`;关闭后这些文件不会进入基础规则、
211
- * 环境全局变量、import、regexp、Lodash 或 React 的 JavaScript 配置范围,但不会影响
111
+ * 环境全局变量、import、regexp 或 React 的 JavaScript 配置范围,但不会影响
212
112
  * 已启用的 TypeScript、Vue、JSON 或 Markdown 文件。
213
- * @default true
113
+ * @defaultValue `true`
214
114
  */
215
115
  javascript?: boolean;
216
116
  /**
@@ -218,27 +118,15 @@ interface FastConfigOptions {
218
118
  *
219
119
  * 此选项不负责字段排序。`sortPackageJson` 或 `sortTsconfig` 任一启用时,为了让对应
220
120
  * 排序规则能够解析文件,JSON 配置仍会被加载,即使这里显式传入 `false`。
221
- * @default true
121
+ * @defaultValue `true`
222
122
  */
223
123
  json?: boolean;
224
- /**
225
- * 是否统一项目中的 Lodash 静态 ESM 导入来源。
226
- *
227
- * - `false`:不限制 `lodash`、`lodash-es` 与 `lodash-unified` 的使用。
228
- * - `"lodash"`:允许 `lodash` 及其子路径,禁止混用另外两个包。
229
- * - `"lodash-unified"`:统一使用 `lodash-unified`,禁止另外两个包及其子路径。
230
- *
231
- * 该能力只约束静态 `import`/`export`,不会检查动态 `import()` 或 CommonJS
232
- * `require()`,也不会安装、替换或迁移任何 Lodash 依赖。
233
- * @default false
234
- */
235
- lodash?: false | LodashPreference;
236
124
  /**
237
125
  * 是否使用 `@eslint/markdown` 推荐配置检查 `.md` 文档的结构和 Markdown 语法。
238
126
  *
239
127
  * 该配置关注 Markdown 文档本身,不会自动把项目的 JavaScript、TypeScript 或框架
240
128
  * 规则应用到围栏代码块;如需检查代码块,应通过项目覆盖配置明确指定。
241
- * @default true
129
+ * @defaultValue `false`
242
130
  */
243
131
  markdown?: boolean;
244
132
  /**
@@ -247,7 +135,7 @@ interface FastConfigOptions {
247
135
  * 该片段不会运行 Prettier,也不会检查文件是否符合 Prettier 输出;项目仍需自行安装
248
136
  * 并执行 Prettier。它位于内置规则之后、项目 `rules` 之前,因此项目仍可有意识地
249
137
  * 重新启用某条格式规则。
250
- * @default true
138
+ * @defaultValue `true`
251
139
  */
252
140
  prettier?: boolean;
253
141
  /**
@@ -255,7 +143,7 @@ interface FastConfigOptions {
255
143
  *
256
144
  * 规则用于发现无效、冗余、难以理解或可能产生性能问题的正则表达式;其中部分规则
257
145
  * 支持自动修复,执行 `eslint --fix` 后仍应运行项目测试验证真实匹配行为。
258
- * @default true
146
+ * @defaultValue `true`
259
147
  */
260
148
  regexp?: boolean;
261
149
  /**
@@ -265,7 +153,7 @@ interface FastConfigOptions {
265
153
  * 组件属性名。规则范围由 `javascript` 与 `typescript` 共同决定:关闭其中一种语言
266
154
  * 后,React 不会继续接管该语言的文件。兼容 Preact 等运行时时,应同时配置相应的
267
155
  * `importSource`,但此选项不会修改 JSX 编译器或打包器设置。
268
- * @default false
156
+ * @defaultValue `false`
269
157
  */
270
158
  react?: boolean | ReactConfigOptions;
271
159
  /**
@@ -274,7 +162,7 @@ interface FastConfigOptions {
274
162
  * `RuleOptions` 为已安装插件提供精确规则名、严重级别和选项自动补全。该记录排在
275
163
  * 内置规则及 Prettier 兼容层之后,可以覆盖它们;但其余位置参数中的配置优先级更高。
276
164
  * JSON、Markdown、Angular HTML 模板或其他特殊文件范围应使用其余位置参数单独配置。
277
- * @default undefined
165
+ * @defaultValue `undefined`
278
166
  */
279
167
  rules?: RuleOptions;
280
168
  /**
@@ -283,7 +171,7 @@ interface FastConfigOptions {
283
171
  * 规则只在执行 `eslint --fix` 时重排字段,并刻意不进入顺序具有运行时语义的
284
172
  * `exports` 条件对象。首次启用通常会产生较大的纯排序差异,建议单独提交并复核。
285
173
  * 启用此项会同时加载 JSON 解析配置。
286
- * @default false
174
+ * @defaultValue `false`
287
175
  */
288
176
  sortPackageJson?: boolean;
289
177
  /**
@@ -291,7 +179,7 @@ interface FastConfigOptions {
291
179
  *
292
180
  * 规则不会改变编译选项值,只在执行 `eslint --fix` 时调整字段顺序。首次启用可能产生
293
181
  * 较大差异,建议单独提交并确认继承关系仍清晰。启用此项会同时加载 JSON 解析配置。
294
- * @default false
182
+ * @defaultValue `false`
295
183
  */
296
184
  sortTsconfig?: boolean;
297
185
  /**
@@ -301,7 +189,7 @@ interface FastConfigOptions {
301
189
  * `typeChecked` 和指定 `tsconfigRootDir`。类型感知设置还会同步给 Vue 与 React 的
302
190
  * TypeScript 配置。传入 `false` 会移除 TypeScript 文件范围,使 Vue 退回 JavaScript
303
191
  * 脚本解析,并且不能再启用 Angular。
304
- * @default true
192
+ * @defaultValue `true`
305
193
  */
306
194
  typescript?: boolean | TypeScriptConfigOptions;
307
195
  /**
@@ -310,11 +198,17 @@ interface FastConfigOptions {
310
198
  * 启用后加载 Vue 3 推荐规则、模板解析器以及本库的 Vue 规则。脚本语言跟随
311
199
  * `typescript`:TypeScript 开启时同时支持 `<script lang="ts">` 和类型感知选项,
312
200
  * 关闭时仅按 JavaScript 解析脚本。此库不提供 Vue 2 兼容预置。
313
- * @default true
201
+ * @defaultValue `true`
314
202
  */
315
203
  vue?: boolean;
316
204
  }
317
- /** `fastConfig()` 使用的稳定默认值;对象被冻结,避免运行时被意外修改。 */
205
+ /**
206
+ * `fastConfig()` 使用的稳定默认选项。
207
+ *
208
+ * @remarks
209
+ * 对象在运行时被冻结,不包含无固定默认值的 `globals`、`ignores` 与 `rules` 字段。
210
+ * 调用方应将其视为只读参考,不应依赖修改该对象来改变工厂行为。
211
+ */
318
212
  declare const defaultConfigOptions: Readonly<{
319
213
  readonly angular: false;
320
214
  readonly environment: "browser";
@@ -322,8 +216,7 @@ declare const defaultConfigOptions: Readonly<{
322
216
  readonly imports: true;
323
217
  readonly javascript: true;
324
218
  readonly json: true;
325
- readonly lodash: false;
326
- readonly markdown: true;
219
+ readonly markdown: false;
327
220
  readonly prettier: true;
328
221
  readonly react: false;
329
222
  readonly regexp: true;
@@ -333,21 +226,30 @@ declare const defaultConfigOptions: Readonly<{
333
226
  readonly vue: true;
334
227
  }>;
335
228
  /**
336
- * 创建面向 Vue 3、React、Angular、Vite、TypeScript、JavaScript Node.js 项目的 ESLint Flat Config。
229
+ * 创建面向 Vue 3、Vite、TypeScript 与浏览器后台管理项目的 ESLint Flat Config。
337
230
  *
338
- * 默认导出就是此函数。额外配置参数会放在内置配置之后,因此项目可以按文件范围
339
- * 覆盖任何默认规则,而无需再次调用 ESLint 的 `defineConfig()`。
340
- */
341
- declare const fastConfig: (options?: FastConfigOptions, ...overrides: Config[]) => Config[];
342
- //#endregion
343
- //#region src/index.d.ts
344
- type RejectUnknownRuleNames<Rules extends RuleOptions> = Rules & Record<Exclude<keyof Rules, keyof RuleOptions>, never>;
345
- /**
346
- * 为项目规则提供精确的规则名、严重级别和规则选项自动补全。
231
+ * @remarks
232
+ * 默认启用浏览器环境、JavaScript、TypeScript、Vue 3、import、RegExp、JSON
233
+ * Prettier 兼容层。React、Angular、Markdown 与清单排序按需启用;Lodash 导入策略
234
+ * 通过 `@fast-china/eslint-config/configs` 独立组合。
235
+ * 额外配置参数会放在内置配置之后,因此项目可以按文件范围覆盖任何默认规则。
347
236
  *
348
- * 该函数不会修改传入对象;它只在 TypeScript 编译阶段拒绝未知规则和无效选项。
237
+ * @param options - 控制内置语言、框架、插件与项目级规则的选项。
238
+ * @param overrides - 追加到全部内置片段之后的 ESLint Flat Config,可用于按文件覆盖默认行为。
239
+ * @returns 按应用顺序展开、可直接导出给 ESLint 的 Flat Config 数组。
240
+ * @throws {@link TypeError} 当启用 Angular 的同时显式关闭 TypeScript 时抛出。
241
+ *
242
+ * @example
243
+ * ```ts
244
+ * import fastConfig from "@fast-china/eslint-config";
245
+ *
246
+ * export default fastConfig(
247
+ * { react: true, vue: false },
248
+ * { files: ["src/index.ts"], rules: { "no-console": "error" } },
249
+ * );
250
+ * ```
349
251
  */
350
- declare const defineRules: <const Rules extends RuleOptions>(rules: RejectUnknownRuleNames<Rules>) => Rules & Linter.RulesRecord;
252
+ declare const fastConfig: (options?: FastConfigOptions, ...overrides: Config[]) => Config[];
351
253
  //#endregion
352
- export { type AngularConfigOptions, type FastConfigOptions, type LodashPreference, type ReactConfigOptions, type RuleOptions, type RuntimeEnvironment, type TypeScriptConfigOptions, fastConfig as default, fastConfig, defaultConfigOptions, defineRules };
254
+ export { FastConfigOptions, type RuleOptions, fastConfig as default, fastConfig, defaultConfigOptions, defineRules };
353
255
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/configs/angular.ts","../src/configs/environment.ts","../src/configs/lodash.ts","../src/configs/react.ts","../src/configs/typescript.ts","../src/core/index.ts","../src/index.ts"],"mappings":";;;;;;;;;;;;;;UAoBiB;;;;;;;;;EAShB;;;;;;;;;EASA;;;;KC/BW;;;;KCDA;;;;;;;;;;;;;;UCcK;;;;;;;;;EAShB;;;;;;;;EAQA;;;;;;;;;EASA;;;;;;;;;;;;;;;UC3BgB;;;;;;;;;;;;;EAahB;;;;;;;;;;EAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;UCIgB;;;;;;;;;;;;EAYhB,oBAAoB;;;;;;;;;;;;;EAapB,cAAc;;;;;;;;;EASd,UAAU,OAAO;;;;;;;;EAQjB;;;;;;;;EAQA;;;;;;;;;;EAUA;;;;;;;;;EASA;;;;;;;;EAQA;;;;;;;;;;;;EAYA,iBAAiB;;;;;;;;EAQjB;;;;;;;;;EASA;;;;;;;;EAQA;;;;;;;;;;EAUA,kBAAkB;;;;;;;;;EASlB,QAAQ;;;;;;;;;EASR;;;;;;;;EAQA;;;;;;;;;;EAUA,uBAAuB;;;;;;;;;EASvB;;;cAIY,sBAAoB;;;;;;;;;;;;;;;;;;;;;;;cAwBpB,aAAc,UAAS,sBAA2B,WAAW,aAAW;;;KC5OhF,uBAAuB,cAAc,eAAe,QAAQ,OAAO,cAAc,aAAa;;;;;;cAOtF,oBAAqB,cAAc,aAAa,OAAO,uBAAuB,WAAS,QAAQ,OAAO"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;KA6BK,uBAAuB,cAAc,eAAe,QAAQ,OAAO,cAAc,aAAa;;;;;;;;;;;cAYtF,oBAAqB,cAAc,aAAa,OAAO,uBAAuB,WAAS,QAAQ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;UA6BlG;;;;;;;;;;;;EAYhB,oBAAoB;;;;;;;;;;;;;EAapB,cAAc;;;;;;;;;EASd,UAAU,OAAO;;;;;;;;EAQjB;;;;;;;;EAQA;;;;;;;;;;EAUA;;;;;;;;;EASA;;;;;;;;EAQA;;;;;;;;EAQA;;;;;;;;;EASA;;;;;;;;EAQA;;;;;;;;;;EAUA,kBAAkB;;;;;;;;;EASlB,QAAQ;;;;;;;;;EASR;;;;;;;;EAQA;;;;;;;;;;EAUA,uBAAuB;;;;;;;;;EASvB;;;;;;;;;cAUY,sBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAyCpB,aAAc,UAAS,sBAA2B,WAAW,aAAW"}