rxact
Version:
an observable application management for Javascript apps
44 lines (30 loc) • 1.73 kB
JavaScript
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
import StateStream from './stateStream';
import { setObservable, cleanObservable } from './observable';
import isObservable from './utils/isObservable';
var RealStateStream = StateStream;
export var setup = function setup(options) {
var _RealStateStream;
if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) !== 'object') {
throw new Error('setup(): Expected options to be an object.');
}
var Observable = options.Observable,
_options$plugins = options.plugins,
plugins = _options$plugins === undefined ? [] : _options$plugins,
_options$HOStateStrea = options.HOStateStream,
HOStateStream = _options$HOStateStrea === undefined ? StateStream : _options$HOStateStrea;
if (!isObservable(Observable)) {
throw new Error('setup(): Expected an ES Observable. For more info: https://github.com/tc39/proposal-observable');
}
setObservable(Observable);
if (!Array.isArray(plugins)) {
throw new Error('setup(): Expected plugins to be an array');
}
RealStateStream = HOStateStream;
(_RealStateStream = RealStateStream).addPlugin.apply(_RealStateStream, _toConsumableArray(plugins));
};
export var teardown = function teardown() {
cleanObservable();
RealStateStream.removePlugin();
};