collab/mermaid/packages/parser/src/language/architecture/module.tsblame
View source
6dd74de1import type {
6dd74de2 DefaultSharedCoreModuleContext,
6dd74de3 LangiumCoreServices,
6dd74de4 LangiumSharedCoreServices,
6dd74de5 Module,
6dd74de6 PartialLangiumCoreServices,
6dd74de7} from 'langium';
6dd74de8import {
6dd74de9 EmptyFileSystem,
6dd74de10 createDefaultCoreModule,
6dd74de11 createDefaultSharedCoreModule,
6dd74de12 inject,
6dd74de13} from 'langium';
6dd74de14
6dd74de15import {
6dd74de16 MermaidGeneratedSharedModule,
6dd74de17 ArchitectureGrammarGeneratedModule as ArchitectureGeneratedModule,
6dd74de18} from '../generated/module.js';
6dd74de19import { ArchitectureTokenBuilder } from './tokenBuilder.js';
6dd74de20import { ArchitectureValueConverter } from './valueConverter.js';
6dd74de21
6dd74de22/**
6dd74de23 * Declaration of `Architecture` services.
6dd74de24 */
6dd74de25interface ArchitectureAddedServices {
6dd74de26 parser: {
6dd74de27 TokenBuilder: ArchitectureTokenBuilder;
6dd74de28 ValueConverter: ArchitectureValueConverter;
6dd74de29 };
6dd74de30}
6dd74de31
6dd74de32/**
6dd74de33 * Union of Langium default services and `Architecture` services.
6dd74de34 */
6dd74de35export type ArchitectureServices = LangiumCoreServices & ArchitectureAddedServices;
6dd74de36
6dd74de37/**
6dd74de38 * Dependency injection module that overrides Langium default services and
6dd74de39 * contributes the declared `Architecture` services.
6dd74de40 */
6dd74de41export const ArchitectureModule: Module<
6dd74de42 ArchitectureServices,
6dd74de43 PartialLangiumCoreServices & ArchitectureAddedServices
6dd74de44> = {
6dd74de45 parser: {
6dd74de46 TokenBuilder: () => new ArchitectureTokenBuilder(),
6dd74de47 ValueConverter: () => new ArchitectureValueConverter(),
6dd74de48 },
6dd74de49};
6dd74de50
6dd74de51/**
6dd74de52 * Create the full set of services required by Langium.
6dd74de53 *
6dd74de54 * First inject the shared services by merging two modules:
6dd74de55 * - Langium default shared services
6dd74de56 * - Services generated by langium-cli
6dd74de57 *
6dd74de58 * Then inject the language-specific services by merging three modules:
6dd74de59 * - Langium default language-specific services
6dd74de60 * - Services generated by langium-cli
6dd74de61 * - Services specified in this file
6dd74de62 * @param context - Optional module context with the LSP connection
6dd74de63 * @returns An object wrapping the shared services and the language-specific services
6dd74de64 */
6dd74de65export function createArchitectureServices(
6dd74de66 context: DefaultSharedCoreModuleContext = EmptyFileSystem
6dd74de67): {
6dd74de68 shared: LangiumSharedCoreServices;
6dd74de69 Architecture: ArchitectureServices;
6dd74de70} {
6dd74de71 const shared: LangiumSharedCoreServices = inject(
6dd74de72 createDefaultSharedCoreModule(context),
6dd74de73 MermaidGeneratedSharedModule
6dd74de74 );
6dd74de75 const Architecture: ArchitectureServices = inject(
6dd74de76 createDefaultCoreModule({ shared }),
6dd74de77 ArchitectureGeneratedModule,
6dd74de78 ArchitectureModule
6dd74de79 );
6dd74de80 shared.ServiceRegistry.register(Architecture);
6dd74de81 return { shared, Architecture };
6dd74de82}