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

<Meta title='@dxtmisha/ru/scripts/Classes/PropertiesConfig - Оркестратор глобальной конфигурации'/>

# Класс PropertiesConfig

Класс `PropertiesConfig` — это централизованная статическая утилита, отвечающая за управление рабочими параметрами дизайн-системы. Он управляет поиском и рекурсивным слиянием файлов конфигурации `design-ui.json`, предоставляя единый API для доступа к соглашениям об именовании, ключам интеграции ИИ и правилам маршрутизации документации во всей библиотеке.

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

- **Рекурсивное расширение** — поддерживает механизм `extends`, позволяя конфигурациям наследовать и переопределять настройки из родительских директорий.
- **Автоматическое обнаружение** — выполняет поиск вверх по дереву каталогов для нахождения ближайшей точки входа `design-ui.json`.
- **Централизованные настройки** — обеспечивает унифицированный доступ к идентификаторам проекта, названиям дизайна и разделителям путей.
- **Интеграция с ИИ** — управляет учетными данными и параметрами моделей для генерации документации и кода на базе ИИ.
- **Маршрутизация документации** — настраивает целевые директории и пути Storybook для автоматизированной системы вики.

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

Являясь статическим классом, `PropertiesConfig` инициализируется автоматически при первом импорте. Вам не нужно вызывать конструктор.

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

// Доступ к глобальным настройкам
const designName = PropertiesConfig.getDesignName()
const separator = PropertiesConfig.getSeparator()
```

## Методы

### Общая конфигурация

- `getProjectName(): string` — получает корневой идентификатор проекта.
- `getDesignName(): string` — возвращает основной идентификатор дизайн-системы.
- `getDesignAlternativeName(): string[]` — возвращает альтернативные алиасы для дизайна.
- `getSeparator(): string` — возвращает символ-разделитель путей в токенах.
- `getWikiLanguage(): string` — возвращает код целевого языка для документации.

### ИИ и Документация

- `getAiType(): AiType` — возвращает настроенного ИИ-провайдера (например, 'gemini').
- `getAiModel(): string` — возвращает название конкретной модели ИИ.
- `getAiDocDirectory(): string[]` — возвращает директории, предназначенные для генерации документации.
- `getAiDocStorybookPath(): string` — возвращает путь экспорта для MDX-файлов Storybook.

## Операции

### Поток разрешения конфигурации

`PropertiesConfig` использует надежную стратегию для разрешения системных настроек:
1. **Поиск файла**: При загрузке класс пытается найти `design-ui.json`, поднимаясь вверх от текущей рабочей директории (до 32 уровней).
2. **Рекурсивное слияние**: Если найденный файл содержит свойство `extends`:
    - Он рекурсивно загружает указанную родительскую конфигурацию.
    - Интеллектуально объединяет настройки, где локальные свойства переопределяют унаследованные.
3. **Статическая готовность**: Итоговая объединенная конфигурация сохраняется в приватном статическом поле, делая все настройки немедленно доступными через публичные геттеры.

