{
  "url": "https://unifast.dev/it/docs/introduction/key-concepts/",
  "locale": "it",
  "title": "Concetti fondamentali",
  "description": "Scopri la pipeline di compilazione multi-fase di unifast, i pass integrati e il funzionamento delle trasformazioni MdAst e HAst.",
  "section": "introduction",
  "body": "unifast compila il Markdown attraverso una pipeline multi-fase. Comprendere queste fasi aiuta a configurare il compilatore e a scegliere i plugin più adatti.\n\n### Pipeline di compilazione\n\n```\nInput text\n  → Parse (Markdown or MDX)\n  → IR0: MdAst (Markdown structure)\n  → Normalize + Built-in MdAst passes\n  → Lower to IR1: HAst (HTML structure)\n  → HAst passes (sanitize, highlight, etc.)\n  → Emit (HTML string)\n```\n\nOgni fase trasforma il documento attraverso una rappresentazione intermedia (IR).\n\n### Rappresentazioni intermedie\n\n| IR | Nome | Scopo |\n|----|------|-------|\n| **IR0** | MdAst | Struttura Markdown - titoli, paragrafi, elenchi, blocchi di codice |\n| **IR1** | HAst | Struttura HTML - elementi, attributi, nodi di testo |\n| **IR2** | JsAst | Solo MDX - import ESM ed espressioni JSX |\n\nIl parser produce **MdAst**, che viene poi ridotto a **HAst** per l'emissione HTML. Gli input MDX producono in aggiunta nodi **JsAst** per l'output JavaScript.\n\n### Pass\n\nI pass sono trasformazioni applicate all'AST in fasi specifiche. unifast include pass integrati per le attività più comuni:\n\n**Pass MdAst** (prima della riduzione a HTML):\n\n- **Normalize** - Struttura coerente per i pass successivi\n- **Slug** - Genera gli ID dei titoli a partire dal testo\n- **TOC** - Estrae la tabella dei contenuti dai titoli\n- **Definition Resolution** - Risolve le definizioni di riferimento per link e immagini\n\n**Pass HAst** (dopo la riduzione a HTML):\n\n- **Sanitize** - Rimuove elementi e attributi HTML non consentiti\n- **Highlight** - Applica l'evidenziazione della sintassi ai blocchi di codice\n- **Cleanup** - Rimuove nodi superflui e spazi bianchi\n\nI pass sono ordinati per fase: non è necessario preoccuparsi dell'ordine di esecuzione.\n\n### Plugin\n\nI plugin sono pacchetti TypeScript che configurano i pass integrati. Non eseguono JavaScript arbitrario durante la compilazione: si limitano a impostare opzioni che controllano il modo in cui il core Rust elabora il documento.\n\n```ts\nimport { compile, gfm, sanitize } from \"@unifast/node\";\n\nconst result = compile(source, {\n  plugins: [gfm(), sanitize()],\n});\n```\n\nOgni plugin restituisce un oggetto di configurazione che viene unito alle opzioni di compilazione prima dell'esecuzione del core Rust. Questo permette di mantenere il percorso critico interamente in codice nativo.\n\n### Formati di output\n\nIl compilatore supporta diversi formati di output tramite l'opzione `outputKind`:\n\n| Formato | Descrizione |\n|---------|-------------|\n| `\"html\"` | Stringa HTML (predefinito) |\n| `\"hast\"` | JSON HAst - l'AST HTML per il rendering personalizzato |\n| `\"mdast\"` | JSON MdAst - l'AST Markdown per l'analisi |\n| `\"mdx-js\"` | Stringa modulo JavaScript (solo MDX) |\n\n### Diagnostica\n\nIl compilatore segnala i problemi tramite l'array `diagnostics` nel risultato. Ogni diagnostica include un livello di gravità, un messaggio e, opzionalmente, un intervallo sorgente per individuare con precisione la posizione dell'errore.\n\n```ts\nconst result = compile(source);\n\nfor (const d of result.diagnostics) {\n  console.warn(`[${d.level}] ${d.message}`);\n}\n```",
  "alternates": [
    {
      "locale": "en",
      "url": "https://unifast.dev/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/docs/introduction/key-concepts.json"
    },
    {
      "locale": "ja",
      "url": "https://unifast.dev/ja/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/ja/docs/introduction/key-concepts.json"
    },
    {
      "locale": "zh-CN",
      "url": "https://unifast.dev/zh-CN/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/zh-CN/docs/introduction/key-concepts.json"
    },
    {
      "locale": "zh-TW",
      "url": "https://unifast.dev/zh-TW/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/zh-TW/docs/introduction/key-concepts.json"
    },
    {
      "locale": "ko",
      "url": "https://unifast.dev/ko/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/ko/docs/introduction/key-concepts.json"
    },
    {
      "locale": "fr",
      "url": "https://unifast.dev/fr/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/fr/docs/introduction/key-concepts.json"
    },
    {
      "locale": "it",
      "url": "https://unifast.dev/it/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/it/docs/introduction/key-concepts.json"
    },
    {
      "locale": "es",
      "url": "https://unifast.dev/es/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/es/docs/introduction/key-concepts.json"
    },
    {
      "locale": "pt-BR",
      "url": "https://unifast.dev/pt-BR/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/pt-BR/docs/introduction/key-concepts.json"
    },
    {
      "locale": "de",
      "url": "https://unifast.dev/de/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/de/docs/introduction/key-concepts.json"
    },
    {
      "locale": "ru",
      "url": "https://unifast.dev/ru/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/ru/docs/introduction/key-concepts.json"
    },
    {
      "locale": "hi",
      "url": "https://unifast.dev/hi/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/hi/docs/introduction/key-concepts.json"
    },
    {
      "locale": "id",
      "url": "https://unifast.dev/id/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/id/docs/introduction/key-concepts.json"
    },
    {
      "locale": "tr",
      "url": "https://unifast.dev/tr/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/tr/docs/introduction/key-concepts.json"
    },
    {
      "locale": "vi",
      "url": "https://unifast.dev/vi/docs/introduction/key-concepts/",
      "api": "https://unifast.dev//api/vi/docs/introduction/key-concepts.json"
    }
  ]
}
