{ "version": 3, "sources": ["../../../src/language/eventmodeling/tokenBuilder.ts", "../../../src/language/eventmodeling/event-modeling-validator.ts", "../../../src/language/eventmodeling/module.ts"], "sourcesContent": ["import { AbstractMermaidTokenBuilder } from '../common/index.js';\n\nexport class EventModelingTokenBuilder extends AbstractMermaidTokenBuilder {\n public constructor() {\n super(['eventmodeling']);\n }\n}\n", "import type { ValidationAcceptor, ValidationChecks } from 'langium';\nimport type { EmFrame, EmResetFrame, EmTimeFrame, MermaidAstType } from '../generated/ast.js';\nimport type { EventModelingServices } from './module.js';\n\nconst COMMAND_TYPES = new Set(['cmd', 'command']);\nconst EVENT_TYPES = new Set(['evt', 'event']);\nconst READMODEL_TYPES = new Set(['rmo', 'readmodel']);\nconst PROCESSOR_TYPES = new Set(['pcr', 'processor']);\nconst UI_TYPES = new Set(['ui']);\n\nexport function registerValidationChecks(services: EventModelingServices) {\n const validator = services.validation.EventModelingValidator;\n const registry = services.validation.ValidationRegistry;\n if (registry) {\n const checks: ValidationChecks = {\n EmTimeFrame: validator.checkSourceFrameTypes.bind(validator),\n EmResetFrame: validator.checkSourceFrameTypes.bind(validator),\n };\n registry.register(checks, validator);\n }\n}\n\nexport class EventModelingValidator {\n checkSourceFrameTypes(frame: EmTimeFrame | EmResetFrame, accept: ValidationAcceptor): void {\n if (frame.sourceFrames.length === 0) {\n return;\n }\n\n if (COMMAND_TYPES.has(frame.modelEntityType)) {\n this.validateSources(\n frame,\n new Set([...UI_TYPES, ...PROCESSOR_TYPES]),\n 'command',\n 'ui or processor',\n accept\n );\n } else if (EVENT_TYPES.has(frame.modelEntityType)) {\n this.validateSources(frame, COMMAND_TYPES, 'event', 'command', accept);\n } else if (READMODEL_TYPES.has(frame.modelEntityType)) {\n this.validateSources(frame, EVENT_TYPES, 'read model', 'event', accept);\n } else if (PROCESSOR_TYPES.has(frame.modelEntityType)) {\n this.validateSources(frame, READMODEL_TYPES, 'processor', 'read model', accept);\n } else if (UI_TYPES.has(frame.modelEntityType)) {\n this.validateSources(frame, READMODEL_TYPES, 'ui', 'read model', accept);\n }\n }\n\n private validateSources(\n frame: EmTimeFrame | EmResetFrame,\n allowedSourceTypes: Set,\n targetLabel: string,\n expectedSourceLabel: string,\n accept: ValidationAcceptor\n ): void {\n for (const sourceRef of frame.sourceFrames) {\n const source: EmFrame | undefined = sourceRef.ref;\n if (source !== undefined && !allowedSourceTypes.has(source.modelEntityType)) {\n accept(\n 'error',\n `A ${targetLabel} can only receive input from a ${expectedSourceLabel}, not from '${source.modelEntityType}'.`,\n { node: frame, property: 'sourceFrames' }\n );\n }\n }\n }\n}\n", "import type {\n DefaultSharedCoreModuleContext,\n LangiumCoreServices,\n LangiumSharedCoreServices,\n Module,\n PartialLangiumCoreServices,\n} from 'langium';\nimport {\n inject,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n EmptyFileSystem,\n} from 'langium';\nimport { CommonValueConverter } from '../common/valueConverter.js';\nimport { MermaidGeneratedSharedModule, EventModelingGeneratedModule } from '../generated/module.js';\nimport { EventModelingTokenBuilder } from './tokenBuilder.js';\nimport { EventModelingValidator, registerValidationChecks } from './event-modeling-validator.js';\n\ninterface EventModelingAddedServices {\n parser: {\n TokenBuilder: EventModelingTokenBuilder;\n ValueConverter: CommonValueConverter;\n };\n validation: {\n EventModelingValidator: EventModelingValidator;\n };\n}\n\nexport type EventModelingServices = LangiumCoreServices & EventModelingAddedServices;\n\nexport const EventModelingModule: Module<\n EventModelingServices,\n PartialLangiumCoreServices & EventModelingAddedServices\n> = {\n parser: {\n TokenBuilder: () => new EventModelingTokenBuilder(),\n ValueConverter: () => new CommonValueConverter(),\n },\n validation: {\n EventModelingValidator: () => new EventModelingValidator(),\n },\n};\n\nexport function createEventModelingServices(\n context: DefaultSharedCoreModuleContext = EmptyFileSystem\n): {\n shared: LangiumSharedCoreServices;\n EventModel: EventModelingServices;\n} {\n const shared: LangiumSharedCoreServices = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const EventModel: EventModelingServices = inject(\n createDefaultCoreModule({ shared }),\n EventModelingGeneratedModule,\n EventModelingModule\n );\n shared.ServiceRegistry.register(EventModel);\n registerValidationChecks(EventModel);\n return { shared, EventModel };\n}\n"], "mappings": ";;;;;;;;;;;;;;AAEO,IAAM,4BAAN,cAAwC,4BAA4B;AAAA,EAF3E,OAE2E;AAAA;AAAA;AAAA,EAClE,cAAc;AACnB,UAAM,CAAC,eAAe,CAAC;AAAA,EACzB;AACF;;;ACFA,IAAM,gBAAgB,oBAAI,IAAY,CAAC,OAAO,SAAS,CAAC;AACxD,IAAM,cAAc,oBAAI,IAAY,CAAC,OAAO,OAAO,CAAC;AACpD,IAAM,kBAAkB,oBAAI,IAAY,CAAC,OAAO,WAAW,CAAC;AAC5D,IAAM,kBAAkB,oBAAI,IAAY,CAAC,OAAO,WAAW,CAAC;AAC5D,IAAM,WAAW,oBAAI,IAAY,CAAC,IAAI,CAAC;AAEhC,SAAS,yBAAyB,UAAiC;AACxE,QAAM,YAAY,SAAS,WAAW;AACtC,QAAM,WAAW,SAAS,WAAW;AACrC,MAAI,UAAU;AACZ,UAAM,SAA2C;AAAA,MAC/C,aAAa,UAAU,sBAAsB,KAAK,SAAS;AAAA,MAC3D,cAAc,UAAU,sBAAsB,KAAK,SAAS;AAAA,IAC9D;AACA,aAAS,SAAS,QAAQ,SAAS;AAAA,EACrC;AACF;AAVgB;AAYT,IAAM,yBAAN,MAA6B;AAAA,EAtBpC,OAsBoC;AAAA;AAAA;AAAA,EAClC,sBAAsB,OAAmC,QAAkC;AACzF,QAAI,MAAM,aAAa,WAAW,GAAG;AACnC;AAAA,IACF;AAEA,QAAI,cAAc,IAAI,MAAM,eAAe,GAAG;AAC5C,WAAK;AAAA,QACH;AAAA,QACA,oBAAI,IAAI,CAAC,GAAG,UAAU,GAAG,eAAe,CAAC;AAAA,QACzC;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,WAAW,YAAY,IAAI,MAAM,eAAe,GAAG;AACjD,WAAK,gBAAgB,OAAO,eAAe,SAAS,WAAW,MAAM;AAAA,IACvE,WAAW,gBAAgB,IAAI,MAAM,eAAe,GAAG;AACrD,WAAK,gBAAgB,OAAO,aAAa,cAAc,SAAS,MAAM;AAAA,IACxE,WAAW,gBAAgB,IAAI,MAAM,eAAe,GAAG;AACrD,WAAK,gBAAgB,OAAO,iBAAiB,aAAa,cAAc,MAAM;AAAA,IAChF,WAAW,SAAS,IAAI,MAAM,eAAe,GAAG;AAC9C,WAAK,gBAAgB,OAAO,iBAAiB,MAAM,cAAc,MAAM;AAAA,IACzE;AAAA,EACF;AAAA,EAEQ,gBACN,OACA,oBACA,aACA,qBACA,QACM;AACN,eAAW,aAAa,MAAM,cAAc;AAC1C,YAAM,SAA8B,UAAU;AAC9C,UAAI,WAAW,UAAa,CAAC,mBAAmB,IAAI,OAAO,eAAe,GAAG;AAC3E;AAAA,UACE;AAAA,UACA,KAAK,WAAW,kCAAkC,mBAAmB,eAAe,OAAO,eAAe;AAAA,UAC1G,EAAE,MAAM,OAAO,UAAU,eAAe;AAAA,QAC1C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACnCO,IAAM,sBAGT;AAAA,EACF,QAAQ;AAAA,IACN,cAAc,6BAAM,IAAI,0BAA0B,GAApC;AAAA,IACd,gBAAgB,6BAAM,IAAI,qBAAqB,GAA/B;AAAA,EAClB;AAAA,EACA,YAAY;AAAA,IACV,wBAAwB,6BAAM,IAAI,uBAAuB,GAAjC;AAAA,EAC1B;AACF;AAEO,SAAS,4BACd,UAA0C,iBAI1C;AACA,QAAM,SAAoC;AAAA,IACxC,8BAA8B,OAAO;AAAA,IACrC;AAAA,EACF;AACA,QAAM,aAAoC;AAAA,IACxC,wBAAwB,EAAE,OAAO,CAAC;AAAA,IAClC;AAAA,IACA;AAAA,EACF;AACA,SAAO,gBAAgB,SAAS,UAAU;AAC1C,2BAAyB,UAAU;AACnC,SAAO,EAAE,QAAQ,WAAW;AAC9B;AAlBgB;", "names": [] }