@unifast/core

Определения типов TypeScript, утилиты HAST и классы ошибок, общие для рантайм-пакетов unifast

Обзор

@unifast/core предоставляет общие определения типов TypeScript для параметров и результатов компиляции, узлов HAST (HTML Abstract Syntax Tree), интерфейса плагинов и классов ошибок. Он является зависимостью рантайм-пакетов вроде @unifast/node — обычно не нужно устанавливать его напрямую.

Для самого компилятора и встроенных плагинов используйте @unifast/node.

Установка

Определения типов

CompileOptions

Конфигурация функции compile().

СвойствоТипПо умолчаниюОписание
inputKind"md" | "mdx""md"Формат входных данных
outputKind"html" | "hast" | "mdast" | "mdxJs""html"Формат вывода
gfmobject-Настройки GitHub Flavored Markdown
gfm.tablesboolean-Включить таблицы GFM
gfm.taskListboolean-Включить чекбоксы списков задач
gfm.strikethroughboolean-Включить ~~зачёркивание~~
gfm.footnotesboolean-Включить сноски
gfm.autolinkboolean-Включить автосвязывание URL
frontmatterobject-Настройки парсинга frontmatter
frontmatter.yamlboolean-Парсить YAML frontmatter
frontmatter.tomlboolean-Парсить TOML frontmatter
frontmatter.jsonboolean-Парсить JSON frontmatter
rawHtml"disallow" | "allowDangerous" | "parseAndSanitize"-Как обрабатывать сырой HTML в источнике
sanitizeobject-Настройки санитизации HTML
sanitize.enabledboolean-Включить санитизацию
sanitize.schemaSanitizeSchema-Пользовательские правила санитизации
highlightobject-Настройки подсветки синтаксиса
highlight.enabledboolean-Включить подсветку синтаксиса
highlight.engine"none" | "syntect" | "treeSitter"-Движок подсветки
slugobject-Настройки генерации слагов заголовков
slug.mode"github" | "unicode"-Алгоритм генерации слагов
tocobject-Настройки оглавления
toc.enabledboolean-Включить извлечение TOC
toc.maxDepthnumber-Максимальная глубина заголовков для включения
diagnosticsobject-Настройки диагностики
diagnostics.format"compact" | "verbose"-Формат диагностики
cacheobject-Настройки кэширования
cache.enabledboolean-Включить кэширование результатов
cache.dirstring-Путь к каталогу кэша
pluginsUnifastPlugin[][]Массив применяемых плагинов

CompileResult

Возвращается функцией compile().

СвойствоТипОписание
outputstring | objectСкомпилированный вывод (строка HTML, HAST JSON или MDAST JSON в зависимости от outputKind)
frontmatterRecord<string, unknown>Распарсенные метаданные frontmatter
diagnosticsDiagnostic[]Массив предупреждений и ошибок
stats{ parseMs, transformMs, emitMs }Разбивка времени в миллисекундах
tocTocEntry[]Извлечённые элементы оглавления

Diagnostic

СвойствоТипОписание
level"error" | "warn"Уровень серьёзности
messagestringЧеловекочитаемое сообщение
startnumber | undefinedНачальное байтовое смещение в источнике
endnumber | undefinedКонечное байтовое смещение в источнике
linenumber | undefinedНомер строки (начиная с 1)
columnnumber | undefinedНомер колонки (начиная с 1)

TocEntry

Отдельный заголовок, извлечённый для оглавления.

СвойствоТипОписание
depthnumberУровень заголовка (1–6)
textstringПростое текстовое содержимое заголовка
slugstringСгенерированный слаг для якорной ссылки

SanitizeSchema

Пользовательские правила санитизации.

СвойствоТипОписание
allowedTagsstring[]Разрешённые HTML-теги
allowedAttributesRecord<string, string[]>Разрешённые атрибуты для каждого тега
allowedProtocolsRecord<string, string[]>Разрешённые протоколы URL для каждого атрибута

UnifastPlugin

Интерфейс плагина для расширения unifast.

СвойствоТипОписание
namestringУникальное имя плагина
options?Partial<CompileOptions>Параметры для слияния с параметрами компиляции
hastTransform?(hast: HastRoot) => HastRootПреобразование HAST-дерева после компиляции

Типы узлов HAST

ТипПоле typeСвойстваОписание
HastRoot"root"children: HastNode[]Корневой узел дерева
HastElement"element"tagName, properties, childrenHTML-элемент
HastText"text"value: stringТекстовый узел
HastRaw"raw"value: stringПередача сырого HTML
HastComment"comment"value: stringHTML-комментарий
HastDoctype"doctype"-Узел <!DOCTYPE html>

HastNode — тип-объединение: HastRoot | HastElement | HastText | HastRaw | HastComment | HastDoctype

Классы ошибок

КлассНаследуетСвойстваОписание
UnifastErrorErrorcode?: string, span?: { start, end }Базовый класс ошибок для всех ошибок unifast
ParseErrorUnifastErrorcode: "PARSE_ERROR"Бросается, когда входные данные Markdown/MDX не удаётся распарсить
CompileErrorUnifastErrorcode: "COMPILE_ERROR"Бросается, когда компиляция завершается неудачей после парсинга
import { UnifastError, ParseError, CompileError } from "@unifast/core";

try {
  // ... compile something
} catch (err) {
  if (err instanceof ParseError) {
    console.error(`Parse error at ${err.span?.start}: ${err.message}`);
  } else if (err instanceof CompileError) {
    console.error(`Compile error: ${err.message}`);
  }
}

Сводка экспортов

ЭкспортВидОписание
CompileOptionsтипКонфигурация компиляции
CompileResultтипРезультат компиляции
TocEntryтипЭлемент оглавления
SanitizeSchemaтипПравила санитизации
UnifastPluginтипИнтерфейс плагина
HastNodeтипОбъединение всех типов узлов HAST
HastRootтипКорневой узел HAST
HastElementтипУзел-элемент HAST
HastTextтипТекстовый узел HAST
HastRawтипУзел сырого HTML в HAST
HastCommentтипУзел-комментарий HAST
HastDoctypeтипУзел doctype HAST
hastToHtmlфункцияСериализатор HAST в HTML
escapeHtmlфункцияЭкранирование специальных HTML-символов (&, <, >, ")
extractLangфункцияИзвлечение идентификатора языка из HAST-элемента <code>
extractTextфункцияИзвлечение простого текста из HAST-узла
findCodeChildфункцияПоиск дочернего элемента <code> внутри элемента <pre>
visitHastфункцияУтилита обхода HAST-деревьев по шаблону «visitor»
UnifastErrorклассБазовый класс ошибок
ParseErrorклассКласс ошибок парсинга
CompileErrorклассКласс ошибок компиляции