{ "version": 3, "sources": ["../src/parse.ts"], "sourcesContent": ["import type { LangiumParser, ParseResult } from 'langium';\n\nimport type {\n Info,\n Packet,\n Pie,\n Architecture,\n GitGraph,\n EventModel,\n Radar,\n Treemap,\n TreeView,\n Wardley,\n} from './index.js';\n\nexport type DiagramAST =\n | Info\n | Packet\n | Pie\n | Architecture\n | GitGraph\n | EventModel\n | Radar\n | TreeView\n | Wardley;\n\nconst parsers: Record = {};\nconst initializers = {\n info: async () => {\n const { createInfoServices } = await import('./language/info/index.js');\n const parser = createInfoServices().Info.parser.LangiumParser;\n parsers.info = parser;\n },\n packet: async () => {\n const { createPacketServices } = await import('./language/packet/index.js');\n const parser = createPacketServices().Packet.parser.LangiumParser;\n parsers.packet = parser;\n },\n pie: async () => {\n const { createPieServices } = await import('./language/pie/index.js');\n const parser = createPieServices().Pie.parser.LangiumParser;\n parsers.pie = parser;\n },\n treeView: async () => {\n const { createTreeViewServices } = await import('./language/treeView/index.js');\n const parser = createTreeViewServices().TreeView.parser.LangiumParser;\n parsers.treeView = parser;\n },\n architecture: async () => {\n const { createArchitectureServices } = await import('./language/architecture/index.js');\n const parser = createArchitectureServices().Architecture.parser.LangiumParser;\n parsers.architecture = parser;\n },\n gitGraph: async () => {\n const { createGitGraphServices } = await import('./language/gitGraph/index.js');\n const parser = createGitGraphServices().GitGraph.parser.LangiumParser;\n parsers.gitGraph = parser;\n },\n eventmodeling: async () => {\n const { createEventModelingServices } = await import('./language/eventmodeling/index.js');\n const parser = createEventModelingServices().EventModel.parser.LangiumParser;\n parsers.eventmodeling = parser;\n },\n radar: async () => {\n const { createRadarServices } = await import('./language/radar/index.js');\n const parser = createRadarServices().Radar.parser.LangiumParser;\n parsers.radar = parser;\n },\n treemap: async () => {\n const { createTreemapServices } = await import('./language/treemap/index.js');\n const parser = createTreemapServices().Treemap.parser.LangiumParser;\n parsers.treemap = parser;\n },\n wardley: async () => {\n const { createWardleyServices } = await import('./language/wardley/index.js');\n const parser = createWardleyServices().Wardley.parser.LangiumParser;\n parsers.wardley = parser;\n },\n} as const;\n\nexport async function parse(diagramType: 'info', text: string): Promise;\nexport async function parse(diagramType: 'packet', text: string): Promise;\nexport async function parse(diagramType: 'pie', text: string): Promise;\nexport async function parse(diagramType: 'treeView', text: string): Promise;\nexport async function parse(diagramType: 'architecture', text: string): Promise;\nexport async function parse(diagramType: 'gitGraph', text: string): Promise;\nexport async function parse(diagramType: 'eventmodeling', text: string): Promise;\nexport async function parse(diagramType: 'radar', text: string): Promise;\nexport async function parse(diagramType: 'treemap', text: string): Promise;\nexport async function parse(diagramType: 'wardley', text: string): Promise;\n\nexport async function parse(\n diagramType: keyof typeof initializers,\n text: string\n): Promise {\n const initializer = initializers[diagramType];\n if (!initializer) {\n throw new Error(`Unknown diagram type: ${diagramType}`);\n }\n if (!parsers[diagramType]) {\n await initializer();\n }\n const parser: LangiumParser = parsers[diagramType];\n const result: ParseResult = parser.parse(text);\n if (result.lexerErrors.length > 0 || result.parserErrors.length > 0) {\n throw new MermaidParseError(result);\n }\n return result.value;\n}\n\nexport class MermaidParseError extends Error {\n constructor(public result: ParseResult) {\n const lexerErrors: string = result.lexerErrors\n .map((err) => {\n const line = err.line !== undefined && !isNaN(err.line) ? err.line : '?';\n const column = err.column !== undefined && !isNaN(err.column) ? err.column : '?';\n return `Lexer error on line ${line}, column ${column}: ${err.message}`;\n })\n .join('\\n');\n const parserErrors: string = result.parserErrors\n .map((err) => {\n const line =\n err.token.startLine !== undefined && !isNaN(err.token.startLine)\n ? err.token.startLine\n : '?';\n const column =\n err.token.startColumn !== undefined && !isNaN(err.token.startColumn)\n ? err.token.startColumn\n : '?';\n return `Parse error on line ${line}, column ${column}: ${err.message}`;\n })\n .join('\\n');\n super(`Parsing failed: ${lexerErrors} ${parserErrors}`);\n }\n}\n"], "mappings": "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", "names": ["parsers", "initializers", "__name", "createInfoServices", "parser", "createPacketServices", "createPieServices", "createTreeViewServices", "createArchitectureServices", "createGitGraphServices", "createEventModelingServices", "createRadarServices", "createTreemapServices", "createWardleyServices", "parse", "diagramType", "text", "initializer", "result", "MermaidParseError", "lexerErrors", "err", "line", "column", "parserErrors"] }