{ "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": "mGAEO,IAAMA,EAAN,cAAwCC,CAA4B,CAF3E,MAE2E,CAAAC,EAAA,kCAClE,aAAc,CACnB,MAAM,CAAC,eAAe,CAAC,CACzB,CACF,ECFA,IAAMC,EAAgB,IAAI,IAAY,CAAC,MAAO,SAAS,CAAC,EAClDC,EAAc,IAAI,IAAY,CAAC,MAAO,OAAO,CAAC,EAC9CC,EAAkB,IAAI,IAAY,CAAC,MAAO,WAAW,CAAC,EACtDC,EAAkB,IAAI,IAAY,CAAC,MAAO,WAAW,CAAC,EACtDC,EAAW,IAAI,IAAY,CAAC,IAAI,CAAC,EAEhC,SAASC,EAAyBC,EAAiC,CACxE,IAAMC,EAAYD,EAAS,WAAW,uBAChCE,EAAWF,EAAS,WAAW,mBACrC,GAAIE,EAAU,CACZ,IAAMC,EAA2C,CAC/C,YAAaF,EAAU,sBAAsB,KAAKA,CAAS,EAC3D,aAAcA,EAAU,sBAAsB,KAAKA,CAAS,CAC9D,EACAC,EAAS,SAASC,EAAQF,CAAS,CACrC,CACF,CAVgBG,EAAAL,EAAA,4BAYT,IAAMM,EAAN,KAA6B,CAtBpC,MAsBoC,CAAAD,EAAA,+BAClC,sBAAsBE,EAAmCC,EAAkC,CACrFD,EAAM,aAAa,SAAW,IAI9BZ,EAAc,IAAIY,EAAM,eAAe,EACzC,KAAK,gBACHA,EACA,IAAI,IAAI,CAAC,GAAGR,EAAU,GAAGD,CAAe,CAAC,EACzC,UACA,kBACAU,CACF,EACSZ,EAAY,IAAIW,EAAM,eAAe,EAC9C,KAAK,gBAAgBA,EAAOZ,EAAe,QAAS,UAAWa,CAAM,EAC5DX,EAAgB,IAAIU,EAAM,eAAe,EAClD,KAAK,gBAAgBA,EAAOX,EAAa,aAAc,QAASY,CAAM,EAC7DV,EAAgB,IAAIS,EAAM,eAAe,EAClD,KAAK,gBAAgBA,EAAOV,EAAiB,YAAa,aAAcW,CAAM,EACrET,EAAS,IAAIQ,EAAM,eAAe,GAC3C,KAAK,gBAAgBA,EAAOV,EAAiB,KAAM,aAAcW,CAAM,EAE3E,CAEQ,gBACND,EACAE,EACAC,EACAC,EACAH,EACM,CACN,QAAWI,KAAaL,EAAM,aAAc,CAC1C,IAAMM,EAA8BD,EAAU,IAC1CC,IAAW,QAAa,CAACJ,EAAmB,IAAII,EAAO,eAAe,GACxEL,EACE,QACA,KAAKE,CAAW,kCAAkCC,CAAmB,eAAeE,EAAO,eAAe,KAC1G,CAAE,KAAMN,EAAO,SAAU,cAAe,CAC1C,CAEJ,CACF,CACF,ECnCO,IAAMO,EAGT,CACF,OAAQ,CACN,aAAcC,EAAA,IAAM,IAAIC,EAAV,gBACd,eAAgBD,EAAA,IAAM,IAAIE,EAAV,iBAClB,EACA,WAAY,CACV,uBAAwBF,EAAA,IAAM,IAAIG,EAAV,yBAC1B,CACF,EAEO,SAASC,EACdC,EAA0CC,EAI1C,CACA,IAAMC,EAAoCC,EACxCC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAoCH,EACxCI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAd,CACF,EACA,OAAAQ,EAAO,gBAAgB,SAASI,CAAU,EAC1CG,EAAyBH,CAAU,EAC5B,CAAE,OAAAJ,EAAQ,WAAAI,CAAW,CAC9B,CAlBgBX,EAAAI,EAAA", "names": ["EventModelingTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "COMMAND_TYPES", "EVENT_TYPES", "READMODEL_TYPES", "PROCESSOR_TYPES", "UI_TYPES", "registerValidationChecks", "services", "validator", "registry", "checks", "__name", "EventModelingValidator", "frame", "accept", "allowedSourceTypes", "targetLabel", "expectedSourceLabel", "sourceRef", "source", "EventModelingModule", "__name", "EventModelingTokenBuilder", "CommonValueConverter", "EventModelingValidator", "createEventModelingServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "EventModel", "createDefaultCoreModule", "EventModelingGeneratedModule", "registerValidationChecks"] }