UNPKG

fluorine-orchestra

Version:
33 lines (24 loc) 980 B
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; }])); }