{
  "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  Railroad,\n  RailroadEbnf,\n  RailroadAbnf,\n  RailroadPeg,\n  Treemap,\n  TreeView,\n  Wardley,\n  Cynefin,\n} from './language/index.js';\n\nexport type DiagramAST =\n  | Info\n  | Packet\n  | Pie\n  | Architecture\n  | GitGraph\n  | EventModel\n  | Radar\n  | Railroad\n  | RailroadEbnf\n  | RailroadAbnf\n  | RailroadPeg\n  | Treemap\n  | TreeView\n  | Wardley\n  | Cynefin;\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  railroad: async () => {\n    const { createRailroadServices } = await import('./language/railroad/index.js');\n    const parser = createRailroadServices().Railroad.parser.LangiumParser;\n    parsers.railroad = parser;\n  },\n  railroadEbnf: async () => {\n    const { createRailroadEbnfServices } = await import('./language/railroad-ebnf/index.js');\n    const parser = createRailroadEbnfServices().RailroadEbnf.parser.LangiumParser;\n    parsers.railroadEbnf = parser;\n  },\n  railroadAbnf: async () => {\n    const { createRailroadAbnfServices } = await import('./language/railroad-abnf/index.js');\n    const parser = createRailroadAbnfServices().RailroadAbnf.parser.LangiumParser;\n    parsers.railroadAbnf = parser;\n  },\n  railroadPeg: async () => {\n    const { createRailroadPegServices } = await import('./language/railroad-peg/index.js');\n    const parser = createRailroadPegServices().RailroadPeg.parser.LangiumParser;\n    parsers.railroadPeg = 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  cynefin: async () => {\n    const { createCynefinServices } = await import('./language/cynefin/index.js');\n    const parser = createCynefinServices().Cynefin.parser.LangiumParser;\n    parsers.cynefin = 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: 'railroad', text: string): Promise<Railroad>;\nexport async function parse(diagramType: 'railroadEbnf', text: string): Promise<RailroadEbnf>;\nexport async function parse(diagramType: 'railroadAbnf', text: string): Promise<RailroadAbnf>;\nexport async function parse(diagramType: 'railroadPeg', text: string): Promise<RailroadPeg>;\nexport async function parse(diagramType: 'treemap', text: string): Promise<Treemap>;\nexport async function parse(diagramType: 'wardley', text: string): Promise<Wardley>;\nexport async function parse(diagramType: 'cynefin', text: string): Promise<Cynefin>;\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": "kqEAqCA,IAAMA,EAAyC,CAAC,EAC1CC,GAAe,CACnB,KAAMC,EAAA,SAAY,CAChB,GAAM,CAAE,mBAAAC,CAAmB,EAAI,KAAM,QAAO,mDAA0B,EAChEC,EAASD,EAAmB,EAAE,KAAK,OAAO,cAChDH,EAAQ,KAAOI,CACjB,EAJM,QAKN,OAAQF,EAAA,SAAY,CAClB,GAAM,CAAE,qBAAAG,CAAqB,EAAI,KAAM,QAAO,qDAA4B,EACpED,EAASC,EAAqB,EAAE,OAAO,OAAO,cACpDL,EAAQ,OAASI,CACnB,EAJQ,UAKR,IAAKF,EAAA,SAAY,CACf,GAAM,CAAE,kBAAAI,CAAkB,EAAI,KAAM,QAAO,kDAAyB,EAC9DF,EAASE,EAAkB,EAAE,IAAI,OAAO,cAC9CN,EAAQ,IAAMI,CAChB,EAJK,OAKL,SAAUF,EAAA,SAAY,CACpB,GAAM,CAAE,uBAAAK,CAAuB,EAAI,KAAM,QAAO,uDAA8B,EACxEH,EAASG,EAAuB,EAAE,SAAS,OAAO,cACxDP,EAAQ,SAAWI,CACrB,EAJU,YAKV,aAAcF,EAAA,SAAY,CACxB,GAAM,CAAE,2BAAAM,CAA2B,EAAI,KAAM,QAAO,2DAAkC,EAChFJ,EAASI,EAA2B,EAAE,aAAa,OAAO,cAChER,EAAQ,aAAeI,CACzB,EAJc,gBAKd,SAAUF,EAAA,SAAY,CACpB,GAAM,CAAE,uBAAAO,CAAuB,EAAI,KAAM,QAAO,uDAA8B,EACxEL,EAASK,EAAuB,EAAE,SAAS,OAAO,cACxDT,EAAQ,SAAWI,CACrB,EAJU,YAKV,cAAeF,EAAA,SAAY,CACzB,GAAM,CAAE,4BAAAQ,CAA4B,EAAI,KAAM,QAAO,4DAAmC,EAClFN,EAASM,EAA4B,EAAE,WAAW,OAAO,cAC/DV,EAAQ,cAAgBI,CAC1B,EAJe,iBAKf,MAAOF,EAAA,SAAY,CACjB,GAAM,CAAE,oBAAAS,CAAoB,EAAI,KAAM,QAAO,oDAA2B,EAClEP,EAASO,EAAoB,EAAE,MAAM,OAAO,cAClDX,EAAQ,MAAQI,CAClB,EAJO,SAKP,SAAUF,EAAA,SAAY,CACpB,GAAM,CAAE,uBAAAU,CAAuB,EAAI,KAAM,QAAO,uDAA8B,EACxER,EAASQ,EAAuB,EAAE,SAAS,OAAO,cACxDZ,EAAQ,SAAWI,CACrB,EAJU,YAKV,aAAcF,EAAA,SAAY,CACxB,GAAM,CAAE,2BAAAW,CAA2B,EAAI,KAAM,QAAO,4DAAmC,EACjFT,EAASS,EAA2B,EAAE,aAAa,OAAO,cAChEb,EAAQ,aAAeI,CACzB,EAJc,gBAKd,aAAcF,EAAA,SAAY,CACxB,GAAM,CAAE,2BAAAY,CAA2B,EAAI,KAAM,QAAO,4DAAmC,EACjFV,EAASU,EAA2B,EAAE,aAAa,OAAO,cAChEd,EAAQ,aAAeI,CACzB,EAJc,gBAKd,YAAaF,EAAA,SAAY,CACvB,GAAM,CAAE,0BAAAa,CAA0B,EAAI,KAAM,QAAO,2DAAkC,EAC/EX,EAASW,EAA0B,EAAE,YAAY,OAAO,cAC9Df,EAAQ,YAAcI,CACxB,EAJa,eAKb,QAASF,EAAA,SAAY,CACnB,GAAM,CAAE,sBAAAc,CAAsB,EAAI,KAAM,QAAO,sDAA6B,EACtEZ,EAASY,EAAsB,EAAE,QAAQ,OAAO,cACtDhB,EAAQ,QAAUI,CACpB,EAJS,WAKT,QAASF,EAAA,SAAY,CACnB,GAAM,CAAE,sBAAAe,CAAsB,EAAI,KAAM,QAAO,sDAA6B,EACtEb,EAASa,EAAsB,EAAE,QAAQ,OAAO,cACtDjB,EAAQ,QAAUI,CACpB,EAJS,WAKT,QAASF,EAAA,SAAY,CACnB,GAAM,CAAE,sBAAAgB,CAAsB,EAAI,KAAM,QAAO,sDAA6B,EACtEd,EAASc,EAAsB,EAAE,QAAQ,OAAO,cACtDlB,EAAQ,QAAUI,CACpB,EAJS,UAKX,EAkBA,eAAsBe,GACpBC,EACAC,EACY,CACZ,IAAMC,EAAcrB,GAAamB,CAAW,EAC5C,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,yBAAyBF,CAAW,EAAE,EAEnDpB,EAAQoB,CAAW,GACtB,MAAME,EAAY,EAGpB,IAAMC,EADwBvB,EAAQoB,CAAW,EACX,MAASC,CAAI,EACnD,GAAIE,EAAO,YAAY,OAAS,GAAKA,EAAO,aAAa,OAAS,EAChE,MAAM,IAAIC,EAAkBD,CAAM,EAEpC,OAAOA,EAAO,KAChB,CAjBsBrB,EAAAiB,GAAA,SAmBf,IAAMK,EAAN,cAAgC,KAAM,CAC3C,YAAmBD,EAAiC,CAClD,IAAME,EAAsBF,EAAO,YAChC,IAAKG,GAAQ,CACZ,IAAMC,EAAOD,EAAI,OAAS,QAAa,CAAC,MAAMA,EAAI,IAAI,EAAIA,EAAI,KAAO,IAC/DE,EAASF,EAAI,SAAW,QAAa,CAAC,MAAMA,EAAI,MAAM,EAAIA,EAAI,OAAS,IAC7E,MAAO,uBAAuBC,CAAI,YAAYC,CAAM,KAAKF,EAAI,OAAO,EACtE,CAAC,EACA,KAAK;AAAA,CAAI,EACNG,EAAuBN,EAAO,aACjC,IAAKG,GAAQ,CACZ,IAAMC,EACJD,EAAI,MAAM,YAAc,QAAa,CAAC,MAAMA,EAAI,MAAM,SAAS,EAC3DA,EAAI,MAAM,UACV,IACAE,EACJF,EAAI,MAAM,cAAgB,QAAa,CAAC,MAAMA,EAAI,MAAM,WAAW,EAC/DA,EAAI,MAAM,YACV,IACN,MAAO,uBAAuBC,CAAI,YAAYC,CAAM,KAAKF,EAAI,OAAO,EACtE,CAAC,EACA,KAAK;AAAA,CAAI,EACZ,MAAM,mBAAmBD,CAAW,IAAII,CAAY,EAAE,EArBrC,YAAAN,CAsBnB,CA9KF,MAuJ6C,CAAArB,EAAA,0BAwB7C",
  "names": ["parsers", "initializers", "__name", "createInfoServices", "parser", "createPacketServices", "createPieServices", "createTreeViewServices", "createArchitectureServices", "createGitGraphServices", "createEventModelingServices", "createRadarServices", "createRailroadServices", "createRailroadEbnfServices", "createRailroadAbnfServices", "createRailroadPegServices", "createTreemapServices", "createWardleyServices", "createCynefinServices", "parse", "diagramType", "text", "initializer", "result", "MermaidParseError", "lexerErrors", "err", "line", "column", "parserErrors"]
}
