mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
feat: remove v1 routes and libs
This commit is contained in:
@@ -8,12 +8,11 @@
|
||||
|
||||
- `web/eslint-plugins/` — локальные ESLint-плагины.
|
||||
- `design-tokens/` — правила для `<style>`-блоков svelte-компонентов.
|
||||
- `isolation/` — правило изоляции old/new UI.
|
||||
- `conventions/` — конвенции кода (интерфейс пропсов, запрет union-алиасов).
|
||||
- `i18n/` — кросс-языковой линтер словарей (`dict-consistency`).
|
||||
- `__tests__/` — юнит-тесты (Vitest + `RuleTester`/`Linter`).
|
||||
- `__fixtures__/` — фикстуры для тестов: миниатюрный `src/app.css` (словарь
|
||||
токенов), файлы для изоляционных тестов и мини-словари `lib/i18n/`.
|
||||
токенов) и мини-словари `lib/i18n/`.
|
||||
- `web/scripts/`:
|
||||
- `lint-all.mjs` — оркестратор `lint:all`.
|
||||
- `check-tokens.mjs` + `token-audit/` — токен-аудит по `app.css`.
|
||||
@@ -28,16 +27,9 @@
|
||||
`@typescript-eslint/consistent-type-imports` (запрет инлайн-тип-импортов,
|
||||
`prefer: 'type-imports'`).
|
||||
- Полные `recommended`-наборы (`eslint` + `typescript-eslint` +
|
||||
`eslint-plugin-svelte`) навешаны **только на новый код**
|
||||
(`src/lib/components/**`, `src/routes/**`), чтобы старый код не засыпался
|
||||
предсуществующими ошибками. Старый код (C17) — `src/lib/v1/**`,
|
||||
`src/routes/v1/**`. Когда старый дизайн удалён (C19), scoped-блок убирается и
|
||||
`recommended` включается на весь код.
|
||||
- **Scoped-пути двигаются вместе с папками** (см. `plan-redesign.md` §10): не
|
||||
оставлять устаревшие пути в `eslint.config.js` (C17 уже двигал
|
||||
`routes/preview/**` → `routes/**` и `components/kit/**` → `components/**`; на
|
||||
C19 при наведении порядка в `components/` paths останутся `components/**` +
|
||||
`routes/**`).
|
||||
`eslint-plugin-svelte`) навешаны на UI-код (`src/lib/components/**`,
|
||||
`src/routes/**`). Scoped-пути двигаются вместе с папками: не оставлять
|
||||
устаревшие пути в `eslint.config.js`.
|
||||
- Для `*.svelte` выключен `prefer-const` (пропсы в Svelte 5 пишутся через
|
||||
`let`).
|
||||
- `allowDefaultProject` перечисляет test-файлы и фикстуры точечно (glob'ы с `**`
|
||||
@@ -45,7 +37,6 @@
|
||||
`__fixtures__/` дописать их туда же.
|
||||
- design-tokens правила применяются к тем же scoped-путям
|
||||
(`src/lib/components/**`, `src/routes/**`).
|
||||
- isolation-правило включено на весь `**/*.{ts,svelte}`.
|
||||
|
||||
## Правила плагина design-tokens
|
||||
|
||||
@@ -66,10 +57,11 @@
|
||||
|
||||
## Правило плагина i18n (`i18n/dict-consistency`)
|
||||
|
||||
Кросс-языковой линтер словарей `lib/i18n/` (план: `docs/plan-preview-i18n.md`
|
||||
§Фаза 8). Сравнивает каждый словарь со **всеми** остальными локалями (не только
|
||||
с BASE). Список локалей берётся из `LOCALES` в `lib/i18n/dict.ts` — новый
|
||||
словарь подхватывается без правки правила.
|
||||
Кросс-языковой линтер словарей `lib/i18n/` (историческая модель и завершённые
|
||||
фазы: `docs/archive/plan-preview-i18n.md`). Сравнивает каждый словарь со
|
||||
**всеми** остальными локалями (не только с BASE). Список локалей берётся из
|
||||
`LOCALES` в `lib/i18n/dict.ts` — новый словарь подхватывается без правки
|
||||
правила.
|
||||
|
||||
- **warn-only, никогда `error`** — пропущенный перевод не валит сборку.
|
||||
- Диагностика живёт там, где фикс: каждый файл репортит **только свои**
|
||||
@@ -92,9 +84,9 @@
|
||||
отсутствовать только в базовой локали; в текущей конфигурации это registry
|
||||
metadata `tools.*.title` и `tools.*.description`. Пустые значения и
|
||||
placeholders для присутствующих ключей всё равно проверяются.
|
||||
- `ignoreMissingPatterns: string[]` — паттерны legacy-ключей, которые временно
|
||||
не проверяются на missing; в текущей конфигурации это старый `tools.*.params`,
|
||||
не используемый новым UI. Эта опция не отключает empty/placeholder checks.
|
||||
- `ignoreMissingPatterns: string[]` — паттерны ключей, которые временно не
|
||||
проверяются на missing; в текущей конфигурации это неиспользуемые
|
||||
`tools.*.params`. Эта опция не отключает empty/placeholder checks.
|
||||
- Тесты: `__tests__/dict-consistency.test.ts`, фикстуры-словари в
|
||||
`__fixtures__/src/lib/i18n/` (`en`, `ru`, `de` — консистентные, zero-warn) — в
|
||||
тестах подаются модифицированные варианты `en.ts`/`ru.ts` против эталонных на
|
||||
@@ -150,9 +142,6 @@ hct-авторство.
|
||||
`no-token-definition-in-svelte`) через `RuleTester` со строковыми кейсами;
|
||||
`no-undefined-in-svelte` — через `Linter` API, т.к. читает словарь токенов из
|
||||
`__fixtures__/src/app.css` (не из реального `src/app.css`).
|
||||
- `__tests__/no-mixed-imports.test.ts` — isolation-правило через `Linter` API с
|
||||
`cwd` на `__fixtures__`: правило резолвит импорты по реальным файлам, поэтому
|
||||
цели импортов обязаны существовать на диске.
|
||||
- Хелпер `__tests__/helpers.ts` собирает `Linter` с `cwd = __fixtures__` —
|
||||
`process.cwd()` не трогается, реальные `src/` не читаются.
|
||||
|
||||
@@ -161,27 +150,3 @@ hct-авторство.
|
||||
|
||||
Фикстуры живут в `__fixtures__/` и сами прогоняются линтом (`eslint .`), поэтому
|
||||
добавление/правка стабов — тоже работа с валидным кодом.
|
||||
|
||||
## Isolation-правило (`isolation/no-mixed-imports`)
|
||||
|
||||
**Полная взаимная изоляция** старого (v1) и нового (корень) UI. В отличие от
|
||||
`no-restricted-imports`, правило **резолвит** каждый импорт (и `$lib/...`, и
|
||||
относительные `./`/`../`) до реального файла и классифицирует стороны по
|
||||
фактическому пути, поэтому относительным импортом правило не обойти.
|
||||
|
||||
- Старое: `routes/v1/**`, `lib/v1/**`.
|
||||
- Новое: `routes/**` без `v1/**`; корневой `lib` целиком (`lib/**`) без
|
||||
`lib/v1/**` и без общих пакетов.
|
||||
- Общее (разрешено обоим) — только служебные пакеты: `core/`, `theme`. v1 не
|
||||
высовывается: из `lib/v1/**` наружу разрешены импорты лишь в общие пакеты и в
|
||||
собственный форк i18n (`lib/v1/i18n/**`).
|
||||
- Плагин **конфигурируем** (опции `old`/`new` + `root`/`alias` в
|
||||
`eslint.config.js`): перенос старых файлов в папки `old/` — это правка
|
||||
glob-паттернов в настройке, а не код правила.
|
||||
- Изоляция уже достигнута: старый `lib/v1/registry.ts`/`registry-helpers.ts` не
|
||||
тянут `registry-schema` (пилоты add-border/add-stroke работают через
|
||||
`params`), `registry.ts` не импортирует `ToolSchema`; новый `list-tools`
|
||||
использует `$lib/tool-icons.ts`, а не старые `lib/v1/tools/tool-icons.ts`.
|
||||
|
||||
Линтер только показывает ошибки, старый код (непрефиксованные токены, hex в
|
||||
`app_v1.css`) — известный техдолг, его НЕ чинить и не игнорировать правилами.
|
||||
|
||||
Reference in New Issue
Block a user