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

<Meta title='@dxtmisha/ru/scripts/Classes/AiDocType - Менеджер типов AI-документации'/>

# Класс AiDocType

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

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

- **Динамическая регистрация** — позволяет добавлять новые типы документации в систему во время выполнения.
- **Умный выбор** — автоматически идентифицирует подходящий обработчик, перебирая зарегистрированные типы и выполняя их логику проверки.
- **Делегирование** — координирует создание экземпляров и выполнение специализированных обработчиков документации (реализаций `AiDocItemAbstract`).
- **Статический API** — предоставляет удобный статический интерфейс для глобального управления документацией без необходимости создания экземпляров класса.

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

`AiDocType` предназначен для использования через статические методы. Инициализация не требуется.

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

// Движок использует этот класс внутри для обработки элементов файлов:
await AiDocType.make(gitFileItem)
```

## Методы

### Управление документацией

- `make(item: GitFileItem): Promise<void>` — (Статический) Анализирует переданный элемент файла, выбирает соответствующий тип документации и запускает процесс генерации.

### Управление реестром

- `add(type: AiDocTypeItem): void` — (Статический) Регистрирует новый тип документации, добавляя его в начало приоритетного списка.

## Типы

### AiDocTypeItem
Конфигурация для обработчика типа документации.
- `check: (item: GitFileItem) => boolean` — функция определения применимости обработчика к файлу.
- `item: new (path: string, item: GitFileItem) => AiDocItemAbstract` — конструктор класса обработчика.

### GitFileItem
Представляет информацию о файле, управляемом Git.
- `path: string` — относительный путь к файлу.
- `pathByOS: string` — абсолютный путь, специфичный для ОС.
- `date: string` — дата последнего изменения.
- `item: any` — зарезервировано для дополнительных метаданных.
