@unifast/core

Definiciones de tipos TypeScript, utilidades HAST y clases de error compartidas entre los paquetes de runtime de unifast

Visión general

@unifast/core proporciona definiciones de tipos TypeScript compartidas para las opciones y resultados de compilación, los nodos HAST (HTML Abstract Syntax Tree), la interfaz de plugins y las clases de error. Es una dependencia de los paquetes de runtime como @unifast/node; normalmente no necesitas instalarlo directamente.

Para el compilador y los plugins integrados, usa @unifast/node.

Instalación

Definiciones de tipos

CompileOptions

Configuración para la función compile().

PropiedadTipoPor defectoDescripción
inputKind"md" | "mdx""md"Formato de entrada
outputKind"html" | "hast" | "mdast" | "mdxJs""html"Formato de salida
gfmobject-Ajustes de GitHub Flavored Markdown
gfm.tablesboolean-Habilitar tablas GFM
gfm.taskListboolean-Habilitar casillas de listas de tareas
gfm.strikethroughboolean-Habilitar ~~strikethrough~~
gfm.footnotesboolean-Habilitar notas al pie
gfm.autolinkboolean-Habilitar autoenlace de URLs
frontmatterobject-Ajustes de parsing del frontmatter
frontmatter.yamlboolean-Parsear frontmatter YAML
frontmatter.tomlboolean-Parsear frontmatter TOML
frontmatter.jsonboolean-Parsear frontmatter JSON
rawHtml"disallow" | "allowDangerous" | "parseAndSanitize"-Cómo tratar el HTML crudo en la fuente
sanitizeobject-Ajustes de sanitización de HTML
sanitize.enabledboolean-Habilitar la sanitización
sanitize.schemaSanitizeSchema-Reglas de sanitización personalizadas
highlightobject-Ajustes de resaltado de sintaxis
highlight.enabledboolean-Habilitar el resaltado de sintaxis
highlight.engine"none" | "syntect" | "treeSitter"-Motor de resaltado
slugobject-Ajustes de generación de slugs de encabezado
slug.mode"github" | "unicode"-Algoritmo de generación de slugs
tocobject-Ajustes de tabla de contenidos
toc.enabledboolean-Habilitar la extracción de TOC
toc.maxDepthnumber-Profundidad máxima de encabezado a incluir
diagnosticsobject-Ajustes de salida de diagnósticos
diagnostics.format"compact" | "verbose"-Formato de diagnóstico
cacheobject-Ajustes de caché
cache.enabledboolean-Habilitar el caché de resultados
cache.dirstring-Ruta del directorio de caché
pluginsUnifastPlugin[][]Array de plugins a aplicar

CompileResult

Retornado por la función compile().

PropiedadTipoDescripción
outputstring | objectSalida compilada (cadena HTML, JSON HAST o JSON MDAST dependiendo de outputKind)
frontmatterRecord<string, unknown>Metadatos del frontmatter parseados
diagnosticsDiagnostic[]Array de avisos y errores
stats{ parseMs, transformMs, emitMs }Desglose de tiempos en milisegundos
tocTocEntry[]Entradas de la tabla de contenidos extraída

Diagnostic

PropiedadTipoDescripción
level"error" | "warn"Nivel de severidad
messagestringMensaje legible para humanos
startnumber | undefinedDesplazamiento inicial en bytes dentro de la fuente
endnumber | undefinedDesplazamiento final en bytes dentro de la fuente
linenumber | undefinedNúmero de línea (empezando en 1)
columnnumber | undefinedNúmero de columna (empezando en 1)

TocEntry

Un único encabezado extraído para la tabla de contenidos.

PropiedadTipoDescripción
depthnumberNivel del encabezado (1-6)
textstringContenido de texto plano del encabezado
slugstringSlug generado para el enlace de anclaje

SanitizeSchema

Reglas de sanitización personalizadas.

PropiedadTipoDescripción
allowedTagsstring[]Etiquetas HTML permitidas
allowedAttributesRecord<string, string[]>Atributos permitidos por etiqueta
allowedProtocolsRecord<string, string[]>Protocolos de URL permitidos por atributo

UnifastPlugin

La interfaz de plugin para extender unifast.

PropiedadTipoDescripción
namestringNombre único del plugin
options?Partial<CompileOptions>Opciones a combinar con las opciones de compilación
hastTransform?(hast: HastRoot) => HastRootTransforma el árbol HAST después de la compilación

Tipos de nodo HAST

TipoCampo typePropiedadesDescripción
HastRoot"root"children: HastNode[]Nodo raíz del árbol
HastElement"element"tagName, properties, childrenUn elemento HTML
HastText"text"value: stringUn nodo de texto
HastRaw"raw"value: stringHTML crudo sin procesar
HastComment"comment"value: stringUn comentario HTML
HastDoctype"doctype"-Un nodo <!DOCTYPE html>

HastNode es el tipo unión: HastRoot | HastElement | HastText | HastRaw | HastComment | HastDoctype

Clases de error

ClaseExtiendePropiedadesDescripción
UnifastErrorErrorcode?: string, span?: { start, end }Clase de error base para todos los errores de unifast
ParseErrorUnifastErrorcode: "PARSE_ERROR"Se lanza cuando la entrada Markdown/MDX no puede parsearse
CompileErrorUnifastErrorcode: "COMPILE_ERROR"Se lanza cuando la compilación falla después del 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}`);
  }
}

Resumen de exports

ExportTipoDescripción
CompileOptionstypeConfiguración de compilación
CompileResulttypeResultado de compilación
TocEntrytypeEntrada de tabla de contenidos
SanitizeSchematypeReglas de sanitización
UnifastPlugintypeInterfaz de plugin
HastNodetypeUnión de todos los tipos de nodo HAST
HastRoottypeNodo raíz HAST
HastElementtypeNodo de elemento HAST
HastTexttypeNodo de texto HAST
HastRawtypeNodo de HTML crudo HAST
HastCommenttypeNodo de comentario HAST
HastDoctypetypeNodo de doctype HAST
hastToHtmlfunctionSerializador de HAST a HTML
escapeHtmlfunctionEscapa caracteres especiales de HTML (&, <, >, ")
extractLangfunctionExtrae el identificador de lenguaje de un elemento HAST <code>
extractTextfunctionExtrae el contenido de texto plano de un nodo HAST
findCodeChildfunctionEncuentra el elemento hijo <code> dentro de un elemento <pre>
visitHastfunctionUtilidad con patrón visitor para recorrer árboles HAST
UnifastErrorclassClase de error base
ParseErrorclassClase de error de parseo
CompileErrorclassClase de error de compilación