fluorine-orchestra
Version:
A data orchestration layer for Fluorine
33 lines (24 loc) • 980 B
JavaScript
import _Object$keys from 'babel-runtime/core-js/object/keys';
/* eslint prefer-rest-params: 0 */
import invariant from 'invariant';
import { Observable } from 'rxjs';
import isObservable from 'fluorine-lib/lib/util/isObservable';
export default function combineStores(stores) {
invariant(typeof stores === 'object', 'combineStores: `stores` is expected to be an object containing Observables.');
var keys = _Object$keys(stores);
return Observable.combineLatest.apply(Observable, keys.map(function (key) {
var store = stores[key];
invariant(isObservable(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;
}]));
}