UNPKG

@fthebaud/reducer-logger

Version:
100 lines 3.02 kB
"use strict"; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable @typescript-eslint/no-explicit-any */ /****************************************************************************** * * original source: https://github.com/LogRocket/redux-logger/blob/master/src/diff.js * ******************************************************************************/ var deep_diff_1 = require("deep-diff"); var colors_1 = require("./colors"); var DiffType; (function (DiffType) { DiffType["N"] = "N"; DiffType["E"] = "E"; DiffType["D"] = "D"; DiffType["A"] = "A"; })(DiffType || (DiffType = {})); // https://github.com/flitbit/diff#differences var dictionary = { N: { color: colors_1.green, text: 'ADDED:', }, E: { color: colors_1.blue, text: 'CHANGED:', }, D: { color: colors_1.red, text: 'DELETED:', }, A: { color: colors_1.blue, text: 'ARRAY:', }, }; function style(kind) { return "color: " + dictionary[kind].color + "; font-weight: bold"; } function renderNew(diff) { var _a = diff.path, path = _a === void 0 ? [] : _a, rhs = diff.rhs; return [path.join('.'), rhs]; } function renderEdit(diff) { var _a = diff.path, path = _a === void 0 ? [] : _a, lhs = diff.lhs, rhs = diff.rhs; return [path.join('.'), lhs, '→', rhs]; } function renderDeleted(diff) { var _a = diff.path, path = _a === void 0 ? [] : _a; return [path.join('.')]; } function renderArray(diff) { var _a = diff.path, path = _a === void 0 ? [] : _a, index = diff.index, item = diff.item; return [path.join('.') + "[" + index + "]", item]; } function render(diff) { var kind = diff.kind; var output; switch (kind) { case 'N': output = renderNew(diff); break; case 'E': output = renderEdit(diff); break; case 'D': output = renderDeleted(diff); break; case 'A': output = renderArray(diff); break; default: output = []; } return output; } function renderDiff(state, newState) { var difference = deep_diff_1.diff(state, newState); console.groupCollapsed('diff'); if (difference) { difference.forEach(function (diff) { var kind = diff.kind; var output = render(diff); console.log.apply(console, __spreadArrays(["%c " + dictionary[kind].text, style(kind)], output)); }); } else { console.log('—— no diff ——'); } console.groupEnd(); } exports.default = renderDiff; //# sourceMappingURL=diff.js.map