refactor: separate registry schema file

This commit is contained in:
2026-10-10 05:35:59 +05:00
parent 421f078f90
commit 731f4ba90e
9 changed files with 803 additions and 777 deletions
+8 -6
View File
@@ -42,13 +42,15 @@ handleFiles, эффекты, workspace-разметка). Декомпозици
`running` (`finally` сбрасывает только актуальный); `init()` инкрементом
инвалидирует прогоны прошлого хоста.
### H3. `registry-schema.ts` — 723 строки, 45 экспортов, 5 ответственностей
### H3. `registry-schema.ts` — 5 ответственностей — СДЕЛАНО (2026-10)
`web/src/lib/registry-schema.ts` смешивает: (а) типы 15 видов полей (:14-233),
(б) builder-DSL `field.*` (:273-360), (в) layout engine `resolveLayoutGroups`
(:380-406), (г) семантику значений `defaultSchemaParams`/`sanitizeSchemaParams`
(:503-770), (д) aspect-lock геометрию `withAspectLock`/`clampSourceAwareMaxes`
(:434-489). Каждая из (в)-(д) — отдельный модуль.
Файл (769 строк) разрезан на директорию `web/src/lib/registry-schema/`:
`specs.ts` (типы полей, `fieldSpecs`, `ToolSchema`), `field.ts` (builder DSL +
`toolSchema`), `layout.ts` (`resolveLayoutGroups`), `aspect.ts` (`effectiveMax`,
`clampSourceAwareMaxes`, `withAspectLock`), `values.ts` (дефолты и санитизация);
`index.ts` — баррель, пути импортов не менялись. `docs/architecture.md` (разделы
1, 4) обновлён. JSDoc в `specs.ts` сжат до однострочников — лимит плотности
комментариев (`conventions/comment-format`, 15%).
## Med
+9 -2
View File
@@ -12,7 +12,10 @@ web/src/lib/
registry/ # источник истины: инструменты и страницы
registry/tools/ # Tool: реализации (id), без адресов и текстов
registry/pages/ # Page: адрес, тексты, категория, список шагов
registry-schema.ts # декларативная схема параметров + санитизация дефолтов
registry-schema/ # декларативная схема параметров: specs (типы полей),
# field (builder DSL), layout (группы), aspect (aspect-lock
# и кэпы от source), values (дефолты и санитизация);
# index.ts — баррель, импорты идут по `registry-schema`
catalog.ts # группировка страниц и счётчики для /list-tools
categories.ts # id/названия категорий
tool-icons.ts # slug страницы → иконка
@@ -170,7 +173,11 @@ registry/{tools,pages}/*.ts
## 4. Схема параметров
`registry-schema.ts` — единственное место, где описаны виды полей.
`registry-schema/` — единственное место, где описаны виды полей. Модули:
`specs.ts` (типы полей и `ToolSchema`), `field.ts` (фабрика `field.*` и
`toolSchema`), `layout.ts` (`resolveLayoutGroups`), `aspect.ts` (`effectiveMax`,
`clampSourceAwareMaxes`, `withAspectLock`), `values.ts` (`defaultSchemaParams`,
`applySourceDefaults`, `sanitizeSchemaParams`).
- **Виды поля** (`fieldSpecs`): `number`, `slider`, `color`, `select`, `text`,
`checkbox`, `dimension`, `color-pair`, `colors`, `offset`, `position9`,