@unifast/core

Definizioni di tipi TypeScript, utility HAST e classi di errore condivise tra i pacchetti runtime di unifast

Panoramica

@unifast/core fornisce definizioni di tipi TypeScript condivise per le opzioni di compilazione, i risultati, i nodi HAST (HTML Abstract Syntax Tree), l’interfaccia dei plugin e le classi di errore. È una dipendenza dei pacchetti runtime come @unifast/node: in genere non è necessario installarlo direttamente.

Per il compilatore e i plugin integrati, usa @unifast/node.

Installazione

Definizioni dei tipi

CompileOptions

Configurazione per la funzione compile().

ProprietàTipoPredefinitoDescrizione
inputKind"md" | "mdx""md"Formato di input
outputKind"html" | "hast" | "mdast" | "mdxJs""html"Formato di output
gfmobject-Impostazioni GitHub Flavored Markdown
gfm.tablesboolean-Abilita le tabelle GFM
gfm.taskListboolean-Abilita le checkbox degli elenchi di attività
gfm.strikethroughboolean-Abilita ~~strikethrough~~
gfm.footnotesboolean-Abilita le note a piè di pagina
gfm.autolinkboolean-Abilita la creazione automatica di link dagli URL
frontmatterobject-Impostazioni di parsing del frontmatter
frontmatter.yamlboolean-Analizza il frontmatter YAML
frontmatter.tomlboolean-Analizza il frontmatter TOML
frontmatter.jsonboolean-Analizza il frontmatter JSON
rawHtml"disallow" | "allowDangerous" | "parseAndSanitize"-Come gestire l’HTML raw nel sorgente
sanitizeobject-Impostazioni di sanitizzazione HTML
sanitize.enabledboolean-Abilita la sanitizzazione
sanitize.schemaSanitizeSchema-Regole di sanitizzazione personalizzate
highlightobject-Impostazioni di evidenziazione della sintassi
highlight.enabledboolean-Abilita l’evidenziazione della sintassi
highlight.engine"none" | "syntect" | "treeSitter"-Motore di evidenziazione
slugobject-Impostazioni di generazione degli slug dei titoli
slug.mode"github" | "unicode"-Algoritmo di generazione degli slug
tocobject-Impostazioni della tabella dei contenuti
toc.enabledboolean-Abilita l’estrazione del TOC
toc.maxDepthnumber-Profondità massima dei titoli da includere
diagnosticsobject-Impostazioni di output della diagnostica
diagnostics.format"compact" | "verbose"-Formato della diagnostica
cacheobject-Impostazioni della cache
cache.enabledboolean-Abilita la cache dei risultati
cache.dirstring-Percorso della directory della cache
pluginsUnifastPlugin[][]Array di plugin da applicare

CompileResult

Restituito dalla funzione compile().

ProprietàTipoDescrizione
outputstring | objectOutput compilato (stringa HTML, JSON HAST o JSON MDAST a seconda di outputKind)
frontmatterRecord<string, unknown>Metadati del frontmatter analizzati
diagnosticsDiagnostic[]Array di avvisi ed errori
stats{ parseMs, transformMs, emitMs }Dettaglio dei tempi in millisecondi
tocTocEntry[]Voci della tabella dei contenuti estratte

Diagnostic

ProprietàTipoDescrizione
level"error" | "warn"Livello di gravità
messagestringMessaggio leggibile
startnumber | undefinedOffset di byte iniziale nel sorgente
endnumber | undefinedOffset di byte finale nel sorgente
linenumber | undefinedNumero di riga (a partire da 1)
columnnumber | undefinedNumero di colonna (a partire da 1)

TocEntry

Un singolo titolo estratto per la tabella dei contenuti.

ProprietàTipoDescrizione
depthnumberLivello del titolo (1-6)
textstringContenuto testuale semplice del titolo
slugstringSlug generato per il link di ancoraggio

SanitizeSchema

Regole di sanitizzazione personalizzate.

ProprietàTipoDescrizione
allowedTagsstring[]Tag HTML da consentire
allowedAttributesRecord<string, string[]>Attributi consentiti per ciascun tag
allowedProtocolsRecord<string, string[]>Protocolli URL consentiti per ciascun attributo

UnifastPlugin

L’interfaccia dei plugin per estendere unifast.

ProprietàTipoDescrizione
namestringNome univoco del plugin
options?Partial<CompileOptions>Opzioni da unire alle opzioni di compilazione
hastTransform?(hast: HastRoot) => HastRootTrasforma l’albero HAST dopo la compilazione

Tipi di nodo HAST

TipoCampo typeProprietàDescrizione
HastRoot"root"children: HastNode[]Nodo radice dell’albero
HastElement"element"tagName, properties, childrenUn elemento HTML
HastText"text"value: stringUn nodo di testo
HastRaw"raw"value: stringPassthrough di HTML raw
HastComment"comment"value: stringUn commento HTML
HastDoctype"doctype"-Un nodo <!DOCTYPE html>

HastNode è il tipo unione: HastRoot | HastElement | HastText | HastRaw | HastComment | HastDoctype

Classi di errore

ClasseEstendeProprietàDescrizione
UnifastErrorErrorcode?: string, span?: { start, end }Classe di errore base per tutti gli errori di unifast
ParseErrorUnifastErrorcode: "PARSE_ERROR"Sollevata quando l’input Markdown/MDX non può essere analizzato
CompileErrorUnifastErrorcode: "COMPILE_ERROR"Sollevata quando la compilazione fallisce dopo il 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}`);
  }
}

Riepilogo degli export

ExportTipoDescrizione
CompileOptionstypeConfigurazione della compilazione
CompileResulttypeRisultato della compilazione
TocEntrytypeVoce della tabella dei contenuti
SanitizeSchematypeRegole di sanitizzazione
UnifastPlugintypeInterfaccia dei plugin
HastNodetypeUnione di tutti i tipi di nodi HAST
HastRoottypeNodo radice HAST
HastElementtypeNodo elemento HAST
HastTexttypeNodo di testo HAST
HastRawtypeNodo HTML raw HAST
HastCommenttypeNodo di commento HAST
HastDoctypetypeNodo doctype HAST
hastToHtmlfunctionSerializzatore da HAST a HTML
escapeHtmlfunctionEsegue l’escape dei caratteri speciali HTML (&, <, >, ")
extractLangfunctionEstrae l’identificatore del linguaggio da un elemento <code> HAST
extractTextfunctionEstrae il contenuto testuale semplice da un nodo HAST
findCodeChildfunctionTrova l’elemento figlio <code> all’interno di un elemento <pre>
visitHastfunctionUtility con pattern visitor per attraversare gli alberi HAST
UnifastErrorclassClasse di errore base
ParseErrorclassClasse di errore di parsing
CompileErrorclassClasse di errore di compilazione