1.5 KB56 lines
Blame
1import type {
2 DefaultSharedCoreModuleContext,
3 LangiumCoreServices,
4 LangiumSharedCoreServices,
5 Module,
6 PartialLangiumCoreServices,
7} from 'langium';
8import {
9 inject,
10 createDefaultCoreModule,
11 createDefaultSharedCoreModule,
12 EmptyFileSystem,
13} from 'langium';
14import { CommonValueConverter } from '../common/valueConverter.js';
15import {
16 MermaidGeneratedSharedModule,
17 GitGraphGrammarGeneratedModule as GitGraphGeneratedModule,
18} from '../generated/module.js';
19import { GitGraphTokenBuilder } from './tokenBuilder.js';
20
21interface GitGraphAddedServices {
22 parser: {
23 TokenBuilder: GitGraphTokenBuilder;
24 ValueConverter: CommonValueConverter;
25 };
26}
27
28export type GitGraphServices = LangiumCoreServices & GitGraphAddedServices;
29
30export const GitGraphModule: Module<
31 GitGraphServices,
32 PartialLangiumCoreServices & GitGraphAddedServices
33> = {
34 parser: {
35 TokenBuilder: () => new GitGraphTokenBuilder(),
36 ValueConverter: () => new CommonValueConverter(),
37 },
38};
39
40export 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