woltage
Version:
A CQRS and Event-Sourcing Framework
29 lines (28 loc) • 1.04 kB
JavaScript
import eventMap from "./eventMap.js";
class EventCaster {
static async cast(event, targetVersion) {
event = new event.constructor(event, false);
const eventType = event.type;
const eventVersion = event.version;
if (eventVersion === targetVersion)
return event;
if (!eventMap[eventType]?.[eventVersion] || !eventMap[eventType]?.[targetVersion]) {
throw new Error(`Event casting from '${eventType}@${eventVersion}' to '${eventType}@${targetVersion}' failed because eventMap is not up to date.`);
}
const direction = targetVersion - eventVersion < 0 ? -1 : 1;
for (let v = eventVersion + direction; v !== targetVersion + direction; v += direction) {
}
return event;
}
static isCastable() {
}
}
EventCaster.CASTING_DIRECTIONS = Object.freeze({
UP: 'up',
DOWN: 'down',
});
EventCaster.CASTING_ERRORS = Object.freeze({
KEY_MISSING: 'Key missing',
TYPE_CHANGED: 'Type changed',
});
export default EventCaster;