import { EventType, IElementEvent, IEventHandle } from "../types"; import { Processor } from "../Processor"; import { CallCompleteEvent } from "../events/CallCompleteEvent"; import { CallErrorEvent } from "../events/CallErrorEvent"; import { ChangeVarEvent } from "../events/ChangeVarEvent"; import { CompleteEvent } from "../events/CompleteEvent"; import { CreateEvent } from "../events/CreateEvent"; import { DisposeEvent } from "../events/DisposeEvent"; import { NextEvent } from "../events/NextEvent"; import { PromiseCatchEvent } from "../events/PromiseCatchEvent"; import { ErrorEvent } from "../events/ErrorEvent"; import { SubscribeCompleteEvent } from "../events/SubscribeCompleteEvent"; import { SubscribeErrorEvent } from "../events/SubscribeErrorEvent"; import { PromiseThenEvent } from "../events/PromiseThenEvent"; const EventHandles: { [P in EventType]: IEventHandle } = { CallComplete: CallCompleteEvent, CallError: CallErrorEvent, ChangeVar: ChangeVarEvent, Complete: CompleteEvent, Create: CreateEvent, Dispose: DisposeEvent, Error: ErrorEvent, Next: NextEvent, PromiseCatch: PromiseCatchEvent, PromiseThen: PromiseThenEvent, SubscribeComplete: SubscribeCompleteEvent, SubscribeError: SubscribeErrorEvent, }; export const applyEvent = (processor: Processor, event: IElementEvent): boolean => { const type = event.type; // console.log(event); const handle = EventHandles[type]; if (!handle) { throw new Error("Unknown event type `" + type + "`"); } return handle(processor, event); };