chore: add typed ESLint checks #18

Refs WealthLedger/main#18. Keep Biome; add no Prettier dependencies.
This commit is contained in:
2026-09-28 16:36:40 +03:00
committed by ksv741
parent 95fdc8759e
commit 57630102e4
38 changed files with 2914 additions and 155 deletions
+27 -1
View File
@@ -81,8 +81,34 @@ npm run verify
```
Команда проверяет, что generated OpenAPI types соответствуют committed snapshot,
затем запускает strict TypeScript, Biome, один coverage-backed запуск Vitest,
затем запускает strict TypeScript, Biome, ESLint и проверку его конфигурации,
один coverage-backed запуск Vitest,
Knip, dependency rules приложения и stories, сборки приложения и Storybook.
`npm run lint` объединяет `lint:biome` и `lint:eslint`. Biome сохраняет
форматирование, сортировку импортов, magic numbers и accessibility-проверки.
[ESLint](eslint.config.mjs) добавляет typed linting, React Compiler/hooks,
Fast Refresh, TanStack Query, выбранные Unicorn-правила и проверки тестов/stories.
Prettier не добавлен. `npm run test:lint` проверяет правила на ошибочных примерах
и исключение generated/build artifacts. `lint:eslint` сначала собирает private
packages, чтобы анализ типов использовал их актуальные declarations.
Пересекающиеся hook-диагностики принадлежат официальному `react-hooks`.
Testing Library проверяет async-корректность; DOM structure/geometry tests
сохраняют прямой доступ к узлам. Async doubles допускаются без искусственного
`await`; Vitest допускает второй аргумент сообщения и ветвления фиксированных
`it.each` сценариев. React event handlers допускают Promise, но их тела остаются
под `no-floating-promises`. Локальные исключения объясняют сохранение wire
ProblemDetails, generated query keys и раннее подключение rejection assertions
в race-тестах. Плагин Query не доказывает корректность всех generated/custom
обёрток: transport/cache сценарии по-прежнему проверяют MSW-тесты.
Дополнительные `no-unnecessary-condition` и `no-deprecated` пока не включены:
первому нужна отдельная оценка индексного доступа и защитных runtime guards,
второму — отдельная миграция API зависимостей. Пакеты второй волны и
`jsx-a11y` без заявленной поддержки ESLint 10 отложены в
[workspace issue #18](https://git.personal.ksv741.ru/WealthLedger/main/issues/18).
Vitest включает JSDOM-тесты и проверку геометрии секций позиций в headless
Chromium при ширинах 375 и 1280 px. Browser project не использует JSDOM setup
и его заглушки layout API. Только браузерная проверка: