{
  "url": "https://unifast.dev/es/docs/introduction/key-concepts/",
  "locale": "es",
  "title": "Conceptos clave",
  "description": "Comprende la pipeline de compilación multi-etapa de unifast, los pases integrados y cómo funcionan las transformaciones sobre MdAst y HAst.",
  "section": "introduction",
  "body": "unifast compila Markdown a través de una pipeline multi-etapa. Entender estas etapas te ayudará a configurar el compilador y a elegir los plugins adecuados.\n\n### Pipeline de compilación\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\nCada etapa transforma el documento a través de una representación intermedia (IR).\n\n### Representaciones intermedias\n\n| IR | Nombre | Propósito |\n|----|------|---------|\n| **IR0** | MdAst | Estructura Markdown: encabezados, párrafos, listas, bloques de código |\n| **IR1** | HAst | Estructura HTML: elementos, atributos, nodos de texto |\n| **IR2** | JsAst | Solo MDX: imports ESM y expresiones JSX |\n\nEl parser produce **MdAst**, que luego se transforma a **HAst** para la emisión de HTML. Las entradas MDX producen además nodos **JsAst** para la salida JavaScript.\n\n### Pases\n\nLos pases son transformaciones aplicadas al AST en fases específicas. unifast incluye pases integrados para tareas comunes:\n\n**Pases sobre MdAst** (antes de transformar a HTML):\n\n- **Normalize** - Estructura consistente para los pases posteriores\n- **Slug** - Genera IDs de encabezado a partir del contenido de texto\n- **TOC** - Extrae la tabla de contenidos a partir de los encabezados\n- **Definition Resolution** - Resuelve las definiciones de referencia de enlaces/imágenes\n\n**Pases sobre HAst** (después de transformar a HTML):\n\n- **Sanitize** - Elimina los elementos y atributos HTML no permitidos\n- **Highlight** - Aplica resaltado de sintaxis a los bloques de código\n- **Cleanup** - Elimina nodos y espacios en blanco innecesarios\n\nLos pases están ordenados por fase: no tienes que preocuparte por el orden de ejecución.\n\n### Plugins\n\nLos plugins son paquetes TypeScript que configuran los pases integrados. No ejecutan JavaScript arbitrario durante la compilación: en su lugar, establecen opciones que controlan cómo el núcleo en Rust procesa tu documento.\n\n```ts\nimport { compile, gfm, sanitize } from \"@unifast/node\";\n\nconst result = compile(source, {\n  plugins: [gfm(), sanitize()],\n});\n```\n\nCada plugin retorna un objeto de configuración que se combina con las opciones de compilación antes de que se ejecute el núcleo en Rust. Esto mantiene el camino crítico completamente en código nativo.\n\n### Formatos de salida\n\nEl compilador admite múltiples formatos de salida a través de la opción `outputKind`:\n\n| Formato | Descripción |\n|--------|-------------|\n| `\"html\"` | Cadena HTML (por defecto) |\n| `\"hast\"` | JSON del HAst, el AST HTML para renderizado personalizado |\n| `\"mdast\"` | JSON del MdAst, el AST Markdown para análisis |\n| `\"mdx-js\"` | Cadena de módulo JavaScript (solo MDX) |\n\n### Diagnósticos\n\nEl compilador reporta los problemas a través del array `diagnostics` en el resultado. Cada diagnóstico incluye un nivel de severidad, un mensaje y un rango de origen opcional para una localización precisa del error.\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"
    }
  ]
}
