@unifast/core

Definisi tipe TypeScript, utilitas HAST, dan kelas error yang dibagikan di seluruh paket runtime unifast

Ikhtisar

@unifast/core menyediakan definisi tipe TypeScript bersama untuk opsi compile, hasil, node HAST (HTML Abstract Syntax Tree), antarmuka plugin, dan kelas error. Paket ini merupakan dependensi dari paket runtime seperti @unifast/node — Anda biasanya tidak perlu menginstalnya secara langsung.

Untuk compiler dan plugin bawaan, gunakan @unifast/node.

Instalasi

Definisi Tipe

CompileOptions

Konfigurasi untuk fungsi compile().

PropertiTipeDefaultDeskripsi
inputKind"md" | "mdx""md"Format input
outputKind"html" | "hast" | "mdast" | "mdxJs""html"Format output
gfmobject-Pengaturan GitHub Flavored Markdown
gfm.tablesboolean-Mengaktifkan tabel GFM
gfm.taskListboolean-Mengaktifkan checkbox task list
gfm.strikethroughboolean-Mengaktifkan ~~strikethrough~~
gfm.footnotesboolean-Mengaktifkan footnote
gfm.autolinkboolean-Mengaktifkan auto-linking URL
frontmatterobject-Pengaturan parsing frontmatter
frontmatter.yamlboolean-Mem-parse frontmatter YAML
frontmatter.tomlboolean-Mem-parse frontmatter TOML
frontmatter.jsonboolean-Mem-parse frontmatter JSON
rawHtml"disallow" | "allowDangerous" | "parseAndSanitize"-Cara menangani HTML mentah di sumber
sanitizeobject-Pengaturan sanitasi HTML
sanitize.enabledboolean-Mengaktifkan sanitasi
sanitize.schemaSanitizeSchema-Aturan sanitasi kustom
highlightobject-Pengaturan syntax highlighting
highlight.enabledboolean-Mengaktifkan syntax highlighting
highlight.engine"none" | "syntect" | "treeSitter"-Engine highlighting
slugobject-Pengaturan generasi slug heading
slug.mode"github" | "unicode"-Algoritma generasi slug
tocobject-Pengaturan daftar isi
toc.enabledboolean-Mengaktifkan ekstraksi TOC
toc.maxDepthnumber-Kedalaman heading maksimum yang disertakan
diagnosticsobject-Pengaturan output diagnostic
diagnostics.format"compact" | "verbose"-Format diagnostic
cacheobject-Pengaturan caching
cache.enabledboolean-Mengaktifkan caching hasil
cache.dirstring-Path direktori cache
pluginsUnifastPlugin[][]Array plugin yang akan diterapkan

CompileResult

Dikembalikan oleh fungsi compile().

PropertiTipeDeskripsi
outputstring | objectOutput kompilasi (string HTML, JSON HAST, atau JSON MDAST tergantung pada outputKind)
frontmatterRecord<string, unknown>Metadata frontmatter yang sudah di-parse
diagnosticsDiagnostic[]Array peringatan dan error
stats{ parseMs, transformMs, emitMs }Rincian timing dalam milidetik
tocTocEntry[]Entri daftar isi yang diekstrak

Diagnostic

PropertiTipeDeskripsi
level"error" | "warn"Tingkat severity
messagestringPesan yang dapat dibaca manusia
startnumber | undefinedOffset byte awal di sumber
endnumber | undefinedOffset byte akhir di sumber
linenumber | undefinedNomor baris (berbasis 1)
columnnumber | undefinedNomor kolom (berbasis 1)

TocEntry

Sebuah heading tunggal yang diekstrak untuk daftar isi.

PropertiTipeDeskripsi
depthnumberLevel heading (1-6)
textstringKonten teks polos dari heading
slugstringSlug yang dihasilkan untuk anchor link

SanitizeSchema

Aturan sanitasi kustom.

PropertiTipeDeskripsi
allowedTagsstring[]Tag HTML yang diizinkan
allowedAttributesRecord<string, string[]>Atribut yang diizinkan per tag
allowedProtocolsRecord<string, string[]>Protokol URL yang diizinkan per atribut

UnifastPlugin

Antarmuka plugin untuk memperluas unifast.

PropertiTipeDeskripsi
namestringNama plugin yang unik
options?Partial<CompileOptions>Opsi yang akan digabungkan ke opsi compile
hastTransform?(hast: HastRoot) => HastRootMentransformasi pohon HAST setelah kompilasi

Tipe Node HAST

TipeField typePropertiDeskripsi
HastRoot"root"children: HastNode[]Node root dari pohon
HastElement"element"tagName, properties, childrenSebuah elemen HTML
HastText"text"value: stringSebuah text node
HastRaw"raw"value: stringPassthrough HTML mentah
HastComment"comment"value: stringSebuah komentar HTML
HastDoctype"doctype"-Sebuah node <!DOCTYPE html>

HastNode adalah union type: HastRoot | HastElement | HastText | HastRaw | HastComment | HastDoctype

Kelas Error

KelasMewarisiPropertiDeskripsi
UnifastErrorErrorcode?: string, span?: { start, end }Kelas error dasar untuk semua error unifast
ParseErrorUnifastErrorcode: "PARSE_ERROR"Dilempar ketika input Markdown/MDX tidak dapat di-parse
CompileErrorUnifastErrorcode: "COMPILE_ERROR"Dilempar ketika kompilasi gagal setelah 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}`);
  }
}

Ringkasan Export

ExportJenisDeskripsi
CompileOptionstypeKonfigurasi kompilasi
CompileResulttypeHasil kompilasi
TocEntrytypeEntri daftar isi
SanitizeSchematypeAturan sanitasi
UnifastPlugintypeAntarmuka plugin
HastNodetypeUnion dari semua tipe node HAST
HastRoottypeNode root HAST
HastElementtypeNode elemen HAST
HastTexttypeNode teks HAST
HastRawtypeNode HTML mentah HAST
HastCommenttypeNode komentar HAST
HastDoctypetypeNode doctype HAST
hastToHtmlfunctionSerializer HAST-ke-HTML
escapeHtmlfunctionEscape karakter spesial HTML (&, <, >, ")
extractLangfunctionMengekstrak identifier bahasa dari elemen <code> HAST
extractTextfunctionMengekstrak konten teks polos dari node HAST
findCodeChildfunctionMenemukan elemen anak <code> di dalam elemen <pre>
visitHastfunctionUtilitas visitor pattern untuk berjalan di pohon HAST
UnifastErrorclassKelas error dasar
ParseErrorclassKelas error parse
CompileErrorclassKelas error compile