UNPKG

woltage

Version:

A CQRS and Event-Sourcing Framework

29 lines (28 loc) 1.04 kB
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;