rxact-debugger
Version:
Debugger for rxact
995 lines (757 loc) • 32.3 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["rxcat"] = factory();
else
root["rxcat"] = factory();
})(this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 4);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_symbol_observable__ = __webpack_require__(7);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_symbol_observable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_symbol_observable__);
var isObservable = function isObservable(Observable) {
if (!Observable) {
return false;
}
if (Observable[__WEBPACK_IMPORTED_MODULE_0_symbol_observable___default.a]) {
return true;
}
if (Observable.prototype && Observable.prototype[__WEBPACK_IMPORTED_MODULE_0_symbol_observable___default.a]) {
return true;
}
return false;
};
/* harmony default export */ __webpack_exports__["a"] = (isObservable);
/***/ }),
/* 1 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stateFactory__ = __webpack_require__(12);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__combineStateSteams__ = __webpack_require__(13);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__eventRunnerFactory__ = __webpack_require__(14);
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
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); } }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var StateStream = function () {
function StateStream(streamName, initialState, stateStreams) {
var _this = this;
_classCallCheck(this, StateStream);
this.emitters = {};
this.subscriptions = [];
this.observers = [];
this.dispose = function () {
_this.subscriptions.forEach(function (subscription) {
subscription.unsubscribe();
});
};
this.installPlugins = function () {
var proxy = _this;
StateStream.plugins.forEach(function (plugin) {
if (typeof plugin !== 'function') {
throw new Error('Expected plugin to be a function.');
}
var pluginProxy = plugin(proxy);
if (pluginProxy) {
proxy = pluginProxy;
}
});
return proxy;
};
if (typeof streamName !== 'string' || !streamName) {
throw new Error('Expected the streamName to be a not none string.');
}
this.streamName = streamName;
this.Observable = Object(__WEBPACK_IMPORTED_MODULE_0__observable__["b" /* getObservable */])();
this.state$ = __WEBPACK_IMPORTED_MODULE_1__stateFactory__["a" /* default */].call(this, initialState);
this.state$ = __WEBPACK_IMPORTED_MODULE_2__combineStateSteams__["a" /* default */].call(this, this.state$, streamName, stateStreams);
this.eventRunner = Object(__WEBPACK_IMPORTED_MODULE_3__eventRunnerFactory__["a" /* default */])(this.Observable, this.getState);
return this.installPlugins();
}
_createClass(StateStream, [{
key: 'emitter',
value: function emitter(name, updater) {
var _this2 = this;
if (!name) {
throw new Error('emitter(): name should not be blank.');
}
if (typeof updater !== 'function') {
throw new Error('emitter(): expect second parameter to be a function.');
}
// $flow-ignore
this[name] = function () {
_this2.next(updater.apply(undefined, arguments));
};
// $flow-ignore
this.emitters[name] = this[name];
}
}]);
return StateStream;
}();
StateStream.plugins = [];
StateStream.addPlugin = function () {
for (var _len = arguments.length, plugins = Array(_len), _key = 0; _key < _len; _key++) {
plugins[_key] = arguments[_key];
}
plugins.forEach(function (plugin) {
if (typeof plugin !== 'function') {
throw new Error('Expected plugin to be a function.');
}
});
StateStream.plugins = [].concat(_toConsumableArray(StateStream.plugins), plugins);
};
StateStream.removePlugin = function () {
for (var _len2 = arguments.length, plugins = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
plugins[_key2] = arguments[_key2];
}
var finalPlugins = [];
if (plugins.length !== 0) {
finalPlugins = StateStream.plugins.filter(function (plugin) {
return !plugins.find(function (removedPlugin) {
return removedPlugin === plugin;
});
});
}
StateStream.plugins = finalPlugins;
};
/* harmony default export */ __webpack_exports__["a"] = (StateStream);
/***/ }),
/* 2 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return setObservable; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getObservable; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cleanObservable; });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_isObservable__ = __webpack_require__(0);
// https://github.com/tc39/proposal-observable
var Observable = null;
var setObservable = function setObservable(ObservableImplement) {
if (Object(__WEBPACK_IMPORTED_MODULE_0__utils_isObservable__["a" /* default */])(Observable)) {
throw new Error('Expected setup once in your app lifetime.');
}
Observable = ObservableImplement;
};
var getObservable = function getObservable() {
if (!Observable) {
throw Error('You must configure Observable first.');
}
return Observable;
};
var cleanObservable = function cleanObservable() {
Observable = null;
};
/***/ }),
/* 3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "plugin", function() { return plugin; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "decorator", function() { return decorator; });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__debugger__ = __webpack_require__(5);
/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "clean", function() { return __WEBPACK_IMPORTED_MODULE_0__debugger__["a"]; });
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var plugin = __WEBPACK_IMPORTED_MODULE_0__debugger__["b" /* default */];
var decorator = function decorator(options) {
var debuggerPlugin = Object(__WEBPACK_IMPORTED_MODULE_0__debugger__["b" /* default */])(options);
return function (StateStream) {
return function (_StateStream) {
_inherits(DebuggableStream, _StateStream);
function DebuggableStream() {
var _ref;
var _this, _ret;
_classCallCheck(this, DebuggableStream);
for (var _len = arguments.length, params = Array(_len), _key = 0; _key < _len; _key++) {
params[_key] = arguments[_key];
}
var instance = (_this = _possibleConstructorReturn(this, (_ref = DebuggableStream.__proto__ || Object.getPrototypeOf(DebuggableStream)).call.apply(_ref, [this].concat(params))), _this);
return _ret = debuggerPlugin(instance), _possibleConstructorReturn(_this, _ret);
}
return DebuggableStream;
}(StateStream);
};
};
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(3);
module.exports = __webpack_require__(3);
/***/ }),
/* 5 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return clean; });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rxact__ = __webpack_require__(6);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__logger__ = __webpack_require__(16);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers__ = __webpack_require__(17);
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
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; };
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var clean = function clean() {
window.rxactDebugger = undefined;
};
function createDebuggerProxy(instance) {
var _this = this;
var streamName = instance.streamName;
var handler = {
get: function get(target, prop) {
if (Object(__WEBPACK_IMPORTED_MODULE_2__helpers__["a" /* isDebugger */])(prop)) {
return {
start: function start() {
_this.isStarted = true;
},
stop: function stop() {
_this.isStarted = false;
}
};
}
var type = 'operator';
if (!Object(__WEBPACK_IMPORTED_MODULE_2__helpers__["e" /* isPresent */])(target, prop)) {
console.warn('Operator does not exist: ' + streamName + '.' + prop);
}
if (!Object(__WEBPACK_IMPORTED_MODULE_2__helpers__["d" /* isOperator */])(target, prop) || Object(__WEBPACK_IMPORTED_MODULE_2__helpers__["c" /* isEmitter */])(target.emitters, prop)) {
return target[prop];
}
if (Object(__WEBPACK_IMPORTED_MODULE_2__helpers__["b" /* isDispose */])(prop)) {
type = 'dispose';
}
return function () {
if (_this.isStarted) {
Object(__WEBPACK_IMPORTED_MODULE_1__logger__["b" /* operatorLogger */])(type, 'log', streamName, prop);
}
return target[prop].apply(target, arguments);
};
},
set: function set(target, prop, value) {
if (target[prop]) {
console.warn('Operator redefined: ' + streamName + '.' + prop);
}
target[prop] = value;
return true;
}
};
return new Proxy(instance, handler);
}
function createEmitterProxy(instance) {
var _this2 = this;
var handler = {
apply: function apply(target, thisArg, argumentsList) {
var _argumentsList = _slicedToArray(argumentsList, 2),
name = _argumentsList[0],
emitter = _argumentsList[1];
var loggableEmitter = function loggableEmitter() {
for (var _len = arguments.length, params = Array(_len), _key = 0; _key < _len; _key++) {
params[_key] = arguments[_key];
}
return function (prevState) {
var nextState = emitter.apply(undefined, params)(prevState);
if (_this2.isStarted) {
Object(__WEBPACK_IMPORTED_MODULE_1__logger__["a" /* emitterLogger */])(instance.streamName, name, prevState, nextState);
}
return nextState;
};
};
return target.call(thisArg, name, loggableEmitter);
}
};
return new Proxy(instance.emitter, handler);
}
var isStartDefault = function isStartDefault(start, stream) {
return start === true || Array.isArray(start) && start.find(function (item) {
return item === stream;
});
};
var defaultOptions = {
start: false
};
var rxactDebugger = function rxactDebugger() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) !== 'object' || Array.isArray(options)) {
throw new Error('rxact-debugger: Expect options to be an object.');
}
return function (instance) {
var finalOptions = _extends({}, defaultOptions, options);
var start = finalOptions.start;
var startDefault = isStartDefault(start, instance.streamName);
var context = {
isStarted: false
};
var debuggableProxy = createDebuggerProxy.call(context, instance);
var emitterProxy = createEmitterProxy.call(context, instance);
instance.emitter = emitterProxy;
if (!window.rxactDebugger) {
window.rxactDebugger = {};
}
window.rxactDebugger[instance.streamName] = debuggableProxy;
if (startDefault) {
debuggableProxy.debugger.start();
}
return debuggableProxy;
};
};
/* harmony default export */ __webpack_exports__["b"] = (rxactDebugger);
/***/ }),
/* 6 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__stateStream__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(15);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_isObservable__ = __webpack_require__(0);
/* unused harmony reexport StateStream */
/* unused harmony reexport setup */
/* unused harmony reexport teardown */
/* unused harmony reexport getObservable */
/* unused harmony reexport isObservable */
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(8);
/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
;
/* WEBPACK VAR INJECTION */(function(global, module) {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _ponyfill = __webpack_require__(11);
var _ponyfill2 = _interopRequireDefault(_ponyfill);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var root; /* global window */
if (typeof self !== 'undefined') {
root = self;
} else if (typeof window !== 'undefined') {
root = window;
} else if (typeof global !== 'undefined') {
root = global;
} else if (true) {
root = module;
} else {
root = Function('return this')();
}
var result = (0, _ponyfill2['default'])(root);
exports['default'] = result;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9), __webpack_require__(10)(module)))
/***/ }),
/* 9 */
/***/ (function(module, exports) {
var g;
// This works in non-strict mode
g = (function() {
return this;
})();
try {
// This works if eval is allowed (see CSP)
g = g || Function("return this")() || (1,eval)("this");
} catch(e) {
// This works if the window reference is available
if(typeof window === "object")
g = window;
}
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
module.exports = g;
/***/ }),
/* 10 */
/***/ (function(module, exports) {
module.exports = function(module) {
if(!module.webpackPolyfill) {
module.deprecate = function() {};
module.paths = [];
// module.parent = undefined by default
if(!module.children) module.children = [];
Object.defineProperty(module, "loaded", {
enumerable: true,
get: function() {
return module.l;
}
});
Object.defineProperty(module, "id", {
enumerable: true,
get: function() {
return module.i;
}
});
module.webpackPolyfill = 1;
}
return module;
};
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = symbolObservablePonyfill;
function symbolObservablePonyfill(root) {
var result;
var _Symbol = root.Symbol;
if (typeof _Symbol === 'function') {
if (_Symbol.observable) {
result = _Symbol.observable;
} else {
result = _Symbol('observable');
_Symbol.observable = result;
}
} else {
result = '@@observable';
}
return result;
};
/***/ }),
/* 12 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
var disposedFn = function disposedFn() {
console.warn('You are calling function on a disposed StateStream.');
};
function stateFactory(initialState) {
var _this = this;
var disposed = false;
var state = initialState;
this.observers = [];
this.getState = function () {
return state;
};
this.next = function (updater) {
if (disposed) {
return;
}
if (typeof updater !== 'function') {
throw new Error('Expected passing a function to emitState.');
}
var nextState = updater(state);
state = nextState;
_this.observers.forEach(function (observer) {
observer.next(nextState);
});
};
var state$ = new this.Observable(function (observer) {
_this.observers.push(observer);
observer.next(state);
return {
unsubscribe: function unsubscribe() {
_this.observers = _this.observers.filter(function (item) {
return item !== observer;
});
}
};
});
this.subscriptions.push({
unsubscribe: function unsubscribe() {
disposed = true;
_this.next = disposedFn;
_this.observers.forEach(function (observer) {
observer.complete();
});
_this.observers = [];
}
});
return state$;
}
/* harmony default export */ __webpack_exports__["a"] = (stateFactory);
/***/ }),
/* 13 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_isObservable__ = __webpack_require__(0);
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return 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); } }
function combineStateStreams(state$, streamName, stateStreams) {
var _this = this;
if (!stateStreams || stateStreams.length === 0) {
return state$;
}
var streamNames = {};
var streams = [].concat(_toConsumableArray(stateStreams), [{ streamName: streamName, state$: state$ }]);
streams.forEach(function (stream) {
if (!(stream instanceof __WEBPACK_IMPORTED_MODULE_0__index__["a" /* default */]) && (!Object(__WEBPACK_IMPORTED_MODULE_1__utils_isObservable__["a" /* default */])(stream.state$) || !stream.streamName)) {
throw new Error('Expected the element of stateStreams to be instance of StateStream.');
}
streamNames[stream.streamName] = true;
});
if (Object.keys(streamNames).length !== streams.length) {
throw new Error('StateStreams\' name should be unique.');
}
var combinedState$ = new this.Observable(function (observer) {
var currentState = {};
var subscriptions = streams.map(function (source) {
return source.state$.subscribe(function (state) {
var sourceName = source.streamName;
var nextState = _extends({}, currentState, _defineProperty({}, sourceName, state));
currentState = nextState;
if (Object.keys(currentState).length === streams.length) {
observer.next(currentState);
}
});
});
_this.subscriptions = _this.subscriptions.concat(subscriptions);
return {
unsubscribe: function unsubscribe() {
subscriptions.forEach(function (subscription) {
subscription.unsubscribe();
});
}
};
});
return combinedState$;
}
/* harmony default export */ __webpack_exports__["a"] = (combineStateStreams);
/***/ }),
/* 14 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_isObservable__ = __webpack_require__(0);
var defaultFactory = function defaultFactory(source) {
return source;
};
var source$Creator = function source$Creator(inputSource$, Observable, getState) {
if (inputSource$ === undefined) {
return Observable.of(getState());
}
if (Object(__WEBPACK_IMPORTED_MODULE_0__utils_isObservable__["a" /* default */])(inputSource$)) {
return inputSource$;
}
return Observable.of(inputSource$);
};
var eventRunnerFactory = function eventRunnerFactory(Observable, getState) {
var eventRunner = function eventRunner(factory, inputSource$) {
var source$ = source$Creator(inputSource$, Observable, getState);
if (factory === null || factory === undefined) {
factory = defaultFactory;
}
if (typeof factory !== 'function') {
throw new Error('Expected first parameter of eventRunner to be a function.');
}
var outputSource$ = factory(source$);
if (!outputSource$ || !Object(__WEBPACK_IMPORTED_MODULE_0__utils_isObservable__["a" /* default */])(outputSource$)) {
throw new Error('Expected an Observable object returned by factory in eventRunner');
}
var output = void 0;
var next = void 0;
var subscription = void 0;
var stream$ = new Observable(function (observer) {
if (output !== undefined) {
observer.next(output);
}
next = function next(value) {
return observer.next(value);
};
return {
unsubscribe: function unsubscribe() {
subscription.unsubscribe();
}
};
});
subscription = outputSource$.subscribe(function (value) {
if (typeof next === 'function') {
next(value);
}
output = value;
});
return stream$;
};
return eventRunner;
};
/* harmony default export */ __webpack_exports__["a"] = (eventRunnerFactory);
/***/ }),
/* 15 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* unused harmony export setup */
/* unused harmony export teardown */
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__stateStream__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_isObservable__ = __webpack_require__(0);
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); } }
var RealStateStream = __WEBPACK_IMPORTED_MODULE_0__stateStream__["a" /* default */];
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 ? __WEBPACK_IMPORTED_MODULE_0__stateStream__["a" /* default */] : _options$HOStateStrea;
if (!Object(__WEBPACK_IMPORTED_MODULE_2__utils_isObservable__["a" /* default */])(Observable)) {
throw new Error('setup(): Expected an ES Observable. For more info: https://github.com/tc39/proposal-observable');
}
Object(__WEBPACK_IMPORTED_MODULE_1__observable__["c" /* 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));
};
var teardown = function teardown() {
Object(__WEBPACK_IMPORTED_MODULE_1__observable__["a" /* cleanObservable */])();
RealStateStream.removePlugin();
};
/***/ }),
/* 16 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return operatorLogger; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return emitterLogger; });
var BOLD = 'font-weight:bold;';
var UNDERLINE = 'text-decoration:underline;';
var COLOR = function COLOR(color) {
return 'color:' + color + ';';
};
var toObject = function toObject(state) {
if (state.toJS) {
return state.toJS();
}
return state;
};
var operatorLogger = function operatorLogger(type) {
var logger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'log';
var streamName = arguments[2];
var operatorName = arguments[3];
var prefix = '';
var action = '';
var color = '';
switch (type) {
case 'emitter':
{
prefix = 'STATE ';
action = 'updated';
color = '#3dbd7d';
break;
}
case 'dispose':
{
prefix = 'DISPOSE ';
action = 'disposed';
color = '#f04134';
break;
}
default:
{
prefix = 'OPERATOR';
action = 'called ';
color = '#948aec';
break;
}
}
console[logger]('%c' + prefix + ' %c ' + action + ' %c' + streamName + '->' + operatorName, BOLD + COLOR(color), BOLD + COLOR('#108ee9'), UNDERLINE + BOLD + COLOR('#5a5a5a'));
};
var stateLog = function stateLog(color, content, state) {
console.log('%c' + content, COLOR(color) + BOLD, state);
};
var emitterLogger = function emitterLogger(streamName, emitterName, prevState, nextState) {
operatorLogger('emitter', 'groupCollapsed', streamName, emitterName);
stateLog('#5a5a5a', 'prevState:', toObject(prevState));
stateLog('#ffce3d', 'nextState:', toObject(nextState));
console.groupEnd();
};
/***/ }),
/* 17 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* unused harmony export METHOD_BLACK_LIST */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return isOperator; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return isEmitter; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return isDispose; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isDebugger; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return isPresent; });
var METHOD_BLACK_LIST = ['constructor', 'next', 'eventRunner', 'getState', 'emitter'];
var isOperator = function isOperator(target, prop) {
return typeof target[prop] === 'function' && !METHOD_BLACK_LIST.find(function (method) {
return method === prop;
});
};
var isEmitter = function isEmitter(emitters, prop) {
return !!emitters[prop];
};
var isDispose = function isDispose(prop) {
return prop === 'dispose';
};
var isDebugger = function isDebugger(prop) {
return prop === 'debugger';
};
var isPresent = function isPresent(target, prop) {
return !!target[prop];
};
/***/ })
/******/ ]);
});