Skip to main content
Glama
PARSER_ARCHITECTURE.md5.66 kB
# Mermaid Validator API - Parser Architecture ## Overview This document describes the complete validation flow from request to parser execution for all 26 supported Mermaid diagram types. ## Architecture Flow ```mermaid flowchart TD A[HTTP Request] --> B{Endpoint Type} B -->|Direct JSON| C[POST /api/v1/validate] B -->|File Upload| D[POST /api/v1/upload/file] C --> E[validateDiagramsInput middleware] D --> F[multer file upload + fileUploadSecurity middleware] E --> G[CustomMermaidValidator.validateMultipleDiagrams] F --> H[FileProcessor.processFiles] H --> I[Extract diagrams from files] I --> G G --> J{Diagram Type Detection} J -->|18 Types| K[Jison Grammar Path] J -->|8 Types| L[Langium Grammar Path] K --> M[GrammarCompiler.getParser] L --> N[LangiumValidator.validateDiagram] M --> O[Jison Parser Execution] N --> P[Langium Parser Execution] O --> Q[Validation Result] P --> Q Q --> R[JSON Response] ``` ## Parser Organization ### Current Structure ``` src/ ├── services/ │ ├── customMermaidValidator.js # Main validator orchestrator │ ├── grammarCompiler.js # Jison parser compiler │ ├── langiumValidator.js # Langium parser handler │ ├── fileProcessor.js # File extraction service │ └── language/ # Langium grammar files │ ├── pie/pie.langium │ ├── gitGraph/gitGraph.langium │ ├── info/info.langium │ ├── architecture/architecture.langium │ ├── radar/radar.langium │ ├── packet/packet.langium │ ├── treemap/treemap.langium │ └── common/common.langium └── routes/ └── validation.js # API endpoints src/services/grammars/ # Jison grammar files ├── flowchart/flow.jison ├── sequence/sequenceDiagram.jison ├── class/classDiagram.jison ├── state/stateDiagram.jison ├── er/erDiagram.jison ├── gantt/gantt.jison ├── user-journey/journey.jison ├── requirement/requirementDiagram.jison ├── sankey/sankey.jison ├── xychart/xychart.jison ├── kanban/kanban.jison ├── quadrant/quadrant.jison ├── c4/c4Diagram.jison ├── mindmap/mindmap.jison ├── timeline/timeline.jison └── block/block.jison ``` ## Validation Flow Details ### 1. Request Processing - **Direct validation**: `POST /api/v1/validate` with JSON array of diagrams - **File upload**: `POST /api/v1/upload/file` with markdown/text files - Security middleware validates content types, file sizes, and request structure ### 2. Diagram Extraction ```javascript // File upload path FileProcessor.processFiles(files) → Extract content from .md, .txt, .zip files → Find ```mermaid code blocks → Create diagram objects with metadata // Direct path Request body already contains diagram array ``` ### 3. Parser Selection & Execution #### Jison Parsers (18 types) ```javascript CustomMermaidValidator.validateDiagram() → detectDiagramType() → GrammarCompiler.getParser(type) → parser.parse(diagramContent) → Success/Error result ``` **Supported Jison Types:** - flowchart, sequence, class, state, er, gantt - user-journey, requirement, sankey, xychart, kanban - quadrant, c4, mindmap, timeline, block #### Langium Parsers (8 types) ```javascript CustomMermaidValidator.validateDiagram() → LangiumValidator.validateDiagram() → Initialize parser for type → parser.parse(diagramContent) → Success/Error result ``` **Supported Langium Types:** - pie, gitGraph, info, architecture, radar, packet, treemap ### 4. Result Aggregation ```javascript { totalDiagrams: number, validDiagrams: number, invalidDiagrams: number, results: [ { diagramId: string, valid: boolean, errors: [], diagramType: string, validationMethod: 'custom_grammar_parser' } ] } ``` ## Most Used Endpoint: File Upload The file upload endpoint handles: 1. **Multiple file types**: .md, .txt, .zip archives 2. **Batch processing**: Multiple files with multiple diagrams each 3. **Error isolation**: Individual diagram failures don't stop batch processing 4. **Detailed reporting**: Per-file and per-diagram validation results ### Example Usage ```bash curl -X POST http://localhost:8000/api/v1/upload/file \ -F 'file=@examples/diagrams/comprehensive_test.md;type=text/markdown' \ | jq . ``` ## Current Status ### Verified Working (18 Jison Parsers) - All basic syntax validation functional - Grammar compilation successful - Parser execution working ### Langium Integration Status - Grammar files present (8 types) - LangiumValidator framework ready - Requires Langium compilation setup for full functionality ## Recommendations ### Architecture Optimization 1. **Keep current structure** - Clean separation between Jison/Langium 2. **Add parser caching** - Compiled parsers should be cached 3. **Improve error reporting** - More specific syntax error messages 4. **Add parser health checks** - Verify all 26 parsers during startup ### Testing Requirements 1. Create comprehensive test suite with all 26 diagram types 2. Test file upload endpoint with mixed diagram types 3. Verify parser selection logic 4. Test error handling for malformed diagrams ### Container Packaging 1. Ensure all grammar files are included in Docker image 2. Pre-compile parsers during build phase 3. Add health endpoint that verifies all parsers 4. Document parser dependencies and versions

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ai-of-mine/fast-mermaid-validator-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server