function createLogger() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var loggerOptions = _extends({}, _defaults2.default, options);
var logger = loggerOptions.logger,
stateTransformer = loggerOptions.stateTransformer,
errorTransformer = loggerOptions.errorTransformer,
predicate = loggerOptions.predicate,
logErrors = loggerOptions.logErrors,
diffPredicate = loggerOptions.diffPredicate;
// Return if 'console' object is not defined
if (typeof logger === 'undefined') {
return function () {
return function (next) {
return function (action) {
return next(action);
};
};
};
}
// Detect if 'createLogger' was passed directly to 'applyMiddleware'.
if (options.getState && options.dispatch) {
// eslint-disable-next-line no-console
console.error('[redux-logger] redux-logger not installed. Make sure to pass logger instance as middleware:\n// Logger with default
options\nimport { logger } from \'redux-logger\'\nconst store = createStore(\n reducer,\n applyMiddleware(logger)\n)\n// Or you can create your own logger with custom options http://bit.ly/redux-logger-options\nimport createLogger from \'redux-logger\'\nconst logger = createLogger({\n // ...options\n});\nconst store = createStore(\n reducer,\n applyMiddleware(logger)\n)\n');
return function () {
return function (next) {
return function (action) {
return next(action);
};
};
};
}
var logBuffer = [];
return function (_ref) {
var getState = _ref.getState;
return function (next) {
return function (action) {
// Exit early if predicate function returns 'false'
if (typeof predicate === 'function' && !predicate(getState, action)) {
return next(action);
}
var logEntry = {};
logBuffer.push(logEntry);
logEntry.started = _helpers.timer.now();
logEntry.startedTime = new Date();
logEntry.prevState = stateTransformer(getState());
logEntry.action = action;
var returnedValue = void 0;
if (logErrors) {
try {
returnedValue = next(action);
} catch (e) {
logEntry.error = errorTransformer(e);
}
} else {
returnedValue = next(action);
}
logEntry.took = _helpers.timer.now() - logEntry.started;
logEntry.nextState = stateTransformer(getState());
var diff = loggerOptions.diff && typeof diffPredicate === 'function' ? diffPredicate(getState, action) : loggerOptions.diff
;
(0, _core.printBuffer)(logBuffer, _extends({}, loggerOptions, { diff: diff }));
logBuffer.length = 0;
if (logEntry.error) throw logEntry.error;
return returnedValue;
};
};
};
}n/a
function defaultLogger() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
dispatch = _ref2.dispatch,
getState = _ref2.getState;
if (typeof dispatch === 'function' || typeof getState === 'function') {
return createLogger()({ dispatch: dispatch, getState: getState });
} else {
// eslint-disable-next-line no-console
console.error('\n[redux-logger v3] BREAKING CHANGE\n[redux-logger v3] Since 3.0.0 redux-logger exports by default logger with
default settings.\n[redux-logger v3] Change\n[redux-logger v3] import createLogger from \'redux-logger\'\n[redux-logger v3] to\n[redux-logger v3] import { createLogger } from \'redux-logger\'\n');
}
}n/a
function defaultLogger() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
dispatch = _ref2.dispatch,
getState = _ref2.getState;
if (typeof dispatch === 'function' || typeof getState === 'function') {
return createLogger()({ dispatch: dispatch, getState: getState });
} else {
// eslint-disable-next-line no-console
console.error('\n[redux-logger v3] BREAKING CHANGE\n[redux-logger v3] Since 3.0.0 redux-logger exports by default logger with
default settings.\n[redux-logger v3] Change\n[redux-logger v3] import createLogger from \'redux-logger\'\n[redux-logger v3] to\n[redux-logger v3] import { createLogger } from \'redux-logger\'\n');
}
}n/a
function printBuffer(buffer, options) {
var logger = options.logger,
actionTransformer = options.actionTransformer,
_options$titleFormatt = options.titleFormatter,
titleFormatter = _options$titleFormatt === undefined ? defaultTitleFormatter(options) : _options$titleFormatt,
collapsed = options.collapsed,
colors = options.colors,
level = options.level,
diff = options.diff;
var isUsingDefaultFormatter = typeof options.titleFormatter === 'undefined';
buffer.forEach(function (logEntry, key) {
var started = logEntry.started,
startedTime = logEntry.startedTime,
action = logEntry.action,
prevState = logEntry.prevState,
error = logEntry.error;
var took = logEntry.took,
nextState = logEntry.nextState;
var nextEntry = buffer[key + 1];
if (nextEntry) {
nextState = nextEntry.prevState;
took = nextEntry.started - started;
}
// Message
var formattedAction = actionTransformer(action);
var isCollapsed = typeof collapsed === 'function' ? collapsed(function () {
return nextState;
}, action, logEntry) : collapsed;
var formattedTime = (0, _helpers.formatTime)(startedTime);
var titleCSS = colors.title ? 'color: ' + colors.title(formattedAction) + ';' : '';
var headerCSS = ['color: gray; font-weight: lighter;'];
headerCSS.push(titleCSS);
if (options.timestamp) headerCSS.push('color: gray; font-weight: lighter;');
if (options.duration) headerCSS.push('color: gray; font-weight: lighter;');
var title = titleFormatter(formattedAction, formattedTime, took);
// Render
try {
if (isCollapsed) {
if (colors.title && isUsingDefaultFormatter) logger.groupCollapsed.apply(logger, ['%c ' + title].concat(headerCSS));else
logger.groupCollapsed(title);
} else {
if (colors.title && isUsingDefaultFormatter) logger.group.apply(logger, ['%c ' + title].concat(headerCSS));else logger.group
(title);
}
} catch (e) {
logger.log(title);
}
var prevStateLevel = getLogLevel(level, formattedAction, [prevState], 'prevState');
var actionLevel = getLogLevel(level, formattedAction, [formattedAction], 'action');
var errorLevel = getLogLevel(level, formattedAction, [error, prevState], 'error');
var nextStateLevel = getLogLevel(level, formattedAction, [nextState], 'nextState');
if (prevStateLevel) {
if (colors.prevState) logger[prevStateLevel]('%c prev state', 'color: ' + colors.prevState(prevState) + '; font-weight: bold
', prevState);else logger[prevStateLevel]('prev state', prevState);
}
if (actionLevel) {
if (colors.action) logger[actionLevel]('%c action ', 'color: ' + colors.action(formattedAction) + '; font-weight: bold',
formattedAction);else logger[actionLevel]('action ', formattedAction);
}
if (error && errorLevel) {
if (colors.error) logger[errorLevel]('%c error ', 'color: ' + colors.error(error, prevState) + '; font-weight: bold;',
error);else logger[errorLevel]('error ', error);
}
if (nextStateLevel) {
if (colors.nextState) logger[nextStateLevel]('%c next state', 'color: ' + colors.nextState(nextState) + '; font-weight: bold
', nextState);else logger[nextStateLevel]('next state', nextState);
}
if (diff) {
(0, _diff2.default)(prevState, nextState, logger, isCollapsed);
}
try {
logger.groupEnd();
} catch (e) {
logger.log('\u2014\u2014 log end \u2014\u2014');
}
});
}n/a
function actionTransformer(action) {
return action;
}n/a
function errorTransformer(error) {
return error;
}n/a
function stateTransformer(state) {
return state;
}n/a
function action() {
return "#03A9F4";
}...
var nextStateLevel = getLogLevel(level, formattedAction, [nextState], 'nextState');
if (prevStateLevel) {
if (colors.prevState) logger[prevStateLevel]('%c prev state', 'color: ' + colors.prevState(prevState) +
x27;; font-weight: bold', prevState);else logger[prevStateLevel]('prev state', prevState);
}
if (actionLevel) {
if (colors.action) logger[actionLevel]('%c action ', 'color: ' + colors.action(formattedAction) + '; font-weight: bold', formattedAction);else logger[actionLevel]('action
x27;, formattedAction);
}
if (error && errorLevel) {
if (colors.error) logger[errorLevel]('%c error ', 'color: ' + colors.error(error, prevState) + ';
font-weight: bold;', error);else logger[errorLevel]('error ', error);
}
if (nextStateLevel) {
...function error() {
return "#F20404";
}...
}
if (actionLevel) {
if (colors.action) logger[actionLevel]('%c action ', 'color: ' + colors.action(formattedAction) + '
;; font-weight: bold', formattedAction);else logger[actionLevel]('action ', formattedAction);
}
if (error && errorLevel) {
if (colors.error) logger[errorLevel]('%c error ', 'color: ' + colors.error(error, prevState) + '; font-weight: bold;', error);else logger[errorLevel]('error ', error
);
}
if (nextStateLevel) {
if (colors.nextState) logger[nextStateLevel]('%c next state', 'color: ' + colors.nextState(nextState) +
x27;; font-weight: bold', nextState);else logger[nextStateLevel]('next state', nextState);
}
if (diff) {
...function nextState() {
return "#4CAF50";
}...
}
if (error && errorLevel) {
if (colors.error) logger[errorLevel]('%c error ', 'color: ' + colors.error(error, prevState) + ';
font-weight: bold;', error);else logger[errorLevel]('error ', error);
}
if (nextStateLevel) {
if (colors.nextState) logger[nextStateLevel]('%c next state', 'color: ' + colors.nextState(nextState) + '; font-weight: bold', nextState);else logger[nextStateLevel]('next state',
nextState);
}
if (diff) {
(0, _diff2.default)(prevState, nextState, logger, isCollapsed);
}
try {
...function prevState() {
return "#9E9E9E";
}...
var prevStateLevel = getLogLevel(level, formattedAction, [prevState], 'prevState');
var actionLevel = getLogLevel(level, formattedAction, [formattedAction], 'action');
var errorLevel = getLogLevel(level, formattedAction, [error, prevState], 'error');
var nextStateLevel = getLogLevel(level, formattedAction, [nextState], 'nextState');
if (prevStateLevel) {
if (colors.prevState) logger[prevStateLevel]('%c prev state', 'color: ' + colors.prevState(prevState) + '; font-weight: bold', prevState);else logger[prevStateLevel]('prev state',
prevState);
}
if (actionLevel) {
if (colors.action) logger[actionLevel]('%c action ', 'color: ' + colors.action(formattedAction) + '
;; font-weight: bold', formattedAction);else logger[actionLevel]('action ', formattedAction);
}
if (error && errorLevel) {
...function title() {
return "inherit";
}...
// Message
var formattedAction = actionTransformer(action);
var isCollapsed = typeof collapsed === 'function' ? collapsed(function () {
return nextState;
}, action, logEntry) : collapsed;
var formattedTime = (0, _helpers.formatTime)(startedTime);
var titleCSS = colors.title ? 'color: ' + colors.title(formattedAction) +
x27;;' : '';
var headerCSS = ['color: gray; font-weight: lighter;'];
headerCSS.push(titleCSS);
if (options.timestamp) headerCSS.push('color: gray; font-weight: lighter;');
if (options.duration) headerCSS.push('color: gray; font-weight: lighter;');
var title = titleFormatter(formattedAction, formattedTime, took);
// Render
...function formatTime(time) {
return pad(time.getHours(), 2) + ":" + pad(time.getMinutes(), 2) + ":" + pad(time.getSeconds(), 2) + "." + pad(time.getMilliseconds
(), 3);
}n/a
function pad(num, maxLength) {
return repeat("0", maxLength - num.toString().length) + num;
}n/a
function repeat(str, times) {
return new Array(times + 1).join(str);
}n/a
function Date() { [native code] }n/a