---
title: Arhitectura Nucleului
description: Analiză aprofundată a modulelor TypeScript principale ale VertiWiki: Router, Pipeline, MarkdownParser și Config.
tags: [vertiwiki, nucleu, router, parser, pipeline, config, typescript, romana]
---

# Arhitectura Nucleului

> For the complete documentation index and agent navigation, see [llms.txt](/llms.txt).

Subsistemul principal al VertiWiki se află în `src/core/`. Acesta nu conține cod de randare vizuală, concentrându-se strict pe normalizarea căilor, încărcarea resurselor, execuția middleware-ului, parsarea Markdown și igienizarea de securitate.

---

## 🧭 1. Subsistemul Router (`src/core/router.ts`)

Router-ul gestionează navigația, interpretarea hash-urilor din URL, normalizarea căilor și comutarea între limbi.

```typescript
export interface RouteInfo {
  filePath: string;
  anchor: string;
  isMarkdown: boolean;
  locale?: LocaleConfig;
}
```

### Responsabilități Principale:
1. **Rezolvare Deterministă a Căilor**:
   - `normalizePath(path: string): string`: Curăță slash-urile duble (`//`), elimină prefixele relative (`./`) și rezolvă traversările (`../`).
   - `getBaseDirectory(): string`: Calculează dacă instanța rulează din rădăcina domeniului (`/`) sau dintr-un subdirector (`/docs/`), chiar dacă utilizatorul a omis slash-ul final.
   - `resolveResourceUrl(relativePath: string): string`: Garantează că resursele `config.json` și Markdown sunt solicitate relativ la directorul de bază real.
2. **Rutare Multi-Limbă**:
   - Compară primul segment din URL cu limbile configurate în `config.json`.
   - Direcționează către `ro/` sau `fr/` când prefixul este prezent, servind limba implicită în caz contrar.
3. **Compatibilitate Parametri URL**:
   - Interceptează parametrii `?page=`, `?p=` și `?doc=`, redirecționându-i automat către rute hash moderne (`#/cale.md`).

---

## ⚙️ 2. Configurare & Inițializare (`src/core/config.ts`)

Configurația este controlată de `config.json`. Funcția `loadConfig()` încarcă, validează și normalizează opțiunile într-un obiect puternic tipizat `VertiWikiConfig`:

- **Rezolvare Teme**: Descarcă asincron preseturile de teme declarate în `customThemes` (ex: `themes/obsidian.json`).
- **Setări Identitate Vizuală**: Gestionează `brandDisplay` (`both`, `logo`, `title`), logouri și căi către favicon.
- **Valori Implicite Defensive**: Asigură continuitatea funcționării dacă fișierul `config.json` lipsește sau conține erori.

---

## 🔌 3. Pipeline-ul de Middleware (`src/core/pipeline.ts`)

VertiWiki utilizează un pipeline în trei etape, permițând plugin-urilor să intervină în fiecare fază de procesare a conținutului:

```typescript
export interface VertiWikiPlugin {
  name: string;
  beforeParse?: BeforeParseHook;
  afterParse?: AfterParseHook;
  afterRender?: AfterRenderHook;
}
```

### Etapele Ciclului de Viață:
1. **`beforeParse(markdown, context)`**: Rulează pe textul brut Markdown înainte de execuția `marked`. Utilizat de Wikilinks (`[[țintă]]`), Callouts (`> [!NOTE]`) și Tab-uri (`::: tabs`).
2. **`afterParse(html, context)`**: Rulează pe șirul HTML igienizat produs de parser înainte de inserarea în DOM.
3. **`afterRender(context)`**: Invocat după ce codul HTML a fost montat în `#verti-app`. Utilizat de Prism.js, Mermaid.js, KaTeX și MiniSearch.

---

## 📝 4. Parser Markdown & Igienizator DOMPurify (`src/core/parser.ts`)

Parserul convertește fișierele Markdown în HTML securizat și interactiv:

### Extragere Frontmatter
`parseFrontmatter(markdown)` extrage metadatele YAML delimitate de linii `---`:
```yaml
---
title: Titlu Pagină
description: Descriere SEO
tags: [eticheta1, eticheta2]
---
```

### Închidere Automată a Blocurilor de Cod
`autoCloseFences(markdown)` previne coruperea aspectului paginii cauzată de blocuri de cod neînchise (```` ``` ```` sau `~~~`).

### Igienizare Securizată Fără XSS
Înainte ca orice fragment HTML să intre în DOM, acesta este trecut prin `DOMPurify.sanitize()`:
- Scripturile malițioase sunt eliminate.
- Elementele SVG necesare diagramelor Mermaid (`<foreignObject>`, `<style>`) sunt permise controlat.
- Elementele MathML utilizate de KaTeX sunt păstrate.

---

## 🌲 5. Arborele Static de Căutare (Bot Crawl Tree) (`src/core/crawl-tree.ts`)

Pentru a rezolva penalizarea de indexare a aplicațiilor SPA în Google Search Console, VertiWiki include:

- Un arbore `<nav class="verti-crawl-tree">` cu linkuri reale `<a href="...">` pentru fiecare document din `navigation.md`.
- Motoarele de căutare descoperă toate paginile chiar și fără execuția codului JavaScript.
- Elementul este stilizat accesibil, evitând penalizările de cloaking.

---

## 🔗 Pașii Următori

- Explorați interfața în [Motorul UI & Teme](ui-and-theming.md).
- Vedeți cum se extinde sistemul în [Plugin-uri & Extensii](plugins-and-extensions.md).
- Consultați catalogul de tipuri în [Referință API TypeScript](../reference/api.md).
