import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/scripts/Classes/DesignWiki - Генератор вики-реестра'/>

# Класс DesignWiki

Класс `DesignWiki` обеспечивает базовую инфраструктуру для системы документации проекта. Он автоматизирует создание и инициализацию центрального конфигурационного файла вики, гарантируя, что движок документации (Storybook) имеет стабильный и типизированный реестр для хранения аргументов и метаданных компонентов.

## Ключевые особенности

- **Автоматическая инициализация** — обнаруживает отсутствие конфигурационных файлов вики и создает их по стандартному шаблону.
- **Типизированный реестр** — генерирует конфигурации с использованием типа `StorybookArgsToList` для полной интеграции с фреймворком документации.
- **Проектное именование (Aliasing)** — использует имя дизайн-системы (из `PropertiesConfig`) для создания уникальных переменных реестра, соответствующих проекту.
- **Безопасное выполнение** — проверяет существование файла перед записью, предотвращая случайную перезапись существующих конфигураций документации.

## Инициализация

Класс не требует параметров для инициализации. Он использует глобальные конфигурации из окружения.

```typescript
import { DesignWiki } from '@dxtmisha/scripts'

const wikiGenerator = new DesignWiki()
wikiGenerator.make()
```

## Методы

### Управление

- `make(): void` — запускает процесс инициализации вики.

## Операции

### Рабочий процесс инициализации вики

При выполнении `make()` класс следует внутренней логике:
1. **Разрешение путей**: использует настроенные пути к директориям (`UI_DIRS_WIKI`) и имена файлов (`UI_FILE_NAME_WIKI`) для определения целевого файла конфигурации.
2. **Проверка существования**: опрашивает файловую систему через `PropertiesFile.is()`, чтобы определить, существует ли уже конфигурационный файл `.ts`.
3. **Генерация реестра**: если файл отсутствует, получает текущее имя дизайн-системы и конструирует шаблон TypeScript:
    - импортирует необходимый тип `StorybookArgsToList`.
    - экспортирует константу с именем `wiki[DesignName]`.
4. **Сохранение**: записывает сгенерированный шаблон в файловую систему, гарантируя, что движок документации сможет немедленно начать его импорт.

### Интеграция со Storybook

Централизуя создание этого реестра, `DesignWiki` гарантирует, что у всех разработчиков, работающих над компонентами, есть единое место для документирования пропсов и состояний. Этот реестр выступает в качестве «источника истины» для интерактивной документации, позволяя Storybook динамически отрисовывать элементы управления компонентами на основе сохраненных здесь метаданных.
