From 3816dfca1f51b9d3fa3343299175e7f43fac05c1 Mon Sep 17 00:00:00 2001 From: hujiale Date: Mon, 16 Nov 2015 11:50:02 +0800 Subject: [PATCH] immutable supported --- build/logger.js | 64 +++++++++++++++++++++++++++---------------------- src/logger.js | 11 +++++---- 2 files changed, 43 insertions(+), 32 deletions(-) diff --git a/build/logger.js b/build/logger.js index bc6707c..645720d 100644 --- a/build/logger.js +++ b/build/logger.js @@ -50,39 +50,47 @@ function render(diff) { case 'D': return '' + path.join('.'); case 'A': - return (path.join('.') + '[' + index + ']', item); + return path.join('.') + '[' + index + ']', item; default: return null; } } -function logger(_ref) { - var getState = _ref.getState; - - return function (next) { - return function (action) { - var prevState = getState(); - var returnValue = next(action); - var newState = getState(); - var time = new Date(); - - var diff = (0, _deepDiff2['default'])(prevState, newState); - - console.group('diff @', time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds()); - if (diff) { - diff.forEach(function (elem) { - var kind = elem.kind; - - var output = render(elem); - - console.log('%c ' + dictionary[kind].text, style(kind), output); - }); - } else { - console.log('—— no diff ——'); - } - console.groupEnd('diff'); - - return returnValue; +function logger() { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + return function (_ref) { + var getState = _ref.getState; + return function (next) { + return function (action) { + var _options$transformer = options.transformer; + var transformer = _options$transformer === undefined ? function (state) { + return state; + } : _options$transformer; + + var prevState = transformer(getState()); + var returnValue = next(action); + var newState = transformer(getState()); + var time = new Date(); + + var diff = (0, _deepDiff2['default'])(prevState, newState); + + console.group('diff @', time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds()); + if (diff) { + diff.forEach(function (elem) { + var kind = elem.kind; + + var output = render(elem); + + console.log('%c ' + dictionary[kind].text, style(kind), output); + }); + } else { + console.log('—— no diff ——'); + } + console.groupEnd('diff'); + + return returnValue; + }; }; }; } diff --git a/src/logger.js b/src/logger.js index 3e4f81d..8dc752f 100644 --- a/src/logger.js +++ b/src/logger.js @@ -41,11 +41,14 @@ function render(diff) { } } -function logger({ getState }) { - return (next) => (action) => { - const prevState = getState(); +function logger(options = {}) { + return ({getState}) => (next) => (action) => { + const { + transformer = state => state, + } = options; + const prevState = transformer(getState()); const returnValue = next(action); - const newState = getState(); + const newState = transformer(getState()); const time = new Date(); const diff = differ(prevState, newState);