@fthebaud/reducer-logger
Version:
Simple logger for reducer functions
37 lines • 1.76 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.wrapReducer = void 0;
var diff_1 = __importDefault(require("./diff"));
var colors_1 = require("./colors");
var defaultOptions = {
disabled: false,
displayName: '',
};
function wrapReducer(reducer, options) {
if (options === void 0) { options = defaultOptions; }
var disabled = options.disabled, displayName = options.displayName;
if (disabled) {
return reducer;
}
return function (state, action) {
var t0 = performance.now();
var newState = reducer(state, action);
var duration = performance.now() - t0;
renderLog(action, state, newState, duration, displayName);
return newState;
};
}
exports.wrapReducer = wrapReducer;
function renderLog(action, state, newState, duration, displayName) {
var prefix = displayName ? "[" + displayName + "] " : '';
console.groupCollapsed("%c" + prefix + "%caction %c" + action.type + " %c@ " + new Date().toLocaleTimeString() + " (in " + duration.toFixed(3) + " ms)", 'color: dark; font-weight: bolder;', 'color: gray; font-weight: lighter;', 'color: dark; font-weight: bolder;', 'color: gray; font-weight: lighter;');
console.log('%caction %o', "color: " + colors_1.lightblue + "; font-weight: bolder;", action);
console.log('%cprev state %o', "color: " + colors_1.grey + "; font-weight: bolder;", state);
console.log('%cnext state %o', "color: " + colors_1.green + "; font-weight: bolder;", newState);
diff_1.default(state, newState);
console.groupEnd();
}
//# sourceMappingURL=index.js.map