woltage
Version:
A CQRS and Event-Sourcing Framework
24 lines (23 loc) • 832 B
JavaScript
import Event from "./Event.js";
import { z } from 'zod/v4';
const eventMap = {};
export const registerEventClasses = (eventClasses) => {
eventClasses.forEach(EventClass => {
eventMap[EventClass.type] ??= {};
if (eventMap[EventClass.type][EventClass.version])
throw new Error(`Duplicate event class found. Event '${EventClass.type}@${EventClass.version}' already exists.`);
eventMap[EventClass.type][EventClass.version] = EventClass;
});
};
export const getEventClass = (eventType, version) => {
var _a;
return eventMap[eventType]?.[version] ?? (_a = class UnknownEvent extends Event {
static toString() {
return eventType;
}
},
_a.version = version,
_a.schema = z.unknown(),
_a);
};
export default eventMap;