collab/mermaid/packages/parser/src/language/treemap/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 TreemapGrammarGeneratedModule as TreemapGeneratedModule,
6dd74de18} from '../generated/module.js';
6dd74de19import { TreemapTokenBuilder } from './tokenBuilder.js';
6dd74de20import { TreemapValueConverter } from './valueConverter.js';
6dd74de21import { TreemapValidator, registerValidationChecks } from './treemap-validator.js';
6dd74de22
6dd74de23/**
6dd74de24 * Declaration of `Treemap` services.
6dd74de25 */
6dd74de26interface TreemapAddedServices {
6dd74de27 parser: {
6dd74de28 TokenBuilder: TreemapTokenBuilder;
6dd74de29 ValueConverter: TreemapValueConverter;
6dd74de30 };
6dd74de31 validation: {
6dd74de32 TreemapValidator: TreemapValidator;
6dd74de33 };
6dd74de34}
6dd74de35
6dd74de36/**
6dd74de37 * Union of Langium default services and `Treemap` services.
6dd74de38 */
6dd74de39export type TreemapServices = LangiumCoreServices & TreemapAddedServices;
6dd74de40
6dd74de41/**
6dd74de42 * Dependency injection module that overrides Langium default services and
6dd74de43 * contributes the declared `Treemap` services.
6dd74de44 */
6dd74de45export const TreemapModule: Module<
6dd74de46 TreemapServices,
6dd74de47 PartialLangiumCoreServices & TreemapAddedServices
6dd74de48> = {
6dd74de49 parser: {
6dd74de50 TokenBuilder: () => new TreemapTokenBuilder(),
6dd74de51 ValueConverter: () => new TreemapValueConverter(),
6dd74de52 },
6dd74de53 validation: {
6dd74de54 TreemapValidator: () => new TreemapValidator(),
6dd74de55 },
6dd74de56};
6dd74de57
6dd74de58/**
6dd74de59 * Create the full set of services required by Langium.
6dd74de60 *
6dd74de61 * First inject the shared services by merging two modules:
6dd74de62 * - Langium default shared services
6dd74de63 * - Services generated by langium-cli
6dd74de64 *
6dd74de65 * Then inject the language-specific services by merging three modules:
6dd74de66 * - Langium default language-specific services
6dd74de67 * - Services generated by langium-cli
6dd74de68 * - Services specified in this file
6dd74de69 * @param context - Optional module context with the LSP connection
6dd74de70 * @returns An object wrapping the shared services and the language-specific services
6dd74de71 */
6dd74de72export function createTreemapServices(context: DefaultSharedCoreModuleContext = EmptyFileSystem): {
6dd74de73 shared: LangiumSharedCoreServices;
6dd74de74 Treemap: TreemapServices;
6dd74de75} {
6dd74de76 const shared: LangiumSharedCoreServices = inject(
6dd74de77 createDefaultSharedCoreModule(context),
6dd74de78 MermaidGeneratedSharedModule
6dd74de79 );
6dd74de80 const Treemap: TreemapServices = inject(
6dd74de81 createDefaultCoreModule({ shared }),
6dd74de82 TreemapGeneratedModule,
6dd74de83 TreemapModule
6dd74de84 );
6dd74de85 shared.ServiceRegistry.register(Treemap);
6dd74de86
6dd74de87 // Register validation checks
6dd74de88 registerValidationChecks(Treemap);
6dd74de89
6dd74de90 return { shared, Treemap };
6dd74de91}