@unifast/core

Définitions de types TypeScript, utilitaires HAST et classes d'erreurs partagés par les paquets runtime d'unifast

Vue d’ensemble

@unifast/core fournit les définitions de types TypeScript partagées pour les options de compilation, les résultats, les nœuds HAST (HTML Abstract Syntax Tree), l’interface des plugins ainsi que les classes d’erreurs. C’est une dépendance des paquets runtime tels que @unifast/node — vous n’avez généralement pas besoin de l’installer directement.

Pour le compilateur et les plugins intégrés, utilisez @unifast/node.

Installation

Définitions de types

CompileOptions

Configuration pour la fonction compile().

PropriétéTypeDéfautDescription
inputKind"md" | "mdx""md"Format d’entrée
outputKind"html" | "hast" | "mdast" | "mdxJs""html"Format de sortie
gfmobject-Paramètres GitHub Flavored Markdown
gfm.tablesboolean-Activer les tableaux GFM
gfm.taskListboolean-Activer les cases à cocher de liste de tâches
gfm.strikethroughboolean-Activer le ~~texte barré~~
gfm.footnotesboolean-Activer les notes de bas de page
gfm.autolinkboolean-Activer la création automatique de liens à partir d’URL
frontmatterobject-Paramètres d’analyse du frontmatter
frontmatter.yamlboolean-Analyser le frontmatter YAML
frontmatter.tomlboolean-Analyser le frontmatter TOML
frontmatter.jsonboolean-Analyser le frontmatter JSON
rawHtml"disallow" | "allowDangerous" | "parseAndSanitize"-Mode de traitement du HTML brut dans la source
sanitizeobject-Paramètres d’assainissement HTML
sanitize.enabledboolean-Activer l’assainissement
sanitize.schemaSanitizeSchema-Règles d’assainissement personnalisées
highlightobject-Paramètres de coloration syntaxique
highlight.enabledboolean-Activer la coloration syntaxique
highlight.engine"none" | "syntect" | "treeSitter"-Moteur de coloration
slugobject-Paramètres de génération de slugs de titres
slug.mode"github" | "unicode"-Algorithme de génération de slug
tocobject-Paramètres de table des matières
toc.enabledboolean-Activer l’extraction de la TOC
toc.maxDepthnumber-Profondeur maximale des titres à inclure
diagnosticsobject-Paramètres de sortie des diagnostics
diagnostics.format"compact" | "verbose"-Format des diagnostics
cacheobject-Paramètres de mise en cache
cache.enabledboolean-Activer la mise en cache des résultats
cache.dirstring-Chemin du répertoire de cache
pluginsUnifastPlugin[][]Tableau des plugins à appliquer

CompileResult

Valeur retournée par la fonction compile().

PropriétéTypeDescription
outputstring | objectSortie compilée (chaîne HTML, JSON HAST ou JSON MDAST selon outputKind)
frontmatterRecord<string, unknown>Métadonnées frontmatter analysées
diagnosticsDiagnostic[]Tableau des avertissements et erreurs
stats{ parseMs, transformMs, emitMs }Détail du temps passé, en millisecondes
tocTocEntry[]Entrées de la table des matières extraites

Diagnostic

PropriétéTypeDescription
level"error" | "warn"Niveau de gravité
messagestringMessage lisible
startnumber | undefinedDécalage d’octet de début dans la source
endnumber | undefinedDécalage d’octet de fin dans la source
linenumber | undefinedNuméro de ligne (commençant à 1)
columnnumber | undefinedNuméro de colonne (commençant à 1)

TocEntry

Un titre unique extrait pour la table des matières.

PropriétéTypeDescription
depthnumberNiveau de titre (1-6)
textstringContenu textuel brut du titre
slugstringSlug généré pour l’ancre du lien

SanitizeSchema

Règles d’assainissement personnalisées.

PropriétéTypeDescription
allowedTagsstring[]Balises HTML autorisées
allowedAttributesRecord<string, string[]>Attributs autorisés par balise
allowedProtocolsRecord<string, string[]>Protocoles d’URL autorisés par attribut

UnifastPlugin

L’interface de plugin pour étendre unifast.

PropriétéTypeDescription
namestringNom unique du plugin
options?Partial<CompileOptions>Options à fusionner dans les options de compilation
hastTransform?(hast: HastRoot) => HastRootTransforme l’arbre HAST après compilation

Types de nœuds HAST

TypeChamp typePropriétésDescription
HastRoot"root"children: HastNode[]Nœud racine de l’arbre
HastElement"element"tagName, properties, childrenUn élément HTML
HastText"text"value: stringUn nœud texte
HastRaw"raw"value: stringPassage direct de HTML brut
HastComment"comment"value: stringUn commentaire HTML
HastDoctype"doctype"-Un nœud <!DOCTYPE html>

HastNode est le type union : HastRoot | HastElement | HastText | HastRaw | HastComment | HastDoctype

Classes d’erreurs

ClasseÉtendPropriétésDescription
UnifastErrorErrorcode?: string, span?: { start, end }Classe d’erreur de base pour toutes les erreurs unifast
ParseErrorUnifastErrorcode: "PARSE_ERROR"Levée lorsque l’entrée Markdown/MDX ne peut pas être analysée
CompileErrorUnifastErrorcode: "COMPILE_ERROR"Levée lorsque la compilation échoue après l’analyse
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}`);
  }
}

Résumé des exports

ExportNatureDescription
CompileOptionstypeConfiguration de compilation
CompileResulttypeRésultat de compilation
TocEntrytypeEntrée de table des matières
SanitizeSchematypeRègles d’assainissement
UnifastPlugintypeInterface de plugin
HastNodetypeUnion de tous les types de nœuds HAST
HastRoottypeNœud racine HAST
HastElementtypeNœud élément HAST
HastTexttypeNœud texte HAST
HastRawtypeNœud HTML brut HAST
HastCommenttypeNœud commentaire HAST
HastDoctypetypeNœud doctype HAST
hastToHtmlfonctionSérialiseur HAST vers HTML
escapeHtmlfonctionÉchappe les caractères spéciaux HTML (&, <, >, ")
extractLangfonctionExtrait l’identifiant de langage d’un élément <code> HAST
extractTextfonctionExtrait le contenu textuel brut d’un nœud HAST
findCodeChildfonctionTrouve l’élément enfant <code> à l’intérieur d’un élément <pre>
visitHastfonctionUtilitaire de type visiteur pour parcourir les arbres HAST
UnifastErrorclasseClasse d’erreur de base
ParseErrorclasseClasse d’erreur d’analyse
CompileErrorclasseClasse d’erreur de compilation