@unifast/core

Definições de tipos TypeScript, utilitários HAST e classes de erro compartilhadas entre os pacotes de runtime do unifast

Visão Geral

O @unifast/core fornece definições de tipos TypeScript compartilhadas para opções de compilação, resultados, nós HAST (HTML Abstract Syntax Tree), a interface de plugin e classes de erro. Ele é uma dependência de pacotes de runtime como o @unifast/node — você normalmente não precisa instalá-lo diretamente.

Para o compilador e os plugins integrados, use @unifast/node.

Instalação

Definições de Tipos

CompileOptions

Configuração para a função compile().

PropriedadeTipoPadrãoDescrição
inputKind"md" | "mdx""md"Formato de entrada
outputKind"html" | "hast" | "mdast" | "mdxJs""html"Formato de saída
gfmobject-Configurações do GitHub Flavored Markdown
gfm.tablesboolean-Habilita tabelas GFM
gfm.taskListboolean-Habilita checkboxes de task list
gfm.strikethroughboolean-Habilita ~~strikethrough~~
gfm.footnotesboolean-Habilita footnotes
gfm.autolinkboolean-Habilita auto-linking de URLs
frontmatterobject-Configurações de parsing de frontmatter
frontmatter.yamlboolean-Faz parse de frontmatter YAML
frontmatter.tomlboolean-Faz parse de frontmatter TOML
frontmatter.jsonboolean-Faz parse de frontmatter JSON
rawHtml"disallow" | "allowDangerous" | "parseAndSanitize"-Como tratar HTML bruto na fonte
sanitizeobject-Configurações de sanitização de HTML
sanitize.enabledboolean-Habilita sanitização
sanitize.schemaSanitizeSchema-Regras de sanitização customizadas
highlightobject-Configurações de syntax highlighting
highlight.enabledboolean-Habilita syntax highlighting
highlight.engine"none" | "syntect" | "treeSitter"-Engine de highlighting
slugobject-Configurações de geração de slug de heading
slug.mode"github" | "unicode"-Algoritmo de geração de slug
tocobject-Configurações de table of contents
toc.enabledboolean-Habilita extração de TOC
toc.maxDepthnumber-Profundidade máxima de heading a incluir
diagnosticsobject-Configurações de saída de diagnóstico
diagnostics.format"compact" | "verbose"-Formato de diagnóstico
cacheobject-Configurações de cache
cache.enabledboolean-Habilita cache de resultados
cache.dirstring-Caminho do diretório de cache
pluginsUnifastPlugin[][]Array de plugins a aplicar

CompileResult

Retornado pela função compile().

PropriedadeTipoDescrição
outputstring | objectSaída compilada (string HTML, JSON HAST ou JSON MDAST dependendo de outputKind)
frontmatterRecord<string, unknown>Metadados de frontmatter parseados
diagnosticsDiagnostic[]Array de avisos e erros
stats{ parseMs, transformMs, emitMs }Detalhamento de tempo em milissegundos
tocTocEntry[]Entradas extraídas da table of contents

Diagnostic

PropriedadeTipoDescrição
level"error" | "warn"Nível de severidade
messagestringMensagem legível por humanos
startnumber | undefinedOffset de byte inicial na fonte
endnumber | undefinedOffset de byte final na fonte
linenumber | undefinedNúmero da linha (começando em 1)
columnnumber | undefinedNúmero da coluna (começando em 1)

TocEntry

Um único heading extraído para a table of contents.

PropriedadeTipoDescrição
depthnumberNível do heading (1-6)
textstringConteúdo de texto puro do heading
slugstringSlug gerado para vinculação por âncora

SanitizeSchema

Regras de sanitização customizadas.

PropriedadeTipoDescrição
allowedTagsstring[]Tags HTML permitidas
allowedAttributesRecord<string, string[]>Atributos permitidos por tag
allowedProtocolsRecord<string, string[]>Protocolos de URL permitidos por atributo

UnifastPlugin

A interface de plugin para estender o unifast.

PropriedadeTipoDescrição
namestringNome único do plugin
options?Partial<CompileOptions>Opções a mesclar nas opções de compilação
hastTransform?(hast: HastRoot) => HastRootTransforma a árvore HAST após a compilação

Tipos de Nós HAST

TipoCampo typePropriedadesDescrição
HastRoot"root"children: HastNode[]Nó raiz da árvore
HastElement"element"tagName, properties, childrenUm elemento HTML
HastText"text"value: stringUm nó de texto
HastRaw"raw"value: stringPassthrough de HTML bruto
HastComment"comment"value: stringUm comentário HTML
HastDoctype"doctype"-Um nó <!DOCTYPE html>

HastNode é o tipo união: HastRoot | HastElement | HastText | HastRaw | HastComment | HastDoctype

Classes de Erro

ClasseEstendePropriedadesDescrição
UnifastErrorErrorcode?: string, span?: { start, end }Classe base de erro para todos os erros do unifast
ParseErrorUnifastErrorcode: "PARSE_ERROR"Lançado quando a entrada Markdown/MDX não pode ser parseada
CompileErrorUnifastErrorcode: "COMPILE_ERROR"Lançado quando a compilação falha após o parsing
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}`);
  }
}

Resumo de Exports

ExportTipoDescrição
CompileOptionstypeConfiguração de compilação
CompileResulttypeResultado da compilação
TocEntrytypeEntrada da table of contents
SanitizeSchematypeRegras de sanitização
UnifastPlugintypeInterface de plugin
HastNodetypeUnião de todos os tipos de nós HAST
HastRoottypeNó raiz HAST
HastElementtypeNó de elemento HAST
HastTexttypeNó de texto HAST
HastRawtypeNó de HTML bruto HAST
HastCommenttypeNó de comentário HAST
HastDoctypetypeNó de doctype HAST
hastToHtmlfunctionSerializador de HAST para HTML
escapeHtmlfunctionEscapa caracteres especiais HTML (&, <, >, ")
extractLangfunctionExtrai identificador de linguagem de um elemento HAST <code>
extractTextfunctionExtrai conteúdo de texto puro de um nó HAST
findCodeChildfunctionEncontra o elemento filho <code> dentro de um elemento <pre>
visitHastfunctionUtilitário de padrão visitor para percorrer árvores HAST
UnifastErrorclassClasse base de erro
ParseErrorclassClasse de erro de parse
CompileErrorclassClasse de erro de compilação