GT2/GT2-Android/node_modules/redux-logger/lib/index.js

133 lines
4.8 KiB
JavaScript
Raw Normal View History

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.logger = exports.defaults = undefined;
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 _core = require('./core');
var _helpers = require('./helpers');
var _defaults = require('./defaults');
var _defaults2 = _interopRequireDefault(_defaults);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Creates logger with following options
*
* @namespace
* @param {object} options - options for logger
* @param {string | function | object} options.level - console[level]
* @param {boolean} options.duration - print duration of each action?
* @param {boolean} options.timestamp - print timestamp with each action?
* @param {object} options.colors - custom colors
* @param {object} options.logger - implementation of the `console` API
* @param {boolean} options.logErrors - should errors in action execution be caught, logged, and re-thrown?
* @param {boolean} options.collapsed - is group collapsed?
* @param {boolean} options.predicate - condition which resolves logger behavior
* @param {function} options.stateTransformer - transform state before print
* @param {function} options.actionTransformer - transform action before print
* @param {function} options.errorTransformer - transform error before print
*
* @returns {function} logger middleware
*/
function createLogger() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var loggerOptions = _extends({}, _defaults2.default, options);
var logger = loggerOptions.logger,
transformer = loggerOptions.transformer,
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);
};
};
};
}
if (transformer) {
console.error('Option \'transformer\' is deprecated, use \'stateTransformer\' instead!'); // eslint-disable-line no-console
}
// 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\n// Logger with default options\nimport { logger } from \'redux-logger\'\nconst store = createStore(\n reducer,\n applyMiddleware(logger)\n)\n\n\n// Or you can create your own logger with custom options http://bit.ly/redux-logger-options\nimport createLogger from \'redux-logger\'\n\nconst logger = createLogger({\n // ...options\n});\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;
};
};
};
}
var defaultLogger = createLogger();
exports.defaults = _defaults2.default;
exports.logger = defaultLogger;
exports.default = createLogger;
module.exports = exports['default'];