@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.mts","names":[],"sources":["../../src/configs/environment.ts"],"mappings":";;;;;;;;;KAcY;;;;;;;;;;;;UAaK;;;;;;;;;EAShB,cAAc;;;;;;;;EAQd;;;;;;;;;EASA;;;;;;;;;EASA,UAAU,OAAO;;;;;;;;;;;;;cAcL,6BAA4B,aAAA,OAAA,WAAA,SAAA,mBAKtC,qDAA6B"}
@@ -0,0 +1,37 @@
1
+ import { GLOBS_CODE, GLOBS_JAVASCRIPT, GLOBS_NODE_TOOLING } from "../constants/index.mjs";
2
+ import { defineConfig } from "eslint/config";
3
+ import globals from "globals";
4
+ //#region src/configs/environment.ts
5
+ /**
6
+ * 创建运行时环境相关的 ESLint 配置。
7
+ *
8
+ * @remarks
9
+ * 返回两个相互独立的 Flat Config 片段:第一个为应用源码配置所选环境和项目级全局
10
+ * 变量;第二个仅命中配置、脚本、测试与 CLI 等工程文件,为它们配置 Node.js 全局变量
11
+ * 并允许使用 `console`。分离范围可以减少跨运行时的假阴性。
12
+ *
13
+ * @param options - 运行时环境、目标文件范围与项目级全局变量。
14
+ * @returns 依次包含应用运行时环境和 Node.js 工程文件环境的 Flat Config 数组。
15
+ */
16
+ const createEnvironmentConfigs = ({ environment = "browser", files = GLOBS_CODE, nodeFiles = GLOBS_JAVASCRIPT, globals: projectGlobals = {} } = {}) => {
17
+ const runtimeGlobals = {
18
+ ...environment !== "node" ? globals.browser : {},
19
+ ...environment !== "browser" ? globals.node : {},
20
+ ...projectGlobals
21
+ };
22
+ const nodeToolingFiles = GLOBS_NODE_TOOLING.flatMap((nodeGlob) => nodeFiles.map((fileGlob) => [nodeGlob, fileGlob]));
23
+ return defineConfig([{
24
+ name: `@fast-china/globals/${environment}`,
25
+ files: [...files],
26
+ languageOptions: { globals: runtimeGlobals }
27
+ }, {
28
+ name: "@fast-china/globals/node-tooling",
29
+ files: nodeToolingFiles,
30
+ languageOptions: { globals: globals.node },
31
+ rules: { "no-console": "off" }
32
+ }]);
33
+ };
34
+ //#endregion
35
+ export { createEnvironmentConfigs };
36
+
37
+ //# sourceMappingURL=environment.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.mjs","names":[],"sources":["../../src/configs/environment.ts"],"sourcesContent":["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\n/**\n * 应用源码可声明的运行时环境。\n *\n * - `\"browser\"` 仅提供浏览器全局变量。\n * - `\"node\"` 仅提供 Node.js 全局变量。\n * - `\"universal\"` 同时提供浏览器与 Node.js 全局变量。\n */\nexport type RuntimeEnvironment = \"browser\" | \"node\" | \"universal\";\n\n/**\n * 运行时全局变量配置片段的选项。\n *\n * @remarks\n * `fastConfig()` 会根据已启用的语言和框架计算 `files`、`nodeFiles`,再调用\n * `createEnvironmentConfigs()`。该接口仍保持独立,以便环境片段的输入、默认值和文件\n * 范围在源码中具有明确契约;直接组合配置片段时可从 `./configs` 子路径使用。\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 * @defaultValue `\"browser\"`\n\t */\n\tenvironment?: RuntimeEnvironment;\n\t/**\n\t * 需要获得所选运行时全局变量的应用代码 glob 列表。\n\t *\n\t * 工厂会把当前启用的 JavaScript、TypeScript 和 Vue 文件范围传入这里。数组会复制到\n\t * 生成配置中,不会在函数内部修改调用方传入的值。\n\t * @defaultValue {@link 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 * @defaultValue {@link 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 * @defaultValue `{}`\n\t */\n\tglobals?: Linter.Globals;\n}\n\n/**\n * 创建运行时环境相关的 ESLint 配置。\n *\n * @remarks\n * 返回两个相互独立的 Flat Config 片段:第一个为应用源码配置所选环境和项目级全局\n * 变量;第二个仅命中配置、脚本、测试与 CLI 等工程文件,为它们配置 Node.js 全局变量\n * 并允许使用 `console`。分离范围可以减少跨运行时的假阴性。\n *\n * @param options - 运行时环境、目标文件范围与项目级全局变量。\n * @returns 依次包含应用运行时环境和 Node.js 工程文件环境的 Flat Config 数组。\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"],"mappings":";;;;;;;;;;;;;;;AA4EA,MAAa,4BAA4B,EACxC,cAAc,WACd,QAAQ,YACR,YAAY,kBACZ,SAAS,iBAAiB,CAAC,MACE,CAAC,MAAM;CACpC,MAAM,iBAAiB;EACtB,GAAI,gBAAgB,SAAS,QAAQ,UAAU,CAAC;EAChD,GAAI,gBAAgB,YAAY,QAAQ,OAAO,CAAC;EAChD,GAAG;CACJ;CACA,MAAM,mBAAmB,mBAAmB,SAAS,aAAa,UAAU,KAAK,aAAa,CAAC,UAAU,QAAQ,CAAC,CAAC;CAEnH,OAAO,aAAa,CACnB;EACC,MAAM,uBAAuB;EAC7B,OAAO,CAAC,GAAG,KAAK;EAChB,iBAAiB,EAChB,SAAS,eACV;CACD,GACA;EACC,MAAM;EACN,OAAO;EACP,iBAAiB,EAChB,SAAS,QAAQ,KAClB;EACA,OAAO,EACN,cAAc,MACf;CACD,CACD,CAAC;AACF"}
@@ -0,0 +1,29 @@
1
+ //#region src/configs/ignores.d.ts
2
+ /**
3
+ * 默认忽略依赖、构建结果、缓存、生成文件和包管理器锁文件。
4
+ *
5
+ * @remarks
6
+ * 不忽略 `src`、`public`、测试夹具或普通 Markdown 文档,避免共享配置静默漏检
7
+ * 应由项目维护的文件。
8
+ */
9
+ declare const DEFAULT_IGNORE_PATTERNS: readonly string[];
10
+ /**
11
+ * 创建全局忽略配置,并在默认集合之后追加项目自定义模式。
12
+ *
13
+ * @param additionalPatterns - 追加到 {@link DEFAULT_IGNORE_PATTERNS} 之后的 ESLint 全局忽略模式。
14
+ * @returns 包含单个命名全局忽略片段的 Flat Config 数组。
15
+ */
16
+ declare const createGlobalIgnores: (additionalPatterns?: readonly string[]) => import("eslint/config").ConfigObject[];
17
+ /**
18
+ * 创建读取项目 `.gitignore` 的全局忽略配置。
19
+ *
20
+ * @remarks
21
+ * `.gitignore` 的查找位置由 `eslint-config-flat-gitignore` 根据 ESLint 当前工作目录确定。
22
+ * 未找到文件时不会抛错;该片段也不会替代 {@link createGlobalIgnores} 的内置模式。
23
+ *
24
+ * @returns 包含 `.gitignore` 转换结果的 Flat Config 数组。
25
+ */
26
+ declare const createGitignoreConfigs: () => import("eslint/config").ConfigObject[];
27
+ //#endregion
28
+ export { DEFAULT_IGNORE_PATTERNS, createGitignoreConfigs, createGlobalIgnores };
29
+ //# sourceMappingURL=ignores.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignores.d.mts","names":[],"sources":["../../src/configs/ignores.ts"],"mappings":";;;;;;;;cAYa;;;;;;;cAkBA,sBAAuB,mEAA0C;;;;;;;;;;cAYjE,sDAAsB"}
@@ -0,0 +1,46 @@
1
+ import { GLOBS_LOCKFILES } from "../constants/index.mjs";
2
+ import { defineConfig, globalIgnores } from "eslint/config";
3
+ import eslintConfigFlatGitignore from "eslint-config-flat-gitignore";
4
+ //#region src/configs/ignores.ts
5
+ /**
6
+ * 默认忽略依赖、构建结果、缓存、生成文件和包管理器锁文件。
7
+ *
8
+ * @remarks
9
+ * 不忽略 `src`、`public`、测试夹具或普通 Markdown 文档,避免共享配置静默漏检
10
+ * 应由项目维护的文件。
11
+ */
12
+ const DEFAULT_IGNORE_PATTERNS = Object.freeze([
13
+ "**/node_modules/**",
14
+ "**/{dist,build,coverage,output,temp,tmp}/**",
15
+ "**/{.cache,.nuxt,.output,.vercel,.nitro}/**",
16
+ "**/{.vitepress/cache,.vite-inspect}/**",
17
+ "**/__snapshots__/**",
18
+ "**/*.min.*",
19
+ "**/auto-import?(s).d.ts",
20
+ "**/components.d.ts",
21
+ ...GLOBS_LOCKFILES
22
+ ]);
23
+ /**
24
+ * 创建全局忽略配置,并在默认集合之后追加项目自定义模式。
25
+ *
26
+ * @param additionalPatterns - 追加到 {@link DEFAULT_IGNORE_PATTERNS} 之后的 ESLint 全局忽略模式。
27
+ * @returns 包含单个命名全局忽略片段的 Flat Config 数组。
28
+ */
29
+ const createGlobalIgnores = (additionalPatterns = []) => defineConfig([globalIgnores([...DEFAULT_IGNORE_PATTERNS, ...additionalPatterns], "@fast-china/ignores/global")]);
30
+ /**
31
+ * 创建读取项目 `.gitignore` 的全局忽略配置。
32
+ *
33
+ * @remarks
34
+ * `.gitignore` 的查找位置由 `eslint-config-flat-gitignore` 根据 ESLint 当前工作目录确定。
35
+ * 未找到文件时不会抛错;该片段也不会替代 {@link createGlobalIgnores} 的内置模式。
36
+ *
37
+ * @returns 包含 `.gitignore` 转换结果的 Flat Config 数组。
38
+ */
39
+ const createGitignoreConfigs = () => defineConfig([{
40
+ name: "@fast-china/ignores/git",
41
+ ...eslintConfigFlatGitignore({ strict: false })
42
+ }]);
43
+ //#endregion
44
+ export { DEFAULT_IGNORE_PATTERNS, createGitignoreConfigs, createGlobalIgnores };
45
+
46
+ //# sourceMappingURL=ignores.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignores.mjs","names":[],"sources":["../../src/configs/ignores.ts"],"sourcesContent":["import { defineConfig, globalIgnores } from \"eslint/config\";\nimport eslintConfigFlatGitignore from \"eslint-config-flat-gitignore\";\n\nimport { GLOBS_LOCKFILES } from \"../constants\";\n\n/**\n * 默认忽略依赖、构建结果、缓存、生成文件和包管理器锁文件。\n *\n * @remarks\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/**\n * 创建全局忽略配置,并在默认集合之后追加项目自定义模式。\n *\n * @param additionalPatterns - 追加到 {@link DEFAULT_IGNORE_PATTERNS} 之后的 ESLint 全局忽略模式。\n * @returns 包含单个命名全局忽略片段的 Flat Config 数组。\n */\nexport const createGlobalIgnores = (additionalPatterns: readonly string[] = []) =>\n\tdefineConfig([globalIgnores([...DEFAULT_IGNORE_PATTERNS, ...additionalPatterns], \"@fast-china/ignores/global\")]);\n\n/**\n * 创建读取项目 `.gitignore` 的全局忽略配置。\n *\n * @remarks\n * `.gitignore` 的查找位置由 `eslint-config-flat-gitignore` 根据 ESLint 当前工作目录确定。\n * 未找到文件时不会抛错;该片段也不会替代 {@link createGlobalIgnores} 的内置模式。\n *\n * @returns 包含 `.gitignore` 转换结果的 Flat Config 数组。\n */\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"],"mappings":";;;;;;;;;;;AAYA,MAAa,0BAA0B,OAAO,OAAO;CACpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAG;AACJ,CAAC;;;;;;;AAQD,MAAa,uBAAuB,qBAAwC,CAAC,MAC5E,aAAa,CAAC,cAAc,CAAC,GAAG,yBAAyB,GAAG,kBAAkB,GAAG,4BAA4B,CAAC,CAAC;;;;;;;;;;AAWhH,MAAa,+BACZ,aAAa,CACZ;CACC,MAAM;CACN,GAAG,0BAA0B,EAAE,QAAQ,MAAM,CAAC;AAC/C,CACD,CAAC"}
@@ -0,0 +1,15 @@
1
+ //#region src/configs/import.d.ts
2
+ /**
3
+ * 创建模块导入规则配置。
4
+ *
5
+ * @remarks
6
+ * 共享库不猜测项目的路径别名或解析器,因此只继承 import-x 的推荐能力,
7
+ * 与 resolver 强耦合且容易误报的规则会在本地规则记录中显式关闭。
8
+ *
9
+ * @param files - 应用 import-x 推荐规则与本地覆盖规则的 ESLint glob 列表。
10
+ * @returns 包含 import-x 插件预置和本地规则的 Flat Config 数组。
11
+ */
12
+ declare const createImportConfigs: (files?: readonly string[]) => import("eslint/config").ConfigObject[];
13
+ //#endregion
14
+ export { createImportConfigs };
15
+ //# sourceMappingURL=import.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.mts","names":[],"sources":["../../src/configs/import.ts"],"mappings":";;;;;;;;;;;cAgBa,sBAAuB,sDAAqC"}
@@ -0,0 +1,25 @@
1
+ import { GLOBS_CODE } from "../constants/index.mjs";
2
+ import { importRules } from "../rules/import.mjs";
3
+ import { defineConfig } from "eslint/config";
4
+ import eslintPluginImportX from "eslint-plugin-import-x";
5
+ //#region src/configs/import.ts
6
+ /**
7
+ * 创建模块导入规则配置。
8
+ *
9
+ * @remarks
10
+ * 共享库不猜测项目的路径别名或解析器,因此只继承 import-x 的推荐能力,
11
+ * 与 resolver 强耦合且容易误报的规则会在本地规则记录中显式关闭。
12
+ *
13
+ * @param files - 应用 import-x 推荐规则与本地覆盖规则的 ESLint glob 列表。
14
+ * @returns 包含 import-x 插件预置和本地规则的 Flat Config 数组。
15
+ */
16
+ const createImportConfigs = (files = GLOBS_CODE) => defineConfig([{
17
+ name: "@fast-china/import",
18
+ files: [...files],
19
+ extends: [eslintPluginImportX.flatConfigs.recommended],
20
+ rules: importRules
21
+ }]);
22
+ //#endregion
23
+ export { createImportConfigs };
24
+
25
+ //# sourceMappingURL=import.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.mjs","names":[],"sources":["../../src/configs/import.ts"],"sourcesContent":["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 * @remarks\n * 共享库不猜测项目的路径别名或解析器,因此只继承 import-x 的推荐能力,\n * 与 resolver 强耦合且容易误报的规则会在本地规则记录中显式关闭。\n *\n * @param files - 应用 import-x 推荐规则与本地覆盖规则的 ESLint glob 列表。\n * @returns 包含 import-x 插件预置和本地规则的 Flat Config 数组。\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"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAa,uBAAuB,QAA2B,eAC9D,aAAa,CACZ;CACC,MAAM;CACN,OAAO,CAAC,GAAG,KAAK;CAChB,SAAS,CAAC,oBAAoB,YAAY,WAAW;CACrD,OAAO;AACR,CACD,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { AngularConfigOptions, createAngularConfigs } from "./angular.mjs";
2
+ import { createCommonConfigs } from "./common.mjs";
3
+ import { EnvironmentConfigOptions, RuntimeEnvironment, createEnvironmentConfigs } from "./environment.mjs";
4
+ import { DEFAULT_IGNORE_PATTERNS, createGitignoreConfigs, createGlobalIgnores } from "./ignores.mjs";
5
+ import { createImportConfigs } from "./import.mjs";
6
+ import { createJavaScriptConfigs } from "./javascript.mjs";
7
+ import { createJsonConfigs } from "./json.mjs";
8
+ import { LodashPreference, createLodashConfigs } from "./lodash.mjs";
9
+ import { createMarkdownConfigs } from "./markdown.mjs";
10
+ import { createPrettierConfigs } from "./prettier.mjs";
11
+ import { ReactConfigOptions, createReactConfigs } from "./react.mjs";
12
+ import { createRegexpConfigs } from "./regexp.mjs";
13
+ import { createPackageJsonSortConfigs } from "./sort-package.mjs";
14
+ import { createTsconfigSortConfigs } from "./sort-tsconfig.mjs";
15
+ import { TypeScriptConfigOptions, createTypeScriptConfigs, createTypeScriptParserOptions, getTypeScriptPresetConfigs } from "./typescript.mjs";
16
+ import { VueConfigOptions, createVueConfigs } from "./vue.mjs";
17
+ export { AngularConfigOptions, DEFAULT_IGNORE_PATTERNS, EnvironmentConfigOptions, LodashPreference, ReactConfigOptions, RuntimeEnvironment, TypeScriptConfigOptions, VueConfigOptions, createAngularConfigs, createCommonConfigs, createEnvironmentConfigs, createGitignoreConfigs, createGlobalIgnores, createImportConfigs, createJavaScriptConfigs, createJsonConfigs, createLodashConfigs, createMarkdownConfigs, createPackageJsonSortConfigs, createPrettierConfigs, createReactConfigs, createRegexpConfigs, createTsconfigSortConfigs, createTypeScriptConfigs, createTypeScriptParserOptions, createVueConfigs, getTypeScriptPresetConfigs };
@@ -0,0 +1,17 @@
1
+ import { createAngularConfigs } from "./angular.mjs";
2
+ import { createCommonConfigs } from "./common.mjs";
3
+ import { createEnvironmentConfigs } from "./environment.mjs";
4
+ import { DEFAULT_IGNORE_PATTERNS, createGitignoreConfigs, createGlobalIgnores } from "./ignores.mjs";
5
+ import { createImportConfigs } from "./import.mjs";
6
+ import { createJavaScriptConfigs } from "./javascript.mjs";
7
+ import { createJsonConfigs } from "./json.mjs";
8
+ import { createLodashConfigs } from "./lodash.mjs";
9
+ import { createMarkdownConfigs } from "./markdown.mjs";
10
+ import { createPrettierConfigs } from "./prettier.mjs";
11
+ import { createReactConfigs } from "./react.mjs";
12
+ import { createRegexpConfigs } from "./regexp.mjs";
13
+ import { createPackageJsonSortConfigs } from "./sort-package.mjs";
14
+ import { createTsconfigSortConfigs } from "./sort-tsconfig.mjs";
15
+ import { createTypeScriptConfigs, createTypeScriptParserOptions, getTypeScriptPresetConfigs } from "./typescript.mjs";
16
+ import { createVueConfigs } from "./vue.mjs";
17
+ export { DEFAULT_IGNORE_PATTERNS, createAngularConfigs, createCommonConfigs, createEnvironmentConfigs, createGitignoreConfigs, createGlobalIgnores, createImportConfigs, createJavaScriptConfigs, createJsonConfigs, createLodashConfigs, createMarkdownConfigs, createPackageJsonSortConfigs, createPrettierConfigs, createReactConfigs, createRegexpConfigs, createTsconfigSortConfigs, createTypeScriptConfigs, createTypeScriptParserOptions, createVueConfigs, getTypeScriptPresetConfigs };
@@ -0,0 +1,15 @@
1
+ //#region src/configs/javascript.d.ts
2
+ /**
3
+ * 创建 JavaScript/JSX 配置。
4
+ *
5
+ * @remarks
6
+ * `@eslint/js` 提供基础正确性规则,本仓库只在其后补充有明确维护理由的规则。
7
+ * 普通 `.jsx` 文件会显式启用 JSX 语法解析,但不会因此自动启用 React 规则。
8
+ *
9
+ * @param files - 应用 JavaScript 基础规则的 ESLint glob 列表。
10
+ * @returns 包含 JavaScript 推荐预置、本地规则与 JSX 解析设置的 Flat Config 数组。
11
+ */
12
+ declare const createJavaScriptConfigs: (files?: readonly string[]) => import("eslint/config").ConfigObject[];
13
+ //#endregion
14
+ export { createJavaScriptConfigs };
15
+ //# sourceMappingURL=javascript.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.d.mts","names":[],"sources":["../../src/configs/javascript.ts"],"mappings":";;;;;;;;;;;cAgBa,0BAA2B,sDAA2C"}
@@ -0,0 +1,29 @@
1
+ import { GLOBS_JAVASCRIPT } from "../constants/index.mjs";
2
+ import { javascriptRules } from "../rules/javascript.mjs";
3
+ import { defineConfig } from "eslint/config";
4
+ import eslint from "@eslint/js";
5
+ //#region src/configs/javascript.ts
6
+ /**
7
+ * 创建 JavaScript/JSX 配置。
8
+ *
9
+ * @remarks
10
+ * `@eslint/js` 提供基础正确性规则,本仓库只在其后补充有明确维护理由的规则。
11
+ * 普通 `.jsx` 文件会显式启用 JSX 语法解析,但不会因此自动启用 React 规则。
12
+ *
13
+ * @param files - 应用 JavaScript 基础规则的 ESLint glob 列表。
14
+ * @returns 包含 JavaScript 推荐预置、本地规则与 JSX 解析设置的 Flat Config 数组。
15
+ */
16
+ const createJavaScriptConfigs = (files = GLOBS_JAVASCRIPT) => defineConfig([{
17
+ name: "@fast-china/javascript",
18
+ files: [...files],
19
+ extends: [eslint.configs.recommended],
20
+ languageOptions: {
21
+ ecmaVersion: "latest",
22
+ parserOptions: { ecmaFeatures: { jsx: true } }
23
+ },
24
+ rules: javascriptRules
25
+ }]);
26
+ //#endregion
27
+ export { createJavaScriptConfigs };
28
+
29
+ //# sourceMappingURL=javascript.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.mjs","names":[],"sources":["../../src/configs/javascript.ts"],"sourcesContent":["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 * @remarks\n * `@eslint/js` 提供基础正确性规则,本仓库只在其后补充有明确维护理由的规则。\n * 普通 `.jsx` 文件会显式启用 JSX 语法解析,但不会因此自动启用 React 规则。\n *\n * @param files - 应用 JavaScript 基础规则的 ESLint glob 列表。\n * @returns 包含 JavaScript 推荐预置、本地规则与 JSX 解析设置的 Flat Config 数组。\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"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAa,2BAA2B,QAA2B,qBAClE,aAAa,CACZ;CACC,MAAM;CACN,OAAO,CAAC,GAAG,KAAK;CAChB,SAAS,CAAC,OAAO,QAAQ,WAAW;CACpC,iBAAiB;EAChB,aAAa;EACb,eAAe,EACd,cAAc,EAEb,KAAK,KACN,EACD;CACD;CACA,OAAO;AACR,CACD,CAAC"}
@@ -0,0 +1,14 @@
1
+ //#region src/configs/json.d.ts
2
+ /**
3
+ * 创建 JSON、JSONC 与 JSON5 配置。
4
+ *
5
+ * @remarks
6
+ * 三种方言使用各自的官方推荐预置,避免严格 JSON 规则错误覆盖允许注释或尾随逗号的文件。
7
+ * VS Code 的 `.vscode/settings.json` 仍以 `.json` 结尾,因此额外允许其中出现注释。
8
+ *
9
+ * @returns 按 JSON、JSONC、JSON5 与 VS Code 设置覆盖顺序排列的 Flat Config 数组。
10
+ */
11
+ declare const createJsonConfigs: () => import("eslint/config").ConfigObject[];
12
+ //#endregion
13
+ export { createJsonConfigs };
14
+ //# sourceMappingURL=json.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.mts","names":[],"sources":["../../src/configs/json.ts"],"mappings":";;;;;;;;;;cAca,iDAAiB"}
@@ -0,0 +1,39 @@
1
+ import { GLOB_JSON, GLOB_JSON5, GLOB_JSONC } from "../constants/index.mjs";
2
+ import { defineConfig } from "eslint/config";
3
+ import eslintPluginJsonc from "eslint-plugin-jsonc";
4
+ //#region src/configs/json.ts
5
+ /**
6
+ * 创建 JSON、JSONC 与 JSON5 配置。
7
+ *
8
+ * @remarks
9
+ * 三种方言使用各自的官方推荐预置,避免严格 JSON 规则错误覆盖允许注释或尾随逗号的文件。
10
+ * VS Code 的 `.vscode/settings.json` 仍以 `.json` 结尾,因此额外允许其中出现注释。
11
+ *
12
+ * @returns 按 JSON、JSONC、JSON5 与 VS Code 设置覆盖顺序排列的 Flat Config 数组。
13
+ */
14
+ const createJsonConfigs = () => defineConfig([
15
+ {
16
+ name: "@fast-china/json/json",
17
+ files: [GLOB_JSON],
18
+ extends: [eslintPluginJsonc.configs["flat/recommended-with-json"]]
19
+ },
20
+ {
21
+ name: "@fast-china/json/jsonc",
22
+ files: [GLOB_JSONC],
23
+ extends: [eslintPluginJsonc.configs["flat/recommended-with-jsonc"]]
24
+ },
25
+ {
26
+ name: "@fast-china/json/json5",
27
+ files: [GLOB_JSON5],
28
+ extends: [eslintPluginJsonc.configs["flat/recommended-with-json5"]]
29
+ },
30
+ {
31
+ name: "@fast-china/json/vscode-settings",
32
+ files: ["**/.vscode/settings.json"],
33
+ rules: { "jsonc/no-comments": "off" }
34
+ }
35
+ ]);
36
+ //#endregion
37
+ export { createJsonConfigs };
38
+
39
+ //# sourceMappingURL=json.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.mjs","names":[],"sources":["../../src/configs/json.ts"],"sourcesContent":["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 * @remarks\n * 三种方言使用各自的官方推荐预置,避免严格 JSON 规则错误覆盖允许注释或尾随逗号的文件。\n * VS Code 的 `.vscode/settings.json` 仍以 `.json` 结尾,因此额外允许其中出现注释。\n *\n * @returns 按 JSON、JSONC、JSON5 与 VS Code 设置覆盖顺序排列的 Flat Config 数组。\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"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,0BACZ,aAAa;CACZ;EACC,MAAM;EACN,OAAO,CAAC,SAAS;EACjB,SAAS,CAAC,kBAAkB,QAAQ,6BAA6B;CAClE;CACA;EACC,MAAM;EACN,OAAO,CAAC,UAAU;EAClB,SAAS,CAAC,kBAAkB,QAAQ,8BAA8B;CACnE;CACA;EACC,MAAM;EACN,OAAO,CAAC,UAAU;EAClB,SAAS,CAAC,kBAAkB,QAAQ,8BAA8B;CACnE;CACA;EACC,MAAM;EACN,OAAO,CAAC,0BAA0B;EAClC,OAAO,EAEN,qBAAqB,MACtB;CACD;AACD,CAAC"}
@@ -0,0 +1,22 @@
1
+ //#region src/configs/lodash.d.ts
2
+ /**
3
+ * 项目允许使用的 Lodash 静态导入来源。
4
+ *
5
+ * `"lodash"` 允许根入口及 `lodash/*` 子路径;`"lodash-unified"` 只允许统一入口。
6
+ */
7
+ type LodashPreference = "lodash" | "lodash-unified";
8
+ /**
9
+ * 创建 Lodash 静态导入约束。
10
+ *
11
+ * @remarks
12
+ * 该配置使用 ESLint 核心规则,因此不依赖 import-x 开关或额外插件。
13
+ * 它只检查静态 `import` 与 `export ... from`,不会安装依赖或检查动态导入。
14
+ *
15
+ * @param preference - 项目唯一允许使用的 Lodash 包入口。
16
+ * @param files - 应用导入约束的 ESLint glob 列表。
17
+ * @returns 包含对应 Lodash 导入限制规则的 Flat Config 数组。
18
+ */
19
+ declare const createLodashConfigs: (preference: LodashPreference, files?: readonly string[]) => import("eslint/config").ConfigObject[];
20
+ //#endregion
21
+ export { LodashPreference, createLodashConfigs };
22
+ //# sourceMappingURL=lodash.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lodash.d.mts","names":[],"sources":["../../src/configs/lodash.ts"],"mappings":";;;;;;KAUY;;;;;;;;;;;;cAaC,sBAAuB,YAAY,kBAAkB,sDAAqC"}
@@ -0,0 +1,24 @@
1
+ import { GLOBS_CODE } from "../constants/index.mjs";
2
+ import { preferLodashRules, preferLodashUnifiedRules } from "../rules/lodash.mjs";
3
+ import { defineConfig } from "eslint/config";
4
+ //#region src/configs/lodash.ts
5
+ /**
6
+ * 创建 Lodash 静态导入约束。
7
+ *
8
+ * @remarks
9
+ * 该配置使用 ESLint 核心规则,因此不依赖 import-x 开关或额外插件。
10
+ * 它只检查静态 `import` 与 `export ... from`,不会安装依赖或检查动态导入。
11
+ *
12
+ * @param preference - 项目唯一允许使用的 Lodash 包入口。
13
+ * @param files - 应用导入约束的 ESLint glob 列表。
14
+ * @returns 包含对应 Lodash 导入限制规则的 Flat Config 数组。
15
+ */
16
+ const createLodashConfigs = (preference, files = GLOBS_CODE) => defineConfig([{
17
+ name: `@fast-china/lodash/${preference}`,
18
+ files: [...files],
19
+ rules: preference === "lodash" ? preferLodashRules : preferLodashUnifiedRules
20
+ }]);
21
+ //#endregion
22
+ export { createLodashConfigs };
23
+
24
+ //# sourceMappingURL=lodash.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lodash.mjs","names":[],"sources":["../../src/configs/lodash.ts"],"sourcesContent":["import { defineConfig } from \"eslint/config\";\n\nimport { GLOBS_CODE } from \"../constants\";\nimport { preferLodashRules, preferLodashUnifiedRules } from \"../rules\";\n\n/**\n * 项目允许使用的 Lodash 静态导入来源。\n *\n * `\"lodash\"` 允许根入口及 `lodash/*` 子路径;`\"lodash-unified\"` 只允许统一入口。\n */\nexport type LodashPreference = \"lodash\" | \"lodash-unified\";\n\n/**\n * 创建 Lodash 静态导入约束。\n *\n * @remarks\n * 该配置使用 ESLint 核心规则,因此不依赖 import-x 开关或额外插件。\n * 它只检查静态 `import` 与 `export ... from`,不会安装依赖或检查动态导入。\n *\n * @param preference - 项目唯一允许使用的 Lodash 包入口。\n * @param files - 应用导入约束的 ESLint glob 列表。\n * @returns 包含对应 Lodash 导入限制规则的 Flat Config 数组。\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"],"mappings":";;;;;;;;;;;;;;;AAuBA,MAAa,uBAAuB,YAA8B,QAA2B,eAC5F,aAAa,CACZ;CACC,MAAM,sBAAsB;CAC5B,OAAO,CAAC,GAAG,KAAK;CAChB,OAAO,eAAe,WAAW,oBAAoB;AACtD,CACD,CAAC"}
@@ -0,0 +1,13 @@
1
+ //#region src/configs/markdown.d.ts
2
+ /**
3
+ * 创建 Markdown 结构与语法检查配置。
4
+ *
5
+ * @remarks
6
+ * 该配置检查 Markdown 文档本身;代码块是否接受额外语言规则由项目覆盖配置决定。
7
+ *
8
+ * @returns 包含 `@eslint/markdown` 推荐预置的 Flat Config 数组。
9
+ */
10
+ declare const createMarkdownConfigs: () => import("eslint/config").ConfigObject[];
11
+ //#endregion
12
+ export { createMarkdownConfigs };
13
+ //# sourceMappingURL=markdown.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.mts","names":[],"sources":["../../src/configs/markdown.ts"],"mappings":";;;;;;;;;cAaa,qDAAqB"}
@@ -0,0 +1,21 @@
1
+ import { GLOB_MARKDOWN } from "../constants/index.mjs";
2
+ import { defineConfig } from "eslint/config";
3
+ import eslintMarkdown from "@eslint/markdown";
4
+ //#region src/configs/markdown.ts
5
+ /**
6
+ * 创建 Markdown 结构与语法检查配置。
7
+ *
8
+ * @remarks
9
+ * 该配置检查 Markdown 文档本身;代码块是否接受额外语言规则由项目覆盖配置决定。
10
+ *
11
+ * @returns 包含 `@eslint/markdown` 推荐预置的 Flat Config 数组。
12
+ */
13
+ const createMarkdownConfigs = () => defineConfig([{
14
+ name: "@fast-china/markdown",
15
+ files: [GLOB_MARKDOWN],
16
+ extends: [eslintMarkdown.configs.recommended]
17
+ }]);
18
+ //#endregion
19
+ export { createMarkdownConfigs };
20
+
21
+ //# sourceMappingURL=markdown.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.mjs","names":[],"sources":["../../src/configs/markdown.ts"],"sourcesContent":["import eslintMarkdown from \"@eslint/markdown\";\nimport { defineConfig } from \"eslint/config\";\n\nimport { GLOB_MARKDOWN } from \"../constants\";\n\n/**\n * 创建 Markdown 结构与语法检查配置。\n *\n * @remarks\n * 该配置检查 Markdown 文档本身;代码块是否接受额外语言规则由项目覆盖配置决定。\n *\n * @returns 包含 `@eslint/markdown` 推荐预置的 Flat Config 数组。\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"],"mappings":";;;;;;;;;;;;AAaA,MAAa,8BACZ,aAAa,CACZ;CACC,MAAM;CACN,OAAO,CAAC,aAAa;CACrB,SAAS,CAAC,eAAe,QAAQ,WAAW;AAC7C,CACD,CAAC"}
@@ -0,0 +1,14 @@
1
+ //#region src/configs/prettier.d.ts
2
+ /**
3
+ * 创建 Prettier 兼容层。
4
+ *
5
+ * @remarks
6
+ * 它只关闭与 Prettier 冲突的 ESLint 格式规则,不会在 ESLint 进程中执行 Prettier。
7
+ * 工厂始终把它放在内置配置之后,使上游预置的格式规则能够被正确覆盖。
8
+ *
9
+ * @returns 包含命名后的 `eslint-config-prettier` Flat Config 数组。
10
+ */
11
+ declare const createPrettierConfigs: () => import("eslint/config").ConfigObject[];
12
+ //#endregion
13
+ export { createPrettierConfigs };
14
+ //# sourceMappingURL=prettier.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prettier.d.mts","names":[],"sources":["../../src/configs/prettier.ts"],"mappings":";;;;;;;;;;cAYa,qDAAqB"}
@@ -0,0 +1,20 @@
1
+ import { defineConfig } from "eslint/config";
2
+ import eslintConfigPrettierFlat from "eslint-config-prettier/flat";
3
+ //#region src/configs/prettier.ts
4
+ /**
5
+ * 创建 Prettier 兼容层。
6
+ *
7
+ * @remarks
8
+ * 它只关闭与 Prettier 冲突的 ESLint 格式规则,不会在 ESLint 进程中执行 Prettier。
9
+ * 工厂始终把它放在内置配置之后,使上游预置的格式规则能够被正确覆盖。
10
+ *
11
+ * @returns 包含命名后的 `eslint-config-prettier` Flat Config 数组。
12
+ */
13
+ const createPrettierConfigs = () => defineConfig([{
14
+ ...eslintConfigPrettierFlat,
15
+ name: "@fast-china/prettier"
16
+ }]);
17
+ //#endregion
18
+ export { createPrettierConfigs };
19
+
20
+ //# sourceMappingURL=prettier.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prettier.mjs","names":[],"sources":["../../src/configs/prettier.ts"],"sourcesContent":["import { defineConfig } from \"eslint/config\";\nimport eslintConfigPrettierFlat from \"eslint-config-prettier/flat\";\n\n/**\n * 创建 Prettier 兼容层。\n *\n * @remarks\n * 它只关闭与 Prettier 冲突的 ESLint 格式规则,不会在 ESLint 进程中执行 Prettier。\n * 工厂始终把它放在内置配置之后,使上游预置的格式规则能够被正确覆盖。\n *\n * @returns 包含命名后的 `eslint-config-prettier` Flat Config 数组。\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"],"mappings":";;;;;;;;;;;;AAYA,MAAa,8BACZ,aAAa,CACZ;CACC,GAAG;CACH,MAAM;AACP,CACD,CAAC"}
@@ -0,0 +1,93 @@
1
+ //#region src/configs/react.d.ts
2
+ /**
3
+ * React 与兼容 JSX 运行时的检测设置。
4
+ *
5
+ * @remarks
6
+ * 该对象通过 `fastConfig({ react: { ... } })` 传入。传入对象会启用 React 支持,并在
7
+ * JavaScript/JSX 和 TypeScript/TSX 文件上加载对应的 `@eslint-react` 推荐预置、React
8
+ * 官方 Hooks Flat Config 以及本库规则。实际文件范围仍受顶层 `javascript`、
9
+ * `typescript` 开关控制。
10
+ *
11
+ * 这些字段只传给 ESLint 插件用于理解项目的 React 语义,不会改变 JSX 编译方式、自动
12
+ * 导入 React、设置打包器别名或安装兼容运行时。
13
+ */
14
+ interface ReactConfigOptions {
15
+ /**
16
+ * 提供 React API 与 JSX 运行时的包入口名称。
17
+ *
18
+ * 标准 React 项目保持 `"react"`;Preact 等兼容运行时可填写自身包名,使
19
+ * `@eslint-react` 按正确的导入来源识别组件和 API。该设置不会修改 TypeScript
20
+ * `jsxImportSource`、Babel、Vite 或其他构建工具配置,两侧需要由项目自行保持一致。
21
+ * @defaultValue `"react"`
22
+ */
23
+ importSource?: string;
24
+ /**
25
+ * 项目约定用于切换多态组件底层元素或组件类型的属性名。
26
+ *
27
+ * 例如 `<Button as="a" />` 中的 `as`。插件会据此理解多态组件最终渲染元素的语义,
28
+ * 从而提高 DOM 与可访问性相关规则的判断准确度;未采用多态组件时通常无需修改。
29
+ * @defaultValue `"as"`
30
+ */
31
+ polymorphicPropName?: string;
32
+ /**
33
+ * 供插件选择版本相关行为的 React 版本号或自动检测标记。
34
+ *
35
+ * `"detect"` 会尝试从当前项目依赖解析已安装的 React 版本。monorepo、PnP、兼容运行时
36
+ * 或依赖不可见的执行环境若无法可靠检测,可传入明确版本号,例如 `"19.1.0"`。
37
+ * 该值只影响 lint 规则判断,不会限制或安装 React 依赖版本。
38
+ * @defaultValue `"detect"`
39
+ */
40
+ version?: string;
41
+ }
42
+ /**
43
+ * React 配置生成器使用的语言状态。
44
+ *
45
+ * @remarks
46
+ * `fastConfig()` 会自动推导这些值;直接组合配置片段时由调用方显式传入。
47
+ *
48
+ * 用户不直接配置该接口。`fastConfig()` 会把顶层 JavaScript、TypeScript 开关以及
49
+ * TypeScript 类型感知状态转换为这里的三个布尔值,确保 React 不会重新接管已经关闭的
50
+ * 文件类型,并为 TypeScript 选择正确的 `@eslint-react` 推荐预置。
51
+ */
52
+ interface ReactLanguageOptions {
53
+ /**
54
+ * 是否为 `.js`、`.cjs`、`.mjs` 与 `.jsx` 文件创建 React 配置。
55
+ *
56
+ * 该值来自顶层 `FastConfigOptions.javascript`;为 `false` 时即使 React 已启用,
57
+ * React 配置也不会声明这些文件范围。
58
+ * @defaultValue `true`
59
+ */
60
+ javascript?: boolean;
61
+ /**
62
+ * 是否为 TypeScript/TSX 选择需要类型信息的 React 推荐预置。
63
+ *
64
+ * 该值来自 `FastConfigOptions.typescript.typeChecked`,只影响 TypeScript React 配置;
65
+ * JavaScript 配置始终使用普通推荐预置。
66
+ * @defaultValue `false`
67
+ */
68
+ typeChecked?: boolean;
69
+ /**
70
+ * 是否为 `.ts`、`.cts`、`.mts` 与 `.tsx` 文件创建 React 配置。
71
+ *
72
+ * 该值来自顶层 `FastConfigOptions.typescript`;为 `false` 时不会生成 TypeScript React
73
+ * 片段,也不会仅因为 React 已启用而重新接管 TypeScript 文件。
74
+ * @defaultValue `true`
75
+ */
76
+ typescript?: boolean;
77
+ }
78
+ /**
79
+ * 创建 React、JSX/TSX 与 Hooks 配置。
80
+ *
81
+ * @remarks
82
+ * JavaScript 和 TypeScript 分别继承对应的 @eslint-react 推荐预置;Hooks 使用
83
+ * React 官方 Flat Config。组件、Hooks 即使不返回 JSX 也能在普通 `.js`/`.ts` 中
84
+ * 定义,因此规则覆盖全部已启用脚本扩展名,而不仅是 `.jsx`/`.tsx`。
85
+ *
86
+ * @param options - React 版本、运行时导入来源与多态组件属性设置。
87
+ * @param languages - 由调用方启用的脚本语言以及 TypeScript 类型感知状态。
88
+ * @returns 仅包含已启用语言的 React 与 Hooks Flat Config 数组。
89
+ */
90
+ declare const createReactConfigs: ({ importSource, polymorphicPropName, version }?: ReactConfigOptions, { javascript, typeChecked, typescript }?: ReactLanguageOptions) => import("eslint/config").ConfigObject[];
91
+ //#endregion
92
+ export { ReactConfigOptions, createReactConfigs };
93
+ //# sourceMappingURL=react.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.mts","names":[],"sources":["../../src/configs/react.ts"],"mappings":";;;;;;;;;;;;;UAqBiB;;;;;;;;;EAShB;;;;;;;;EAQA;;;;;;;;;EASA;;;;;;;;;;;;UAaS;;;;;;;;EAQT;;;;;;;;EAQA;;;;;;;;EAQA;;;;;;;;;;;;;;cAeY,uBACZ,cAAA,qBAAA,YAA4E,sBAC5E,YAAA,aAAA,eAA+D,iDAAyB"}