import {BaseSerializer} from './BaseSerializer' import {Awaitable, JSONState, uuid4} from '../../../util' import {ObjectSerializer} from './decorators' import {Event} from '../types' export class JSONMessageEvent implements Event { constructor( public readonly value: T, ) {} eventName = '@extollo/lib:JSONMessageEvent' eventUuid = uuid4() } @ObjectSerializer() export class JSONMessageEventSerializer extends BaseSerializer, { value: JSONState }> { protected decodeSerial(serial: { value: JSONState }): Awaitable> { return new JSONMessageEvent(serial.value) } protected encodeActual(actual: JSONMessageEvent): Awaitable<{ value: JSONState }> { return { value: actual.value, } } protected getName(): string { return '@extollo/lib:JSONMessageEventSerializer' } matchActual(some: JSONMessageEvent): boolean { return some instanceof JSONMessageEvent } }