{
  "url": "https://unifast.dev/ru/docs/packages/core/overview/",
  "locale": "ru",
  "title": "@unifast/core",
  "description": "Определения типов TypeScript, утилиты HAST и классы ошибок, общие для рантайм-пакетов unifast",
  "section": "packages",
  "body": "## Обзор\n\n`@unifast/core` предоставляет общие определения типов TypeScript для параметров и результатов компиляции, узлов HAST (HTML Abstract Syntax Tree), интерфейса плагинов и классов ошибок. Он является зависимостью рантайм-пакетов вроде `@unifast/node` — обычно **не нужно** устанавливать его напрямую.\n\nДля самого компилятора и встроенных плагинов используйте [`@unifast/node`](/docs/packages/node/overview).\n\n## Установка\n\n## Определения типов\n\n### CompileOptions\n\nКонфигурация функции `compile()`.\n\n| Свойство | Тип | По умолчанию | Описание |\n|----------|------|---------|-------------|\n| `inputKind` | `\"md\" \\| \"mdx\"` | `\"md\"` | Формат входных данных |\n| `outputKind` | `\"html\" \\| \"hast\" \\| \"mdast\" \\| \"mdxJs\"` | `\"html\"` | Формат вывода |\n| `gfm` | `object` | - | Настройки GitHub Flavored Markdown |\n| `gfm.tables` | `boolean` | - | Включить таблицы GFM |\n| `gfm.taskList` | `boolean` | - | Включить чекбоксы списков задач |\n| `gfm.strikethrough` | `boolean` | - | Включить `~~зачёркивание~~` |\n| `gfm.footnotes` | `boolean` | - | Включить сноски |\n| `gfm.autolink` | `boolean` | - | Включить автосвязывание URL |\n| `frontmatter` | `object` | - | Настройки парсинга frontmatter |\n| `frontmatter.yaml` | `boolean` | - | Парсить YAML frontmatter |\n| `frontmatter.toml` | `boolean` | - | Парсить TOML frontmatter |\n| `frontmatter.json` | `boolean` | - | Парсить JSON frontmatter |\n| `rawHtml` | `\"disallow\" \\| \"allowDangerous\" \\| \"parseAndSanitize\"` | - | Как обрабатывать сырой HTML в источнике |\n| `sanitize` | `object` | - | Настройки санитизации HTML |\n| `sanitize.enabled` | `boolean` | - | Включить санитизацию |\n| `sanitize.schema` | `SanitizeSchema` | - | Пользовательские правила санитизации |\n| `highlight` | `object` | - | Настройки подсветки синтаксиса |\n| `highlight.enabled` | `boolean` | - | Включить подсветку синтаксиса |\n| `highlight.engine` | `\"none\" \\| \"syntect\" \\| \"treeSitter\"` | - | Движок подсветки |\n| `slug` | `object` | - | Настройки генерации слагов заголовков |\n| `slug.mode` | `\"github\" \\| \"unicode\"` | - | Алгоритм генерации слагов |\n| `toc` | `object` | - | Настройки оглавления |\n| `toc.enabled` | `boolean` | - | Включить извлечение TOC |\n| `toc.maxDepth` | `number` | - | Максимальная глубина заголовков для включения |\n| `diagnostics` | `object` | - | Настройки диагностики |\n| `diagnostics.format` | `\"compact\" \\| \"verbose\"` | - | Формат диагностики |\n| `cache` | `object` | - | Настройки кэширования |\n| `cache.enabled` | `boolean` | - | Включить кэширование результатов |\n| `cache.dir` | `string` | - | Путь к каталогу кэша |\n| `plugins` | `UnifastPlugin[]` | `[]` | Массив применяемых плагинов |\n\n### CompileResult\n\nВозвращается функцией `compile()`.\n\n| Свойство | Тип | Описание |\n|----------|------|-------------|\n| `output` | `string \\| object` | Скомпилированный вывод (строка HTML, HAST JSON или MDAST JSON в зависимости от `outputKind`) |\n| `frontmatter` | `Record<string, unknown>` | Распарсенные метаданные frontmatter |\n| `diagnostics` | `Diagnostic[]` | Массив предупреждений и ошибок |\n| `stats` | `{ parseMs, transformMs, emitMs }` | Разбивка времени в миллисекундах |\n| `toc` | `TocEntry[]` | Извлечённые элементы оглавления |\n\n### Diagnostic\n\n| Свойство | Тип | Описание |\n|----------|------|-------------|\n| `level` | `\"error\" \\| \"warn\"` | Уровень серьёзности |\n| `message` | `string` | Человекочитаемое сообщение |\n| `start` | `number \\| undefined` | Начальное байтовое смещение в источнике |\n| `end` | `number \\| undefined` | Конечное байтовое смещение в источнике |\n| `line` | `number \\| undefined` | Номер строки (начиная с 1) |\n| `column` | `number \\| undefined` | Номер колонки (начиная с 1) |\n\n### TocEntry\n\nОтдельный заголовок, извлечённый для оглавления.\n\n| Свойство | Тип | Описание |\n|----------|------|-------------|\n| `depth` | `number` | Уровень заголовка (1–6) |\n| `text` | `string` | Простое текстовое содержимое заголовка |\n| `slug` | `string` | Сгенерированный слаг для якорной ссылки |\n\n### SanitizeSchema\n\nПользовательские правила санитизации.\n\n| Свойство | Тип | Описание |\n|----------|------|-------------|\n| `allowedTags` | `string[]` | Разрешённые HTML-теги |\n| `allowedAttributes` | `Record<string, string[]>` | Разрешённые атрибуты для каждого тега |\n| `allowedProtocols` | `Record<string, string[]>` | Разрешённые протоколы URL для каждого атрибута |\n\n### UnifastPlugin\n\nИнтерфейс плагина для расширения unifast.\n\n| Свойство | Тип | Описание |\n|----------|------|-------------|\n| `name` | `string` | Уникальное имя плагина |\n| `options?` | `Partial<CompileOptions>` | Параметры для слияния с параметрами компиляции |\n| `hastTransform?` | `(hast: HastRoot) => HastRoot` | Преобразование HAST-дерева после компиляции |\n\n### Типы узлов HAST\n\n| Тип | Поле `type` | Свойства | Описание |\n|------|-------------|------------|-------------|\n| `HastRoot` | `\"root\"` | `children: HastNode[]` | Корневой узел дерева |\n| `HastElement` | `\"element\"` | `tagName`, `properties`, `children` | HTML-элемент |\n| `HastText` | `\"text\"` | `value: string` | Текстовый узел |\n| `HastRaw` | `\"raw\"` | `value: string` | Передача сырого HTML |\n| `HastComment` | `\"comment\"` | `value: string` | HTML-комментарий |\n| `HastDoctype` | `\"doctype\"` | - | Узел `<!DOCTYPE html>` |\n\n`HastNode` — тип-объединение: `HastRoot | HastElement | HastText | HastRaw | HastComment | HastDoctype`\n\n## Классы ошибок\n\n| Класс | Наследует | Свойства | Описание |\n|-------|---------|------------|-------------|\n| `UnifastError` | `Error` | `code?: string`, `span?: { start, end }` | Базовый класс ошибок для всех ошибок unifast |\n| `ParseError` | `UnifastError` | `code: \"PARSE_ERROR\"` | Бросается, когда входные данные Markdown/MDX не удаётся распарсить |\n| `CompileError` | `UnifastError` | `code: \"COMPILE_ERROR\"` | Бросается, когда компиляция завершается неудачей после парсинга |\n\n```ts\n\ntry {\n  // ... compile something\n} catch (err) {\n  if (err instanceof ParseError) {\n    console.error(`Parse error at ${err.span?.start}: ${err.message}`);\n  } else if (err instanceof CompileError) {\n    console.error(`Compile error: ${err.message}`);\n  }\n}\n```\n\n## Сводка экспортов\n\n| Экспорт | Вид | Описание |\n|--------|------|-------------|\n| `CompileOptions` | тип | Конфигурация компиляции |\n| `CompileResult` | тип | Результат компиляции |\n| `TocEntry` | тип | Элемент оглавления |\n| `SanitizeSchema` | тип | Правила санитизации |\n| `UnifastPlugin` | тип | Интерфейс плагина |\n| `HastNode` | тип | Объединение всех типов узлов HAST |\n| `HastRoot` | тип | Корневой узел HAST |\n| `HastElement` | тип | Узел-элемент HAST |\n| `HastText` | тип | Текстовый узел HAST |\n| `HastRaw` | тип | Узел сырого HTML в HAST |\n| `HastComment` | тип | Узел-комментарий HAST |\n| `HastDoctype` | тип | Узел doctype HAST |\n| `hastToHtml` | функция | Сериализатор HAST в HTML |\n| `escapeHtml` | функция | Экранирование специальных HTML-символов (`&`, `<`, `>`, `\"`) |\n| `extractLang` | функция | Извлечение идентификатора языка из HAST-элемента `<code>` |\n| `extractText` | функция | Извлечение простого текста из HAST-узла |\n| `findCodeChild` | функция | Поиск дочернего элемента `<code>` внутри элемента `<pre>` |\n| `visitHast` | функция | Утилита обхода HAST-деревьев по шаблону «visitor» |\n| `UnifastError` | класс | Базовый класс ошибок |\n| `ParseError` | класс | Класс ошибок парсинга |\n| `CompileError` | класс | Класс ошибок компиляции |",
  "alternates": [
    {
      "locale": "en",
      "url": "https://unifast.dev/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/docs/packages/core/overview.json"
    },
    {
      "locale": "ja",
      "url": "https://unifast.dev/ja/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/ja/docs/packages/core/overview.json"
    },
    {
      "locale": "zh-CN",
      "url": "https://unifast.dev/zh-CN/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/zh-CN/docs/packages/core/overview.json"
    },
    {
      "locale": "zh-TW",
      "url": "https://unifast.dev/zh-TW/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/zh-TW/docs/packages/core/overview.json"
    },
    {
      "locale": "ko",
      "url": "https://unifast.dev/ko/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/ko/docs/packages/core/overview.json"
    },
    {
      "locale": "fr",
      "url": "https://unifast.dev/fr/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/fr/docs/packages/core/overview.json"
    },
    {
      "locale": "it",
      "url": "https://unifast.dev/it/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/it/docs/packages/core/overview.json"
    },
    {
      "locale": "es",
      "url": "https://unifast.dev/es/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/es/docs/packages/core/overview.json"
    },
    {
      "locale": "pt-BR",
      "url": "https://unifast.dev/pt-BR/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/pt-BR/docs/packages/core/overview.json"
    },
    {
      "locale": "de",
      "url": "https://unifast.dev/de/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/de/docs/packages/core/overview.json"
    },
    {
      "locale": "ru",
      "url": "https://unifast.dev/ru/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/ru/docs/packages/core/overview.json"
    },
    {
      "locale": "hi",
      "url": "https://unifast.dev/hi/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/hi/docs/packages/core/overview.json"
    },
    {
      "locale": "id",
      "url": "https://unifast.dev/id/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/id/docs/packages/core/overview.json"
    },
    {
      "locale": "tr",
      "url": "https://unifast.dev/tr/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/tr/docs/packages/core/overview.json"
    },
    {
      "locale": "vi",
      "url": "https://unifast.dev/vi/docs/packages/core/overview/",
      "api": "https://unifast.dev//api/vi/docs/packages/core/overview.json"
    }
  ]
}
