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