| 1 | import type { |
| 2 | DefaultSharedCoreModuleContext, |
| 3 | LangiumCoreServices, |
| 4 | LangiumSharedCoreServices, |
| 5 | Module, |
| 6 | PartialLangiumCoreServices, |
| 7 | } from 'langium'; |
| 8 | import { |
| 9 | inject, |
| 10 | createDefaultCoreModule, |
| 11 | createDefaultSharedCoreModule, |
| 12 | EmptyFileSystem, |
| 13 | } from 'langium'; |
| 14 | import { CommonValueConverter } from '../common/valueConverter.js'; |
| 15 | import { |
| 16 | MermaidGeneratedSharedModule, |
| 17 | GitGraphGrammarGeneratedModule as GitGraphGeneratedModule, |
| 18 | } from '../generated/module.js'; |
| 19 | import { GitGraphTokenBuilder } from './tokenBuilder.js'; |
| 20 | |
| 21 | interface GitGraphAddedServices { |
| 22 | parser: { |
| 23 | TokenBuilder: GitGraphTokenBuilder; |
| 24 | ValueConverter: CommonValueConverter; |
| 25 | }; |
| 26 | } |
| 27 | |
| 28 | export type GitGraphServices = LangiumCoreServices & GitGraphAddedServices; |
| 29 | |
| 30 | export const GitGraphModule: Module< |
| 31 | GitGraphServices, |
| 32 | PartialLangiumCoreServices & GitGraphAddedServices |
| 33 | > = { |
| 34 | parser: { |
| 35 | TokenBuilder: () => new GitGraphTokenBuilder(), |
| 36 | ValueConverter: () => new CommonValueConverter(), |
| 37 | }, |
| 38 | }; |
| 39 | |
| 40 | export function createGitGraphServices(context: DefaultSharedCoreModuleContext = EmptyFileSystem): { |
| 41 | shared: LangiumSharedCoreServices; |
| 42 | GitGraph: GitGraphServices; |
| 43 | } { |
| 44 | const shared: LangiumSharedCoreServices = inject( |
| 45 | createDefaultSharedCoreModule(context), |
| 46 | MermaidGeneratedSharedModule |
| 47 | ); |
| 48 | const GitGraph: GitGraphServices = inject( |
| 49 | createDefaultCoreModule({ shared }), |
| 50 | GitGraphGeneratedModule, |
| 51 | GitGraphModule |
| 52 | ); |
| 53 | shared.ServiceRegistry.register(GitGraph); |
| 54 | return { shared, GitGraph }; |
| 55 | } |
| 56 | |