mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
c266a5e1a7
The client lint ran untyped with two react-hooks rules, so nothing saw a floating promise, an async handler where a void one is expected, a whole-store Zustand subscription or a window event bus, all of which client/CLAUDE.md forbids. eslint.config.mjs now lints with the project service and adds, as warnings: no-floating-promises, no-misused-promises (void returns in JSX attributes included), the rest of react-hooks v7's recommended set, complexity 20, max-depth 4, max-params 5 and max-lines-per-function (120 in a .ts function, 300 in a .tsx one, whose body also holds its markup), no-console and no-non-null-assertion. Three local rules in scripts/lib/eslint-rules.mjs cover what no stock rule sees: an empty .catch() callback, use*Store() without a selector (the message points to useShallow, since an object selector without it loops on Zustand 5), and window.__* globals and window.dispatchEvent with an event of our own. scripts/eslint-baseline.json takes today's count of each new rule, so the existing code is frozen, not changed, and each new instance fails lint:warnings. The CI step gets the 8 GB heap typed linting needs.
53 lines
1.7 KiB
JSON
53 lines
1.7 KiB
JSON
{
|
|
"src": {
|
|
"@typescript-eslint/no-non-null-assertion": 407,
|
|
"@typescript-eslint/no-misused-promises": 877,
|
|
"no-console": 88,
|
|
"complexity": 231,
|
|
"@typescript-eslint/no-explicit-any": 154,
|
|
"trek/no-swallowed-catch": 135,
|
|
"max-params": 35,
|
|
"trek/store-without-selector": 69,
|
|
"react-hooks/refs": 561,
|
|
"react-hooks/set-state-in-effect": 197,
|
|
"@typescript-eslint/no-floating-promises": 167,
|
|
"react-hooks/exhaustive-deps": 121,
|
|
"@typescript-eslint/no-unused-vars": 155,
|
|
"react-hooks/immutability": 28,
|
|
"max-lines-per-function": 133,
|
|
"react-hooks/static-components": 78,
|
|
"react-hooks/preserve-manual-memoization": 15,
|
|
"no-useless-assignment": 7,
|
|
"no-empty": 19,
|
|
"trek/no-window-globals": 42,
|
|
"react-refresh/only-export-components": 46,
|
|
"unused-disable-directive": 6,
|
|
"max-depth": 22,
|
|
"react-hooks/void-use-memo": 1,
|
|
"@typescript-eslint/no-unused-expressions": 2,
|
|
"react-hooks/purity": 2,
|
|
"preserve-caught-error": 53,
|
|
"no-useless-escape": 1
|
|
},
|
|
"suppressed": {
|
|
"@typescript-eslint/no-explicit-any": 40,
|
|
"react-hooks/exhaustive-deps": 46
|
|
},
|
|
"tests": {
|
|
"@typescript-eslint/no-explicit-any": 491,
|
|
"@typescript-eslint/no-non-null-assertion": 1949,
|
|
"@typescript-eslint/no-misused-promises": 22,
|
|
"@typescript-eslint/no-unused-vars": 52,
|
|
"@typescript-eslint/no-floating-promises": 33,
|
|
"trek/no-window-globals": 332,
|
|
"trek/no-swallowed-catch": 14,
|
|
"react-hooks/globals": 5,
|
|
"react-hooks/refs": 22,
|
|
"@typescript-eslint/no-this-alias": 1,
|
|
"trek/store-without-selector": 3,
|
|
"@typescript-eslint/no-unsafe-function-type": 2,
|
|
"no-console": 2,
|
|
"react-refresh/only-export-components": 1
|
|
}
|
|
}
|