UNPKG

@arpinum/ddd

Version:
26 lines (21 loc) 713 B
const _ = require('lodash'); const t = require('tcomb'); const {Logger, LoggerContract} = require('@arpinum/log'); const {MessageBusContract} = require('../../types'); const Creation = t.interface({ eventBus: MessageBusContract, options: t.maybe(t.interface({ log: t.maybe(LoggerContract) })) }, {strict: true}); function broadcastEventsDecorator(creation) { let {eventBus, options: rawOptions} = Creation(creation); let options = _.defaults({}, rawOptions, { log: new Logger({fileName: __filename}) }); return result => { options.log.debug('Broadcasting events'); return eventBus.broadcastAll(result.events).then(() => result); }; } module.exports = broadcastEventsDecorator;