geteventstore-promise2
Version:
GetEventStore client wrapper using promises
33 lines (27 loc) • 1.03 kB
JavaScript
import debugModule from 'debug';
import assert from 'assert';
import axios from 'axios';
const debug = debugModule('geteventstore:writeEvents');
const baseErr = 'Write Events - ';
export default (config) => async (streamName, events, options) => {
assert(streamName, `${baseErr}Stream Name not provided`);
assert(events, `${baseErr}Events not provided`);
assert.equal(true, events.constructor === Array, `${baseErr}Events should be an array`);
if (events.length === 0) return;
options = options || {};
options.expectedVersion = !Number.isInteger(options.expectedVersion) ? -2 : options.expectedVersion;
const reqOptions = {
url: `${config.baseUrl}/streams/${streamName}`,
headers: {
"Content-Type": "application/vnd.eventstore.events+json",
"ES-ExpectedVersion": options.expectedVersion
},
method: 'POST',
data: events,
timeout: config.timeout
};
debug('', 'Write events: %j', reqOptions);
const response = await axios(reqOptions);
debug('', 'Response: %j', response.data);
return response.data;
};