UNPKG

fluorine-lib

Version:

Reactive state and side effect management for React using a single stream of actions

137 lines (103 loc) 4.14 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.logStore = undefined; 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; }; exports.parseOpts = parseOpts; exports.logAgendas = logAgendas; var _scan = require('rxjs/operator/scan'); var scan = _scan.scan; var _do2 = require('rxjs/operator/do'); var _do = _do2._do; var _last = require('rxjs/operator/last'); var last = _last.last; function strTime(date) { return date.toLocaleTimeString('en-GB') + '.' + date.getMilliseconds(); } function parseOpts(logging) { var opts = { agendas: false, stores: false }; if ((typeof logging === 'undefined' ? 'undefined' : _typeof(logging)) === 'object') { opts.agendas = logging.agendas; opts.stores = logging.stores; } else if (logging) { opts.agendas = true; opts.stores = true; } return opts; } var agendaGroupHead = function agendaGroupHead(agenda, timestamp) { return function () { var prepend = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var timestampEnd = new Date(); var title = 'Agenda ' + agenda.constructor.name + ' @ ' + strTime(timestamp) + ' (in ' + (timestampEnd - timestamp) + 'ms)'; if (console.groupCollapsed) { console.groupCollapsed('%c ' + (prepend + title), 'color: #111111;'); } console.log('%c agenda', 'color: #9e9e9e; font-weight: bold;', agenda); }; }; function logAgendas(dispatcher) { dispatcher.subscribe(function (agenda) { var _context; var logStart = agendaGroupHead(agenda, new Date()); var errBucket = void 0; (_context = (_context = scan.call(agenda, function (bucket, action) { return bucket.concat([action]); }, []), _do).call(_context, function (bucket) { errBucket = bucket; }), last).call(_context).subscribe(function (actions) { logStart(); actions.forEach(function (action) { console.log('%c action', 'color: #03a9f4; font-weight: bold;', action); }); if (console.groupEnd && console.groupCollapsed) { console.groupEnd(); } }, function (error) { logStart('Error '); console.log('%c error', 'color: #f20404; font-weight: bold;', error); console.log('%c dispatched actions', 'color: #03a9f4; font-weight: bold;', errBucket); if (console.groupEnd && console.groupCollapsed) { console.groupEnd(); } }); }); } var logStore = exports.logStore = function logStore(name, agenda) { return { change: function change(action, state) { var timestamp = new Date(); var title = 'Store ' + name + ' @ ' + strTime(timestamp); if (console.groupCollapsed) { console.groupCollapsed('%c ' + title, 'color: #111111;'); } console.log('%c agenda', 'color: #9e9e9e; font-weight: bold;', agenda); console.log('%c action', 'color: #03a9f4; font-weight: bold;', action); console.log('%c change', 'color: #4caf50; font-weight: bold;', state); if (console.groupCollapsed && console.groupEnd) { console.groupEnd(); } }, revert: function revert(states, error, bucket) { var timestamp = new Date(); var title = 'Revert ' + name + ' @ ' + strTime(timestamp); var prevState = states[0], state = states[1]; if (console.groupCollapsed) { console.groupCollapsed('%c ' + title, 'color: #f20404;'); } console.log('%c agenda', 'color: #9e9e9e; font-weight: bold;', agenda); console.log('%c previous', 'color: #4caf50; font-weight: bold;', prevState); console.log('%c state', 'color: #4caf50; font-weight: bold;', state); console.log('%c error', 'color: #f20404; font-weight: bold;', error); console.log('%c bucket', 'color: #03a9f4; font-weight: bold;', bucket); if (console.groupCollapsed && console.groupEnd) { console.groupEnd(); } } }; };