"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const immutable_1 = __importDefault(require("immutable")); /** * Reduce the difference between a map and its default version * @param {Map} defaultVersion * @param {Map} currentVersion * @return {Map} The properties of currentVersion that differs from defaultVersion */ function reducedObject(defaultVersion, currentVersion) { if (defaultVersion === undefined) { return currentVersion; } return currentVersion.reduce((result, value, key) => { const defaultValue = defaultVersion.get(key); if (immutable_1.default.Map.isMap(value)) { const diffs = reducedObject(defaultValue, value); if (diffs.size > 0) { return result.set(key, diffs); } } if (immutable_1.default.is(defaultValue, value)) { return result; } return result.set(key, value); }, immutable_1.default.Map()); } exports.default = reducedObject;