UNPKG

@lyra/base

Version:

Lyra plugin containing the base components and roles for a Lyra configuration

48 lines (36 loc) 1.04 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createActions; var _nanoPubsub = require('nano-pubsub'); var _nanoPubsub2 = _interopRequireDefault(_nanoPubsub); var _rxjs = require('rxjs'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // Todo: refactor out function createActions(actions) { return Object.keys(actions).reduce((acc, name) => { acc[name] = createAction(name, actions[name]); return acc; }, {}); } function createAction(name, fn) { const calls = (0, _nanoPubsub2.default)(); const functor = function action(...args) { // eslint-disable-line func-name-matching const retValue = fn(...args); calls.publish({ name: name, progress: retValue.progress, returnValue: retValue, args: args }); return retValue; }; functor.calls = new _rxjs.Observable(observer => { return calls.subscribe(call => { observer.next(call); }); }); return functor; }