UNPKG

fluorine-orchestra

Version:
50 lines (32 loc) 1.4 kB
'use strict'; 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 */