UNPKG

evtstore

Version:

Event Sourcing with Node.JS

61 lines 5.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createProvider = void 0; const error_1 = require("./error"); const util_1 = require("./util"); function createProvider(initEvents, onError = () => { }) { const events = initEvents || []; const bms = new Map(); let position = 0; const getPosition = async (bm) => bms.get(bm) || 0; const setPosition = async (bm, pos) => { bms.set(bm, pos); }; const getEventsFrom = async (stream, pos, limit) => { const results = events.filter((ev) => (0, util_1.toArray)(stream).includes(ev.stream) && ev.position > pos); return limit ? results.slice(0, limit) : results; }; const getLastEventFor = async (stream, id) => { const streams = (0, util_1.toArray)(stream); for (let i = events.length - 1; i >= 0; i--) { const evt = events[i]; if (id && streams.includes(evt.stream) && evt.aggregateId === id) return evt; if (streams.includes(evt.stream)) return evt; } }; const getEventsFor = async (stream, id, fromPosition) => { const filter = fromPosition === undefined ? (ev) => ev.stream === stream && ev.aggregateId === id : (ev) => ev.stream === stream && ev.aggregateId === id && ev.position > fromPosition; return events.filter(filter); }; const createEvents = (0, util_1.createEventsMapper)(0); const append = async (stream, aggregateId, version, newEvents) => { const aggEvents = await getEventsFor(stream, aggregateId); for (const ev of aggEvents) { if (ev.version === version) throw new error_1.VersionError(); } const storeEvents = newEvents.map((event) => ({ ...event, position: ++position, })); events.push(...storeEvents); return storeEvents; }; return { driver: 'memory', onError, getPosition, setPosition, getEventsFor, getEventsFrom, getLastEventFor, createEvents, append, }; } exports.createProvider = createProvider; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVtb3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG1DQUFzQztBQUN0QyxpQ0FBb0Q7QUFFcEQsU0FBZ0IsY0FBYyxDQUM1QixVQUFpQyxFQUNqQyxVQUF5QixHQUFHLEVBQUUsR0FBRSxDQUFDO0lBRWpDLE1BQU0sTUFBTSxHQUF5QixVQUFVLElBQUksRUFBRSxDQUFBO0lBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBQ3JDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQTtJQUVoQixNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUUxRCxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFBVSxFQUFFLEdBQVcsRUFBRSxFQUFFO1FBQ3BELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQ2xCLENBQUMsQ0FBQTtJQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxNQUF5QixFQUFFLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBRTtRQUNwRixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFBLGNBQU8sRUFBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDL0YsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUE7SUFDbEQsQ0FBQyxDQUFBO0lBRUQsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLE1BQXlCLEVBQUUsRUFBVyxFQUFFLEVBQUU7UUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBQSxjQUFPLEVBQUMsTUFBTSxDQUFDLENBQUE7UUFFL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNyQixJQUFJLEVBQUUsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxLQUFLLEVBQUU7Z0JBQUUsT0FBTyxHQUFHLENBQUE7WUFDNUUsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7Z0JBQUUsT0FBTyxHQUFHLENBQUE7U0FDN0M7SUFDSCxDQUFDLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsTUFBYyxFQUFFLEVBQVUsRUFBRSxZQUFxQixFQUFFLEVBQUU7UUFDL0UsTUFBTSxNQUFNLEdBQ1YsWUFBWSxLQUFLLFNBQVM7WUFDeEIsQ0FBQyxDQUFDLENBQUMsRUFBaUIsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksRUFBRSxDQUFDLFdBQVcsS0FBSyxFQUFFO1lBQ3RFLENBQUMsQ0FBQyxDQUFDLEVBQWlCLEVBQUUsRUFBRSxDQUNwQixFQUFFLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxFQUFFLENBQUMsV0FBVyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQTtRQUVuRixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDOUIsQ0FBQyxDQUFBO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBQSx5QkFBa0IsRUFBSSxDQUFDLENBQUMsQ0FBQTtJQUU3QyxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQ2xCLE1BQWMsRUFDZCxXQUFtQixFQUNuQixPQUFlLEVBQ2YsU0FBMEIsRUFDMUIsRUFBRTtRQUNGLE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQTtRQUN6RCxLQUFLLE1BQU0sRUFBRSxJQUFJLFNBQVMsRUFBRTtZQUMxQixJQUFJLEVBQUUsQ0FBQyxPQUFPLEtBQUssT0FBTztnQkFBRSxNQUFNLElBQUksb0JBQVksRUFBRSxDQUFBO1NBQ3JEO1FBRUQsTUFBTSxXQUFXLEdBQXlCLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEUsR0FBRyxLQUFLO1lBQ1IsUUFBUSxFQUFFLEVBQUUsUUFBUTtTQUNyQixDQUFDLENBQUMsQ0FBQTtRQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQTtRQUMzQixPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDLENBQUE7SUFFRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLFFBQVE7UUFDaEIsT0FBTztRQUNQLFdBQVc7UUFDWCxXQUFXO1FBQ1gsWUFBWTtRQUNaLGFBQWE7UUFDYixlQUFlO1FBQ2YsWUFBWTtRQUNaLE1BQU07S0FDUCxDQUFBO0FBQ0gsQ0FBQztBQXhFRCx3Q0F3RUMifQ==