{
  "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<string, LangiumParser> = {};\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<Info>;\nexport async function parse(diagramType: 'packet', text: string): Promise<Packet>;\nexport async function parse(diagramType: 'pie', text: string): Promise<Pie>;\nexport async function parse(diagramType: 'treeView', text: string): Promise<TreeView>;\nexport async function parse(diagramType: 'architecture', text: string): Promise<Architecture>;\nexport async function parse(diagramType: 'gitGraph', text: string): Promise<GitGraph>;\nexport async function parse(diagramType: 'eventmodeling', text: string): Promise<EventModel>;\nexport async function parse(diagramType: 'radar', text: string): Promise<Radar>;\nexport async function parse(diagramType: 'treemap', text: string): Promise<Treemap>;\nexport async function parse(diagramType: 'wardley', text: string): Promise<Wardley>;\n\nexport async function parse<T extends DiagramAST>(\n  diagramType: keyof typeof initializers,\n  text: string\n): Promise<T> {\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<T> = parser.parse<T>(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<DiagramAST>) {\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"]
}
