{
  "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<string>(['cmd', 'command']);\nconst EVENT_TYPES = new Set<string>(['evt', 'event']);\nconst READMODEL_TYPES = new Set<string>(['rmo', 'readmodel']);\nconst PROCESSOR_TYPES = new Set<string>(['pcr', 'processor']);\nconst UI_TYPES = new Set<string>(['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<MermaidAstType> = {\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<string>,\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": "uGAEO,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"]
}
