fluorine-orchestra
Version:
A data orchestration layer for Fluorine
50 lines (32 loc) • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
exports.default = combineStores;
var _invariant = require('invariant');
var _invariant2 = _interopRequireDefault(_invariant);
var _rxjs = require('rxjs');
var _isObservable = require('fluorine-lib/lib/util/isObservable');
var _isObservable2 = _interopRequireDefault(_isObservable);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function combineStores(stores) {
(0, _invariant2.default)(typeof stores === 'object', 'combineStores: `stores` is expected to be an object containing Observables.');
var keys = (0, _keys2.default)(stores);
return _rxjs.Observable.combineLatest.apply(_rxjs.Observable, keys.map(function (key) {
var store = stores[key];
(0, _invariant2.default)((0, _isObservable2.default)(store), 'combineStores: `stores` is expected to contain Observables only.');
return store;
}).concat([function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var state = {};
args.forEach(function (arg, index) {
var key = keys[index];
state[key] = arg;
});
return state;
}]));
} /* eslint prefer-rest-params: 0 */