@fast-china/eslint-config 2.0.2 → 2.0.3
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/CHANGELOG.md +7 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/docs/engineering-audit.zh.md +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,13 +6,19 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## 2.0.3 - 2026-07-29
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Renamed the internal factory directory from `src/code` to the clearer `src/core` and updated all source and type-generation imports.
|
|
14
|
+
- Expanded JSDoc for public and internal configuration interfaces, covering defaults, activation conditions, file scopes, option interactions, performance tradeoffs, and behavior intentionally left to project tooling.
|
|
15
|
+
|
|
9
16
|
## 2.0.2 - 2026-07-29
|
|
10
17
|
|
|
11
18
|
### Changed
|
|
12
19
|
|
|
13
20
|
- Moved the `fastConfig()` factory implementation to `src/code/index.ts` so the source layout groups the primary code entry consistently.
|
|
14
21
|
- Inlined `defineRules()` into the root entry and kept `@fast-china/eslint-config/rules` focused on the documented raw rule records and generated `RuleOptions` type.
|
|
15
|
-
- Expanded JSDoc for public and internal configuration interfaces, covering defaults, activation conditions, file scopes, option interactions, performance tradeoffs, and behavior intentionally left to project tooling.
|
|
16
22
|
|
|
17
23
|
## 2.0.1 - 2026-07-26
|
|
18
24
|
|
package/dist/index.d.mts
CHANGED
|
@@ -119,9 +119,9 @@ interface TypeScriptConfigOptions {
|
|
|
119
119
|
tsconfigRootDir?: string;
|
|
120
120
|
}
|
|
121
121
|
//#endregion
|
|
122
|
-
//#region src/
|
|
122
|
+
//#region src/core/index.d.ts
|
|
123
123
|
/**
|
|
124
|
-
* `fastConfig()` 的项目级 ESLint Flat Config 选项。
|
|
124
|
+
* 核心工厂 `fastConfig()` 的项目级 ESLint Flat Config 选项。
|
|
125
125
|
*
|
|
126
126
|
* 每个字段只控制一个相对独立的配置片段。未传入字段时使用下方 `@default` 标注的值;
|
|
127
127
|
* 布尔选项传入 `false` 会让工厂完全跳过对应片段,支持对象形式的框架或 TypeScript
|
package/dist/index.d.mts.map
CHANGED
|
@@ -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/
|
|
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"}
|
package/dist/index.mjs
CHANGED
|
@@ -387,7 +387,7 @@ const createVueConfigs = ({ typescript = true, typescriptOptions = {} } = {}) =>
|
|
|
387
387
|
}]);
|
|
388
388
|
};
|
|
389
389
|
//#endregion
|
|
390
|
-
//#region src/
|
|
390
|
+
//#region src/core/index.ts
|
|
391
391
|
/** `fastConfig()` 使用的稳定默认值;对象被冻结,避免运行时被意外修改。 */
|
|
392
392
|
const defaultConfigOptions = Object.freeze({
|
|
393
393
|
angular: false,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/constants/index.ts","../src/configs/angular.ts","../src/configs/common.ts","../src/configs/environment.ts","../src/configs/ignores.ts","../src/configs/import.ts","../src/configs/javascript.ts","../src/configs/json.ts","../src/configs/lodash.ts","../src/configs/markdown.ts","../src/configs/prettier.ts","../src/configs/react.ts","../src/configs/regexp.ts","../src/configs/sort-package.ts","../src/configs/sort-tsconfig.ts","../src/configs/typescript.ts","../src/configs/vue.ts","../src/code/index.ts","../src/index.ts"],"sourcesContent":["/** JavaScript 与 JSX 文件;扩展名列表与 Node.js ESM/CJS 约定保持一致。 */\nexport const GLOBS_JAVASCRIPT = [\"**/*.{js,cjs,mjs,jsx}\"] as const;\n\n/** TypeScript 与 TSX 文件;包含 TypeScript 的 ESM/CJS 专用扩展名。 */\nexport const GLOBS_TYPESCRIPT = [\"**/*.{ts,cts,mts,tsx}\"] as const;\n\n/** Vue 3 单文件组件。 */\nexport const GLOB_VUE = \"**/*.vue\";\n\n/** Angular 组件、指令、服务等框架源码;Angular CLI 项目以 `.ts` 为标准源码扩展名。 */\nexport const GLOB_ANGULAR_TYPESCRIPT = \"**/*.ts\";\n\n/** Angular 外部模板;内联模板由 Angular 处理器提取后复用同一模板配置。 */\nexport const GLOB_ANGULAR_TEMPLATE = \"**/*.html\";\n\n/** ESLint JSON language 支持的三种 JSON 方言。 */\nexport const GLOB_JSON = \"**/*.json\";\nexport const GLOB_JSONC = \"**/*.jsonc\";\nexport const GLOB_JSON5 = \"**/*.json5\";\n\n/** Markdown 文档。 */\nexport const GLOB_MARKDOWN = \"**/*.md\";\n\n/** 默认由 JavaScript、TypeScript 和 Vue 规则处理的全部代码文件。 */\nexport const GLOBS_CODE = [...GLOBS_JAVASCRIPT, ...GLOBS_TYPESCRIPT, GLOB_VUE] as const;\n\n/**\n * 应额外获得 Node.js 全局变量的工程文件。\n *\n * 这些模式还会与当前已启用的 JavaScript/TypeScript 文件模式做 AND 匹配,\n * 因而关闭 TypeScript 后不会意外让 ESLint 接管 `.ts` 文件。\n */\nexport const GLOBS_NODE_TOOLING = [\n\t\"**/*.{config,setup}.{js,cjs,mjs,jsx,ts,cts,mts,tsx}\",\n\t\"**/{scripts,bin}/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}\",\n\t\"**/{test,tests}/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}\",\n\t\"**/*.{test,spec}.{js,cjs,mjs,jsx,ts,cts,mts,tsx}\",\n\t\"**/cli.{js,cjs,mjs,ts,cts,mts}\",\n] as const;\n\n/** TypeScript 配置文件;它们使用 JSONC 语法并允许注释。 */\nexport const GLOBS_TSCONFIG = [\"**/tsconfig.json\", \"**/tsconfig.*.json\"] as const;\n\n/** 不应交给 JSON/Markdown 解析器处理的包管理器锁文件。 */\nexport const GLOBS_LOCKFILES = [\"**/package-lock.json\", \"**/yarn.lock\", \"**/pnpm-lock.yaml\", \"**/bun.lock\", \"**/bun.lockb\", \"**/deno.lock\"] as const;\n","import angularPlugin from \"@angular-eslint/eslint-plugin\";\nimport angularTemplatePlugin from \"@angular-eslint/eslint-plugin-template\";\nimport angularTemplateParser from \"@angular-eslint/template-parser\";\nimport { defineConfig } from \"eslint/config\";\n\nimport { GLOB_ANGULAR_TEMPLATE, GLOB_ANGULAR_TYPESCRIPT } from \"../constants\";\nimport { angularRules, angularTemplateAccessibilityRules, angularTemplateRules } from \"../rules\";\n\nimport type { ESLint, Linter } from \"eslint\";\n\n/**\n * Angular TypeScript 源码与 HTML 模板检查的细分选项。\n *\n * 该对象通过 `fastConfig({ angular: { ... } })` 传入。只要传入对象,Angular 支持就会\n * 被启用;未指定的字段继续使用各自默认值。Angular 配置始终包含框架 TypeScript 规则\n * 和外部 `.html` 模板基础规则,本接口只控制成本或迁移影响较高的可选部分。\n *\n * Angular 支持依赖顶层 `typescript` 能力,不能与 `typescript: false` 同时使用。\n * 这些选项不会修改 Angular 编译器、CLI 或模板类型检查配置。\n */\nexport interface AngularConfigOptions {\n\t/**\n\t * 是否使用 Angular 官方 processor,从 TypeScript 文件的\n\t * `@Component({ template: ... })` 元数据中提取内联 HTML 并复用模板规则进行检查。\n\t *\n\t * 关闭后仍会检查 Angular TypeScript 源码和外部 `.html` 模板,只是不再处理组件中的\n\t * 内联模板。大型项目若主要使用外部模板,或 processor 与其他工具发生冲突,可暂时关闭。\n\t * @default true\n\t */\n\tinlineTemplates?: boolean;\n\t/**\n\t * 是否在模板基础正确性规则之外启用 Angular 模板无障碍规则组。\n\t *\n\t * 该规则组检查替代文本、键盘交互、焦点、表单标签和 ARIA 等可访问性问题,适用于\n\t * 外部模板与已提取的内联模板。关闭后仍保留模板语法、严格比较和现代控制流等基础规则。\n\t * 对旧项目而言可能一次产生较多报告,建议在确认迁移计划后再决定是否临时关闭。\n\t * @default true\n\t */\n\ttemplateAccessibility?: boolean;\n}\n\n/**\n * 创建 Angular TypeScript、外部 HTML 模板与内联模板配置。\n *\n * Angular 支持依赖工厂的 TypeScript 配置先注册 typescript-eslint 解析器;模板由\n * Angular 专用 parser 解析,内联模板通过官方 processor 复用同一套 HTML 规则。\n */\nexport const createAngularConfigs = ({ inlineTemplates = true, templateAccessibility = true }: AngularConfigOptions = {}) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: inlineTemplates ? \"@fast-china/angular/typescript-with-inline-templates\" : \"@fast-china/angular/typescript\",\n\t\t\tfiles: [GLOB_ANGULAR_TYPESCRIPT],\n\t\t\tplugins: {\n\t\t\t\t\"@angular-eslint\": angularPlugin as unknown as ESLint.Plugin,\n\t\t\t},\n\t\t\t...(inlineTemplates\n\t\t\t\t? {\n\t\t\t\t\t\tprocessor: angularTemplatePlugin.processors[\"extract-inline-html\"] as Linter.Processor,\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\trules: angularRules,\n\t\t},\n\t\t{\n\t\t\tname: templateAccessibility ? \"@fast-china/angular/template-accessibility\" : \"@fast-china/angular/template\",\n\t\t\tfiles: [GLOB_ANGULAR_TEMPLATE],\n\t\t\tlanguageOptions: {\n\t\t\t\tparser: angularTemplateParser as unknown as Linter.Parser,\n\t\t\t},\n\t\t\tplugins: {\n\t\t\t\t\"@angular-eslint/template\": angularTemplatePlugin as unknown as ESLint.Plugin,\n\t\t\t},\n\t\t\trules: {\n\t\t\t\t...angularTemplateRules,\n\t\t\t\t...(templateAccessibility ? angularTemplateAccessibilityRules : {}),\n\t\t\t},\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\n\nimport { GLOBS_CODE } from \"../constants\";\nimport { commonRules } from \"../rules\";\n\n/**\n * 创建跨 JavaScript、TypeScript 与 Vue 脚本生效的基础配置。\n *\n * 除公共规则外,这里还把无效的 `eslint-disable` 指令提升为错误,避免规则被移除后\n * 留下长期失效的抑制注释。\n */\nexport const createBaseConfigs = (files: readonly string[] = GLOBS_CODE) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/common\",\n\t\t\tfiles: [...files],\n\t\t\tlinterOptions: {\n\t\t\t\treportUnusedDisableDirectives: \"error\",\n\t\t\t},\n\t\t\trules: commonRules,\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\nimport globals from \"globals\";\n\nimport { GLOBS_CODE, GLOBS_JAVASCRIPT, GLOBS_NODE_TOOLING } from \"../constants\";\n\nimport type { Linter } from \"eslint\";\n\nexport type RuntimeEnvironment = \"browser\" | \"node\" | \"universal\";\n\n/**\n * 运行时全局变量配置片段使用的内部选项。\n *\n * `fastConfig()` 会根据已启用的语言和框架计算 `files`、`nodeFiles`,再调用\n * `createEnvironmentConfigs()`。该接口仍保持独立,以便环境片段的输入、默认值和文件\n * 范围在源码中具有明确契约;它不是根入口公开的项目配置接口。\n *\n * 应用代码与 Node.js 工程文件使用两个独立 Flat Config 片段,避免浏览器源码无条件获得\n * `process`、`Buffer` 等 Node.js 全局变量,也避免配置文件误报这些合法全局变量未定义。\n */\nexport interface EnvironmentConfigOptions {\n\t/**\n\t * 应用代码实际运行的环境,决定 `files` 范围内注入哪组标准全局变量。\n\t *\n\t * `\"browser\"` 只注入浏览器全局变量,`\"node\"` 只注入 Node.js 全局变量,\n\t * `\"universal\"` 同时注入两组。该值不会影响 `nodeFiles` 对应的工程文件;后者始终\n\t * 使用 Node.js 全局变量。\n\t * @default \"browser\"\n\t */\n\tenvironment?: RuntimeEnvironment;\n\t/**\n\t * 需要获得所选运行时全局变量的应用代码 glob 列表。\n\t *\n\t * 工厂会把当前启用的 JavaScript、TypeScript 和 Vue 文件范围传入这里。数组会复制到\n\t * 生成配置中,不会在函数内部修改调用方传入的值。\n\t * @default GLOBS_CODE\n\t */\n\tfiles?: readonly string[];\n\t/**\n\t * 当前启用且允许作为 Node.js 工程文件执行的脚本扩展名 glob 列表。\n\t *\n\t * 每一项都会与内置的配置文件、脚本目录、测试文件和 CLI 文件模式组合为 ESLint\n\t * Flat Config 的 AND 文件条件。例如顶层关闭 TypeScript 后,Node.js 工程片段也不会\n\t * 因自身模式较宽而意外接管 `.ts` 文件。\n\t * @default GLOBS_JAVASCRIPT\n\t */\n\tnodeFiles?: readonly string[];\n\t/**\n\t * 追加到应用代码环境中的项目级全局变量及其读写权限。\n\t *\n\t * 该记录在标准环境全局变量之后合并,所以同名条目可以覆盖预置权限。它应用于完整\n\t * `files` 范围;其中属于 Node.js 工程文件的子集还会由后续片段追加标准 Node.js 全局\n\t * 变量。值格式遵循 ESLint `Linter.Globals`。\n\t * @default {}\n\t */\n\tglobals?: Linter.Globals;\n}\n\n/**\n * 创建运行时环境相关的 ESLint 配置。\n *\n * 返回两个相互独立的 Flat Config 片段:第一个为应用源码配置所选环境和项目级全局\n * 变量;第二个仅命中配置、脚本、测试与 CLI 等工程文件,为它们配置 Node.js 全局变量\n * 并允许使用 `console`。分离范围可以减少跨运行时的假阴性。\n */\nexport const createEnvironmentConfigs = ({\n\tenvironment = \"browser\",\n\tfiles = GLOBS_CODE,\n\tnodeFiles = GLOBS_JAVASCRIPT,\n\tglobals: projectGlobals = {},\n}: EnvironmentConfigOptions = {}) => {\n\tconst runtimeGlobals = {\n\t\t...(environment !== \"node\" ? globals.browser : {}),\n\t\t...(environment !== \"browser\" ? globals.node : {}),\n\t\t...projectGlobals,\n\t};\n\tconst nodeToolingFiles = GLOBS_NODE_TOOLING.flatMap((nodeGlob) => nodeFiles.map((fileGlob) => [nodeGlob, fileGlob]));\n\n\treturn defineConfig([\n\t\t{\n\t\t\tname: `@fast-china/globals/${environment}`,\n\t\t\tfiles: [...files],\n\t\t\tlanguageOptions: {\n\t\t\t\tglobals: runtimeGlobals,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"@fast-china/globals/node-tooling\",\n\t\t\tfiles: nodeToolingFiles,\n\t\t\tlanguageOptions: {\n\t\t\t\tglobals: globals.node,\n\t\t\t},\n\t\t\trules: {\n\t\t\t\t\"no-console\": \"off\",\n\t\t\t},\n\t\t},\n\t]);\n};\n","import { defineConfig, globalIgnores } from \"eslint/config\";\nimport eslintConfigFlatGitignore from \"eslint-config-flat-gitignore\";\n\nimport { GLOBS_LOCKFILES } from \"../constants\";\n\n/**\n * 默认忽略依赖、构建结果、缓存、生成文件和包管理器锁文件。\n *\n * 不忽略 `src`、`public`、测试夹具或普通 Markdown 文档,避免共享配置静默漏检\n * 应由项目维护的文件。\n */\nexport const DEFAULT_IGNORE_PATTERNS = Object.freeze([\n\t\"**/node_modules/**\",\n\t\"**/{dist,build,coverage,output,temp,tmp}/**\",\n\t\"**/{.cache,.nuxt,.output,.vercel,.nitro}/**\",\n\t\"**/{.vitepress/cache,.vite-inspect}/**\",\n\t\"**/__snapshots__/**\",\n\t\"**/*.min.*\",\n\t\"**/auto-import?(s).d.ts\",\n\t\"**/components.d.ts\",\n\t...GLOBS_LOCKFILES,\n]);\n\n/** 创建全局忽略配置,并在默认集合之后追加项目自定义模式。 */\nexport const createGlobalIgnores = (additionalPatterns: readonly string[] = []) =>\n\tglobalIgnores([...DEFAULT_IGNORE_PATTERNS, ...additionalPatterns], \"@fast-china/ignores/global\");\n\n/** 读取运行 ESLint 的项目根目录中的 `.gitignore`。 */\nexport const createGitignoreConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/ignores/git\",\n\t\t\t...eslintConfigFlatGitignore({ strict: false }),\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\nimport eslintPluginImportX from \"eslint-plugin-import-x\";\n\nimport { GLOBS_CODE } from \"../constants\";\nimport { importRules } from \"../rules\";\n\n/**\n * 创建模块导入规则配置。\n *\n * 共享库不猜测项目的路径别名或解析器,因此只继承 import-x 的推荐能力,\n * 与 resolver 强耦合且容易误报的规则会在本地规则记录中显式关闭。\n */\nexport const createImportConfigs = (files: readonly string[] = GLOBS_CODE) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/import\",\n\t\t\tfiles: [...files],\n\t\t\textends: [eslintPluginImportX.flatConfigs.recommended],\n\t\t\trules: importRules,\n\t\t},\n\t]);\n","import eslint from \"@eslint/js\";\nimport { defineConfig } from \"eslint/config\";\n\nimport { GLOBS_JAVASCRIPT } from \"../constants\";\nimport { javascriptRules } from \"../rules\";\n\n/**\n * 创建 JavaScript/JSX 配置。\n *\n * `@eslint/js` 提供基础正确性规则,本仓库只在其后补充有明确维护理由的规则。\n */\nexport const createJavaScriptConfigs = (files: readonly string[] = GLOBS_JAVASCRIPT) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/javascript\",\n\t\t\tfiles: [...files],\n\t\t\textends: [eslint.configs.recommended],\n\t\t\tlanguageOptions: {\n\t\t\t\tecmaVersion: \"latest\",\n\t\t\t\tparserOptions: {\n\t\t\t\t\tecmaFeatures: {\n\t\t\t\t\t\t// 普通 `.jsx` 文件需要显式开启 JSX 语法解析。\n\t\t\t\t\t\tjsx: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\trules: javascriptRules,\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\nimport eslintPluginJsonc from \"eslint-plugin-jsonc\";\n\nimport { GLOB_JSON, GLOB_JSON5, GLOB_JSONC } from \"../constants\";\n\n/**\n * 创建 JSON、JSONC 与 JSON5 配置。\n *\n * 三种方言使用各自的官方推荐预置,避免严格 JSON 规则错误覆盖允许注释或尾随逗号的文件。\n */\nexport const createJsonConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/json/json\",\n\t\t\tfiles: [GLOB_JSON],\n\t\t\textends: [eslintPluginJsonc.configs[\"flat/recommended-with-json\"]],\n\t\t},\n\t\t{\n\t\t\tname: \"@fast-china/json/jsonc\",\n\t\t\tfiles: [GLOB_JSONC],\n\t\t\textends: [eslintPluginJsonc.configs[\"flat/recommended-with-jsonc\"]],\n\t\t},\n\t\t{\n\t\t\tname: \"@fast-china/json/json5\",\n\t\t\tfiles: [GLOB_JSON5],\n\t\t\textends: [eslintPluginJsonc.configs[\"flat/recommended-with-json5\"]],\n\t\t},\n\t\t{\n\t\t\tname: \"@fast-china/json/vscode-settings\",\n\t\t\tfiles: [\"**/.vscode/settings.json\"],\n\t\t\trules: {\n\t\t\t\t// VS Code 的 settings.json 使用带注释的 JSONC 方言。\n\t\t\t\t\"jsonc/no-comments\": \"off\",\n\t\t\t},\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\n\nimport { GLOBS_CODE } from \"../constants\";\nimport { preferLodashRules, preferLodashUnifiedRules } from \"../rules\";\n\n/** 项目允许使用的 Lodash 导入来源。 */\nexport type LodashPreference = \"lodash\" | \"lodash-unified\";\n\n/**\n * 创建 Lodash 静态导入约束。\n *\n * 该配置使用 ESLint 核心规则,因此不依赖 import-x 开关或额外插件。\n */\nexport const createLodashConfigs = (preference: LodashPreference, files: readonly string[] = GLOBS_CODE) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: `@fast-china/lodash/${preference}`,\n\t\t\tfiles: [...files],\n\t\t\trules: preference === \"lodash\" ? preferLodashRules : preferLodashUnifiedRules,\n\t\t},\n\t]);\n","import eslintMarkdown from \"@eslint/markdown\";\nimport { defineConfig } from \"eslint/config\";\n\nimport { GLOB_MARKDOWN } from \"../constants\";\n\n/**\n * 创建 Markdown 结构与语法检查配置。\n *\n * 该配置检查 Markdown 文档本身;代码块是否接受额外语言规则由项目覆盖配置决定。\n */\nexport const createMarkdownConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/markdown\",\n\t\t\tfiles: [GLOB_MARKDOWN],\n\t\t\textends: [eslintMarkdown.configs.recommended],\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\nimport eslintConfigPrettierFlat from \"eslint-config-prettier/flat\";\n\n/**\n * 创建 Prettier 兼容层。\n *\n * 它只关闭与 Prettier 冲突的 ESLint 格式规则,不会在 ESLint 进程中执行 Prettier。\n * 工厂始终把它放在内置配置之后,使上游预置的格式规则能够被正确覆盖。\n */\nexport const createPrettierConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\t...eslintConfigPrettierFlat,\n\t\t\tname: \"@fast-china/prettier\",\n\t\t},\n\t]);\n","import eslintReact from \"@eslint-react/eslint-plugin\";\nimport { defineConfig } from \"eslint/config\";\nimport eslintPluginReactHooks from \"eslint-plugin-react-hooks\";\n\nimport { GLOBS_JAVASCRIPT, GLOBS_TYPESCRIPT } from \"../constants\";\nimport { reactRules } from \"../rules\";\n\nimport type { Linter } from \"eslint\";\n\n/**\n * React 与兼容 JSX 运行时的检测设置。\n *\n * 该对象通过 `fastConfig({ react: { ... } })` 传入。传入对象会启用 React 支持,并在\n * JavaScript/JSX 和 TypeScript/TSX 文件上加载对应的 `@eslint-react` 推荐预置、React\n * 官方 Hooks Flat Config 以及本库规则。实际文件范围仍受顶层 `javascript`、\n * `typescript` 开关控制。\n *\n * 这些字段只传给 ESLint 插件用于理解项目的 React 语义,不会改变 JSX 编译方式、自动\n * 导入 React、设置打包器别名或安装兼容运行时。\n */\nexport interface ReactConfigOptions {\n\t/**\n\t * 提供 React API 与 JSX 运行时的包入口名称。\n\t *\n\t * 标准 React 项目保持 `\"react\"`;Preact 等兼容运行时可填写自身包名,使\n\t * `@eslint-react` 按正确的导入来源识别组件和 API。该设置不会修改 TypeScript\n\t * `jsxImportSource`、Babel、Vite 或其他构建工具配置,两侧需要由项目自行保持一致。\n\t * @default \"react\"\n\t */\n\timportSource?: string;\n\t/**\n\t * 项目约定用于切换多态组件底层元素或组件类型的属性名。\n\t *\n\t * 例如 `<Button as=\"a\" />` 中的 `as`。插件会据此理解多态组件最终渲染元素的语义,\n\t * 从而提高 DOM 与可访问性相关规则的判断准确度;未采用多态组件时通常无需修改。\n\t * @default \"as\"\n\t */\n\tpolymorphicPropName?: string;\n\t/**\n\t * 供插件选择版本相关行为的 React 版本号或自动检测标记。\n\t *\n\t * `\"detect\"` 会尝试从当前项目依赖解析已安装的 React 版本。monorepo、PnP、兼容运行时\n\t * 或依赖不可见的执行环境若无法可靠检测,可传入明确版本号,例如 `\"19.1.0\"`。\n\t * 该值只影响 lint 规则判断,不会限制或安装 React 依赖版本。\n\t * @default \"detect\"\n\t */\n\tversion?: string;\n}\n\n/**\n * 工厂传给 React 配置生成器的内部语言状态。\n *\n * 用户不直接配置该接口。`fastConfig()` 会把顶层 JavaScript、TypeScript 开关以及\n * TypeScript 类型感知状态转换为这里的三个布尔值,确保 React 不会重新接管已经关闭的\n * 文件类型,并为 TypeScript 选择正确的 `@eslint-react` 推荐预置。\n */\ninterface ReactLanguageOptions {\n\t/**\n\t * 是否为 `.js`、`.cjs`、`.mjs` 与 `.jsx` 文件创建 React 配置。\n\t *\n\t * 该值来自顶层 `FastConfigOptions.javascript`;为 `false` 时即使 React 已启用,\n\t * React 配置也不会声明这些文件范围。\n\t * @default true\n\t */\n\tjavascript?: boolean;\n\t/**\n\t * 是否为 TypeScript/TSX 选择需要类型信息的 React 推荐预置。\n\t *\n\t * 该值来自 `FastConfigOptions.typescript.typeChecked`,只影响 TypeScript React 配置;\n\t * JavaScript 配置始终使用普通推荐预置。\n\t * @default false\n\t */\n\ttypeChecked?: boolean;\n\t/**\n\t * 是否为 `.ts`、`.cts`、`.mts` 与 `.tsx` 文件创建 React 配置。\n\t *\n\t * 该值来自顶层 `FastConfigOptions.typescript`;为 `false` 时不会生成 TypeScript React\n\t * 片段,也不会仅因为 React 已启用而重新接管 TypeScript 文件。\n\t * @default true\n\t */\n\ttypescript?: boolean;\n}\n\n/**\n * 创建 React、JSX/TSX 与 Hooks 配置。\n *\n * JavaScript 和 TypeScript 分别继承对应的 @eslint-react 推荐预置;Hooks 使用\n * React 官方 Flat Config。组件、Hooks 即使不返回 JSX 也能在普通 `.js`/`.ts` 中\n * 定义,因此规则覆盖全部已启用脚本扩展名,而不仅是 `.jsx`/`.tsx`。\n */\nexport const createReactConfigs = (\n\t{ importSource = \"react\", polymorphicPropName = \"as\", version = \"detect\" }: ReactConfigOptions = {},\n\t{ javascript = true, typeChecked = false, typescript = true }: ReactLanguageOptions = {}\n) => {\n\tconst createConfig = (name: string, files: readonly string[], preset: Linter.Config) => ({\n\t\tname,\n\t\tfiles: [...files],\n\t\textends: [preset, eslintPluginReactHooks.configs.flat.recommended],\n\t\tsettings: {\n\t\t\t\"react-x\": {\n\t\t\t\timportSource,\n\t\t\t\tpolymorphicPropName,\n\t\t\t\tversion,\n\t\t\t},\n\t\t},\n\t\trules: reactRules,\n\t});\n\n\treturn defineConfig([\n\t\t...(javascript ? [createConfig(\"@fast-china/react/javascript\", GLOBS_JAVASCRIPT, eslintReact.configs.recommended)] : []),\n\t\t...(typescript\n\t\t\t? [\n\t\t\t\t\tcreateConfig(\n\t\t\t\t\t\ttypeChecked ? \"@fast-china/react/typescript-type-checked\" : \"@fast-china/react/typescript\",\n\t\t\t\t\t\tGLOBS_TYPESCRIPT,\n\t\t\t\t\t\ttypeChecked ? eslintReact.configs[\"recommended-type-checked\"] : eslintReact.configs[\"recommended-typescript\"]\n\t\t\t\t\t),\n\t\t\t\t]\n\t\t\t: []),\n\t]);\n};\n","import { defineConfig } from \"eslint/config\";\nimport eslintPluginRegexp from \"eslint-plugin-regexp\";\n\nimport { GLOBS_CODE } from \"../constants\";\n\n/**\n * 创建正则表达式正确性配置。\n *\n * 插件推荐规则会检查无效、冗余或容易产生回溯问题的正则结构;部分规则可修复,\n * 批量修复后仍需运行覆盖真实输入的项目测试。\n */\nexport const createRegexpConfigs = (files: readonly string[] = GLOBS_CODE) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/regexp\",\n\t\t\tfiles: [...files],\n\t\t\textends: [eslintPluginRegexp.configs[\"flat/recommended\"]],\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\n\nimport { packageJsonSortRules } from \"../rules\";\n\n/**\n * 创建 package.json 排序配置。\n *\n * 该能力会产生较大的可修复 diff,因此必须显式启用;规则不会进入顺序具有\n * 条件导出语义的 `exports` 对象内部。\n */\nexport const createPackageJsonSortConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/sort/package-json\",\n\t\t\tfiles: [\"**/package.json\"],\n\t\t\trules: packageJsonSortRules,\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\n\nimport { GLOBS_TSCONFIG } from \"../constants\";\nimport { tsconfigJsonSortRules } from \"../rules\";\n\n/**\n * 创建 tsconfig.json 排序配置。\n *\n * 排序只改变字段阅读顺序,不改变编译选项值;由于首次修复 diff 较大,默认关闭。\n */\nexport const createTsconfigSortConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/sort/tsconfig\",\n\t\t\tfiles: [...GLOBS_TSCONFIG],\n\t\t\trules: tsconfigJsonSortRules,\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\nimport tseslint from \"typescript-eslint\";\n\nimport { GLOBS_TYPESCRIPT } from \"../constants\";\nimport { typescriptRules } from \"../rules\";\n\nimport type { Linter } from \"eslint\";\n\n/**\n * TypeScript 解析器、推荐预置与类型感知检查选项。\n *\n * 该对象通过 `fastConfig({ typescript: { ... } })` 传入。传入对象会启用 TypeScript\n * 支持,并检查 `.ts`、`.cts`、`.mts` 与 `.tsx`。相同的类型感知状态还会传递给已启用的\n * Vue 和 React 配置,使普通 TypeScript 文件、Vue SFC 与 TSX 使用一致的检查级别。\n *\n * 默认模式不读取类型信息,启动快且不要求文件属于某个 tsconfig;类型感知模式会启动\n * typescript-eslint Project Service,能够执行更强的语义规则,但要求项目配置和执行目录\n * 正确,并会增加首次检查时间与内存占用。\n */\nexport interface TypeScriptConfigOptions {\n\t/**\n\t * 是否启用依赖完整 TypeScript 类型信息的规则。\n\t *\n\t * `false` 使用 typescript-eslint 的 `recommended` 与 `stylistic` 预置,不创建 TypeScript\n\t * Program。`true` 切换到 `recommendedTypeChecked` 与 `stylisticTypeChecked`,并启用\n\t * `parserOptions.projectService`。被检查文件通常需要包含在可发现的 tsconfig 中,否则\n\t * Project Service 会报告文件不属于项目。\n\t *\n\t * 开启后 Vue 与 React 的 TypeScript 规则也会选择类型感知版本。大型 monorepo 建议评估\n\t * lint 启动耗时和内存占用,并确保各工作区 tsconfig 边界明确。\n\t * @default false\n\t */\n\ttypeChecked?: boolean;\n\t/**\n\t * typescript-eslint 查找 tsconfig 与创建 Project Service 时使用的根目录。\n\t *\n\t * 仅在 `typeChecked: true` 时写入解析器选项。普通单仓库通常可让 typescript-eslint 从\n\t * `eslint.config.*` 调用栈推断;复杂 monorepo、共享配置包装层或从其他目录启动 ESLint\n\t * 时,建议传入配置文件所在目录的绝对路径,例如 `import.meta.dirname`,避免发现错误的\n\t * tsconfig 或跨越预期的项目边界。\n\t * @default undefined\n\t */\n\ttsconfigRootDir?: string;\n}\n\n/**\n * 返回 typescript-eslint 推荐预置。\n *\n * Vue SFC 需要移除上游仅匹配 `.ts` 的文件范围,否则这些关闭核心规则的配置会与\n * `.vue` 外层范围形成不可能命中的 AND 条件。\n */\nexport const getTypeScriptPresetConfigs = (typeChecked: boolean, removeFileScopes = false): Linter.Config[] => {\n\tconst configs = [\n\t\t...(typeChecked ? tseslint.configs.recommendedTypeChecked : tseslint.configs.recommended),\n\t\t...(typeChecked ? tseslint.configs.stylisticTypeChecked : tseslint.configs.stylistic),\n\t] as Linter.Config[];\n\n\tif (!removeFileScopes) return configs;\n\n\treturn configs.map((config) => {\n\t\tconst { files: _files, ...configWithoutFiles } = config;\n\t\treturn configWithoutFiles;\n\t});\n};\n\n/** 创建启用 Project Service 时需要的解析器选项。 */\nexport const createTypeScriptParserOptions = ({ typeChecked = false, tsconfigRootDir }: TypeScriptConfigOptions = {}) => ({\n\t...(typeChecked ? { projectService: true } : {}),\n\t...(typeChecked && tsconfigRootDir ? { tsconfigRootDir } : {}),\n});\n\n/**\n * 创建 TypeScript 配置。\n *\n * 默认采用无需类型信息的 recommended + stylistic 预置;`typeChecked: true` 会切换为\n * 对应的类型感知预置并启动 Project Service。\n */\nexport const createTypeScriptConfigs = (options: TypeScriptConfigOptions = {}, files: readonly string[] = GLOBS_TYPESCRIPT) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: options.typeChecked ? \"@fast-china/typescript/type-checked\" : \"@fast-china/typescript\",\n\t\t\tfiles: [...files],\n\t\t\textends: getTypeScriptPresetConfigs(options.typeChecked ?? false),\n\t\t\tlanguageOptions: {\n\t\t\t\tecmaVersion: \"latest\",\n\t\t\t\tparserOptions: createTypeScriptParserOptions(options),\n\t\t\t},\n\t\t\trules: typescriptRules,\n\t\t},\n\t]);\n","import eslint from \"@eslint/js\";\nimport { defineConfig } from \"eslint/config\";\nimport eslintPluginVue from \"eslint-plugin-vue\";\nimport tseslint from \"typescript-eslint\";\nimport vueEslintParser from \"vue-eslint-parser\";\n\nimport { GLOB_VUE } from \"../constants\";\nimport { typescriptRules, vueRules } from \"../rules\";\n\nimport { type TypeScriptConfigOptions, createTypeScriptParserOptions, getTypeScriptPresetConfigs } from \"./typescript\";\n\n/**\n * Vue 3 单文件组件生成器使用的脚本语言与类型感知选项。\n *\n * 该接口是 `fastConfig()` 组装 Vue 配置时使用的内部契约,不是根入口的独立用户选项。\n * 用户通过顶层 `vue` 决定是否接管 `.vue` 文件,通过顶层 `typescript` 决定 SFC 脚本\n * 是否启用 TypeScript 解析和类型感知能力;工厂会把两者转换为此对象。\n *\n * Vue 模板始终由 `vue-eslint-parser` 解析。启用 TypeScript 时,它再把 `<script>` 内容\n * 委托给 typescript-eslint parser,并复用普通 TypeScript 文件的推荐预置与解析器选项。\n */\nexport interface VueConfigOptions {\n\t/**\n\t * 是否使用 typescript-eslint parser 解析 SFC 的 `<script>` 与 `<script setup>` 内容。\n\t *\n\t * `true` 同时加载 TypeScript 推荐规则和本库 TypeScript 规则,并允许\n\t * `<script lang=\"ts\">`;`false` 不注册 TypeScript 脚本解析器,只按 JavaScript 处理\n\t * SFC 脚本。该值由顶层 `FastConfigOptions.typescript` 是否关闭推导。\n\t * @default true\n\t */\n\ttypescript?: boolean;\n\t/**\n\t * 与普通 TypeScript 文件共享的类型感知和 tsconfig 根目录选项。\n\t *\n\t * `typeChecked: true` 会让 Vue SFC 使用类型感知的 typescript-eslint 预置并启动 Project\n\t * Service;`tsconfigRootDir` 会原样传给解析器。工厂只会在顶层 TypeScript 能力启用时\n\t * 传入有效设置,避免 Vue 单独形成与普通 `.ts` 文件不一致的类型检查模式。\n\t * @default {}\n\t */\n\ttypescriptOptions?: TypeScriptConfigOptions;\n}\n\n/**\n * 创建 Vue 3 单文件组件配置。\n *\n * 本包只处理 Vue 3。启用 TypeScript 时,Vue 模板解析器通过 `parserOptions.parser`\n * 委托给 typescript-eslint;这是 Vue 官方推荐的自定义脚本解析器接入方式。\n */\nexport const createVueConfigs = ({ typescript = true, typescriptOptions = {} }: VueConfigOptions = {}) => {\n\tconst typeChecked = typescriptOptions.typeChecked ?? false;\n\tconst typeScriptConfigs = typescript ? getTypeScriptPresetConfigs(typeChecked, true) : [];\n\n\treturn defineConfig([\n\t\t{\n\t\t\tname: typeChecked ? \"@fast-china/vue/type-checked\" : \"@fast-china/vue\",\n\t\t\tfiles: [GLOB_VUE],\n\t\t\textends: [eslint.configs.recommended, ...typeScriptConfigs, ...eslintPluginVue.configs[\"flat/recommended\"]],\n\t\t\tlanguageOptions: {\n\t\t\t\tecmaVersion: \"latest\",\n\t\t\t\tparser: vueEslintParser,\n\t\t\t\tparserOptions: {\n\t\t\t\t\t...(typescript ? { parser: tseslint.parser, extraFileExtensions: [\".vue\"] } : {}),\n\t\t\t\t\tecmaFeatures: {\n\t\t\t\t\t\tjsx: true,\n\t\t\t\t\t},\n\t\t\t\t\tsourceType: \"module\",\n\t\t\t\t\t...createTypeScriptParserOptions(typescriptOptions),\n\t\t\t\t},\n\t\t\t},\n\t\t\trules: {\n\t\t\t\t...(typescript ? typescriptRules : {}),\n\t\t\t\t...vueRules,\n\t\t\t},\n\t\t},\n\t]);\n};\n","import { type Config, defineConfig } from \"eslint/config\";\n\nimport { type AngularConfigOptions, createAngularConfigs } from \"../configs/angular\";\nimport { createBaseConfigs } from \"../configs/common\";\nimport { type RuntimeEnvironment, createEnvironmentConfigs } from \"../configs/environment\";\nimport { createGitignoreConfigs, createGlobalIgnores } from \"../configs/ignores\";\nimport { createImportConfigs } from \"../configs/import\";\nimport { createJavaScriptConfigs } from \"../configs/javascript\";\nimport { createJsonConfigs } from \"../configs/json\";\nimport { type LodashPreference, createLodashConfigs } from \"../configs/lodash\";\nimport { createMarkdownConfigs } from \"../configs/markdown\";\nimport { createPrettierConfigs } from \"../configs/prettier\";\nimport { type ReactConfigOptions, createReactConfigs } from \"../configs/react\";\nimport { createRegexpConfigs } from \"../configs/regexp\";\nimport { createPackageJsonSortConfigs } from \"../configs/sort-package\";\nimport { createTsconfigSortConfigs } from \"../configs/sort-tsconfig\";\nimport { type TypeScriptConfigOptions, createTypeScriptConfigs } from \"../configs/typescript\";\nimport { createVueConfigs } from \"../configs/vue\";\nimport { GLOBS_JAVASCRIPT, GLOBS_TYPESCRIPT, GLOB_VUE } from \"../constants\";\n\nimport type { RuleOptions } from \"../typegen\";\nimport type { Linter } from \"eslint\";\n\n/**\n * `fastConfig()` 的项目级 ESLint Flat Config 选项。\n *\n * 每个字段只控制一个相对独立的配置片段。未传入字段时使用下方 `@default` 标注的值;\n * 布尔选项传入 `false` 会让工厂完全跳过对应片段,支持对象形式的框架或 TypeScript\n * 选项传入 `true` 时采用其内部默认值,传入对象时则在启用能力的同时覆盖内部默认值。\n *\n * `rules` 会在全部内置规则和 Prettier 兼容层之后应用;`fastConfig()` 的其余位置参数\n * 又会排在 `rules` 之后。因此,常规的全项目规则放在 `rules` 中,按文件覆盖或需要最高\n * 优先级的配置应通过其余位置参数传入。\n *\n * 这些选项只负责生成 ESLint 配置,不会修改 TypeScript、Vite 或各框架的构建配置。\n *\n * @example\n * ```ts\n * export default fastConfig({\n * environment: \"browser\",\n * react: { version: \"detect\" },\n * typescript: { typeChecked: true },\n * vue: false,\n * });\n * ```\n */\nexport interface FastConfigOptions {\n\t/**\n\t * 是否启用 Angular 源码与模板检查。\n\t *\n\t * `true` 使用 Angular 默认选项;传入对象可控制内联模板与模板无障碍规则。\n\t * 启用后会检查 Angular TypeScript 源码、外部 `.html` 模板,并默认提取\n\t * `@Component()` 中的内联模板。Angular 依赖 TypeScript 解析能力,因此不能与\n\t * `typescript: false` 同时使用,否则 `fastConfig()` 会直接抛出配置错误。\n\t *\n\t * 此选项只配置 ESLint,不会创建或修改 Angular CLI、编译器或项目文件。\n\t * @default false\n\t */\n\tangular?: boolean | AngularConfigOptions;\n\t/**\n\t * 应用代码实际运行的环境,用于声明 ESLint 可识别的运行时全局变量。\n\t *\n\t * - `\"browser\"`:提供浏览器全局变量,例如 `window`、`document`。\n\t * - `\"node\"`:提供 Node.js 全局变量,例如 `process`、`Buffer`。\n\t * - `\"universal\"`:同时提供浏览器与 Node.js 全局变量,适合 SSR 或同构代码。\n\t *\n\t * 常见 Vue、React、Angular 与 Vite 浏览器应用通常保持 `\"browser\"`。无论选择哪种\n\t * 环境,配置文件、脚本目录和测试文件等 Node.js 工程文件都会单独获得 Node.js\n\t * 全局变量。此选项不改变 JavaScript 编译目标或打包平台。\n\t * @default \"browser\"\n\t */\n\tenvironment?: RuntimeEnvironment;\n\t/**\n\t * 追加到应用代码运行环境中的项目级全局变量。\n\t *\n\t * 适用于测试运行器、UniApp、浏览器扩展或其他宿主平台注入的 API。值的格式遵循\n\t * ESLint `Linter.Globals`,可以声明为 `\"readonly\"`、`\"writable\"` 或 `\"off\"`。\n\t * 自定义值在环境预置之后合并,因此同名项目配置可以覆盖预置的读写权限。\n\t * @default undefined\n\t */\n\tglobals?: Linter.Globals;\n\t/**\n\t * 是否读取运行 ESLint 的项目根目录中的 `.gitignore` 并转换为全局忽略规则。\n\t *\n\t * 关闭此项只会停止读取 `.gitignore`,不会移除本库内置的依赖目录、构建产物、\n\t * 缓存、生成文件和锁文件忽略模式;如需补充忽略项,请使用 `ignores`。\n\t * @default true\n\t */\n\tgitignore?: boolean;\n\t/**\n\t * 追加到内置全局忽略集合末尾的 ESLint glob 模式。\n\t *\n\t * 这些模式不会替换内置忽略项。模式按 ESLint Flat Config 的全局忽略语义解析,\n\t * 适合排除项目特有的生成目录、工具输出或不应参与检查的资源。\n\t * @default []\n\t */\n\tignores?: readonly string[];\n\t/**\n\t * 是否为全部已启用代码文件加载 `eslint-plugin-import-x` 推荐规则和本库覆盖规则。\n\t *\n\t * 该片段检查常见的 ESM 导入导出问题,但共享配置不会猜测项目的路径别名或自定义\n\t * resolver,因此默认关闭了强依赖模块解析且容易误报的规则。如果项目重新启用这些\n\t * 规则,应在传给 `fastConfig()` 的覆盖配置中同时补充 resolver。关闭本选项不会影响\n\t * JavaScript 或 TypeScript 的基础语法检查。\n\t * @default true\n\t */\n\timports?: boolean;\n\t/**\n\t * 是否让工厂接管 JavaScript、CommonJS、ES Module 与 JSX 文件。\n\t *\n\t * 启用时匹配 `.js`、`.cjs`、`.mjs` 与 `.jsx`;关闭后这些文件不会进入基础规则、\n\t * 环境全局变量、import、regexp、Lodash 或 React 的 JavaScript 配置范围,但不会影响\n\t * 已启用的 TypeScript、Vue、JSON 或 Markdown 文件。\n\t * @default true\n\t */\n\tjavascript?: boolean;\n\t/**\n\t * 是否检查 JSON、JSONC 与 JSON5 文件,并为三种方言分别使用兼容的推荐规则。\n\t *\n\t * 此选项不负责字段排序。`sortPackageJson` 或 `sortTsconfig` 任一启用时,为了让对应\n\t * 排序规则能够解析文件,JSON 配置仍会被加载,即使这里显式传入 `false`。\n\t * @default true\n\t */\n\tjson?: boolean;\n\t/**\n\t * 是否统一项目中的 Lodash 静态 ESM 导入来源。\n\t *\n\t * - `false`:不限制 `lodash`、`lodash-es` 与 `lodash-unified` 的使用。\n\t * - `\"lodash\"`:允许 `lodash` 及其子路径,禁止混用另外两个包。\n\t * - `\"lodash-unified\"`:统一使用 `lodash-unified`,禁止另外两个包及其子路径。\n\t *\n\t * 该能力只约束静态 `import`/`export`,不会检查动态 `import()` 或 CommonJS\n\t * `require()`,也不会安装、替换或迁移任何 Lodash 依赖。\n\t * @default false\n\t */\n\tlodash?: false | LodashPreference;\n\t/**\n\t * 是否使用 `@eslint/markdown` 推荐配置检查 `.md` 文档的结构和 Markdown 语法。\n\t *\n\t * 该配置关注 Markdown 文档本身,不会自动把项目的 JavaScript、TypeScript 或框架\n\t * 规则应用到围栏代码块;如需检查代码块,应通过项目覆盖配置明确指定。\n\t * @default true\n\t */\n\tmarkdown?: boolean;\n\t/**\n\t * 是否加载 `eslint-config-prettier`,关闭与 Prettier 冲突的 ESLint 格式规则。\n\t *\n\t * 该片段不会运行 Prettier,也不会检查文件是否符合 Prettier 输出;项目仍需自行安装\n\t * 并执行 Prettier。它位于内置规则之后、项目 `rules` 之前,因此项目仍可有意识地\n\t * 重新启用某条格式规则。\n\t * @default true\n\t */\n\tprettier?: boolean;\n\t/**\n\t * 是否为全部已启用代码文件加载 `eslint-plugin-regexp` 推荐规则。\n\t *\n\t * 规则用于发现无效、冗余、难以理解或可能产生性能问题的正则表达式;其中部分规则\n\t * 支持自动修复,执行 `eslint --fix` 后仍应运行项目测试验证真实匹配行为。\n\t * @default true\n\t */\n\tregexp?: boolean;\n\t/**\n\t * 是否启用 React、JSX/TSX 与 Hooks 正确性规则。\n\t *\n\t * `true` 使用默认 React 设置;传入对象可指定 React 版本、兼容 JSX 运行时包和多态\n\t * 组件属性名。规则范围由 `javascript` 与 `typescript` 共同决定:关闭其中一种语言\n\t * 后,React 不会继续接管该语言的文件。兼容 Preact 等运行时时,应同时配置相应的\n\t * `importSource`,但此选项不会修改 JSX 编译器或打包器设置。\n\t * @default false\n\t */\n\treact?: boolean | ReactConfigOptions;\n\t/**\n\t * 应用于全部已启用 JavaScript、TypeScript 和 Vue 文件的项目级规则记录。\n\t *\n\t * `RuleOptions` 为已安装插件提供精确规则名、严重级别和选项自动补全。该记录排在\n\t * 内置规则及 Prettier 兼容层之后,可以覆盖它们;但其余位置参数中的配置优先级更高。\n\t * JSON、Markdown、Angular HTML 模板或其他特殊文件范围应使用其余位置参数单独配置。\n\t * @default undefined\n\t */\n\trules?: RuleOptions;\n\t/**\n\t * 是否启用 `package.json` 顶层字段的固定顺序规则。\n\t *\n\t * 规则只在执行 `eslint --fix` 时重排字段,并刻意不进入顺序具有运行时语义的\n\t * `exports` 条件对象。首次启用通常会产生较大的纯排序差异,建议单独提交并复核。\n\t * 启用此项会同时加载 JSON 解析配置。\n\t * @default false\n\t */\n\tsortPackageJson?: boolean;\n\t/**\n\t * 是否按 TypeScript 配置主题顺序整理 `tsconfig.json` 与 `tsconfig.*.json`。\n\t *\n\t * 规则不会改变编译选项值,只在执行 `eslint --fix` 时调整字段顺序。首次启用可能产生\n\t * 较大差异,建议单独提交并确认继承关系仍清晰。启用此项会同时加载 JSON 解析配置。\n\t * @default false\n\t */\n\tsortTsconfig?: boolean;\n\t/**\n\t * 是否让工厂接管 `.ts`、`.cts`、`.mts` 与 `.tsx` 文件。\n\t *\n\t * `true` 使用无需类型信息的 TypeScript 推荐与风格预置;传入对象可进一步启用\n\t * `typeChecked` 和指定 `tsconfigRootDir`。类型感知设置还会同步给 Vue 与 React 的\n\t * TypeScript 配置。传入 `false` 会移除 TypeScript 文件范围,使 Vue 退回 JavaScript\n\t * 脚本解析,并且不能再启用 Angular。\n\t * @default true\n\t */\n\ttypescript?: boolean | TypeScriptConfigOptions;\n\t/**\n\t * 是否让工厂接管 Vue 3 `.vue` 单文件组件。\n\t *\n\t * 启用后加载 Vue 3 推荐规则、模板解析器以及本库的 Vue 规则。脚本语言跟随\n\t * `typescript`:TypeScript 开启时同时支持 `<script lang=\"ts\">` 和类型感知选项,\n\t * 关闭时仅按 JavaScript 解析脚本。此库不提供 Vue 2 兼容预置。\n\t * @default true\n\t */\n\tvue?: boolean;\n}\n\n/** `fastConfig()` 使用的稳定默认值;对象被冻结,避免运行时被意外修改。 */\nexport const defaultConfigOptions = Object.freeze({\n\tangular: false,\n\tenvironment: \"browser\",\n\tgitignore: true,\n\timports: true,\n\tjavascript: true,\n\tjson: true,\n\tlodash: false,\n\tmarkdown: true,\n\tprettier: true,\n\treact: false,\n\tregexp: true,\n\tsortPackageJson: false,\n\tsortTsconfig: false,\n\ttypescript: true,\n\tvue: true,\n} as const satisfies Required<Omit<FastConfigOptions, \"globals\" | \"ignores\" | \"rules\">>);\n\n/**\n * 创建面向 Vue 3、React、Angular、Vite、TypeScript、JavaScript 与 Node.js 项目的 ESLint Flat Config。\n *\n * 默认导出就是此函数。额外配置参数会放在内置配置之后,因此项目可以按文件范围\n * 覆盖任何默认规则,而无需再次调用 ESLint 的 `defineConfig()`。\n */\nexport const fastConfig = (options: FastConfigOptions = {}, ...overrides: Config[]): Config[] => {\n\tconst angular = options.angular ?? defaultConfigOptions.angular;\n\tconst environment = options.environment ?? defaultConfigOptions.environment;\n\tconst gitignore = options.gitignore ?? defaultConfigOptions.gitignore;\n\tconst imports = options.imports ?? defaultConfigOptions.imports;\n\tconst javascript = options.javascript ?? defaultConfigOptions.javascript;\n\tconst json = options.json ?? defaultConfigOptions.json;\n\tconst lodash = options.lodash ?? defaultConfigOptions.lodash;\n\tconst markdown = options.markdown ?? defaultConfigOptions.markdown;\n\tconst prettier = options.prettier ?? defaultConfigOptions.prettier;\n\tconst react = options.react ?? defaultConfigOptions.react;\n\tconst regexp = options.regexp ?? defaultConfigOptions.regexp;\n\tconst sortPackageJson = options.sortPackageJson ?? defaultConfigOptions.sortPackageJson;\n\tconst sortTsconfig = options.sortTsconfig ?? defaultConfigOptions.sortTsconfig;\n\tconst typescript = options.typescript ?? defaultConfigOptions.typescript;\n\tconst vue = options.vue ?? defaultConfigOptions.vue;\n\n\tconst typeScriptEnabled = typescript !== false;\n\tconst typeScriptOptions = typeof typescript === \"object\" ? typescript : {};\n\tconst angularEnabled = angular !== false;\n\tconst angularOptions = typeof angular === \"object\" ? angular : {};\n\tconst reactEnabled = react !== false;\n\tconst reactOptions = typeof react === \"object\" ? react : {};\n\n\tif (angularEnabled && !typeScriptEnabled) {\n\t\tthrow new TypeError(\"Angular support requires TypeScript. Remove `typescript: false` or disable `angular`.\");\n\t}\n\t// RuleOptions 是无字符串索引签名的精确映射;运行时形状仍完全符合 ESLint RulesRecord。\n\tconst projectRules = options.rules as Linter.RulesRecord | undefined;\n\tconst scriptFiles = [...(javascript ? GLOBS_JAVASCRIPT : []), ...(typeScriptEnabled ? GLOBS_TYPESCRIPT : [])];\n\tconst codeFiles = [...scriptFiles, ...(vue ? [GLOB_VUE] : [])];\n\tconst jsonEnabled = json || sortPackageJson || sortTsconfig;\n\n\treturn defineConfig([\n\t\tcreateGlobalIgnores(options.ignores),\n\t\t...(gitignore ? createGitignoreConfigs() : []),\n\t\t...(codeFiles.length\n\t\t\t? [\n\t\t\t\t\t...createEnvironmentConfigs({\n\t\t\t\t\t\tenvironment,\n\t\t\t\t\t\tfiles: codeFiles,\n\t\t\t\t\t\tglobals: options.globals,\n\t\t\t\t\t\tnodeFiles: scriptFiles,\n\t\t\t\t\t}),\n\t\t\t\t\t...createBaseConfigs(codeFiles),\n\t\t\t\t]\n\t\t\t: []),\n\t\t...(javascript ? createJavaScriptConfigs() : []),\n\t\t...(imports && codeFiles.length ? createImportConfigs(codeFiles) : []),\n\t\t...(lodash && codeFiles.length ? createLodashConfigs(lodash, codeFiles) : []),\n\t\t...(regexp && codeFiles.length ? createRegexpConfigs(codeFiles) : []),\n\t\t...(typeScriptEnabled ? createTypeScriptConfigs(typeScriptOptions) : []),\n\t\t...(jsonEnabled ? createJsonConfigs() : []),\n\t\t...(sortPackageJson ? createPackageJsonSortConfigs() : []),\n\t\t...(sortTsconfig ? createTsconfigSortConfigs() : []),\n\t\t...(vue ? createVueConfigs({ typescript: typeScriptEnabled, typescriptOptions: typeScriptOptions }) : []),\n\t\t...(reactEnabled\n\t\t\t? createReactConfigs(reactOptions, {\n\t\t\t\t\tjavascript,\n\t\t\t\t\ttypeChecked: typeScriptOptions.typeChecked ?? false,\n\t\t\t\t\ttypescript: typeScriptEnabled,\n\t\t\t\t})\n\t\t\t: []),\n\t\t...(angularEnabled ? createAngularConfigs(angularOptions) : []),\n\t\t...(markdown ? createMarkdownConfigs() : []),\n\t\t...(prettier ? createPrettierConfigs() : []),\n\t\t...(projectRules && codeFiles.length\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"@fast-china/project/rules\",\n\t\t\t\t\t\tfiles: codeFiles,\n\t\t\t\t\t\trules: projectRules,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t: []),\n\t\t...overrides,\n\t]);\n};\n","/**\n * 根入口只暴露稳定的配置工厂、默认值和精确规则类型;内部配置片段与 glob 不再构成\n * 公共 API。需要复用原始规则记录时,请使用 `@fast-china/eslint-config/rules`。\n */\nimport type { RuleOptions } from \"./typegen\";\nimport type { Linter } from \"eslint\";\n\ntype RejectUnknownRuleNames<Rules extends RuleOptions> = Rules & Record<Exclude<keyof Rules, keyof RuleOptions>, never>;\n\n/**\n * 为项目规则提供精确的规则名、严重级别和规则选项自动补全。\n *\n * 该函数不会修改传入对象;它只在 TypeScript 编译阶段拒绝未知规则和无效选项。\n */\nexport const defineRules = <const Rules extends RuleOptions>(rules: RejectUnknownRuleNames<Rules>): Rules & Linter.RulesRecord => rules;\n\nexport { defaultConfigOptions, fastConfig as default, fastConfig } from \"./code\";\n\nexport type { AngularConfigOptions } from \"./configs/angular\";\nexport type { RuntimeEnvironment } from \"./configs/environment\";\nexport type { LodashPreference } from \"./configs/lodash\";\nexport type { ReactConfigOptions } from \"./configs/react\";\nexport type { TypeScriptConfigOptions } from \"./configs/typescript\";\nexport type { FastConfigOptions } from \"./code\";\nexport type { RuleOptions } from \"./typegen\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/constants/index.ts","../src/configs/angular.ts","../src/configs/common.ts","../src/configs/environment.ts","../src/configs/ignores.ts","../src/configs/import.ts","../src/configs/javascript.ts","../src/configs/json.ts","../src/configs/lodash.ts","../src/configs/markdown.ts","../src/configs/prettier.ts","../src/configs/react.ts","../src/configs/regexp.ts","../src/configs/sort-package.ts","../src/configs/sort-tsconfig.ts","../src/configs/typescript.ts","../src/configs/vue.ts","../src/core/index.ts","../src/index.ts"],"sourcesContent":["/** JavaScript 与 JSX 文件;扩展名列表与 Node.js ESM/CJS 约定保持一致。 */\nexport const GLOBS_JAVASCRIPT = [\"**/*.{js,cjs,mjs,jsx}\"] as const;\n\n/** TypeScript 与 TSX 文件;包含 TypeScript 的 ESM/CJS 专用扩展名。 */\nexport const GLOBS_TYPESCRIPT = [\"**/*.{ts,cts,mts,tsx}\"] as const;\n\n/** Vue 3 单文件组件。 */\nexport const GLOB_VUE = \"**/*.vue\";\n\n/** Angular 组件、指令、服务等框架源码;Angular CLI 项目以 `.ts` 为标准源码扩展名。 */\nexport const GLOB_ANGULAR_TYPESCRIPT = \"**/*.ts\";\n\n/** Angular 外部模板;内联模板由 Angular 处理器提取后复用同一模板配置。 */\nexport const GLOB_ANGULAR_TEMPLATE = \"**/*.html\";\n\n/** ESLint JSON language 支持的三种 JSON 方言。 */\nexport const GLOB_JSON = \"**/*.json\";\nexport const GLOB_JSONC = \"**/*.jsonc\";\nexport const GLOB_JSON5 = \"**/*.json5\";\n\n/** Markdown 文档。 */\nexport const GLOB_MARKDOWN = \"**/*.md\";\n\n/** 默认由 JavaScript、TypeScript 和 Vue 规则处理的全部代码文件。 */\nexport const GLOBS_CODE = [...GLOBS_JAVASCRIPT, ...GLOBS_TYPESCRIPT, GLOB_VUE] as const;\n\n/**\n * 应额外获得 Node.js 全局变量的工程文件。\n *\n * 这些模式还会与当前已启用的 JavaScript/TypeScript 文件模式做 AND 匹配,\n * 因而关闭 TypeScript 后不会意外让 ESLint 接管 `.ts` 文件。\n */\nexport const GLOBS_NODE_TOOLING = [\n\t\"**/*.{config,setup}.{js,cjs,mjs,jsx,ts,cts,mts,tsx}\",\n\t\"**/{scripts,bin}/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}\",\n\t\"**/{test,tests}/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}\",\n\t\"**/*.{test,spec}.{js,cjs,mjs,jsx,ts,cts,mts,tsx}\",\n\t\"**/cli.{js,cjs,mjs,ts,cts,mts}\",\n] as const;\n\n/** TypeScript 配置文件;它们使用 JSONC 语法并允许注释。 */\nexport const GLOBS_TSCONFIG = [\"**/tsconfig.json\", \"**/tsconfig.*.json\"] as const;\n\n/** 不应交给 JSON/Markdown 解析器处理的包管理器锁文件。 */\nexport const GLOBS_LOCKFILES = [\"**/package-lock.json\", \"**/yarn.lock\", \"**/pnpm-lock.yaml\", \"**/bun.lock\", \"**/bun.lockb\", \"**/deno.lock\"] as const;\n","import angularPlugin from \"@angular-eslint/eslint-plugin\";\nimport angularTemplatePlugin from \"@angular-eslint/eslint-plugin-template\";\nimport angularTemplateParser from \"@angular-eslint/template-parser\";\nimport { defineConfig } from \"eslint/config\";\n\nimport { GLOB_ANGULAR_TEMPLATE, GLOB_ANGULAR_TYPESCRIPT } from \"../constants\";\nimport { angularRules, angularTemplateAccessibilityRules, angularTemplateRules } from \"../rules\";\n\nimport type { ESLint, Linter } from \"eslint\";\n\n/**\n * Angular TypeScript 源码与 HTML 模板检查的细分选项。\n *\n * 该对象通过 `fastConfig({ angular: { ... } })` 传入。只要传入对象,Angular 支持就会\n * 被启用;未指定的字段继续使用各自默认值。Angular 配置始终包含框架 TypeScript 规则\n * 和外部 `.html` 模板基础规则,本接口只控制成本或迁移影响较高的可选部分。\n *\n * Angular 支持依赖顶层 `typescript` 能力,不能与 `typescript: false` 同时使用。\n * 这些选项不会修改 Angular 编译器、CLI 或模板类型检查配置。\n */\nexport interface AngularConfigOptions {\n\t/**\n\t * 是否使用 Angular 官方 processor,从 TypeScript 文件的\n\t * `@Component({ template: ... })` 元数据中提取内联 HTML 并复用模板规则进行检查。\n\t *\n\t * 关闭后仍会检查 Angular TypeScript 源码和外部 `.html` 模板,只是不再处理组件中的\n\t * 内联模板。大型项目若主要使用外部模板,或 processor 与其他工具发生冲突,可暂时关闭。\n\t * @default true\n\t */\n\tinlineTemplates?: boolean;\n\t/**\n\t * 是否在模板基础正确性规则之外启用 Angular 模板无障碍规则组。\n\t *\n\t * 该规则组检查替代文本、键盘交互、焦点、表单标签和 ARIA 等可访问性问题,适用于\n\t * 外部模板与已提取的内联模板。关闭后仍保留模板语法、严格比较和现代控制流等基础规则。\n\t * 对旧项目而言可能一次产生较多报告,建议在确认迁移计划后再决定是否临时关闭。\n\t * @default true\n\t */\n\ttemplateAccessibility?: boolean;\n}\n\n/**\n * 创建 Angular TypeScript、外部 HTML 模板与内联模板配置。\n *\n * Angular 支持依赖工厂的 TypeScript 配置先注册 typescript-eslint 解析器;模板由\n * Angular 专用 parser 解析,内联模板通过官方 processor 复用同一套 HTML 规则。\n */\nexport const createAngularConfigs = ({ inlineTemplates = true, templateAccessibility = true }: AngularConfigOptions = {}) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: inlineTemplates ? \"@fast-china/angular/typescript-with-inline-templates\" : \"@fast-china/angular/typescript\",\n\t\t\tfiles: [GLOB_ANGULAR_TYPESCRIPT],\n\t\t\tplugins: {\n\t\t\t\t\"@angular-eslint\": angularPlugin as unknown as ESLint.Plugin,\n\t\t\t},\n\t\t\t...(inlineTemplates\n\t\t\t\t? {\n\t\t\t\t\t\tprocessor: angularTemplatePlugin.processors[\"extract-inline-html\"] as Linter.Processor,\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\trules: angularRules,\n\t\t},\n\t\t{\n\t\t\tname: templateAccessibility ? \"@fast-china/angular/template-accessibility\" : \"@fast-china/angular/template\",\n\t\t\tfiles: [GLOB_ANGULAR_TEMPLATE],\n\t\t\tlanguageOptions: {\n\t\t\t\tparser: angularTemplateParser as unknown as Linter.Parser,\n\t\t\t},\n\t\t\tplugins: {\n\t\t\t\t\"@angular-eslint/template\": angularTemplatePlugin as unknown as ESLint.Plugin,\n\t\t\t},\n\t\t\trules: {\n\t\t\t\t...angularTemplateRules,\n\t\t\t\t...(templateAccessibility ? angularTemplateAccessibilityRules : {}),\n\t\t\t},\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\n\nimport { GLOBS_CODE } from \"../constants\";\nimport { commonRules } from \"../rules\";\n\n/**\n * 创建跨 JavaScript、TypeScript 与 Vue 脚本生效的基础配置。\n *\n * 除公共规则外,这里还把无效的 `eslint-disable` 指令提升为错误,避免规则被移除后\n * 留下长期失效的抑制注释。\n */\nexport const createBaseConfigs = (files: readonly string[] = GLOBS_CODE) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/common\",\n\t\t\tfiles: [...files],\n\t\t\tlinterOptions: {\n\t\t\t\treportUnusedDisableDirectives: \"error\",\n\t\t\t},\n\t\t\trules: commonRules,\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\nimport globals from \"globals\";\n\nimport { GLOBS_CODE, GLOBS_JAVASCRIPT, GLOBS_NODE_TOOLING } from \"../constants\";\n\nimport type { Linter } from \"eslint\";\n\nexport type RuntimeEnvironment = \"browser\" | \"node\" | \"universal\";\n\n/**\n * 运行时全局变量配置片段使用的内部选项。\n *\n * `fastConfig()` 会根据已启用的语言和框架计算 `files`、`nodeFiles`,再调用\n * `createEnvironmentConfigs()`。该接口仍保持独立,以便环境片段的输入、默认值和文件\n * 范围在源码中具有明确契约;它不是根入口公开的项目配置接口。\n *\n * 应用代码与 Node.js 工程文件使用两个独立 Flat Config 片段,避免浏览器源码无条件获得\n * `process`、`Buffer` 等 Node.js 全局变量,也避免配置文件误报这些合法全局变量未定义。\n */\nexport interface EnvironmentConfigOptions {\n\t/**\n\t * 应用代码实际运行的环境,决定 `files` 范围内注入哪组标准全局变量。\n\t *\n\t * `\"browser\"` 只注入浏览器全局变量,`\"node\"` 只注入 Node.js 全局变量,\n\t * `\"universal\"` 同时注入两组。该值不会影响 `nodeFiles` 对应的工程文件;后者始终\n\t * 使用 Node.js 全局变量。\n\t * @default \"browser\"\n\t */\n\tenvironment?: RuntimeEnvironment;\n\t/**\n\t * 需要获得所选运行时全局变量的应用代码 glob 列表。\n\t *\n\t * 工厂会把当前启用的 JavaScript、TypeScript 和 Vue 文件范围传入这里。数组会复制到\n\t * 生成配置中,不会在函数内部修改调用方传入的值。\n\t * @default GLOBS_CODE\n\t */\n\tfiles?: readonly string[];\n\t/**\n\t * 当前启用且允许作为 Node.js 工程文件执行的脚本扩展名 glob 列表。\n\t *\n\t * 每一项都会与内置的配置文件、脚本目录、测试文件和 CLI 文件模式组合为 ESLint\n\t * Flat Config 的 AND 文件条件。例如顶层关闭 TypeScript 后,Node.js 工程片段也不会\n\t * 因自身模式较宽而意外接管 `.ts` 文件。\n\t * @default GLOBS_JAVASCRIPT\n\t */\n\tnodeFiles?: readonly string[];\n\t/**\n\t * 追加到应用代码环境中的项目级全局变量及其读写权限。\n\t *\n\t * 该记录在标准环境全局变量之后合并,所以同名条目可以覆盖预置权限。它应用于完整\n\t * `files` 范围;其中属于 Node.js 工程文件的子集还会由后续片段追加标准 Node.js 全局\n\t * 变量。值格式遵循 ESLint `Linter.Globals`。\n\t * @default {}\n\t */\n\tglobals?: Linter.Globals;\n}\n\n/**\n * 创建运行时环境相关的 ESLint 配置。\n *\n * 返回两个相互独立的 Flat Config 片段:第一个为应用源码配置所选环境和项目级全局\n * 变量;第二个仅命中配置、脚本、测试与 CLI 等工程文件,为它们配置 Node.js 全局变量\n * 并允许使用 `console`。分离范围可以减少跨运行时的假阴性。\n */\nexport const createEnvironmentConfigs = ({\n\tenvironment = \"browser\",\n\tfiles = GLOBS_CODE,\n\tnodeFiles = GLOBS_JAVASCRIPT,\n\tglobals: projectGlobals = {},\n}: EnvironmentConfigOptions = {}) => {\n\tconst runtimeGlobals = {\n\t\t...(environment !== \"node\" ? globals.browser : {}),\n\t\t...(environment !== \"browser\" ? globals.node : {}),\n\t\t...projectGlobals,\n\t};\n\tconst nodeToolingFiles = GLOBS_NODE_TOOLING.flatMap((nodeGlob) => nodeFiles.map((fileGlob) => [nodeGlob, fileGlob]));\n\n\treturn defineConfig([\n\t\t{\n\t\t\tname: `@fast-china/globals/${environment}`,\n\t\t\tfiles: [...files],\n\t\t\tlanguageOptions: {\n\t\t\t\tglobals: runtimeGlobals,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"@fast-china/globals/node-tooling\",\n\t\t\tfiles: nodeToolingFiles,\n\t\t\tlanguageOptions: {\n\t\t\t\tglobals: globals.node,\n\t\t\t},\n\t\t\trules: {\n\t\t\t\t\"no-console\": \"off\",\n\t\t\t},\n\t\t},\n\t]);\n};\n","import { defineConfig, globalIgnores } from \"eslint/config\";\nimport eslintConfigFlatGitignore from \"eslint-config-flat-gitignore\";\n\nimport { GLOBS_LOCKFILES } from \"../constants\";\n\n/**\n * 默认忽略依赖、构建结果、缓存、生成文件和包管理器锁文件。\n *\n * 不忽略 `src`、`public`、测试夹具或普通 Markdown 文档,避免共享配置静默漏检\n * 应由项目维护的文件。\n */\nexport const DEFAULT_IGNORE_PATTERNS = Object.freeze([\n\t\"**/node_modules/**\",\n\t\"**/{dist,build,coverage,output,temp,tmp}/**\",\n\t\"**/{.cache,.nuxt,.output,.vercel,.nitro}/**\",\n\t\"**/{.vitepress/cache,.vite-inspect}/**\",\n\t\"**/__snapshots__/**\",\n\t\"**/*.min.*\",\n\t\"**/auto-import?(s).d.ts\",\n\t\"**/components.d.ts\",\n\t...GLOBS_LOCKFILES,\n]);\n\n/** 创建全局忽略配置,并在默认集合之后追加项目自定义模式。 */\nexport const createGlobalIgnores = (additionalPatterns: readonly string[] = []) =>\n\tglobalIgnores([...DEFAULT_IGNORE_PATTERNS, ...additionalPatterns], \"@fast-china/ignores/global\");\n\n/** 读取运行 ESLint 的项目根目录中的 `.gitignore`。 */\nexport const createGitignoreConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/ignores/git\",\n\t\t\t...eslintConfigFlatGitignore({ strict: false }),\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\nimport eslintPluginImportX from \"eslint-plugin-import-x\";\n\nimport { GLOBS_CODE } from \"../constants\";\nimport { importRules } from \"../rules\";\n\n/**\n * 创建模块导入规则配置。\n *\n * 共享库不猜测项目的路径别名或解析器,因此只继承 import-x 的推荐能力,\n * 与 resolver 强耦合且容易误报的规则会在本地规则记录中显式关闭。\n */\nexport const createImportConfigs = (files: readonly string[] = GLOBS_CODE) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/import\",\n\t\t\tfiles: [...files],\n\t\t\textends: [eslintPluginImportX.flatConfigs.recommended],\n\t\t\trules: importRules,\n\t\t},\n\t]);\n","import eslint from \"@eslint/js\";\nimport { defineConfig } from \"eslint/config\";\n\nimport { GLOBS_JAVASCRIPT } from \"../constants\";\nimport { javascriptRules } from \"../rules\";\n\n/**\n * 创建 JavaScript/JSX 配置。\n *\n * `@eslint/js` 提供基础正确性规则,本仓库只在其后补充有明确维护理由的规则。\n */\nexport const createJavaScriptConfigs = (files: readonly string[] = GLOBS_JAVASCRIPT) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/javascript\",\n\t\t\tfiles: [...files],\n\t\t\textends: [eslint.configs.recommended],\n\t\t\tlanguageOptions: {\n\t\t\t\tecmaVersion: \"latest\",\n\t\t\t\tparserOptions: {\n\t\t\t\t\tecmaFeatures: {\n\t\t\t\t\t\t// 普通 `.jsx` 文件需要显式开启 JSX 语法解析。\n\t\t\t\t\t\tjsx: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\trules: javascriptRules,\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\nimport eslintPluginJsonc from \"eslint-plugin-jsonc\";\n\nimport { GLOB_JSON, GLOB_JSON5, GLOB_JSONC } from \"../constants\";\n\n/**\n * 创建 JSON、JSONC 与 JSON5 配置。\n *\n * 三种方言使用各自的官方推荐预置,避免严格 JSON 规则错误覆盖允许注释或尾随逗号的文件。\n */\nexport const createJsonConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/json/json\",\n\t\t\tfiles: [GLOB_JSON],\n\t\t\textends: [eslintPluginJsonc.configs[\"flat/recommended-with-json\"]],\n\t\t},\n\t\t{\n\t\t\tname: \"@fast-china/json/jsonc\",\n\t\t\tfiles: [GLOB_JSONC],\n\t\t\textends: [eslintPluginJsonc.configs[\"flat/recommended-with-jsonc\"]],\n\t\t},\n\t\t{\n\t\t\tname: \"@fast-china/json/json5\",\n\t\t\tfiles: [GLOB_JSON5],\n\t\t\textends: [eslintPluginJsonc.configs[\"flat/recommended-with-json5\"]],\n\t\t},\n\t\t{\n\t\t\tname: \"@fast-china/json/vscode-settings\",\n\t\t\tfiles: [\"**/.vscode/settings.json\"],\n\t\t\trules: {\n\t\t\t\t// VS Code 的 settings.json 使用带注释的 JSONC 方言。\n\t\t\t\t\"jsonc/no-comments\": \"off\",\n\t\t\t},\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\n\nimport { GLOBS_CODE } from \"../constants\";\nimport { preferLodashRules, preferLodashUnifiedRules } from \"../rules\";\n\n/** 项目允许使用的 Lodash 导入来源。 */\nexport type LodashPreference = \"lodash\" | \"lodash-unified\";\n\n/**\n * 创建 Lodash 静态导入约束。\n *\n * 该配置使用 ESLint 核心规则,因此不依赖 import-x 开关或额外插件。\n */\nexport const createLodashConfigs = (preference: LodashPreference, files: readonly string[] = GLOBS_CODE) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: `@fast-china/lodash/${preference}`,\n\t\t\tfiles: [...files],\n\t\t\trules: preference === \"lodash\" ? preferLodashRules : preferLodashUnifiedRules,\n\t\t},\n\t]);\n","import eslintMarkdown from \"@eslint/markdown\";\nimport { defineConfig } from \"eslint/config\";\n\nimport { GLOB_MARKDOWN } from \"../constants\";\n\n/**\n * 创建 Markdown 结构与语法检查配置。\n *\n * 该配置检查 Markdown 文档本身;代码块是否接受额外语言规则由项目覆盖配置决定。\n */\nexport const createMarkdownConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/markdown\",\n\t\t\tfiles: [GLOB_MARKDOWN],\n\t\t\textends: [eslintMarkdown.configs.recommended],\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\nimport eslintConfigPrettierFlat from \"eslint-config-prettier/flat\";\n\n/**\n * 创建 Prettier 兼容层。\n *\n * 它只关闭与 Prettier 冲突的 ESLint 格式规则,不会在 ESLint 进程中执行 Prettier。\n * 工厂始终把它放在内置配置之后,使上游预置的格式规则能够被正确覆盖。\n */\nexport const createPrettierConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\t...eslintConfigPrettierFlat,\n\t\t\tname: \"@fast-china/prettier\",\n\t\t},\n\t]);\n","import eslintReact from \"@eslint-react/eslint-plugin\";\nimport { defineConfig } from \"eslint/config\";\nimport eslintPluginReactHooks from \"eslint-plugin-react-hooks\";\n\nimport { GLOBS_JAVASCRIPT, GLOBS_TYPESCRIPT } from \"../constants\";\nimport { reactRules } from \"../rules\";\n\nimport type { Linter } from \"eslint\";\n\n/**\n * React 与兼容 JSX 运行时的检测设置。\n *\n * 该对象通过 `fastConfig({ react: { ... } })` 传入。传入对象会启用 React 支持,并在\n * JavaScript/JSX 和 TypeScript/TSX 文件上加载对应的 `@eslint-react` 推荐预置、React\n * 官方 Hooks Flat Config 以及本库规则。实际文件范围仍受顶层 `javascript`、\n * `typescript` 开关控制。\n *\n * 这些字段只传给 ESLint 插件用于理解项目的 React 语义,不会改变 JSX 编译方式、自动\n * 导入 React、设置打包器别名或安装兼容运行时。\n */\nexport interface ReactConfigOptions {\n\t/**\n\t * 提供 React API 与 JSX 运行时的包入口名称。\n\t *\n\t * 标准 React 项目保持 `\"react\"`;Preact 等兼容运行时可填写自身包名,使\n\t * `@eslint-react` 按正确的导入来源识别组件和 API。该设置不会修改 TypeScript\n\t * `jsxImportSource`、Babel、Vite 或其他构建工具配置,两侧需要由项目自行保持一致。\n\t * @default \"react\"\n\t */\n\timportSource?: string;\n\t/**\n\t * 项目约定用于切换多态组件底层元素或组件类型的属性名。\n\t *\n\t * 例如 `<Button as=\"a\" />` 中的 `as`。插件会据此理解多态组件最终渲染元素的语义,\n\t * 从而提高 DOM 与可访问性相关规则的判断准确度;未采用多态组件时通常无需修改。\n\t * @default \"as\"\n\t */\n\tpolymorphicPropName?: string;\n\t/**\n\t * 供插件选择版本相关行为的 React 版本号或自动检测标记。\n\t *\n\t * `\"detect\"` 会尝试从当前项目依赖解析已安装的 React 版本。monorepo、PnP、兼容运行时\n\t * 或依赖不可见的执行环境若无法可靠检测,可传入明确版本号,例如 `\"19.1.0\"`。\n\t * 该值只影响 lint 规则判断,不会限制或安装 React 依赖版本。\n\t * @default \"detect\"\n\t */\n\tversion?: string;\n}\n\n/**\n * 工厂传给 React 配置生成器的内部语言状态。\n *\n * 用户不直接配置该接口。`fastConfig()` 会把顶层 JavaScript、TypeScript 开关以及\n * TypeScript 类型感知状态转换为这里的三个布尔值,确保 React 不会重新接管已经关闭的\n * 文件类型,并为 TypeScript 选择正确的 `@eslint-react` 推荐预置。\n */\ninterface ReactLanguageOptions {\n\t/**\n\t * 是否为 `.js`、`.cjs`、`.mjs` 与 `.jsx` 文件创建 React 配置。\n\t *\n\t * 该值来自顶层 `FastConfigOptions.javascript`;为 `false` 时即使 React 已启用,\n\t * React 配置也不会声明这些文件范围。\n\t * @default true\n\t */\n\tjavascript?: boolean;\n\t/**\n\t * 是否为 TypeScript/TSX 选择需要类型信息的 React 推荐预置。\n\t *\n\t * 该值来自 `FastConfigOptions.typescript.typeChecked`,只影响 TypeScript React 配置;\n\t * JavaScript 配置始终使用普通推荐预置。\n\t * @default false\n\t */\n\ttypeChecked?: boolean;\n\t/**\n\t * 是否为 `.ts`、`.cts`、`.mts` 与 `.tsx` 文件创建 React 配置。\n\t *\n\t * 该值来自顶层 `FastConfigOptions.typescript`;为 `false` 时不会生成 TypeScript React\n\t * 片段,也不会仅因为 React 已启用而重新接管 TypeScript 文件。\n\t * @default true\n\t */\n\ttypescript?: boolean;\n}\n\n/**\n * 创建 React、JSX/TSX 与 Hooks 配置。\n *\n * JavaScript 和 TypeScript 分别继承对应的 @eslint-react 推荐预置;Hooks 使用\n * React 官方 Flat Config。组件、Hooks 即使不返回 JSX 也能在普通 `.js`/`.ts` 中\n * 定义,因此规则覆盖全部已启用脚本扩展名,而不仅是 `.jsx`/`.tsx`。\n */\nexport const createReactConfigs = (\n\t{ importSource = \"react\", polymorphicPropName = \"as\", version = \"detect\" }: ReactConfigOptions = {},\n\t{ javascript = true, typeChecked = false, typescript = true }: ReactLanguageOptions = {}\n) => {\n\tconst createConfig = (name: string, files: readonly string[], preset: Linter.Config) => ({\n\t\tname,\n\t\tfiles: [...files],\n\t\textends: [preset, eslintPluginReactHooks.configs.flat.recommended],\n\t\tsettings: {\n\t\t\t\"react-x\": {\n\t\t\t\timportSource,\n\t\t\t\tpolymorphicPropName,\n\t\t\t\tversion,\n\t\t\t},\n\t\t},\n\t\trules: reactRules,\n\t});\n\n\treturn defineConfig([\n\t\t...(javascript ? [createConfig(\"@fast-china/react/javascript\", GLOBS_JAVASCRIPT, eslintReact.configs.recommended)] : []),\n\t\t...(typescript\n\t\t\t? [\n\t\t\t\t\tcreateConfig(\n\t\t\t\t\t\ttypeChecked ? \"@fast-china/react/typescript-type-checked\" : \"@fast-china/react/typescript\",\n\t\t\t\t\t\tGLOBS_TYPESCRIPT,\n\t\t\t\t\t\ttypeChecked ? eslintReact.configs[\"recommended-type-checked\"] : eslintReact.configs[\"recommended-typescript\"]\n\t\t\t\t\t),\n\t\t\t\t]\n\t\t\t: []),\n\t]);\n};\n","import { defineConfig } from \"eslint/config\";\nimport eslintPluginRegexp from \"eslint-plugin-regexp\";\n\nimport { GLOBS_CODE } from \"../constants\";\n\n/**\n * 创建正则表达式正确性配置。\n *\n * 插件推荐规则会检查无效、冗余或容易产生回溯问题的正则结构;部分规则可修复,\n * 批量修复后仍需运行覆盖真实输入的项目测试。\n */\nexport const createRegexpConfigs = (files: readonly string[] = GLOBS_CODE) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/regexp\",\n\t\t\tfiles: [...files],\n\t\t\textends: [eslintPluginRegexp.configs[\"flat/recommended\"]],\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\n\nimport { packageJsonSortRules } from \"../rules\";\n\n/**\n * 创建 package.json 排序配置。\n *\n * 该能力会产生较大的可修复 diff,因此必须显式启用;规则不会进入顺序具有\n * 条件导出语义的 `exports` 对象内部。\n */\nexport const createPackageJsonSortConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/sort/package-json\",\n\t\t\tfiles: [\"**/package.json\"],\n\t\t\trules: packageJsonSortRules,\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\n\nimport { GLOBS_TSCONFIG } from \"../constants\";\nimport { tsconfigJsonSortRules } from \"../rules\";\n\n/**\n * 创建 tsconfig.json 排序配置。\n *\n * 排序只改变字段阅读顺序,不改变编译选项值;由于首次修复 diff 较大,默认关闭。\n */\nexport const createTsconfigSortConfigs = () =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: \"@fast-china/sort/tsconfig\",\n\t\t\tfiles: [...GLOBS_TSCONFIG],\n\t\t\trules: tsconfigJsonSortRules,\n\t\t},\n\t]);\n","import { defineConfig } from \"eslint/config\";\nimport tseslint from \"typescript-eslint\";\n\nimport { GLOBS_TYPESCRIPT } from \"../constants\";\nimport { typescriptRules } from \"../rules\";\n\nimport type { Linter } from \"eslint\";\n\n/**\n * TypeScript 解析器、推荐预置与类型感知检查选项。\n *\n * 该对象通过 `fastConfig({ typescript: { ... } })` 传入。传入对象会启用 TypeScript\n * 支持,并检查 `.ts`、`.cts`、`.mts` 与 `.tsx`。相同的类型感知状态还会传递给已启用的\n * Vue 和 React 配置,使普通 TypeScript 文件、Vue SFC 与 TSX 使用一致的检查级别。\n *\n * 默认模式不读取类型信息,启动快且不要求文件属于某个 tsconfig;类型感知模式会启动\n * typescript-eslint Project Service,能够执行更强的语义规则,但要求项目配置和执行目录\n * 正确,并会增加首次检查时间与内存占用。\n */\nexport interface TypeScriptConfigOptions {\n\t/**\n\t * 是否启用依赖完整 TypeScript 类型信息的规则。\n\t *\n\t * `false` 使用 typescript-eslint 的 `recommended` 与 `stylistic` 预置,不创建 TypeScript\n\t * Program。`true` 切换到 `recommendedTypeChecked` 与 `stylisticTypeChecked`,并启用\n\t * `parserOptions.projectService`。被检查文件通常需要包含在可发现的 tsconfig 中,否则\n\t * Project Service 会报告文件不属于项目。\n\t *\n\t * 开启后 Vue 与 React 的 TypeScript 规则也会选择类型感知版本。大型 monorepo 建议评估\n\t * lint 启动耗时和内存占用,并确保各工作区 tsconfig 边界明确。\n\t * @default false\n\t */\n\ttypeChecked?: boolean;\n\t/**\n\t * typescript-eslint 查找 tsconfig 与创建 Project Service 时使用的根目录。\n\t *\n\t * 仅在 `typeChecked: true` 时写入解析器选项。普通单仓库通常可让 typescript-eslint 从\n\t * `eslint.config.*` 调用栈推断;复杂 monorepo、共享配置包装层或从其他目录启动 ESLint\n\t * 时,建议传入配置文件所在目录的绝对路径,例如 `import.meta.dirname`,避免发现错误的\n\t * tsconfig 或跨越预期的项目边界。\n\t * @default undefined\n\t */\n\ttsconfigRootDir?: string;\n}\n\n/**\n * 返回 typescript-eslint 推荐预置。\n *\n * Vue SFC 需要移除上游仅匹配 `.ts` 的文件范围,否则这些关闭核心规则的配置会与\n * `.vue` 外层范围形成不可能命中的 AND 条件。\n */\nexport const getTypeScriptPresetConfigs = (typeChecked: boolean, removeFileScopes = false): Linter.Config[] => {\n\tconst configs = [\n\t\t...(typeChecked ? tseslint.configs.recommendedTypeChecked : tseslint.configs.recommended),\n\t\t...(typeChecked ? tseslint.configs.stylisticTypeChecked : tseslint.configs.stylistic),\n\t] as Linter.Config[];\n\n\tif (!removeFileScopes) return configs;\n\n\treturn configs.map((config) => {\n\t\tconst { files: _files, ...configWithoutFiles } = config;\n\t\treturn configWithoutFiles;\n\t});\n};\n\n/** 创建启用 Project Service 时需要的解析器选项。 */\nexport const createTypeScriptParserOptions = ({ typeChecked = false, tsconfigRootDir }: TypeScriptConfigOptions = {}) => ({\n\t...(typeChecked ? { projectService: true } : {}),\n\t...(typeChecked && tsconfigRootDir ? { tsconfigRootDir } : {}),\n});\n\n/**\n * 创建 TypeScript 配置。\n *\n * 默认采用无需类型信息的 recommended + stylistic 预置;`typeChecked: true` 会切换为\n * 对应的类型感知预置并启动 Project Service。\n */\nexport const createTypeScriptConfigs = (options: TypeScriptConfigOptions = {}, files: readonly string[] = GLOBS_TYPESCRIPT) =>\n\tdefineConfig([\n\t\t{\n\t\t\tname: options.typeChecked ? \"@fast-china/typescript/type-checked\" : \"@fast-china/typescript\",\n\t\t\tfiles: [...files],\n\t\t\textends: getTypeScriptPresetConfigs(options.typeChecked ?? false),\n\t\t\tlanguageOptions: {\n\t\t\t\tecmaVersion: \"latest\",\n\t\t\t\tparserOptions: createTypeScriptParserOptions(options),\n\t\t\t},\n\t\t\trules: typescriptRules,\n\t\t},\n\t]);\n","import eslint from \"@eslint/js\";\nimport { defineConfig } from \"eslint/config\";\nimport eslintPluginVue from \"eslint-plugin-vue\";\nimport tseslint from \"typescript-eslint\";\nimport vueEslintParser from \"vue-eslint-parser\";\n\nimport { GLOB_VUE } from \"../constants\";\nimport { typescriptRules, vueRules } from \"../rules\";\n\nimport { type TypeScriptConfigOptions, createTypeScriptParserOptions, getTypeScriptPresetConfigs } from \"./typescript\";\n\n/**\n * Vue 3 单文件组件生成器使用的脚本语言与类型感知选项。\n *\n * 该接口是 `fastConfig()` 组装 Vue 配置时使用的内部契约,不是根入口的独立用户选项。\n * 用户通过顶层 `vue` 决定是否接管 `.vue` 文件,通过顶层 `typescript` 决定 SFC 脚本\n * 是否启用 TypeScript 解析和类型感知能力;工厂会把两者转换为此对象。\n *\n * Vue 模板始终由 `vue-eslint-parser` 解析。启用 TypeScript 时,它再把 `<script>` 内容\n * 委托给 typescript-eslint parser,并复用普通 TypeScript 文件的推荐预置与解析器选项。\n */\nexport interface VueConfigOptions {\n\t/**\n\t * 是否使用 typescript-eslint parser 解析 SFC 的 `<script>` 与 `<script setup>` 内容。\n\t *\n\t * `true` 同时加载 TypeScript 推荐规则和本库 TypeScript 规则,并允许\n\t * `<script lang=\"ts\">`;`false` 不注册 TypeScript 脚本解析器,只按 JavaScript 处理\n\t * SFC 脚本。该值由顶层 `FastConfigOptions.typescript` 是否关闭推导。\n\t * @default true\n\t */\n\ttypescript?: boolean;\n\t/**\n\t * 与普通 TypeScript 文件共享的类型感知和 tsconfig 根目录选项。\n\t *\n\t * `typeChecked: true` 会让 Vue SFC 使用类型感知的 typescript-eslint 预置并启动 Project\n\t * Service;`tsconfigRootDir` 会原样传给解析器。工厂只会在顶层 TypeScript 能力启用时\n\t * 传入有效设置,避免 Vue 单独形成与普通 `.ts` 文件不一致的类型检查模式。\n\t * @default {}\n\t */\n\ttypescriptOptions?: TypeScriptConfigOptions;\n}\n\n/**\n * 创建 Vue 3 单文件组件配置。\n *\n * 本包只处理 Vue 3。启用 TypeScript 时,Vue 模板解析器通过 `parserOptions.parser`\n * 委托给 typescript-eslint;这是 Vue 官方推荐的自定义脚本解析器接入方式。\n */\nexport const createVueConfigs = ({ typescript = true, typescriptOptions = {} }: VueConfigOptions = {}) => {\n\tconst typeChecked = typescriptOptions.typeChecked ?? false;\n\tconst typeScriptConfigs = typescript ? getTypeScriptPresetConfigs(typeChecked, true) : [];\n\n\treturn defineConfig([\n\t\t{\n\t\t\tname: typeChecked ? \"@fast-china/vue/type-checked\" : \"@fast-china/vue\",\n\t\t\tfiles: [GLOB_VUE],\n\t\t\textends: [eslint.configs.recommended, ...typeScriptConfigs, ...eslintPluginVue.configs[\"flat/recommended\"]],\n\t\t\tlanguageOptions: {\n\t\t\t\tecmaVersion: \"latest\",\n\t\t\t\tparser: vueEslintParser,\n\t\t\t\tparserOptions: {\n\t\t\t\t\t...(typescript ? { parser: tseslint.parser, extraFileExtensions: [\".vue\"] } : {}),\n\t\t\t\t\tecmaFeatures: {\n\t\t\t\t\t\tjsx: true,\n\t\t\t\t\t},\n\t\t\t\t\tsourceType: \"module\",\n\t\t\t\t\t...createTypeScriptParserOptions(typescriptOptions),\n\t\t\t\t},\n\t\t\t},\n\t\t\trules: {\n\t\t\t\t...(typescript ? typescriptRules : {}),\n\t\t\t\t...vueRules,\n\t\t\t},\n\t\t},\n\t]);\n};\n","import { type Config, defineConfig } from \"eslint/config\";\n\nimport { type AngularConfigOptions, createAngularConfigs } from \"../configs/angular\";\nimport { createBaseConfigs } from \"../configs/common\";\nimport { type RuntimeEnvironment, createEnvironmentConfigs } from \"../configs/environment\";\nimport { createGitignoreConfigs, createGlobalIgnores } from \"../configs/ignores\";\nimport { createImportConfigs } from \"../configs/import\";\nimport { createJavaScriptConfigs } from \"../configs/javascript\";\nimport { createJsonConfigs } from \"../configs/json\";\nimport { type LodashPreference, createLodashConfigs } from \"../configs/lodash\";\nimport { createMarkdownConfigs } from \"../configs/markdown\";\nimport { createPrettierConfigs } from \"../configs/prettier\";\nimport { type ReactConfigOptions, createReactConfigs } from \"../configs/react\";\nimport { createRegexpConfigs } from \"../configs/regexp\";\nimport { createPackageJsonSortConfigs } from \"../configs/sort-package\";\nimport { createTsconfigSortConfigs } from \"../configs/sort-tsconfig\";\nimport { type TypeScriptConfigOptions, createTypeScriptConfigs } from \"../configs/typescript\";\nimport { createVueConfigs } from \"../configs/vue\";\nimport { GLOBS_JAVASCRIPT, GLOBS_TYPESCRIPT, GLOB_VUE } from \"../constants\";\n\nimport type { RuleOptions } from \"../typegen\";\nimport type { Linter } from \"eslint\";\n\n/**\n * 核心工厂 `fastConfig()` 的项目级 ESLint Flat Config 选项。\n *\n * 每个字段只控制一个相对独立的配置片段。未传入字段时使用下方 `@default` 标注的值;\n * 布尔选项传入 `false` 会让工厂完全跳过对应片段,支持对象形式的框架或 TypeScript\n * 选项传入 `true` 时采用其内部默认值,传入对象时则在启用能力的同时覆盖内部默认值。\n *\n * `rules` 会在全部内置规则和 Prettier 兼容层之后应用;`fastConfig()` 的其余位置参数\n * 又会排在 `rules` 之后。因此,常规的全项目规则放在 `rules` 中,按文件覆盖或需要最高\n * 优先级的配置应通过其余位置参数传入。\n *\n * 这些选项只负责生成 ESLint 配置,不会修改 TypeScript、Vite 或各框架的构建配置。\n *\n * @example\n * ```ts\n * export default fastConfig({\n * environment: \"browser\",\n * react: { version: \"detect\" },\n * typescript: { typeChecked: true },\n * vue: false,\n * });\n * ```\n */\nexport interface FastConfigOptions {\n\t/**\n\t * 是否启用 Angular 源码与模板检查。\n\t *\n\t * `true` 使用 Angular 默认选项;传入对象可控制内联模板与模板无障碍规则。\n\t * 启用后会检查 Angular TypeScript 源码、外部 `.html` 模板,并默认提取\n\t * `@Component()` 中的内联模板。Angular 依赖 TypeScript 解析能力,因此不能与\n\t * `typescript: false` 同时使用,否则 `fastConfig()` 会直接抛出配置错误。\n\t *\n\t * 此选项只配置 ESLint,不会创建或修改 Angular CLI、编译器或项目文件。\n\t * @default false\n\t */\n\tangular?: boolean | AngularConfigOptions;\n\t/**\n\t * 应用代码实际运行的环境,用于声明 ESLint 可识别的运行时全局变量。\n\t *\n\t * - `\"browser\"`:提供浏览器全局变量,例如 `window`、`document`。\n\t * - `\"node\"`:提供 Node.js 全局变量,例如 `process`、`Buffer`。\n\t * - `\"universal\"`:同时提供浏览器与 Node.js 全局变量,适合 SSR 或同构代码。\n\t *\n\t * 常见 Vue、React、Angular 与 Vite 浏览器应用通常保持 `\"browser\"`。无论选择哪种\n\t * 环境,配置文件、脚本目录和测试文件等 Node.js 工程文件都会单独获得 Node.js\n\t * 全局变量。此选项不改变 JavaScript 编译目标或打包平台。\n\t * @default \"browser\"\n\t */\n\tenvironment?: RuntimeEnvironment;\n\t/**\n\t * 追加到应用代码运行环境中的项目级全局变量。\n\t *\n\t * 适用于测试运行器、UniApp、浏览器扩展或其他宿主平台注入的 API。值的格式遵循\n\t * ESLint `Linter.Globals`,可以声明为 `\"readonly\"`、`\"writable\"` 或 `\"off\"`。\n\t * 自定义值在环境预置之后合并,因此同名项目配置可以覆盖预置的读写权限。\n\t * @default undefined\n\t */\n\tglobals?: Linter.Globals;\n\t/**\n\t * 是否读取运行 ESLint 的项目根目录中的 `.gitignore` 并转换为全局忽略规则。\n\t *\n\t * 关闭此项只会停止读取 `.gitignore`,不会移除本库内置的依赖目录、构建产物、\n\t * 缓存、生成文件和锁文件忽略模式;如需补充忽略项,请使用 `ignores`。\n\t * @default true\n\t */\n\tgitignore?: boolean;\n\t/**\n\t * 追加到内置全局忽略集合末尾的 ESLint glob 模式。\n\t *\n\t * 这些模式不会替换内置忽略项。模式按 ESLint Flat Config 的全局忽略语义解析,\n\t * 适合排除项目特有的生成目录、工具输出或不应参与检查的资源。\n\t * @default []\n\t */\n\tignores?: readonly string[];\n\t/**\n\t * 是否为全部已启用代码文件加载 `eslint-plugin-import-x` 推荐规则和本库覆盖规则。\n\t *\n\t * 该片段检查常见的 ESM 导入导出问题,但共享配置不会猜测项目的路径别名或自定义\n\t * resolver,因此默认关闭了强依赖模块解析且容易误报的规则。如果项目重新启用这些\n\t * 规则,应在传给 `fastConfig()` 的覆盖配置中同时补充 resolver。关闭本选项不会影响\n\t * JavaScript 或 TypeScript 的基础语法检查。\n\t * @default true\n\t */\n\timports?: boolean;\n\t/**\n\t * 是否让工厂接管 JavaScript、CommonJS、ES Module 与 JSX 文件。\n\t *\n\t * 启用时匹配 `.js`、`.cjs`、`.mjs` 与 `.jsx`;关闭后这些文件不会进入基础规则、\n\t * 环境全局变量、import、regexp、Lodash 或 React 的 JavaScript 配置范围,但不会影响\n\t * 已启用的 TypeScript、Vue、JSON 或 Markdown 文件。\n\t * @default true\n\t */\n\tjavascript?: boolean;\n\t/**\n\t * 是否检查 JSON、JSONC 与 JSON5 文件,并为三种方言分别使用兼容的推荐规则。\n\t *\n\t * 此选项不负责字段排序。`sortPackageJson` 或 `sortTsconfig` 任一启用时,为了让对应\n\t * 排序规则能够解析文件,JSON 配置仍会被加载,即使这里显式传入 `false`。\n\t * @default true\n\t */\n\tjson?: boolean;\n\t/**\n\t * 是否统一项目中的 Lodash 静态 ESM 导入来源。\n\t *\n\t * - `false`:不限制 `lodash`、`lodash-es` 与 `lodash-unified` 的使用。\n\t * - `\"lodash\"`:允许 `lodash` 及其子路径,禁止混用另外两个包。\n\t * - `\"lodash-unified\"`:统一使用 `lodash-unified`,禁止另外两个包及其子路径。\n\t *\n\t * 该能力只约束静态 `import`/`export`,不会检查动态 `import()` 或 CommonJS\n\t * `require()`,也不会安装、替换或迁移任何 Lodash 依赖。\n\t * @default false\n\t */\n\tlodash?: false | LodashPreference;\n\t/**\n\t * 是否使用 `@eslint/markdown` 推荐配置检查 `.md` 文档的结构和 Markdown 语法。\n\t *\n\t * 该配置关注 Markdown 文档本身,不会自动把项目的 JavaScript、TypeScript 或框架\n\t * 规则应用到围栏代码块;如需检查代码块,应通过项目覆盖配置明确指定。\n\t * @default true\n\t */\n\tmarkdown?: boolean;\n\t/**\n\t * 是否加载 `eslint-config-prettier`,关闭与 Prettier 冲突的 ESLint 格式规则。\n\t *\n\t * 该片段不会运行 Prettier,也不会检查文件是否符合 Prettier 输出;项目仍需自行安装\n\t * 并执行 Prettier。它位于内置规则之后、项目 `rules` 之前,因此项目仍可有意识地\n\t * 重新启用某条格式规则。\n\t * @default true\n\t */\n\tprettier?: boolean;\n\t/**\n\t * 是否为全部已启用代码文件加载 `eslint-plugin-regexp` 推荐规则。\n\t *\n\t * 规则用于发现无效、冗余、难以理解或可能产生性能问题的正则表达式;其中部分规则\n\t * 支持自动修复,执行 `eslint --fix` 后仍应运行项目测试验证真实匹配行为。\n\t * @default true\n\t */\n\tregexp?: boolean;\n\t/**\n\t * 是否启用 React、JSX/TSX 与 Hooks 正确性规则。\n\t *\n\t * `true` 使用默认 React 设置;传入对象可指定 React 版本、兼容 JSX 运行时包和多态\n\t * 组件属性名。规则范围由 `javascript` 与 `typescript` 共同决定:关闭其中一种语言\n\t * 后,React 不会继续接管该语言的文件。兼容 Preact 等运行时时,应同时配置相应的\n\t * `importSource`,但此选项不会修改 JSX 编译器或打包器设置。\n\t * @default false\n\t */\n\treact?: boolean | ReactConfigOptions;\n\t/**\n\t * 应用于全部已启用 JavaScript、TypeScript 和 Vue 文件的项目级规则记录。\n\t *\n\t * `RuleOptions` 为已安装插件提供精确规则名、严重级别和选项自动补全。该记录排在\n\t * 内置规则及 Prettier 兼容层之后,可以覆盖它们;但其余位置参数中的配置优先级更高。\n\t * JSON、Markdown、Angular HTML 模板或其他特殊文件范围应使用其余位置参数单独配置。\n\t * @default undefined\n\t */\n\trules?: RuleOptions;\n\t/**\n\t * 是否启用 `package.json` 顶层字段的固定顺序规则。\n\t *\n\t * 规则只在执行 `eslint --fix` 时重排字段,并刻意不进入顺序具有运行时语义的\n\t * `exports` 条件对象。首次启用通常会产生较大的纯排序差异,建议单独提交并复核。\n\t * 启用此项会同时加载 JSON 解析配置。\n\t * @default false\n\t */\n\tsortPackageJson?: boolean;\n\t/**\n\t * 是否按 TypeScript 配置主题顺序整理 `tsconfig.json` 与 `tsconfig.*.json`。\n\t *\n\t * 规则不会改变编译选项值,只在执行 `eslint --fix` 时调整字段顺序。首次启用可能产生\n\t * 较大差异,建议单独提交并确认继承关系仍清晰。启用此项会同时加载 JSON 解析配置。\n\t * @default false\n\t */\n\tsortTsconfig?: boolean;\n\t/**\n\t * 是否让工厂接管 `.ts`、`.cts`、`.mts` 与 `.tsx` 文件。\n\t *\n\t * `true` 使用无需类型信息的 TypeScript 推荐与风格预置;传入对象可进一步启用\n\t * `typeChecked` 和指定 `tsconfigRootDir`。类型感知设置还会同步给 Vue 与 React 的\n\t * TypeScript 配置。传入 `false` 会移除 TypeScript 文件范围,使 Vue 退回 JavaScript\n\t * 脚本解析,并且不能再启用 Angular。\n\t * @default true\n\t */\n\ttypescript?: boolean | TypeScriptConfigOptions;\n\t/**\n\t * 是否让工厂接管 Vue 3 `.vue` 单文件组件。\n\t *\n\t * 启用后加载 Vue 3 推荐规则、模板解析器以及本库的 Vue 规则。脚本语言跟随\n\t * `typescript`:TypeScript 开启时同时支持 `<script lang=\"ts\">` 和类型感知选项,\n\t * 关闭时仅按 JavaScript 解析脚本。此库不提供 Vue 2 兼容预置。\n\t * @default true\n\t */\n\tvue?: boolean;\n}\n\n/** `fastConfig()` 使用的稳定默认值;对象被冻结,避免运行时被意外修改。 */\nexport const defaultConfigOptions = Object.freeze({\n\tangular: false,\n\tenvironment: \"browser\",\n\tgitignore: true,\n\timports: true,\n\tjavascript: true,\n\tjson: true,\n\tlodash: false,\n\tmarkdown: true,\n\tprettier: true,\n\treact: false,\n\tregexp: true,\n\tsortPackageJson: false,\n\tsortTsconfig: false,\n\ttypescript: true,\n\tvue: true,\n} as const satisfies Required<Omit<FastConfigOptions, \"globals\" | \"ignores\" | \"rules\">>);\n\n/**\n * 创建面向 Vue 3、React、Angular、Vite、TypeScript、JavaScript 与 Node.js 项目的 ESLint Flat Config。\n *\n * 默认导出就是此函数。额外配置参数会放在内置配置之后,因此项目可以按文件范围\n * 覆盖任何默认规则,而无需再次调用 ESLint 的 `defineConfig()`。\n */\nexport const fastConfig = (options: FastConfigOptions = {}, ...overrides: Config[]): Config[] => {\n\tconst angular = options.angular ?? defaultConfigOptions.angular;\n\tconst environment = options.environment ?? defaultConfigOptions.environment;\n\tconst gitignore = options.gitignore ?? defaultConfigOptions.gitignore;\n\tconst imports = options.imports ?? defaultConfigOptions.imports;\n\tconst javascript = options.javascript ?? defaultConfigOptions.javascript;\n\tconst json = options.json ?? defaultConfigOptions.json;\n\tconst lodash = options.lodash ?? defaultConfigOptions.lodash;\n\tconst markdown = options.markdown ?? defaultConfigOptions.markdown;\n\tconst prettier = options.prettier ?? defaultConfigOptions.prettier;\n\tconst react = options.react ?? defaultConfigOptions.react;\n\tconst regexp = options.regexp ?? defaultConfigOptions.regexp;\n\tconst sortPackageJson = options.sortPackageJson ?? defaultConfigOptions.sortPackageJson;\n\tconst sortTsconfig = options.sortTsconfig ?? defaultConfigOptions.sortTsconfig;\n\tconst typescript = options.typescript ?? defaultConfigOptions.typescript;\n\tconst vue = options.vue ?? defaultConfigOptions.vue;\n\n\tconst typeScriptEnabled = typescript !== false;\n\tconst typeScriptOptions = typeof typescript === \"object\" ? typescript : {};\n\tconst angularEnabled = angular !== false;\n\tconst angularOptions = typeof angular === \"object\" ? angular : {};\n\tconst reactEnabled = react !== false;\n\tconst reactOptions = typeof react === \"object\" ? react : {};\n\n\tif (angularEnabled && !typeScriptEnabled) {\n\t\tthrow new TypeError(\"Angular support requires TypeScript. Remove `typescript: false` or disable `angular`.\");\n\t}\n\t// RuleOptions 是无字符串索引签名的精确映射;运行时形状仍完全符合 ESLint RulesRecord。\n\tconst projectRules = options.rules as Linter.RulesRecord | undefined;\n\tconst scriptFiles = [...(javascript ? GLOBS_JAVASCRIPT : []), ...(typeScriptEnabled ? GLOBS_TYPESCRIPT : [])];\n\tconst codeFiles = [...scriptFiles, ...(vue ? [GLOB_VUE] : [])];\n\tconst jsonEnabled = json || sortPackageJson || sortTsconfig;\n\n\treturn defineConfig([\n\t\tcreateGlobalIgnores(options.ignores),\n\t\t...(gitignore ? createGitignoreConfigs() : []),\n\t\t...(codeFiles.length\n\t\t\t? [\n\t\t\t\t\t...createEnvironmentConfigs({\n\t\t\t\t\t\tenvironment,\n\t\t\t\t\t\tfiles: codeFiles,\n\t\t\t\t\t\tglobals: options.globals,\n\t\t\t\t\t\tnodeFiles: scriptFiles,\n\t\t\t\t\t}),\n\t\t\t\t\t...createBaseConfigs(codeFiles),\n\t\t\t\t]\n\t\t\t: []),\n\t\t...(javascript ? createJavaScriptConfigs() : []),\n\t\t...(imports && codeFiles.length ? createImportConfigs(codeFiles) : []),\n\t\t...(lodash && codeFiles.length ? createLodashConfigs(lodash, codeFiles) : []),\n\t\t...(regexp && codeFiles.length ? createRegexpConfigs(codeFiles) : []),\n\t\t...(typeScriptEnabled ? createTypeScriptConfigs(typeScriptOptions) : []),\n\t\t...(jsonEnabled ? createJsonConfigs() : []),\n\t\t...(sortPackageJson ? createPackageJsonSortConfigs() : []),\n\t\t...(sortTsconfig ? createTsconfigSortConfigs() : []),\n\t\t...(vue ? createVueConfigs({ typescript: typeScriptEnabled, typescriptOptions: typeScriptOptions }) : []),\n\t\t...(reactEnabled\n\t\t\t? createReactConfigs(reactOptions, {\n\t\t\t\t\tjavascript,\n\t\t\t\t\ttypeChecked: typeScriptOptions.typeChecked ?? false,\n\t\t\t\t\ttypescript: typeScriptEnabled,\n\t\t\t\t})\n\t\t\t: []),\n\t\t...(angularEnabled ? createAngularConfigs(angularOptions) : []),\n\t\t...(markdown ? createMarkdownConfigs() : []),\n\t\t...(prettier ? createPrettierConfigs() : []),\n\t\t...(projectRules && codeFiles.length\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"@fast-china/project/rules\",\n\t\t\t\t\t\tfiles: codeFiles,\n\t\t\t\t\t\trules: projectRules,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t: []),\n\t\t...overrides,\n\t]);\n};\n","/**\n * 根入口只暴露稳定的配置工厂、默认值和精确规则类型;内部配置片段与 glob 不再构成\n * 公共 API。需要复用原始规则记录时,请使用 `@fast-china/eslint-config/rules`。\n */\nimport type { RuleOptions } from \"./typegen\";\nimport type { Linter } from \"eslint\";\n\ntype RejectUnknownRuleNames<Rules extends RuleOptions> = Rules & Record<Exclude<keyof Rules, keyof RuleOptions>, never>;\n\n/**\n * 为项目规则提供精确的规则名、严重级别和规则选项自动补全。\n *\n * 该函数不会修改传入对象;它只在 TypeScript 编译阶段拒绝未知规则和无效选项。\n */\nexport const defineRules = <const Rules extends RuleOptions>(rules: RejectUnknownRuleNames<Rules>): Rules & Linter.RulesRecord => rules;\n\nexport { defaultConfigOptions, fastConfig as default, fastConfig } from \"./core\";\n\nexport type { AngularConfigOptions } from \"./configs/angular\";\nexport type { RuntimeEnvironment } from \"./configs/environment\";\nexport type { LodashPreference } from \"./configs/lodash\";\nexport type { ReactConfigOptions } from \"./configs/react\";\nexport type { TypeScriptConfigOptions } from \"./configs/typescript\";\nexport type { FastConfigOptions } from \"./core\";\nexport type { RuleOptions } from \"./typegen\";\n"],"mappings":"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"}
|
package/package.json
CHANGED