refactor(*): 稳定期治理 - 收敛核心架构、错误语义并修复跨项目数据竞态

This commit is contained in:
ddCat committed 2026-09-09 22:02:10 +08:00
1 parent bacd502f5c
commit b5f3413ded
298 files changed
+12681 -26428

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
import babelParser from "@babel/eslint-parser";
// 这不是风格检查。只锁已经退场的 AntD 用法,防止 Empty / 静态 Modal.confirm 再长回来。
// 用 Babel 解析 TS/TSX:typescript-eslint 8 在 TypeScript 7 上会直接拒绝启动。
const emptyMessage = "列表和面板空态用 @/components/ui/product/empty-state 的 EmptyState,不要再引入 antd Empty。";
const confirmMessage = "命令式确认必须走 App.useApp().modal.confirm,静态 Modal.confirm 拿不到主题和 App 上下文。";
// 源码里还有 react-hooks/exhaustive-deps 的 disable 注释。本闸门不启用 hooks 规则,
// 只挂一个空规则,避免 ESLint 把未知规则名当成错误。
const commentCompatPlugin = {
rules: {
"exhaustive-deps": {
meta: { type: "problem" },
create() {
return {};
},
},
},
};
export default [
{
ignores: ["dist/**", "node_modules/**", "coverage/**"],
},
{
files: ["src/**/*.{ts,tsx}", "test/**/*.{ts,tsx,mjs}"],
plugins: {
"react-hooks": commentCompatPlugin,
},
linterOptions: {
reportUnusedDisableDirectives: "off",
},
languageOptions: {
parser: babelParser,
parserOptions: {
requireConfigFile: false,
sourceType: "module",
babelOptions: {
babelrc: false,
configFile: false,
presets: [["@babel/preset-typescript", { allExtensions: true, isTSX: true, allowDeclareFields: true }]],
},
},
},
rules: {
"no-restricted-imports": [
"error",
{
paths: [
{ name: "antd", importNames: ["Empty"], message: emptyMessage },
{ name: "antd/es/empty", message: emptyMessage },
{ name: "antd/lib/empty", message: emptyMessage },
],
},
],
"no-restricted-syntax": [
"error",
{
selector: "CallExpression[callee.object.name='Modal'][callee.property.name='confirm']",
message: confirmMessage,
},
],
},
},
];