32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
"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;
|